Skip to content

Update dependencies and move to Go 1.27 - #10

Merged
3 commits merged into
emfga:mainfrom
lemuelroberto:deps/bump-dependencies
Oct 29, 2026
Merged

3 commits merged into
emfga:mainfrom
lemuelroberto:deps/bump-dependencies

Conversation

@lemuelroberto

@lemuelroberto lemuelroberto commented Oct 29, 2026 •

Copy link
Copy Markdown
Member

Brings every dependency to its latest compatible release, except the
OpenFGA conformance pin, which stays at v1.19.0 (see below).
Supersedes #5 (grpc 1.83.1 to 1.83.2): grpc lands at 1.85.0 here.

What changed

Go

old new
go directive (go.mod, go.work) 1.25.7 1.27
github.com/jackc/pgx/v5 v5.10.0 v5.11.0
google.golang.org/grpc v1.83.1 v1.85.0
indirect modules ~80 bumped by go get -u ./... + go mod tidy + go work sync (otel 1.47, x/* , k8s 0.37, go-openapi, genproto, modernc, cel.dev/expr, ...)

The updated otel, x/*, grpc and k8s modules declare go 1.26.0, and
Go 1.25 is out of support since 1.27 shipped. The directive goes to
1.27, matching cel4postgres; setup-go reads it and resolves the
latest 1.27 patch. The README now says the host route needs Go 1.27.

Images and tools

old new
postgres:18-alpine (compose.yaml, compose.bench.yaml) @sha256:d3e1620b… @sha256:10a5c69a… (still PostgreSQL 18.6)
compose test runner golang:1.26-alpine (no digest) golang:1.27-alpine @sha256:d200d2dd…
pg_tle (docker/pg_tle.Dockerfile) v1.5.2 v1.5.3

GitHub Actions (still SHA-pinned)

old new
step-security/harden-runner v2.20.0 v2.22.3
actions/upload-artifact v7.0.1 v7.0.2
actions/checkout, actions/setup-go v7.0.1, v7.0.0 unchanged (latest)

Fix: the compose test service set GOFLAGS=-mod=mod, which the
go command refuses in workspace mode (go.work is committed), so
docker compose run --rm test failed before compiling anything. The
flag is gone.

Held back

  • openfga/openfga v1.19.0 (latest v1.22.1), with the two modules
    it pins, openfga/api/proto and openfga/language/pkg/go, and the
    oracle image openfga/openfga:v1.19.0. Decision 1 moves all of
    them, the corpus and the Ref: permalinks together. A trial
    retarget to v1.22.1 compiles after a one-line runner signature
    change (listobjects.RunMatrixTests now takes a string), but the
    suite then fails 242 tests: the v1.22 corpus adds 10 tests
    (171/198/1264 vs 161/188/1227) for inline condition expressions
    ($expression, refused by the engine today with code 2056), and
    TestWriteCausesInventory finds a new upstream write cause. That
    is feature work, not a dependency bump.
  • PostgreSQL 19 is still a release candidate; the image stays on
    18, the version floor.
  • cel4postgres stays at 0.0.2, its latest release.

Testing

  • go build, go vet, gofmt -l clean on Go 1.27.3.
  • Full suite, go test -count=1 -json ./... against
    the compose stack, four runs: two clean
    (14,697 passed, 908 skipped), two with one failure each, a
    different test each time, both passing when run alone:
    TestRealWorldModels/oncall (the oracle answered 2002 "too many
    rewrite rules" under load) and
    TestTupleReverseIndexCoversParentEdges (heap fetches after
    VACUUM, which concurrent tests can hold back). Both look like
    existing timing flakes under a parallel full run rather than
    anything these bumps changed; they are fixed in their own PR
    stacked on this one.
  • docker compose run --rm test (golang:1.27-alpine) passes.
  • scripts/build-release.sh + scripts/smoke-artifacts.sh pass.
  • pg_tle v1.5.3 builds on the new postgres digest, and
    CREATE EXTENSION fga4postgres installs 0.2.0 through it.

Every module moves to its latest compatible release except
openfga/openfga and the two modules it pins, openfga/api/proto and
openfga/language/pkg/go. Those three are the conformance target:
decision 1 bumps the module, the oracle image, the corpus and every
Ref: permalink together or not at all, and decision 2 runs the DSL
conversion through the language package at the pinned version.
Moving them is a retarget, not a dependency update.

The updated otel, x/*, grpc and k8s modules declare go 1.26, and Go
1.25 left support when 1.27 shipped. The directive goes straight to
1.27, matching cel4postgres, so the directive, CI (setup-go reads
it and resolves the latest 1.27 patch) and the containerised suite
all build on the current release. go.work moves with it, since a
workspace cannot declare an older go than its modules.
postgres:18-alpine gets the current digest (still PostgreSQL 18.6;
the rebuild carries newer Alpine packages). pg_tle moves to v1.5.3.
The compose test runner moves to Go 1.27 and gains a digest like
every other image here.

The runner also loses GOFLAGS=-mod=mod. go.work is committed, so the
go command runs in workspace mode, which accepts only readonly or
vendor and refused to start: `docker compose run --rm test` had been
failing before compiling anything.
harden-runner v2.20.0 to v2.22.3 and upload-artifact v7.0.1 to
v7.0.2, still pinned by commit SHA. checkout and setup-go are
already at their latest releases.
@lemuelroberto
lemuelroberto force-pushed the deps/bump-dependencies branch from 7dd55ee to 12e98d8 Compare October 29, 2026 23:24
@lemuelroberto lemuelroberto changed the title Update dependencies, holding the OpenFGA pin Update dependencies and move to Go 1.27 Oct 29, 2026
@lemuelroberto lemuelroberto mentioned this pull request Oct 29, 2026
@lemuelroberto lemuelroberto closed this pull request by merging all changes into emfga:main in ffacb92 Oct 29, 2026
@lemuelroberto
lemuelroberto deleted the deps/bump-dependencies branch October 30, 2026 01:23
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant