Commit Graph
584 Commits
Author SHA1 Message Date
Chris Tate 39982af431 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 15:42:30 -05:00
Chris Tate a8efd2fbad 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.
2026-09-12 15:36:19 -05:00
f98a8e475c Clarify Zig setup for WebAssembly builds (#294)
Clarifies the root README's WebAssembly setup by explaining that users need the `zig` executable on `PATH`. It also explains that `SCRIPTC_CC=zigcc` selects Zig's `cc` subcommand, not a standalone `zigcc` executable, while leaving the existing build and run examples unchanged.

Factory-Run: e3db0c10-6b15-4b64-8c99-5bf54ef41ec7

Co-authored-by: Chris Tate <366502+ctate@users.noreply.github.com>
Co-authored-by: guest271314 <4174848+guest271314@users.noreply.github.com>
2026-09-11 00:13:17 -05:00
Chris Tate bf32f155fc test: record TS7 order parity baselines (#285) v0.0.38 v0.0.37 2026-09-02 20:08:06 -05:00
Chris Tate 0bf47eb87e feat: support static ESM import metadata 2026-09-02 18:18:09 -05:00
Chris Tate 8faad2f639 feat: add Node.js compatibility matrix (#284)
* feat: add Node.js compatibility matrix

- Add generated Node.js v24 compatibility inventory with static and dynamic support classifications.
- Publish the interactive /compatibility matrix and wire manifest generation into runtime and docs checks.

* fix: correct compatibility matrix generation

* fix: address PR 284 review findings

* fix: address PR 284 review findings

* test: exercise stream web loader through npm graph

* fix: correct dynamic global availability

* fix: keep compatibility module mappings precise
2026-09-02 16:03:36 -05:00
Chris Tate c41f1a8be9 Expand LLVM native output targets (#280)
* Expand LLVM native output targets

- Add owned helper and runtime-pack contracts for macOS x64, Linux glibc/musl, Windows x64, and WASI.
- Generalize LLVM target selection, package validation, linker plans, and release/CI matrices.
- Document linker boundaries and add focused native-output and runtime-pack coverage.

* Pin Windows LLVM helper CI to VS 2022

The official LLVM archive needs the Visual Studio 2022 CMake generator, which is not guaranteed by windows-latest.

* Align bootstrap cache with LLVM runtime-pack builds

Use the same target-specific helper and linker identity before and after compiler loading so routed executable cache hits remain lightweight.

* Install Windows LLVM CI tools with Chocolatey

windows-2022 includes Visual Studio but not winget; use its available Chocolatey bootstrap for CMake and Ninja.

* Prevent Zig version probes from leaving runtime-pack objects

Run runtime-pack compiler version probes in a private temporary directory and remove the accidental tracked WASI a.o file.

* Use 7-Zip for Windows LLVM setup

Extract the official LLVM development archive with two-stage 7-Zip instead of Windows tar.exe, which timed out while materializing the toolchain tree.

* Define ssize_t for the MSVC runtime pack

Clang's MSVC target does not expose POSIX ssize_t through sys/types.h; define the pointer-sized runtime type without affecting MinGW.

* Build the Windows runtime pack with Zig

Use the MinGW-compatible Windows sysroot required by the runtime while retaining COFF helper output and installing Zig in the Windows native CI lane.

* Give macOS LLVM differential shard time to finish

Shard 1 passed its setup and focused contracts but was cancelled during its cold LLVM differential slice at the 20-minute job limit.
2026-09-01 13:41:34 -05:00
Chris Tateandyowainwright 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 1cec922d95 Separate native linking from C compilation (#278)
* Separate native linking from C compilation

 - Split the helper-object runtime-pack path into explicit link planning and platform linking.
 - Reserve SCRIPTC_LINKER for object-only executable links while retaining a deprecated SCRIPTC_CC compatibility path.
 - Add no-legacy-C coverage and document the linker/SDK boundary.

* Preserve runtime pack link errors

* Fix linker cache invalidation and warnings

* Fix C executable cache routing

- Keep explicit C builds on compiler-backed cache identities.
- Cover linker-only environment changes across exact C repeats.
2026-08-31 20:29:59 -05:00
Chris Tateandmmamedel 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>
v0.0.36
2026-08-31 17:12:52 -05:00
Chris Tate 19898f1d7b chore(release): v0.0.36 (#277) 2026-08-31 17:12:16 -05:00
Chris TateandFlora90001 55ee396738 Support reusePort for TCP and HTTP server listeners (#274)
* feat(net): support reusePort server listen options

Co-authored-by: Flora90001 <163703040+Flora90001@users.noreply.github.com>

* fix(net): match reusePort boolean semantics

Co-authored-by: Flora90001 <163703040+Flora90001@users.noreply.github.com>

* feat(net): support reusePort server listen options

Co-authored-by: Flora90001 <163703040+Flora90001@users.noreply.github.com>

* test(net): close listeners on successful conflict probe

Co-authored-by: Flora90001 <163703040+Flora90001@users.noreply.github.com>

---------

Co-authored-by: Flora90001 <163703040+Flora90001@users.noreply.github.com>
2026-08-31 15:26:20 -05:00
Chris Tateandeuxaristia 1730676951 fix(compiler): keep targetless Zig native builds coherent (#273)
Co-authored-by: euxaristia <25621994+euxaristia@users.noreply.github.com>
2026-08-31 10:47:41 -05:00
Chris Tateandmmamedel 837f6bc62b Tree-shake unreachable executable runtime sections (#271)
* feat: tree-shake executable runtime sections

Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>

* test: run runtime tree-shaking checks in sandbox

Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>

* fix(runtime): release lazy process caches

Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>

* test: stabilize runtime tree-shaking size guard

Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>

---------

Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>
2026-08-31 09:01:19 -05:00
Chris Tateandmmamedel 2b6e6524a3 fix(library): reject callback re-entry (#270)
Co-authored-by: mmamedel <23098414+mmamedel@users.noreply.github.com>
2026-08-30 19:30:31 -05:00
Chris Tateandmonteslu 4d9e2a2397 fix ffi call initializers (#268)
Co-authored-by: monteslu <423800+monteslu@users.noreply.github.com>
2026-08-30 19:23:04 -05:00
Chris Tateandmmamedel 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 Tateandmmamedel 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 b536dd36a9 update dockerfile (#264) 2026-08-30 15:05:00 -05:00
Chris Tate 64b2a285d5 feat(runtime): ship precompiled macOS artifacts (#248)
* feat(runtime): ship precompiled macOS artifacts

- Add a versioned macOS arm64 runtime pack with deterministic feature selection and artifact verification.
- Link LLVM helper objects against release-built runtime and vendor inputs without compiling user-machine C.
- Wire package publishing, cache validation, documentation, and full-gate coverage for the new path.

* fix(runtime): harden precompiled artifact handling

* fix(runtime): make precompiled artifacts reproducible

* fix(runtime): reject opaque linkers from executable cache

* fix(runtime): normalize precompiled archive metadata

* fix(runtime): harden precompiled artifact caching

* fix(runtime): close executable cache link race

* fix(runtime): stage verified pack artifacts

* fix(runtime): bracket helper cache inputs

* fix(runtime): preserve executable link identity

* fix(runtime): trace selected linker dependencies
2026-08-28 09:29:21 -05:00
Chris Tate 73efea6ab3 feat(cli): expose native object link info (#247)
* feat(cli): expose native object link info

- add versioned, cache-independent native link metadata for program objects

- document the experimental runtime ABI and provide C-driver and Apple linker examples

- verify ABI mismatch, FFI parity, packed installs, and external linking in CI

* fix(example): validate native runtime pack identity
2026-08-27 13:47:09 -05:00
Chris Tate 401338f437 feat(compiler): add native LLVM object emission (#242)
* feat(compiler): add native LLVM object emission

- ship the pinned macOS arm64 LLVM helper and platform package
- add assembly/object CLI outputs, caching, diagnostics, and runtime ABI checks
- validate helper artifacts through CI, packaging, docs, and differential coverage

* fix(compiler): harden native LLVM emission

* fix(compiler): harden LLVM helper packaging

* fix(compiler): stabilize LLVM helper package size

* fix(compiler): harden native helper validation

* fix(compiler): harden LLVM helper verification

* fix(compiler): harden native object emission
2026-08-27 10:30:40 -05:00
Chris Tate f71922fcb0 fix(sandbox): include CLI lifecycle scripts
- Copy the CLI cache-warming postinstall script before the Docker dependency install layer
- Include the script in the restricted Docker build context
- Add regression coverage for lifecycle-script ordering and context availability
2026-08-26 21:51:15 -05:00
Chris Tate 77fad3c4cc feat(cli): add source-level output kinds (#241)
* feat(cli): add source-level output kinds

- add typed IR, C, and LLVM primary artifacts without native toolchain discovery
- centralize output paths, compatibility validation, and stale artifact cleanup
- document and test the new CLI contract

* fix(cli): harden source output contracts

* fix(cli): harden source output compatibility
2026-08-26 15:26:24 -05:00
Chris Tate 7c816fa398 Improve Sandbox test portability (#240)
* Improve Sandbox test portability

- Decouple Sandbox scope and authentication from custom image references.
- Add a pinned managed-image bootstrap with stronger preflight diagnostics.
- Document and test OIDC, access-token, and fallback-image workflows.

* Fix VCR OIDC authentication

- Map selected credentials onto the VCR CLI token interface.
- Decode OIDC project scope and cover auth paths with regression tests.

* Fix Sandbox VCR authentication

* Fix OIDC Sandbox scope precedence
2026-08-26 11:22:07 -05:00
Chris Tate 73ee01d7ef refactor(llvm): split expression emission by family (#235)
* refactor(llvm): split expression emission by family

- Extract expression and support emission into focused LLVM modules.
- Partition library calls behind prefix-dispatched domain modules.
- Consolidate keyed-record reads behind one shared implementation.

* fix(llvm): preserve validation call routing
2026-08-24 07:28:38 -05:00
Chris Tate 97585a8b5d Update description (#234) 2026-08-24 01:27:26 -05:00
Chris Tate 22195f769d refactor(c): split expression emission by family (#233)
- Extract expression cases into focused literal, control, container, call, dynamic, and async emitters.
- Partition standard-library calls into prefix-dispatched domain families.
- Keep emitExpr as a thin exhaustive dispatcher with emission behavior unchanged.
2026-08-23 21:04:12 -05:00
Chris Tate 469efdd7f0 refactor: clarify compiler module boundaries (#232)
* refactor: clarify compiler module boundaries

- Rename backend, frontend, IR, and cache modules for explicit ownership.
- Split native cache/vendor and frontend shared concerns into focused modules.
- Expand compiler context names and refresh imports, tests, and documentation.

* fix: preserve renamed compiler interfaces
2026-08-23 20:16:13 -05:00
Chris Tate 844716b163 refactor: consolidate compiler helpers (#231)
- Share frontend package, CJS, lowering, and snapshot helpers.
- Consolidate vendor builds, manifest loops, and generic parameter shaping.
- Reuse LLVM truthiness and reference-counting skeletons.
2026-08-23 19:16:35 -05:00
Chris Tate b8e4d6e20e refactor: share compiler builder helpers (#230)
- Consolidate package exports resolution behind explicit condition sets.
- Share counted-loop construction across frontend IR and LLVM emission.
- Move backend-neutral IR analyses into the shared IR layer.
2026-08-23 18:07:36 -05:00
Chris Tate c6210788a7 refactor: share early cache primitives (#228)
- Extract common cache hashing, paths, payload I/O, and feature validation.
- Preserve library and executable stamp schemas and on-disk identities.
2026-08-23 17:02:51 -05:00
Chris Tate 2412b05289 refactor: share async generator scaffolding (#227)
- Extract per-backend argument-pack and trampoline prologue helpers.

- Preserve async promise and generator completion, drop, cache, and spawn epilogues.
2026-08-23 16:14:15 -05:00
Chris Tate c9f532f532 refactor: merge Set and Map intrinsic emission (#226)
- Route Map and Set operations through shared map-like emitters in both backends.
- Keep collection-specific get, set, add, iteration value, and array conversion lowering.
2026-08-23 15:34:36 -05:00
Chris Tate 14239698da refactor: centralize runtime fence deferral (#212)
- Add a shared deferToRuntimeFence helper for diagnostics, messages, and trap IR.
- Preserve statement, closure, function ABI, probe, and SC9001 behavior.
- Replace eight duplicated lowering paths with compact helper calls.
2026-08-23 13:54:40 -05:00
Chris Tate 1b26642633 refactor: share IR construction helpers (#211)
- Add typed builders for variable references and primitive literals.
- Replace duplicated lowering-local constructors with the shared API.
2026-08-23 13:09:32 -05:00
Chris Tate 876061ab71 refactor(compiler): centralize pointer kind sets (#210)
- Export canonical handle and pointer kind sets from the IR.
- Replace repeated C and LLVM dispatch ladders with membership checks.
- Preserve exhaustiveness and cover the scalar handle exception.
2026-08-23 09:18:07 -05:00
Chris Tate de81740174 Consolidate runtime RC symbol dispatch (#209)
- Define one exhaustive IR runtime RC stem table shared by refcount detection and both backends.
- Derive C and LLVM retain/release symbols while preserving shape-specific and ABI exceptions.
- Add focused coverage for runtime, object, record, and LLVM declaration paths.
2026-08-23 00:46:47 -05:00
Chris Tate f5f04a5f49 Improve compiler lint and error classification (#208)
* Warn on non-null assertions

- Surface non-null assertions during linting without making them blocking.

- Preserve existing assertion sites for opportunistic cleanup.

* Classify internal compiler errors

- Export InternalCompilerError and migrate compiler invariant throws without changing messages.

- Rename the native cache test to match cc.ts and update test scheduling references.

- Document test placement by unit, package integration, and cross-package scope.

* Fix internal compiler error classification
2026-08-23 00:02:28 -05:00
Chris Tate 97668de086 refactor(cc): narrow cache identity guards (#207)
- Bind cache roots and identities into typed cache capabilities.
- Thread narrowed identities through archive and executable cache keys.
- Remove the fragile cacheIdentity non-null assertions.
2026-08-22 20:27:46 -05:00
Chris Tate 27729aa24d fix(compiler): reset module caches between compiles (#206)
- Scope resolver, ccache, release identity, and fence taxonomy memoization to public compile invocations
- Add in-process reuse regressions for project realms, PATH changes, and library metadata
2026-08-22 19:19:35 -05:00
Chris Tate 2d40680932 chore(compiler): trim internal value exports (#205)
- Make file-local compiler helpers private across frontend and backend modules
- Remove dead declarations exposed by the tighter module boundaries
- Preserve tested IR deserialization and generated manifest dependencies
2026-08-22 14:32:21 -05:00
Chris Tate 2fb3a65a99 Prepare v0.0.35 release (#194)
- Bump the CLI, compiler, runtime, and surface manifest to v0.0.35.
- Publish release notes for faster development builds and compiler correctness fixes.
v0.0.35
2026-08-21 22:33:49 -05:00
Chris Tate 30d45bd126 Tune LLVM splitting for dev libraries (#193)
- Lower the dev-library split floor and bucket target for faster localized rebuilds.
- Preserve executable, release, sanitized, and cache-validation behavior.
2026-08-21 21:58:03 -05:00
Chris Tate af333016d4 perf: preseed native build caches (#192)
* perf: preseed native build caches

- Warm runtime, TLS, and dynamic-engine artifacts during npm installation
- Add an explicit toolchain-aware cache warm command for images and CI
- Move vendor artifacts into the user cache and build QuickJS directly

* fix: harden native cache warming

* fix: promote staged vendor cache entries

* fix: isolate shared native cache entries

* fix: validate shared vendor cache artifacts
2026-08-21 19:52:25 -05:00
Chris Tate 5138c1683a perf: add executable dev object caching (#191)
- Add an explicit executable dev posture using native -O0 builds
- Split large LLVM programs into parallel, independently cached objects
- Preserve release cache compatibility and safe single-TU fallbacks
2026-08-21 13:03:31 -05:00
Chris Tate 09f51311f9 perf: reduce checker RPC traffic (#190)
- Batch checker type work for reached call/receiver paths and eager npm-static implicit instances.
- Memoize immutable type constituents and skip array checks for visibly non-object types.
2026-08-21 11:42:42 -05:00
Chris Tate 2805c3ddb4 perf: lazy-load the compiler from the CLI (#189)
* perf: lazy-load the compiler from the CLI

- Serve help and version from a lightweight bootstrap and route exact executable cache hits before loading the compiler graph.
- Validate routed hits against compiler, frontend, toolchain, and native dependency proofs with portable cache publication.

* fix: repair lazy executable cache routes
2026-08-21 10:29:34 -05:00
Chris Tateandvercel[bot] f237e44c73 perf: cache complete executable builds early (#188)
* perf: cache complete executable builds early

- Restore exact executable builds before TypeScript frontend and lowering work.
- Validate frontend, native dependency, mode, target, and FFI identities before reuse.
- Cover cross-process hits, corruption repair, invalidation, and native fallback behavior.

* Update tests/harness/README.md

Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>

* fix: harden early executable cache identity

* fix: fingerprint effective compiler for early cache

---------

Co-authored-by: vercel[bot] <35613825+vercel[bot]@users.noreply.github.com>
2026-08-21 08:41:51 -05:00
Chris Tate a72679c677 perf: split large library program objects (#186)
* perf: split large library program objects

- Split large LLVM dev libraries into stable, parallel compilation shards.
- Cache shard objects independently and merge them into the canonical archive member.
- Preserve public ABI and fall back safely for unsupported or TLS-bearing IR.

* fix: harden program shard caching

* fix: harden program shard merging

* fix: decouple shard cache from merge tools
2026-08-20 23:28:17 -05:00