openfga @ v1.10.0
integrity
- size
- 932.8 KiB
- downloaded
- last checked
- overlays
- go
- detected
- go module github.com/openfga/openfga
release notes
OpenFGA v1.10.0 Release Notes - 2025-09-11
New Features
- Allow Ignoring Duplicate Writes in Write API https://github.com/openfga/roadmap/issues/79
Added
- Make number of querying goroutines in experimental reverse_expand configurable via
resolveNodeBreadthLimit. #2652 Add microsecond latency numbers and datastore query count in shadow check resolver.#2658 ( reverted )- Add
NewWithDBsupport for sqlite storage. #2679 - Add planner for selecting check resolution strategies based on runtime statistics, behind the
enable-check-optimizationflag. #2624 - Add
server.WithShadowCheckCacheEnabledto enable creation of a separate cache for shadow check resolver. #2683 - Run weight 2 optimization for cases where there are more than 1 directly assignable userset. #2684
Changed
-
Make experimental reverse_expand behave the same as old reverse_expand in case of timeouts. #2649
-
Breaking: Changes to storage interface
NOTE The following breaking changes are related to the storage interface. If you are not implementing a storage adapter, then these changes should not impact your usage of OpenFGA.
- Changed the
RelationshipTupleWriterdatastore interface to accept variadic write options (opts ...TupleWriteOption) to customize behavior on duplicate inserts and missing deletes. #2663 Implementers must update theWritemethod signature to includeopts ...TupleWriteOption. Defaults preserve prior behavior (error on duplicates and on missing deletes). Example:Write(ctx, store, deletes, writes, storage.WithOnDuplicateInsert(storage.OnDuplicateInsertIgnore))
- Changed the
Fixed
- Fixed bug in how experimental ReverseExpand support for ttus with multiple parents in the intersection and exclusion for list objects. #2691
- Improve performance by allowing weight 2 optimization if the directly assignable userset types are of different types. #2645
- Update ListObjects' check resolver to use correct environment variable. #2653
- !!REQUIRES MIGRATION!! Collation specification for queries dependent on sort order. #2661
- PostgreSQL is non-disruptive.
- MySQL requires a shared lock on the tuple table during the transaction.
Shout outs
- @le-yams made their contribution in https://github.com/openfga/openfga/pull/2593 which gave inspiration and a push to implement Duplicate Writes https://github.com/openfga/roadmap/issues/79 PR https://github.com/openfga/openfga/pull/2663
New Contributors
- @vikrantgupta25 made their first contribution in https://github.com/openfga/openfga/pull/2679
Full Changelog: https://github.com/openfga/openfga/compare/v1.9.5...v1.10.0
- perf: weight 2 allows more than multiple usersets with different types by @adriantam in https://github.com/openfga/openfga/pull/2645
- fix: Allow experimental reverse_expand to return partial results on timeout by @justincoh in https://github.com/openfga/openfga/pull/2649
- chore(deps): bump the dependencies group across 1 directory with 4 updates by @dependabot[bot] in https://github.com/openfga/openfga/pull/2646
- chore(deps): bump grpc-ecosystem/grpc-health-probe from v0.4.39 to v0.4.40 in the dependencies group by @dependabot[bot] in https://github.com/openfga/openfga/pull/2640
- chore: refactor userset by @elbuo8 in https://github.com/openfga/openfga/pull/2642
- feat: update experimental ListObjects max querying goroutines by @justincoh in https://github.com/openfga/openfga/pull/2652
- fix: use the correct configuration variable for list objects check resolver by @justincoh in https://github.com/openfga/openfga/pull/2653
- chore(deps): bump github.com/go-viper/mapstructure/v2 from 2.3.0 to 2.4.0 by @dependabot[bot] in https://github.com/openfga/openfga/pull/2654
- chore: Benchmarks for ListObjects by @justincoh in https://github.com/openfga/openfga/pull/2584
- chore: fix config schema by @rhamzeh in https://github.com/openfga/openfga/pull/2657
- chore: remove noisy logger in reverse expand by @justincoh in https://github.com/openfga/openfga/pull/2656
- add latency and query count numbers in shadow check resolver by @justincoh in https://github.com/openfga/openfga/pull/2658
- fix: perform check validation as first step by @sergiught in https://github.com/openfga/openfga/pull/2670
- feat(storage): add support for NewWithDB in sqlite by @vikrantgupta25 in https://github.com/openfga/openfga/pull/2679
- chore(deps): bump the dependencies group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/openfga/openfga/pull/2680
- feat: query planner by @elbuo8 in https://github.com/openfga/openfga/pull/2624
- feat: add WithShadowCheckCacheEnabled server option by @justincoh in https://github.com/openfga/openfga/pull/2683
- fix: promote previous experimental code outside of flag by @elbuo8 in https://github.com/openfga/openfga/pull/2684
- create codeql.yml by @senojj in https://github.com/openfga/openfga/pull/2682
- feat: duplicate writes (SQL only) by @cikasfm in https://github.com/openfga/openfga/pull/2663
- chore: remove dead code by @elbuo8 in https://github.com/openfga/openfga/pull/2687
- feat: hook up on_duplicate write to API by @adriantam in https://github.com/openfga/openfga/pull/2681
- fix: in-memory condition context not checked correctly for write by @adriantam in https://github.com/openfga/openfga/pull/2694
- chore: batch statements for write by @cikasfm in https://github.com/openfga/openfga/pull/2692
- chore: planner and shadow resolver fixes by @elbuo8 in https://github.com/openfga/openfga/pull/2695
- Add support for TTUs with multiple parents in LO intersection and exclusion by @yissellokta in https://github.com/openfga/openfga/pull/2691
- chore(deps): bump the dependencies group across 1 directory with 24 updates by @dependabot[bot] in https://github.com/openfga/openfga/pull/2688
- chore(deps): bump the dependencies group with 5 updates by @dependabot[bot] in https://github.com/openfga/openfga/pull/2689
- fix collation to always use byte-wise ordering by @senojj in https://github.com/openfga/openfga/pull/2661
- fix: flaky TestConstructUserset unit test by @adriantam in https://github.com/openfga/openfga/pull/2700
- release: update changelog for release
v1.10.0by @cikasfm in https://github.com/openfga/openfga/pull/2699
download
unix · zip
curl -fL -o v1.10.0.zip https://ratatoskr.space/pkg/openfga/v1.10.0.zip
printf '%s %s\n' '2959152607a555d142ff197f8aabb1eb19492c51db994054731627c9492deaae' 'v1.10.0.zip' | sha256sum -c -
windows · zip
$url = "https://ratatoskr.space/pkg/openfga/v1.10.0.zip"
$out = "v1.10.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2959152607a555d142ff197f8aabb1eb19492c51db994054731627c9492deaae") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.10.0.tar.gz https://ratatoskr.space/pkg/openfga/v1.10.0.tar.gz
printf '%s %s\n' 'a05f4139e4ae7528477ef157848985ec6a322642eb3c34e7f863c43fcc0abb0c' 'v1.10.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "https://ratatoskr.space/pkg/openfga/v1.10.0.tar.gz"
$out = "v1.10.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a05f4139e4ae7528477ef157848985ec6a322642eb3c34e7f863c43fcc0abb0c") { throw "sha256 mismatch" }
download via yggdrasil mesh
unix · zip
curl -fL -o v1.10.0.zip http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.zip
printf '%s %s\n' '2959152607a555d142ff197f8aabb1eb19492c51db994054731627c9492deaae' 'v1.10.0.zip' | sha256sum -c -
windows · zip
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.zip"
$out = "v1.10.0.zip"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "2959152607a555d142ff197f8aabb1eb19492c51db994054731627c9492deaae") { throw "sha256 mismatch" }
unix · tar.gz
curl -fL -o v1.10.0.tar.gz http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.tar.gz
printf '%s %s\n' 'a05f4139e4ae7528477ef157848985ec6a322642eb3c34e7f863c43fcc0abb0c' 'v1.10.0.tar.gz' | sha256sum -c -
windows · tar.gz
$url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.tar.gz"
$out = "v1.10.0.tar.gz"
Invoke-WebRequest -Uri $url -OutFile $out
if ((Get-FileHash $out -Algorithm SHA256).Hash.ToLowerInvariant() -ne "a05f4139e4ae7528477ef157848985ec6a322642eb3c34e7f863c43fcc0abb0c") { throw "sha256 mismatch" }
| artifact | format | size | hashes |
|---|---|---|---|
| v1.10.0.zip | zip | 935.7 KiB |
blake3-24 1372ce13874a631e6c5a9d1e9eed9498b6fb3f869f514c0f
sha256 2959152607a555d142ff197f8aabb1eb19492c51db994054731627c9492deaae
sha1 60b298f30576878373b713166f94b0b5816355c1
|
| v1.10.0.tar.gz | tar.gz | 734.2 KiB |
blake3-24 0d524aa6d6fe1b1e1908a6adfb95dbadf6e92679c0b5e7e0
sha256 a05f4139e4ae7528477ef157848985ec6a322642eb3c34e7f863c43fcc0abb0c
sha1 afd5056536d553ff55d6b61414c598a50089d17e
|
go module archive
module zip with the module path rewritten to this mirror; fetched by go get through the
GOPROXY route
| artifact | format | size | hashes |
|---|---|---|---|
| v1.10.0.zip | zip | 946.3 KiB |
blake3-24 5fc455e13bc2fe8657dc0743755f0f9e85cdf22d14b382d9
sha256 27c7358de3ea4975a31071744e0b6ca1249cf32d2046005c79c9cfbc998cf61b
sha1 7f0fa23e92e7beffd32c7e675712caeeea5e7aee
|
install
bazel
http_archive(
name = "openfga",
urls = ["https://ratatoskr.space/pkg/openfga/v1.10.0.tar.gz"],
integrity = "sha256-oF9BOeSudShHfvFXhImF7GoyJkLrPDTn+GPEP8wKuww=",
strip_prefix = "openfga-v1.10.0",
)
zig
.url = "https://ratatoskr.space/pkg/openfga/v1.10.0.tar.gz",
go
GOPROXY=https://ratatoskr.space GOSUMDB=off go get ratatoskr.space/pkg/openfga@v1.10.0
install via yggdrasil mesh
bazel
http_archive(
name = "openfga",
urls = ["http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.tar.gz"],
integrity = "sha256-oF9BOeSudShHfvFXhImF7GoyJkLrPDTn+GPEP8wKuww=",
strip_prefix = "openfga-v1.10.0",
)
zig
.url = "http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga/v1.10.0.tar.gz",
go
GOPROXY=http://14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg GOSUMDB=off GOINSECURE=14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/* go get 14cc7d57b5e70f679b851fe5b272ce17c70632ff4beb5b35ab64bc706b2485af.pk.ygg/pkg/openfga@v1.10.0