Releases: objectbox/objectbox-c
Releases · objectbox/objectbox-c
v0.18.0
- 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
 
Check changelog for details
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
 
v0.16.0
Allow UTF-8 for database directories on Windows (has been available for other platforms before).
C++
- Promoted 
Optionsto a top level class, as nested classes cannot be declared forward - New 
#defineto disable FlatBuffers includes to simplify new project setup - Rename 
ExceptiontoDbException 
Check changelog for details
v0.15.2
- Add store cloning
 - Fix attaching to a reopened store
 
See also https://cpp.objectbox.io
v0.15.1
This version fixes non-unique indexes triggering unique constraint violations in corner cases (introduced in 0.15.0)
ObjectBox C and C++ 0.15.0
- New "Flex" data type that can contain data of various types like integers, floating points, strings, lists and maps
 - New query conditions for Flex lists to find a specific element
 - New query conditions for Flex maps to find elements with a specific key or key/value pair
 - New unique on-conflict strategy: replace conflicting objects (OBXPropertyFlags_UNIQUE_ON_CONFLICT_REPLACE)
 - New functions to attach to existing stores using only the file path (in the same process)
 - New APIs for ObjectBox Admin, the web based UI (formerly known as Object Browser): obx_admin_*
 - Minor performance improvements for indexed access
 - Major performance improvements for tree/GraphQL queries
 - ARM binaries are now built for minimal size reducing the library size significantly
 - New "no_reader_thread_locals" store option
 - Enable debug logging (requires a special build)
 - API: Type for query offsets and limits was changed from uint64_t to size_t
 - API: rarely used obx_txn_mark_success() was removed; use obx_txn_success()
 - API: feature checks consolidated to only use obx_has_feature()
 - Many internal improvements
 - Core version 3.0.1-2021-12-09
 
Sync
- New API for embedded server mode: obx_sync_server_* (implementation available on request)
 
v0.14.0
- change 
obx_query_prop_count()to respect case-sensitivity setting when counting distinct strings - change 
OBXSyncCredentialsTypevalues to start at 1 - add 
obx_query_find_first()to get a first object matching the query - add 
obx_query_find_unique()to get the only object matching the query - add 
obx_async_put_object4()accepting a put_mode - updated ARMv7hf toolchain, now requires GLIBC v2.28 (e.g. Raspbian 10, Ubuntu 20.04)
 - semi-internal Dart APIs: add query streaming and finalizers
 
v0.13.0
- add Sync binary library variants for all supported platforms
 - add MacOS universal binary library, supporting Intel x64 and Apple Silicon arm64
 - split Sync symbols out of objectbox.h/pp into objectbox-sync.h/pp
 - add Sync server-time getter, listener and local-to-server diff info - to access server time info on clients
 - add Sync heartbeat interval configuration and an option to send one immediately
 - semi-internal: update Dart/Flutter SDK to v2.0
 
v0.12.0
- add Linux ARMv8 (aarch64) native binary library
 - add 
obx_sync_*APIs (actual functionality is only available in a sync-enabled version; see https://objectbox.io/sync/) - add 
obx_has_feature(), andOBXFeatureenum: please use these instead of the following, now deprecated functions:
obx_supports_bytes_array(),obx_supports_time_series(), andobx_sync_available() - add 
obx_remove_db_files()to delete database files in a given directory - add optional 
OBXEntityFlags_SHARED_GLOBAL_IDSforSYNC_ENABLEDentities - semi-internal: add custom async callback APIs for Dart/Flutter language binding
 
v0.11.0
- update CMakeLists.txt to simplify integration for users, e.g. with 
FetchContent,
see the updated installation docs - change cursor and box read functions 
get/first/current/nextvoid**argument toconst void** - change multiple query and query builder functions 
int countargument tosize_t count - change observer signatures (
obx_errreturn value andsize_t countargument) - new obx_model_entity_flags()
 - new obx_opt_async_*() to configure async box behavior
 - new greater-or-equal and less-or-equal query conditions for integers and floats
 - new obx_query_offset_limit() setter for offset and limit in a single call
 - new obx_sync_available() to check whether the loaded runtime library supports ObjectBox Sync
 - clean up linter warnings in the examples and 
objectbox.h(pp) 
C++ (only)
- rename 
objectbox-cpp.htoobjectbox.hpp - change C++ Store Options to a "builder" pattern and expose all available options
 - new C++ AsyncBox and Box::async() to expose asynchronous operations