There is still so much education to do.
Most of the time, their non-presence is due to general pools being just as good most of the time, or people simply not needing them that much with modern GC
Probably lack of experience with machine friendly code.
I don't know how you get that from the thread:
> Arenas are, however, unfeasible to implement in Go because it is a garbage collected language.
> If you are willing to use cgo, google already implemented one for gapid.
> there are other garbage collected languages like D, Nim and C# that offer the language features to do arenas without having to touch any C code.
It seems like the above statements implicitly or explicitly claim that this isn't feasible in Go without C.
Both of us are dismissing the assertion that "Arenas are, however, unfeasible to implement in Go because it is a garbage collected language."
You can do manually memory allocation via a syscall into the host OS, use unsafe to cast memory blocks to the types that you want and then clean it all up with defer, assuming the arena is only usable inside a lexical region, otherwise extra care is needed to avoid leaks.
I _think_ allocating a slice of contiguous bytes and using unsafe pointers should work fine as long as you are very cautious about structs/vars with pointers into the buffer getting freed by the GC.
Go's GC is conservative, so I don't think you need to take any special caution in that regard. I would expect that you just need to take care that your casts are correct (e.g., that you aren't casting overlapping regions of memory as distinct objects).
In what concerns me, although I like Rust, I only see it for scenarios where any kind of memory allocation is very precious, Ada/SPARK and MISRA-C style.
I have been using GC languages with C++ like features, or polyglot codebases, for almost 20 years to think otherwise.
Most of the time developers learn about new and miss out on the low level language features.
It is a matter of balance, either trying to do everything in a single language, or eventually write a couple of functions in a lower level language that are then used as building blocks for the rest of the application.
No need to throw away the ecosystem and developer tooling just to rewrite a data structure.
For example, you can do codecs in C# on WinRT with .NET Native,
https://docs.microsoft.com/en-us/windows/uwp/audio-video-cam...
In the context of protobuf,
https://devblogs.microsoft.com/aspnet/grpc-performance-impro...
Back to Rust, yes it is a good option, I just wouldn't write the whole application on it, just specialized libraries.
Hence why I am looking forward to Rust/Windows efforts.
From the same author, a zero-unsafe arena allocator: https://github.com/fitzgen/generational-arena
There are many, many arena implementations available with varying characteristics. It's disingenuous to act like Rust requires the author of an arena library to write "unsafe" everywhere.
If you are willing to use cgo, google already implemented one for gapid.
https://github.com/google/gapid/tree/master/core/memory/aren...