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 subset

Source 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 targets

Native 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 support

Portable 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 modules

Standard 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 build

Laws 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.

Available

Packages 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 coverage

Finish 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 everywhere

Move the remaining target-specific declaration and import lowering from text into typed .zir, then report target capability errors uniformly.

Portable effects

Extend the .zib linker and verifier to every checked expression and native feature, with complete host capability coverage.

Ownership

Close the remaining edge cases: unknown heap and host-backed view aliases, indexed and pointer-backed field moves, and storage detached by BuilderFinish.

Parity and cutover

Complete 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 ↗