Ludic's ECS is already pool-based — the allocator recycles freed entity slots through a freelist (L_alloc pops @L_freen before growing @L_entc), and component storage is fixed per-entity arrays, so spawn/despawn churn (bullet-hell/horde) does no per-spawn heap allocation and cannot fragment. Expose that with a Pool.* namespace so a game can watch reuse: Pool.live (alive now), Pool.free (recycled slots waiting), Pool.reserved (high-water — stays flat across a steady spawn/despawn loop, proving reuse not reallocation), Pool.capacity (the fixed cap). Zero-cost inline reads of the existing counters. Example pool.ludic proves the key property: after despawn+respawn, Pool.reserved() stays 3 (freed slot reused) — prints 0 0 3 3 0 2 1 3 0 3 1. 4 docs pages. Full suite 118/0, goldens byte-identical, fixpoint holds. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> |
||
|---|---|---|
| .. | ||
| asset-preload.md | ||
| camera-zoom.md | ||
| clear-color.md | ||
| controllers-foundation.md | ||
| controllers-npcai.md | ||
| controllers-platformer.md | ||
| controllers-rpg.md | ||
| controllers-shooter.md | ||
| core-components.md | ||
| cursor-capture.md | ||
| entity-pool-stats.md | ||
| index-addr-member-index.md | ||
| input-axis-i.md | ||
| input-edge-fix.md | ||
| input-manager.md | ||
| namespace-block.md | ||
| package-declarable-hooks.md | ||
| package-manager.md | ||
| prebuilt-packages.md | ||
| README.md | ||
| runtime-ships-with-toolchain.md | ||
| sprite-render.md | ||
| spritesheet-atlas.md | ||
| tiled-maps.md | ||
| windowed-quit-keys.md | ||
| world-bounds.md | ||
Changesets
A changeset is one small Markdown file describing a single user-facing change,
dropped in this directory. x release consumes every changeset here into a new
CHANGELOG.md section, bumps VERSION, and deletes the consumed files.
Format
bump: minor
type: feat
One or more lines describing the change, in the past-agnostic imperative used in
the changelog. Markdown is fine.
bump:—major,minor, orpatch(SemVer). The release version is bumped by the highest level among the pending changesets (unlessx release <level>overrides it).type:— the Conventional Commit type (feat,fix,perf,docs, …); it becomes the bold prefix of the changelog bullet.
Adding one
Create a file with a short, unique name, e.g. changes/regex-namespace.md. Any
filename works except this README.md, which the release step always skips.