Commit Graph
5622 Commits
Author SHA1 Message Date
Malte Ubl 407cb350df Move SC8011 from the reserved to the active codes 2026-10-26 16:04:21 -07:00
Malte Ubl 17c9ab53ed Merge remote-tracking branch 'origin/ni/i2-handles' into HEAD 2026-10-26 16:04:13 -07:00
Malte Ubl b29475cec4 Move SC8001 and SC8010 from the reserved to the active codes 2026-10-26 16:03:28 -07:00
Malte Ubl 803d654f99 Make corpus 6839's package an island with a spread require
Main resolves computed createRequire specifiers at run time, so the
package's computed require no longer makes an island; a spread argument
list still does.
2026-10-26 16:01:24 -07:00
Malte Ubl c9f6e46f45 Answer typeof of an island import from the island
An island package's declaration file declares its values ambiently, and
main's typeof folds an ambient const that nothing defines to
"undefined"; the island defines it.
2026-10-26 16:01:10 -07:00
Malte Ubl 2d264e2401 Classify only a native addon refusal as one
The computed createRequire note main added ('…, such as a native addon,
ends the program') matched the native-addon pattern, so every package with
a computed require became a runtime island; it is a deferred gap now, like
other fences that may never run.
2026-10-26 16:01:09 -07:00
Malte Ubl 69ecfbe1fa Allocate the Node island handle tag by name
#2277 numbers new handle tags from their names, so the islands' tag no
longer picks a value that another branch can take.
2026-10-26 16:00:46 -07:00
Malte Ubl 437ad4ae38 Merge remote-tracking branch 'origin/ni/i1-stack-bound' into HEAD 2026-10-26 16:00:05 -07:00
Malte Ubl 4063f1e1f7 Merge remote-tracking branch 'origin/ni/islands-base' into HEAD 2026-10-26 15:59:32 -07:00
Malte Ubl 7a2fe9e726 Merge remote-tracking branch 'origin/ni/13-libnode-packs' into HEAD 2026-10-26 15:58:56 -07:00
Malte Ubl d245796462 Merge remote-tracking branch 'origin/ni/3-hosted-loop' into HEAD 2026-10-26 15:58:16 -07:00
Malte Ubl e99d3445bf Merge remote-tracking branch 'origin/ni/1-libnode-loader' into HEAD 2026-10-26 15:57:24 -07:00
Malte Ubl 05584c5bf7 Merge remote-tracking branch 'origin/ni/1-libnode-loader' into HEAD 2026-10-26 15:55:46 -07:00
Malte UblandClaude Opus 5.5 43a55b2b68 Merge the ASan fix for nested entries on macOS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 13:34:29 -07:00
Malte UblandClaude Opus 5.5 3ea7031ea1 Merge the ASan fix for nested entries on macOS
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 13:34:29 -07:00
Malte UblandClaude Opus 5.5 6748313cba Unpoison a nested entry's ending frame for ASan on macOS
The nested trampoline never returns (setcontext back), so the redzones
around its locals stayed poisoned in the shadow of Node's stack, and
Node's own frames tripped over them later (stack-buffer-underflow in
__bzero, sanitized corpus 6822/6823/6831/6832/6894 on macOS). Linux's
ASan clears a context's stack in its swapcontext interceptor; macOS's has
none.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 13:34:14 -07:00
Malte Ubl 4c68e95384 Merge remote-tracking branch 'origin/ni/1-libnode-loader' into mac/ni1 2026-10-26 12:50:45 -07:00
Malte UblandClaude Opus 5.5 ae7d4ebf0d Merge the macOS island fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:41 -07:00
Malte UblandClaude Opus 5.5 704e6b4992 Merge the macOS island fixes
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:41 -07:00
Malte UblandClaude Opus 5.5 1d915b0c04 Merge ni/3-hosted-loop
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:40 -07:00
Malte UblandClaude Opus 5.5 bfbbd349a3 Merge the macOS island fixes, and make nested entries' contexts the same way
A nested entry below the mark makes its context with ni_make_context,
so macOS clears only the top slice of the range instead of the whole of
Node's stack below the mark on every nested call (17 ms per call, and
the cross-heap GC test ran past its timeout).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:40 -07:00
Malte UblandClaude Opus 5.5 5f3e97998d Merge the macOS island fixes of ni/1-libnode-loader
The libnode-linux action becomes .github/actions/libnode, which serves
the Linux x64 and macOS lanes: the libnode-packs cache for the runner's
platform, else the development pack.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:39 -07:00
Malte UblandClaude Opus 5.5 b1005549c3 Merge the macOS island fixes of ni/1-libnode-loader
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:39 -07:00
Malte UblandClaude Opus 5.5 50385349d3 Merge the macOS island fixes of ni/13-libnode-packs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:39 -07:00
Malte UblandClaude Opus 5.5 df869f28b0 Run Node islands on macOS, and test them in the macOS CI lanes
macOS binds libnode's own calls to v8::base::Stack inside libnode, so the
bridge's definitions cannot give V8 Node's stack as they do on Linux; V8
took the main thread's stack start and its conservative scan faulted in
the gap above Node's stack. While Node starts on its stack, the main
thread's pthread record now names that stack, which V8 reads once and
keeps.

