Okay, color me skeptical with respect to type-specific allocators. While, yes, it's memory-safe in the technical sense, [Heartbleed type bugs also technically weren't dependent on buffer overruns](https://flak.tedunangst.com/post/heartbleed-in-rust). Reuse of memory locations even if they do not lead to arbitrary memory corruption still can lead to an invalid program state that can be extremely difficult to debug (I'm saying this, having spent the past weeks trying to hunt down just such a bug in a C pool allocation scheme). I mean, technically you could write a C interpreter in a memory-safe language operating on a byte vector to represent global memory and thus have it memory-safe in the technical sense, but you'd still have the exact same types of bugs.
Also, type-specific allocators would risk far higher fragmentation, as the number of valid layouts for a record rises exponentially with its size. I also have the concern that for those of us who are perfectly fine with garbage collection, this will add measurable semantic complexity to the language with few benefits, if any.
