[P3][ECS] Evaluate sparse-set storage for extremely sparse/tag-heavy data
Maintainers usually reply within 1 day
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 48/100
Research direction
Start with crates/crabby_ecs/src/storage.rs and crates/crabby_ecs/src/query.rs, then review #132 for the workload to extend. Benchmark sparse/tag-heavy churn against current archetype storage across memory, iteration, mutations, and filtering, and document the public query API implications and a keep/reject recommendation with maintenance costs. Keep archetype storage as the default; no storage rewrite is part of this investigation.
Written by the indexing model from the issue text.
Description
Problem and goal
Archetype-based storage is a strong default; hybrid storage should only be added if a real workload requires it.
Implementation scope
- Construct a realistic workload where sparse, optional or frequently modified components cause archetype proliferation.
- Benchmark a small isolated sparse-set prototype vs current columnar archetypes.
- Measure memory, iteration, mutations, filtering and integration complexity.
- Write a keep/reject recommendation with maintenance cost.
Acceptance criteria
- Decision supported by equivalent benchmarks.
- No default storage rewrite as part of the investigation.
- Public query API implications documented.
Relevant code
crates/crabby_ecs/src/storage.rscrates/crabby_ecs/src/query.rs
Dependencies and notes
Research only; not part of the near-term roadmap.
Compatibility: preserve existing public Rust and C/C++ APIs unless an independently approved design explicitly requires a breaking change. Collect correctness results and before/after measurements for performance-oriented changes.
Source audit and first contribution (2026-11-09)
Reviewed against source baseline df5c1d4 and merged implementation PRs through #167. The full issue acceptance criteria are still open; this audit does not mark the task complete. Existing priority is unchanged.
Starting point: Archetype storage remains the default; no evidence in this audit justifies replacing it.
First slice: Extend #132 with a realistic sparse/tag-heavy churn workload before a small hybrid-storage prototype.
Dependencies and coordination: Retain P3. Measure full mutation/query/memory costs and distinguish #144 membership indexing.
Focused Rust-only PRs are welcome; a contributor need not complete this entire issue in one PR or also implement C/C++ bindings and guide chapters. Maintainers coordinate scoped documentation/native follow-ups. Preserve existing compatibility and supply tests/evidence relevant to the slice.
- Dominant language
- Rust
- Stars
- 4
- Forks
- 0
- Avg merge
- 45m
- Merged PRs (30d)
- 199
Getting set up
- No 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 ponkoengine/ponko
-
area: ecs bug priority: P2 type: testing
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
ponkoengine/ponko#321 ·
Maintainers usually reply within 1 day
-
area: rendering bug priority: P2 type: testing
Difficulty 4/5 3-5 days Newbie friendliness 44/100
ponkoengine/ponko#322 ·
Maintainers usually reply within 1 day
-
area: build area: platforms help wanted priority: P3 type: feature
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ponkoengine/ponko#282 ·
Maintainers usually reply within 1 day
-
area: tooling priority: P2 type: feature
Difficulty 5/5 Over a week Newbie friendliness 35/100
ponkoengine/ponko#262 ·
Maintainers usually reply within 1 day
-
area: build documentation help wanted priority: P2 type: feature
Difficulty 4/5 3-5 days Newbie friendliness 45/100
ponkoengine/ponko#246 ·
Maintainers usually reply within 1 day
All issues in ponkoengine/ponko
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
design-data-spec
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
adobe/spectrum-design-data#1744 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day
-
defect
Difficulty 2/5 1-3 hours Newbie friendliness 67/100
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
Maintainers usually reply within 1 day