Skip to main content

Project status

Updated: 2026-08-14

Jazz is experimental and pre-1.0. This matrix separates implemented behavior from partial areas and planned work.

AreaStatusEvidence
Source, literals, bindings, lambdas, blocks, and operatorsImplementedLanguage overview
ADTs, typed patterns, ordered cases, and guardsImplementedADTs and patterns
Static exhaustiveness and unreachable-arm analysisImplementedControl flow
Type inference, signatures, generic named types, and numeric widthsImplementedTypes and signatures
Modules, import visibility, explicit exports, and cycle diagnosticsImplementedModule resolution
Interpreter, stable rendering, runtime hosts, and observationsImplementedRuntime values
Bundled Prelude and explicit-import collection, text, and I/O modulesImplementedStandard library
Structured errors and opt-in warning policyImplementedDiagnostics
Capability declarations and concrete method dispatchPartialCapabilities
Name-based purity analysisPartialPurity
Jazz-authored lexer, parser, and canonical-core loweringPartialBootstrapping
Typed-core production and backend-neutral IR loweringPartialCompiler pipeline
Canonical Jazz-authored semantic compilerPlannedRoadmap
Native code generation, linking, and runtimePlannedRoadmap
Stable releases, package ecosystem, and language serverPlannedRoadmap

Partial means that working, tested behavior has an explicit boundary. The typed-core and backend-neutral lowering path currently covers scalar bindings, direct calls, function values, unary closures, lexical capture, higher-order calls, partial application, ordered application of additional arguments, and capture-free, non-escaping direct self and mutual recursion. It also covers closure-shaped self and mutual recursion when every external capture precedes the first group member. These groups reuse one immutable shared environment containing ordered external captures and reconstruct self or peer closures without cyclic initialization. Bounded value-producing conditionals and scalar pattern cases can nest throughout that profile. In value positions, their deterministic multi-block control flow preserves explicit branch and join transport: a case evaluates its scrutinee once, retains source-ordered literal, wildcard, and variable arms, falls through false guards, and keeps variable binders arm-local.

For complete named or lifted function results, the profile records direct and closure tail intent. It propagates that result position through selected conditional branches and bounded scalar-case bodies, which terminate directly without result joins. Conditions, scrutinees, guards, operands, and nested value contexts remain ordinary value positions. Partial applications still return closure values; oversaturated calls tail-terminate only at the final exact stage; and module entry remains ordinary call/join/return lowering. This uses the existing Lowered IR schema, format, and validator and changes neither the runtime ABI, public language semantics, hosted compiler, nor native-stack behavior. The opt-in profile still requires a final unguarded wildcard or variable as its independent lowering-totality boundary; source-level static exhaustiveness and unreachable-arm analysis are implemented under RFC 0012.

Managed Text construction and transport now spans bindings, parameters, results, captures, calls, conditional and scalar-case results, returns, and tail-call operands. The Lowered IR path uses one semantic Text layout and exact pure services for equality, length, append, and append-char; inequality reuses equality followed by Boolean-not. Text-only transport declares no service, and referenced services are deduplicated in fixed catalog order.

Managed patterns and scrutinees remain deferred pending separate matching, projection, and ownership contracts. Pattern-lambda backend lowering remains deferred pending an invocation contract integrated with closures, currying, recursion, and callable identity. Text uncons, from-chars, concat, I/O, collections, later or interleaved external captures, scalar exports, and complete multi-module integration remain excluded. The Text services are not RuntimeHost operations or a native ABI. Ordinary compile and run modes remain on canonical core and the interpreter.