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

Release Date: 2022-10-31 // over 1 year 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