| This is an interesting comparison of memory semantics I stumbled upon: https://paste.sr.ht/blob/731278535144f00fb0ecfc41d6ee4851323... Nim's modern memory management (ARC/ORC) is fairly similar to Rust. ARC functions by reference-counting at compile time and automatically injecting destructors: which is broadly comparable to Rust's ownership + borrow checker. (A big difference is that Nim's types are Copy by default: this leads to simpler code at the expense of performance. You have control over this, keeping memory safety, with `var`, `sink`, and others, as highlighted in the above link.) https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc... For reference cycles (the big limitation of reference counting), there's ORC: ARC + a lightweight tracing garbage collector. As I understand it Rust also cannot handle reference cycles without manually implementing something similar. https://nim-lang.org/blog/2020/12/08/introducing-orc.html https://doc.rust-lang.org/book/ch15-06-reference-cycles.html |