# Golang Database

Your opinion matters to us! To make ObjectBox better for our users, we have set up an [Anonymous Feedback Form](https://forms.gle/bdktGBUmL4m48ruj7). 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](https://github.com/objectbox/objectbox-go/issues) or send us your comments to contact\[at]objectbox.io - Thank you! And if you like what you see, we also appreciate a shout-out...

## Changelog

### v1.9.0 (2025-03-11)

* Update ObjectBox Generator to 4.0.0
* Update objectbox-c to v4.2.0
* Sync: JWT credentials/authentication
* Sync: Allow clients to pass multiple SyncCredentials for authentication
* Fixed a version check that prevented using newer ObjectBox core version
* Dropped support for Go 1.11 (this version was tested with Go versions 1.12 - 1.24)

### v1.8.1 (2024-08-29)

* Fixed a regression for 32-bit platforms that could result in crashes
* Update FlatBuffers to v23.5.26
* Update ObjectBox Generator to 0.14

### v1.8.0 (2024-02-19)

* In-memory databases (provide a "directory" option like "memory:" + DB name)
* Update objectbox-c to v0.21.0 with many improvements ([details](https://cpp.objectbox.io/#id-0.21.0-2024-02-13))
* Fix leaks for Box functions taking multiple IDs

### v1.7.0 (2023-06-23)

* Update [objectbox-c to v0.18.1](https://cpp.objectbox.io/#0.18.1-2023-01-30) bringing many improvements to Go

### v1.6.1 (2022-01-27)

* Improved version check for the dynamically loaded C lib
* Update to objectbox-c v0.15.1 which contains fixes and minor performance improvements

### v1.6.0 (2022-01-14)

* Update [objectbox-c to v0.15.0](https://cpp.objectbox.io/#v0.15.0-2021-12-09) bringing many improvements to Go

### v1.5.0 (2021-08-18)

* update objectbox-c to v0.14.0
* add [PropertyQuery](https://golang.objectbox.io/queries#propertyquery) support

### v1.4.0 (2021-04-01)

* add TimeSeries model definition support using `id-companion` and `date-nano` annotations
* avoid `time.Duration.Milliseconds()` not available on old Go Versions
* `NewSyncClient` - flip return values to align with the other "constructors"
* add `NanoTimeInt64*` built-in converters

### v1.3.0 (2021-03-19)

* add [ObjectBox Sync](https://objectbox.io/sync/) client support
* add self-assignable IDs: `objectbox:"id(assignable)"`
* add query `GreaterOrEqual`/`LessOrEqual` for ints and floats
* update objectbox-generator to v0.12.0
* update objectbox-c to v 0.13.0
* fix compiling on old gcc (e.g. the one in CentOS 7)

### v1.2.0 (2020-08-25)

* update to objectbox-c v0.10.0 with latest improvements and fixes
* support comma in addition to space as an annotation separator
* extract code generation into a separate module/project [objectbox-generator](https://app.gitbook.com/s/-LR89ifsSca2Mcwcn53Q/github.com/objectbox/objectbox-generator) and depend on it to preserve existing `go:generate` annotations

### v1.1.2 (2020-03-18)

* ensure Query finalizer is only executed by Go GC after a native call finishes

### v1.1.1 (2020-02-14)

* use temp directories in tests to prevent failure in recent Go versions checking-out modules as read-only

### v1.1.0 (2019-12-16)

* add Box `Insert` and `Update` methods with stricter semantics than `Put`
* add AsyncBox with `Put`, `Insert`, `Update`, `Remove`
* add Query order and parameter alias support - see [Queries](https://golang.objectbox.io/queries) docs for more info
* Code generator improvements
  * handle type-checker errors more gracefully (don't fail on failures in unneeded imports)&#x20;
  * add `clean` command-line option to remove all generated files
  * `time.Time` will automatically use a built in converter to Unix timestamp (milliseconds)
  * improve model.json file diff-level compatibility with other language bindings
  * embedded struct and to-one relations cycle detection
  * support changing property type and resetting its stored value
  * nil check for embedded pointer structs in the generated code
  * minor bug fixes when the generated code wouldn't compile in some edge cases
* update to the latest ObjectBox-C library v0.8.1
* deprecate `box.PutAsync()` in favor of `box.async().Put()` i.e. using AsyncBox
* mark `byte` properties as unsigned
* fix getters on objects with missing relations and non-existent IDs in `GetMany`
* better windows installation experience using a PowerShell script
* make `golint` happier :)

### v1.0.0 (2019-07-16)

This is quite a big release, bringing some new features and cleaning up the API.

* explicit transaction support via `ObjectBox::RunInReadTx` and `ObjectBox::RunInWriteTx`
* Go Modules support
* add `objectbox` namespace to tags to align with `reflect.StructTag.Get` unofficial spec
* optional lazy loading on to-many relations - `lazy` annotation
* box additions:
  * `GetMany` , `RemoveMany`, `RemoveIds`, `ContainsIds`, `RemoveIds`
  * to-many relation auxiliary methods: `RelationIds` , `RelationPut`, `RelationRemove`, `RelationReplace`
* switch default/recommended `go:generate` entity generator command from `objectbox-gogen` to  `//go:generate go run github.com/objectbox/objectbox-go/cmd/objectbox-gogen`
* quite a few internal changes, renames and other refactorings (e.g. renamed `PutAll` to `PutMany`, removed `Cursor`, aligned model JSON with other bindings, ...)

### v0.9.0 (2019-04-24)

* Fixed macOS build and 32-bit query support.
* Minor refactoring/linter issues

### v0.9.0-rc (2019-02-22)

As we queued up quite a few changes, we're doing a release candidate first for you to test:

* Improved relations support
* Embedded structs
* Custom [value-converter ](https://golang.objectbox.io/custom-types)to store unsupported types & structs that can't be inlined/prefixed
* Recognize and handle type aliases and named types used as entity fields
* New Box methods: CountMax(), IsEmpty(), Contains() and PutAsyncWithTimeout()
* Query support AND & OR (combine conditions)
* New Query methods: [Limit, Offset](https://golang.objectbox.io/queries#limit-offset-and-pagination)
* New Query methods: [Set\*Params (type-based) ](https://golang.objectbox.io/queries#reusing-queries-and-parameters)- to run a cached query with custom  parameters
* Query LT|GT|Between support for unsigned numbers
* Support numeric string ID in the entity
* Support for`[]string` as a field type
* Optional pass/return-by-value for slice-of-structs in the generated code
* Change strings to use hash-based instead of value-based indexes by default
* A new option to AlwaysAwaitAsync that can be enabled during initialization

### v0.8.0 (2018-12-06)

* New [Query API](https://golang.objectbox.io/queries)
* Box and Query do not require manual closing anymore
* Support for [renaming entities and their properties](https://golang.objectbox.io/schema-changes) using UIDs

### v0.7.1 (2018-11-30)

* Fixed wrong mapping for Go types (u)int and (u)int8. Luckily we noticed this very early: if you used those types in previous versions, please delete old database files.
* Transactions are now safely aborted in case of panics

### v0.7.0 (2018-11-29)

* Changed file name of generated code, e.g. file endings for model is now ".obx.go"
* Foundation for all query conditions (final query API will come with the next version)
* Put(object) now assigns the new id to the object itself

### v0.6.0 (2018-11-28)

Initial public release


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://golang.objectbox.io/master.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
