concinnity-memory 0.18.64

Allocation layer for Concinnity: tracking allocator, tagged budgets, arenas, pools
Documentation
  • Coverage
  • 100%
    38 out of 38 items documented1 out of 4 items with examples
  • Size
  • Source code size: 111.83 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 2.45 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Ø build duration
  • this release: 1s Average build duration of successful builds.
  • all releases: 1s Average build duration of successful builds in releases after 2024-10-23.
  • Links
  • Homepage
  • concinnitygg/concinnity
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • gwilkes

The engine's allocation layer: what the process is holding, who is holding it, and the allocators that hand memory out in bulk instead of one block at a time.

Five things live here, in files that do not depend on each other:

counters the global heap's live / peak / churn, sharded per thread and driven by TrackingAlloc (tracking) ledger tagged byte accounting -- textures, meshes, audio, scratch -- in host and device memory, against optional budgets arena a bump allocator for per-frame working memory pool fixed-capacity storage for a population that churns inline_vec a sequence that keeps its first element inline, for the many per-entity collections that hold exactly one thing

The counters measure the Rust heap, not "the engine". They see every allocation the process makes through Rust -- engine, tools, and third-party crates alike -- and none of the memory Rust never allocated: GPU driver allocations, mapped asset files, thread stacks, and the binary image itself. The gap between MemStats::live_bytes and the process resident size is that non-Rust remainder, not untracked engine waste. The ledger is the other half of that story: it explains a portion of both realms by name, and what it explains is always a floor, since it holds only what someone reports.

GPU memory is accounted here and allocated elsewhere, deliberately. A device allocator returns a heap and an offset rather than a pointer, its frees must wait for frames in flight to retire, and its placement rules differ per backend; that belongs behind concinnity-device. What both sides share is the vocabulary they report into, which is what lets one readout show RAM and VRAM through the same lens.