Workspace / Language developmentSnapshot JSON ↗

THE ZLANG OBSERVATORY

A language taking shape.

Streaming by nature. Responsive by design.
An independent language for fast applications and first-class zui.

Development active

Loading checkpoint…

Published snapshots · refreshes every 60s

On the workbench

IN PROGRESS

Loading current work…

Browse checkpoint ↗

PERFORMANCE LAB

Less work. Measured honestly.

LOWER IS BETTER

Explore the cost of state updates, then compare generated code with Rust. Every result keeps its scope and source checkpoint.

One service. Different subscriptions.

How broad and granular invalidation trade CPU for memory.

NATIVE POLICY EXPERIMENT

Loading workload…

BroadGranular

Update CPU

ns / frame

Median ± median absolute deviation

Retained heap

KiB · requested live Rust allocation bytes

Rust callbacks and native state tracking. Excludes GPUI rendering, Text, I/O and Zeron. This compares policies, not zlang against Rust.

All 8 workloads & measurement details

Making bursts cheaper

Before & after · skip subscriber walks when every view is already dirty

FROZEN PAIRED COMPARISON

MEASURED CHANGE

No extra tracking metadata. One clean unrelated view disables this global shortcut; it does not solve general subtree rendering.

Refresh the mounts that changed

Two measured steps · coalesced wakes, then fewer child synchronization passes

ADAPTER REFRESH ONLY

Refresh CPU

µs / frame

Median ± MAD · not a confidence interval

Retained setup heap

KiB

Requested live Rust bytes · not RSS

PROP-HEAVY UNCERTAINTY

Actual mounted-tree adapter and native bindings. Mixed build profile: adapter/native/runtime optimized; other dependencies use the dev profile. Excludes GPUI layout, paint and whole-application performance. Comparisons were timed separately; do not multiply stage ratios.

All 31 workloads & source checkpoints

The cost of subtree caching

Experimental component rendering · direct renderer stays the default

EXPERIMENTAL · NOT ENABLED

Frame CPU

ms / requested frame

Memory cost

Releasing removed layout contexts

Paired private dependency fix · separate from cache policy

PAIRED OWNERSHIP EVIDENCE

Frame CPU

ms / requested frame

Median ± MAD · not a confidence interval

Retained requested heap

KiB after updates

The fix drops contexts for removed layout nodes. Cached rendering still retains more heap than direct rendering. This is successful Rust allocator requests, not RSS or a whole-process memory limit; CPU results exclude GPU submission and rasterization. Neither cache promotion nor Rust parity follows from this ownership fix.

One record, independent field reads

Native Int cells · coarse revision, independent cells and a record cohort

RUNTIME ONLY

Update CPU

ns / logical frame

Median ± MAD · not a confidence interval

Requested heap

Sparse subscriptions avoid unrelated evaluations; dense updates can cost more than coarse invalidation. Record aliases retain the whole record, while independent cell aliases have independent lifetimes. This measures Rust callbacks over flat Int fields, not generated components, Text, GPUI rendering or language parity. Dense writes update fields individually, not as an atomic batch.

What native collections actually cost

Production ABI · checked owners, stable rows and reactive identities

MEASURED GAPS

Operation CPU

ns / operation

Median ± MAD · lower is better

Requested heap

Five randomized paired rounds on one pinned CPU; setup, checksum and teardown are outside the timer. Allocation runs are separate. Indexed native reads include checked lookup plus row read; Vec/Deque use direct indexing and omit stable handles, shared ownership and subscriptions. Alias cases compare retain/release with Rc<Vec> clone/drop only. Native-only observer and Text lifetime probes remain in the raw snapshot. No compiler, async, GPUI or whole-application parity claim.

Finding the right collection storage

Paired storage prototypes · adverse results remain visible

NOT PRODUCTION

Operation CPU

ns / operation

Median ± MAD · lower is better

Requested heap

Vec and VecDeque are lower-level Rust references: they preserve inline values and insertion identities, but omit shared ownership, reactive subscriptions and runtime schema/stale-handle checks. This is not a complete runtime parity comparison. The original prototype allocates temporary row values during append; the compact prototype uses borrowed scalar buffers. Wide middle moves benefit from moving keys instead of entire records. Text and subscription lifetime probes remain in the raw report.

zlang × Rust

Checkpoint microbenchmarks · time & allocations

Overall Rust parity remains open. Small UI differences are within measurement noise; these results do not measure a complete application.

Source provenance & limitations

THE ROAD AHEAD

A clear view of the work.

Export checklist ↗

Tracked tasks, not a language completion percentage. The list grows as implementation and testing expose more work.

Language foundations

EVIDENCE, NOT ASSUMPTIONS

Built. Tested. Still being verified.

SUBSET COVERAGE

Passing tests cover the implemented subset. Whole-language Rust-equivalent safety and application performance remain unverified.

CHECKPOINT LOG

Forward, one verified step at a time.