#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 Ichthyostega, at 2024-11-19T15:54:00Z

blocking: 55, 126, 283, 96655, 126, 283, 470, 966

comment:2 by Undercover Agent, 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 Ichthyostega, at 2026-05-11T23:45:39Z

Parent Tickets: 55, 126, 283, 470, 96655, 126, 283, 470, 836, 966

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

comment:4 by Ichthyostega, at 2026-05-12T16:58:07Z

Parent Tickets: 55, 126, 283, 470, 836, 96655, 126, 283, 470, 836, 966, 1430

Attach to parent #1430 (Render-buffer pools).

Note: See TracTickets for help on using tickets.