Commit Graph
354 Commits
Author SHA1 Message Date
Chris Tate dca69db98e Fix pending top-level await exit precedence 2026-07-28 22:40:36 -05:00
Chris Tate 2d9070cd54 fix top-level await rejection handling 2026-07-28 22:01:32 -05:00
Chris Tate ad56e7716a Merge branch 'main' into ctate/top-level-await 2026-07-28 20:57:35 -05:00
Chris Tate 6985cdd3a9 Merge pull request #39 from vercel-labs/ctate/faster-tests
Speed up full test validation with Vercel Sandbox
2026-07-28 20:56:50 -05:00
Chris Tate 1d6d011e80 fix(ci): preserve case-sharded coverage
- Route coverage and Vercel E2E outside Vitest file sharding.

- Run the complete frontend coverage sweep once across plain CI slices.
2026-07-28 20:43:16 -05:00
Chris Tate a4906d4948 chore(test): upgrade Vercel CLI to 58.1.0
- Refresh the pinned Sandbox runner dependency graph.

- Exempt only Vercel 58.1.0 from the release-age gate.
2026-07-28 20:24:49 -05:00
Chris Tate 124ea659ec fix(test): preserve POSIX sandbox workspace paths
- Keep remote workspace reset paths POSIX across host platforms.

- Add targeted Windows CI coverage for Sandbox preparation.
2026-07-28 20:07:34 -05:00
Chris Tate dd0a5cf076 fix(test): make sandbox requirements explicit
- Document Pro and Hobby gate configurations without reducing coverage.
- Pin the Vercel CLI and its release-age-safe dependency graph.
2026-07-28 19:51:17 -05:00
Chris Tate 3487b26d38 fix(test): isolate sandbox scheduling and cleanup
- Clear inherited scheduler controls outside intentional shards.

- Bound Sandbox removal and escalate stalled CLI termination.
2026-07-28 19:18:06 -05:00
Chris Tate 6886bcf24b fix(test): load sandbox runner settings from local env
- Load .env.local before capturing runner tuning values.

- Cover configured values and documented defaults.
2026-07-28 19:00:04 -05:00
Chris Tate 680dbfe458 fix(test): isolate sandbox sanitizer lanes
- Pin sanitizer state for every local and remote lane.

- Cover inherited environment overrides with a regression test.
2026-07-28 18:43:53 -05:00
Chris Tate 297c68125c Preserve sandbox gate coverage and worktree fidelity
- Run host artifact and ASan contracts on supported platforms with a Sandbox fallback.
- Clear image-seeded workspace files before extracting the dirty worktree.
- Pin current Linux artifact size classes and regression coverage.
2026-07-28 18:27:28 -05:00
Chris Tate 177d025452 Harden sandbox gate across host platforms
- Retain representative Darwin kqueue coverage in the default gate.
- Schedule native runtime tests by host and make Linux clang invocations portable.
- Resolve canonical OCI manifest digests for direct and indexed images.
2026-07-28 17:48:17 -05:00
Chris Tate 61d399bb7a Fix sandbox gate coverage and isolation 2026-07-28 15:36:19 -05:00
Chris Tate 9eb8b63df7 Make the sandbox suite the default full gate
- Direct agents to the four-minute plain and sanitized Sandbox gate.

- Preserve the two local lanes as the credentials-free fallback.
2026-07-28 15:01:11 -05:00
Chris Tate a504ccb850 Cut full sandbox validation to four minutes
- Shard portable coverage across 16 sandboxes while retaining focused Darwin contracts.

- Run invariant suites once and keep differential and sanitizer-sensitive coverage in both lanes.

