Merge train 267: 3 PRs (v0.5.1650) — lands with the baseline gate red, owner-approved - #11110
proggeramlug wants to merge 10 commits into
Conversation
|
Navigate logical layers of code changes, visualize relationships, and explore their blast radius. No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (2)
📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (1)
Included review availability: Your plan provides up to 8 included reviews per hour; 4 remain after this review. 📝 WalkthroughWalkthroughThe change removes the bundled decimal.js, big.js, and bignumber.js binding from package resolution, compiler lowering, and runtime support. It adds a separate native signature table for async_hooks and updates related manifests, documentation, tests, and project records. ChangesNative math binding removal
async_hooks native table
Priority: ➖ Normal Estimated code review effort: 4 (Complex) | ~45 minutes Change: Bug fix · Severity of issue fixed: Medium Merge Risk: ⚪ Minimal · up to The dependency updates remain lockfile-compatible, and AsyncLocalStorage.run preserves its store/callback calling convention. No merge-blocking issue is established. 🚥 Pre-merge checks | ✅ 3 | ❌ 2❌ Failed checks (2 warnings)
✅ Passed checks (3 passed)
Full details: Out of Scope Changes checkExplanation The Full details: Docstring CoverageExplanation Docstring coverage is 50.00% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 8 functions across 12 files. (3 skipped: 3 unsupported.)
✨ Finishing Touches🧪 Generate unit tests (beta)
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. Comment |
5af68d1 to
e23cfce
Compare
Bumps [base64](https://github.com/marshallpierce/rust-base64) from 0.22.1 to 0.23.1. - [Changelog](https://github.com/marshallpierce/rust-base64/blob/master/RELEASE-NOTES.md) - [Commits](marshallpierce/rust-base64@v0.22.1...v0.23.1) --- updated-dependencies: - dependency-name: base64 dependency-version: 0.23.1 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit 516c367)
Bumps [env_logger](https://github.com/rust-cli/env_logger) from 0.10.2 to 0.11.11. - [Release notes](https://github.com/rust-cli/env_logger/releases) - [Changelog](https://github.com/rust-cli/env_logger/blob/main/CHANGELOG.md) - [Commits](rust-cli/env_logger@v0.10.2...v0.11.11) --- updated-dependencies: - dependency-name: env_logger dependency-version: 0.11.11 dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> (cherry picked from commit ba22b62)
Fixes #10684 -- the removal is the fix. Native division returned "1" for both 1/3 and 10/4, and new Decimal("123456789123456789").times("987654321987654321") aborted the process (Multiplication overflowed in rust_decimal -- a fixed 96-bit type backing an arbitrary-precision library). instanceof and constructor.name were also broken, the same way as lru-cache's. Removes both copies (crates/perry-ext-decimal/ and the feature-gated crates/perry-stdlib/src/decimal.rs), the dedicated HIR/codegen recognition for Big/Decimal/BigNumber (they share one binding/crate with decimal.js), and every registry row (well_known_bindings.toml, NATIVE_MODULES, the API manifest, stdlib_features.rs, native_result_ledger, workspace-architecture.json, Android stubs). big.js/bignumber.js go with it -- same crate, same defects. Based on PR #10699's branch (fix/10439-native-binding-import-provenance): without that fix, decimal.js/big.js/bignumber.js at their default import name are unreachable regardless of perry.compilePackages, so this removal is not independently mergeable. (cherry picked from commit 19fdac8)
…nding removal) (cherry picked from commit d128c81)
… orphaned decimal.js parity fixture Removes the stray perry-ext-decimal crate entry that survived the rebase's auto-merge in workspace-architecture.json, resyncs Cargo.lock, and recomputes native_result_ledger EXPECTED_ROWS/PROVIDERS (344 rows, 295 providers), the unrooted-local-shape baseline, the generated binding-governance table, and docs/api/perry.d.ts + docs/src/api/reference.md from a fresh perry-dev build. crates/perry-hir/src/lower_patterns.rs: detect_native_instance_expr's new-expression arm went dead. Its match on class_name used to have five live arms (Big/Decimal/BigNumber from this PR, LRUCache/Command from the already- landed #10708/#10712) -- with all five gone the fallback-only match triggered rustc's unreachable_code lint under -D warnings. Simplified the arm to what it now always evaluates to (None after the local-class shadow check), and rewrote the function doc comment to explain why the stub is kept rather than deleted. This is a sequencing interaction the brief calls out explicitly: this file wasn't touched by mysql2/pg/cron's diffs, but decimal.js landing after commander/lru-cache emptied a match neither PR could see on its own. test-files/test_parity_decimal.ts + its test-parity/known_failures.json entry: the original PR left this fixture behind (unlike #10795, which deleted its own moment/cron/backoff test files as part of the same removal). The fixture is now double-dead: decimal.js has no Perry-specific behavior left to validate, and the file was already skip-listed as a broken oracle (node itself can't resolve decimal.js post-npm-ci, #8271) before this PR. (cherry picked from commit 0532209)
(cherry picked from commit 38c961d)
) The prior commit's ledger/baseline/doc numbers were computed against an earlier rebase base and went stale when main moved again. Recomputed from the resolved tree with a fresh release build: - scripts/native_result_ledger.py: EXPECTED_ROWS/PROVIDERS 314 -> 302, 279 -> 267 (-12/-12: the 12 NR_HANDLE_ID-classified js_decimal_* providers and their table rows). Verified: native_result_ledger.py passes with these exact counts on the resolved tree. - workspace-architecture.json: workspace_members/externalize 68 -> 67, 14 -> 13. Verified two independent properties: internal (sum(decision_counts) == workspace_members == len(crates) == 67) and external (the crate name set matches cargo metadata --offline's 67 workspace members exactly). - scripts/unrooted_local_shape_baseline.json: total 390 -> 389, verified with the absolute --check (not just --no-raise-vs). - docs/api/perry.d.ts, docs/src/api/reference.md: regenerated via scripts/regen_api_docs.sh from a freshly built release perry binary; diff is just the two header count lines, tail intact. - Cargo.lock: resynced via cargo metadata --offline, dropping the 4 stale entries (perry-ext-decimal, rust_decimal, borsh, borsh-derive) that survived the conflict resolution. scripts/string_payload_access_baseline.txt needed no change: rerunning --write-baseline against the resolved tree produced an identical file (decimal.rs never held any open-coded StringHeader payload access). (cherry picked from commit 2b68bfa)
ABSOLUTES, not deltas. This branch was cut when main read 314/279; main now reads 321/286 because #11068 (ioredis command dispatch) landed in merge train 259. The recorded 302/267 was therefore stale by construction, and the rebase surfaced it as a conflict rather than silently keeping a wrong number. Re-derived by RUNNING the script on the resolved tree, not by arithmetic: native_result_ledger passed: 309 rows, 274 providers NR_FOREIGN_PTR=4 NR_GCPTR=104 NR_HANDLE_ID=192 NR_JS_VALUE=7 NR_NULLABLE_GCPTR=2 321 -> 309 and 286 -> 274, i.e. the same -12/-12 this removal always claimed; the base moved, the delta did not. Cargo.lock re-resolved from the merged manifests rather than hand-merged. (cherry picked from commit 4c0dca0)
The branch carried a reference.md generated before merge train 259, so it was missing #11068's seven ioredis command entries (hdel/hget/ hgetall/...). Regenerated with scripts/regen_api_docs.sh from a freshly built perry: 2809 -> 2816 entries across 115 modules, 3828 -> 3835 lines. docs/api/perry.d.ts was already correct and is unchanged. Line count checked before and after because this gate has silently TRUNCATED reference.md in the past when CARGO_TARGET_DIR is set out-of-tree; it grew by exactly the 7 added entries. (cherry picked from commit f5524cc)
e23cfce to
ec52436
Compare
|
Superseded by merge train 270 (#11128 — see below), which carries all three of this train's PRs (#11062, #11063, #10704) plus three more. Why folded rather than re-run. Train 268 landed while this was in CI, and the two are not disjoint: both touch Given that, folding into train 270 — which had to be rebased onto the new main anyway — validates all six PRs in one CI cycle instead of two. This train's own result, for the record. After the re-run it was clean apart from two explained steps: Its one earlier red, Nothing is lost — the branch stays until 270 lands. |
Merge train 267 — 3 PRs cherry-picked onto
1dbe9f46ed(v0.5.1647) and validated as one tree, released as v0.5.1650 (1648 and 1649 belong to trains 265 and 266, both ahead of this one).516c3673d4ba22b626b1f5524cc3eaThis train deliberately lands with one required step red
All three edit the root
Cargo.toml, whichbenchmarks/public_baseline.pyfingerprints as aSOURCE_PATHSinput, so they invalidate the published benchmark artifact:Source fingerprint on this head is
f0ba5cb43e…against main's9c87723d7c…. Clearing it properly means a ~2 h measurement on a quiet host pinned to Node v22.23.1 and Bun 1.3.14. The owner has approved landing these three without that regeneration.The consequence, stated so nobody rediscovers it: after this lands the artifact is stale, so this step is red on
mainand therefore on every subsequent PR and train until someone regenerates. That is the state the repo was in for three weeks until it was cleared this morning. Treat it as known-red scenery again, and keep enumerating the failing lint steps rather than the job — this exact red has hidden real failures in the same job before.Everything else is verified green
#10704needed three things re-derived, because it was cut before merge train 259:native_result_ledgerabsolutes. These are chained absolutes, the hazard Every queued binding-removal PR records an absolute workspace count; six are stale and the two correct ones collide with each other #10739 exists for. The branch recorded 302/267 against a main that read 314/279; main now reads 321/286 because fix(ioredis): wire extended command dispatch #11068 landed. Re-derived by running the script on the resolved tree, not by arithmetic:309 rows, 274 providers— the same −12/−12 this removal always claimed. The base moved; the delta did not.docs/src/api/reference.md, which was missing fix(ioredis): wire extended command dispatch #11068's seven ioredis entries: regenerated, 2809 → 2816 entries, 3828 → 3835 lines. Line count checked either side, because that gate has silently truncated this file before.Cargo.lock, twice. Both conflicts were resolved by taking the train's own lock and re-resolving from the merged manifests, never by hand-merging hunks — and I then verified base64 0.23.1 and env_logger 0.11.11 both survived and thatperry-ext-decimalis gone. Taking the other side is what silently dropped seven bumps during train 263's assembly, andlock_no_downgradestayed green through it because nothing had moved backwards — the bumps simply never happened.Closes #10684
Summary by CodeRabbit
New Features
async_hooks, including async context storage and resource methods.Changes
decimal.jsandbignumber.jsno longer use built-in native bindings. Imports resolve to the npm packages and compile from source when available in the project.