Skip to content

fix(cli): diagnose missing extension archives before linking - #11007

Closed
proggeramlug wants to merge 2 commits into
PerryTS:mainfrom
proggeramlug:fix/11002-ext-archive-diagnostic
Closed

proggeramlug wants to merge 2 commits into
PerryTS:mainfrom
proggeramlug:fix/11002-ext-archive-diagnostic

Conversation

@proggeramlug

Copy link
Copy Markdown
Contributor

Fixes #11002.

The compile pipeline already runs nm on emitted object files and the core archives before invoking the linker. It now records undefined symbols owned by a well-known extension, checks definitions in the selected archives, and reports any missing extension archive with its Cargo package and search-path hint. Network wrappers get a joint build command so they share Tokio with the stdlib archive.

The check runs before stub generation or the final link. It reports one deterministic message per missing archive, and skips symbols already defined by a linked archive.

Validation:

  • cargo check --profile perry-dev -p perry
  • Focused test: missing_ext_archive_names_emitted_symbols_and_their_providers
  • cargo build --profile perry-dev -p perry
  • Source-less PERRY_NO_AUTO_OPTIMIZE=1 compile of a node:net import with core archives only: previously reached ld with undefined _js_ext_net_nm_install; now exits before linking and names libperry_ext_net.a, the joint build command, and PERRY_RUNTIME_DIR / PERRY_LIB_DIR.
  • cargo fmt --all --check, scripts/check_file_size.sh, git diff --check, and raw-handle debt ratchet (906 → 906)

@coderabbitai

coderabbitai Bot commented Sep 22, 2026

Copy link
Copy Markdown

Warning

Review limit reached

Next included review available in 59 seconds.

Check out review usage here.

View limit details

Limit details: You’ve used all 8 included reviews currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: 6c557b25-8240-486d-a9e2-dba40f6253d3

📥 Commits

Reviewing files that changed from the base of the PR and between c7cbc3c and b3c5bae.

📒 Files selected for processing (5)
  • changelog.d/11007-missing-ext-archive-diagnostic.md
  • crates/perry-codegen/src/ext_registry.rs
  • crates/perry/src/commands/compile/optimized_libs.rs
  • crates/perry/src/commands/compile/optimized_libs/tests.rs
  • crates/perry/src/commands/compile/run_pipeline.rs

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@proggeramlug

Copy link
Copy Markdown
Contributor Author

Landed on main in merge train 257 (#11039, v0.5.1640), main 990b3eeada.

Carried at head b3c5bae716. CI on the train head passed every job except the known public-baseline lint step: all 6 gap shards, cargo-test, e2e-scoped, gc-stress, check, warnings and security-audit green.

This train was split by blast radius after an earlier 35-PR assembly hit five gap regressions: it carries only PRs touching no lowering path. Trains rebase-merge, so commits get new SHAs and GitHub cannot mark this merged. Closed as landed.

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

Labels

None yet

Projects

None yet

1 participant