Status / Experimental · v0.2.0
What works today.
Ziran has a functioning, tested core. It is not yet a complete implementation of its language direction or a stable 1.0 platform. This summary follows the current implementation status; consult that file for feature-level details.
Available in the tested subsetSource and checking
.zi modules with named, open, and re-exporting imports; procedures with default and named arguments; records, generic records, polymorphic procedures that infer $T through values, slices, and pointers, enums, fixed arrays, and borrowed slices; for over ranges and collections, defer, and if cases; constants, checked conversions, and compile-time #if, #run, and #assert. Unsupported forms are diagnosed with stable codes that ziran explain describes.
Supported targetsNative output
One shared frontend generates C, C++, Go, Rust, and Python 3.10. The generated code reads like hand-written code in each language and carries only the runtime a program uses. Every example prints the same output on each target and the portable runner. Saved .zir modules recheck and build the same way. Python output needs only the standard library. Plan 9 C output is experimental.
Current supportPortable bundles
Version 24 .zib bundles link and run checked scalar, string, record, enum, fixed-array, slice, and declared host-capability programs within documented limits, and an embedding host runs them through the C host API. A bundle does not run every checked program.
39 modulesStandard library
Text, UTF-8, JSON and RSS scanning, dates, math, secure Linux randomness and constant-time byte comparison, bounded queues, monotonic timing, bounded Linux sockets, generic sorting and binary search, a browser bridge for Web APIs from WebAssembly, ZIP archives, Option, Result, and Pair, owned Vec(T) storage with a string builder, and explicit file, process, HTTP, and WebSocket contracts. The reference is generated from the checked source.
Checked in the buildLaws and parallel loops
#law obligations for types, bounds, sizes, effects, and ABI are checked by ziran check, and every procedure carries a derived effect class. forall laws check every case over integer ranges, enum members, and bounded integer sequences, and report a counterexample when one fails. #parallel for regions run on threads in C and C++ and serially elsewhere. #parallel_gpu regions are validated but still run on the CPU.
AvailablePackages and tools
Projects declare pinned Git dependencies in ziran.toml and ziran.lock, with ziran add, lock, update, and install; a dependency can pin a tag, a branch, or a full commit hash, and a package can export thousands of modules. ziran version reports the release, now v0.2.0. ziran features, capabilities, api, and explain report tested syntax, target limits, public APIs, and diagnostics as JSON.
Still required
The next boundaries
Language coverageFinish Jai parity: remaining expression forms, foreign array ABI details, generic fields that depend on specialization parameters, and procedure-valued defaults and import forms.
Typed IR everywhereMove the remaining target-specific declaration and import lowering from text into typed .zir, then report target capability errors uniformly.
Portable effectsExtend the .zib linker and verifier to every checked expression and native feature, with complete host capability coverage.
OwnershipClose the remaining edge cases: unknown heap and host-backed view aliases, indexed and pointer-backed field moves, and storage detached by BuilderFinish.
Parity and cutoverComplete native backend parity, FFI capability checks, law coverage, Plan 9 target-aware lowering, GPU offload, and downstream application gates, then make the planned single breaking cutover.
Read the detailed status ↗