The creator of the Odin programming language has a fantastic series on custom memory allocators here: https://www.gingerbill.org/series/memory-allocation-strategies/
Part 3 covers stack allocators, which are basically an arena with the ability to free the most recent allocation. This complicates things quite a bit relative to an arena because you will now need headers before each allocation to track how large it was and such.