Skip to content

weft v0.9.0 — the framework in one module; core is the loop alone (breaking for go.mod)

Choose a tag to compare

@wajihtba wajihtba released this 07 Oct 13:45
· 323 commits to main since this release

github.com/weftgo/weft is now the whole framework, one module at one version (ADR 0027). go get github.com/weftgo/weft@v0.9.0 brings every layer: the loop, the OpenAI/Anthropic/Google adapters, MCP, mw, wefttest, thread (+ sqlite), otel, obsdb (+ clickhouse), studio (+ cmd) and runtime. Only the packages you import are compiled in. The loop alone is the new github.com/weftgo/weft/core module (tag core/v0.9.0), whose only dependency is the OpenTelemetry API.

Breaking (go.mod only — Go source compiles unchanged)

  • The adapters, thread, thread/sqlite, otel, obsdb, obsdb/clickhouse, studio, studio/cmd and runtime are packages of this module, no longer modules of their own. Their import paths are unchanged. Their per-module tags stop at the last ones cut (they keep requiring weft v0.8.0). A go.mod that still requires one of those paths beside github.com/weftgo/weft v0.9.0 fails with an ambiguous import: drop the line and go mod tidy.
  • MIGRATION-0.9.md is the guide — exact rules and commands, with a block you can paste to a coding agent.

Changed

  • The root package, mw, wefttest and wefttest/conformance are generated facades over their core counterparts: every exported name is a type alias, a bound constant or variable, or a one-line wrapper with the original signature and doc. weft.New, wefttest.Script, mw.Retry work as before; weft.Agent and core.Agent are one type. go generate ./... regenerates them and TestFacadesAreComplete fails when a facade and its source disagree.
  • The layers' signatures name core.X where they named weft.X; same types, no call-site change.
  • mw.IsContextOverflow(err) is exported; the adapters' error mapping delegates to it.

Fixed

  • A tool defined through the facade records the caller's file and line as its definition site, not the facade's; committed manifest golden files do not change.

Release process

Two tags per release, in order: core/vX.Y.Z, then the root tidied against it and tagged vX.Y.Z. The apidiff gate enforces core against its last core/v* tag and reports the root.

Full notes: CHANGELOG.md.