* 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.
* 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.
* 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
- 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
- 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.
- 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.
- 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.
- 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.
* 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
- 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
- Bump the CLI, compiler, runtime, and surface manifest to v0.0.35.
- Publish release notes for faster development builds and compiler correctness fixes.
- 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
- 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.
* 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
* 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
* Prefetch checker work by lowering phase
- Batch program structure and reachable body waves without querying dead bodies.
- Preserve memoization and panic fencing with focused checker coverage.
* Batch checker queries in coverage remainder
* Batch JavaScript class collection queries
* Batch managed checker analysis gaps
* Batch types for previously prefetched symbols
* Fence unsupported Array.from elements
- Share the backend-supported array-element contract across type mapping, callback producers, and IR validation
- Diagnose or defer unsupported Array.from mapper results before emission
- Cover the JavaScript runtime-fence path that previously crashed the C emitter
Co-authored-by: xXCrash2BomberXx <91439080+xXCrash2BomberXx@users.noreply.github.com>
* Fence unsupported array producer results
---------
Co-authored-by: xXCrash2BomberXx <91439080+xXCrash2BomberXx@users.noreply.github.com>
- Bump all published packages to v0.0.34
- Document library caching, lowering, and record-spread performance improvements
- Refresh the compiler surface manifest for the release
* 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