It's not production-ready and isn't a GC'd language, but Zig's approach might be to your taste:
> Zig programmers must manage their own memory, and must handle memory allocation failure.
> This is true of the Zig Standard Library as well. Any functions that need to allocate memory accept an allocator parameter. As a result, the Zig Standard Library can be used even for the freestanding target.
> Zig programmers must manage their own memory, and must handle memory allocation failure.
> This is true of the Zig Standard Library as well. Any functions that need to allocate memory accept an allocator parameter. As a result, the Zig Standard Library can be used even for the freestanding target.
https://ziglang.org/learn/overview/#manual-memory-management