Changes in version 1.6.0 o Distinguish between scalars and length-1 vectors when saving/loading lists. This effectively unboxes all length-1 vectors in a list, by default; this is probably the more reasonable expectation for other languages that have a concept of scalars. Users can override this by calling I() on elements that they want to keep as length-1 vectors, in the same manner as jsonlite. o Streamlined the definition of the Rfc3339 class so that it behaves better with I(). Changes in version 1.4.1 o Store numbers at maximum precision when saving lists in the JSON format via saveObject. Changes in version 1.4.0 o Added the saveObject and readObject functions, which comply with the newly formalized takane specifications for each object's on-disk representation. This enables greater consistency across language frameworks (e.g., Python) by using a common library for enforcing the specification. It also eliminates the need for a separate metadata file, simplifying the user experience and the expectations on extension developers. o Added a dedicated validateObject function, which uses the takane libary to validate each object's files. This allows users to easily check if a set of files is compliant with the specification, e.g., when modifying parts of the object outside of saveObject. o Soft-deprecation of the stageObject and loadObject functions. These use legacy representations that do not comply with the tightened takane specifications.