Garbage Collection for Systems Programmers

Say we have data that is read constantly but written rarely—something like the set of USB devices currently plugged in. In computer years this set changes once a millennium, but it can change. And when it does, it should change atomically, without blocking any readers that happen to be taking a peak.

…wait, did we just build a generational garbage collector? Of immutable data structures, no less?