npm / yuku-parser
yuku-parser
What changed in yuku-parser 0.19 to 0.20, from its official release notes, upgrade guides and advisories. Also covers yuku-codegen. Sources checked 2026-10-19.
12 breaking1 security2 new APIs and options4 performance3 behavior and defaults10 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli inityuku-parser 0.2029 changes
Breaking changes 11
yuku/types no longer exports Core.
The semantic traverser's Ctx.init now takes a mode.
Ctx.parentOf is removed.
The Zig build option -Dparser-extension is replaced by -Ddialect.
Node.js 16.4 or newer is required.
SymbolTracker.init now takes a mode.
Browsers need WebAssembly SIMD, such as Safari 16.4 or newer.
Yuku now ships as one package; install yuku and import from yuku, yuku/analyzer, yuku/ast, yuku/codegen, and yuku/types.
The yuku-core package is removed because everything runs on the WebAssembly module inside yuku.
The @yuku-core/binding-* native packages are removed because everything runs on the WebAssembly module inside yuku.
The @yuku-core/wasm package is removed because everything runs on the WebAssembly module inside yuku.
New APIs and options 2
Dialects let you add custom syntax to the parser in Zig, match it to files by extension, and pass it to parse and analyze through the wasm option.
The wasm option lets parse and analyze receive dialects.
Performance 4
generate is 12 to 17% faster with a source map, and 7 to 13% faster without one.
Parsing is 13 to 22% faster.
Repeated calls reuse memory, making batches that mix large and small files much faster.
semanticErrors is 29 to 49% cheaper because it skips the full semantic model.
Behavior and default changes 2
unwrap from yuku/ast accepts any node, null, or undefined, and returns anything it does not unwrap as it is.
Yuku runs unchanged in Node.js, Bun, Deno, browsers, and Workers, with no setup before the first parse.
Fixes and other changes 10
Parsing works on big-endian hosts such as s390x.
Yuku runs in Vercel's Edge Runtime, which loads it through the edge-light condition.
A for (init;;) head parses in correctly inside parentheses, literals, templates, functions, and classes.
generate keeps the braces in import type {} from "m", which previously printed as invalid import type "m".
generate keeps parentheses around a ++ or -- operand followed by a comment that breaks the line.
JSX text after a closing fragment parses, so
<p><>a</> — b</p>works.module.imports lists export {} from "m" as a side-effect import, and import() or require() of a parenthesized string or a template literal without substitutions.
Source maps map a JSX attribute's string value, and a string key that minifying prints as a name, to its own column.
super() in a computed key of a class inside a derived constructor no longer reports an error.
TypeScript overloads of a private method no longer report a duplicate private name.
yuku-parser 0.193 changes
Breaking changes 1
Using Yuku as a Zig package now requires Zig 0.17.0 or later, so upgrade Zig before updating.
Security 1
Parsing an empty source now works correctly in runtimes like WebContainers, where leftover bytes could be read as input.
Behavior and default changes 1
generate prints any single node, such as an object property, rather than only a whole Program.