Go SDK
$
npx @buildinternet/releases get temporal-go-sdkMon
Wed
Fri
SepOctNovDecJanFebMarAprMayJunJulAugSep
LessMore
Releases7Avg2/moVersionsv1.43.1 to v1.48.0
npx @buildinternet/releases get temporal-go-sdkclient.Options.DisableWorkerEnvironmentInfo.temporal.NewPayloadValidationError to create non-retryable application errors with
optional structured details for payload validation failures. Passing nil omits details.temporalnexus.NexusClient for starting
workflow-, activity-, and workflow-update-backed Nexus operations.temporal_activity_execution_failed and temporal_local_activity_execution_failed worker
metrics now carry a failure_reason attribute. Each is now split into one time series per
reason, which may affect existing dashboards.converter.StorageDriverSelector.SelectDriver now receives a
converter.StorageDriverSelectContext instead of a converter.StorageDriverStoreContext.
Update the parameter type; the new type carries the same Context and Target fields.ActivitySerializationContext
(IsLocal=true) instead of the workflow serialization context. Users of a context-aware
DataConverter or PayloadCodec whose encoding depends on the serialization context (for example
context-derived encryption keys or AAD) may fail to decode local activity results recorded in
histories written by earlier SDK versions, both on replay and when continuing an open workflow.DataConverter and FailureConverter instead of the converter already carrying
the current workflow context. A context-aware converter that composed contexts (deriving its state
from both the workflow and the activity context) now sees only the activity or child workflow
context, and one whose WithSerializationContext returned a converter that is no longer
context-aware now receives the activity or child workflow context it previously never saw.PayloadDownloadDuration and PayloadUploadDuration fields on the workflow task duration log
now report the wall-clock time external storage was in flight. Previously each batch's duration was
summed, over-reporting the time whenever storage operations ran concurrently.temporal.IsWorkflowExecutionAlreadyStartedError now detects wrapped
serviceerror.WorkflowExecutionAlreadyStarted errors.RespondQueryTaskCompleted instead of
RespondWorkflowTaskFailed, allowing query callers to receive the failure instead of timing out.ActivitySerializationContext
(IsLocal=true) on both ends. Previously the result was encoded with the plain worker data converter
but decoded through the workflow serialization context, so a context-aware DataConverter or
PayloadCodec saw mismatched contexts for local activity results.GetActivityHandleOptions.RunID may be empty to target the latest run, and describe
TerminateActivityOptions.Reason as a termination reason.DefaultFailureConverter.FailureToError now correctly decodes LastHeartbeatDetails for a
reset-workflow failure. Previously the raw payload proto was treated as a single detail value,
so calling Details() on the resulting ApplicationError returned ErrTooManyArg instead of
decoding it.client.Options.ExternalStorage is now stored instead of failing locally with
TMPRL1103. As a consequence, a StorageDriver failure while storing an oversized
query result now fails the workflow task instead of returning a failed query result.-envconfig support to the integration test harness, allowing integration tests to use
standard client settings from contrib/envconfig.client.Options.SdkName and client.Options.SdkVersion to override the SDK name and version reported in worker heartbeats.client.WorkflowRun.GetFirstExecutionRunID to expose the first execution run ID returned by the server when starting a workflow.client.Client.CancelWorkflowWithOptions and client.Client.TerminateWorkflowWithOptions to target a workflow execution chain by its first execution run ID. Cancellation options can also specify a reason.workflow.GetRandomStream for named deterministic pseudorandom values in workflows.workflow.IsReadOnly to report whether the workflow context is in a read-only
path.go.temporal.io/sdk/interceptor/tracing, a reworked tracing interceptor with
corrected span parenting and span directions for span-kind mapping. It backs the new
contrib/opentelemetry-v2 module and is not span-compatible with the tracing interceptor
used by contrib/opentelemetry (v1).OnceCell implementation with sync.OnceValue for lazy workflow run ID lookup.BAD_REQUEST handler error. A temporal.ApplicationError or a nexus.HandlerError is
now propagated to the caller as-is, and any other error is wrapped in a BAD_REQUEST
nexus.HandlerError that retains the original error as its cause. As an exception, a
non-retryable temporal.ApplicationError with type PayloadValidationError is reported as a
BAD_REQUEST nexus.HandlerError with the original error as its cause, since it indicates the
operation input itself is invalid.TestWorkflowEnvironment.MutableSideEffect now honors the provided equals function and only
updates the recorded value when it changes, matching the real worker. Previously it ignored
equals and returned a freshly computed value on every call.client.ExecuteActivity, inbound Nexus request links are forwarded to the activity and the
activity link returned by the server is propagated back to the Nexus operation caller.worker.Options.MaxEagerActivityReservationsPerWorkflowTask to configure the maximum
number of eager activity slots reserved per workflow task. The default remains three. Configured
values must be positive; use DisableEagerActivities to disable eager activity execution.PollerAutoscalingAutoEnroll capability. This only applies to poller types left at their default
(i.e. the worker set neither MaxConcurrent<Type>TaskPollers nor <Type>TaskPollerBehavior);
explicitly configured pollers are left unchanged.worker.Options.PreferredVersionProvider, which can select the version recorded by a
newly encountered workflow.GetVersion call. This supports gradual rollout of a new
GetVersion call before activating its new behavior.ReserveSlot now honors context cancellation while the resource controller is
declining slots. Previously the retry loop observed the context only while the ramp throttle was making
the caller wait, so a poller goroutine could outlive worker shutdown, keeping the worker's stop
WaitGroup from draining and continuing to sample system resources for the life of the process.TryReserveSlot (used for eager task dispatch) no longer blocks for up to
RampThrottle while a concurrent ReserveSlot waits out the ramp throttle. The throttle behavior
is unchanged; only the unnecessary lock contention on the eager path is removed.temporalnexus.MustNewTemporalOperation can now
back an async Nexus operation with a stand-alone activity execution via StartActivity /
StartUntypedActivity. Activity-backed Nexus operations are also supported in TestWorkflowEnvironment.WorkflowDefinitionFactory are now executed via
NewWorkflowDefinition() rather than being wrapped as a function and reflected on (which panicked
with reflect: call of reflect.Value.Call on ptr Value), in both the worker registry and the test
environment. This lets host processes that register a single shared factory (e.g.
roadrunner-temporal / the PHP SDK) use dynamic workflows.NexusOperationCancellationTypeAbandon no longer panic the workflow task when
the operation later starts or completes after the caller is canceled.GetSystemInfo does not report
SDK metadata support.GetSystemInfo UNIMPLEMENTED responses as missing server capability support when
the error indicates an unknown method.Priority on ScheduleWorkflowAction values returned by ScheduleHandle.Describe().workflow.SideEffectWithOptions and workflow.MutableSideEffectWithOptions as valid
deterministic wrappers in workflowcheck.OneTimeVersioningOverride support for workflow start and workflow execution options,
allowing a workflow to route to a target Worker Deployment Version until one Workflow Task
completes there.private to a public package.