Born-old prototype births and old-arena teardown cost +0.8% on commander (no minor to amortise)
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 12/100
- Issue type
- Refactor
- Clarity
- Mostly clear
- Activity status
- Active
- Tech stack
- rust, typescript
- Domain
- compilers, performance
Research direction
Start with the follow-up to #12507, which introduced the born-old prototype path, and the commander benchmark row showing +0.80% instructions:u. The payload names the costs to study: prototype births for class, builtin, class-expression and generator realm intrinsics, default function prototypes of old functions, and old-arena teardown at exit. Done means bulk old-page allocation at startup, no per-object work at exit, and commander back at or below base with the other scoreboard rows unchanged. This needs familiarity with the runtime's allocator and GC, so it is not a first task.
Written by the indexing model from the issue text.
Description
Follow-up to #12507 (registry-free site memos, born-old prototypes, owner decision 121 O3).
commander runs no minor GC. After #12507 it is +0.80% instructions:u (n=5), from two costs:
- startup bookkeeping for prototypes born in old space (class, builtin, class-expression, generator realm intrinsics, default function prototypes of old functions);
- old-arena teardown at exit.
With no minor, nothing amortises these, unlike fastify, zod and tsc, which are flat or faster.
Goal: make born-old prototype birth and old-arena teardown O(1) per object. Bulk old-page allocation for the realm intrinsics at startup, and no per-object work at exit. Witness: commander instructions back to ≤ base, with the other scoreboard rows unchanged.
- Dominant language
- Rust
- Stars
- 4.9k
- Forks
- 166
- Avg merge
- 2h 54m
- Merged PRs (30d)
- 922
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 4/5 3-5 days Newbie friendliness 35/100
Maintainers usually reply within 1 day
-
bug
Difficulty 3/5 1-2 days Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
Maintainers usually reply within 1 day
Similar issues
-
documentation
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
charles-hood/DiagramCraft#73 ·
-
Difficulty 1/5 1-3 hours Newbie friendliness 78/100
ontologyportal/sigma-rs#200 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
chipsalliance/caliptra-sw#4311 ·
Maintainers usually reply within 2 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
`image_generation`: `max_retries` is ignored for OpenAI-compatible providers (always 2 retries)Possibly taken @ericz7900 claimed this today. Openllm translation
Difficulty 2/5 1-3 hours Newbie friendliness 77/100
Maintainers usually reply within 1 day