Skip to content

0.8.0

Choose a tag to compare

@github-actions github-actions released this 12 Oct 23:39
763de64

What's Changed

  • docs: refresh roadmap and StackExchange.Redis 3.3 comparison by @thomhurst in #903
  • feat: complete JSON merge, length, and power commands by @thomhurst in #905
  • docs: assess subkey notification cache guarantees by @thomhurst in #904
  • feat: persist ASP.NET Core DataProtection keys with Respire by @thomhurst in #906
  • feat: add sorted-set rank results with scores by @thomhurst in #925
  • feat: support Unix domain socket endpoints by @thomhurst in #914
  • feat: add COPY destination database to typed key commands by @thomhurst in #919
  • docs: clarify typed JSON projection reply shapes by @thomhurst in #923
  • feat: add typed server flush modes and deferred commands by @thomhurst in #918
  • feat: add ASP.NET Core health checks for existing Respire clients by @thomhurst in #915
  • feat: add Redis 8.10 TimeSeries ranges, labels, and blocking reads by @thomhurst in #935
  • ci: consolidate PR workflows to cut runner usage by @thomhurst in #942
  • feat: add interoperable ASP.NET Core output caching by @thomhurst in #913
  • feat: retry watched transactions after WATCH conflicts by @thomhurst in #920
  • feat: add typed Sentinel administration by @thomhurst in #922
  • feat: make direct-array JSON projection decoding explicit by @thomhurst in #941
  • feat: resolve DataProtection clients from dependency injection by @thomhurst in #938
  • feat: add typed multi-element list moves by @thomhurst in #946
  • refactor: avoid splitting Sentinel version lines by @thomhurst in #953
  • feat: add conditional ZADD options across command queues by @thomhurst in #916
  • feat: add cumulative stream read limits by @thomhurst in #943
  • feat: expose an opt-in health probe contract for custom clients by @thomhurst in #948
  • feat: add typed INCREX counters and verify rate-limit compatibility by @thomhurst in #945
  • feat: map existing Redis client metrics to standard names by @thomhurst in #939
  • feat: add field-only hash scans and queued pages by @thomhurst in #921
  • feat: configure stream idempotency with XCFGSET by @thomhurst in #940
  • test: parallelize test suites and share Redis containers by @thomhurst in #955
  • perf: restore direct string decode for GetStringAsync by @thomhurst in #985
  • perf: bypass JSON reader for canonical numeric values by @thomhurst in #988
  • perf: use XxHash3 in version 2 value codec frames by @thomhurst in #989
  • perf: keep fully buffered bulk replies in the receive drain by @thomhurst in #993
  • feat: protect output-cache replacements with generation-aware tags by @thomhurst in #987
  • feat: supply primary uncached reads to WATCH callbacks by @thomhurst in #984
  • feat: add set difference and union cardinalities by @thomhurst in #936
  • perf: remove MGET converter closures and reuse validated slots by @thomhurst in #990
  • test: fix flaky unit tests and drop the unit test parallelism cap by @thomhurst in #1006
  • feat: add typed Search suggestion dictionaries by @thomhurst in #1003
  • feat: add typed client list and kill filters by @thomhurst in #947
  • perf: fill large byte GET replies into caller-owned arrays by @thomhurst in #994
  • refactor: validate client filter strings when appending by @thomhurst in #1010
  • Document MGET contracts and wait for Search indexing readiness by @thomhurst in #1007
  • feat: add Search synonyms and tag values by @thomhurst in #1004
  • perf: reuse bounded Zstandard compression contexts by @thomhurst in #1002
  • perf: remove JSON and Deflate intermediate payload copies by @thomhurst in #992
  • refactor: centralize Search suggestion option assembly by @thomhurst in #1011
  • Add typed node-local Search configuration commands by @thomhurst in #1005
  • test: fix flaky Search integration test racing the FT.CREATE scan by @thomhurst in #1012
  • feat: add connection-bound hash import sessions by @thomhurst in #952
  • feat: add Search index inventory and aliases by @thomhurst in #1001
  • feat!: make Redis command and cache metrics opt-in by @thomhurst in #991
  • refactor: centralize pooled JSON serialization and guard write lifetime by @thomhurst in #1014
  • feat: add Search dictionaries and spellcheck by @thomhurst in #1015
  • feat: add grouped client include and exclude filters by @thomhurst in #1021
  • perf: bound canceled and discarded bulk reply storage by @thomhurst in #1019
  • feat: add typed Search query profiling by @thomhurst in #1013
  • chore(deps): update anthropics/claude-code-action digest to 6c69018 by @thomhurst in #1033
  • build: enforce five performance analyzer rules by @thomhurst in #1034
  • feat: observe pubsub messages and explicit stream processing by @thomhurst in #1037
  • perf: migrate dedicated synchronization gates to System.Threading.Lock by @thomhurst in #1020
  • perf: use connection deadline sweep for transaction commits by @thomhurst in #1018
  • test: cover coalesced flush wakes and producer pauses by @thomhurst in #1031
  • fix: await lifecycle cleanup and enforce CA1849 by @thomhurst in #1039
  • fix: bound aggregate storage before trusting reply counts by @thomhurst in #1026
  • refactor: consolidate typed friend-test inspection by @thomhurst in #1042
  • test: prevent retirement fixtures from starving thread-pool cleanup by @thomhurst in #1041
  • chore(deps): update redis:8.10 docker digest to 8aee659 by @thomhurst in #1051
  • fix!: use RespireTimeoutException for private connect deadlines by @thomhurst in #1043
  • refactor: consolidate restartable parser context by @thomhurst in #1050
  • perf: eliminate disabled lifecycle logging allocations by @thomhurst in #1049
  • chore(deps): update anthropics/claude-code-action digest to 86d88e6 by @thomhurst in #1057
  • perf: remove redundant pooled response dispatch by @thomhurst in #1052
  • refactor: share batch and transaction connection policy by @thomhurst in #1059
  • test: fix skipped migration listener initialization by @thomhurst in #1060
  • build: enforce all source performance analyzers by @thomhurst in #1062
  • perf: pool typed serialization scratch and avoid JSON boxing by @thomhurst in #1058
  • chore(deps): update redis:8.10 docker digest to c94085d by @thomhurst in #1068
  • chore(deps): update actions/setup-python action to v6.3.0 by @thomhurst in #1069
  • test: isolate dispatched flush allocation measurements by @thomhurst in #1067
  • feat: add stream consumer recovery options by @thomhurst in #1056
  • test: enforce friend inspection architecture by @thomhurst in #1053
  • test: harden isolated allocation probe startup and cleanup by @thomhurst in #1071
  • chore(deps): update dependency python to 3.14 by @thomhurst in #1072
  • chore(deps): update actions/setup-python action to v7 by @thomhurst in #1073
  • perf: route ready Sentinel commands through direct reply sources by @thomhurst in #1055
  • feat: add typed Redis sparse array commands by @thomhurst in #1066
  • chore(deps): update redis:8.10 docker digest to c94085d by @thomhurst in #1078
  • feat: add standard connection lifecycle metrics by @thomhurst in #1038
  • chore(deps): update dependency microsoft.testing.extensions.hangdump to 2.5.0 by @thomhurst in #1080
  • test: make stale READONLY discovery deterministic by @thomhurst in #1079
  • perf: share typed reply eligibility and verify ready-send strategies by @thomhurst in #1074
  • Add explicit node lifecycle and administration commands by @thomhurst in #1077
  • feat: expand typed Search options and result metadata by @thomhurst in #1091
  • docs: add runnable Cluster and Sentinel samples by @thomhurst in #1090
  • perf: eliminate per-key prefix allocations and initialize facets lazily by @thomhurst in #1047
  • ci: verify Cluster and Sentinel samples against owned Redis topologies by @thomhurst in #1095
  • perf: decode net8 ASCII directly with unchanged initialization policy by @thomhurst in #1035
  • perf: use typed replies for ready cluster commands by @thomhurst in #1087
  • docs: add ASP.NET Core cache and telemetry sample by @thomhurst in #1088
  • chore(deps): update redis docker tag to v8.10 by @thomhurst in #1096
  • fix: retry verified standalone container bind collisions by @thomhurst in #1092
  • fix: verify sample topology health and stop on child exits by @thomhurst in #1097
  • fix: harden topology smoke cleanup and promotion evidence by @thomhurst in #1098
  • feat: add typed Redis atomic slot migration commands by @thomhurst in #1102
  • fix!: preserve unsigned epochs in ClusterInfo results by @thomhurst in #1105
  • perf: evaluate bounded lifecycle metric delivery and protect isolation by @thomhurst in #1100
  • feat: add explicit-node Cluster slot and topology administration by @thomhurst in #1094
  • feat: add typed Valkey slot migration and slot deletion by @thomhurst in #1106
  • test: stabilize shutdown wire receipt and local completion coverage by @thomhurst in #1104
  • docs: archive lifecycle dispatch investigation fixture by @thomhurst in #1110
  • test: cancel pending Cluster epoch convergence commands by @thomhurst in #1111
  • chore(deps): update redis docker tag to v8.10 by @thomhurst in #1103
  • Add FusionCache backplane with shared Respire client support by @thomhurst in #1117
  • docs: explain FusionCache recovery after reconnect exhaustion by @thomhurst in #1121
  • .NET Aspire: configure Respire clients, caches, and telemetry by @thomhurst in #1116
  • feat: add typed Valkey CLUSTERSCAN pages and database ACL guidance by @thomhurst in #1112
  • chore(deps): update anthropics/claude-code-action digest to 5898584 by @thomhurst in #1125
  • chore(deps): update aspire to 13.6.1 by @thomhurst in #1126
  • chore(deps): update actions/upload-artifact action to v7.0.2 by @thomhurst in #1127
  • chore(deps): update actions/download-artifact digest to 9000827 by @thomhurst in #1128
  • docs: retain per-page TimeSeries follower leases after measurement by @thomhurst in #1123
  • Support binary key-prefix views and byte-safe scan checkpoints by @thomhurst in #1122
  • Add FusionCache distributed locker using shared Respire fenced leases by @thomhurst in #1124
  • Spread FusionCache locker polling and clarify cleanup by @thomhurst in #1131
  • feat: detect unavailable Valkey scripting engines by @thomhurst in #1115
  • Borrow commands through synchronous response conversion by @thomhurst in #1139
  • Allow FusionCache leases to outlive caller cancellation by @thomhurst in #1132
  • feat: configure default key prefixes by @thomhurst in #1138
  • Precompute RESP headers, signed integer payloads, and fixed option frames by @thomhurst in #1143
  • perf: reuse ASCII prefixes when writing UTF-8 arguments by @thomhurst in #1142
  • chore(deps): update dependency tunit to 1.73.0 by @thomhurst in #1144
  • chore(deps): update dependency microsoft.testing.extensions.hangdump to 2.5.1 by @thomhurst in #1145
  • chore(deps): update anthropics/claude-code-action digest to 6fed3ca by @thomhurst in #1146
  • Select resumable CLUSTERSCAN with legacy fallback by @thomhurst in #1141
  • refactor: encapsulate UTF-8 frame rewrite reservation by @thomhurst in #1147
  • feat: add explicit pub/sub prefix views by @thomhurst in #1151
  • feat: add optional total lifetime for independent FusionCache leases by @thomhurst in #1148
  • perf: separate connection counters and cache ring head by @thomhurst in #1152
  • refactor: publish admitted ring slots once and guard counter spacing by @thomhurst in #1161
  • perf: stamp command deadlines once before publication by @thomhurst in #1149
  • docs: remove conflict-prone design docs and stale artifacts by @thomhurst in #1165
  • perf: pre-pin Windows socket receive storage by @thomhurst in #1164
  • fix: preserve MTP discovery in guarded dotnet test by @thomhurst in #1162
  • ci: run benchmark workflows on net10.0 only by @thomhurst in #1168
  • chore(deps): update dependency tunit to 1.73.5 by @thomhurst in #1167
  • perf: share one payload buffer across complete aggregate replies by @thomhurst in #1150
  • fix: honor SDK-aware test runner overrides by @thomhurst in #1174
  • chore(deps): update redis:8.10 docker digest to 2c2dff7 by @thomhurst in #1171
  • perf: retain bounded completion buffer spares for deep drains by @thomhurst in #1166
  • perf: avoid watchdog gate entry for non-final replies by @thomhurst in #1173
  • perf: avoid atomic decrement for the final reply owner by @thomhurst in #1170
  • perf: reclaim small receive tails before another read by @thomhurst in #1169
  • refactor: name receive compaction thresholds by @thomhurst in #1178
  • perf: bound response pool retention with striped small buckets by @thomhurst in #1177
  • fix: restrict Windows guard handle inheritance by @thomhurst in #1176
  • perf: bound sparse aggregate copies and centralize retained results by @thomhurst in #1172
  • perf: reserve command spans once and publish after serialization by @thomhurst in #1180
  • perf: transfer completed aggregate prefixes to resumable parsing by @thomhurst in #1179
  • fix: isolate benchmark cancellation by selected label by @thomhurst in #1182
  • perf: reduce client-side cache read overhead by @thomhurst in #1184
  • perf: defer cluster replica refresh closures by @thomhurst in #1191
  • perf: select large-command serialization from current frame bounds by @thomhurst in #1190
  • perf: reuse decoded strings from client cache misses by @thomhurst in #1192
  • chore(deps): update actions/setup-node action to v7.1.0 by @thomhurst in #1203
  • perf: skip empty shared-read invalidation gates by @thomhurst in #1197
  • perf: reuse lazy command classification for client caching by @thomhurst in #1201
  • fix: retry selected-port Docker bind collisions without for by @thomhurst in #1205
  • fix: guard unfinished writer bytes and underestimated bounds in Debug by @thomhurst in #1199
  • perf: reduce coalesced GET result allocation by @thomhurst in #1207
  • perf: dispatch prepared standalone replica reads through typed sources by @thomhurst in #1204
  • perf: retain typed replies with command duration metrics by @thomhurst in #1208
  • Guard pooled router ValueTask consumption and replica policy consistency by @thomhurst in #1210
  • perf: fence cached query inserts by key dependencies by @thomhurst in #1206
  • feat: audit retry categories for commands and typed verbs by @thomhurst in #1218
  • feat: add interoperable SignalR scale-out backplane by @thomhurst in #1211
  • perf: reuse cleared query registration storage safely by @thomhurst in #1219
  • fix: keep Renovate ASP.NET Core updates compatible with .NET 8 by @thomhurst in #1221
  • Expose generation-safe command write outcomes for retries by @thomhurst in #1223
  • perf: retain cache mutation fences through native retirement by @thomhurst in #1222
  • perf: send large SET arrays without coalescing payload copies by @thomhurst in #1217
  • feat: add opt-in tracked HybridCache L1 coherence by @thomhurst in #1227
  • fix: restore gathered SET compilation after mutation fence integration by @thomhurst in #1235
  • feat: host stream consumers with bounded concurrency and scoped handlers by @thomhurst in #1233
  • fix: await HybridCache tag writes and retire observations outside the gate by @thomhurst in #1238
  • fix: preserve allocation-free raced cache reads in Debug builds by @thomhurst in #1237
  • feat: add isolated Redis error metric foundation by @thomhurst in #1243
  • fix: reject reentrant HybridCache cleanup disposal by @thomhurst in #1244
  • perf: cache published standalone replica entry identity by @thomhurst in #1273
  • feat: generate scalar hash model codecs and key templates by @thomhurst in #1272
  • feat: read and write generated hash models with partial HMGET reads by @thomhurst in #1274
  • chore(deps): update anthropics/claude-code-action digest to 38c80c1 by @thomhurst in #1275
  • feat: generate AOT-safe JSON model mappers by @thomhurst in #1276
  • Add failure-only final-owner and borrower error observation leases by @thomhurst in #1271
  • feat: propagate HybridCache tag invalidations across instances by @thomhurst in #1245
  • chore(deps): update dependency testcontainers.redis to 4.16.0 by @thomhurst in #1279
  • chore(deps): update dependency testcontainers to 4.16.0 by @thomhurst in #1278
  • refactor: enforce client-cache admission at native dispatch by @thomhurst in #1239
  • feat: add bounded endpoint circuit breaker foundation by @thomhurst in #1265
  • chore(deps): update dependency awssdk.core to 4.0.102.9 by @thomhurst in #1281
  • fix: disable automatic HTML reporting in core test project by @thomhurst in #1282
  • feat: add generated hash field expiry and tracked updates by @thomhurst in #1277
  • chore(deps): update anthropics/claude-code-action digest to 2dca132 by @thomhurst in #1292
  • feat: generate Search schemas for mapped hash and JSON models by @thomhurst in #1294
  • Reuse endpoint circuit core for failover health probes by @thomhurst in #1299
  • Verify generated mapper Native AOT conformance on .NET 8 and .NET 10 by @thomhurst in #1302
  • Measure generated mapper parity with bracketed handwritten controls by @thomhurst in #1304
  • chore(deps): update dependency tunit to 1.73.19 by @thomhurst in #1306
  • Add source-derived command route ownership guard by @thomhurst in #1293
  • feat: expose categorized Redis error metrics by @thomhurst in #1044
  • Add opt-in standalone endpoint circuit admission by @thomhurst in #1303
  • Observe failures at pooled response boundaries by @thomhurst in #1310
  • fix: report error metrics for entry preflight and fenced mutations by @thomhurst in #1311
  • Complete Aspire sample workflow and smoke checks by @thomhurst in #1314
  • Reduce repeated atomic writes when flush signals coalesce by @thomhurst in #1313
  • Add typed LCS index matches and match-length options by @thomhurst in #1312
  • Verify actual Prometheus exports against the pinned Redis dashboard by @thomhurst in #1315
  • Add binary-safe StackExchange value interop and native command bridge by @thomhurst in #1317
  • Reinvalidate cached mutations when response conversion fails by @thomhurst in #1321
  • Fix typed command telemetry endpoint after maintenance handoff by @thomhurst in #1322
  • Guard batch and transaction dispatch with endpoint circuits by @thomhurst in #1318
  • Observe core dispatch retries and discarded replies with failure-only ownership by @thomhurst in #1316
  • Avoid consumer head reads in cached capacity pre-checks by @thomhurst in #1325
  • perf: send fitting standalone batches in one flush by @thomhurst in #1324
  • feat: isolate circuit admission across Cluster data nodes by @thomhurst in #1329
  • feat: observe typed facet preflight and conversion failures by @thomhurst in #1330
  • perf: keep aggregate progress transfer off the buffered parsing loop by @thomhurst in #1331
  • Add StackExchange compatibility for distributed cache and DataProtection by @thomhurst in #1323
  • Count server and connection errors within failure-only operation owners by @thomhurst in #1333
  • Count pub/sub control and recovery errors with failure-only owners by @thomhurst in #1332
  • Retain stream read error ownership through validation and iteration by @thomhurst in #1338
  • fix: count Lua script failures once per caller without success-path observation rental by @thomhurst in #1344
  • Count Redis errors for raw, multi-key and blocking commands by @thomhurst in #1334
  • fix: count Redis function failures once without success-path observation rental by @thomhurst in #1346
  • Count scan errors through preflight and page cleanup by @thomhurst in #1343
  • Retain payload stream and streamed upload error ownership by @thomhurst in #1345
  • perf: format reserved integer frames once by @thomhurst in #1349
  • fix: retain failure-only error ownership for native locks by @thomhurst in #1348
  • fix: count semaphore failures once after cleanup without success-path observation rentals by @thomhurst in #1347
  • fix: preserve read routing error ownership and retry counts by @thomhurst in #1352
  • Count batch, transaction and deferred-result errors once by @thomhurst in #1350
  • Add Hangfire hash/list commands and deferred batch support by @thomhurst in #1360
  • fix: refresh pre-strategy Sentinel benchmark control by @thomhurst in #1354
  • fix: retain failure-only error owners across cache routes by @thomhurst in #1351
  • Remove raw-command response cancellation boxing by @thomhurst in #1362
  • chore(deps): update dependency stackexchange.redis to 3.4.0 by @thomhurst in #1363
  • Add Hangfire server discovery, atomic locks, and storage subscriptions by @thomhurst in #1366
  • feat: add hash-backed VectorData collections and KNN search by @thomhurst in #1365
  • Implement Hangfire key, string, set, and sorted-set compatibility by @thomhurst in #1364
  • Add VectorData expression filters and filtered retrieval by @thomhurst in #1368
  • Implement Hangfire transaction compatibility by @thomhurst in #1369
  • Add AOT-friendly RedisJSON VectorData collections by @thomhurst in #1370
  • Keep failover group members selected during smart client handoff by @thomhurst in #1367
  • Recover idle stream deliveries with atomic attempt-fenced acknowledgement by @thomhurst in #1371
  • perf: pool streamed upload state machines by @thomhurst in #1374
  • Update anthropics/claude-code-action digest to 1d6de8c by @thomhurst in #1379
  • Verify pinned Hangfire upstream tests and worker lifecycle by @thomhurst in #1378
  • Add delivery limits and atomic fenced stream dead-letter completion by @thomhurst in #1382
  • Update dependency Moq to 4.21.0 by @thomhurst in #1384
  • Verify mixed stream recovery and poison completion after consumer outage by @thomhurst in #1386
  • ci: pull Docker Hub images through mirror.gcr.io to stop rate-limit failures by @thomhurst in #1385
  • docs: audit transport write-outcome performance and retention by @thomhurst in #1383
  • Add capability-aware FT.HYBRID search to VectorData collections by @thomhurst in #1380
  • fix: share bounded retry and final-publication bookkeeping by @thomhurst in #1381
  • Add capability-aware stream worker CLAIM, XNACK and XACKDEL paths by @thomhurst in #1388
  • Run official VectorData lifecycle conformance on hash and JSON by @thomhurst in #1393
  • Update dependency xunit.v3.mtp-v2 to v4 by @thomhurst in #1394
  • Pass official VectorData JSON conformance and normalize IP scores by @thomhurst in #1395
  • Update dependency python to 3.15 by @thomhurst in #1400
  • Preserve completed stream retries through circuit handoff by @thomhurst in #1401
  • Preserve hedge retry counts and audit fan-out error ownership by @thomhurst in #1402
  • fix: preserve deferred pending retry counts at overflow boundaries by @thomhurst in #1407
  • perf: avoid async frame allocations in gathered SET completion by @thomhurst in #1408
  • fix: preserve native response failures through cleanup by @thomhurst in #1409
  • fix(cache): preserve nested producer and waiter retry counts by @thomhurst in #1406
  • docs: mark feature-wave documentation and samples complete by @thomhurst in #1411
  • refactor!: remove legacy health internals +semver:major by @thomhurst in #1414
  • test: fix flaky MovingStaysInMemberAndRealOutageSwitchesGroup (wait for EndpointSwitched handler) by @thomhurst in #1418
  • docs: complete Redis and Valkey typed command coverage by @thomhurst in #1413
  • test: tolerate retried atomic slot migration failures in cluster import test by @thomhurst in #1417
  • test: stabilize typed SET allocation comparison against one-off allocations by @thomhurst in #1421
  • fix(test): serialize hybrid search tests that share Redis servers by @thomhurst in #1422
  • fix: preserve batch and transaction deferred error ownership by @thomhurst in #1412
  • test: scope remaining cache error metric listeners against detached work by @thomhurst in #1419
  • test: attribute cached-caller allocation samples by @thomhurst in #1420
  • ci: split the net10.0 suite into parallel jobs by @thomhurst in #1427
  • test: wait for client cache flushes after ACL rotation by @thomhurst in #1416
  • perf: skip cache invalidation store locks before first publication by @thomhurst in #1424
  • fix(vectordata): write each hash record with one HSET so RediSearch indexes it once by @thomhurst in #1425
  • Evaluate vector-set backend durability and contracts by @thomhurst in #1423
  • Cover official VectorData hash backend contracts by @thomhurst in #1428
  • test: avoid command timeout in maintenance handoff setup by @thomhurst in #1429
  • perf: pool suspended streamed final-frame waits by @thomhurst in #1434
  • fix: stabilize net8 allocation checks and container startup by @thomhurst in #1431
  • fix(test): isolate search profile hybrid counts from concurrent index drops by @thomhurst in #1439
  • ci: compare connection contention with original baseline by @thomhurst in #1430
  • test: stop flush-signal resuming test from starving a 1-CPU thread pool by @thomhurst in #1436
  • Audit script and function correction error ownership by @thomhurst in #1415
  • fix(cluster): follow MOVED and ASK redirects without reconnect backoff by @thomhurst in #1443
  • fix: reserve container fixture ports against outgoing connections by @thomhurst in #1444
  • test: retry random-host-port bind collisions for every container start by @thomhurst in #1445
  • perf(tests): cut unit, integration, analyzer and CI test time by @thomhurst in #1440
  • fix(tooling): post review thread replies from a body file by @thomhurst in #1446
  • Fix Cluster redirect discovery events and shared retry budgets by @thomhurst in #1438
  • perf: share completion state with single-reply ownership by @thomhurst in #1435
  • perf: restore counted single-reply release on completion hot path by @thomhurst in #1449
  • Add stream worker metrics and W3C trace propagation by @thomhurst in #1387
  • test: make KeepAlive_RenewsUntilItsScopeStops timing-robust by @thomhurst in #1450
  • test: tolerate delayed polls in KeepAlive renewal assertion by @thomhurst in #1451
  • test: cancel Redlock acquisition only after every node holds the SET by @thomhurst in #1452
  • test: stop CapabilityCheckTimeoutKeepsTrackerRetryable timing out its retry under CI load by @thomhurst in #1453
  • test: gate Redlock SET replies until cancellation by @thomhurst in #1454
  • Isolate circuit admission across Sentinel data generations by @thomhurst in #1328
  • test: let caller cancellation drive the gated Redlock test by @thomhurst in #1455
  • test: wait for the reconnect gap before asserting hybrid tag observation by @thomhurst in #1456
  • test: wait for fake server accept before idle disconnect assertion by @thomhurst in #1457
  • test: measure batch start allocation in an optimized child probe by @thomhurst in #1458
  • test: wait for reconnect gap consumption in hybrid tag test by @thomhurst in #1460
  • test: always release Redlock reply gates by @thomhurst in #1459
  • Add endpoint tags to Redis error metrics by @thomhurst in #1448
  • Complete VectorData conformance coverage and AOT matrix by @thomhurst in #1461
  • docs: point roadmap circuit breaker work at open issue #863 by @thomhurst in #1466
  • Support expression filters on JSON VectorData collections by @thomhurst in #1468
  • chore(deps): update dependency tunit to 1.74.0 by @thomhurst in #1471
  • Assess Orleans Redis provider compatibility and document persistence/reminder gaps by @thomhurst in #1469
  • Verify shim library conformance and document supported migration paths by @thomhurst in #1475
  • Report endpoint circuit state transitions and rejection metrics by @thomhurst in #1467
  • docs: disposition final-frame transport performance evidence by @thomhurst in #1476
  • chore(deps): update dependency microsoft.orleans.clustering.redis to 10.4.0 by @thomhurst in #1484
  • chore(deps): align Orleans Redis defaults at 10.4.0 and preserve assessment pins by @thomhurst in #1485
  • Add scoped semantic chat response caching with atomic TTL by @thomhurst in #1482
  • Support official Orleans Redis providers through compatibility adapter by @thomhurst in #1489
  • perf: measure large SETs against the original baseline by @thomhurst in #1487
  • Attribute standalone batch allocations with separate trace controls by @thomhurst in #1486
  • chore(deps): update dependency polyfill to 11.4.4 by @thomhurst in #1492
  • chore(deps): update dependency microsoft.diagnostics.netcore.client to 0.2.750501 by @thomhurst in #1491
  • Capture selection code and scheduling for every measured launch by @thomhurst in #1488
  • chore(deps): update dependency microsoft.diagnostics.tracing.traceevent to 3.2.8 by @thomhurst in #1493
  • fix(deps): keep Orleans doc tests on the assessed version by @thomhurst in #1494
  • bench: reproduce public GET regression against pinned control by @thomhurst in #1470
  • feat: configure gathered-write stall bounds independently by @thomhurst in #1495
  • Reuse completed exact MemoryStream fill tasks by @thomhurst in #1483
  • feat: define conservative immediate-command retry policy by @thomhurst in #1500
  • perf: diagnose residual streamed upload and GET allocation owners by @thomhurst in #1501
  • feat: retry standalone immediate commands with write evidence by @thomhurst in #1502
  • feat: compose immediate retries with Sentinel, Cluster, declared requests and failover groups by @thomhurst in #1503
  • feat: refine typed SET/ZADD NX/XX retry categories; stop catalog SET argument refinement by @thomhurst in #1505
  • test: audit immediate retry acceptance and add cross-path evidence by @thomhurst in #1506
  • docs: publish completed immediate retry policy comparison by @thomhurst in #1511
  • fix: load tag metadata before new HybridCache contexts read L2 by @thomhurst in #1512
  • fix: let cluster retries follow failover instead of waiting on a lost owner by @thomhurst in #1510
  • fix: apply retry policy to tracked Cluster cache producers by @thomhurst in #1516
  • perf: cover retry owners and pin pre-retry default comparisons by @thomhurst in #1513
  • perf: pool immediate retry frames and bypass healthy Sentinel discovery by @thomhurst in #1517
  • fix: migrate tracked Cluster retries to pooled frame API by @thomhurst in #1519
  • Audit causal transport diagnostics and preserve unmet aggregate acceptance by @thomhurst in #1527
  • test: restore retry composition and publish aggregate acceptance evidence by @thomhurst in #1522
  • feat: retry transient failures in watched transaction helpers by @thomhurst in #1529
  • Pin corrected selection control comparison by @thomhurst in #1531
  • feat: retry standalone and Sentinel batches as complete units by @thomhurst in #1530
  • feat: retry unwatched MULTI/EXEC transactions as complete units by @thomhurst in #1528
  • docs: point SignalR scale-out to Respire.SignalR instead of the compatibility adapter by @thomhurst in #1532
  • perf: record corrected selection control comparison audit by @thomhurst in #1534
  • feat: retry complete Cluster transactions and batch slot groups by @thomhurst in #1533
  • test: report per-wake allocations and runtime events when a dispatched wake allocates by @thomhurst in #1535
  • fix: record fresh Cluster cursor issuer in retry-enabled batches by @thomhurst in #1540
  • fix: widen dispatched-wake event window by clock uncertainty by @thomhurst in #1541
  • perf: audit package stack allocations and measure local initialization independently by @thomhurst in #1538
  • fix: end unit retry waits on client disposal and add real Redis whole-unit retry coverage by @thomhurst in #1543
  • test: audit whole-unit batch and transaction retry acceptance by @thomhurst in #1539
  • test: fix Sentinel batch connection-loss flake by demoting the former primary's ROLE by @thomhurst in #1544
  • test: synchronize stream failure fixture by @thomhurst in #1542
  • docs: trace the 272-byte dispatched-wake delta to thread-pool worker starts by @thomhurst in #1545
  • docs: record SkipLocalsInit JIT evidence; no attribute ships (#1065) by @thomhurst in #1548
  • feat: make retried stream appends safe with automatic XADD IDMP identities by @thomhurst in #1546
  • fix: run Redis throughput benchmark on net10 with workflow client counts by @thomhurst in #1549
  • chore(deps): update dependency awssdk.core to 4.0.102.10 by @thomhurst in #1550
  • docs: complete higher-level capability documentation by @thomhurst in #1551
  • fix: use one Respire connection in Redis throughput benchmark by @thomhurst in #1552
  • feat: compose endpoint circuit admission with retry policies by @thomhurst in #1547
  • chore(deps): update dependency messagepack to 3.1.12 by @thomhurst in #1554
  • fix: format RespValue numeric text with the invariant culture by @thomhurst in #1558
  • perf: let hot facet commands reach native dispatch by @thomhurst in #1562
  • perf: observe ready cluster replies with a pooled source instead of an async frame by @thomhurst in #1557
  • perf: complete buffered byte[] bulk replies straight from the receive buffer by @thomhurst in #1555
  • perf: reserve bulk header and payload once and format scalars in place by @thomhurst in #1560
  • perf: parse RESP integer header lines in a single pass by @thomhurst in #1561
  • perf: capture direct-route telemetry decisions once per operation by @thomhurst in #1556

Full Changelog: v0.7.19...v0.8.0

NuGet packages

dotnet add package Aspire.Respire --version 0.8.0
dotnet add package Aspire.Respire.DistributedCaching --version 0.8.0
dotnet add package Aspire.Respire.HybridCaching --version 0.8.0
dotnet add package Aspire.Respire.OutputCaching --version 0.8.0
dotnet add package Respire --version 0.8.0
dotnet add package Respire.AI --version 0.8.0
dotnet add package Respire.Aws --version 0.8.0
dotnet add package Respire.Azure --version 0.8.0
dotnet add package Respire.Caching --version 0.8.0
dotnet add package Respire.Caching.Hybrid --version 0.8.0
dotnet add package Respire.Compression.Lz4 --version 0.8.0
dotnet add package Respire.Compression.Zstd --version 0.8.0
dotnet add package Respire.Coordination --version 0.8.0
dotnet add package Respire.DataProtection --version 0.8.0
dotnet add package Respire.DependencyInjection --version 0.8.0
dotnet add package Respire.FusionCache --version 0.8.0
dotnet add package Respire.HealthChecks --version 0.8.0
dotnet add package Respire.Json --version 0.8.0
dotnet add package Respire.OutputCaching --version 0.8.0
dotnet add package Respire.Probabilistic --version 0.8.0
dotnet add package Respire.Search --version 0.8.0
dotnet add package Respire.SignalR --version 0.8.0
dotnet add package Respire.StackExchangeCompat --version 0.8.0
dotnet add package Respire.Streaming --version 0.8.0
dotnet add package Respire.Testing --version 0.8.0
dotnet add package Respire.Testing.Containers --version 0.8.0
dotnet add package Respire.TimeSeries --version 0.8.0
dotnet add package Respire.VectorData --version 0.8.0