Links

ObjectBox C / C++ Database

This is the ObjectBox documentation for our C and C++ APIs. We strive to provide you with the easiest and fastest solution to store and retrieve data.
Jobs: We're looking for a C++ Developer with a ❤️ for performant code
Are you ready use ObjectBox? These two pages will get you up to speed:
Your opinion matters to us! To make ObjectBox better for our users, we have set up an Anonymous Feedback Form. Please do fill this in (it only takes 2 minutes). Every response is highly appreciated. To rate this documentation, you can use the "Was this page helpful?" smiley at the end of each page.
Otherwise, feel free to open an issue on GitHub or send us your comments to contact[at]objectbox.io - Thank you! - and if you like what you see, we also appreciate a shoutout :)

Latest Versions (Changelogs)

0.18.1 (2023-01-30)

Recommended bugfix release; please update.
  • Fixes "Could not put (-30786)", which may occur in some corner cases on some platforms.

0.18.0 (2022-10-31)

  • 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

0.17.0 (2022-06-15)

  • 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

0.16.0 (2022-05-06)

  • Allow UTF-8 for database directories on Windows (available for other platforms before)
  • Various internal improvements

C++

  • Promoted Options to a top level class, as nested classes cannot be declared forward
  • New #define to disable FlatBuffers includes to simplify new project setup
  • Rename Exception to DbException
  • Minor improvements

V0.15.2 (2022-02-15)

  • Add store cloning
  • Fix attaching to a reopened store

V0.15.1 (2022-01-26)

  • Fix non-unique indexes triggering unique constraint violations in corner cases (requires at least two unique constraints in an entity and a specific order; introduced in 0.15.0)
  • Admin UI now supports multiple sessions to the same host using different ports (session ID via HTTP request)
  • Minor performance improvements with hashed indexes

Sync

  • Performance improvements for compression and decompression

V0.15.0 (2021-12-09)

  • 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)

Earlier Versions

The changelogs of earlier versions are available as part of the GitHub releases.
Provides native dynamic/shared library (.so/.dylib/.dll)
  • Provides C & C++ headers (objectbox.h & objectbox.hpp)

ObjectBox Generator

Check the ObjectBox Generator releases for details.
Last modified 4mo ago