Skip to content

Releases: objectbox/objectbox-c

ObjectBox C and C++ 6.0.0 beta

Pre-release

Choose a tag to compare

@greenrobot greenrobot released this 13 Jul 14:48

Lead feature: P2P Mesh Sync

  • WebAssembly (WASM): the library is now built as part of releases;
    also updated the Emscripten toolchain, reducing the binary size significantly
  • Admin: modernized user interface based on Vue.js 3 and Material Design 3
  • Admin: optimized pages now loading faster
  • Android: log messages now use the logcat tag "ObjectBox" (previously "Box")
  • Breaking: removed previously deprecated functions from the C API:
    • obx_debug_log() and obx_debug_log_enabled(): use obx_log_level_set() and obx_log_level_get() instead
    • obx_qb_contains_key_value_string(): use obx_qb_equals_key_value_string() instead
    • obx_qb_any_equals_string(): use obx_qb_contains_element_string() instead
  • Breaking: removed previously deprecated members from the C++ API:
    • Options(OBX_model*) constructor: use Options().model(model) instead
    • Store::debugLog() and Store::debugLogEnabled(): use Store::logLevelSet() and Store::logLevelGet() instead
    • String vector query condition contains(): use containsElement() instead
    • Sync::client(store, url, credentials): use the builder instead,
      e.g. Sync::client(store).url(url).credentials(credentials).build()
  • Internal fixes and improvements

Sync

  • New Mesh Sync API: peer-to-peer (P2P) synchronization between sync clients without a central server
    • C: configure via obx_mesh_opt_*() and obx_sync_opt_mesh();
      access the running mesh via obx_sync_mesh() and obx_mesh_*()
    • C++: new MeshOptions and Mesh classes, SyncBuilder::mesh() and SyncClient::mesh()
  • C++: fixed SyncClient::removeFilterVariable() removing all filter variables instead of the given one
  • C++: fixed registering a SyncClientErrorListener (the error callback was bound to the wrong listener object)

Check also docs for details

ObjectBox C and C++ 5.3.2

Choose a tag to compare

@greenrobot greenrobot released this 05 May 10:39
  • Fixed a corner case with "unique replace on conflict" and absent (e.g. null) sync clock value
  • Internal fixes and improvements

Check older changelogs

ObjectBox C and C++ 5.3.1

Choose a tag to compare

@greenrobot greenrobot released this 26 Mar 12:57
  • Critical fix for sync clock handling without preset clock values (null)
  • Helper functions to extract timestamps from sync clock values

Check older changelogs

ObjectBox C and C++ 5.3.0

Choose a tag to compare

@greenrobot greenrobot released this 24 Mar 07:05
  • Change log level at runtime, i.e. obx_log_level_set()/obx_log_level_get()
  • New log level "trace" for most internal details
  • Log level "verbose" can now be enabled (debug log builds only)
  • Breaking: OBXLogLevel enum values changed; recompile with new header if you used these
    (previously 10/20/30/40/50 for Verbose..Error, now 0-10 matching the runtime log level).
  • Admin: Status tab "Count and Sizes" and "System and Info" improved

Sync

  • Conflict resolution via sync clock and sync precedence (allows last win with custom conflict resolution)
  • Fix bad Sync client state after multiple full sync messages were interrupted
  • Fix adding indexes to Sync types

Check changelog for details

ObjectBox C and C++ 5.2.0

Choose a tag to compare

@greenrobot greenrobot released this 09 Mar 13:24
  • Admin: new "Counts and Sizes" view (via Status page) to give an overview over all types their object counts and sizes
  • Admin: refresh button for the data view
  • Admin: fix reload via browser to stay on the page
  • Admin: schema view to display flags as text
  • (Minor) performance improvements of HNSW vector search on Linux ARM targets

Sync

  • Sync protocol version 10
  • Update client sync filters variables when online
  • Clients report errors to the server
  • Add OBXSyncFlags_SkipInvalidTxOps

See changelog for previous versions.

ObjectBox C and C++ 5.1.0

Choose a tag to compare

@greenrobot greenrobot released this 20 Jan 09:48

5.1.0 (2026-01-19)

  • Fix for deleting transactions in non-owner threads with open relation cursors
  • Admin: the Schema view now shows if external name of types and properties if configured
  • Admin: the Schema view now shows the type as text (e.g. "String") instead of the internal type ID
  • Internal updates

Sync

  • New Sync protocol V8: using new clients also require a server update
  • Remove-operations with object content for Sync filters (optional setting; sync flag)
  • Introduce options based Sync client creation (new C API)
  • Add DebugLogTxLogs sync flag to log TX log processing on the client side
  • Add SkipInvalidTxOps sync flag to skip invalid operations in a TX log on the client side;
    errors are logged and the TX is only partially applied.
  • Remove superfluous sync listener triggers when sync filters "report updates" (SKIP_TX)
  • Sync clients compress earlier: reduces disk storage for outgoing data
  • Reworked SSL certificates for Apple platforms
  • Removed support for older Sync protocol versions before 2024-09; protocol V5+ is now required

Check changelog for details

ObjectBox C and C++ 5.0.0

Choose a tag to compare

@greenrobot greenrobot released this 27 Nov 15:45

User-Specific Data Sync

  • Sync filters: define server-side filter expression to sync individual data for each sync user.
    This is also known as "user-specific data sync" and requires Sync clients version 5.0.
  • Client variables: clients may define key/value pairs that can be used in sync filters

New supported platform: Windows ARM64

  • Besides x86 and x64, ObjectBox for Windows now also supports ARM64

Sync

  • Sync clients may now provide certificate locations for SSL (TLS) connections

Fixes

  • Fixed clearing 1:N backlinks for IDs larger than 32-bit (setting backlink ID to 0 on the "1" side)
  • In-memory with WAL file: improved error handling
  • Safeguard against undefined behavior by panicking in rare illegal usage patterns that are not recoverable.
    I.e. deleting a (write) transaction in a non-owner thread cannot be safely handled in any other way.
  • Various small improvements and updates under the hood.

Examples

  • Make each example self-contained, you can e.g. copy an example's directory as a starting point for your own app
  • Add a convenient build.sh script to each example that works the same way across examples,
    e.g. ./build.sh run to build and run the example in one step
  • Make sources more readable (refactorings, added additional comments)
  • The Task sync example moved to ObjectBox Sync Examples

Check changelog for details

ObjectBox C and C++ 5.0.0 RC

Pre-release

Choose a tag to compare

@greenrobot greenrobot released this 30 Sep 08:10

Release candidate.

ObjectBox C and C++ 4.3.1

Choose a tag to compare

@greenrobot greenrobot released this 29 Jul 09:12

Bug fix release

  • Cursor/Query: deleting a cursor (e.g. in a non-creator thread) waits for any query to finish
  • Query: added safety check to detect using a deleted query instance
  • Admin: fix displaying some string values twice
  • Add a few missing allocation failure checks
  • Internal improvements, e.g. updated dependencies and compiler to new major versions

ObjectBox C and C++ 4.3.0

Choose a tag to compare

@greenrobot greenrobot released this 12 May 21:04
  • Windows: msvc runtime is now embedded to avoid incompatible msvcp140.dll (e.g. those shipped with some JDKs)
  • External property types (via MongoDB connector): JsonToNative to support sub (embedded/nested) documents/arrays in MongoDB, and more
  • Admin: various new features

Sync

  • Add "Log Events" for important server events, which can be viewed on new Admin page
  • Detect and ignore changes for objects that were put but were unchanged
  • The limit for message size was raised

Check changelog for details