- Harden sandbox transport, exit-status parsing, and Linux runtime test portability.
2026-07-28 14:58:34 -05:00
Chris Tate ce8c447d87 Speed up full test validation with Vercel Sandbox
- Add a custom Node 24 test image with tenant-neutral VCR configuration.
- Shard differential suites across disposable Sandboxes while preserving host-specific coverage.
- Load local agent credentials safely and document the validation workflow.
2026-07-28 13:27:18 -05:00
Chris Tate e88ddc1678 Support top-level await
- Lower asynchronous ESM initialization with Node-compatible dependency ordering and caching.
- Finish top-level promises consistently across the C and LLVM runtimes.
- Add differential coverage for imports, rejection, and unsettled evaluation.
2026-07-28 11:19:04 -05:00
Chris Tate 20c3a6c27d Merge pull request #15 from vercel-labs/ctate/to-fixed-effects
Preserve effectful toFixed defaults
2026-07-26 22:27:03 -05:00
Chris Tate c4b68dc6d9 Merge pull request #16 from simonw/patch-1
Remove "honestly priced"
2026-07-26 21:55:54 -05:00
Simon Willison 725b931cf4 Remove "honestly priced"
"Escape hatches" is a better header without that.
2026-07-26 19:33:56 -07:00
Chris Tate 81091a1a49 Preserve effectful toFixed defaults
- Evaluate undefined precision expressions before substituting zero.
- Cover effectful optional precision with a differential corpus case.
2026-07-26 21:21:07 -05:00
Chris Tate 820b8f2edf Merge pull request #14 from vercel-labs/ctate/v0.0.17
Prepare v0.0.17 release
v0.0.17
2026-07-26 21:14:11 -05:00
Chris Tate a14054d227 Merge pull request #12 from vercel-labs/ctate/to-fixed
Support Number.toFixed statically
2026-07-26 20:58:26 -05:00
Chris Tate e6de55819f Prepare v0.0.17 release
- Stamp the runtime, compiler, and CLI packages at 0.0.17.
- Regenerate the surface manifest for the synchronized version.
- Add release notes for the Windows CLI build and run fixes.
2026-07-26 20:32:46 -05:00
Chris Tate a3a5863cca fix optional toFixed lowering 2026-07-26 19:50:06 -05:00
Chris Tate bc2cd2b7d1 Support Number.toFixed statically
- Lower Number.prototype.toFixed through the compiler IR and native backends.
- Match JavaScript rounding, range errors, and numeric edge cases in the runtime.
- Add differential coverage and update surface metadata and diagnostics.
2026-07-26 18:43:53 -05:00
Chris Tate b0ac27af41 Merge pull request #11 from vercel-labs/ctate/fix-win-error
Fix scriptc run on Windows
2026-07-26 18:03:57 -05:00
Chris Tate 6d521671df Fix Windows cross-target CLI setup 2026-07-26 17:25:37 -05:00
Chris Tate eed983cdad Fix Windows CLI smoke toolchain 2026-07-26 16:08:30 -05:00
Chris Tate 50b135de8d Fix workspace build on Windows 2026-07-26 16:01:30 -05:00
Chris TateandKhaled Ghallab d7b5891b4f Fix scriptc run on Windows
- Normalize Windows paths passed through the TS7 virtual filesystem.
- Emit and launch .exe outputs by default on Windows.
- Add targeted regressions and a Windows GitHub Actions smoke test.

Co-authored-by: Khaled Ghallab <171967089+Khaled-Ghallab@users.noreply.github.com>
2026-07-26 15:50:38 -05:00
Chris Tate 4b2c775965 Merge pull request #9 from vercel-labs/ctate/v0.0.16
Prepare v0.0.16 release
v0.0.16
2026-07-26 10:31:44 -05:00
Chris Tate aacfc4cbf0 Prepare v0.0.16 release
- Synchronize package versions and regenerate the compiler surface manifest.
- Publish release notes for prompt output flushing and Linux host clang builds.
2026-07-26 10:22:45 -05:00
Chris Tate 2a27b91cfc Merge pull request #8 from vercel-labs/ctate/fix-linux
Fix Linux host clang static builds
2026-07-26 09:44:39 -05:00
8f131ae312 Fix Linux host clang static builds
- Add glibc feature visibility and trailing libm linkage.
- Gate native host clang builds with regression coverage and Ubuntu CI.

