Skip to content

build: list the files bundle-modules and generate-classes read outside their source globs - #38049

Open
robobun wants to merge 3 commits into
mainfrom
farm/59f885b5/bundle-modules-extra-inputs
Open

robobun wants to merge 3 commits into
mainfrom
farm/59f885b5/bundle-modules-extra-inputs

Conversation

@robobun

@robobun robobun commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator

Problem

  • Editing src/jsc/modules/NativeModuleList.h (for example adding an entry to BUN_FOREACH_ESM_AND_CJS_NATIVE_MODULE) and running bun bd does not re-run bundle-modules: ninja -n codegen/InternalModuleRegistry+enum.h prints no work to do, and the generated module ids stay stale until some file under src/js or src/codegen happens to be touched.
  • Cause: the bundle-modules edge in scripts/build/codegen.ts (emitJsModules) is built from sources.js (src/js/**/*.{js,ts}) and sources.jsCodegen (src/codegen/*.ts) plus two hand-listed files, but the script uses three more files that match neither glob:
    • src/jsc/modules/NativeModuleList.h, opened by src/codegen/internal-module-registry-scanner.ts:38. Its order numbers the native modules; the numbers go into InternalModuleRegistry+*.h, SyntheticModuleType.h, NativeModuleImpl.h, generated_resolved_source_tag.rs and the require() rewrites inside every bundled module.
    • src/js/builtins/BunBuiltinNames.h, opened by src/codegen/bundle-functions.ts:798. BunBuiltinNames+extras.h is generated as "private names the builtins use, minus the ones this header already declares", so adding or removing a name in the header leaves a stale extras header (duplicate or missing name at C++ compile time).
    • src/jsc/bindings/js_classes.ts, imported by src/codegen/replacements.ts:2. Each class's index is baked into the bundles as $inherits(<index>, ...).
  • The generate-classes edge (emitGeneratedClasses, inputs = the .classes.ts files only) has the same problem with everything generate-classes.ts imports: js_classes.ts (it emits the switch (id) the baked indices dispatch to in ZigGeneratedClasses.cpp), class-definitions.ts and helpers.ts.
  • The one hand-listed input that is not ErrorCode.ts, src/jsc/bindings/InternalModuleRegistry.cpp, is read by no codegen script (its comment said it was; it came over from the CMake input list), so touching it re-ran the 15 to 50 second bundle-modules step for nothing.
  • grep -c for any of the missing files in a freshly configured build/debug/build.ninja prints 0. The CMake build used the same globs, so none of this was ever tracked.

Fix

  • emitJsModules lists NativeModuleList.h, BunBuiltinNames.h and js_classes.ts next to the existing ErrorCode.ts input, and drops InternalModuleRegistry.cpp. emitGeneratedClasses lists js_classes.ts and sources.jsCodegen (the way bundle-modules and cppbind already cover their src/codegen imports); the script's command line is unchanged.
  • Why this is the right shape: ninja re-runs an edge exactly when a listed input is newer than its outputs, and these scripts emit no depfiles, so the edge's input list is the only place ninja can learn what a script reads. js_classes.ts goes on both edges because an index change has to regenerate the JS side and the C++ side in the same build; fixing one edge alone would leave them disagreeing. The rule has restat = 1 and the scripts use writeIfNotChanged, so a touch that changes nothing re-runs only the step itself. Warm trees are not invalidated: the new inputs are ordinary source files, older than the outputs unless they were actually edited since the last build (a second configure plus ninja -n on a built tree is still no work to do).
  • Test: test/internal/build-codegen-extra-inputs.test.ts. Instead of pinning file names, it emits each of the two steps with the real src/codegen list, walks the script's static import closure (Bun.Transpiler.scanImports + Bun.resolveSync), and checks the edge in both directions: everything imported or opened (reads, the two readFileSync headers) has to be on the edge, and every hand-listed input has to be imported or opened. On main it reports untracked: [js_classes.ts, NativeModuleList.h, BunBuiltinNames.h] and unexplained: [InternalModuleRegistry.cpp] for bundle-modules and untracked: [class-definitions.ts, helpers.ts, js_classes.ts] for generate-classes; with this change both are empty. A third case pins that generate-classes still gets only the .classes.ts files as arguments. The table is meant to grow a row per step; scripts/build/CLAUDE.md says so.
  • scripts/glob-sources.ts gains globSourceList(field) (the per-field half of globAllSources(), which now calls it) because globbing every pattern takes ~25 s under a debug build and the test only needs the 21-file src/codegen list.
  • Also verified on a warm linux-x64 debug tree: before, touching each file and dry-running the target printed no work to do; after, each touch plans its step (js_classes.ts and class-definitions.ts plan generate-classes too) and touching InternalModuleRegistry.cpp no longer plans bundle-modules. bun bd builds and smoke-tests with the regenerated graph. Transcripts below.

Background

  • scripts/build/codegen.ts writes one ninja build edge per codegen script. The edge's inputs come from configure-time globs (scripts/glob-sources.ts) plus whatever the emitter lists by hand. ninja decides whether to run the edge purely from the mtimes of those inputs versus the outputs; a file the script opens but the edge does not list is invisible to it.
  • bundle-modules (src/codegen/bundle-modules.ts, which also drives bundle-functions.ts) turns src/js into the builtin module blob plus the C++ and Rust tables that index it. Several of those tables are numbered from hand-written lists outside src/js: the native module list (modules implemented in C++, numbered after the JS ones), the builtin private-name list, and the $inherits class table.
  • js_classes.ts is the list behind $inheritsBlob(x) and friends in builtin JS. replacements.ts turns each call into $inherits(<index in the list>, x) while bundling; generate-classes.ts emits the C++ function that switches on the same index. Both generated artifacts therefore depend on the file's order.
Probe transcripts (linux-x64, build/debug)

Before, with both targets up to date:

touch src/jsc/modules/NativeModuleList.h;  ninja -C build/debug -n codegen/InternalModuleRegistry+enum.h
ninja: no work to do.
touch src/js/builtins/BunBuiltinNames.h;   ninja -C build/debug -n codegen/InternalModuleRegistry+enum.h
ninja: no work to do.
touch src/jsc/bindings/js_classes.ts;      ninja -C build/debug -n codegen/InternalModuleRegistry+enum.h
ninja: no work to do.
touch src/jsc/bindings/js_classes.ts;      ninja -C build/debug -n codegen/ZigGeneratedClasses.cpp
ninja: no work to do.
touch src/codegen/class-definitions.ts;    ninja -C build/debug -n codegen/ZigGeneratedClasses.cpp
ninja: no work to do.
# controls: inputs the edges do list
touch src/jsc/bindings/ErrorCode.ts;       ninja -C build/debug -n codegen/InternalModuleRegistry+enum.h
[1/1] gen JS modules (bundle-modules)
touch src/jsc/resolve_message.classes.ts;  ninja -C build/debug -n codegen/ZigGeneratedClasses.cpp
[1/1] gen ZigGeneratedClasses.{cpp,h,rs}

After (bun scripts/build.ts --profile=debug --configure-only, targets brought up to date between touches):

ninja -C build/debug -n
ninja: no work to do.
touch src/jsc/modules/NativeModuleList.h;  ninja -n codegen/InternalModuleRegistry+enum.h
[1/1] gen JS modules (bundle-modules)
touch src/js/builtins/BunBuiltinNames.h;   ninja -n codegen/InternalModuleRegistry+enum.h
[1/1] gen JS modules (bundle-modules)
touch src/jsc/bindings/js_classes.ts;      ninja -n codegen/InternalModuleRegistry+enum.h codegen/ZigGeneratedClasses.cpp
[1/2] gen ZigGeneratedClasses.{cpp,h,rs}
[2/2] gen JS modules (bundle-modules)
touch src/codegen/class-definitions.ts;    ninja -n codegen/ZigGeneratedClasses.cpp
[1/1] gen ZigGeneratedClasses.{cpp,h,rs}
touch src/jsc/bindings/InternalModuleRegistry.cpp; ninja -n codegen/InternalModuleRegistry+enum.h
ninja: no work to do.

Test output on main's codegen.ts (with only the two export keywords added so the file loads; condensed):

bundle-modules
+   "unexplained": ["src/jsc/bindings/InternalModuleRegistry.cpp"],
+   "untracked": ["src/jsc/bindings/js_classes.ts", "src/jsc/modules/NativeModuleList.h", "src/js/builtins/BunBuiltinNames.h"],
generate-classes
+   "untracked": ["src/codegen/class-definitions.ts", "src/codegen/helpers.ts", "src/jsc/bindings/js_classes.ts"],
Earlier revision of this PR

The first push only added the three files (and js_classes.ts to generate-classes) and kept InternalModuleRegistry.cpp with a corrected comment; the test pinned the file names. Review pointed out that a dead input on a 15+ second step has a cost and no rationale, and that a name-pinning test only guards against re-deleting these lines, so the input was dropped and the test now derives the expected inputs from the scripts' imports, which is also what surfaced class-definitions.ts / helpers.ts on the generate-classes edge.

Related but separate: #38038 (deleted glob inputs), #38035 (undeclared bindgen outputs), #37992 (PCH). The same import-closure check applied to the other edges finds more of this class (bindgen does not list bindgen-lib*.ts; runtime.out.js and bake do not list src/runtime.js; several small steps do not list helpers.ts), and generate-classes also reads the src/runtime Rust tree for generated_classes.rs without listing it; both are filed separately rather than widened into this PR, and the test table here is where their rows go.


[stamp-90s] gate passed · iteration 3 · 4 files touched

passes on PR (with fix)
Test-only change.

Debug/ASAN (expected pass):
$ bun bd test 'test/internal/build-codegen-extra-inputs.test.ts'
$ BUN_DEBUG_QUIET_LOGS=1 bun scripts/build.ts --profile=debug --quiet test test/internal/build-codegen-extra-inputs.test.ts
bun test v1.4.0 (dde4235ba)

test/internal/build-codegen-extra-inputs.test.ts:
(pass) codegen edges carry what their scripts import or open, and nothing else by hand > bundle-modules [1662.88ms]
(pass) codegen edges carry what their scripts import or open, and nothing else by hand > generate-classes [238.08ms]
(pass) codegen edges carry what their scripts import or open, and nothing else by hand > generate-classes passes only the .classes.ts files on the command line [141.35ms]

 3 pass
 0 fail
 5 expect() calls
Ran 3 tests across 1 file. [7.80s]
Exit: 0
diff hotspot
scripts/build/CLAUDE.md                          |   2 +-
 scripts/build/codegen.ts                         |  54 ++++-
 scripts/glob-sources.ts                          |  58 +++--
 test/internal/build-codegen-extra-inputs.test.ts | 289 +++++++++++++++++++++++
 4 files changed, 364 insertions(+), 39 deletions(-)

gate history · 2 passed · 0 rejected · iteration 3

evidence per changed file
file                                              reads  edits  tests
scripts/build/CLAUDE.md                               2      4      0
scripts/build/codegen.ts                              0      0      0
scripts/glob-sources.ts                               0      0      0
test/internal/build-codegen-extra-inputs.test.ts      0      0      0

root cause · written by the author bot

The build's codegen step only tracked its primary globbed source files as inputs, so edits to additional files that codegen reads, such as templates and supporting scripts, did not invalidate the cached outputs and stale generated code could ship. The fix extends the source globbing and codegen dependency tracking so these extra input files are registered alongside the globbed sources, ensuring any change to them triggers regeneration. A regression test verifies that modifying an extra input causes the codegen outputs to be rebuilt.

@coderabbitai

coderabbitai Bot commented Aug 13, 2026 •

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

@robobun, you've reached your PR review limit, so we couldn't start this review.

Next review available in: 36 minutes

Limit details: You’ve used all 5 included reviews currently available under your plan.

Enable usage-based reviews in Billing to review now. Otherwise, wait until the next included review is available.
You're only billed for reviews past your plan's rate limits ($0.25/file).

How can I continue?

After more reviews become available, a review can be triggered using the @coderabbitai review command as a PR comment. Alternatively, push new commits to this PR.

To avoid repeated limits, reduce automatic review volume by pausing incremental auto-reviews earlier, using label-based review opt-in, excluding WIP or generated PR titles, or requesting reviews manually when the PR is ready. If your team needs uninterrupted high-volume reviews, an organization admin can enable usage-based reviews.

How do review limits work?

CodeRabbit enforces per-developer PR review limits for each organization. Most developers receive the normal plan review availability.

For paid Pro and Pro+ PR reviews, CodeRabbit uses adaptive limits for sustained high-volume activity. When a developer's recent PR review activity reaches the 95th percentile or higher among CodeRabbit users, additional reviews become available more gradually as earlier reviews age out of the rolling window.

Please refer docs for additional details.

Review details
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: 8bc9dbb9-edf9-4e69-bbb3-ca63aa368d4d

📥 Commits

Reviewing files that changed from the base of the PR and between 8326d1b and dde4235.

📒 Files selected for processing (4)
  • scripts/build/CLAUDE.md
  • scripts/build/codegen.ts
  • scripts/glob-sources.ts
  • test/internal/build-codegen-extra-inputs.test.ts

Comment @coderabbitai help to get the list of available commands.

@robobun

robobun commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator Author

Status: fix ready for review. Reproduced the stale-codegen behavior and verified the new input lists locally (transcripts in the PR description); review threads are resolved.

CI: every lane that ran is green on builds 94713 and 95707. The only failures are unrelated flaky tests that passed on retry, plus the macOS aarch64 test lanes, which never got an agent in either build. Needs a maintainer to merge.

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — additive build-graph fix that lists three previously-untracked codegen inputs on their ninja edges.

What was reviewed:

  • Verified each newly-listed file is actually read by the codegen scripts (internal-module-registry-scanner.ts:38, bundle-functions.ts:799, replacements.ts:2, generate-classes.ts:4) and that none is covered by the existing sources.js/jsCodegen/zigGeneratedClasses globs.
  • Confirmed the two pre-existing extra inputs (ErrorCode.ts, InternalModuleRegistry.cpp) are preserved in the new extraInputs array and that generate-classes' args command line is unchanged (js_classes.ts is a dep only).
  • Test follows the established test/internal/build-*.test.ts pattern (mock toolchain + resolveConfig + parse Ninja#toString()) and asserts existence, edge membership, and that globbed inputs remain.
Extended reasoning...

Overview

This PR fixes stale-codegen incremental builds by adding three file paths to the input lists of two ninja edges in scripts/build/codegen.ts. emitJsModules gains NativeModuleList.h, BunBuiltinNames.h, and js_classes.ts; emitGeneratedClasses gains js_classes.ts. A shared jsClassesTable(cfg) helper avoids duplicating that path. The two emitters are now exported so a new test/internal/build-codegen-extra-inputs.test.ts can drive them directly against a mock toolchain. One documentation sentence is added to scripts/build/CLAUDE.md.

Security risks

None. This touches only the configure-time ninja-graph generator and adds source-tree file paths to dependency lists. No runtime code, no user input, no network, no crypto.

Level of scrutiny

Low. The change is strictly additive to ninja edge inputs — the existing extraInput/errorCodeInput are preserved verbatim inside the new extraInputs array, and args for generate-classes is untouched (verified by the test's edge.vars.args assertion). Worst case is an unnecessary codegen re-run, which restat = 1 + writeIfNotChanged already prune downstream. I confirmed all five listed files exist on disk and that the four claimed reads occur at the cited lines in src/codegen/. The globs in scripts/glob-sources.ts (src/js/**/*.{js,ts}, src/codegen/*.ts, src/**/*.classes.ts) do not cover any of the three new files.

