0.8.35AUGUST 2026

SYMBOLS · SITES · RESOLVE

Names explain.
Identity decides.

Declarations now keep one stable identity across aliases, barrel exports, source caches, and private transformer clones. Cross-module analysis follows authored sites instead of transient AST objects.

103Unique module summaries
100Private transformer clones
195/195Tests passing
08

SEMANTIC IDENTITY

Follow authored meaning.
Not mutable syntax objects.

SYMBOLS

Declarations keep one identity

A ModuleSymbol combines project-relative module ownership with a declaration SiteId. Readable names remain useful without deciding semantics.

EXPORTS

Barrels resolve completely

Default and named exports, aliases, barrel chains, export *, cycles, and ambiguity now share one checked graph.

SITES

Authored locations survive clones

Owners, component calls, hooks, keyed lists, and effects carry deterministic source-local SiteIds across repeated compilation.

ISOLATION

Transformer trees stay private

Consumers resolve a symbol first, then locate its authored site in their own normalized clone. Canonical AST mutation remains forbidden.

MEASURED

Extra meaning, no build loss

The 100-importer candidate removes half the clones and records a small directional build improvement with unchanged deployed JavaScript.

NEXT

Semantic state operations

P0.9 will lower equivalent state-update syntax through the existing structured HandlerIR path without adding a JavaScript VM.

UPGRADE

Keep familiar source. Stabilize compiler meaning.

$npm install @kudzujs/core@^0.8.35