Arena API Reference

Region-based memory allocator - fast batch allocation, single free

Import

U std/arena

Struct

S Arena {
    chunks: i64,       # Chunk pointer list
    chunk_count: i64,
    chunk_size: i64,   # Size per chunk (default 64KB)
    current: i64,      # Current chunk
    offset: i64        # Offset in current chunk
}

Methods

MethodSignatureDescription
newF new() -> ArenaCreate with 64KB chunks
with_chunk_sizeF with_chunk_size(size: i64) -> ArenaCustom chunk size
allocF alloc(&self, size: i64) -> i64Allocate bytes
alloc_zeroedF alloc_zeroed(&self, size: i64) -> i64Allocate zero-initialized bytes
alloc_arrayF alloc_array(&self, count: i64, item_size: i64) -> i64Allocate array
growF grow(&self) -> i64Grow arena by adding new chunk
total_allocatedF total_allocated(&self) -> i64Get total allocated bytes
total_capacityF total_capacity(&self) -> i64Get total capacity
resetF reset(&self) -> i64Reset (reuse memory)
dropF drop(&self) -> i64Free all chunks

Free Functions

FunctionSignatureDescription
arena_newF arena_new() -> ArenaCreate arena (convenience)
arena_allocF arena_alloc(arena: Arena, size: i64) -> i64Allocate (convenience)
arena_resetF arena_reset(arena: Arena) -> i64Reset (convenience)
arena_dropF arena_drop(arena: Arena) -> i64Drop (convenience)

Usage

U std/arena

F main() -> i64 {
    a := Arena::new()
    ptr1 := a.alloc(64)   # Fast allocation
    ptr2 := a.alloc(128)
    a.drop()               # Frees everything at once
    0
}