Skip to content

v10.3.0

Latest

Choose a tag to compare

@ReubenBond ReubenBond released this 27 Aug 15:16
· 4 commits to main since this release
Immutable release. Only release title and notes can be modified.
06754a9

Orleans 10.3.0

Orleans 10.3.0 expands the platform across clustering, streaming, persistence, integrations, serialization, and developer tooling while delivering a broad reliability and performance pass. Major outcomes include stronger distributed-directory and membership behavior, new streaming and storage providers, hardened transactions and durable jobs, incremental source generation, safer JSON storage deserialization, and new application templates. Alongside these features and fixes, the release optimizes key runtime paths, comprehensively refreshes the docs, strengthens testing and CI, and updates dependencies and repository maintenance.

Compatibility notes

Important

Review these changes before upgrading. This release contains three intentionally behavior-changing updates.

  • Default JSON storage serializer type allow-list (#10268). The default Newtonsoft.Json-based Orleans storage serializer now resolves $type metadata only for types permitted by Orleans' configured type filters and manifest. Existing wire data remains readable when its types are allowed; [GenerateSerializer] types and standard permitted BCL types continue to work without changes. If persisted, streamed, or transactional JSON contains other types, reads now fail with an actionable JsonSerializationException. Prefer registering those types through TypeManifestOptions.AllowedTypes, [GenerateSerializer], ITypeNameFilter, or ITypeFilter; OrleansJsonSerializerOptions.AllowAllTypes = true restores the former permissive JSON behavior when a narrowly scoped allow-list is not practical.
  • Updated RPC semantic convention keys (#10354). Orleans activities now emit the current OpenTelemetry RPC key rpc.system.name; Orleans-specific service, target, and source metadata move to orleans.rpc.service, orleans.rpc.target_id, and orleans.rpc.source_id. The runtime-side rpc.method value is now qualified as <interface>/<method>, and affected ActivitySource versions are incremented. Update dashboards, alerts, collectors, and queries which depend on the legacy rpc.system, rpc.service, rpc.orleans.target_id, or rpc.orleans.source_id keys or the previous method value.
  • Grain context configured before construction (#10565). Orleans now deterministically applies IConfigureGrainContext actions before grain construction, so constructors can observe fully configured context state. Custom IGrainContextActivator implementations must migrate from CreateContext(GrainAddress) to CreateContext(GrainAddress, IConfigureGrainContext[]) and apply the supplied configurators before constructing the grain. Stateless-worker configurators continue to apply to the outer stateless-worker context.

Highlights

Runtime, clustering & resilience

Streaming

  • New AWS Kinesis support, SQS data adapters with FIFO support, Event Hubs Aspire integration, grain-backed checkpointing, and generalized Azure Table checkpointing broaden deployment choices (#8967, #8723, #9328, #10345, #10355).
  • Persistent streams now flow cancellation; stateless workers can consume streams; Azure Queue migration supports compact JSON; and stream telemetry includes richer tags (#10383, #10657, #10507, #8631).
  • Redis implicit subscriptions, SQL Server queue commits, ADO.NET handoffs, batched acknowledgements, implicit rewind handling, and memory/Event Hubs hot paths were hardened or optimized (#10423, #10572, #10536, #10574, #10655, #10662, #10550, #10767).

Storage, persistence, journaling, durable jobs & transactions

  • New Azure Table and Redis journal providers, DynamoDB transactional storage, file-based grain storage, and a System.Text.Json grain storage serializer expand persistence options (#10254, #9823, #9616, #9537, #10806, #9505).
  • Transactions receive extensive conflict, recovery, retry, isolation, cancellation, and diagnostics hardening across providers (#10372, #10376, #10382, #10375, #10374, #10385, #10545, #10743).
  • Persistent state is now concurrency-safe and cancellation-aware, while journaling snapshot operations and durable-job retry/rescheduling semantics are more robust (#10255, #10641, #10800, #10681, #10349, #10547, #10716, #10679).

Providers & integrations

  • Google Cloud Firestore providers, Cosmos DB custom document IDs and partition keys, ADO.NET DbDataSource support, and improved Azure, ZooKeeper, Redis, NATS, and relational-provider behavior extend and stabilize integrations (#8462, #8699, #10326, #10429, #10381, #10437, #10835, #10422, #10505, #10276).
  • SQL Server, PostgreSQL, and MySQL clustering add the missing defunct-silo cleanup query (#8811, #9125, #8896).

Serialization, code generation & analyzers

  • The source generator is now incremental, generates provider metadata at build time, avoids runtime provider scanning, and supports record-parameter field IDs and custom grain-call return types (#10035, #10493, #10566, #10495, #10682).
  • Serialization reduces codec and buffer allocations, adds type/assembly allow-list helpers, and clarifies type-trust configuration (#10301, #10340, #10668, #10228, #10424).
  • Analyzers detect RPC contract changes and provide improved diagnostic guidance (#10337, #10832).

Developer experience, templates, samples & docs

  • New Orleans application templates and a basic clustering sample make it easier to start and validate applications (#10646, #10690, #10622).
  • Connection middleware abstractions and framing helpers provide new transport extension points (#10136, #10433).
  • The docs were comprehensively reorganized and modernized across onboarding, architecture, grains, hosting, operations, security, observability, persistence, streaming, testing, deployment, migration, and production guidance (#10331, #10332, #10334, #10335, #10327, #10328, #10333, #10330, #10336, #10329, #10675, #10746).
  • Test infrastructure moved to xUnit v3 and Microsoft.Testing.Platform, with provider conformance kits, published test results, coverage reporting, and extensive reliability improvements (#10722, #10726, #10490, #10785, #10730, #10733, #10842, #10438, #10738).

Detailed changelog

Every change from the autogenerated changelog is listed once below.

Runtime, clustering, reminders & resilience (34)
Streaming (21)
Storage, persistence, journaling, durable jobs & transactions (26)
Providers & integrations (12)
Serialization, code generation & analyzers (15)
Developer experience, templates & samples (4)
Documentation (89)
Testing (117)
CI, build, dependencies & repository maintenance (34)

New Contributors

Full Changelog: v10.2.2...v10.3.0