Roadmap
Current foundation
- Lossless reader, formatter, macro expansion, evaluator, and TypeScript VM.
- Hindley–Milner inference with descriptor-aware typed core.
- Operational effect inference and portable effect artifacts.
- A JSON host ABI with a source-built
formaJSON CLI and daemon. - Editor analysis, language server, and conformance suites with stored goldens.
- Browser compiler explorer with live intermediate stages.
Elm-style application prototype
The Foldkit prelude prototype generates Effect / Foldkit TypeScript with exhaustive message updates, typed command recovery, and pure Hiccup views. It has a strict golden and headless conformance harness. Command arguments, subscriptions, richer views, editor/worker integration, and shared HttpApi server/client declarations remain proposed work. There is no production-readiness claim.
Next
- Tighten the language specification around observable behavior and turn remaining untested assumptions into fixtures.
- Stabilize the host ABI and artifact schema around a small set of end-to-end consumer examples.
- Improve incremental analysis, package caching, and editor latency without weakening source provenance.
- Reduce TypeScript CLI and engine startup cost, and define the distribution model for the eventual public packages.
- Add a supported consumer-prelude SDK and document how to build a complete typed domain language.
Record row rollout
RFC 0005 implements closed-shape Pick, Omit, and disjoint Merge. Its follow-ups are proposals, not implemented features or a committed delivery schedule:
- Qualified rows (0006): retain presence, absence, and disjointness obligations through generic functions and modules.
- Shared type normalization (0007): make computed record types usable in contextual coercion, type values, and schemas. Closed-shape consumers can progress independently of open-row solving.
- Field/key indices (0009): represent checked selections in generic signatures. Bounded row mapping is a later stage and does not block ontology migration.
- Typed form results (0008): expose validated declaration fields and check declarative result templates once. Migrate
queryonly after old/new types and artifacts agree; retainrow-ofcompatibility.
Each RFC specifies its own conformance gates. The full bounded rollout still excludes arbitrary type-level functions and runtime value-dependent type computation.
Deferred
- General-purpose application-language positioning.
- A stable package or wire-format compatibility promise.
- Automatic registry publication or website deployment.
- Additional backends without a concrete consumer and conformance target.