btree-free-list-intrusive

Status: IN

Freed pages store the "next free" pointer in their own body at `HEADER_SIZE` offset, forming an intrusive singly-linked list with no separate allocator data structure.

Source: entries/2026/05/28/b-tree-storage-engine-btree.md

Example

def free_page(self, page_num):
    data = struct.pack(HEADER_FMT, 0, 0) + struct.pack(">I", free_head)
    self.write_page(page_num, data)  # freed page stores next-free pointer
    self.write_meta(..., new_head=page_num)

JSON