|
| 1 | +# AffineScript Alpha-1 Release Notes |
| 2 | + |
| 3 | +## 🎮 Game Developer's Edition |
| 4 | + |
| 5 | +**Release Date:** March 31, 2026 |
| 6 | +**Version:** 0.1.0-alpha.1 |
| 7 | +**Codename:** "Bug-Free by Design" |
| 8 | + |
| 9 | +--- |
| 10 | + |
| 11 | +## 🚀 What's New in Alpha-1 |
| 12 | + |
| 13 | +### Core Language Features |
| 14 | +- ✅ **Affine Types**: Compiler-proven resource management (no leaks!) |
| 15 | +- ✅ **Effect System**: Explicit I/O and side effects tracking |
| 16 | +- ✅ **Row Polymorphism**: Flexible data structures without boilerplate |
| 17 | +- ✅ **Algebraic Effects**: Composable computation effects |
| 18 | +- ✅ **WebAssembly Backend**: Compile to WASM for browser games |
| 19 | +- ✅ **VSCode Integration**: Full syntax highlighting and LSP support |
| 20 | + |
| 21 | +### Game Development Superpowers |
| 22 | +- ✅ **Type-Safe Game State**: Compiler enforces valid state transitions |
| 23 | +- ✅ **Resource Leak Prevention**: Textures, sounds, connections auto-managed |
| 24 | +- ✅ **Protocol Correctness**: Network code that can't have protocol bugs |
| 25 | +- ✅ **Zero-Cost Abstractions**: Type safety erased at compile time |
| 26 | + |
| 27 | +### Ecosystem Integration |
| 28 | +- ✅ **Gossamer**: Resource-safe desktop apps (PMPL-1.0-or-later) |
| 29 | +- ✅ **Burble**: Low-latency voice comms (PMPL-1.0-or-later) |
| 30 | +- ✅ **Tree-sitter Grammar**: Advanced syntax highlighting |
| 31 | +- ✅ **Language Server**: IDE integration |
| 32 | + |
| 33 | +--- |
| 34 | + |
| 35 | +## 🎯 Perfect For |
| 36 | + |
| 37 | +**Indie Game Developers** who want: |
| 38 | +- Fewer bugs in their game logic |
| 39 | +- Compiler-enforced resource management |
| 40 | +- Type-safe game state machines |
| 41 | +- WebAssembly deployment |
| 42 | + |
| 43 | +**Game Jam Participants** who need: |
| 44 | +- Rapid prototyping with type safety |
| 45 | +- No runtime crashes from invalid state |
| 46 | +- Easy WASM deployment |
| 47 | + |
| 48 | +**Educational Use** for teaching: |
| 49 | +- Affine types and linear logic |
| 50 | +- Type-driven game development |
| 51 | +- Functional programming concepts |
| 52 | + |
| 53 | +--- |
| 54 | + |
| 55 | +## 📦 What's Included |
| 56 | + |
| 57 | +### Core Technology (PMPL-1.0-or-later) |
| 58 | +- AffineScript compiler (OCaml backend) |
| 59 | +- WebAssembly code generator |
| 60 | +- Tree-sitter grammar |
| 61 | +- VSCode extension |
| 62 | +- Language Server Protocol implementation |
| 63 | +- Standard library modules |
| 64 | + |
| 65 | +### Game Examples (AGPL-3.0-or-later) |
| 66 | +- Hello World with effects |
| 67 | +- Resource management patterns |
| 68 | +- Game state machine examples |
| 69 | +- Type-safe entity systems |
| 70 | +- Network protocol examples |
| 71 | + |
| 72 | +### Documentation |
| 73 | +- Complete language specification |
| 74 | +- Game development tutorials |
| 75 | +- Compiler architecture guide |
| 76 | +- Type system reference |
| 77 | + |
| 78 | +--- |
| 79 | + |
| 80 | +## 🔧 Installation |
| 81 | + |
| 82 | +### Prerequisites |
| 83 | +- OCaml 5.1+ |
| 84 | +- Dune 3.14+ |
| 85 | +- opam packages: `sedlex`, `menhir`, `ppx_deriving` |
| 86 | + |
| 87 | +### Build from Source |
| 88 | +```bash |
| 89 | +git clone https://github.com/hyperpolymath/affinescript |
| 90 | +git checkout v0.1.0-alpha.1 |
| 91 | +cd affinescript |
| 92 | +dune build |
| 93 | +``` |
| 94 | + |
| 95 | +### Try the Examples |
| 96 | +```bash |
| 97 | +# Type check a game example |
| 98 | +dune exec affinescript -- check examples/hello.as |
| 99 | + |
| 100 | +# Run with interpreter |
| 101 | +dune exec affinescript -- eval examples/hello.as |
| 102 | + |
| 103 | +# Compile to WebAssembly |
| 104 | +dune exec affinescript -- compile examples/hello.as -o hello.wasm |
| 105 | +``` |
| 106 | + |
| 107 | +--- |
| 108 | + |
| 109 | +## 📝 Licensing |
| 110 | + |
| 111 | +### Core Technology |
| 112 | +**PMPL-1.0-or-later** - Palimpsest Mutual Public License |
| 113 | +- Covers: Compiler, tooling, standard library |
| 114 | +- Permissive with ethical use requirements |
| 115 | +- Quantum-safe provenance tracking |
| 116 | + |
| 117 | +### Game Content & Examples |
| 118 | +**AGPL-3.0-or-later** - GNU Affero General Public License |
| 119 | +- Covers: Game examples, assets, tutorials |
| 120 | +- Ensures game content remains open |
| 121 | +- Network use provisions for online games |
| 122 | + |
| 123 | +--- |
| 124 | + |
| 125 | +## ⚠️ Known Limitations |
| 126 | + |
| 127 | +### Not Yet Implemented |
| 128 | +- **Effect Handlers**: Declarations parsed, runtime not implemented |
| 129 | +- **Trait System**: 70% complete (basic traits work) |
| 130 | +- **WASM Backend**: Basic types only (records coming soon) |
| 131 | +- **Non-lexical Lifetimes**: Planned for beta |
| 132 | + |
| 133 | +### Performance Notes |
| 134 | +- Compiler: Fast enough for development |
| 135 | +- WASM output: Not yet optimized |
| 136 | +- Runtime: Minimal overhead from type erasure |
| 137 | + |
| 138 | +--- |
| 139 | + |
| 140 | +## 🎮 Game Development Highlights |
| 141 | + |
| 142 | +### Why This Changes Everything |
| 143 | + |
| 144 | +**Before AffineScript:** |
| 145 | +```rust |
| 146 | +// Rust - manual resource management |
| 147 | +let texture = load_texture("player.png"); |
| 148 | +// ... hundreds of lines later ... |
| 149 | +unload_texture(texture); // Easy to forget! |
| 150 | +``` |
| 151 | + |
| 152 | +**After AffineScript:** |
| 153 | +```affinescript |
| 154 | +// AffineScript - compiler-enforced resource management |
| 155 | +fn game_loop() -> () / IO { |
| 156 | + let texture = load_texture("player.png"); // own GameTexture |
| 157 | + render(ref texture); |
| 158 | + unload(texture); // MUST happen - compiler proves it! |
| 159 | + // texture is GONE here - using it would be a compile error |
| 160 | +} |
| 161 | +``` |
| 162 | + |
| 163 | +### Real-World Impact |
| 164 | +- ✅ **No more memory leaks** in game resources |
| 165 | +- ✅ **No more invalid state** bugs in game logic |
| 166 | +- ✅ **No more protocol errors** in network code |
| 167 | +- ✅ **No more hidden I/O** in pure game functions |
| 168 | +- ✅ **Flexible data** without boilerplate |
| 169 | + |
| 170 | +--- |
| 171 | + |
| 172 | +## 🚀 Roadmap to 1.0 |
| 173 | + |
| 174 | +### Alpha Phase (Current) |
| 175 | +- Core language working |
| 176 | +- Basic WASM backend |
| 177 | +- Game examples included |
| 178 | +- Documentation complete |
| 179 | + |
| 180 | +### Beta Phase (Q2 2026) |
| 181 | +- Complete trait system |
| 182 | +- Effect handlers runtime |
| 183 | +- Advanced WASM features |
| 184 | +- Performance optimization |
| 185 | + |
| 186 | +### Release Candidate (Q3 2026) |
| 187 | +- Full standard library |
| 188 | +- Game engine integration |
| 189 | +- Production-ready compiler |
| 190 | +- Complete toolchain |
| 191 | + |
| 192 | +### 1.0 Release (Q4 2026) |
| 193 | +- Full feature set |
| 194 | +- Production-ready |
| 195 | +- Ecosystem packages |
| 196 | +- Game jam templates |
| 197 | + |
| 198 | +--- |
| 199 | + |
| 200 | +## 🤝 Community & Support |
| 201 | + |
| 202 | +**GitHub**: https://github.com/hyperpolymath/affinescript |
| 203 | +**Issues**: https://github.com/hyperpolymath/affinescript/issues |
| 204 | +**Discussions**: https://github.com/hyperpolymath/affinescript/discussions |
| 205 | + |
| 206 | +**Related Projects:** |
| 207 | +- Gossamer: https://github.com/hyperpolymath/gossamer (PMPL-1.0-or-later) |
| 208 | +- Burble: https://github.com/hyperpolymath/burble (PMPL-1.0-or-later) |
| 209 | + |
| 210 | +--- |
| 211 | + |
| 212 | +## 🎁 Try It Today |
| 213 | + |
| 214 | +```bash |
| 215 | +# Clone the alpha release |
| 216 | +git clone --branch v0.1.0-alpha.1 https://github.com/hyperpolymath/affinescript |
| 217 | + |
| 218 | +# Build and run |
| 219 | +dune build |
| 220 | +dune exec affinescript -- eval examples/hello.as |
| 221 | + |
| 222 | +# Start building your bug-free game! |
| 223 | +``` |
| 224 | + |
| 225 | +--- |
| 226 | + |
| 227 | +**AffineScript: Where your compiler becomes your QA team.** |
| 228 | + |
| 229 | +SPDX-License-Identifier: PMPL-1.0-or-later |
| 230 | +SPDX-FileCopyrightText: 2026 Jonathan D.A. Jewell and contributors |
0 commit comments