Releases: objectbox/objectbox-c
Releases · objectbox/objectbox-c
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
OBXSyncCredentialsType
values 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()
, andOBXFeature
enum: 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_IDS
forSYNC_ENABLED
entities - 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/next
void**
argument toconst void**
- change multiple query and query builder functions
int count
argument tosize_t count
- change observer signatures (
obx_err
return value andsize_t count
argument) - 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.h
toobjectbox.hpp
- change C++ Store Options to a "builder" pattern and expose all available options
- new C++ AsyncBox and Box::async() to expose asynchronous operations
ObjectBox C and C++ v0.10.0
C++ API queries and model classes for more feature-rich generated code.
C-API cleanup & docs updates, including the following changes (some of them breaking, mostly due to renames):
Misc
- new property type: DateNano for datetime with nanosecond precision
- new store options obx_opt_*()
- validate_on_open - to validate the database during openining
- put_padding_mode - configure the padding used by your flatbuffers implementation
- use_previous_commit - roll-back the database to the previously committed version
- read_only - open the database in the read only mode
- debug_flags - configure debug logging
Cursor
- remove obx_cursor2(), use obx_cursor() in combination with obx_store_entity_id()
- rename obx_cursor_put_mode() to obx_cursor_put4()
- obx_cursor_put() drops the last parameter
checkForPreviousValue
and introduced a complementary obx_cursor_put_new() - remove obx_cursor_put_padded()
- rename obx_cursor_backlink_bytes() to obx_cursor_backlinks()
- rename obx_cursor_ts_limits() to obx_cursor_ts_min_max()
- rename obx_cursor_ts_limits_range() to obx_cursor_ts_min_max_range()
Box
- rename obx_box_put() to obx_box_put5()
- rename obx_box_put_object() to obx_box_put_object4()
- change obx_box_put_many to fail when any of the individual inserts/updates fails and new obx_box_put_many5() to override this behavior
- new obx_box_store() to get access to OBX_store* owning the given box
- new obx_box_insert() obx_box_update() for for insert and update semantics, same as put mode arg in obx_box_put5()
- new obx_box_put() without a mode argument (defaults to PUT)
- new obx_box_put_object() without a mode argument (defaults to PUT)
- new obx_box_ts_min_max() for time-series databases
- new obx_box_ts_min_max_range() for time-series databases
Async
- rename obx_async_put_mode() to obx_async_put5()
- rename obx_async_id_put() to obx_async_put_object()
- rename obx_async_id_insert() to obx_async_insert_object()
Query builder
- obx_qb_{type}{operation}() function naming changes to obx_qb{operation}_{type}(), e.g. obx_qb_int_equal() becomes obx_qb_equals_int()
- obx_qb_{operation}_{type}() functions taking multiple arguments have an "s" at the end, indicating plural, e.g. obx_qb_in_int64s()
- operation
equal
becomesequals
,greater
becomesgreater_than
,less
becomesless_than
- obx_qb_greater_than_string() drops
with_equal
argument in favor of the new obx_qb_greater_or_equal_string() function - obx_qb_less_than_string() drops
with_equal
argument in favor of the new obx_qb_less_or_equal_string() function - change obx_qb_in_strings() argument
const char* values[]
changes toconst char* const values[]
,
i.e. const array of const char pointers - obx_qb_greater_than_bytes() drops
with_equal
argument in favor of the new obx_qb_greater_or_equal_bytes() function - obx_qb_less_than_bytes() drops
with_equal
argument in favor of the new obx_qb_less_or_equal_bytes() function
Query
Limit and offset are now part of the query state instead of function arguments, therefore:
- new obx_query_offset() and obx_query_limit() set persistent offset/limit for all future calls to other query functions
- obx_query_find(), obx_query_visit(), obx_query_find_ids(), as well as the cursor alternatives,
all dropoffset
andlimit
arguments - note: some query functions, such as count/remove don't support non-zero offset/limit yet.
- obx_query_{type}param() function naming changes to obx_query_param{type}(), e.g. obx_query_string_param()
becomes obx_query_param_string() or obx_query_param_strings() for the plural variant - obx_query_{type}param_alias() function naming changes to obx_query_param_alias{type}(), e.g. obx_query_string_param_alias()
becomes obx_query_param_alias_string() - obx_query_param_strings() and obx_query_param_alias_strings() argument
const char* values[]
changes toconst char* const values[]
, i.e. const array of const char pointers - obx_query_prop_{type}find() function naming changes to obx_query_prop_find{type}s(), with an "s" indicating the return
type is plural, e.g. obx_query_prop_find_strings - remove deprecated obx_query_prop_distinct_string()
ObjectBox C/C++ 0.9.1
- C++ interface improvements:
- "Box::getOptional()" overloads returning std::optional
- "Box::put()" overloads taking vectors of std::unique_ptr and std::optional
- Query methods: find(), findIds(), count(), remove(), ...
- Ensure double-free can't happen (added explicit copy & move constructors)
- Fixed Windows exported symbols - recently added APIs were missing
- New "obx_cursor_put_object4()" overload taking PutMode as an argument
- Make *_close() functions consistently accept nullptr
See also the Generator companion project.
(https://objectbox.io/introducing-objectbox-generator-plus-c-api/)
ObjectBox C/C++ 0.9.0
- C++ API added: see include/objectbox-cpp.h
- Initial time series support (ObjectBox TS only)
- New "put object" functions that e.g. handle ID assignment
- Several internal improvements, e.g. query links are resolved faster
See also: https://objectbox.io/introducing-objectbox-generator-plus-c-api/
ObjectBox C 0.8.2
Fix ARM build incorrectly returning TRUE in obx_supports_bytes_array()
ObjectBox C 0.8.1
Improved property queries, fix for n:m standalone relations, query cloning (0.8.0).
Check the full changelog for details.