3.0 KiB
3.0 KiB
stk (Stalwart Toolkit) Design Roadmap
Vision
stk is a lightweight, unopinionated toolkit for building games and engines. It provides a portable, flexible, and modular foundation for dynamically loading modules, native or WASM, without imposing design choices.
stk is designed to run anywhere a C89 compiler exists. From retro consoles and embedded systems to modern PCs running POSIX or Windows.
Philosophy
- Lean by design: only the essentials for modularity and hot-swapping.
- Predictable and safe: behaves consistently with no hidden complexity or runtime surprises.
- Extensible/Optional Features: WASM modules are add-ons, never mandatory.
- Non-opinionated: developers control architecture and game logic;
stkimposes nothing. - Minimal footprint: core remains small and free of out-of-scope features.
- Developer tools included: metadata, logging/tracing, and dependency management.
Key Principles
- Portability: Runs on hardware from retro consoles to modern PCs.
- Simplicity: Minimal API, easy to integrate into any engine or game.
- Flexibility: Supports multiple languages via optional WASM modules.
- Performance: Lean, predictable, small binaries; no unnecessary runtime.
- Extensibility: Optional enhancements for modern targets.
Design Scope
- Provides dynamic module loading and hot-swapping.
- Supports native shared libraries and WASM modules.
- Includes developer tools: minimal metadata (name, version, dependencies), lightweight logging/tracing, and module dependency management.
- Does not enforce engine design, architecture, or coding philosophy.
- Public API is C89, ensuring portability and minimal overhead.
Development Phases
Phase 1: Native Module Support
- Load/unload shared libraries (
.so/.dll). - Resolve symbols dynamically.
- Hot-swappable at runtime.
- Developer tools included: metadata, logging/tracing, and dependency management.
- Platform-agnostic (POSIX, Windows, retro/embedded targets with C89).
Phase 2: Optional WASM Support
- WASM modules as an alternative backend.
- Multi-language support (Rust, Go, Zig, etc.).
- WASM runtime optional, old or retro hardware can ignore it.
- Sandbox and safety checks for WASM modules.
High-Level Roadmap Summary
| Phase | Focus | Core vs Optional | Target Hardware |
|---|---|---|---|
| 1 | Native modules + developer tools (metadata, logging, dependencies) | Core | Retro, embedded, POSIX, Windows |
| 2 | WASM modules | Optional | Modern systems only |
Strategic Benefits
- Retro-ready: Works on old consoles or embedded systems with minimal footprint.
- Modern-friendly: Developers can use modern languages without bloating the core.
- Modular foundation: Build engines, games, or experimental projects on top.
- Scalable: Hot-swappable modules, metadata, logging, and dependency tracking allow rapid iteration and predictable behavior.