records gem / library - frozen / immutable (frozen) structs with copy on updates
Gerald Bauer
Public Domain