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. |
{% hint style="info" %} Jobs: We're looking for a C++ Developer with a ❤️ for performant code {% endhint %}
Are you ready use ObjectBox? These two pages will get you up to speed:
{% content-ref url="installation.md" %} installation.md {% endcontent-ref %}
{% content-ref url="getting-started.md" %} getting-started.md {% endcontent-ref %}
Alternatively, you can also dive into some examples on GitHub right away.
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 :)
Note: 4.0.3 the first 4.0.x version working with ObjectBox Generator 4.0 and thus is the first full 4.0 release. For individual changes in the runtime library check the GitHub release notes: 4.0.0, 4.0.1 and 4.0.2.
- CMake stubs to easily integrate with ObjectBox Generator 4.0
- ObjectBox now supports vector search ("vector database") to enable efficient similarity searches.
This is particularly useful for AI/ML/RAG applications, e.g. image, audio, or text similarity.
Other use cases include semantic search or recommendation engines.
See https://docs.objectbox.io/ann-vector-search for details. - Adjusting the version number to match the core version (4.0); we will be aligning on major versions from now on.
- Made closing the store more robust; e.g. it waits for ongoing queries and transactions to finish
(please still ensure to clean up properly on your side, this is an additional safety net) - Made Box API more robust when racing against store closing
- Add "vectorsearch-cities" example
- In-memory databases (simply provide a "memory:" prefixed "directory")
- New client/server statistics API
- New server API to enable authenticators
- Sync server: support for sync permissions, blocks client updates with no write permission
- Added sync-level login/write permissions for Admin Users DB and Web-UI
- New authenticator "ObjectBox Admin" with support for authorization
- New client API for username/password credentials
- New client-side error listener API; initially reports "receive-only" downgrade due to no write permissions.
- Added OBXFeature_Backup to query for the feature's availability
- Internal: added a DB store abstraction layer (another announcement about this will follow)
- Tree API: fix for meta IDs vs. IDs
- Various internal improvements
- 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.
- New K/V validation option on opening the store
- Additions cursor API: get current ID, ID-based seeks (seek to first ID, seek to next ID)
- Support scalar vector types with basic queries (APIs only, no generator support)
- Various tree API improvements, e.g. introspection
- Minor API clean up: e.g. using int types for bit flags not enums
- Fixes query link condition in combination with some "or" conditions
- Fixes query "less" condition for case-sensitive strings with value indexes (default is hashed index)
- 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)
- Various internal improvements
- Sync: various additions and improvements (client and server)
Recommended bugfix release; please update.
- Fixes "Could not put (-30786)", which may occur in some corner cases on some platforms.
- 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
- 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
- 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
- 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
- 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
- Allow UTF-8 for database directories on Windows (available for other platforms before)
- Various internal improvements
- 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
toDbException
- Minor improvements
- Add store cloning
- Fix attaching to a reopened store
- 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
- Performance improvements for compression and decompression
- 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
- New API for embedded server mode: obx_sync_server_* (implementation available on request)
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)
Check the ObjectBox Generator releases for details.