chore: merge train 231 (v0.5.1610) - #10778
Merged
Merged
Conversation
added 3 commits
September 20, 2026 03:30
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Advanced Run ID: ⛔ Files ignored due to path filters (3)
📒 Files selected for processing (70)
✨ Finishing Touches📝 Generate docstrings
🧪 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 |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Merge train 231 — one PR, released as v0.5.1610.
Contents
refactor(stdlib): remove theqs/fastify/dayjs/date-fns/rate-limiter-flexible/node-cronnative bindings+862 / −11,820 across 73 files. Six bindings, four deleted crates (
date-fnsrode onperry-ext-dayjs;node-cronrode onperry-ext-cron, which stays for thecronpackage). Real npm source now compiles in place of each hand-written Rust reimplementation, per the standing "fix the compiler, never the bindings" decision.typescriptwas pulled back out — deliberately, and it is the interesting partAn earlier revision removed
typescripttoo. Removing that binding makes perry execute realtypescript.jsfor the first time:well_known.rsroutes a bareimport 'X'to the bundled wrapper even whennode_modules/Xis on disk, so the real file is unreachable today. It throws —TypeError: Cannot convert undefined or null to objectinsideInferredProject.addRoot, three frames deep in realtypescript.js.The defect is pre-existing and reproducible on
main, not caused by the removal. Butimport 'typescript'works for users today and would start throwing, so shipping the removal would ship a regression. The binding, crate, manifest rows and HIR enum folding are all retained unchanged; the removal waits for the compiler fix, tracked in #10772. The campaign's two steps land in the other order for this one package.Two landing risks the author flagged, and how they were checked
Two surviving gap fixtures now exercise the real packages.
test_gap_dayjs_factory_arg.tsandtest_gap_ratelimiter_memory.tsare not ingap_snapshot.json(which holds only failing entries), so both are expected to pass — the gate goes red the moment a real package diverges from the shim it replaced. Both were run against the real packages in this train's sweep, alongsidetest_gap_cron_cronjob; all three PASS.HIR keeps type-name → native-module tagging for removed modules.
FastifyInstance/FastifyRequest/FastifyReplyand("dayjs", "add"|"subtract"|…)survive in fourlower*sites with theirNATIVE_MODULE_TABLErows deleted. Expected dead-but-harmless, and exactly the shape that would let typed fastify behave differently from an untyped probe — so the author's fastify acceptance is deliberately typed, at both 5.10.0 and the 5.12.4 that^5.10.0actually resolves.Absolute counts were re-derived on the assembled tree, not carried from the PR
This PR rebased three times across other binding removals that move the same surfaces, and an earlier revision's counts came through as clean auto-merges while being wrong. Every count was re-run here, on this train's tree, after
typescriptwas pulled back out:workspace_architecture.py --check --print-summarypolicy: OKnative_result_ledger.pyunrooted_local_shape.py --checkOKbinding_pins.mjs --checkperry-ext-typescriptretainedNo
perry-ext-{qs,dayjs,fastify,ratelimit}remains inCargo.lock;perry-ext-typescriptdoes.Validation
Assembled on
bd24fb32a2; PR proven fully represented — zero dropped insertions; no attribution trailers in any commit. All nine cheap gates,cargo check --workspace --all-targetsunder-D warnings, the release build of all five pinned artifacts (byte-identical before and after the gap sweep), every unit suite, and a 7-area gap sweep atPERRY_RUN_TIMEOUT=30with zero unexplained regressions and every area asserted to have run a non-zero number of tests (dayjs1,ratelimiter1,cron1,date16,http8,require5,module14).lintcompleted its full 6-of-6 compile tier with nothing outside the known-red public-baseline step.One abort worth recording: the first sweep attempt returned
rc=2, ran=0on the first area — the harness refused to run becausenode_modulesno longer matchedpackage.json(this PR addsdate-fnsandfastifyas real devDependencies). A refusal that reports zero tests is indistinguishable from a clean area unless something checks; the driver's per-arearan>0assertion is what caught it.npm ci, relaunch, and the preflight now checksnpm ls --depth=0before a build starts rather than after.