Chris Tate
6db5366d7f
Add static node:module parity
2026-09-20 14:02:44 -05:00
Chris Tate
e42ee19e41
Add static CommonJS factory exports ( #360 )
...
* Add static CommonJS factory exports
* Fence inherited methods on dynamic objects
2026-09-20 13:07:51 -05:00
Chris Tate
bef652e50d
Add static union receiver calls ( #359 )
2026-09-20 10:53:00 -05:00
Chris Tate
d6657921f5
Add static zlib callback codecs ( #356 )
2026-09-20 09:10:07 -05:00
Chris Tate
e82dc998c4
Add static one-shot zlib codecs ( #355 )
2026-09-20 01:21:41 -05:00
Chris Tate
c33a18d421
Add static fs function values ( #354 )
...
* Add static fs function values
* Fence option-sensitive fs function values
2026-09-19 23:11:24 -05:00
Chris Tate
5ae6705e38
Add static builtin function values ( #353 )
2026-09-19 21:49:21 -05:00
Chris Tate
bf6dfb882b
Add static Node path function values ( #352 )
...
* Add static Node path function values
* Preserve JavaScript builtin alias fences
2026-09-19 12:24:40 -05:00
Chris Tate
37f9438084
Add static fixed-tuple call spreads ( #351 )
2026-09-19 00:00:26 -05:00
Chris Tate
a11fd6c881
Add static callable specialization ( #350 )
2026-09-18 22:50:45 -05:00
Chris Tate
1600935411
Add static-native BigInt support ( #346 )
...
* feat: add static BigInt support
* fix: prevent BigInt width overflow on WASI
* fix: harden BigInt formatting sizes
* test: record BigInt WASI parity baseline
2026-09-18 00:21:12 -05:00
Chris Tate and ryoppippi
5a1aec07f2
fix: lower discarded conditional expressions ( #343 )
...
- Lower discarded conditionals as lazy statement control flow.
- Add differential and TS7 coverage for void conditional arrows.
Fixes #33
Co-authored-by: ryoppippi <1560508+ryoppippi@users.noreply.github.com >
2026-09-17 10:55:27 -05:00
Chris Tate and ryoppippi
11ed6e4d1d
Fix nested mutual function recursion ( #342 )
...
* Fix nested mutual function recursion
- Predeclare nested function bindings before sibling closures capture them.
- Cover two- and three-way recursive declaration cycles across native backends.
Fixes #32
Co-authored-by: ryoppippi <1560508+ryoppippi@users.noreply.github.com >
* Record nested recursion parity baseline
- Add the generated TypeScript 7 order baseline for the nested mutual-recursion corpus fixture.
Fixes #32
Co-authored-by: ryoppippi <1560508+ryoppippi@users.noreply.github.com >
---------
Co-authored-by: ryoppippi <1560508+ryoppippi@users.noreply.github.com >
2026-09-17 10:22:01 -05:00
Chris Tate and euxaristia
5e4b4df1b9
feat(child_process): support writable child stdin ( #341 )
...
* feat(child_process): support writable child stdin
- Add nonblocking child stdin writers with lifecycle events and platform-aware backpressure.
- Lower writable streams through the C and LLVM backends while fencing unsupported overloads.
- Add differential, type, diagnostics, and compatibility coverage.
Fixes #311
Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com >
* Reject non-literal spawn options
- Emit a named lowering diagnostic instead of silently dropping variable options.
- Cover two- and three-argument spawn overloads with diagnostic regressions.
Fixes #311
Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com >
---------
Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com >
2026-09-17 07:48:29 -05:00
Chris Tate and euxaristia
472748956b
Render UTF-8 output in Windows consoles ( #340 )
...
- Configure attached Windows consoles for UTF-8 while preserving redirected bytes and restoring host state.
- Add cross-platform output coverage and a native pseudo-console regression.
Fixes #321
Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com >
2026-09-16 14:48:27 -05:00
Chris Tate and Xia Chao
2e51e8e191
Fix JSON record key serialization ( #339 )
...
- Encode record property names as valid JSON across C and LLVM emitters.
- Sanitize generated backend comments and cover escaped and terminating keys.
Fixes #312
Co-authored-by: Xia Chao <236466140+xia-chao@users.noreply.github.com >
2026-09-16 14:16:39 -05:00
Chris Tate and Kristian Rekstad
7f8dc65eb3
test: pin issue 289 sort workload ( #336 )
...
- Reproduce the reported 100,000-element descending numeric sort.
- Bound comparator calls so quadratic sorting fails quickly.
Fixes #289
Co-authored-by: Kristian Rekstad <7364831+krissrex@users.noreply.github.com >
2026-09-16 11:34:06 -05:00
Chris Tate
ffa248efcf
feat: add static crypto utility support ( #335 )
...
* feat: add static crypto utility support
* fix: match Node crypto digest errors
2026-09-16 11:15:12 -05:00
Chris Tate
ef497214b5
feat: support Commander 15 static calculator ( #334 )
2026-09-16 08:34:13 -05:00
Chris Tate
fcacc4d4b0
feat: add static CommonJS module graph ( #332 )
2026-09-15 21:17:31 -05:00
Chris Tate
280fe1a8da
feat: preserve class and child handles through unknown ( #331 )
...
* feat: preserve class and child handles through unknown
* fix: hide private fields from unknown views
2026-09-15 19:30:22 -05:00
Chris Tate
e559808ef0
feat: run Commander actions statically ( #330 )
2026-09-15 16:30:54 -05:00
Chris Tate
5a782a6150
feat: add static async iteration parity ( #328 )
2026-09-15 00:03:07 -05:00
Chris Tate
2ac8743dbb
feat(compiler): add Node module resolution introspection ( #322 )
2026-09-14 18:15:44 -05:00
Chris Tate and Paolo Anzani
2bfc37b138
fix(compiler): support branded primitive types ( #320 )
...
Co-authored-by: Paolo Anzani <201222836+paoloanzn@users.noreply.github.com >
2026-09-14 13:46:36 -05:00
Chris Tate and Mateus Mamede Lage
16de852347
fix(compiler): lower dynamic any-local operators ( #319 )
...
Fixes #290
Co-authored-by: Mateus Mamede Lage <23098414+mmamedel@users.noreply.github.com >
2026-09-14 12:31:25 -05:00
Chris Tate
74dce238ab
perf(runtime): scale URLSearchParams sorting ( #318 )
2026-09-14 11:53:42 -05:00
Chris Tate and 2youg1
b74364ed01
fix(compiler): preserve leading BOM literals ( #316 )
...
Co-authored-by: 2youg1 <65069696+2youg1@users.noreply.github.com >
2026-09-14 10:29:16 -05:00
Chris Tate
073c840564
Enforce TypeScript 7 and Node type-link parity ( #315 )
...
* Enforce TypeScript 7 and Node type-link parity
* fix(compiler): normalize Windows resolver paths
* fix(compiler): canonicalize Windows realpaths
2026-09-14 09:19:08 -05:00
Chris Tate
a8a5204574
Implement typed async generators ( #310 )
2026-09-14 00:38:06 -05:00
Chris Tate
9fb0620f06
Implement explicit resource management ( #309 )
2026-09-13 23:34:17 -05:00
Chris Tate
d7aed4b722
Unify TS 7 project module resolution ( #308 )
2026-09-13 21:53:45 -05:00
Chris Tate
94fd361b54
Implement sparse native arrays and missing-value parity ( #297 )
...
Represent ordinary JavaScript arrays with hole, value, and explicit-undefined states; add sparse side storage and carry missing values through the frontend, native backends, runtime, and Node-facing consumers.
2026-09-12 22:39:07 -05:00
Chris Tate
4b241f77d7
Replace quadratic array sorting with stable merge sort ( #296 )
...
* Fix Sandbox command transport and pinned native setup
Build the Linux LLVM helper and runtime pack before running both test lanes, and align native cache contracts with the current target policy. Full managed Sandbox gate passed.
* Replace quadratic array sorting with stable merge sort
Cover sort snapshots, consistent-comparator results, stable ties, and comparator complexity with Node differential fixtures. Document differences from V8 TimSort.
2026-09-12 16:05:16 -05:00
Chris Tate
0bf47eb87e
feat: support static ESM import metadata
2026-09-02 18:18:09 -05:00
Chris Tate and yowainwright
1071b87d77
Lower Math.PI and Math.E statically ( #279 )
...
Co-authored-by: yowainwright <1074042+yowainwright@users.noreply.github.com >
2026-09-01 00:47:23 -05:00
Chris Tate and mmamedel
9080986166
Add sparse UTF-16 indexing for large strings ( #275 )
...
* fix: index large unicode strings sparsely
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: retain sparse anchors for long ascii prefixes
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: skip sparse index for proven ASCII strings
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: complete sparse UTF-16 string indexing
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* test: rebase static size contracts for sparse index
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* test: retain sparse checkpoints through ASCII prefix end
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: retain sparse anchors across threshold append
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: retain sparse indexes beyond cursor cache
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: bound sparse string index residency
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* fix: isolate sparse string index residency
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
* test: restore parseInt oracle outputs
* test: verify committed string oracle
- Regenerate the string case oracle with the active Node executable.\n- Compare the checked-in fixture byte-for-byte before native runtime checks.\n- Keep the Linux parseInt ULP allowance scoped to native output.
---------
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
2026-08-31 17:12:52 -05:00
Chris Tate and mmamedel
0b1738d51e
optimize string self-concatenation ownership ( #267 )
...
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
2026-08-30 17:53:30 -05:00
Chris Tate and mmamedel
5b7a5bd82b
fix(compiler): reshape inline record assertions ( #266 )
...
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com >
2026-08-30 17:05:44 -05:00
Chris Tate and xXCrash2BomberXx
2cbd7a56ee
fix(compiler): lower dyn-backed record equality reads ( #184 )
...
- Route JSDoc record absence probes through checked-dynamic keyed reads.
- Cover strict equality, missing keys, and object identity for dot and bracket access.
Co-authored-by: xXCrash2BomberXx <91439080+xXCrash2BomberXx@users.noreply.github.com >
2026-08-20 18:07:21 -05:00
Chris Tate
6310dfb960
Reuse reachability lowering output ( #178 )
...
* Reuse reachability lowering output
- Retain reachable IR and assemble the emitted module without lowering bodies a second time
- Preserve reached-only artifact filtering, coverage remainder behavior, and add lowering phase timing
* Preserve record order in retained lowering
* Preserve record order in retained helpers
* Preserve generic lowering record order
* Recheck retained generic rest order
* Record retained lowering parity fixtures
* Preserve retained lowering failure parity
2026-08-20 14:01:39 -05:00
Chris Tate
273ceac4a7
Optimize same-shape record spreads ( #168 )
...
* Optimize same-shape record spreads
- Lower TypeScript record updates through reusable clone helpers
- Outline large record clones in C and LLVM to reduce generated code
- Add ownership, IR, integer-proof, and differential coverage
* Fix cast record spread clone fallback
2026-08-17 23:37:15 -05:00
Chris Tate
ff98ee2330
Speed up scriptc builds ( #166 )
...
* Speed up scriptc builds
- Cache native compilation inputs and enable Node 24 bytecode caching
- Memoize frontend type lowering and reduce checker overfetch
- Add dev-mode library optimization and phase timing
* Fix persistent cache invalidation
* Fix native cache dependency validation
* Fix native cache header shadow invalidation
2026-08-17 20:15:56 -05:00
Jimmy Miller
729f809099
Merge pull request #153 from vercel-labs/split/filter-truthy-predicate
...
feat(compiler): accept truthy filter predicates
2026-08-17 08:56:40 -07:00
Jimmy Miller
b98b7c4a49
fix(compiler): guard zero-arg dynamic filter calls
2026-08-17 10:34:43 -04:00
Chris Tate and Kayakyx
952f5788aa
fix(runtime): trust Windows root certificates ( #158 )
...
* fix(runtime): trust Windows root certificates
- Load default TLS roots from the Windows ROOT store.
- Link crypt32 for Windows TLS builds.
- Cover the certificate-store import in cross-build tests.
Co-authored-by: Kayakyx <Kayakyx@users.noreply.github.com >
* fix Windows CA store policy handling
* fix(runtime): cover Windows policy root stores
* fix(runtime): dedupe Windows root stores
* fix(tls): match Windows system CA stores
---------
Co-authored-by: Kayakyx <Kayakyx@users.noreply.github.com >
2026-08-15 19:27:33 -05:00
Chris Tate and John Lindquist
1e4f71dddf
fix(compiler): recognize tuples in Array.isArray ( #154 )
...
* fix(compiler): recognize tuples in Array.isArray
- Treat fixed tuple record shapes as JavaScript arrays.
- Keep union tag tests and narrowing aligned.
- Add Native SDK facade regression coverage.
Co-authored-by: John Lindquist <36073+johnlindquist@users.noreply.github.com >
* fix(compiler): narrow readonly tuple arrays
* fix(compiler): preserve narrowed readonly tuples
---------
Co-authored-by: John Lindquist <36073+johnlindquist@users.noreply.github.com >
2026-08-14 10:50:35 -05:00
Jimmy Miller
0bd90765cf
feat(compiler): accept truthy (non-bool) filter predicates
...
`.filter(fn)` required the callback to return exactly bool. JS applies
ToBoolean to whatever the predicate answers, so `xs.filter((s) => s)` — the
idiomatic drop-the-falsy — was refused for no semantic reason.
The filter loop now wraps the call in the same toBool an `if` statement would
apply. A bool answer is unchanged and emits identical IR. A union answer
routes through its interned per-arm truthy helper, requested at the call site
where a real node exists for the diagnostic. A unit-only answer is constantly
falsy, and the call still runs for its effects.
The kinds with no native ToBoolean keep the fence: void has no value at all,
and dyn/jsval/caught truthiness needs the embedded engine.
Verified against Node: filtering strings, numbers, and a
`(string | undefined)[]` all print identically in both.
Diagnostics 100, filter corpus 9 across both
backends.
2026-08-14 10:27:38 -04:00
Jimmy Miller
990c7ce048
fix(compiler): preserve runtime-optional soundness
2026-08-13 15:47:45 -04:00
Jimmy Miller
d091443dc9
fix(compiler): guard runtime-optional captures
2026-08-13 15:47:44 -04:00