Oxygene Changelog
[0.1.0] - 2026-08-17
- added custom, much faster Base32 encoder/decoder, dropping
base32gem dependency - added
CARRepo(subclass ofCARArchive) for parsing and processing ATProto repo CAR archives:- use
#walk_all_nodes { |path, section_cid| ... }to iterate over all records in the repo - use
#commitor#commit_sectionto access repo commit data
- use
- reorganized
CIDclass:- it now stores only the initial JSON/binary form and avoids generating the other until requested
#json_formreturns JSON string starting with 'b' (to_sis an alias)#cbor_formreturns the binary string starting with\x00#raw_datareturns the binary string without the CBOR\x00prefix#datais an alias for#raw_datafor backwards compatibility- both the input and output strings for JSON/binary form are frozen so they can't be modified from outside
- added more data validations
- optimized section parsing & lookup in
CARArchive:- it keeps an internal Hash of sections as { raw CID data => section }, but doesn't build it by default unless explicitly enabled
- use
section_with_cid(cid, use_map: true)to populate and use the lookup hashmap - either a
CIDobject or its#cbor_formcan be used for lookup - use
section_with_cid(cid, return_body: false)to return aCARSectioninstead of its decoded body object directly; this will be the default behavior in a future version - various internal optimizations in the decoding code
- added more data validations
- added
#parsed_sectionshelper
- changed the API of
CARSection:- use
#json_bodyto return the body with values recursively converted to use$bytesand$linkwhere needed, as before - use
#decoded_bodyto return the body only decoded from CBOR, but without the recursive conversion #bodyis an alias for#json_bodyfor now for backwards compatibility
- use
- added unit tests & YARD docs
[0.0.1] - 2026-08-05
- initial release - extracted
CIDandCARArchivefrom Skyfall