Other factors

The test file follows the same shape as sibling tests (build-post-link-ordering.test.ts, macos-cross-config.test.ts): fake Toolchain, resolveConfig with an explicit target and linuxSysroot pointed at a tempdir, then inspect Ninja#toString(). The edgeProducing parser inverts ninjaEscapePath ($ , $:, $$) and the build-line continuation exactly as ninja.ts emits them. The test also asserts exists: true for each extra input, so a future rename of any of these files will fail the test rather than silently pointing the edge at a nonexistent path. The comment on InternalModuleRegistry.cpp was corrected (the script does not read it) but the input itself is kept, which is the conservative choice.

@robobun

robobun commented Aug 13, 2026

Copy link
Copy Markdown
Collaborator Author
Updated 12:05 AM PT - Aug 13th, 2026

@robobun, your commit df2e57b is building: #94146

@robobun

robobun commented Aug 13, 2026 •

Copy link
Copy Markdown
Collaborator Author
Updated 12:36 PM PT - Aug 16th, 2026

✅ @robobun, your commit dde4235ba69b4c41abde7c11a05eafea857d81d0 passed in Build #99448! 🎉


🧪   To try this PR locally:

bunx bun-pr 38049

That installs a local version of the PR into your bun-38049 executable, so you can run:

bun-38049 --bun

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Beyond the inline nit (description-only), I also checked: the four claimed reads (NativeModuleList.h in internal-module-registry-scanner.ts:38, BunBuiltinNames.h in bundle-functions.ts:799, js_classes.ts in replacements.ts/bundle-modules.ts/generate-classes.ts) all exist as stated; the glob-sources.ts refactor is a verbatim extraction of the loop body into globSourceList() with globAllSources() now delegating per field, so behavior is preserved; and the test's mockToolchain/resolveConfig shape matches the existing pattern in test/internal/macos-cross-config.test.ts.

