Skip to content

style: clear two of the lint backlog items blocking every merge (fmt + GC knob kill-policy) - #7042

Merged
proggeramlug merged 2 commits into
mainfrom
fix/lint-fmt-backlog
Jul 30, 2026
Merged

style: clear two of the lint backlog items blocking every merge (fmt + GC knob kill-policy)#7042
proggeramlug merged 2 commits into
mainfrom
fix/lint-fmt-backlog

Conversation

@proggeramlug

@proggeramlug proggeramlug commented Jul 30, 2026

Copy link
Copy Markdown
Contributor

lint is red repo-wide, so nothing merges. The failures are stacked — each one hides the next, which is why they surfaced one at a time:

# step state
1 Public benchmark evidence freshness red — maintainer-only (needs Node v22.23.1 + Bun 1.3.14, AC power, quiet host). #7012 also reports it cannot regenerate from a clean checkout.
2 cargo fmt --all -- --check red — fixed here
3 check_file_size.sh (2000-line cap) red — 7 files, listed below, not touched here
4 addr_class_inventory.py red on native_module/constants.rs:2088

This PR clears (2) and adds the knob kill-policy. It does not pretend to unblock lint on its own — (1) is not delegable and (3)/(4) are separate changes.

Part 1 — rustfmt

Four files had drifted:

crates/perry-codegen/src/lower_call/native/mod.rs
crates/perry-runtime/src/object/global_this/install_static.rs
crates/perry/src/commands/check.rs
crates/perry/src/commands/deps.rs

Pure formatting — the entire diff is four call/macro argument lists being wrapped. +12/−10.

Part 2 — GC knob kill-policy in CLAUDE.md

Every GC env knob either has a required CI arm exercising its OFF state, or it is deleted after one release of soak. At most one diagnostic-only knob, labelled untested.

Written down because this project has paid for unexercised modes three times in the last week:

The principle: a mode that still exists is a decision that hasn't been made. When a knob's off-state stops being exercised, the off-state and the branch behind it should stop compiling, rather than lingering as an untested configuration a future bisect will trust.

For whoever takes item (3)

The 7 files over the cap:

2054  crates/perry-codegen/src/codegen/typed_abi.rs
2135  crates/perry-codegen/src/expr/index_get.rs
2013  crates/perry-runtime/src/array/generic.rs
2081  crates/perry-runtime/src/gc/tests/layout_trace.rs
2210  crates/perry-runtime/src/object/native_module/callable_export_check.rs
2255  crates/perry-runtime/src/object/native_module/callable_exports.rs
2421  crates/perry-runtime/src/object/native_module/constants.rs

Deliberately untouched: splitting seven files is a mechanical but non-trivial change and folding it into a formatting PR would make both unreviewable.

Validation

cargo fmt --all -- --check clean on this branch. No semantic change, so no behavioural verification is claimed.

Summary by CodeRabbit

  • Documentation

    • Added binding guidance for managing and testing garbage-collection environment toggles.
    • Documented requirements for removing stale or untested diagnostic modes.
  • Style

    • Applied Rust formatting fixes across several files and test assertions.
    • Updated the changelog to record formatting-only maintenance with no behavior changes.

Ralph Küpper added 2 commits July 30, 2026 07:28
cargo fmt --all -- --check was failing on main for:
  crates/perry-codegen/src/lower_call/native/mod.rs
  crates/perry-runtime/src/object/global_this/install_static.rs
  crates/perry/src/commands/check.rs
  crates/perry/src/commands/deps.rs

Pure formatting -- line breaking only, no semantic change; the diff is four
call/macro argument lists being wrapped.

These sit behind the stale public-benchmark-baseline step in the lint gate, so
they were invisible until that failure was investigated. Part of clearing the
lint backlog that currently blocks every merge.
…figuration

Every GC env knob either has a required CI arm exercising its OFF state, or it
is deleted after one release of soak. At most one diagnostic-only knob, labelled
untested.

Written down because the project has paid for unexercised modes three times:
PERRY_GC_FORCE_EVACUATE was inert for every gc()-driven test (#6942/#6946); the
matrix's --pressure knob disabled the path it was measuring (#7024); and
gc_incremental_enabled's doc claimed the opposite of its actual default, which
changed a merge decision (#6987).

A mode that still exists is a decision that hasn't been made.
@coderabbitai

coderabbitai Bot commented Jul 30, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro Plus

Run ID: 7eadc21f-5e20-48ac-8696-e13a30765a38

📥 Commits

Reviewing files that changed from the base of the PR and between 926c11f and 0b0dda9.

📒 Files selected for processing (6)
  • CLAUDE.md
  • changelog.d/7042-lint-fmt-backlog.md
  • crates/perry-codegen/src/lower_call/native/mod.rs
  • crates/perry-runtime/src/object/global_this/install_static.rs
  • crates/perry/src/commands/check.rs
  • crates/perry/src/commands/deps.rs

📝 Walkthrough

Walkthrough

The PR documents binding policy for GC environment knobs and reformats four Rust code locations to satisfy rustfmt checks. It also adds a changelog entry describing the formatting-only updates.

Changes

GC knob policy

Layer / File(s) Summary
GC knob policy documentation
CLAUDE.md
Documents CI coverage, soak-based removal, and limits for untested diagnostic-only GC environment knobs.

Rust formatting cleanup

Layer / File(s) Summary
Rustfmt compliance updates
crates/perry-codegen/src/lower_call/native/mod.rs, crates/perry-runtime/src/object/global_this/install_static.rs, crates/perry/src/commands/check.rs, crates/perry/src/commands/deps.rs, changelog.d/7042-lint-fmt-backlog.md
Reformats call arguments, a method tuple, and test assertions without changing values or behavior; the changelog records the formatting-only updates.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Possibly related PRs

  • PerryTS/perry#7005: Concerns the same Reflect setPrototypeOf entry referenced by one formatting-only change.

Suggested reviewers: andrewtdiz, jdalton

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Title check ✅ Passed The title accurately summarizes the two main changes: rustfmt cleanup and the GC knob kill-policy documentation.
Description check ✅ Passed It covers summary, concrete changes, and validation, though the template's Related issue and checklist sections are omitted.
Docstring Coverage ✅ Passed Docstring coverage is 100.00% which is sufficient. The required threshold is 80.00%.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/lint-fmt-backlog

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
proggeramlug merged commit 4af0e0f into main Jul 30, 2026
28 of 33 checks passed
@proggeramlug
proggeramlug deleted the fix/lint-fmt-backlog branch July 30, 2026 05:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant