
The immutable-ruby gem provides 6 Persistent Data Structures: Hash, Vector, Set, SortedSet, List, and Deque (which works as an immutable queue or stack).
Whenever you "modify" an Immutable collection, the original is preserved and a modified copy is returned. This makes them inherently thread-safe and shareable. At the same time, they remain CPU and memory-efficient by sharing between copies.
Immutable was forked from Simon Harris' Hamster library (ruby-hamster package), which is no longer maintained. It features some bug fixes and performance optimizations which are not included in Hamster. Aside from the name of the top-level module, the public API is virtually identical.