Releases: vihren-dev/vihren
Release list
Vihren v0.3.0: Large Durable Values For Go And Temporal Agents
Vihren v0.3.0: Large Durable Values For Go And Temporal Agents
Vihren v0.3.0 adds typed claim-check storage for values that should not travel
through Temporal workflow history as raw bytes. Activities can offload large
values, workflows can route small typed handles, and downstream activities can
resolve the bytes only when they need them.
This release also moves the Go module to its permanent vanity path:
vihren.dev/vihren.
Install
Requires Go 1.26 or newer.
go get vihren.dev/vihren@v0.3.0
go install vihren.dev/vihren/cmd/vihren-gen@v0.3.0Highlights
blob.Value[T]carries either an inline value or a typed reference to
offloaded bytes.blob.Inline,blob.Offload, andblob.OffloadWithThresholdmake the
storage decision explicit at activity boundaries.blob.Value[T].Resolveresolves activity-side values only where the bytes
are needed.blob.GetValue[T]and the generatedblob.getactivity support the less
common case where workflow code must read an existing reference.- The local backend stores content-addressed values on the filesystem with
SQLite metadata and owner information. embeddedtemporal.WithLocalStorageconfigures the same local backend for
Temporal nativeExternalStorageand activity-side blob values.examples/conversationstoragedemonstrates composing small handles instead
of repeatedly storing a growing conversation transcript.
Module And Package Migration
The module path changed from:
github.com/vihren-dev/vihren
to:
vihren.dev/vihren
Public packages are now rooted at blob, embeddedtemporal, and
toolcontract. The old platform/... wrappers are not part of v0.3. Update
imports and install commands when upgrading from v0.2.
Storage Model
Temporal native ExternalStorage handles large payloads that workflow code
reads normally. Typed blob.Value[T] handles cover the complementary path:
large activity values that workflow code only routes between steps. Both paths
can share one DataConverter-aware local backend.
The explicit blob reader/writer APIs cannot currently propagate Temporal's
activity serialization context automatically. DataConverters whose encoded
bytes depend on that context may therefore produce different content IDs
across paths even when their logical values match.
Current Limitations
- The release includes a local filesystem/SQLite backend only; there is no
cloud object-storage backend yet. - Garbage collection and ownership transfer are not implemented.
- Temporal
ExternalStorageis currently a Public Preview Temporal feature. - Vihren does not yet provide complete agent-state or provenance management.
Example
Run the released conversation-storage demonstration with:
go run vihren.dev/vihren/examples/conversationstorage/cmd/conversationstorage-demo@v0.3.0The example compares a conversation made of independently stored typed values
with a growing transcript relying only on Temporal external storage. It shows
why composing small durable handles avoids repeatedly writing all earlier
large message bodies.
Validation
The release candidate is public commit af050c4bd18a. It is generated-code
clean, builds with GOWORK=off, passes vet and the complete public test suite,
passes the private integration suite, and contains none of the deferred lint,
FCA, IDE, or private repository surfaces.
v0.2.0
Highlights
Vihren v0.2.0 extends the public code generator support for asynchronous Temporal workflow execution. Generated async workflow clients now return typed run handles such as HelloWorkflowRun instead of raw client.WorkflowRun.
Breaking change
Client.<Workflow>Asyncnow returns a generated typed run handle.- Migrate async result waits from
run.Get(ctx, &out)toout, err := run.Get(ctx). - The generated run handle still exposes
GetID()andGetRunID()for Temporal workflow identity access.
Other changes
- Generated
RegisterActivitiesandRegisterWorkflowsnow use minimal package-local registry interfaces. - Combined generated
Registerstill accepts Temporalworker.Registry.
Install
go install github.com/vihren-dev/vihren/cmd/vihren-gen@v0.2.0v0.1.0
Vihren v0.1.0 is the initial public release.
This release focuses on:
- typed Temporal workflow and activity code generation with vihren-gen;
- runnable Go examples for generated and plain Temporal workflows;
- an embedded Temporal runtime for local demos and single-process development;
- a cleaned public release surface with CI covering generation, vet, and tests.
Install:
go get github.com/vihren-dev/vihren@v0.1.0
go install github.com/vihren-dev/vihren/cmd/vihren-gen@v0.1.0