Skip to content

1.29.0

Latest

Choose a tag to compare

@github-actions github-actions released this 17 Jun 21:23
4b4e34e

Notable Changes

Added

  • Added experimental temporalio.workflow.signal_with_start_workflow, backed by
    generated system Nexus bindings for
    WorkflowService.SignalWithStartWorkflowExecution.
  • Added OpenAI Agents plugin support for CustomTool dispatch, including lazy
    tool discovery through defer_loading.

Changed

  • Client connections now use gzip transport-level gRPC compression by default.
    Pass grpc_compression=GrpcCompression.NONE to Client.connect or
    CloudOperationsClient.connect to disable it.

Breaking Changes

  • StartWorkflowUpdateWithStartInput now owns the authoritative
    rpc_metadata and rpc_timeout fields for
    OutboundInterceptor.start_update_with_start_workflow. These fields were
    removed from the nested update-with-start input objects, so custom
    interceptors that accessed them there should read or update the top-level
    fields instead.

Fixed

  • Fixed breakpoint() and pdb.set_trace() inside workflow code when a worker
    runs with debug_mode=True or TEMPORAL_DEBUG=1; sandboxed workflows without
    debug mode now get a clearer error pointing to debug_mode=True.

  • Fixed start_update_with_start_workflow interceptor handling so RPC metadata
    and timeouts are forwarded to the underlying execute_multi_operation call.

  • Fixed OpenAI Agents plugin streamed event serialization when pydantic had not
    yet built deferred schemas, and fixed terminal sandbox errors retrying
    forever.

  • Removed the lazy-connect lock from the per-RPC hot path. It was previously
    acquired on every RPC, putting an event-loop-bound primitive on the hot path;
    it is now skipped once the client is connected. This reduces the client's
    coupling to the event loop it connected on, which can help when reusing a
    single long-lived Client across event loops or threads (e.g. the
    dedicated-loop pattern used with gevent/gunicorn and synchronous services).
    Note this does not make a Client fully thread- or loop-agnostic; reusing one
    long-lived loop is still the recommended pattern.

    SDK Core

What's Changed

New Contributors

Full Changelog: 1.28.0...1.29.0