0.8.34AUGUST 2026

PARSE · SUMMARIZE · CLONE

Parse once.
Transform in isolation.

ProjectSession now owns one canonical source tree and export summary per unchanged module. Every importer still receives a fresh mutable AST, keeping compiler work bounded without sharing transformer state.

103Unique modules parsed once
200Independent transformer clones
193/193Tests passing
07

MODULE OWNERSHIP

Share immutable facts.
Never share mutation.

PARSE

Unique modules define the work

Reachability, styles, static collections, Zustand, client helpers, diagnostics, and Workers reuse one canonical parsed tree.

EXPORTS

Supported shapes summarize once

Direct, default, aliased, and named re-export records retain the existing compiler boundary without widening accepted syntax.

CLONES

Transformer contexts stay private

Normalization receives a deep clone of every node with independent parents, so one importer cannot mutate another's analysis.

INVALIDATION

Source text owns freshness

A changed file replaces its parsed tree and export summary together. A different ProjectSession starts with no shared records.

MEASURED

Output stays identical

The 100-importer A/B emits the same 382,603-byte source-result graph. No material timing claim is made from the drifting host run.

NEXT

Stable semantic identity

P0.8 moves declarations, aliases, re-exports, ownership sites, and call sites onto ModuleSymbol and SiteId records.

UPGRADE

Keep the output. Bound repeated compiler work.

$npm install @kudzujs/core@^0.8.34