4 ms·
Call me wrong if I misunderstood, but isn't reference counting also kind of GC?
by issaria 9y ago
Call me wrong if I misunderstood, but isn't reference counting also kind of GC?
- floatboth 9y agoRust doesn't use reference counting (until you want to use it)
- jordigh 9y agoIsn't borrow-checking a sort of compile-time reference counting? Not what people usually think of when they say "reference counting", but I wonder if it's a good way to think of borrow-checking.
- steveklabnik 9y agoSome people make this analogy, but it has so many caveats, and is so far away from what people think about as RC, and has very serious and significant differences, that I don't think it's a useful analogy, personally. I even might go so far as to say "actively harmful." Not totally sure though.
- leshow 9y agoNot really, it doesn't count references in the same way. The borrow checker maintains a set of rules that are more expansive than reference counting. For instance the rule that you may only have one &mut at a time, and no other references as long as &mut is alive. It also has something like linear types with ownership rules, where owned values can be used only once.
- WalterBright 9y agoYes, RC is a form of GC.
- umanwizard 9y agoOne of the biggest differences in practice between reference counting and GC (or "other forms of GC" if you consider RC a type of GC) is that nodes involved in a cycle will never be freed.
- Ace17 9y agoYes, but reference counting allows for deterministic destruction. This is a game changer to leverage the power of destructors.