Koine ships the full tactical and strategic Domain-Driven Design toolkit, emitters for six
languages, and first-class editor tooling. This page is the honest status report — organized by
what you can do, with a per-target maturity matrix so you know exactly what to rely on now and
what is still ahead. Every construct below is implemented, tested, and demonstrated in the
pizzeria demo.
The parser and semantic model are strictly target-agnostic, so the same .koi model compiles to
six languages. C# is the primary, most complete target; the others cover progressively more of the
construct set. Point koine build at --target csharp | typescript | python | php | rust | java | kotlin (see the
CLI reference).
Each target is verified by compiling (or type-checking) its emitted output in CI — a green build is
the proof, not a promise.
Target
Coverage today
Proven by
C#
Complete — every construct in the feature catalogue: tactical through strategic, application/CQRS, and versioning
Roslyn compile and execute
Python
Full tactical and strategic/CQRS layer — value objects, smart enums, entities, events, read models, queries, policies, and context-map/ACL translators
mypy --strict + ast.parse
PHP
Full tactical and strategic/CQRS layer
phpstan + php -l
Rust
Tactical core plus multi-context references and the CQRS read side — value objects, smart enums, entities/aggregates, factories, events, query DTOs, read-model projections, and repository traits
cargo check
Java
Tactical core plus events/commands/repositories — value objects & events as validating records, smart enums, entities/aggregates with invariant-guarded behaviors, generated IDs, a sealed DomainEvent, and repository interfaces; multi-context references package-qualify; dependency-free Java 17
javac --release 17
Kotlin
Tactical core plus events/commands/repositories — value objects & events as data classes (invariants in init), @JvmInline value class IDs, smart enums (fromKey/tryFromKey), entities/aggregates with var … private set state + invariant-guarded behaviors, a sealed DomainEvent, and repository interfaces; optionality is T? (never Optional); multi-context references package-qualify; dependency-free Kotlin 2.x/JVM
kotlinc
TypeScript
Tactical core — value objects, identity-equal entities, smart enums as typed const objects, *Id branded primitives
Broaden TypeScript to the strategic/CQRS layer, for parity with Python and PHP.
A structured multi-target config block — targets.<name> = { … } for per-target namespace maps,
Instant mapping, and output layout — is sketched in the scaffolded koine.config but not yet wired
up (see the CLI reference).
Deeper Rust coverage as the emitter matures beyond its current tactical-plus-CQRS surface.
Every capability above is written up as actionable user stories — with personas, As a … I want … so
that … statements, testable acceptance criteria, and priorities — in
USER-STORIES.md, the
contributor roadmap.