This is so nice. It's crazy how other low-level langs don't have it.
I know Dlang and Rust have it. Maybe Swift too?
The way Dlang does it is nice because you can do a lot of stuff with them at compile time.
Vlang mentioned, let's goo!
I like low-level languages that provide easy access to a GC. It's a nice way to make some parts of the code more high-level and it kinda avoids the need for a scripting language sometimes.
I wrote a simple benchmark comparing my custom dynamic array implementation in Dlang with dynamic arrays in other languages. The test appends and then removes 100,000,000 integers on a Ryzen 3 2200G with 16 GB RAM. This is just a rough cross-language benchmark and not something serious:
Appending and removing 100000000 items...
Testing: ./app_d
real 0.16
user 0.03
sys 0.12
Testing: ./app_zig
real 0.18
user 0.05
sys 0.13
Testing: ./app_odin
real 0.27
user 0.10
sys 0.16
Don't use betterC as a global @nogc attribute. This flag does more than just remove the garbage collector and adds extra checks that can sometimes be overly restrictive. If writing GC-free code is important and compiler assistance is really needed, then add @nogc: at the top of every file. But even that is a bit extreme because the @nogc attribute is just a hint to the compiler, telling it to check that called functions also carry that hint. It is not essential for writing GC-free code.
My library for example is not using the GC, but I don't put @nogc on every function because it does not make sense. Here is the link to the library: https://github.com/Kapendev/joka