Design documents for substantial changes to Kaappi Scheme and its ecosystem. A KEP captures the motivation, design, and trade-offs of a proposal so the decision and its rationale are recorded in one place.
Open a KEP for changes that are large, cross-cutting, or hard to reverse:
- New runtime subsystems (e.g. an I/O reactor, a new GC strategy).
- Language- or library-surface changes that affect compatibility.
- New core libraries, or changes to the package manager / build model.
- Anything where the design discussion is worth more than the diff.
Routine bug fixes, small features, and docs changes do not need a KEP — just open a pull request on the relevant repo.
- Draft — copy
template.mdtokeps/NNNN-short-title.md, using the next free four-digit number. Open a PR against this repo. Discussion happens on the PR. - Accepted — once there is consensus, the KEP is merged with status
Acceptedand implementation can begin (tracked in the target repo). - Final — set to
Finalwhen the implementation has shipped in a release. - Rejected / Withdrawn / Superseded — recorded, not deleted, so the reasoning survives.
A KEP is a living document until it is Final; keep it in sync with the
implementation as the design evolves.
Draft ──▶ Accepted ──▶ Final
│ │
▼ ▼
Withdrawn Rejected / Superseded
| KEP | Title | Status | Target |
|---|---|---|---|
| 0001 | Event-Loop Reactor for Fiber I/O | Final | kaappi core |
| 0002 | Cross-Thread Channels and Multi-Core Fiber Scheduling | Accepted (amended 2026-07-16: §6 capacity-0 rendezvous) | kaappi core, (kaappi parallel) |
| 0003 | Shared Flat Numeric Data | Draft (gated — evaluated Between, 2026-07-16) | kaappi core, (kaappi parallel) |
| 0004 | Discoverable Deviations from R7RS-small | Accepted | kaappi core, kaappi.github.io |
| 0005 | The Diagnostic Contract | Accepted | kaappi core, kaappi.github.io |
| 0006 | Explicit-Renaming Macros (er-macro-transformer) | Draft | kaappi core |
| 0007 | Full syntax-case Support (Deferred) | Draft (Informational) | kaappi core |
| 0008 | A Shared IR Contract for kaappi, paal, and chaaya | Draft | kaappi core, paal, chaaya |
| 0009 | A (kaappi version) Library for SemVer 2.0.0 |
Draft | kaappi core, kaappi.github.io |
| 0010 | The LLVM Native Backend | Draft (Informational) | kaappi core, kaappi.github.io |
| 0011 | The FFI Subsystem and the Sandbox Boundary | Draft (Informational) | kaappi core, kaappi.github.io |
| 0012 | thottam — The Package Manager | Draft (Informational) | kaappi core, kaappi.github.io |
| 0013 | The WebAssembly (wasm32-wasi) Target | Draft (Informational) | kaappi core, kaappi.github.io |
| 0014 | The .sbc Bytecode File Format and Compile Cache |
Draft (Informational) | kaappi core, kaappi.github.io |
| 0015 | The Language Server (kaappi-lsp) | Draft (Informational) | kaappi core, vscode-kaappi, kaappi.github.io |
| 0016 | The Canonical Formatter (kaappi fmt) and Static Linter (kaappi check) | Draft (Informational) | kaappi core, kaappi.github.io |
| 0017 | The Value Representation and Per-Heap Garbage Collector | Draft (Informational) | kaappi core |
| 0018 | The Macro Expander — Expansion Algorithm and Hygiene Mechanism | Draft (Informational) | kaappi core |
| 0019 | The Datum Reader | Draft (Informational) | kaappi core |
| 0020 | The IR Pipeline and Bytecode Emitter | Draft (Informational) | kaappi core |
| 0021 | The Register-Based Bytecode VM | Draft (Informational) | kaappi core |
MIT — see LICENSE.