fix(release): restore main release readiness - #7218
Conversation
|
Note Reviews pausedIt looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the Use the following commands to manage reviews:
Use the checkboxes below for quick actions:
📝 WalkthroughWalkthroughThe PR updates compiler and runtime behavior, native extensions, benchmark and parity tooling, release sweeps, fixtures, documentation, version metadata, and generated benchmark evidence. ChangesRuntime, compiler, and native extensions
Benchmark, parity, and release execution
Metadata, documentation, and maintenance
Estimated code review effort: 5 (Critical) | ~120 minutes Possibly related issues
Possibly related PRs
Suggested labels: Suggested reviewers: 🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ 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 |
643d969 to
890d711
Compare
There was a problem hiding this comment.
Actionable comments posted: 6
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (2)
crates/perry-runtime/src/fs/dirent.rs (1)
132-141: 🩺 Stability & Availability | 🟠 Major | ⚡ Quick winRoot
options_valuebefore creatingkey.
obj_ptris derived beforejs_string_from_bytesallocateskey. If that allocation triggers moving GC,obj_ptrbecomes stale becauseoptions_with_file_typeshas no handle scope. The laterjs_object_get_field_by_namecan read the old address. Reuseoptions_field_value, which already roots and reloads the object, or add the same root/reload sequence.Based on learnings,
options_field_valueis the GC-safe helper for options-object field reads in this file.Proposed fix
- let key = crate::string::js_string_from_bytes(b"withFileTypes".as_ptr(), 13); - let val = crate::object::js_object_get_field_by_name(obj_ptr, key); - crate::value::js_is_truthy(f64::from_bits(val.bits())) != 0 + options_field_value(options_value, b"withFileTypes") + .map(|val| crate::value::js_is_truthy(f64::from_bits(val.bits())) != 0) + .unwrap_or(false)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry-runtime/src/fs/dirent.rs` around lines 132 - 141, Update the options-object lookup in the surrounding options_with_file_types flow to use the GC-safe options_field_value helper for reading “withFileTypes” instead of deriving obj_ptr before allocating the field-name key. Remove the stale raw-pointer access path and preserve the existing truthiness result.Source: Learnings
crates/perry-runtime/src/array/push_pop.rs (1)
127-153: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winKeep the GC-header boundary probe for low macOS array pointers.
HEAP_MINis0x1000, soarr >= HEAP_MIN + GC_HEADER_SIZEstill admitsHEAP_MIN + GC_HEADER_SIZE, andjs_array_growlater evaluates(*old_header).obj_type. Use the magnitude-classified helper/probe or a small-handle rejection before reading/punting onGcHeaderfields.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry-runtime/src/array/push_pop.rs` around lines 127 - 153, Update the low-pointer guard in js_array_grow so pointers at or near HEAP_MIN are validated with the existing magnitude-classified helper or rejected as small handles before any GcHeader field access. Ensure (*old_header).obj_type is never evaluated for these low macOS array pointers, while preserving growth forwarding for valid heap objects.
🧹 Nitpick comments (8)
tests/test_public_baseline.py (2)
46-48: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winCover the benchmark name that this PR adds.
This PR adds
regex_replacetoEXPECTED_COMPONENT_BENCHMARKS["app_patterns"]. The new test asserts onlybatch, which was already present. Assert the added name too, so the contract test guards the change.💚 Proposed test change
def test_app_pattern_contract_includes_batch_workload(self): self.assertIn("batch", EXPECTED_COMPONENT_BENCHMARKS["app_patterns"]) + self.assertIn("regex_replace", EXPECTED_COMPONENT_BENCHMARKS["app_patterns"])🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/test_public_baseline.py` around lines 46 - 48, Update test_app_pattern_contract_includes_batch_workload to also assert that regex_replace is present in EXPECTED_COMPONENT_BENCHMARKS["app_patterns"], preserving the existing batch assertion.
155-160: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueOptional: also cover a README that has only the end marker.
Line 159 covers a text with
README_STARTonly. The complementary case,README_ENDonly, exercises the other branch of_replace_block.💚 Proposed test addition
with self.assertRaisesRegex(ArtifactError, "markers are missing"): _replace_optional_block(f"{README_START}\n", "generated") + with self.assertRaisesRegex(ArtifactError, "markers are missing"): + _replace_optional_block(f"{README_END}\n", "generated")🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/test_public_baseline.py` around lines 155 - 160, Add the complementary assertion in test_generated_marker_replacement_is_optional_but_not_partial for input containing only README_END, and verify _replace_optional_block raises ArtifactError with the existing "markers are missing" message, matching the README_START-only case.benchmarks/polyglot/bench.py (1)
136-142: 📐 Maintainability & Code Quality | 🔵 Trivial | 💤 Low valueOptional: make
selecteda single type.Line 140 assigns either a
listor theBENCHMARKSdict. The loop works because iterating a dict yields keys. A single type makes the intent explicit.♻️ Proposed refactor
- selected = [sys.argv[1]] if len(sys.argv) == 2 else BENCHMARKS + selected = [sys.argv[1]] if len(sys.argv) == 2 else list(BENCHMARKS) for name in selected: BENCHMARKS[name]()🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@benchmarks/polyglot/bench.py` around lines 136 - 142, Update the selected benchmark construction in the __main__ block so selected always uses one collection type, preferably a list of benchmark names, while preserving the current behavior of selecting either the requested benchmark or all BENCHMARKS entries. Keep the subsequent for name in selected loop invoking BENCHMARKS[name] unchanged.benchmarks/public_baseline.py (1)
501-505: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick winMake a marker-free README visible in the drift gate.
_replace_optional_blockreturns the text unchanged when both markers are absent.checkthen reports no drift. If someone removes the generated block from the README, the public evidence gate stays green and the removal is silent. Emit a warning on stderr in that case so the skip is visible in CI logs.♻️ Proposed change
def _replace_optional_block(text: str, block: str) -> str: """Replace the generated block when present, or preserve an unmarked README.""" if README_START not in text and README_END not in text: + print("warning: README has no generated markers; skipping table check", file=sys.stderr) return text return _replace_block(text, block)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@benchmarks/public_baseline.py` around lines 501 - 505, Update _replace_optional_block so that when both README_START and README_END are absent it emits a warning to stderr before returning the original text unchanged. Keep the existing _replace_block behavior for marked READMEs and ensure the warning clearly indicates the generated block is missing or the README is marker-free.tests/test_compiler_output_regression.py (2)
1358-1378: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winAssert the skip directive on each fixture.
This test checks
parity-skip:only inrun_parity_tests.sh. It does not check the directive ineffect,fastify, ordate_fns. Removing any fixture annotation would leave this test green.Add per-file assertions or exercise the skip-selection path.
Proposed test fix
self.assertIn("parity-skip:", runner) + self.assertIn("parity-skip:", effect) + self.assertIn("parity-skip:", fastify) + self.assertIn("parity-skip:", date_fns)🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/test_compiler_output_regression.py` around lines 1358 - 1378, Strengthen test_parity_sweep_supports_specialized_fixture_exclusions by asserting the parity-skip: directive in each loaded fixture: effect, fastify, and date_fns, alongside their existing reason assertions. Keep the runner and date-fns fixture-file checks unchanged.
1380-1391: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winMake the combined-build guard order-independent.
The negative assertion rejects only one contiguous package order. A combined build with a different
-porder or a shell line continuation would pass.Parse the build invocations and assert that each runtime archive command targets one package.
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@tests/test_compiler_output_regression.py` around lines 1380 - 1391, Update test_parity_sweep_isolates_runtime_archive_features to parse the build invocations in run_parity_tests.sh instead of checking for one exact package-order substring. For each runtime archive build command, assert that its package arguments target exactly one package, regardless of argument order or shell line continuations, while preserving the existing required-command and feature assertions.test-files/test_gap_2159_defineproperty_class_prototype.ts (1)
31-34: 🎯 Functional Correctness | 🔵 Trivial | 💤 Low valueRemove troubleshooting output from the parity fixture.
test-gap-2159is tracked as a standing parity gap with no matching expected output. The newconsole.logcalls add runtime stdout that is not part of the fixture contract. Replace them with assertions or disable them through an explicit diagnostic flag.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@test-files/test_gap_2159_defineproperty_class_prototype.ts` around lines 31 - 34, Remove the troubleshooting console.log calls from the then method in the test-gap-2159 parity fixture. Preserve the checks by replacing them with assertions, or guard the diagnostics behind an explicit disabled-by-default diagnostic flag so normal fixture execution produces no extra stdout.crates/perry/src/commands/compile/run_pipeline.rs (1)
105-148: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick winScope synthesized parent arity resolution by the child’s source module.
fill_imported_synthesized_constructor_aritiesreplacesextendsparentconstructor_param_countby finding anyimported_classesentry whose local name matchesparent_name. Since the same name can refer to different classes across modules, a same-named, constructor-less parent from another module can be selected and can propagate the wrong arity to the synthesized standalone constructor. Prefer the same-module parent (usingchild_src_path/source_prefix) before relying on bare-name matching.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry/src/commands/compile/run_pipeline.rs` around lines 105 - 148, Update fill_imported_synthesized_constructor_arities to resolve each child’s parent within the same source module first, using child_src_path/source_prefix to scope candidate imported_classes entries before matching local_alias or name. Only fall back to bare-name matching when no same-module parent is available, preserving the existing ancestor traversal and arity propagation behavior.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@benchmarks/results/public-node-bun-v1.json`:
- Around line 4169-4176: Replace the machine-local absolute Perry executable
paths in the benchmark results, including all identified occurrences, with the
repository-relative form used by the other components, such as
target/release/perry. Preserve the command arguments and ensure no
sandbox-specific temporary directory remains in the published evidence.
- Around line 34-41: Correct the top-level node provenance block in
public-node-bun-v1.json so its version and resolved_executable identify the same
Node build. Align resolved_executable with the recorded v22.23.1 version and the
path used by the component blocks, or regenerate the block from the matching
benchmark run.
In `@CLAUDE.md`:
- Line 11: Revert the release metadata changes: in CLAUDE.md line 11 restore the
pre-PR Current Version, in Cargo.toml line 295 restore
[workspace.package].version to 0.5.1277, and in
changelog.d/7218-release-readiness.md lines 7-8 remove the premature version
statement.
In `@crates/perry-runtime/src/array/immutable.rs`:
- Around line 5-16: Move the arr.is_null() guard in both
js_array_to_sorted_default and js_array_to_sorted_with_comparator to before
calling uint8array_buffer_snapshot(arr), matching js_array_to_reversed. Preserve
the existing null handling and snapshot behavior for non-null arrays.
In `@scripts/release_sweep_tiers/tier01_cargo_workspace.sh`:
- Around line 90-91: Update the cleanup command in the release sweep script to
preserve shared-library artifacts on every platform by excluding .so and .dll
files alongside the existing .dylib exclusion. Keep deleting other executable
files and retain the current error-suppression behavior.
- Around line 53-60: Move the existing set +e before the package_list assignment
that runs cargo metadata, so failures are captured in metadata_rc and execution
reaches the tier’s log-handling and structured-result logic. Keep the current
metadata_rc and rc flow unchanged after disabling errexit.
---
Outside diff comments:
In `@crates/perry-runtime/src/array/push_pop.rs`:
- Around line 127-153: Update the low-pointer guard in js_array_grow so pointers
at or near HEAP_MIN are validated with the existing magnitude-classified helper
or rejected as small handles before any GcHeader field access. Ensure
(*old_header).obj_type is never evaluated for these low macOS array pointers,
while preserving growth forwarding for valid heap objects.
In `@crates/perry-runtime/src/fs/dirent.rs`:
- Around line 132-141: Update the options-object lookup in the surrounding
options_with_file_types flow to use the GC-safe options_field_value helper for
reading “withFileTypes” instead of deriving obj_ptr before allocating the
field-name key. Remove the stale raw-pointer access path and preserve the
existing truthiness result.
---
Nitpick comments:
In `@benchmarks/polyglot/bench.py`:
- Around line 136-142: Update the selected benchmark construction in the
__main__ block so selected always uses one collection type, preferably a list of
benchmark names, while preserving the current behavior of selecting either the
requested benchmark or all BENCHMARKS entries. Keep the subsequent for name in
selected loop invoking BENCHMARKS[name] unchanged.
In `@benchmarks/public_baseline.py`:
- Around line 501-505: Update _replace_optional_block so that when both
README_START and README_END are absent it emits a warning to stderr before
returning the original text unchanged. Keep the existing _replace_block behavior
for marked READMEs and ensure the warning clearly indicates the generated block
is missing or the README is marker-free.
In `@crates/perry/src/commands/compile/run_pipeline.rs`:
- Around line 105-148: Update fill_imported_synthesized_constructor_arities to
resolve each child’s parent within the same source module first, using
child_src_path/source_prefix to scope candidate imported_classes entries before
matching local_alias or name. Only fall back to bare-name matching when no
same-module parent is available, preserving the existing ancestor traversal and
arity propagation behavior.
In `@test-files/test_gap_2159_defineproperty_class_prototype.ts`:
- Around line 31-34: Remove the troubleshooting console.log calls from the then
method in the test-gap-2159 parity fixture. Preserve the checks by replacing
them with assertions, or guard the diagnostics behind an explicit
disabled-by-default diagnostic flag so normal fixture execution produces no
extra stdout.
In `@tests/test_compiler_output_regression.py`:
- Around line 1358-1378: Strengthen
test_parity_sweep_supports_specialized_fixture_exclusions by asserting the
parity-skip: directive in each loaded fixture: effect, fastify, and date_fns,
alongside their existing reason assertions. Keep the runner and date-fns
fixture-file checks unchanged.
- Around line 1380-1391: Update
test_parity_sweep_isolates_runtime_archive_features to parse the build
invocations in run_parity_tests.sh instead of checking for one exact
package-order substring. For each runtime archive build command, assert that its
package arguments target exactly one package, regardless of argument order or
shell line continuations, while preserving the existing required-command and
feature assertions.
In `@tests/test_public_baseline.py`:
- Around line 46-48: Update test_app_pattern_contract_includes_batch_workload to
also assert that regex_replace is present in
EXPECTED_COMPONENT_BENCHMARKS["app_patterns"], preserving the existing batch
assertion.
- Around line 155-160: Add the complementary assertion in
test_generated_marker_replacement_is_optional_but_not_partial for input
containing only README_END, and verify _replace_optional_block raises
ArtifactError with the existing "markers are missing" message, matching the
README_START-only case.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: ffebd7b3-baca-4e65-897f-a0362c0b6a13
⛔ Files ignored due to path filters (2)
Cargo.lockis excluded by!**/*.locktests/release/packages/date-fns-format/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (86)
CLAUDE.mdCargo.tomlbenchmarks/json_polyglot/run.shbenchmarks/polyglot/bench.pybenchmarks/polyglot/run_all.shbenchmarks/public_baseline.pybenchmarks/results/public-node-bun-v1.jsonbenchmarks/suite/results/RESULTS.mdchangelog.d/7218-release-readiness.mdcrates/perry-codegen/src/codegen/method.rscrates/perry-codegen/src/expr/index.rscrates/perry-codegen/src/expr/index_set.rscrates/perry-codegen/src/expr/instance_misc1.rscrates/perry-codegen/src/expr/property_set.rscrates/perry-codegen/src/expr/proven_view_access.rscrates/perry-codegen/src/expr/this_super_call.rscrates/perry-codegen/src/lower_call/native_table/node_core/util_buffer.rscrates/perry-codegen/src/lower_call/new_helpers.rscrates/perry-codegen/src/stmt/mod.rscrates/perry-ext-fastify/src/cluster_bind.rscrates/perry-ext-http/src/server/cluster_bind.rscrates/perry-ext-zlib/src/lib.rscrates/perry-runtime/src/array/alloc.rscrates/perry-runtime/src/array/immutable.rscrates/perry-runtime/src/array/indexing.rscrates/perry-runtime/src/array/push_pop.rscrates/perry-runtime/src/child_process/value_util.rscrates/perry-runtime/src/cluster.rscrates/perry-runtime/src/fs/dirent.rscrates/perry-runtime/src/gc/tests/copying/pointer_publish_7154.rscrates/perry-runtime/src/gc/tests/oldgen.rscrates/perry-runtime/src/iterator_helpers.rscrates/perry-runtime/src/json/mod.rscrates/perry-runtime/src/json/stringify.rscrates/perry-runtime/src/object/class_constructors.rscrates/perry-runtime/src/object/global_this/fetch_globals.rscrates/perry-runtime/src/object/instanceof.rscrates/perry-runtime/src/perf_hooks.rscrates/perry-runtime/src/promise/combinators.rscrates/perry-runtime/src/string/iter_object.rscrates/perry-runtime/src/typedarray/transform.rscrates/perry-runtime/src/util_settracesigint.rscrates/perry-runtime/src/value/dynamic_object.rscrates/perry-stdlib/src/streams/tee.rscrates/perry/src/commands/compile/run_pipeline.rsdocs/src/cli/flags.mddocs/src/container/determinism.mddocs/src/container/overview.mddocs/src/internals/explicit-memory.mddocs/src/language/limitations.mddocs/src/plugins/native-extensions.mddocs/src/testing/node-compat-matrix.mdrun_parity_tests.shscripts/addr_class_allowlist.txtscripts/addr_class_ratchet_baseline.txtscripts/check_file_size.shscripts/release_sweep.shscripts/release_sweep_tiers/tier01_cargo_workspace.shtest-files/demo_claude_code_tui.tstest-files/test_class_field_layout.tstest-files/test_compat_buffers_typed.tstest-files/test_date_fns_format.tstest-files/test_effect_pipe_map.tstest-files/test_fastify_integration.tstest-files/test_gap_2159_defineproperty_class_prototype.tstest-files/test_gap_2514_settracesigint.tstest-files/test_gap_prop_plan_cache_invalidation.tstest-files/test_hono_bundle.tstest-files/test_http_server_unref_5011.tstest-parity/expected/test_ads_compile_smoke.txttest-parity/expected/test_better_sqlite3_raw.txttest-parity/expected/test_better_sqlite3_v8_bridge.txttest-parity/expected/test_fastify_in_process.txttest-parity/expected/test_gap_4510_enum_forward_ref.txttest-parity/expected/test_gap_derived_param_props.txttest-parity/expected/test_gap_enum_in_function_body.txttest-parity/expected/test_issue_1021_rxjs_reexport_methods.txttest-parity/gap_snapshot.jsontest-parity/known_failures.jsontests/release/README.mdtests/release/packages/date-fns-format/entry.tstests/release/packages/date-fns-format/expected.txttests/release/packages/date-fns-format/fixture.shtests/release/packages/date-fns-format/package.jsontests/test_compiler_output_regression.pytests/test_public_baseline.py
💤 Files with no reviewable changes (2)
- test-parity/gap_snapshot.json
- test-parity/known_failures.json
890d711 to
2097d1b
Compare
There was a problem hiding this comment.
Actionable comments posted: 4
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
benchmarks/results/public-node-bun-v1.json (1)
5532-5542: 🗄️ Data Integrity & Integration | 🟡 Minor | ⚡ Quick winPin the HTTP kernel runtimes to the same executables as the other commands.
Lines 5514 and 5519 record absolute, pinned tool paths for
nodeandbun. Lines 5533 and 5539 record barenodeandbunfornode_httpandbun_http. The bare names resolve fromPATH, so the HTTP measurements cannot be attributed to the pinned Node and Bun builds recorded inruntime_metadata. Record the resolved executables for these two commands.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@benchmarks/results/public-node-bun-v1.json` around lines 5532 - 5542, Update the node_http and bun_http command entries in the benchmark results to use the same absolute, pinned Node and Bun executable paths recorded by the node and bun entries near lines 5514 and 5519, while preserving their existing runtime arguments.
♻️ Duplicate comments (3)
scripts/release_sweep_tiers/tier01_cargo_workspace.sh (1)
90-91: 🚀 Performance & Scalability | 🟠 Major | ⚡ Quick winShared-library artifacts are still deleted on Linux and Windows.
-perm -111matches executable.soand.dllfiles. The exclusion at Line 91 preserves only macOS.dylibfiles. The host case at Lines 32-33 supportslinuxandwindows, so this path removes proc-macro and dynamic-library artifacts between package tests. That forces avoidable rebuilds for each later package.♻️ Proposed fix to preserve shared libraries
find "$REPO_ROOT/target/release/deps" -maxdepth 1 -type f -perm -111 \ - ! -name '*.dylib' -delete 2>/dev/null || true + ! -name '*.dylib' ! -name '*.so' ! -name '*.dll' \ + -delete 2>/dev/null || true🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@scripts/release_sweep_tiers/tier01_cargo_workspace.sh` around lines 90 - 91, Update the executable-artifact cleanup command in the tier01 workspace sweep to exclude Linux .so and Windows .dll files as well as macOS .dylib files. Preserve deletion of other executable artifacts while retaining shared libraries across package tests.benchmarks/results/public-node-bun-v1.json (2)
4170-4176: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winMachine-local audit paths are still recorded in public evidence.
The Perry command remains
/private/tmp/perry-pr-audit.lhpUNK/repo/target/release/perry. The same absolute sandbox path appears at Lines 4374, 5508, and 5527. Other blocks recordtarget/release/perryor../../target/release/perry, including theruntime_metadataentries at Lines 4192 and 5560 in the same components. The absolute path is not reproducible and it exposes a one-off temporary directory name. Normalize these command paths to repository-relative form.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@benchmarks/results/public-node-bun-v1.json` around lines 4170 - 4176, Replace the machine-local absolute Perry executable paths in the public benchmark evidence, including the entries corresponding to the perry command and the additional occurrences, with the repository-relative form used by nearby entries such as target/release/perry or ../../target/release/perry. Preserve the command arguments and runtime_metadata structure.
36-41: 🗄️ Data Integrity & Integration | 🟠 Major | ⚡ Quick winThe top-level Node provenance is still inconsistent.
Line 36 records
"version": "v22.23.1". Line 41 recordsresolved_executableundernode-v26.5.1-darwin-arm64. Every component block resolves Node to/private/tmp/perry-public-tools/node-v22.23.1-darwin-arm64/bin/node(Lines 3420, 4196, 5564). The published evidence still cannot be attributed to a single Node build. Correct the resolved path or regenerate this block.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@benchmarks/results/public-node-bun-v1.json` around lines 36 - 41, Update the top-level Node provenance block so resolved_executable points to the Node v22.23.1 binary, matching the recorded version and component blocks; alternatively regenerate that block using the consistent Node build.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/perry-ext-axios/src/lib.rs`:
- Around line 11-13: Remove the nested Handle::current().block_on usage from the
spawn_blocking_with_reactor closure. Spawn the axios request/fetch work as a
child task on the existing runtime, then keep the match result { ... }
promise-resolution logic in the original closure, propagating the child task’s
result without starting a runtime inside an active runtime.
In `@crates/perry/src/commands/compile/link/build_and_run.rs`:
- Around line 924-926: Update the Windows UI linking flow around ctx.needs_ui so
WebView2LoaderStatic.lib is added after the perry_ui_windows.lib input (ui_lib),
preserving the required left-to-right archive resolution order; alternatively
force-include the loader archive.
In `@scripts/release_sweep_tiers/tier01_cargo_workspace.sh`:
- Around line 73-92: Track the number of packages actually tested within the
package-processing loop, incrementing the counter only after a package passes
the existing empty and is_excluded checks. After the loop driven by package_list
completes, fail the tier when the counter is zero so empty or fully excluded
package lists cannot report success; preserve the existing package failure
handling and rc behavior otherwise.
In `@test-files/test_parity_crypto.ts`:
- Around line 166-175: Make the crypto parity fixture fail when required
algorithms are unavailable: after each lookup in the getCiphers, getCurves, and
getHashes try blocks, enforce that aes-256-gcm, prime256v1, and sha256 are
present respectively by asserting or throwing when includes returns false. Keep
the existing diagnostic logging and error handling.
---
Outside diff comments:
In `@benchmarks/results/public-node-bun-v1.json`:
- Around line 5532-5542: Update the node_http and bun_http command entries in
the benchmark results to use the same absolute, pinned Node and Bun executable
paths recorded by the node and bun entries near lines 5514 and 5519, while
preserving their existing runtime arguments.
---
Duplicate comments:
In `@benchmarks/results/public-node-bun-v1.json`:
- Around line 4170-4176: Replace the machine-local absolute Perry executable
paths in the public benchmark evidence, including the entries corresponding to
the perry command and the additional occurrences, with the repository-relative
form used by nearby entries such as target/release/perry or
../../target/release/perry. Preserve the command arguments and runtime_metadata
structure.
- Around line 36-41: Update the top-level Node provenance block so
resolved_executable points to the Node v22.23.1 binary, matching the recorded
version and component blocks; alternatively regenerate that block using the
consistent Node build.
In `@scripts/release_sweep_tiers/tier01_cargo_workspace.sh`:
- Around line 90-91: Update the executable-artifact cleanup command in the
tier01 workspace sweep to exclude Linux .so and Windows .dll files as well as
macOS .dylib files. Preserve deletion of other executable artifacts while
retaining shared libraries across package tests.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: ce4b268c-3474-4ba9-bd93-6e989f346bf2
⛔ Files ignored due to path filters (2)
Cargo.lockis excluded by!**/*.locktests/release/packages/date-fns-format/package-lock.jsonis excluded by!**/package-lock.json
📒 Files selected for processing (164)
.github/workflows/gc-ratchet.ymlCLAUDE.mdCargo.tomlbenchmarks/json_polyglot/run.shbenchmarks/polyglot/bench.pybenchmarks/polyglot/run_all.shbenchmarks/public_baseline.pybenchmarks/results/public-node-bun-v1.jsonbenchmarks/suite/results/RESULTS.mdchangelog.d/7218-release-readiness.mdcrates/perry-codegen/src/codegen/method.rscrates/perry-codegen/src/expr/index.rscrates/perry-codegen/src/expr/index_set.rscrates/perry-codegen/src/expr/instance_misc1.rscrates/perry-codegen/src/expr/new_dynamic.rscrates/perry-codegen/src/expr/property_set.rscrates/perry-codegen/src/expr/proven_view_access.rscrates/perry-codegen/src/expr/static_field_meta.rscrates/perry-codegen/src/expr/this_super_call.rscrates/perry-codegen/src/lower_call/native_table/node_core/util_buffer.rscrates/perry-codegen/src/lower_call/new_helpers.rscrates/perry-codegen/src/stmt/mod.rscrates/perry-ext-axios/src/lib.rscrates/perry-ext-fastify/src/cluster_bind.rscrates/perry-ext-http/src/server/cluster_bind.rscrates/perry-ext-jsonwebtoken/src/lib.rscrates/perry-ext-zlib/src/lib.rscrates/perry-hir/src/lower/const_fold_fn.rscrates/perry-hir/src/lower/context.rscrates/perry-hir/src/lower/expr_call/intrinsics.rscrates/perry-hir/src/lower/expr_call/intrinsics/apply_call.rscrates/perry-hir/src/lower/lower_expr/arm_optchain.rscrates/perry-hir/src/lower/lowering_context.rscrates/perry-hir/src/lower/pre_scan.rscrates/perry-runtime/src/array/alloc.rscrates/perry-runtime/src/array/immutable.rscrates/perry-runtime/src/array/indexing.rscrates/perry-runtime/src/array/push_pop.rscrates/perry-runtime/src/child_process/value_util.rscrates/perry-runtime/src/cluster.rscrates/perry-runtime/src/fs/dirent.rscrates/perry-runtime/src/gc/tests/copying/pointer_publish_7154.rscrates/perry-runtime/src/gc/tests/oldgen.rscrates/perry-runtime/src/iterator_helpers.rscrates/perry-runtime/src/json/mod.rscrates/perry-runtime/src/json/stringify.rscrates/perry-runtime/src/object/class_constructors.rscrates/perry-runtime/src/object/class_registry/construct.rscrates/perry-runtime/src/object/global_this/fetch_globals.rscrates/perry-runtime/src/object/instanceof.rscrates/perry-runtime/src/perf_hooks.rscrates/perry-runtime/src/promise/combinators.rscrates/perry-runtime/src/string/iter_object.rscrates/perry-runtime/src/typedarray/transform.rscrates/perry-runtime/src/util_settracesigint.rscrates/perry-runtime/src/value/dynamic_object.rscrates/perry-stdlib/src/cheerio.rscrates/perry-stdlib/src/common/dispatch/method_dispatch.rscrates/perry-stdlib/src/streams/tee.rscrates/perry/src/commands/compile/link/build_and_run.rscrates/perry/src/commands/compile/link/windows_link.rscrates/perry/src/commands/compile/run_pipeline.rsdocs/src/cli/flags.mddocs/src/container/determinism.mddocs/src/container/overview.mddocs/src/internals/explicit-memory.mddocs/src/language/limitations.mddocs/src/plugins/native-extensions.mddocs/src/testing/node-compat-matrix.mdrun_parity_tests.shscripts/addr_class_allowlist.txtscripts/addr_class_ratchet_baseline.txtscripts/check_file_size.shscripts/release_sweep.shscripts/release_sweep_tiers/tier01_cargo_workspace.shtest-files/demo_claude_code_tui.tstest-files/test_class_field_layout.tstest-files/test_compat_buffers_typed.tstest-files/test_date_fns_format.tstest-files/test_effect_pipe_map.tstest-files/test_fastify_integration.tstest-files/test_gap_2159_defineproperty_class_prototype.tstest-files/test_gap_2514_settracesigint.tstest-files/test_gap_prop_plan_cache_invalidation.tstest-files/test_hono_bundle.tstest-files/test_http_server_unref_5011.tstest-files/test_issue_1120_fastify_buffer.tstest-files/test_issue_1140_buffer_index_runtime.tstest-files/test_issue_1240_fastify_request_json.tstest-files/test_issue_1293_fastify_request_json_as_any.tstest-files/test_issue_1425_gc_unsafe_zones.tstest-files/test_issue_1495_image_systemname.tstest-files/test_issue_1867_audio_playback.tstest-files/test_issue_2022_canvas_draw_image.tstest-files/test_issue_351_media_playback.tstest-files/test_issue_358_perry_tui_phase1.tstest-files/test_issue_358_perry_tui_phase2_counter.tstest-files/test_issue_358_perry_tui_phase3_flexbox.tstest-files/test_issue_358_perry_tui_phase4_5_widgets.tstest-files/test_issue_358_perry_tui_phase4_widgets.tstest-files/test_issue_402_403_404_405_406_holistic.tstest-files/test_issue_402_perry_tui_table_tabs.tstest-files/test_issue_403_404_animated_input.tstest-files/test_issue_405_perry_tui_phase3_5.tstest-files/test_issue_442_inline_button_bg.tstest-files/test_issue_449_new_target.tstest-files/test_issue_5268_native_ctor_prototype_undefined.tstest-files/test_issue_553_mobile_widgets.tstest-files/test_issue_556_table_array.tstest-files/test_issue_556_table_concat.tstest-files/test_issue_610_foreach.tstest-files/test_issue_610_smoke.tstest-files/test_issue_640_navstack_textfield.tstest-files/test_issue_645_chained_method_on_null_obj.tstest-files/test_issue_679_box_runtime_children.tstest-files/test_issue_679_perry_tui_hooks.tstest-files/test_issue_679_perry_tui_text_styling.tstest-files/test_issue_679_useState_gc_root.tstest-files/test_issue_699_runtime_ui_surface.tstest-files/test_issue_763_reactive_textfield.tstest-files/test_jose_sign.tstest-files/test_jose_signverify_roundtrip.tstest-files/test_parity_cluster.tstest-files/test_parity_crypto.tstest-parity/expected-exit/test_issue_645_chained_method_on_null_obj.txttest-parity/expected/test_ads_compile_smoke.txttest-parity/expected/test_better_sqlite3_raw.txttest-parity/expected/test_better_sqlite3_v8_bridge.txttest-parity/expected/test_fastify_in_process.txttest-parity/expected/test_gap_4510_enum_forward_ref.txttest-parity/expected/test_gap_derived_param_props.txttest-parity/expected/test_gap_enum_in_function_body.txttest-parity/expected/test_issue_1021_rxjs_reexport_methods.txttest-parity/expected/test_issue_1140_buffer_index_runtime.txttest-parity/expected/test_issue_1193_cheerio_chain.txttest-parity/expected/test_issue_1723_require_stdlib_subnamespace.txttest-parity/expected/test_issue_2656_weakref_finalization_gc.txttest-parity/expected/test_issue_339_sqlite_stmt_all_bound_params.txttest-parity/expected/test_issue_341_typed_field_native.txttest-parity/expected/test_issue_4034_object_literal_semantics.txttest-parity/expected/test_issue_4449_thread_promise_void.txttest-parity/expected/test_issue_4831_stripe_proto_methods.txttest-parity/expected/test_issue_4913_atomics_cross_thread.txttest-parity/expected/test_issue_4977_gc_toplevel_locals.txttest-parity/expected/test_issue_538_background_tasks.txttest-parity/expected/test_issue_617_inline_await_fetch_with_auth.txttest-parity/expected/test_issue_645_chained_method_on_null_obj.txttest-parity/expected/test_issue_764_state_at_module_init.txttest-parity/expected/test_issue_859_native_promise_pin.txttest-parity/expected/test_issue_915_jwt_sign.txttest-parity/expected/test_issue_915_native_module_after_async_resume.txttest-parity/expected/test_issue_927_jwt_verify_returns_object.txttest-parity/expected/test_issue_pino_sorting_order_undefined.txttest-parity/expected/test_lodash_max_min.txttest-parity/expected/test_lodash_sum.txttest-parity/gap_snapshot.jsontest-parity/known_failures.jsontests/release/README.mdtests/release/packages/date-fns-format/entry.tstests/release/packages/date-fns-format/expected.txttests/release/packages/date-fns-format/fixture.shtests/release/packages/date-fns-format/package.jsontests/test_compiler_output_regression.pytests/test_public_baseline.py
💤 Files with no reviewable changes (3)
- crates/perry-hir/src/lower/lower_expr/arm_optchain.rs
- test-parity/gap_snapshot.json
- test-parity/known_failures.json
🚧 Files skipped from review as they are similar to previous changes (81)
- crates/perry-codegen/src/lower_call/native_table/node_core/util_buffer.rs
- scripts/release_sweep.sh
- docs/src/container/overview.md
- benchmarks/json_polyglot/run.sh
- Cargo.toml
- test-files/demo_claude_code_tui.ts
- test-parity/expected/test_fastify_in_process.txt
- test-parity/expected/test_gap_4510_enum_forward_ref.txt
- crates/perry-codegen/src/expr/index_set.rs
- crates/perry-codegen/src/codegen/method.rs
- crates/perry-codegen/src/expr/proven_view_access.rs
- crates/perry-codegen/src/expr/property_set.rs
- tests/release/packages/date-fns-format/fixture.sh
- crates/perry-codegen/src/expr/index.rs
- test-files/test_gap_2514_settracesigint.ts
- test-parity/expected/test_issue_1021_rxjs_reexport_methods.txt
- tests/test_public_baseline.py
- docs/src/internals/explicit-memory.md
- crates/perry-runtime/src/gc/tests/copying/pointer_publish_7154.rs
- crates/perry-codegen/src/expr/instance_misc1.rs
- crates/perry-ext-http/src/server/cluster_bind.rs
- test-files/test_class_field_layout.ts
- test-files/test_gap_2159_defineproperty_class_prototype.ts
- test-parity/expected/test_gap_enum_in_function_body.txt
- benchmarks/public_baseline.py
- tests/release/packages/date-fns-format/package.json
- test-files/test_effect_pipe_map.ts
- docs/src/container/determinism.md
- test-parity/expected/test_gap_derived_param_props.txt
- crates/perry-runtime/src/util_settracesigint.rs
- crates/perry-codegen/src/expr/this_super_call.rs
- test-parity/expected/test_better_sqlite3_v8_bridge.txt
- crates/perry-runtime/src/array/indexing.rs
- changelog.d/7218-release-readiness.md
- test-files/test_compat_buffers_typed.ts
- tests/test_compiler_output_regression.py
- crates/perry-runtime/src/array/immutable.rs
- crates/perry-runtime/src/json/mod.rs
- crates/perry-stdlib/src/streams/tee.rs
- test-files/test_date_fns_format.ts
- crates/perry-runtime/src/object/instanceof.rs
- crates/perry-runtime/src/iterator_helpers.rs
- crates/perry-ext-fastify/src/cluster_bind.rs
- tests/release/README.md
- docs/src/testing/node-compat-matrix.md
- scripts/addr_class_allowlist.txt
- scripts/check_file_size.sh
- crates/perry-runtime/src/cluster.rs
- test-files/test_gap_prop_plan_cache_invalidation.ts
- test-parity/expected/test_ads_compile_smoke.txt
- crates/perry-runtime/src/object/global_this/fetch_globals.rs
- crates/perry-runtime/src/value/dynamic_object.rs
- crates/perry-runtime/src/typedarray/transform.rs
- crates/perry-codegen/src/lower_call/new_helpers.rs
- tests/release/packages/date-fns-format/entry.ts
- crates/perry-codegen/src/stmt/mod.rs
- crates/perry-runtime/src/child_process/value_util.rs
- docs/src/plugins/native-extensions.md
- benchmarks/polyglot/run_all.sh
- crates/perry-runtime/src/gc/tests/oldgen.rs
- test-files/test_hono_bundle.ts
- CLAUDE.md
- crates/perry-runtime/src/array/push_pop.rs
- crates/perry-runtime/src/json/stringify.rs
- benchmarks/suite/results/RESULTS.md
- crates/perry-runtime/src/string/iter_object.rs
- crates/perry/src/commands/compile/run_pipeline.rs
- crates/perry-runtime/src/perf_hooks.rs
- docs/src/language/limitations.md
- crates/perry-ext-zlib/src/lib.rs
- crates/perry-runtime/src/promise/combinators.rs
- benchmarks/polyglot/bench.py
- run_parity_tests.sh
- crates/perry-runtime/src/fs/dirent.rs
- tests/release/packages/date-fns-format/expected.txt
- docs/src/cli/flags.md
- test-parity/expected/test_better_sqlite3_raw.txt
- crates/perry-runtime/src/object/class_constructors.rs
- crates/perry-runtime/src/array/alloc.rs
- scripts/addr_class_ratchet_baseline.txt
- test-files/test_fastify_integration.ts
There was a problem hiding this comment.
Actionable comments posted: 1
🧹 Nitpick comments (2)
crates/perry-codegen/tests/native_proof_regressions.rs (2)
13235-13238: 📐 Maintainability & Code Quality | 🔵 Trivial | ⚡ Quick winAdd PR-visible unit coverage for this contract.
If this is the only assertion for the no-mask contract, add equivalent coverage in a
#[cfg(test)]unit module. Keep this integration regression test, but do not rely on it as the sole acceptance gate.As per coding guidelines, integration suites under
crates/**/tests/*.rsmust not be the sole PR acceptance coverage; prefer cargo-test-visible unit tests.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry-codegen/tests/native_proof_regressions.rs` around lines 13235 - 13238, Add equivalent unit coverage for the no-mask property-id read contract in a #[cfg(test)] module within the relevant implementation crate, while retaining the existing integration assertion in native_proof_regressions.rs. Ensure the unit test is cargo-test-visible and verifies generated IR does not contain the i64 bitwise-and mask pattern for boxed receiver tags.Source: Coding guidelines
13235-13238: 🎯 Functional Correctness | 🔵 Trivial | ⚡ Quick winScope the negative IR assertion to the property-get call.
ir.contains(" = and i64 ")scans the entire module. An unrelated mask can fail this test without changingjs_object_get_field_by_property_id_f64. Inspect the instructions around that call or assert its receiver operand directly.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry-codegen/tests/native_proof_regressions.rs` around lines 13235 - 13238, Update the regression assertion near the property-get call to inspect only the IR instruction or receiver operand associated with js_object_get_field_by_property_id_f64, rather than scanning the entire ir string. Preserve the check that the boxed receiver tag is not masked by an and i64 operation while ignoring unrelated masks elsewhere in the module.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@crates/perry-runtime/src/symbol/properties.rs`:
- Around line 297-302: Update set_symbol_property around invoke_accessor_setter
to protect values across user code and moving GC: create a RuntimeHandleScope
for the accessor-setter path, root obj_f64 and value_f64, then refresh the
receiver and derive obj_ptr from the rooted value before reading or returning
it. Preserve the existing setter invocation semantics and symbol-property
behavior.
---
Nitpick comments:
In `@crates/perry-codegen/tests/native_proof_regressions.rs`:
- Around line 13235-13238: Add equivalent unit coverage for the no-mask
property-id read contract in a #[cfg(test)] module within the relevant
implementation crate, while retaining the existing integration assertion in
native_proof_regressions.rs. Ensure the unit test is cargo-test-visible and
verifies generated IR does not contain the i64 bitwise-and mask pattern for
boxed receiver tags.
- Around line 13235-13238: Update the regression assertion near the property-get
call to inspect only the IR instruction or receiver operand associated with
js_object_get_field_by_property_id_f64, rather than scanning the entire ir
string. Preserve the check that the boxed receiver tag is not masked by an and
i64 operation while ignoring unrelated masks elsewhere in the module.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 61c7f94e-19f0-4d29-842b-480fcf747c0d
📒 Files selected for processing (3)
crates/perry-codegen/src/expr/property_get/helpers.rscrates/perry-codegen/tests/native_proof_regressions.rscrates/perry-runtime/src/symbol/properties.rs
There was a problem hiding this comment.
Actionable comments posted: 1
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (1)
crates/perry-runtime/src/array/push_pop.rs (1)
129-154: 🩺 Stability & Availability | 🟡 Minor | ⚡ Quick winUse the canonical heap-address classifier for the forwarding-stub guard.
This duplicates the native-handle-band rule. After
clean_arr_ptr_mut, usecrate::value::addr_class::is_plausible_heap_addr(arr as usize)for the growth forwarding-stub guard instead of the inlineHEAP_MINcomparison.🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@crates/perry-runtime/src/array/push_pop.rs` around lines 129 - 154, In the growth forwarding-stub guard after clean_arr_ptr_mut, replace the duplicated platform-specific HEAP_MIN constants and comparison with crate::value::addr_class::is_plausible_heap_addr(arr as usize). Remove the inline address-range configuration and preserve the existing guard behavior around forwarding-stub installation.Source: Learnings
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@scripts/release_sweep_tiers/tier01_cargo_workspace.sh`:
- Around line 53-55: Update the sourced script’s completion path after the
metadata-failure handling to restore the caller’s prior errexit state before
returning. Preserve the intentional set +e behavior during structured-result
processing, and ensure normal completion does not leave callers that entered
with errexit disabled or enabled in the wrong state.
---
Outside diff comments:
In `@crates/perry-runtime/src/array/push_pop.rs`:
- Around line 129-154: In the growth forwarding-stub guard after
clean_arr_ptr_mut, replace the duplicated platform-specific HEAP_MIN constants
and comparison with crate::value::addr_class::is_plausible_heap_addr(arr as
usize). Remove the inline address-range configuration and preserve the existing
guard behavior around forwarding-stub installation.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro Plus
Run ID: 20101dfc-74e4-4723-91ff-0c42a23563f1
📒 Files selected for processing (17)
benchmarks/results/public-node-bun-v1.jsoncrates/perry-ext-axios/src/lib.rscrates/perry-hir/src/lower/const_fold_fn.rscrates/perry-runtime/src/array/immutable.rscrates/perry-runtime/src/array/push_pop.rscrates/perry-runtime/src/array/tests.rscrates/perry-runtime/src/fs/dirent.rscrates/perry-runtime/src/symbol/properties.rscrates/perry-runtime/src/value/dynamic_object.rscrates/perry/src/commands/compile/link/build_and_run.rsscripts/addr_class_ratchet_baseline.txtscripts/release_sweep_tiers/tier01_cargo_workspace.shtest-files/test_issue_340_axios_response_props.tstest-files/test_issue_915_jwt_sign_after_async_route.tstest-files/test_parity_crypto.tstest-parity/expected/test_jwt_sign_dynamic_alg.txttests/test_public_baseline.py
💤 Files with no reviewable changes (1)
- scripts/addr_class_ratchet_baseline.txt
🚧 Files skipped from review as they are similar to previous changes (8)
- test-files/test_parity_crypto.ts
- crates/perry-runtime/src/symbol/properties.rs
- crates/perry-hir/src/lower/const_fold_fn.rs
- tests/test_public_baseline.py
- crates/perry-runtime/src/fs/dirent.rs
- crates/perry-runtime/src/array/immutable.rs
- crates/perry-runtime/src/value/dynamic_object.rs
- benchmarks/results/public-node-bun-v1.json
|
@coderabbitai review |
✅ Action performedReview finished.
|
306b1d2 to
2170f93
Compare
Homogeneous-array shape templates can only read inline object slots. Fall back to the generic object walker when keys outnumber inline fields so parsed records retain overflow properties. Add a regression test. Make public JSON evidence assembly propagate checksum failures, and let the Python polyglot runner select one cell instead of rerunning the entire suite for every metric.
8f9d1f5 to
9bec180
Compare
Summary
Restores release readiness after the contributor PR queue landed: fixes compiler/runtime regressions, synchronizes generated evidence, and makes the release/parity gates fail honestly.
Changes
Related issue
Release-readiness consolidation; includes regressions covered by #340, #3558, #3580, #562, #915, and #1074.
Test plan
Completed locally:
In progress: full pre-tag/release tiers and the GitHub PR matrix. This PR will be force-merged only after the release gates are green or independently reproduced locally where the macOS runner queue is unavailable.
Screenshots/output
Not applicable; this is compiler/runtime and release-tooling work. Test output is recorded in the PR checks and release-sweep reports.
Checklist
Summary by CodeRabbit
New Features
Uint8Arraysorting and reversing to return independent copies.Bug Fixes
Documentation