Co-authored-by: farangkao <7920378+farangkao@users.noreply.github.com>
Co-authored-by: Swadhin Biswas <107450069+swadhinbiswas@users.noreply.github.com>
2026-07-26 09:36:46 -05:00
Chris Tate 0e83e70baf Merge pull request #4 from vercel-labs/ctate/console-log
fix: flush console output promptly
2026-07-26 08:50:45 -05:00
Chris Tate 481dd9c974 fix: flush console output promptly
- Submit console, process, readline, and island writes before returning.
- Add live-pipe and SIGKILL parity coverage against Node 24.
2026-07-26 01:30:42 -05:00
Chris Tate 84e0b052b8 Merge pull request #2 from vercel-labs/ctate/v0.0.15
chore: release v0.0.15
v0.0.15
2026-07-25 12:57:38 -05:00
Chris Tate 3817e74e74 chore: release v0.0.15
- Bump all published packages to 0.0.15 and refresh the surface manifest.
- Promote the outbound native FFI notes into the marked release block.
- Verify the workspace build plus plain and sanitized full test lanes.
2026-07-25 12:48:14 -05:00
Chris Tate 13c1229ddf Merge pull request #1 from vercel-labs/ctate/outbound-ffi
feat: add outbound native FFI
2026-07-25 12:22:21 -05:00
Chris Tate 1a5bc86bc9 fix: harden outbound FFI validation 2026-07-25 11:52:55 -05:00
Chris Tate 2098e0df6d fix: validate unused FFI bindings 2026-07-25 10:57:54 -05:00
Chris Tate bed63d3223 feat: add outbound native FFI
- Add a strict versioned manifest and direct C ABI lowering for both backends.
- Link declared native inputs through the CLI and compiler APIs with precise diagnostics.
- Cover the ABI under plain and sanitized integration tests and document its contracts.
2026-07-25 09:56:48 -05:00
Chris Tate ee1f8697b8 Release 0.0.14 v0.0.14 2026-07-24 23:30:35 -05:00
Chris Tate a7538fd87d URL-string and URL-object arguments to the http and https clients
- `http.get("http://host/path")` and its https spelling now compile. The declarations only described the options-record form, so the first thing a from-scratch client writes was a type error — the shape worked under --dynamic, where the engine does not consult our declarations, which is how it read as a hello-world failure.
- A URL object is accepted the same way, as its href through the same parse. An unparsable input is the WHATWG "Invalid URL" TypeError and a scheme that is not the calling module's is ERR_INVALID_PROTOCOL, both catchable, matching Node rather than silently upgrading the dial.
- `request` and `get` take one signature with a union first parameter instead of Node's two overloads: `tls ? https.request : http.request` unions two function types, and resolving a call on that union collapses each side to a single signature, so an overload set misresolves in either declaration order. The lowering dispatches on the argument's own type.
- Both rows run on the LLVM backend, and the tls CA-store entries joined it too — the omission there was stale, so 2557-tls-ca-store moved off the C lane with identical output.
- Corpus 2644 and 2645 cover both schemes against loopback servers, so neither needs the network.
2026-07-24 23:24:53 -05:00
Chris Tate 46643230d8 Resolve hostnames at the client dial
- http, https, TLS and HTTP/2 clients now resolve the hostname before connecting. A client that dialed by name got ENOTFOUND regardless of the name — only literal addresses worked, which is most of what a from-scratch client writes.
- Only the dial takes the address. The original name stays on the request, which is what the Host header carries and what SNI and certificate verification see, so a resolved dial does not weaken the TLS check.
- node:net's own connect surface stays resolver-less: Node's async lookup semantics there are a separate piece of work, so `net.connect(port, hostname)` still refuses to resolve.
2026-07-24 23:24:41 -05:00
Chris Tate 701e2795a1 CLI: -v, and argument errors that read as errors
- `scriptc -v` / `--version` prints the installed version, read from the package manifest so a release build and a source checkout answer the same way. It previously fell through to the compile path and crashed trying to read `-v` as an entry file.
- An unknown flag or a missing flag value now prints one line naming what was wrong, followed by usage. parseArgs' ERR_PARSE_ARGS_* used to escape to the top level and paint a Node stack trace over the terminal.
- Reworded `--backend` help: llvm is the default and the output that ships, c is the readable reference backend for inspecting what the compiler produced.
2026-07-24 23:23:58 -05:00
Chris Tate 91245d659f Release 0.0.13 v0.0.13 2026-07-24 21:20:01 -05:00
Chris Tate 6345fabfcb Retag || on the truthy side instead of coercing the left
- tsc builds `u || d`'s result by DROPPING the left's falsy arms (`process.env.X || null` is `string | null`, `|| 3000` is `string | number`), so coercing the left into that result before the truthiness test retags an arm the test is about to rule out — and threw where Node yields the default.
- `orDefault` gains an optional `retag`: the truthy side hands the whole left box to a union→union helper whose stranded-arm throw is unreachable by construction, since truthiness has already ruled those arms out. Left evaluates once, right stays lazy, arm count is free.
- A ternary in logical-left position no longer adopts its contextual union over its own, for the same reason the eager coercion was wrong: tsc's assignability proof does not hold for that operand. Narrow to the union choice — contextual array element typing and the unmappable-own rescue are untouched.
- 2595 chained its two in-flight `fs.exists` stats: registering both after the awaited rejections orders them against the rejections, not against each other, and Node itself returns them reversed about one run in forty.
2026-07-24 21:15:53 -05:00