object model §6a: kind-2 program-symbol atoms need a traced value word in StaticAtom
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 18/100
Research direction
Start with the object model §6a spec and the StaticAtom struct, which currently holds only hash, string, kind and index. Follow register_one to see how atoms are bound before user code runs, and find where the GC traces pointers. Done means kind-2 atoms are emitted by codegen, bound at module init, traced by the GC, given a fixed layout slot like string keys, and the gc_effects tables are regenerated. The coordinator decision requires a §6a amendment alongside the first step.
Written by the indexing model from the issue text.
Description
Object model §6a, follow-up from step 7.
StaticAtom.kind = 2 (program symbol: a module-level const s = Symbol(desc)) is specified but not implemented. Step 7 deliberately left it out because arrays only need well-known symbols (kind 1, Symbol.iterator).
The missing piece is where the bound value lives. The runtime must bind each program-symbol atom to the symbol it creates at module init. That value is a GC-traced pointer, and StaticAtom today has only hash/string/kind/index.
Decision (coordinator): add a traced value word to StaticAtom together with the first step that needs program-symbol keys, recorded as a §6a amendment at that time. No side table and no pinned symbols.
Done when:
- the codegen emits kind-2 atoms;
register_oneaccepts them and binds them before user code runs;- the GC traces the value word;
- a program-symbol key gets a fixed layout slot like a string key;
- the gc_effects tables are regenerated.
- 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
-
good first issue gpu serve
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 80/100
Maintainers usually reply within 1 day
-
documentation E-easy good first issue help wanted
Difficulty 1/5 1-3 hours Newbie friendliness 91/100
Maintainers usually reply within 1 day
-
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