You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
description="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."
23
+
headline="ObjectBox C and C++ Database"
24
+
description="This is the ObjectBox documentation for our C and C++ APIs. Persist your objects and structs in a fast, embedded database."
25
25
url="https://cpp.objectbox.io/README"
26
26
datePublished="2025-07-21"
27
27
dateModified="2025-07-21"
@@ -166,150 +166,12 @@ Note: 4.0.3 the first 4.0.x version working with ObjectBox Generator 4.0 and thu
166
166
* Made Box API more robust when racing against store closing
167
167
* Add "vectorsearch-cities" example
168
168
169
-
### 0.21.0 (2024-02-13)
170
-
171
-
* In-memory databases (simply provide a "memory:" prefixed "directory")
172
-
173
-
#### Sync:
174
-
175
-
* New client/server statistics API
176
-
* New server API to enable authenticators
177
-
* Sync server: support for sync permissions, blocks client updates with no write permission
178
-
* Added sync-level login/write permissions for Admin Users DB and Web-UI
179
-
* New authenticator "ObjectBox Admin" with support for authorization
180
-
* New client API for username/password credentials
181
-
* New client-side error listener API; initially reports "receive-only" downgrade due to no write permissions.
182
-
183
-
### 0.20.0 (2023-12-11)
184
-
185
-
* Added OBXFeature\_Backup to query for the feature's availability
186
-
* Internal: added a DB store abstraction layer (another announcement about this will follow)
187
-
* Tree API: fix for meta IDs vs. IDs
188
-
* Various internal improvements
189
-
190
-
#### Sync
191
-
192
-
* Sync clients may now supply multiple URLs; for each connection attempt a random one is chosen. This allows for client-side load balancing and failover with an ObjectBox Sync cluster.
193
-
194
-
### 0.19.0 (2023-09-04)
195
-
196
-
* New K/V validation option on opening the store
197
-
* Additions cursor API: get current ID, ID-based seeks (seek to first ID, seek to next ID)
198
-
* Support scalar vector types with basic queries (APIs only, no generator support)
199
-
* Various tree API improvements, e.g. introspection
200
-
* Minor API clean up: e.g. using int types for bit flags not enums
201
-
* Fixes query link condition in combination with some "or" conditions
202
-
* Fixes query "less" condition for case-sensitive strings with value indexes (default is hashed index)
203
-
* Updated Linux toolchain; now requires glibc 2.28 or higher (and GLIBCXX\_3.4.25); e.g. the following minium versions are fine: Debian Buster 10 (2019), Ubuntu 20.04, RHEL 8 (2019)
204
-
* Various internal improvements
205
-
* Sync: various additions and improvements (client and server)
206
-
207
-
### 0.18.1 (2023-01-30)
208
-
209
-
Recommended bugfix release; please update.
210
-
211
-
* Fixes "Could not put (-30786)", which may occur in some corner cases on some platforms.
212
-
213
-
### 0.18.0 (2022-10-31)
214
-
215
-
* Date properties can now be tagged as expiration time; which can be then be easily evicted
216
-
* Tree API: various additions and improvements, e.g. OBXTreeOptionFlags to configure the tree behavior
217
-
* New query condition to match objects that have a given number of relations
218
-
* New "max data size" store setting
219
-
* Enabled stricter compiler settings
220
-
* Added stacktraces on errors (Linux only; very lightweight as it uses external addr2line or llvm-symbolizer)
221
-
* Added log callback for most important logs
222
-
* Consolidated "user data" passing as the last parameter
223
-
* Various internal improvements
224
-
225
-
#### C++
226
-
227
-
* Added BoxTypeless, QueryBuilderBase and QueryBase: these can be used without generated code and template types.
228
-
* New APIs to get the schema IDs for entity types and properties
229
-
* Added two methods to Store to await asynchronous processing
230
-
* Added "internal" namespace so that internal members do not spill into the obx namespace
231
-
* Move more implementations to OBX\_CPP\_FILE
232
-
233
-
#### Sync
234
-
235
-
* Custom protocols for Sync: plugin your own messaging protocol, which ObjectBox Sync will run on
236
-
* Improvements to run Sync Server with limited disk space (e.g. on small devices)
237
-
* Tree Sync improvements; e.g. consolidate conflicts
238
-
* WebSockets (sync protocol) is now a feature, which can be turned off (special build version)
239
-
* Performance optimizations
240
-
241
-
### 0.17.0 (2022-06-15)
242
-
243
-
* Added a "weak store" API providing weak reference for stores (typically used by background threads)
244
-
* Added Store ID API, e.g. getting a store by its ID
245
-
* Various internal improvements including minor optimizations for binary size and performance
246
-
247
-
#### C++
248
-
249
-
* New "OBX\_CPP\_FILE" define to place declarations in a single .cpp/.cc file: improves compilation time and results
250
-
* New "Exception" base class for all thrown exceptions
251
-
* Various internal improvements, e.g. a "internal" namespace to better distinguish from userland API
252
-
253
-
### 0.16.0 (2022-05-06)
254
-
255
-
* Allow UTF-8 for database directories on Windows (available for other platforms before)
256
-
* Various internal improvements
257
-
258
-
#### C++
259
-
260
-
* Promoted `Options` to a top level class, as nested classes cannot be declared forward
261
-
* New `#define` to disable FlatBuffers includes to simplify new project setup
262
-
* Rename `Exception` to `DbException`
263
-
* Minor improvements
264
-
265
-
### V0.15.2 (2022-02-15)
266
-
267
-
* Add store cloning
268
-
* Fix attaching to a reopened store
269
-
270
-
### V0.15.1 (2022-01-26)
271
-
272
-
* 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)
273
-
* Admin UI now supports multiple sessions to the same host using different ports (session ID via HTTP request)
274
-
* Minor performance improvements with hashed indexes
275
-
276
-
#### Sync
277
-
278
-
* Performance improvements for compression and decompression
279
-
280
-
### V0.15.0 (2021-12-09)
281
-
282
-
* New "Flex" data type that can contain data of various types like integers, floating points, strings, lists and maps
283
-
* New query conditions for Flex lists to find a specific element
284
-
* New query conditions for Flex maps to find elements with a specific key or key/value pair
285
-
* New unique on-conflict strategy: replace conflicting objects (OBXPropertyFlags\_UNIQUE\_ON\_CONFLICT\_REPLACE)
286
-
* New functions to attach to existing stores using only the file path (in the same process)
287
-
* New APIs for ObjectBox Admin, the web based UI (formerly known as Object Browser): obx\_admin\_\*
288
-
* Minor performance improvements for indexed access
289
-
* Major performance improvements for tree/GraphQL queries
290
-
* ARM binaries are now built for minimal size reducing the library size significantly
291
-
* New "no\_reader\_thread\_locals" store option
292
-
* Enable debug logging (requires a special build)
293
-
* API: Type for query offsets and limits was changed from uint64\_t to size\_t
294
-
* API: rarely used obx\_txn\_mark\_success() was removed; use obx\_txn\_success()
295
-
* API: feature checks consolidated to only use obx\_has\_feature()
296
-
* Many internal improvements
297
-
* Core version 3.0.1-2021-12-09
298
-
299
-
#### Sync
300
-
301
-
* New API for embedded server mode: obx\_sync\_server\_\* (implementation available on request)
302
-
303
169
### Earlier Versions
304
170
305
-
The changelogs of earlier versions are available as part of the [GitHub releases](https://github.com/objectbox/objectbox-c/releases).
description: Changelog entries for ObjectBox versions before 4.0.
4
+
---
5
+
6
+
# Earlier Versions
7
+
8
+
Changelogs for versions before 4.0 are kept here. For even earlier releases, check the [GitHub releases](https://github.com/objectbox/objectbox-c/releases).
9
+
10
+
### 0.21.0 (2024-02-13)
11
+
12
+
* In-memory databases (simply provide a "memory:" prefixed "directory")
13
+
14
+
#### Sync:
15
+
16
+
* New client/server statistics API
17
+
* New server API to enable authenticators
18
+
* Sync server: support for sync permissions, blocks client updates with no write permission
19
+
* Added sync-level login/write permissions for Admin Users DB and Web-UI
20
+
* New authenticator "ObjectBox Admin" with support for authorization
21
+
* New client API for username/password credentials
22
+
* New client-side error listener API; initially reports "receive-only" downgrade due to no write permissions.
23
+
24
+
### 0.20.0 (2023-12-11)
25
+
26
+
* Added OBXFeature\_Backup to query for the feature's availability
27
+
* Internal: added a DB store abstraction layer (another announcement about this will follow)
28
+
* Tree API: fix for meta IDs vs. IDs
29
+
* Various internal improvements
30
+
31
+
#### Sync
32
+
33
+
* Sync clients may now supply multiple URLs; for each connection attempt a random one is chosen. This allows for client-side load balancing and failover with an ObjectBox Sync cluster.
34
+
35
+
### 0.19.0 (2023-09-04)
36
+
37
+
* New K/V validation option on opening the store
38
+
* Additions cursor API: get current ID, ID-based seeks (seek to first ID, seek to next ID)
39
+
* Support scalar vector types with basic queries (APIs only, no generator support)
40
+
* Various tree API improvements, e.g. introspection
41
+
* Minor API clean up: e.g. using int types for bit flags not enums
42
+
* Fixes query link condition in combination with some "or" conditions
43
+
* Fixes query "less" condition for case-sensitive strings with value indexes (default is hashed index)
44
+
* Updated Linux toolchain; now requires glibc 2.28 or higher (and GLIBCXX\_3.4.25); e.g. the following minium versions are fine: Debian Buster 10 (2019), Ubuntu 20.04, RHEL 8 (2019)
45
+
* Various internal improvements
46
+
* Sync: various additions and improvements (client and server)
47
+
48
+
### 0.18.1 (2023-01-30)
49
+
50
+
Recommended bugfix release; please update.
51
+
52
+
* Fixes "Could not put (-30786)", which may occur in some corner cases on some platforms.
53
+
54
+
### 0.18.0 (2022-10-31)
55
+
56
+
* Date properties can now be tagged as expiration time; which can be then be easily evicted
57
+
* Tree API: various additions and improvements, e.g. OBXTreeOptionFlags to configure the tree behavior
58
+
* New query condition to match objects that have a given number of relations
59
+
* New "max data size" store setting
60
+
* Enabled stricter compiler settings
61
+
* Added stacktraces on errors (Linux only; very lightweight as it uses external addr2line or llvm-symbolizer)
62
+
* Added log callback for most important logs
63
+
* Consolidated "user data" passing as the last parameter
64
+
* Various internal improvements
65
+
66
+
#### C++
67
+
68
+
* Added BoxTypeless, QueryBuilderBase and QueryBase: these can be used without generated code and template types.
69
+
* New APIs to get the schema IDs for entity types and properties
70
+
* Added two methods to Store to await asynchronous processing
71
+
* Added "internal" namespace so that internal members do not spill into the obx namespace
72
+
* Move more implementations to OBX\_CPP\_FILE
73
+
74
+
#### Sync
75
+
76
+
* Custom protocols for Sync: plugin your own messaging protocol, which ObjectBox Sync will run on
77
+
* Improvements to run Sync Server with limited disk space (e.g. on small devices)
78
+
* Tree Sync improvements; e.g. consolidate conflicts
79
+
* WebSockets (sync protocol) is now a feature, which can be turned off (special build version)
80
+
* Performance optimizations
81
+
82
+
### 0.17.0 (2022-06-15)
83
+
84
+
* Added a "weak store" API providing weak reference for stores (typically used by background threads)
85
+
* Added Store ID API, e.g. getting a store by its ID
86
+
* Various internal improvements including minor optimizations for binary size and performance
87
+
88
+
#### C++
89
+
90
+
* New "OBX\_CPP\_FILE" define to place declarations in a single .cpp/.cc file: improves compilation time and results
91
+
* New "Exception" base class for all thrown exceptions
92
+
* Various internal improvements, e.g. a "internal" namespace to better distinguish from userland API
93
+
94
+
### 0.16.0 (2022-05-06)
95
+
96
+
* Allow UTF-8 for database directories on Windows (available for other platforms before)
97
+
* Various internal improvements
98
+
99
+
#### C++
100
+
101
+
* Promoted `Options` to a top level class, as nested classes cannot be declared forward
102
+
* New `#define` to disable FlatBuffers includes to simplify new project setup
103
+
* Rename `Exception` to `DbException`
104
+
* Minor improvements
105
+
106
+
### V0.15.2 (2022-02-15)
107
+
108
+
* Add store cloning
109
+
* Fix attaching to a reopened store
110
+
111
+
### V0.15.1 (2022-01-26)
112
+
113
+
* 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)
114
+
* Admin UI now supports multiple sessions to the same host using different ports (session ID via HTTP request)
115
+
* Minor performance improvements with hashed indexes
116
+
117
+
#### Sync
118
+
119
+
* Performance improvements for compression and decompression
120
+
121
+
### V0.15.0 (2021-12-09)
122
+
123
+
* New "Flex" data type that can contain data of various types like integers, floating points, strings, lists and maps
124
+
* New query conditions for Flex lists to find a specific element
125
+
* New query conditions for Flex maps to find elements with a specific key or key/value pair
126
+
* New unique on-conflict strategy: replace conflicting objects (OBXPropertyFlags\_UNIQUE\_ON\_CONFLICT\_REPLACE)
127
+
* New functions to attach to existing stores using only the file path (in the same process)
128
+
* New APIs for ObjectBox Admin, the web based UI (formerly known as Object Browser): obx\_admin\_\*
129
+
* Minor performance improvements for indexed access
130
+
* Major performance improvements for tree/GraphQL queries
131
+
* ARM binaries are now built for minimal size reducing the library size significantly
132
+
* New "no\_reader\_thread\_locals" store option
133
+
* Enable debug logging (requires a special build)
134
+
* API: Type for query offsets and limits was changed from uint64\_t to size\_t
135
+
* API: rarely used obx\_txn\_mark\_success() was removed; use obx\_txn\_success()
136
+
* API: feature checks consolidated to only use obx\_has\_feature()
137
+
* Many internal improvements
138
+
* Core version 3.0.1-2021-12-09
139
+
140
+
#### Sync
141
+
142
+
* New API for embedded server mode: obx\_sync\_server\_\* (implementation available on request)
0 commit comments