v8.0.0
What's Changed Since v7.0.0
- Fix version suffix in build.yaml by @benjaminpetit in #8113
- Exclude samples folder from PR trigger by @benjaminpetit in #8118
- Upgrading 'Hello World' sample by @IEvangelist in #8116
- Upgrade 'Bank Account' sample by @IEvangelist in #8119
- Enable 3.x scheduled builds by @benjaminpetit in #8005
- Upgraded 'Adventure' samples by @IEvangelist in #8120
- Upgrade 'Blazor Server' sample by @IEvangelist in #8121
- Upgrade 'Blazor Wasm' sample by @IEvangelist in #8122
- Upgrade 'F# Hello World' sample by @IEvangelist in #8129
- Upgrade 'VB Hello World' sample by @IEvangelist in #8137
- Upgrade 'Tic Tac Toe' sample by @IEvangelist in #8135
- Upgrade 'TLS' sample by @IEvangelist in #8136
- Fix a typo by @m-sadegh-sh in #8143
- Add MembershipVersion to GrainDirectoryEntity by @benjaminpetit in #8151
- Fix configuration of BroadcastChannel by @benjaminpetit in #8150
- Fix a typo by @m-sadegh-sh in #8144
- Guard and check for GenerateCodeForDeclaringAssembly when type has no declaring assembly by @ReubenBond in #8156
- Fix packaging of CodeGenerator to accept project properties by @ReubenBond in #8155
- Upgrade 'Streaming' samples by @IEvangelist in #8134
- Upgrade 'Chat Room' sample by @IEvangelist in #8126
- Upgrade 'Stocks' sample by @IEvangelist in #8133
- Upgrade 'Shopping Cart' sample by @IEvangelist in #8132
- Upgrade 'GPS Tracker' sample by @IEvangelist in #8130
- Use code generated or compiled regular expressions where possible by @SukharevAndrey in #8141
- Upgrade 'Chirper' sample by @IEvangelist in #8128
- Upgrade 'Presence' sample by @IEvangelist in #8131
- [main] Add CodeQL3000 tasks by @dougbu in #8160
- Fix the bug in the Chirper sample code by @IEvangelist in #8194
- Delete empty statements as they are treated as errors by some analyzers by @SukharevAndrey in #8192
- Upgrade 'Voting' sample by @IEvangelist in #8138
- Delete samples and update README.md by @IEvangelist in #8154
- Use NuGet Central Package Management to handle dependencies' versions by @SukharevAndrey in #8191
- Optimize message serialization by @pentp in #8185
- Add TransactionFaultInjectionTests to Functional runs by @ReubenBond in #8168
- Fix images, use raw URLs from dependent repo by @IEvangelist in #8202
- Fix mariadb tests by @benjaminpetit in #8198
- Bumped KubernetesClient to v9.0.38 by @EPinci in #8199
- Optimize static codec serialization by @pentp in #8206
- Update
EndpointOptions
by @IEvangelist in #8209 - Update BroadcastChannelProvider.cs by @IEvangelist in #8225
- Remove default parameter values for
AddJsonSerializer
by @ReubenBond in #8228 - Incorporate Orleans.Redis providers by @EPinci in #8212
- Fix diagnostic for invalid grain method return types by @ReubenBond in #8234
- Add
Collection<T>
serialization codec by @ReubenBond in #8238 - Fixed bug where RedisGrainStorage would ignore GrainStorageSerializer option by @willg1983 in #8260
- correct code documentation which incorrectly refers to azure blob storage by @willg1983 in #8258
- Support
IGrainStorageSerializer
for memory grain storage by @shoneefd in #8250 - netstandard 2.1 support for Orleans.Serialization by @jsteinich in #8222
- Various improvements to Redis providers by @ReubenBond in #8261
- Add Redis storage tests based on CommonStorageTests by @willg1983 in #8265
- [Maintenance] Bumping version of some external dependencies by @EPinci in #8272
- Always run scheduled build by @benjaminpetit in #8294
- Fix serialization for records which have no properties of their own by @ReubenBond in #8289
- Expose activation working set as a metric by @ahydrax in #8291
- Implement
DeleteStateOnClear
for Redis grain storage. by @ReubenBond in #8296 - Fix
PooledArrayBufferWriter.AsMemory
by @ReubenBond in #8300 - Fix
IGrainFactory.GetGrain<T>
for unimplemented generic interfaces by @ReubenBond in #8301 - Report GC pause duration when heartbeat is stalled by @adityamandaleeka in #8281
- Set VersionPrefix in nuget pack step by @benjaminpetit in #8304
- Fix Issue #8325 redis options-validators unable to resolve options by @zeinali0 in #8326
- Fix Benchmark map Reduce by @byzworld in #8332
- Improve doc comments for ITypeFilter and ITypeNameFilter by @ReubenBond in #8328
- Improve accuracy and stability of
ActivationWorkingSet
by @ReubenBond in #8321 - Update Orleans.Reminders.csproj by @IEvangelist in #8342
- Fix type parsing of type names with generic array parameter by @ReubenBond in #8337
- Fix assembly name sanitization in code generator by @ReubenBond in #8336
- Update Protobuf Serializer by @larsfjerm in #8334
- Fix for Issue #8322 Questionable test/cast pair in OrleansJsonSerializer.cs by @Jens-G in #8329
- Adds support to Orleans.Analyzers for generic attributes by @michaelmccord in #8352
- Remove inaccurate note on observer method return types by @ReubenBond in #8344
- Prevent analyzer exception on aliased attribute names by @tboby in #8355
- ObserverManager: Guard against
null
in constructor by @bradygaster in #8358 - Allows System Target's to receive one way messages by @jsteinich in #8364
- Migrate from
FormatterServices
toRuntimeHelpers
in preparation for .NET 8 by @ReubenBond in #8362 - Don't overstep on IMessage serialization by @jsteinich in #8363
- Fix type constraints on
DefaultOptionsFormatter
andDefaultOptionsFormatterResolver
by @ReubenBond in #8384 - Code generator respects scoped usage by language version by @jsteinich in #8370
- Fix long key parsing in
DefaultStreamIdMapper
by @nichvolodov in #8378 - Protobuf copiers/codecs for data types by @jsteinich in #8359
- Add a blob container client factory for customisation by @Romanx in #7849
- Use .NextInt64() when computing random TimeSpan. by @henricj in #8382
- Fix: ORLEANS0009 - Skip Static Interface Methods by @cmeyertons in #8389
- Make ManagementGrain a reentrant, stateless worker by @ReubenBond in #8394
- Fix construction of AzureBlobGrainStorage by @ReubenBond in #8395
- Update samples README by @WesleySkeen in #8398
- Adding missing display character by @rwkarg in #8407
- Support custom grain call return types by @ReubenBond in #8415
- Fix parameter null check in RegexStreamNamespacePredicate by @scalablecory in #8429
- Documentation fix by @bill-poole in #8435
- Moving RuntimeContext check inside ReminderRegistry by @cmeyertons in #8436
- Automate more of the Kubernetes hosting experience by @ReubenBond in #8426
- MySQL migration script: Remove modification for column that no longer exists in Orleans 7 by @david-obee in #8314
- Add initial
IAsyncEnumerable<T>
support for grain calls by @ReubenBond in #8416 - In TransactionQueue, ensure readyTask failures are recovered from by @ReubenBond in #8444
- Make
PooledArrayBufferWriter
more versatile, rename by @ReubenBond in #8453 - Improve : throw TypeLoadException on failing to load a type by @kwemou in #8463
- Fix debug assert added for
void
methods:VoidRequest
impliesOneWay
by @ReubenBond in #8468 - Added
HostApplicationBuilder
extensions by @IEvangelist in #8466 - ObserverManager: nits by @ScarletKuro in #8460
- TestHost - Client ability to use IHostConfigurator to align w/ Silo functionality by @cmeyertons in #8454
- Mark Redis providers as stable by @ReubenBond in #8467
- Live grain migration (#7692) by @ReubenBond in #8452
- Clean up doc comments for placement strategies by @ReubenBond in #8473
- Add missing configuration validators for Azure Table Storage providers by @ReubenBond in #8484
- Improve DeploymentLoadPublisher logic and cleanup by @ReubenBond in #8472
- Add ActivationMigrationManager to batch grain activation migrations by @ReubenBond in #8474
- Fix for possible false-positive GC delays by @ntovas in #8483
- Deduplicate generated type manifest providers added via DI by @ReubenBond in #8489
- Add Azure Cosmos DB providers for clustering, grain storage, and reminders by @galvesribeiro in #7848
- Incorporate state name into key for Redis grain storage by @ReubenBond in #8487
- Make discord links more prominent by @ReubenBond in #8496
- Add regression test for #8503 by @ReubenBond in #8504
- Fix double-free when returning pooled buffers by @ReubenBond in #8508
- Relax diagnostic analyzers for static members of grain interfaces by @minichma in #8506
- Expose Writer<>.Output directly instead of via property by @ReubenBond in #8509
- Small, targeted refactor: Address CA1517 (use nameof) by @cybertyche in #8516
- Security: Upgrade two NuGets (and one dependency) that have been flagged by @cybertyche in #8517
- Wait for migrating activations to become active or terminated by @ReubenBond in #8527
- Avoid static members in generic types by @pentp in #8526
- Lift typeof(T) to an instance field where possible by @pentp in #8528
- Apply readonly modifier when possible by @cybertyche in #8531
- Move CancellationToken arguments to the end by @cybertyche in #8525
- Fix Cosmos DB grain storage constructor for DI by @ReubenBond in #8539
- Added support for instanced versions of MayInterleave predicates by @blazknuplez in #8548
- Add test for serializing types derived from Dictionary<K,V> by @ReubenBond in #8552
- Expose DefaultGrainActivator and GrainConstructorArgumentFactory for customization by @ReubenBond in #8550
- Added SUPPORT.md by @bradygaster in #8559
- Update GrainAttributeConcurrency.cs by @IEvangelist in #8560
- Un-Skip ValueTuple tests by @Romanx in #8566
- Add ISpanParsable on to GrainId by @Romanx in #8565
- Fix
UsingDirective
insertion in[NonSerialized]
codefix by @ReubenBond in #8557 - Fix a problem storing real binary data (like protobuf format) by @Serekh in #8538
- Update nullability on IGrainDirectory and implementers. by @Romanx in #8570
- [Dependencies] Bump Event Hubs version by @jsquire in #8545
- Fixes nullability of returned IGrainReminder in GrainReminderExtensions by @JRWinter1 in #8544
- CachedGrainLocator Unregister Ordering by @JohnMorman in #8547
- Add helper for long StreamId keys by @AdrianoAE in #8578
- Update the KubernetesClient NuGet package. by @henric-root in #8576
- Update CollectionAgeLimitAttribute.cs by @IEvangelist in #8585
- Make Field & Tag members
readonly
where applicable by @ReubenBond in #8587 - Fix wire break for IRemoteGrainDirectory API by @ReubenBond in #8593
- Add serializer support for
required
members by @ReubenBond in #8595 - Fix capitalization and formatting for PubSubPublisherState by @ReubenBond in #8594
- Support specifying grain collection period using TimeSpan string syntax by @ReubenBond in #8596
- Highlight regex syntax in
[RegexImplicitChannelSubscription(...)]
and[RegexImplicitStreamSubscription(...)]
by @ReubenBond in #8597 - Allow
ImplicitStreamSubscriptionAttribute.StreamIdMapper
to be initialized by subclasses by @ReubenBond in #8592 - Fix nullability compiler warning on new SDKs by @ReubenBond in #8598
- Fix code generation for serializers with auto generated property ids by @ReubenBond in #8586
- Support specifying timeouts on a per-grain-call basis by @ReubenBond in #8599
- Update InstrumentNames.cs by @IEvangelist in #8602
- Remove all unused usings by @IEvangelist in #8603
- Replace all out of date links, and remove locale segment by @IEvangelist in #8604
- Address all IDE0044. Readonly fields where applicable. by @IEvangelist in #8615
- Fix all IDE0039 warnings, prefer local functions by @IEvangelist in #8605
- Address all IDE0040 warnings. Explicitly provide access modifiers. by @IEvangelist in #8609
- Address all IDE0057, use range operator - simplify slice. by @IEvangelist in #8618
- Address all IDE0034 warnings. Simplify default expressions by @IEvangelist in #8607
- Address all IDE0049. Use language keywords instead by @IEvangelist in #8613
- Address all IDE0251 warnings and naming inconsistencies. by @IEvangelist in #8617
- Ensure reminder services are added when adding Redis reminders by @ReubenBond in #8629
- Do not override deactivation reason when activation registration fails due to existing activation by @ReubenBond in #8651
- Update state storage to use IActivator instead of Activator.CreateInstance to handle unserializable types by @AdrianoAE in #8626
- ORLEANS0005 message arg fix by @ledjon-behluli in #8642
- In GrainDirectoryResolver, replace HasNonDefaultDirectory with IsUsingDhtDirectory by @benjaminpetit in #8660
- Add value type support to IActivator #8682 by @AdrianoAE in #8683
- Ensure that
ClusterMembershipOptions.NumVotesForDeathDeclaration
is not greater thanNumProbedSilos
on startup by @ReubenBond in #8679 - Fix regression in
CollectionAgeLimitAttribute
by @ReubenBond in #8681 - Prevent progress reversal in cluster membership by @ReubenBond in #8673
- Ensure that exceptions thrown from Connection tasks are observed by @ReubenBond in #8691
- Add ILogConsistencyProtocolServices factory for all log consistency providers (#8157) by @ikkentim in #8677
- Close connection when invalid framing is detected by @ReubenBond in #8692
- Cosmos DB: allow customization of retry logic by @ReubenBond in #8693
- Cosmos DB: support custom partition key value providers by @ReubenBond in #8694
- Improve grain directory cache consistency by @ReubenBond in #8696
- Cosmos DB: perform read for consistency when deleting state which is expected to not exist by @ReubenBond in #8700
- Nullify directory entries of defunct local predecessors during grain activation by @ReubenBond in #8704
- Avoid hiding the stack of exceptions thrown from user code by @ReubenBond in #8706
- Improve error checking around constructing and parsing generic grain types and clean up tests by @ReubenBond in #8705
- Fix overread bug in Reader Skip by @JohnMorman in #8709
- Support Timeout.InfiniteTimeSpan in grain delay deactivation by @nichvolodov in #8711
- Do not retry membership updates during shutdown with dev clustering by @ReubenBond in #8719
- Throw if PersistentStateAttribute.StateName is null (#8708) by @ReubenBond in #8718
- Enable enumeration of the keys and entries in RequestContext (#8674) by @ReubenBond in #8720
- Fix flaky OneWay_Deactivation_CacheInvalidated test by @ReubenBond in #8721
- Throw when deserializing Exceptions by reference, and avoid reference tracking for all Exception-derived types (#8628) by @david-obee in #8698
- ORLEANS0010 by @ledjon-behluli in #8643
- Add ORLEANS0010 to AnalyzerReleases.Shipped by @ReubenBond in #8724
- Upgrade to dotnet 8 and bump Orleans version by @benjaminpetit in #8666
- Use keyed services from Microsoft.Extensions.DependencyInjection by @benjaminpetit in #8725
- Correctly count number of items in LRU by @koenbeuk in #8742
- Fix exception while collecting activations by @nichvolodov in #8740
- Identify F# single case discriminated unions as SumType by @gfix in #8739
- Fix "System.InvalidOperationException: Unable to extract integer key from grain id" at Silo.OnActiveStop (#8558) by @peter-perot in #8701
- chore: update dynamodb client options
Service
comment by @qin-guan in #8745 - Source Gen: reuse generated invokables by @ReubenBond in #8749
- Migrate to the Locker GitHub action for locking closed/stale issues/PRs by @jeffhandley in #8750
- Prevent PlacementWorker.ProcessLoop from running on foreign schedulers by @ReubenBond in #8760
- Fix stack deserialization order by @ReubenBond in #8768
- Ensure that all in-built codecs and copiers have corresponding tests, fix issues found by @ReubenBond in #8769
- Prevent external codecs from serializing types which are abstract, generated, or from the framework itself by @ReubenBond in #8765
- Avoid generating IActivator for abstract types by @ledjon-behluli in #8777
- Avoid sending cluster manifest to client if client already has the latest version by @453873 in #8728
- ClientClusterManifestProvider: fix case where gateway returns no update by @HermesNew in #8782
- Use UpDownCounter for grain and system target counts by @Costo in #8781
- Reduce logging noise from MemoryStorage, InsideRuntimeClient, and LocalGrainDirectory by @ReubenBond in #8780
- Fix proxy class type name violation on code-gen by @ledjon-behluli in #8785
- Fixes duplicate code-gen for
CompoundTypeAliasTree
with isolated base interface(s) by @ledjon-behluli in #8788 - Update to stable build packages by @ReubenBond in #8805
What's Changed Since v8.0.0-rc2
- Update to stable build packages by @ReubenBond in #8805
New Contributors
- @453873 made their first contribution in #8728
- @AdrianoAE made their first contribution in #8578
- @Costo made their first contribution in #8781
- @EPinci made their first contribution in #8199
- @HermesNew made their first contribution in #8782
- @JRWinter1 made their first contribution in #8544
- @Jens-G made their first contribution in #8329
- @Romanx made their first contribution in #7849
- @ScarletKuro made their first contribution in #8460
- @Serekh made their first contribution in #8538
- @SukharevAndrey made their first contribution in #8141
- @WesleySkeen made their first contribution in #8398
- @adityamandaleeka made their first contribution in #8281
- @ahydrax made their first contribution in #8291
- @bill-poole made their first contribution in #8435
- @blazknuplez made their first contribution in #8548
- @bradygaster made their first contribution in #8358
- @byzworld made their first contribution in #8332
- @cmeyertons made their first contribution in #8389
- @cybertyche made their first contribution in #8516
- @david-obee made their first contribution in #8314
- @gfix made their first contribution in #8739
- @henric-root made their first contribution in #8576
- @henricj made their first contribution in #8382
- @ikkentim made their first contribution in #8677
- @jeffhandley made their first contribution in #8750
- @kwemou made their first contribution in #8463
- @larsfjerm made their first contribution in #8334
- @ledjon-behluli made their first contribution in #8642
- @m-sadegh-sh made their first contribution in #8144
- @michaelmccord made their first contribution in #8352
- @minichma made their first contribution in #8506
- @ntovas made their first contribution in #8483
- @qin-guan made their first contribution in #8745
- @scalablecory made their first contribution in #8429
- @shoneefd made their first contribution in #8250
- @tboby made their first contribution in #8355
- @willg1983 made their first contribution in #8260
- @zeinali0 made their first contribution in #8326
Full Changelog: v7.0.0...v8.0.0