perf: generic own-presence probe for unknown-layout receivers (fastify +1.22%, named-array map) after step 7
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Newbie friendliness
- 14/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust, typescript
- Domain
- compilers, performance
Research direction
Start with the own-method and species presence probe on named arrays, and with shaped_symbols::entry and scan_object_fields in the copying nursery, which the issue names as the hot spots. The referenced report and micro benchmark (step7-v5.ts) are needed to reproduce the cost, and they may not be reachable from outside the author's machine. Done means one shape-based presence check that brings the named-array map row and the fastify inject row down without adding a second code path.
Written by the indexing model from the issue text.
Description
Follow-up from object model step 7: a generic own-presence probe for receivers whose layout isn't known statically.
Step 7 (named array properties in a layout) leaves two measured costs, both from the same mechanism. A receiver whose layout isn't known statically pays a full own-method/species presence probe:
- fastify inject +1.22% instructions vs main: symbol-property dispatch (
shaped_symbols::entry) and the named pointer on many short-lived arrays (scan_object_fieldsin the copying nursery). There are 0 full collections in both arms. - named-array
map+17.6% vs plain in the per-array micro (step7-v5.ts). It is still −78.7% vs main. The cost is the own-method and species presence probes on the named array.
The fix must be one generic presence check that reads the layout (shape) and nothing else: no cache, no latch, no name check. It should bring both rows down without a second path.
Evidence: qb6 /root/claude-lanes/step7fin2-REPORT.md and step7fin2-results (profiles and diffs retained).
- Dominant language
- Rust
- Stars
- 4.9k
- Forks
- 166
- Avg merge
- 1h 19m
- Merged PRs (30d)
- 913
Getting set up
- Ships a Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from PerryTS/perry
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
Difficulty 3/5 1-2 days Newbie friendliness 73/100
Maintainers usually reply within 1 day
-
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
git-ai-project/git-ai#2434 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
peteonrails/voxtype#909 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
kucherenko/jscpd#1239 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 69/100
alchemyplatform/rundler#1358 ·
Maintainers usually reply within 3 days