← Back to context

Comment by ckcheng

2 years ago

> The definition of GC encompassing RC has fallen out of favour because it doesn’t capture the essential distinctions that people want to make: firstly, are cycles broken automatically? secondly, is there any tracing process happening behind the scenes?

"Yes" and secondly "no". Here's two different RC algorithms with cycle collection without tracing:

1. Concurrent Cycle Collection in Reference Counted Systems (Bacon & Rajan. 2001) [1]. Note it has no "global tracing" - which is what's meant by "tracing" in popular usage (right?).

2. Trial deletion, like as actually usable in Nim with "--gc:orc" [2].

If the definition of GC encompassing RC has fallen out of favour in popular usage, it's not because of RC having or not having these two particular properties.

[1]: https://pages.cs.wisc.edu/~cymen/misc/interests/Bacon01Concu...

[2]: https://nim-works.github.io/nimskull/gc.html