macOS's makecontext clears the whole stack it is given, so it gets only
the top slice of Node's stack (no 64 MiB pass per context).

CI: dev-pack.json pins mirrored darwin-arm64 and darwin-x64 libnode
builds of the pinned Node 24.22.0 from the libnode-packs workflow, the
dev-pack action serves either platform, and the macOS lanes provision it,
so island tests fail rather than skip on macOS CI. The arm64 LLVM job
runs the island harness; the Intel job runs it and the island corpus.
bridge-smoke loads the .dylib bridge on macOS.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-26 12:50:38 -07:00
Chris Tate 2e627dab79 Merge main 2026-10-26 14:45:37 -05:00
Chris Tate ecaeadc1d7 Give every numbered registry one source of truth and a check (#2277) 2026-10-26 14:25:43 -05:00
Chris Tate 40b189fcdc Talk to TypeScript 7.1's API server beside 7.0's (#2349) 2026-10-26 13:55:20 -05:00
Chris Tate b4e9e134f1 Merge main and address review feedback 2026-10-26 13:48:37 -05:00
Malte Ubl 0d054133ad Merge remote-tracking branch 'origin/ni/i2-handles' into HEAD
# Conflicts:
#	packages/compiler/src/frontend/lowering/lower-classes.ts
2026-10-26 11:25:53 -07:00
Chris Tate b0a559e6c9 Address review feedback 2026-10-26 13:25:42 -05:00
Malte Ubl 39a125ec38 Move the Node island handle tag to 84
Main's navigator global took tag 83.
2026-10-26 11:25:16 -07:00
Malte Ubl 3a5aab5b2f Merge remote-tracking branch 'origin/ni/i1-stack-bound' into HEAD
# Conflicts:
#	packages/compiler/src/cli/command.ts
#	packages/compiler/src/executable/executable-cache.ts
#	packages/compiler/src/frontend/lowering/builtins/module-resolution.ts
#	packages/compiler/src/frontend/lowering/lowerer.ts
#	packages/compiler/src/index.ts
#	packages/runtime/src/scr_json.c
#	tests/harness/npm.test.ts
2026-10-26 11:22:14 -07:00
Malte Ubl f5b1e5f007 Merge remote-tracking branch 'origin/ni/islands-base' into HEAD
# Conflicts:
#	packages/compiler/src/diagnostics/diagnostic.ts
#	packages/compiler/src/node-islands/libnode-pack.ts
#	packages/libnode-darwin-arm64/package.json
#	packages/libnode-darwin-x64/package.json
#	packages/libnode-linux-arm64-gnu/package.json
#	packages/libnode-linux-x64-gnu/package.json
#	packages/node/package.json
2026-10-26 11:20:55 -07:00
Malte Ubl b3e29df342 Merge remote-tracking branch 'origin/ni/13-libnode-packs' into HEAD
# Conflicts:
#	packages/cli/src/bootstrap.ts
#	packages/compiler/src/node-islands/libnode.ts
#	packages/libnode-common/smoke/smoke.c
2026-10-26 11:18:28 -07:00
Malte Ubl ae66edf566 Merge remote-tracking branch 'origin/ni/3-hosted-loop' into HEAD
# Conflicts:
#	packages/cli/src/bootstrap.ts
#	packages/compiler/src/diagnostics/diagnostic.ts
#	packages/compiler/src/node-islands/libnode.ts
2026-10-26 11:17:30 -07:00
Malte Ubl 141279b74c Merge remote-tracking branch 'origin/ni/1-libnode-loader' into ni/13-libnode-packs 2026-10-26 11:15:43 -07:00
Malte Ubl c088613033 Merge remote-tracking branch 'origin/ni/1-libnode-loader' into ni/3-hosted-loop 2026-10-26 11:15:41 -07:00
Chris Tate de3a75ff81 Push localized failure down to the failing component of a declared type (#2307) 2026-10-26 13:10:05 -05:00
Malte Ubl 5817be4d0f Merge remote-tracking branch 'origin/main' into ni/1-libnode-loader
# Conflicts:
#	packages/compiler/src/diagnostics/diagnostic.ts
#	packages/compiler/src/ir/function-references.test.ts
2026-10-26 11:08:44 -07:00
Chris Tate 21c199ce0d Keep the layout of arrays and records passed to wider parameter types (#2329) 2026-10-26 13:08:31 -05:00
Chris Tate 6a24aae11a Address review feedback 2026-10-26 12:59:08 -05:00
Chris Tate 58197ed89d Close the largest canonical-mapping gaps the shadow census found (#2340) 2026-10-26 12:42:03 -05:00
Chris Tate 4cacdfe821 Merge main 2026-10-26 12:38:20 -05:00
Chris Tate 2aafe6b406 Address review feedback 2026-10-26 12:36:57 -05:00
Chris Tate 68e2556fda Merge main 2026-10-26 12:24:22 -05:00
Chris Tate 2cdd286f66 Talk to TypeScript 7.1's API server beside 7.0's
The TypeScript session reads initialize's answer to tell a 7.1 server
(caseSensitivity) from a 7.0 one (useCaseSensitiveFileNames), and on a
7.1 server sends 7.1's requests and reads its answers:

- snapshots: the first comes from createSnapshot and later ones from
  updateSnapshot with the latest snapshot as the base, which the server
  keeps until the next update. Each asks for current programs
  (ensurePrograms), and a project's root files and options come from its
  parsed command line. Projects an update does not list carry over from
  the base.
- symbols: a symbol is named by its reference, a source file or the
  snapshot and project that owns it plus its id. The semantic model keeps
  numeric symbol ids: each reference, and each compact reference other
  answers hold, gets a local id, and requests send the reference back.
  Symbol property methods take it in `symbol`.
- requests: getApparentType, getConstraintOfTypeParameter,
  getNonNullableType and getReturnTypeOfSignature name their type or
  signature in `objectId`, the diagnostics methods take `files`, and
  signatureToSignatureDeclaration's kind is a 7.1 SyntaxKind.
- answers: isTupleType is read from the type, JsxEmit's React and
  ReactNative values are swapped back, and parseConfigFile returns the
  options and file names.
- file system callbacks reply with {kind, value}: a value, "missing" for
  a hidden path, or "useOS" to delegate to the server.

The session, checker and semantic checker tests run against tsc 7.0.2 and
against tsc 7.1.0-beta, from the typescript-7.1 test dependency.
2026-10-26 12:13:27 -05:00
Chris Tate 9b4a6ffdf1 Regenerate the IR field readers for dynCheck's inferred site (#2347) 2026-10-26 12:08:27 -05:00
Chris Tate 5b29eb1bae Merge main 2026-10-26 12:07:21 -05:00
Chris Tate 91014dfb66 Read TypeScript 7.1's binary AST format beside 7.0's (#2346) 2026-10-26 11:59:28 -05:00