Opened at 2024-05-26T14:34:47Z
Last modified at 2026-05-12T16:58:07Z
#1366 new planned
Allocator Concept
| Reported by: | Ichthyostega | Owned by: | |
|---|---|---|---|
| Priority: | grave | Milestone: | 1alpha |
| Component: | lumiera | Keywords: | interfaces design roadmap C++20 concepts |
| Sub Tickets: | #1245, #1365 | Parent Tickets: | #55, #126, #283, #470, #836, #966, #1430 |
Description
As Lumiera Architect,
I want a coherent scheme to be established,
for all parts of the application reliant on custom memory management.
Background
Generally speaking, the Heap Allocator was significantly improved in terms of performance and is adequate for most occasional allocation demands. However, there are some crucial subsystems, which need to maintain a well defined usage scheme for memory and thus will have to rely on some custom allocation scheme. Notably this includes the Builder, and the active components of the Render Engine.
The C++ standard defines a framework for custom allocators, which is in constant flux and unfortunately limited by historically relevant concerns. This framework must be taken into account, for the obvious reason to allow for STL Containers to be integrated in Lumiera's coherent memory management scheme. This standard defines a baseline, but is not well suited to serve as a common anchor or framework for memory management, since it is too much flexible and low-level and suffers from alignment to legacy concerns.
Taking current architectural understanding into account, a scheme for memory allocation and object fabrication should observe the following guidelines
- Separate the object lifecycle management from the memory allocation
- Memory Allocators should be composable building blocks.
- The application framework should rely on a Factory Concept rather than depending on explicitly given interfaces.
- Specific front-end handles should be provided on top of the Factory to express dedicated usage protocols
- Adapters towards the C++ standard allocator should be provided
Change history (4)
comment:1 by , at 2024-11-19T15:54:00Z
| blocking: | 55, 126, 283, 966 → 55, 126, 283, 470, 966 |
|---|
comment:2 by , at 2025-12-25T00:00:00Z
| blockedby: | 1245, 1365 |
|---|---|
| blocking: | 55, 126, 283, 470, 966 |
| Parent Tickets: | → 55, 126, 283, 470, 966 |
| Sub Tickets: | → 1245, 1365 |
comment:3 by , at 2026-05-11T23:45:39Z
| Parent Tickets: | 55, 126, 283, 470, 966 → 55, 126, 283, 470, 836, 966 |
|---|
comment:4 by , at 2026-05-12T16:58:07Z
| Parent Tickets: | 55, 126, 283, 470, 836, 966 → 55, 126, 283, 470, 836, 966, 1430 |
|---|
Attach to parent #1430 (Render-buffer pools).

Attach to parent #836 (preliminary solution for critical allocations).