{"id":19974012,"url":"https://github.com/objectbox/objectbox-c","last_synced_at":"2025-04-12T23:33:07.206Z","repository":{"id":40347875,"uuid":"146648868","full_name":"objectbox/objectbox-c","owner":"objectbox","description":"C and C++ database for objects and structs","archived":false,"fork":false,"pushed_at":"2025-03-04T19:28:15.000Z","size":970,"stargazers_count":216,"open_issues_count":21,"forks_count":36,"subscribers_count":14,"default_branch":"main","last_synced_at":"2025-04-04T03:05:41.264Z","etag":null,"topics":["c","cpp","database","edge","embedded","flatbuffers","offline-first","performance","persistence","storage","sustainable","sync"],"latest_commit_sha":null,"homepage":"https://objectbox.io/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/objectbox.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE.txt","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2018-08-29T19:34:44.000Z","updated_at":"2025-03-23T23:40:53.000Z","dependencies_parsed_at":"2023-12-22T08:37:36.102Z","dependency_job_id":"9f8eb335-5143-44d1-85da-d3b43bb89a9a","html_url":"https://github.com/objectbox/objectbox-c","commit_stats":{"total_commits":119,"total_committers":6,"mean_commits":"19.833333333333332","dds":"0.23529411764705888","last_synced_commit":"f75a35c0d868779a8d3e6a1c2425d401a1b81ec8"},"previous_names":[],"tags_count":40,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectbox%2Fobjectbox-c","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectbox%2Fobjectbox-c/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectbox%2Fobjectbox-c/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/objectbox%2Fobjectbox-c/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/objectbox","download_url":"https://codeload.github.com/objectbox/objectbox-c/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248647258,"owners_count":21139081,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cpp","database","edge","embedded","flatbuffers","offline-first","performance","persistence","storage","sustainable","sync"],"created_at":"2024-11-13T03:13:35.808Z","updated_at":"2025-04-12T23:33:07.178Z","avatar_url":"https://github.com/objectbox.png","language":"C","readme":"ObjectBox Embedded Database for C and C++\n=========================================\n[ObjectBox](https://objectbox.io) is a lightweight yet powerful on-device database for objects and vectors.\nThe out-of-the-box [Data Sync](https://objectbox.io/sync/) keeps data in sync across devices and any kind of backend/cloud reliably for occasionally connected devices.\nObjectBox Data Persistence and Data Sync follows an offline-first approach and can be used on-premise as well as with a cloud setup.\n\n*********************************************************************************************************************************\nJobs: We're looking for a [C++ Developer](https://objectbox.io/jobs/objectbox-senior-c-plusplus-developer/) with a ❤️ for performant code\n*********************************************************************************************************************************\n\nThis is the **ObjectBox runtime library** to run ObjectBox as an embedded database in your C or C++ application.\n\nHere's a C++ example that inserts a `Task` data object (a plain user defined `struct`) into the database:\n```c++\nobx::Box\u003cTask\u003e box(store);\nbox.put({.text = \"Buy milk\"}); \n```\n\nSee [ObjectBox C and C++ docs](https://cpp.objectbox.io/) for API details.\n\n**Latest version: 4.2.0** (2025-03-04).\nSee [changelog](CHANGELOG.md) for more details.\n\n## Table of Contents:\n- [Feature Highlights](#feature-highlights)\n- [Usage and Installation](#usage-and-installation)\n- [C++ API](#c-api)\n- [Examples](#examples)\n- [Documentation](#documentation)\n- [Current state / Changelog](#changelogupdating)\n- [Supported platforms](#supported-platforms)\n- [C API as the Foundation for Higher Languages](#c-api-as-the-foundation-for-higher-languages)\n- [Other languages/bindings](#other-languagesbindings)\n- [How can I help ObjectBox?](#how-can-i-help-objectbox)\n- [License](#license)\n\nFeature Highlights\n------------------\n🧠 **First on-device vector database:** easily manage vector data and perform fast vector search\\\n🏁 **High performance** on restricted devices, like IoT gateways, micro controllers, ECUs etc.\\\n🪂 **Resourceful** with minimal CPU, power and Memory usage for maximum flexibility and sustainability\\\n🔗 **Relations:** object links / relationships are built-in\\\n💻 **Multiplatform:** Linux, Windows, Android, iOS, macOS\n\n🌱 **Scalable:** handling millions of objects resource-efficiently with ease\\\n💐 **Queries:** filter data as needed, even across relations\\\n🦮 **Statically typed:** compile time checks \u0026 optimizations\\\n📃 **Automatic schema migrations:** no update scripts needed\n\n**And much more than just data persistence**\\\n👥 **[ObjectBox Sync](https://objectbox.io/sync/):** keeps data in sync between devices and servers\\\n🕒 **[ObjectBox TS](https://objectbox.io/time-series-database/):** time series extension for time based data\n\nSome more technical details:\n\n* Zero-copy reads for highest possible performance; access tens of millions of objects on commodity hardware\n* Lightweight for smart devices; its binary size is only around 1 MB\n* Direct support for [FlatBuffers](https://google.github.io/flatbuffers/) data objects (aka \"flatbuffers table\")\n* Flex type to represent any FlexBuffers\n* Secondary indexes based on object properties\n* Async API for asynchronous puts, inserts, updates, removes\n* Optimized for time series data (TS edition only)\n* Data synchronization across the network (sync edition only)\n\nUsage and Installation\n----------------------\nIn most cases you want to use the C and C++ APIs in combination with the **[ObjectBox Generator](https://github.com/objectbox/objectbox-generator) tool**.\nThis way, you get a convenient C or C++ API which requires minimal code on your side to work with the database.\n\nThe APIs come as single header file for C and C++:\n\n* C: [include/objectbox.h](include/objectbox.h)\n* C++: [include/objectbox.hpp](include/objectbox.hpp) (depends on objectbox.h)\n\nCompile your code against it and use the binary library (.so, .dylib, .dll depending on the platform) to link against.\nHead over to [ObjectBox C and C++ installation docs](https://cpp.objectbox.io/installation) for step-by-step instructions.\n\nC++ API\n-------\nThe C++ API is built on top of the C API exposed by the library (e.g. you still need objectbox.h).\nYou can also use both APIs from your code if necessary.\nFor example, you use the C++ `obx::Box` class for most database operations, but \"break out\" into the C API for a special function you need.  \nNote that to use the `obx::Box` class, you also need the [ObjectBox Generator](https://github.com/objectbox/objectbox-generator) to generate binding code.\nFind more details how to use it the [Getting started](https://cpp.objectbox.io/getting-started) section of the docs.\n\nExamples\n--------\nHave a look at the following TaskList example apps, depending on your programming language and preference:\n\n* [C, cursor, no generated code](examples/c-cursor-no-gen) - plain C; using flatcc directly; without any generated code\n* [C, with generated code](examples/c-gen) - plain C, using code generated by `objectbox-generator`\n* [C++, with generated code](examples/cpp-gen) - C++, using code generated by `objectbox-generator`\n  * also includes sync client application example\n\nDocumentation\n-------------\n* [C and C++ docs](https://cpp.objectbox.io/) - official ObjectBox C and C++ documentation\n* [include/objectbox.h](include/objectbox.h) - C API header file contains docs as code comments\n* [include/objectbox.hpp](include/objectbox.hpp) - C++ API header file contains docs as code comments\n* [C and C++ API reference docs](https://objectbox.io/docfiles/c/current/) - online HTML docs (Doxygen)\n\nChangelog/Updating\n------------------\nPlease refer to the **[Changelog](CHANGELOG.md)** for the latest updates and changes.\nWe are (mostly) following [Semantic Versioning](https://semver.org/).\n\nIf you update from a previous version, please also check the changelog.\n\nSupported platforms\n-------------------\n* Linux 64-bit\n* Linux ARMv6hf (e.g. Raspberry PI Zero)\n* Linux ARMv7hf (e.g. Raspberry PI 3/4)\n* Linux ARMv8/AArch64 (e.g. Raspberry PI 3/4 with a 64-bit OS like Ubuntu)\n* macOS 64-bit\n* Windows 32-bit\n* Windows 64-bit\n\nNote that e.g. our Android SDK (part of [another repo](https://github.com/objectbox/objectbox-java))\nalso exposes the C API, so you can use ObjectBox in your Android NDK projects.\n\nC API as the Foundation for Higher Languages\n--------------------------------------------\nThe plain C API (without the Generator) also serves as a basis for ObjectBox bindings in higher languages.\nFor example, the official APIs for [Go](https://github.com/objectbox/objectbox-go), [Swift](https://github.com/objectbox/objectbox-swift), [Dart/Flutter](https://github.com/objectbox/objectbox-dart) and [Python](https://github.com/objectbox/objectbox-python) rely on the C API.\nIn the same way, you could create an ObjectBox API for another programming language, e.g. for JavaScript.\nFor the C API, data consists of bytes representing FlatBuffers tables, which you can build and read in your language of choice.\n\nOther languages/bindings\n------------------------\nObjectBox supports multiple platforms and languages.\nBesides C/C++, ObjectBox also offers:\n\n* [ObjectBox Java / Kotlin](https://github.com/objectbox/objectbox-java): runs on Android, desktop, and servers.\n* [ObjectBox Swift](https://github.com/objectbox/objectbox-swift): build fast mobile apps for iOS (and macOS)\n* [ObjectBox Dart/Flutter](https://github.com/objectbox/objectbox-dart): cross-platform for mobile and desktop apps\n* [ObjectBox Go](https://github.com/objectbox/objectbox-go): great for data-driven tools and embedded server applications\n\n\nHow can I help ObjectBox?\n---------------------------\nLet us know what you love, what you don’t, what do you want to see next?\n\n**We're looking forward to receiving your comments and requests:**\n\n- Add [GitHub issues](https://github.com/ObjectBox/objectbox-java/issues)\n- Upvote issues you find important by hitting the 👍/+1 reaction button\n- Drop us a line via [@ObjectBox_io](https://twitter.com/ObjectBox_io/)\n- ⭐ us, if you like what you see\n\nThank you! 🙏\n\nKeep in touch: For general news on ObjectBox, [check our blog](https://objectbox.io/blog)!\n\nLicense\n-------\n    Copyright 2018-2025 ObjectBox Ltd. All rights reserved.\n    \n    Licensed under the Apache License, Version 2.0 (the \"License\");\n    you may not use this file except in compliance with the License.\n    You may obtain a copy of the License at\n    \n        http://www.apache.org/licenses/LICENSE-2.0\n    \n    Unless required by applicable law or agreed to in writing, software\n    distributed under the License is distributed on an \"AS IS\" BASIS,\n    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n    See the License for the specific language governing permissions and\n    limitations under the License.\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectbox%2Fobjectbox-c","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fobjectbox%2Fobjectbox-c","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fobjectbox%2Fobjectbox-c/lists"}