meowalloc 0.1.0

Toy allocator written in pure rust, with concurrency in mind
#![no_std]
#![feature(allocator_api)]
#![feature(min_generic_const_args)]
#![feature(ptr_alignment_type)]
#![feature(nonzero_ops)]
#![feature(ptr_cast_slice)]
#![expect(incomplete_features)]

mod constants;
mod sys;
mod block;
mod utils;
mod block_store;
mod atomic_bitset;
mod atomic_table;
mod spinlock;
mod superblock;
mod allocator;

pub use crate::{atomic_bitset::WORD_BITS};
pub use crate::allocator::MeowAllocator;

use crate as meowalloc;

#[macro_export]
macro_rules! meow_allocator {
    ($max_superblocks:expr, $max_blocks_per_super:expr) => {
       MeowAllocator<
           $max_superblocks, const { $max_superblocks.div_ceil(meowalloc::WORD_BITS) },
           $max_blocks_per_super, const { $max_blocks_per_super.div_ceil(meowalloc::WORD_BITS) }
       > 
    };
}

pub type MeowAllocator128 = meow_allocator!(128usize, 128usize);