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 and the document has been reconciled with what shipped. When implementation lands before ratification, the KEP is Accepted retroactively with dated as-built amendments, and staysAccepteduntil the follow-ups those amendments flag are resolved or explicitly tracked in the target repo. - 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 (amended 2026-08-27: as implemented in v0.15.0; Q5 native-frame residual open — see its As-implemented section) | kaappi core |
| 0002 | Cross-Thread Channels and Multi-Core Fiber Scheduling | Final (amended 2026-07-16: §6 capacity-0 rendezvous; amended 2026-08-27: as-implemented reconciliation; amended 2026-08-28: channel identity resolved as comparators, kaappi#2394 closed by kaappi#2397 — join-notify kaappi#2395 tracked, see its As-implemented section) | 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 (amended 2026-08-28: Phase 2 shipped; naming and ship-gate questions resolved) | kaappi core, kaappi.github.io |
| 0005 | The Diagnostic Contract | Accepted | kaappi core, kaappi.github.io |
| 0006 | Explicit-Renaming Macros (er-macro-transformer) | Accepted (amended 2026-08-27: as implemented in v0.22.0; compare, check/--sandbox, and gc-stress follow-ups open — see its As-implemented section) |
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 |
| 0022 | Native Subprocess Support — (kaappi process) |
Final (amended 2026-09-01: all four phases as implemented; amended 2026-09-04: shipped in v0.26.0, fd-inheritance follow-ups kaappi#2422/#2424 resolved — see its As-implemented section) | kaappi core |
MIT — see LICENSE.