ObjectBox C/C++ database v0.18.0 Release Notes

Release Date: 2022-10-31 // 3 months ago
    • Date properties can now be tagged as expiration time; which can be then be easily evicted
    • ๐Ÿ”ง Tree API: various additions and improvements, e.g. OBXTreeOptionFlags to configure the tree behavior
    • ๐Ÿ†• New query condition to match objects that have a given number of relations
    • ๐Ÿ†• New "max data size" store setting
    • Enabled stricter compiler settings
    • โž• Added stacktraces on errors (Linux only; very lightweight as it uses external addr2line or llvm-symbolizer)
    • โž• Added log callback for most important logs
    • Consolidated "user data" passing as the last parameter
    • Various internal improvements

    C++

    • โž• Added BoxTypeless, QueryBuilderBase and QueryBase: these can be used without generated code and template types.
    • ๐Ÿ†• New APIs to get the schema IDs for entity types and properties
    • โž• Added two methods to Store to await asynchronous processing
    • โž• Added "internal" namespace so that internal members do not spill into the obx namespace
    • Move more implementations to OBX_CPP_FILE

    ๐Ÿ”€ Sync

    • ๐Ÿ”€ Custom protocols for Sync: plugin your own messaging protocol, which ObjectBox Sync will run on
    • ๐Ÿ‘Œ Improvements to run Sync Server with limited disk space (e.g. on small devices)
    • ๐Ÿ”€ Tree Sync improvements; e.g. consolidate conflicts
    • ๐Ÿ— WebSockets (sync protocol) is now a feature, which can be turned off (special build version)
    • ๐ŸŽ Performance optimizations

Previous changes from v0.17.0

    • โž• Added a "weak store" API providing weak reference for stores (typically used by background threads)
    • โž• Added Store ID API, e.g. getting a store by its ID
    • ๐ŸŽ Various internal improvements including minor optimizations for binary size and performance

    C++

    • New "OBX_CPP_FILE" define to place declarations in a single .cpp/.cc file: improves compilation time and results
    • ๐Ÿ†• New "Exception" base class for all thrown exceptions
    • ๐Ÿ‘ Various internal improvements, e.g. a "internal" namespace to better distinguish from userland API