Commit Graph
227 Commits
Author SHA1 Message Date
Jimmy Miller 46fc79e201 Fix sparse array semantic gaps 2026-08-04 16:31:31 -04:00
Jimmy Miller afb870cf8c Match pinned structured clone wording 2026-08-04 10:43:46 -04:00
Jimmy Miller 4123689c40 Fix sparse array rebase regressions 2026-08-03 17:19:03 -04:00
Jimmy Miller 522e841fd8 Add sparse array support
Represent array holes independently from element storage with an optional runtime presence bitmap. Preserve hole state through length changes, deletion, slicing, concatenation, sorting, copying methods, iteration, serialization, and reference-counted cleanup while retaining packed-array fast paths.

Extend frontend lowering and IR validation for sparse literals, Array length construction, property-presence checks, delete, length assignment, and sparse appends. Add dense-array analysis so proven packed reads can use dedicated unchecked-presence runtime entry points in both native backends.

Add differential corpus coverage, runtime lifecycle tests, IR analysis tests, and compile fences for JavaScript fill loops that cannot prove complete initialization. Update affected binary-size expectations and align structuredClone transfer diagnostics with Node wording.
2026-08-03 15:34:20 -04:00
Chris Tate 22666584df Restore sandbox test performance (#86)
* Restore sandbox test performance

- Re-enable secure native compiler caching for repo-local test artifacts.
- Isolate strict cache coverage while keeping it off the sandbox critical path.

* fix: respect sandbox test runtime limits
2026-08-03 01:03:34 -05:00
Chris Tate 52459a86d4 feat(compiler): lower stored text codec calls (#85)
* feat(compiler): lower stored text codec calls

- Lower same-scope const TextEncoder and TextDecoder call receivers without runtime instances.
- Preserve fences for escaping, captured, and imported codec values with actionable diagnostics.
- Add differential, diagnostic, and preflight baseline coverage for the supported idiom.

* fix(compiler): fence deferred text codec calls

* fix text codec switch-clause TDZ handling
2026-08-02 21:24:33 -05:00
Chris Tate 0d5bc0dd0d feat(coverage): resolve external host type surfaces (#80)
* feat(coverage): resolve external host type surfaces

- Add repeatable --external-types mappings for checker-only module resolution.
- Keep host runtime values as explicit blockers with tests and documentation.

* fix: validate external type mappings

* fix: fence external host runtime edges

* fix(compiler): skip empty external type lookup

* fix(compiler): honor external type boundaries
2026-08-02 19:41:35 -05:00
Chris Tate 20f2d98fa3 fix(compiler): refine narrowed union payload fields (#84)
* fix(compiler): refine narrowed union payload fields

- Treat pure union discriminant reads as stable within compound guards.
- Cover payload-field range refinement in analysis and library builds.

* fix(compiler): preserve field facts across union discriminants
2026-08-02 19:37:32 -05:00
Chris Tate a0c5d6a549 Document synthesized sidecar structs (#83)
- Define the optional marker as literal true for compiler-created inline records.

- Reject malformed markers and pin the format-1 validator behavior.
2026-08-02 19:13:01 -05:00
Chris Tate 9fb068ae27 Merge pull request #77 from vercel-labs/ctate/node24-fetch-inventory
feat(compat): inventory Node 24 fetch surface
2026-08-02 16:37:36 -05:00
Chris Tate efb7e77281 fix: address fetch compatibility review findings 2026-08-02 15:31:00 -05:00
Chris Tate c356ff0ac0 Merge pull request #73 from vercel-labs/ctate/no-persist-compile
Persist native compilation cache
2026-08-02 14:58:35 -05:00
Chris Tate 68263610e3 fix(compiler): prevent stale native cache hits 2026-08-02 13:59:06 -05:00
Chris Tate 3f2a78894e fix(fetch): address Node 24 compatibility gaps 2026-08-02 13:28:46 -05:00
Chris Tate a1215f6ef9 fix(compiler): bypass cache for opaque wrappers 2026-08-02 13:00:17 -05:00
Chris Tate 0b79e36973 fix: align fetch runtime with Node 24 semantics 2026-08-02 12:29:31 -05:00
Chris Tate 8c20c9ac73 fix: validate computed fetch dispatch 2026-08-02 11:29:23 -05:00
Chris Tate af685d05f9 fix: close fetch inventory review gaps 2026-08-02 10:41:37 -05:00
Chris Tate b90c0466b2 fix: enforce fetch surface compatibility 2026-08-02 01:09:40 -05:00
Chris Tate f2b9bb9c6f Fix fetch fence aliases and computed unions 2026-08-01 22:38:08 -05:00
Chris Tate 57ce47b273 fix fetch inventory coverage gaps 2026-08-01 21:12:49 -05:00
Chris Tate ae1ce89070 Fix RequestInit fence aliasing 2026-08-01 20:28:38 -05:00
Chris Tate 9aede1ed55 Fix remaining fetch surface fence bypasses 2026-08-01 19:54:37 -05:00
Chris Tate 5ac9dcda3e Fix fetch surface fence coverage 2026-08-01 18:53:02 -05:00
Chris Tate dcc5a03a52 fix: validate native cache state and artifacts 2026-08-01 18:38:22 -05:00
Chris Tate ea3bbddc62 fix: align fetch inventory with lowering 2026-08-01 17:30:06 -05:00
Chris Tate 89b5ab3355 feat(compat): inventory Node 24 fetch surface
- Classify Node 24 fetch APIs and options by static, dynamic-only, unsupported, and out-of-scope support.

- Project the inventory into the surface manifest and add runtime drift and conformance checks.

- Fence unprofiled Headers members with actionable SC2020 diagnostics.
2026-08-01 17:01:32 -05:00
Chris Tate 53e07fc55c fix: harden native build caches 2026-08-01 15:39:44 -05:00
Chris Tate 1f1f7d42a7 fix native cache invalidation 2026-08-01 15:39:44 -05:00
Chris Tate 6b996ea4a8 fix: harden persistent compilation cache 2026-08-01 15:39:44 -05:00
Chris Tate 2c1406325d fix(compiler): harden persistent cache identity 2026-08-01 15:39:43 -05:00
Chris Tate a578a9ab9b Persist native compilation cache
- Enable bounded platform-native caching for production executable and library builds.

- Reuse library runtime objects across edits and avoid duplicate no-npm frontend loading.

- Cover cache defaults, invalidation, bypass behavior, and artifact equivalence; document controls.
2026-08-01 15:39:43 -05:00
Chris Tate 2d0bc2df0b Add generated Node 24 fetch conformance
- Pin the supported fetch surface to an explicit Node and Undici profile.
- Generate deterministic WebIDL, AbortSignal, and stream differential campaigns.
- Match Node stream pull scheduling while preserving typed source identity.
2026-08-01 15:33:37 -05:00
Chris Tate 0d3c006c0d Merge pull request #52 from vercel-labs/ctate/fix-fetch
feat: make fetch static-compatible
2026-08-01 14:49:41 -05:00
Chris Tate 1544ccda88 fix(fetch): align static stream and body coercion 2026-08-01 09:10:35 -05:00
Chris Tate 5985d54a27 fix: preserve fetch coercion semantics 2026-08-01 08:28:01 -05:00
Chris Tate 78144ec8be fix(fetch): bind Web Stream source callbacks 2026-07-31 12:00:29 -05:00
Chris Tate f19df5a1ee fix(fetch): align listener and stream behavior 2026-07-31 11:35:28 -05:00
Chris Tate 52c66e2286 fix(fetch): accept string request stream chunks 2026-07-31 09:03:40 -05:00
Chris Tate ffaefc6ced fix: snapshot fetch environment at startup 2026-07-31 00:05:24 -05:00
Chris Tate 334febe43d fix(fetch): address remaining review findings 2026-07-30 22:48:36 -05:00
Chris Tate 9c49f6157c fix: coalesce same-class integer slot obligations
- Retain every declared path when structurally identical arms share a lowered record field.
- Keep differing-class collisions on SC4009 and cover both outcomes with regressions.
2026-07-30 22:24:59 -05:00
Chris Tate eec2cb2a3a fix(fetch): address static fetch review findings 2026-07-30 22:02:47 -05:00
Chris Tate e7fd096d89 Refine stable numeric field paths
- Track ordinary record and class fields through stable guard expressions.

- Preserve conservative invalidation and add differential regression coverage.
2026-07-30 21:42:37 -05:00
Chris Tate baf050843d fix fetch proxy and event dispatch behavior 2026-07-30 21:19:57 -05:00
Chris Tate ae3abd7069 Refuse unresolved subscriptions exports
- Track whether subscriptions_export is explicitly declared and reject dangling names at the profile.
- Preserve optional omission semantics and cover both paths with contract regressions.
2026-07-30 21:11:09 -05:00
Chris Tate d0b3e81a9b fix(library): preserve nested integer obligations 2026-07-30 20:32:37 -05:00
Chris Tate 7badeb3135 Refuse synthesized record name collisions 2026-07-30 20:11:10 -05:00
Chris Tate 73cb79ea52 Fix synthesized record attestations across composed arms 2026-07-30 19:50:21 -05:00
Chris Tate a4898f335d Prove integer writes to synthesized record slots
- Preserve tagged-union shape identity when mapping synthesized payload fields into integer inference.

- Refuse fractional writes on named-union and message payload slots, with regressions for both paths.
2026-07-30 19:31:48 -05:00