1.10.0
Highlights
Plugins
Plugins are a new way of providing easy configuration of workers and clients. See PR #548 and the plugins guide for more details.
Windows arm64 Support
The .NET SDK now supports running on Windows arm64 machines. See PR #541 for more details.
π₯ BREAKING BEHAVIOR CHANGE - TLS is assumed if API key is set.
When TemporalConnectionOptions.ApiKey is set, TLS is automatically enabled. To explicitly disable TLS when an API key is provided, set the TemporalConnectionOptions.Tls property to a TlsOption instance with Disabled set to true. See PR #567 for more details.
π₯ MINOR BREAKING CHANGE - Core bridge library rename
The core bridge library has been renamed to temporalio_sdk_core_c_bridge.dll on Windows, libtemporalio_sdk_core_c_bridge.dylib on MacOS, and libtemporalio_sdk_core_c_bridge.so on Linux. See PR #570 for more details.
π₯ MINOR BREAKING CHANGE - ClientEnvConfig namespace change
Moved ClientEnvConfig from Temporalio.Client.EnvConfig to Temporalio.Common.EnvConfig. See PR #545 for more details.
What's Changed
- Do not set OTel span error status for benign exceptions by @cretz in #530
- Use macOS 15 intel runners by @Sushisource in #533
- Fixed memory corruption issues in CustomSlotSupplier by @maciejdudko in #532
- Remove experimental notices from worker tuner APIs by @Sushisource in #534
- Replace tctl with Temporal CLI by @yuandrew in #539
- Support Windows ARM64 by @maciejdudko in #541
- Nexus OpenTelemetry support by @cretz in #538
- π₯ BREAKING CHANGE - Move EnvConfig from Client to Common by @cretz in #545
- Remove erroneous
Temporalio.Workflows.NexusOperationOptions.OperationNameby @cretz in #544 - Fixed Temporalio.Bridge.Scope leaking cancellation tokens by @maciejdudko in #547
- Manual pagination of ListWorkflows operation by @maciejdudko in #546
- Add nightly throughput stress by @THardy98 in #552
- VLN-454: Set explicit permissions for GitHub Actions workflows by @picatz in #554
- Add actions-read permission to CI workflow by @cretz in #556
- Remove experimental annotations from poller behavior options by @Sushisource in #557
- add repo name to slack alert by @THardy98 in #555
- Initial implementation of plugins by @tconley1428 in #548
- Accommodate null Address configuration by @THardy98 in #560
- Add dependency injection support for Nexus services by @jmaeagle99 in #561
- Update tests and generator to .NET 10 by @jmaeagle99 in #562
- Update more setup-dotnet actions by @jmaeagle99 in #564
- Add Nexus operation summary test by @jmaeagle99 in #566
- Nexus custom slot supplier support by @jmaeagle99 in #569
- Fix logging message to clarify that the value is a run ID by @johnricketts in #572
- π₯ Enable TLS if api key specified by @THardy98 in #567
- upload nightly tps metrics to s3 by @THardy98 in #571
- π₯ Enable Worker heartbeating, update Core to 44a6576 by @yuandrew in #570
- Fix api generator and sdk-core protos path by @jmaeagle99 in #574
- Support for gRPC binary metadata headers by @jmaeagle99 in #575
- Allow disabling of workflow tracing event listener in custom meter by @cretz in #580
- Dedicated safe handles for Client and Worker by @jmaeagle99 in #583
- Nexus cancellation types by @cretz in #589
- Update sdk-core and version to 1.10.0 by @jmaeagle99 in #590
- Include Temporal icon in NuGet packages by @jmaeagle99 in #591
- Update smoke test job to use MacOS 15 for Intel variant by @jmaeagle99 in #593
SDK Core Update
Updated from temporalio/sdk-rust@079d1f3 to temporalio/sdk-rust@372b270
- π₯ Add explicit Worker configuration for type (workflow/activity/nexus) in temporalio/sdk-rust#1059
- π₯ C Bridge: Custom slot supplier rework in temporalio/sdk-rust#1025
- Set worker version on eager start requests in temporalio/sdk-rust#1033
- π₯ Client crate cleanup in temporalio/sdk-rust#1067
- π₯ Reorganize Crates in temporalio/sdk-rust#1034
- π₯ Use normal task queue name for sticky task queue client metrics in temporalio/sdk-rust#1039
- Add bounds check for heartbeat interval in temporalio/sdk-rust#1068
- add explicit WorkerShutdown input in temporalio/sdk-rust#1055
- Add README blurb for ulimit increase in temporalio/sdk-rust#1036
- Allow activity/workflow/nexus only workers to be registered on the same client/NS/TQ in temporalio/sdk-rust#1058
- Allow specifying wait time before interrupting polls in temporalio/sdk-rust#1081
- Always send shutdown_worker RPC, fix WorkerStatus state when shutting down worker in temporalio/sdk-rust#1082
- Antithesis instrumentation in temporalio/sdk-rust#1049
- Avoid spamming grpc message too large task failures in temporalio/sdk-rust#1050
- Bon conversion in temporalio/sdk-rust#1074
- Bump cloud-api to v0.8.0 in temporalio/sdk-rust#1052
- Cgroup cpu usage in temporalio/sdk-rust#1029
- Change default WFT fail cause to worker unhandled in temporalio/sdk-rust#1047
- chore: enable skip_client_worker_set_check in init_replay_worker in temporalio/sdk-rust#1044
- Clarifying comment for worker heartbeating's use of latency metric in temporalio/sdk-rust#1089
- Don't warn about BumpStream on workflow worker shutdown in temporalio/sdk-rust#1064
- Downgrade worker heartbeat log in temporalio/sdk-rust#1088
- Emit GrpcMessageTooLarge as failure_reason for WFT in temporalio/sdk-rust#1069
- Ensure "type" metadata included in patch SAs in temporalio/sdk-rust#1032
- Ensure heartbeats aren't flushed on successful activity completion in temporalio/sdk-rust#1019
- feat: add last_sdk_version to workflow activation in temporalio/sdk-rust#1040
- Fix bon in temporalio/sdk-rust#1078
- Fix bug where we count first WFT as sticky cache hit in temporalio/sdk-rust#1091
- Fix local activity type wrong in custom slot supplier in temporalio/sdk-rust#1021
- fix some missed renames for temporalio_sdk_core in temporalio/sdk-rust#1061
- Fix temporal prefix not applied to resource tuner metrics in temporalio/sdk-rust#1043
- Fix wf_task_replay_latency metric recording for non-replay tasks in temporalio/sdk-rust#1083
- Gate worker heartbeating behind namespace capabilities in temporalio/sdk-rust#1046
- Increase CI test timeout in temporalio/sdk-rust#1060
- Issue 1011 - enable testing activities with context. in temporalio/sdk-rust#1014
- No retry worker shutdown & fix shutdown hang in temporalio/sdk-rust#1054
- Notify stream regardless of server need for activity completion in temporalio/sdk-rust#1020
- Refactor client traits in temporalio/sdk-rust#1022
- Remove check between worker_types and max_cached_workflows in temporalio/sdk-rust#1063
- Rename worker heartbeat duration to interval in C bridge, plumb plugin names in temporalio/sdk-rust#1071
- Rename WorkerShutdown to BumpStream, also handle shutdown( case in temporalio/sdk-rust#1056
- separate enable_activities into remote and local for task types in temporalio/sdk-rust#1066
- Set explicit permissions for GitHub Actions workflows in temporalio/sdk-rust#1048
- Support gRPC binary metadata headers in C bridge in temporalio/sdk-rust#1076
- Switched to Rust 1.90 in CI in temporalio/sdk-rust#1024
- Update c bridge for dotnet to allow SharedNamespaceWorker creation in temporalio/sdk-rust#1073
- Update macos intel to 15 in temporalio/sdk-rust#1030
- Upgrade tonic to 0.14 and otel to 0.31 in temporalio/sdk-rust#1028
- Use deployment_build_id as part of key for eager workflow start in temporalio/sdk-rust#1042
- Use hashset to dedupe plugin names from Lang in temporalio/sdk-rust#1072
- Worker Heartbeat: Plumb metrics and migrate to runtime/namespace/client level in temporalio/sdk-rust#1038
New Contributors
- @picatz made their first contribution in #554
- @jmaeagle99 made their first contribution in #561
- @johnricketts made their first contribution in #572
Full Changelog: 1.9.0...1.10.0