Extended reasoning...

The core build fix in codegen.ts is mechanical and verified correct against the actual codegen scripts. The one finding is a description-only nit. I'm not auto-approving because the new test (289 lines) introduces novel infrastructure — a ninja build-line parser (edgeProducing) and an import-closure walker (importClosure) — that, while it follows the established test/internal/build-*.test.ts pattern for the config/toolchain mocking, is substantial enough to warrant a human glance.

Comment thread scripts/build/codegen.ts

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — my earlier note about the description/diff mismatch was addressed (the description now says InternalModuleRegistry.cpp is dropped), and nothing else has changed since.

What was reviewed:

  • emitJsModules / emitGeneratedClasses input-list changes: purely additive dependency tracking (plus one dead input removed); command lines are unchanged, so the codegen scripts run identically.
  • glob-sources.ts: verified the extracted globSourceList body is byte-identical to the old loop body; globAllSources() behavior is unchanged.
  • The new test follows the existing test/internal/build-*.test.ts pattern (same mockToolchain + resolveConfig shape as build-debug-info-flags.test.ts), targets linux-x64 so no host-specific execSync paths in resolveConfig are hit, and confirmed all four newly-listed input files exist on disk.
Extended reasoning...

Overview

This PR adjusts the ninja input lists on two codegen edges in scripts/build/codegen.ts so that files the underlying scripts actually read (NativeModuleList.h, BunBuiltinNames.h, js_classes.ts, and for generate-classes the src/codegen/*.ts helpers) trigger a re-run when edited, and drops one input (InternalModuleRegistry.cpp) that no script reads. It extracts globSourceList() from globAllSources() (pure refactor, body unchanged) so the new test can glob one field cheaply, adds test/internal/build-codegen-extra-inputs.test.ts which derives the expected input set from each script's static import closure, and updates scripts/build/CLAUDE.md.

Security risks

None. This touches only the build-graph description (which files ninja stats before deciding to re-run a codegen step). No runtime code, no user-facing surface, no data handling.

Level of scrutiny

Low. The functional change is confined to inputs: [...] arrays on two n.build() calls — command lines and outputs are untouched, so the codegen scripts execute exactly as before; only when they re-run changes. Adding inputs can only cause more rebuilds (bounded by restat = 1 + writeIfNotChanged), and the one removed input was verified unused. The glob-sources.ts change is a mechanical extract-method with no logic drift. The two new export keywords are inert.

Other factors

  • My previous review's only finding (stale PR description about InternalModuleRegistry.cpp) was addressed by the author and the thread is resolved; the code did not need to change and hasn't since (e1dba26e is a CI retrigger).
  • The new test reuses the established mockToolchain() / resolveConfig() pattern from sibling test/internal/build-*.test.ts files, uses tempDir from harness, and pins the linux-x64 target so resolveConfig's darwin/android execSync branches aren't reached on any host.
  • Verified the four hand-listed input paths exist on disk, and that Ninja exposes the buildDir / rel() / toString() members the test's edge parser relies on.
  • The PR description includes before/after ninja -n transcripts demonstrating the fix and that a warm tree stays no-op.

…e their source globs

bundle-modules.ts reads src/jsc/modules/NativeModuleList.h (native module
ids), src/js/builtins/BunBuiltinNames.h (BunBuiltinNames+extras.h) and
src/jsc/bindings/js_classes.ts ($inherits indices); generate-classes.ts
reads js_classes.ts as well. None of them matched the globs those edges
were built from, so editing one of them alone did not re-run the step and
the generated ids stayed stale until a globbed file was touched. Add them
to the edges' inputs.
…ts in the test

The test now walks each script's static import closure and checks the edge
in both directions: everything imported or opened has to be listed, and
every hand-listed input has to be imported or opened. That turned up
InternalModuleRegistry.cpp on the bundle-modules edge, which no script
reads (it came over from the CMake input list), so it is dropped, and
class-definitions.ts / helpers.ts missing from the generate-classes edge,
which now lists the src/codegen sources like bundle-modules and cppbind do.

glob-sources.ts gains globSourceList(field) so the test can use the real
src/codegen list without globbing every pattern.
@robobun
robobun force-pushed the farm/59f885b5/bundle-modules-extra-inputs branch from e1dba26 to dde4235 Compare August 16, 2026 19:10

@claude claude Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM — the description update from the earlier review round is in place, and no further issues found.

Verified the added inputs against src/codegen/: NativeModuleList.h is read at internal-module-registry-scanner.ts:38, BunBuiltinNames.h at bundle-functions.ts:786, and js_classes.ts is imported by replacements.ts, bundle-modules.ts, and generate-classes.ts; InternalModuleRegistry.cpp appears only in comments. The globSourceList extraction is the loop body moved verbatim, and the generate-classes command line is unchanged (pinned by the third test case). The new test follows the same mock-toolchain / resolveConfig / Ninja pattern as build-codegen-declared-outputs.test.ts.

Extended reasoning...

Overview

This PR touches four files: scripts/build/codegen.ts (adds three files to the bundle-modules ninja edge's inputs, adds sources.jsCodegen + js_classes.ts to the generate-classes edge's inputs, drops the dead InternalModuleRegistry.cpp input, exports two emitters for testing), scripts/glob-sources.ts (extracts the per-field loop body of globAllSources() into an exported globSourceList()), scripts/build/CLAUDE.md (documents the extra-inputs requirement), and a new test at test/internal/build-codegen-extra-inputs.test.ts. No runtime, native, or shipped JS code is touched — this is purely build-graph dependency metadata.

Security risks

None. The change only affects which source files' mtimes ninja compares before deciding to re-run two codegen scripts. No user input, no network, no auth, no crypto.

Level of scrutiny

Low-to-moderate. Ninja edge inputs are conservative by construction: over-declaring causes extra rebuilds, never wrong or missing output; under-declaring (the bug being fixed) causes stale output. The only removal (InternalModuleRegistry.cpp) I confirmed is referenced only in comments in src/codegen/, never opened or imported. The generate-classes edge gains inputs but its args (the actual script command line) is unchanged, and the third test case pins that. The glob-sources.ts change is a mechanical loop-body extraction with byte-identical logic.

Other factors

I grepped src/codegen/ to confirm each claimed dependency: internal-module-registry-scanner.ts:38 reads NativeModuleList.h, bundle-functions.ts:786 reads BunBuiltinNames.h, and replacements.ts / bundle-modules.ts / generate-classes.ts all import js_classes.ts. The new test's structure (mock Toolchain, resolveConfig into a temp dir, Ninja writer, edge parsing) mirrors the existing test/internal/build-codegen-declared-outputs.test.ts almost line-for-line, so it is not novel test infrastructure. The test derives the expected input set from the scripts' static import closure rather than pinning file names, which is more robust than the alternative. My earlier review comment (stale PR description re: InternalModuleRegistry.cpp) was addressed and the thread resolved. CI is green on the latest commit.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant