What's Changed
- Dependabot lite by @mhelleborg in #2134
- Centralized package management by @mhelleborg in #2135
- OTel ActorContextDecorator should support all ReenterAfter overloads by @kasperhhk in #2138
- Fix - Under load and during topology changes, thread saturation can occur, causing a lockup by @benbenwilde in #2139
- Ignore OperationCanceledException in SafeTask by @mugu-1 in #2140
- Support adding additional error handling to generated actors by @benbenwilde in #2141
- Fix issue reconnecting to a cluster client or member. Fixes bug introduced in 1.7.1.alpha-0.4 build by @benbenwilde in #2142
- Otel Updates by @mhelleborg in #2144
- After an actor is stopped, block continuations from running by @benbenwilde in #2146
- Fix for case where a TopicActor can continue sending messages to a member that no longer exists by @benbenwilde in #2147
- Add try catch to cluster shutdown, so if there are any errors, anything that is waiting for shutdown will still see it by @benbenwilde in #2156
- Add GrainException to support better error handling from generated grains by @benbenwilde in #2157
- Blocked member duration configurable. IsBlocked takes this duration into account. When member leaves, remove everywhere. by @benbenwilde in #2158
- update nugets by @rogeralsing in #2163
- update nugets by @rogeralsing in #2164
- Implemented etcd IClusterProvider by @tyronegroves in #2150
- fix build by @rogeralsing in #2165
- Fix spelling of 'occurred' in cluster logs by @rogeralsing in #2170
- Fix exception summary in Persistence.WithEventSourcing by @rogeralsing in #2171
- refactor: replace sleep with async wait in supervision test by @rogeralsing in #2172
- fix spelling mistakes in identity tests by @rogeralsing in #2173
- Improve actor tests with additional assertions by @rogeralsing in #2174
- Wrapping Task.Delay with an implementation that uses TimeProvider in … by @AmirShitrit in #2149
- docs: add codebase overview by @rogeralsing in #2175
- docs: expand example README explanations by @rogeralsing in #2176
- Replace Thread.Sleep with async delay by @rogeralsing in #2177
- docs: fix spelling of synonym in Terminology.md by @rogeralsing in #2178
- remote: replace async void Disconnect with Task-returning method by @rogeralsing in #2179
- docs: fix Proto.Cluster terminology typo by @rogeralsing in #2182
- fix: correct header file reference by @rogeralsing in #2183
- chore: update copyright headers by @rogeralsing in #2184
- Cleanup actor counts for departed members by @rogeralsing in #2186
- Add OpenTelemetry tracing example by @rogeralsing in #2187
- Add TLS remote communication example by @rogeralsing in #2189
- Add ScheduledMessages example by @rogeralsing in #2188
- test: remove arbitrary delays in ClusterTests for determinism by @rogeralsing in #2180
- Improve mailbox scheduling test assertion by @rogeralsing in #2191
- Add unwatch termination test to WatchTests by @rogeralsing in #2192
- test: verify scheduler cancel repeated sends by @rogeralsing in #2194
- Add receive timeout reset test by @rogeralsing in #2195
- Add routing coverage for pool routers by @rogeralsing in #2197
- test: add missing pool router coverage by @rogeralsing in #2198
- test: extend scheduler coverage by @rogeralsing in #2196
- Add coverage for ProcessRegistry helper methods by @rogeralsing in #2199
- Add comprehensive supervision tests by @rogeralsing in #2201
- test: cover supervision restart scenarios by @rogeralsing in #2203
- Add tests for core utilities by @rogeralsing in #2204
- Stabilize actor metrics and supervision tests by @rogeralsing in #2205
- Return early on duplicate cluster activation requests by @rogeralsing in #2206
- Enable NuGet caching in GitHub workflows by @rogeralsing in #2207
- chore: target only .NET 8 by @rogeralsing in #2208
- fix duplicate dotnet-etcd package entry by @rogeralsing in #2209
- chore: update OpenTelemetry dependencies by @rogeralsing in #2210
- feat: cache build outputs by @rogeralsing in #2212
- chore: reduce workflow fetch depth by @rogeralsing in #2215
- Make coverage optional by @rogeralsing in #2218
- Only produce symbol packages in CI by @rogeralsing in #2217
- Fix BuildStartedActivity overload to start activity with original message by @rogeralsing in #2211
- chore: modernize example programs by @rogeralsing in #2219
- docs: summarize eventstream interactions by @rogeralsing in #2220
- docs: document membership gossip flow by @rogeralsing in #2221
- docs: link root documentation by @rogeralsing in #2222
- Escalate unknown system messages by @rogeralsing in #2223
- test supervision strategy override in actor by @rogeralsing in #2224
- refactor: streamline gossip callbacks by @rogeralsing in #2225
- Add cluster gossip example by @rogeralsing in #2226
- test: add graceful leave blocklist test by @rogeralsing in #2227
- test(cluster): add gossip request validation tests by @rogeralsing in #2228
- test: add redundant gossip test by @rogeralsing in #2229
- test: simulate gossip partition without blocklist by @rogeralsing in #2231
- Fix dropped remote dead letters targeting wrong PID by @rogeralsing in #2233
- Fix ActorContext response logging by @rogeralsing in #2234
- refactor: remove grpc core support by @rogeralsing in #2236
- feat: unify remote configuration by @rogeralsing in #2237
- Guard gossip core test with locks by @rogeralsing in #2238
- test: add large message envelope test by @rogeralsing in #2239
- Move MessageBatch creation into stream writers by @rogeralsing in #2240
- refactor: move message batching out of Endpoint by @rogeralsing in #2241
- fix: tighten consensus check nullability by @rogeralsing in #2243
- Use snapshot flag in persistence recovery by @rogeralsing in #2244
- Memoize Rendezvous member filtering by @rogeralsing in #2245
- Use context cancellation tokens in topic actor by @rogeralsing in #2246
- Use configurable activation timeout by @rogeralsing in #2247
- Expand typed logging across core libraries by @rogeralsing in #2248
- Replace raw log statements in Proto.Actor by @rogeralsing in #2249
- Use structured logging for remaining raw messages by @rogeralsing in #2250
- test: add guardian process tests by @rogeralsing in #2252
- Add timer extension tests for scheduler by @rogeralsing in #2251
- test: add stashing tests by @rogeralsing in #2253
- Remove obsolete .NET version directives by @rogeralsing in #2254
- Replace custom WaitUpTo with Task.WaitAsync by @rogeralsing in #2255
- Use Task.Run in mailbox dispatcher by @rogeralsing in #2256
- Use asynchronous continuations for task completion by @rogeralsing in #2257
- Use shared or seeded Random by @rogeralsing in #2260
- Remove explicit System.ValueTuple references by @rogeralsing in #2259
- Use Thread.Yield for non-blocking MPMCQueue backoff by @rogeralsing in #2258
- Avoid blocking Result usage in cluster activation flows by @rogeralsing in #2261
- Avoid channel closed exception when stopping batching producer by @rogeralsing in #2262
- docs: add agents instructions by @rogeralsing in #2263
- ci: run tests on dev branch manually by @rogeralsing in #2264
- feat: allow partition actor prop customization by @rogeralsing in #2266
- Track activation requests during partition identity tests by @rogeralsing in #2267
- feat: expose activation actor send/receive metrics by @rogeralsing in #2268
- Track forwarded activation metrics in PartitionIdentityTests by @rogeralsing in #2269
- Include activation stats in PartitionIdentity test failures by @rogeralsing in #2270
- Expose actor start counts in partition identity test assertions by @rogeralsing in #2274
- chore: simplify supervision log messages by @rogeralsing in #2275
- unobsolete logger by @rogeralsing in #2276
- Organize examples by core library by @rogeralsing in #2280
- refactor: unify ReenterAfter with generic helpers by @rogeralsing in #2281
- refactor: relocate config and context by @rogeralsing in #2282
- refactor: rename Member directory to Membership by @rogeralsing in #2283
- Refactor mailbox interface and factories by @rogeralsing in #2284
- Add Proto.TestKit example with probes and fixture by @rogeralsing in #2285
- Use TotalSeconds in TestProbe messages by @rogeralsing in #2287
- Add OpenTelemetry console example by @rogeralsing in #2286
- refactor: replace static testkit with probe middleware by @rogeralsing in #2290
- feat(testkit): add async test probe by @rogeralsing in #2291
- Add mailbox probe and system message support to TestKit by @rogeralsing in #2292
- refactor: use TestProbe for system message assertions by @rogeralsing in #2293
- feat(testkit): move mailbox stats and simplify probe API by @rogeralsing in #2294
- Add TestKit polling helper and replace ad‑hoc waits by @rogeralsing in #2295
- Ensure RandomGroup router test waits for routee removal by @rogeralsing in #2297
- Add scheduler hook for deterministic scheduler tests by @rogeralsing in #2296
- refactor: probe-based consensus waits by @rogeralsing in #2298
- Drain removed routee mailboxes in router tests by @rogeralsing in #2299
- Revert "refactor: probe-based consensus waits" by @rogeralsing in #2301
- refactor scheduler tests to use testprobe by @rogeralsing in #2302
- refactor: modernize ReceiveTimeout tests with TestProbe by @rogeralsing in #2304
- Use TestProbe in timer tests by @rogeralsing in #2303
- refactor watch tests to use TestProbe by @rogeralsing in #2306
- Replace watcher actors with TestProbe in remote tests by @rogeralsing in #2305
- Use TestProbe in repeated request cancellation test by @rogeralsing in #2307
- refactor: add CreateTestProbe helper in forced serialization tests by @rogeralsing in #2310
- Replace MyTestActor with TestProbe in broadcast router tests by @rogeralsing in #2309
- Use mailbox stats to await stop in reenter test by @rogeralsing in #2308
- refactor: use test helpers for probes and mailbox stats by @rogeralsing in #2311
- Use PoisonAsync and predicate-based test assertions by @rogeralsing in #2312
- refactor(testkit): split expect/get helpers and refine mailbox check by @rogeralsing in #2313
- Use ExpectNextUserMessageAsync in UnknownSystemMessageTests by @rogeralsing in #2315
- Use probe to await restart in AlwaysRestart tests by @rogeralsing in #2314
- Replace actor helpers with test probes by @rogeralsing in #2316
- docs: clarify testing guidelines by @rogeralsing in #2317
- Update AGENTS.md by @rogeralsing in #2318
- test: use probe for concurrent message ack by @rogeralsing in #2319
- Replace Task.Delay checks with TestKit helpers in PubSub tests by @rogeralsing in #2320
- Update AGENTS.md by @rogeralsing in #2323
- refactor: use TestProbe in FunctionActor test by @rogeralsing in #2324
- test: await mailbox statistics instead of fixed delays by @rogeralsing in #2325
- Use AwaitConditionAsync in mailbox scheduling tests by @rogeralsing in #2326
- test: use probes for disposable actor tests by @rogeralsing in #2327
- Wait for TestProbe context and drop probe startup delays by @rogeralsing in #2330
- Encapsulate TestProbe context by @rogeralsing in #2331
- refactor: add TestProbe.Self property by @rogeralsing in #2332
- test: await mailbox escalation by @rogeralsing in #2334
- docs: focus testkit docs by @rogeralsing in #2333
- feat(testkit): enqueue repeated start by @rogeralsing in #2335
- refactor actor lifecycle tests to use probe by @rogeralsing in #2336
- Use ExpectEmptyMailbox in watch test by @rogeralsing in #2338
- Replace fixed delays with gossip polling in partition test by @rogeralsing in #2339
- Ensure block list propagation before gossip in graceful leave test by @rogeralsing in #2341
- Use ExpectEmptyMailbox in watch test by @rogeralsing in #2337
- Use AwaitConditionAsync in PID cache invalidation test by @rogeralsing in #2340
- Extract member state delta builder by @rogeralsing in #2342
- feat: inject gossip instance by @rogeralsing in #2343
- test: remove fixed delays via TestKit by @rogeralsing in #2344
- Use CancellationTokens helper in cluster tests by @rogeralsing in #2346
- refactor MemberList topology update by @rogeralsing in #2347
- refactor: use shared spawner helper in actor tests by @rogeralsing in #2345
- Document Task.Delay usage across codebase by @rogeralsing in #2348
- Refactor retry helpers with cancellation support by @rogeralsing in #2350
- docs: document member delta builder by @rogeralsing in #2351
- Refactor gossip member delta builder for deterministic behavior by @rogeralsing in #2352
- Add documented consensus helpers by @rogeralsing in #2353
- feat(gossip): add deterministic random provider by @rogeralsing in #2355
- refactor: add pure MergeStates and tests by @rogeralsing in #2354
- Introduce gossip transport abstraction and tests by @rogeralsing in #2356
- feat(gossip): inject member and block list dependencies by @rogeralsing in #2357
- feat: inject gossip config by @rogeralsing in #2358
- fix: initialize gossip after cluster services by @rogeralsing in #2361
- docs: expand TestKit README by @rogeralsing in #2362
- refactor: decouple gossiper from cluster by @rogeralsing in #2363
- test: verify gossiper across remote nodes by @rogeralsing in #2364
- stabilize flakey tests by @rogeralsing in #2365
- testkit: share gossip partition helper by @rogeralsing in #2366
- Fix Gossip composite consensus test timing by @rogeralsing in #2367
- docs: document gossip architecture and testkit by @rogeralsing in #2370
- testkit: add ExpectMemberToExist helper by @rogeralsing in #2369
- Resolve duplicate member selection deterministically by @rogeralsing in #2371
- docs: clarify gossip membership internals by @rogeralsing in #2372
- docs: clarify gossip type relationships by @rogeralsing in #2373
- docs: clarify gossip membership flow by @rogeralsing in #2374
- Refactor MemberList into managers by @rogeralsing in #2375
- refactor consensus logging helper in gossiper by @rogeralsing in #2377
- Refactor BlockGracefullyLeft member filtering by @rogeralsing in #2378
- Use ToImmutableDictionary in Gossiper.GetState by @rogeralsing in #2379
- refactor: clarify variable naming by @rogeralsing in #2380
- chore: fix Roslynator warnings by @rogeralsing in #2381
- Fix nullability warnings in core components by @rogeralsing in #2383
- Fix dependency and nullability warnings by @rogeralsing in #2384
- refactor gossip gossiper by @rogeralsing in #2385
- refactor: modularize cluster diagnostics and init by @rogeralsing in #2386
- refactor: extract connection runner by @rogeralsing in #2387
- Fix StopActorWithLongRunningTask test race by @rogeralsing in #2388
- Use typed logging in ConnectionRunner by @rogeralsing in #2390
- Update AGENTS.md by @rogeralsing in #2391
- Use typed logging in ConnectionRunner by @rogeralsing in #2389
- refactor: split endpoint reader and writer by @rogeralsing in #2392
- test: stabilize receive timeout reset test by @rogeralsing in #2393
- refactor: extract partition helpers by @rogeralsing in #2394
- refactor remote stream processing by @rogeralsing in #2395
- docs: add endpoint documentation by @rogeralsing in #2396
- Clarify remote endpoint type names by @rogeralsing in #2397
- add diagram by @rogeralsing in #2398
- Fix typo in README.md regarding mailbox processing by @rogeralsing in #2399
- Fix nullability warnings in Proto.Actor by @rogeralsing in #2277
- Update KubernetesClient package to version 17.0.14 by @sfmskywalker in #2403
- Add AI-oriented context guides by @rogeralsing in #2404
- clean up remote tests by @rogeralsing in #2405
- Refine shared future wrap-around regression test by @rogeralsing in #2407
- Remove net5 artifacts from remaining projects by @rogeralsing in #2408
- Add documentation for collecting code coverage with dotnet test by @rogeralsing in #2409
- Added optional ClusterIdentity parameter to IMemberStrategy.GetActivator by @mhelleborg in #2410
New Contributors
- @kasperhhk made their first contribution in #2138
- @mugu-1 made their first contribution in #2140
- @tyronegroves made their first contribution in #2150
Full Changelog: 1.7.0...1.8.0