And Swift, which uses automatic reference counting instead of GC. This is not a “zero-overhead” design like what Rust aims for; sometimes it has quite a lot of overhead. But it is free from the phenomenon of GC pauses.
> But it is free from the phenomenon of GC pauses.
Not really. RC algorithms can lead to stop the world in cascade deletion of highly nested data structures, and even cause stack overflow due to destructors being called.
Re:On Apple's Love Affair with Swift
by icebraining on Saturday August 11, 2018 @08:06PM
(#17742226)
Well, in that regard, so is Python; the GC is only used to resolve cycles, and can be disabled.
IIRC memory safe Ada doesn't allow for deallocation.
Kinda sorta cheating. ;)
It does via memory pools, RAII (aka controlled types) and dynamic stack allocation.
It isn't truly safe like Rust, as Ada can still have dangling pointers laying around, the free function is called "Unchecked_Deallocation", not sure if newer Ada has any mechanisms for better ownership semantics.
This is incorrect, you can have memory safety without a gc. An example is Ada, and more recently Rust.