1. It manages memory through deterministic ownership rules and optional arena allocation. Pointers never outlive the allocator that created them, and the compiler performs lifetime checks to prevent use-after-free or double-free errors.
2. Axe does not use C++-style RAII. It employs deterministic cleanup through defer, which allows resources to be released predictably. Also, objects allocated inside an arena are freed as a group when the corresponding arena is destroyed.
3. Not yet. There is an overload system currently:
How does your compiler manages to perform lifetime check? What if I save a pointer allocated from an arena somewhere, so it outlives it? What if I forgot to free memory via defer?
What about spatial memory safety? Can I read/write outside allowed memory by misusing pointer arithmetic?
What about concurrent access? What if a pointer to some piece of memory is invalidated by some other code?
How does it achieve memory safety?
Does it have destructors and RAII?
Does it have type and function templates?
1. It manages memory through deterministic ownership rules and optional arena allocation. Pointers never outlive the allocator that created them, and the compiler performs lifetime checks to prevent use-after-free or double-free errors.
2. Axe does not use C++-style RAII. It employs deterministic cleanup through defer, which allows resources to be released predictably. Also, objects allocated inside an arena are freed as a group when the corresponding arena is destroyed.
3. Not yet. There is an overload system currently:
How does your compiler manages to perform lifetime check? What if I save a pointer allocated from an arena somewhere, so it outlives it? What if I forgot to free memory via defer?
What about spatial memory safety? Can I read/write outside allowed memory by misusing pointer arithmetic?
What about concurrent access? What if a pointer to some piece of memory is invalidated by some other code?
How fast is it
Very.