For more details check our blog post: TBD (ETA 21.09.2026)
What's Changed
- feat(partitions): add consensus per partition and extra by @numinnex in #3071
- feat(consensus): add session registration protocol with combined login+register by @krishvishal in #3108
- feat(consensus): impl consensus group mechanism by @numinnex in #3138
- feat(bench): redesign benchmarks dashboard with landing + compare mode by @spetz in #3145
- refactor(bench): unify benchmarks list and fix best-pick selection by @spetz in #3146
- fix(bench): anchor hero display to showcase pick, fix gitref links by @spetz in #3147
- fix(bench): fix mobile layout, compare URL, and shared branded loader by @spetz in #3148
- chore(deps): update workspace dependencies by @krishvishal in #3149
- fix(configs): make environment variable name suggestions deterministic by @Standing-Man in #3142
- fix(connectors): increase poll budget in fetch_rows_as to fix flaky restart test by @atharvalade in #3106
- chore: bump Rust to 1.95 by @krishvishal in #3153
- fix(csharp): use OS ephemeral ports in IggyClusterFixture to fix flaky CI by @krishvishal in #3155
- feat(message_bus): implement async fire-and-forget transport for VSR consensus by @hubcio in #3134
- ci(csharp): auto-retry flaky integration tests by @krishvishal in #3160
- chore(deps): bump ctor, cucumber, libc, rustls + security patches by @krishvishal in #3161
- docs: redesign header with theme-aware logo and SDK badges by @krishvishal in #3162
- docs: Add trendshift's github ranking badge to README by @kparisa in #3170
- chore(deps): bump python-dotenv from 1.2.1 to 1.2.2 in /foreign/python by @dependabot[bot] in #3150
- fix(go,csharp): remove duplicate consumer groups in DeserializeClient/MapClient by @atharvalade in #3164
- feat(connectors): implement Delta Lake Sink Connector by @kriti-sc in #2889
- chore(web): update dependencies by @mmodzelewski in #3185
- feat(configs): add ServerNgConfig schema with message_bus section by @hubcio in #3189
- feat(java): Implement CLI and resource provisioner for pinned producer benchmark by @slbotbm in #3159
- chore(deps): bump mako from 1.3.10 to 1.3.11 in /bdd/python by @dependabot[bot] in #3137
- ci: bump GitHub Actions to Node.js 24-compatible versions by @hubcio in #3086
- fix(ci): honor staged file scope in lint hooks by @Standing-Man in #3188
- test(csharp): add leader_redirection scenario to BDD tests by @explise in #3193
- feat(connectors): implement Avro payload support with separate encoder, decoder and transform crates by @Tyooughtul in #3141
- feat(go): add delete segments support by @matanper in #3191
- fix(connectors): reject duplicate iggy_sink_open and iggy_source_open by @MukundaKatta in #3179
- chore(repo): add ASF incubator status and update readme by @spetz in #3208
- test(server): add QUIC transport coverage to consumer group scenarios by @explise in #3207
- ci: allow node and common scopes in PR titles by @hubcio in #3209
- feat(message_bus): add QUIC, TCP-TLS, WS, WSS transports for SDK clients by @hubcio in #3192
- chore(deps): bump workspace deps + migrate ctor 1.0 by @krishvishal in #3214
- feat(shard): add v2 consumer-offset commands with AckLevel by @krishvishal in #3151
- chore(deps): bump uuid and @cucumber/cucumber in /foreign/node by @dependabot[bot] in #3216
- feat(cli): add context show and session status commands by @atharvalade in #3096
- fix(node): deserialize void response now ignores payload length for all void commands by @oscarArismendi in #3182
- fix(go): return error instead of panic on S2 decode failure by @atharvalade in #3166
- chore(deps): bump workspace dependencies by @krishvishal in #3230
- chore(deps-dev): bump fast-uri from 3.1.0 to 3.1.2 in /foreign/node by @dependabot[bot] in #3229
- chore(deps): bump mako from 1.3.11 to 1.3.12 in /bdd/python by @dependabot[bot] in #3225
- feat(csharp): add mising metrics to StatsResponse by @lukaszzborek in #3221
- chore(repo): drop DEPENDENCIES.md per ASF policy by @hubcio in #3222
- feat(cpp): add messaging FFI functions for C++ SDK by @seokjin0414 in #3046
- feat(cluster): implement replica bootstrap by @numinnex in #3163
- fix(message_bus): expose background_tasks_len in release builds by @hubcio in #3242
- chore(deps): bump the minor-and-patch group with 10 updates by @dependabot[bot] in #3237
- chore(deps): bump urllib3 from 2.6.3 to 2.7.0 in /foreign/python by @dependabot[bot] in #3236
- fix(common): errors with clippy pedantic (manual_assert) by @chammika in #3204
- feat(configs): add address validation for
QUIC/HTTPbuilders by @Standing-Man in #3152 - feat(server,mcp): add systemd watchdog integration by @jpds in #3233
- fix(ci): pin cargo-zigbuild to 0.22.1 and alpine to 3.23 by @hubcio in #3249
- refactor(connectors): isolate per-connector init failures in runtime by @mmodzelewski in #3244
- fix(connectors): log underlying errors instead of discarding them in SDK poll/consume paths by @atharvalade in #3200
- feat(consensus): cache reply payload and notify subscriber on commit by @krishvishal in #3223
- ci: prepend ~/.cargo/bin to PATH after rustup show by @hubcio in #3251
- chore(repo,ci): fix macOS pre-merge, bump versions by @hubcio in #3248
- feat(ci): label PR review state via slash commands and lifecycle by @hubcio in #3231
- ci: declare explicit read-only permissions on reusable workflows by @arpitjain099 in #3243
- ci: allow org members to drive PR triage commands by @hubcio in #3255
- test(sdk): validate handle_response status and length edge cases by @ankushT369 in #3202
- fix(ci): stop publish failing on existing immutable edge tags by @hubcio in #3259
- ci: make PR triage react to reviews and survive transient errors by @hubcio in #3260
- ci: add PR welcome comment, widen changes-requested gate by @hubcio in #3261
- chore(deps-dev): bump svelte from 5.55.5 to 5.55.7 in /web by @dependabot[bot] in #3263
- chore(deps): bump devalue from 5.6.4 to 5.8.1 in /web by @dependabot[bot] in #3262
- fix(ci): handle fork-PR triage commands via workflow_run handoff by @hubcio in #3268
- feat(java): add actor and data batch generator for java bench by @slbotbm in #3218
- ci: add github-actions ecosystem to dependabot by @hubcio in #3271
- fix(go): add bounds checking to DeserializeStreams for payloads > 64KB by @atharvalade in #3165
- fix(server): warn and skip non-numeric filenames in consumer offset directories instead of panicking by @atharvalade in #3135
- chore(deps): update workspace deps by @hubcio in #3280
- ci: collapse status into finalize_pr, fix cancel hang by @hubcio in #3282
- ci: run PR triage on ubuntu-24.04-arm for faster pickup by @hubcio in #3270
- fix(ci): disable bazel cache for cpp linting by @slbotbm in #3281
- fix(ci): stop stale bot from re-marking PRs each week by @hubcio in #3283
- chore(deps): bump softprops/action-gh-release from 2 to 3 by @dependabot[bot] in #3274
- ci: add Miri UB detector for binary_protocol and consensus by @krishvishal in #3284
- ci: fail fast pre-merge matrices by @hubcio in #3286
- refactor(ci): rely on pre-commit file arguments by @Standing-Man in #3201
- refactor(connectors): extract row-processing logic into reusable process_row method by @atharvalade in #3198
- chore(deps): bump the minor-and-patch group with 5 updates by @dependabot[bot] in #3289
- chore(deps): bump the minor-and-patch group across 1 directory with 3 updates by @dependabot[bot] in #3288
- ci: remove team from dependabot assignees field by @hubcio in #3295
- chore(deps): bump mongodb from 3.6.0 to 3.7.0 in the minor-and-patch group by @dependabot[bot] in #3296
- chore(deps-dev): bump @sveltejs/kit from 2.58.0 to 2.60.1 in /web by @dependabot[bot] in #3297
- feat(cluster): wire multi-shard cross-shard communication for server-ng by @hubcio in #3269
- feat(csharp): implement rented message polling by @lukaszzborek in #3250
- feat(simulator): deterministic seed based workload fuzz harness by @krishvishal in #3272
- ci: run stale-prs unmark jobs on arm runner by @hubcio in #3300
- ci: run PR title check from dedicated workflow by @Standing-Man in #3301
- fix(connectors): Add unwrap_envelope transform and envelope detection to fix source-sink format mismatch by @atharvalade in #3197
- refactor(server): extract server-only types into new crate
server_commonby @hubcio in #3298 - feat(ci): disable rust-cache for cpp linting step by @slbotbm in #3316
- fix(connectors): unify extract_column_value into single free function by @atharvalade in #3199
- fix(connectors): replace overloaded InvalidRecord with distinct error variants by @atharvalade in #3194
- feat(cpp): add functions related to system by @slbotbm in #3102
- feat(python): Configure ruff properly and conform to modern python coding standards by @slbotbm in #3318
- feat(go): introduce context.Context to client methods by @chengxilo in #2964
- ci(python): add interpreter version sync check by @WaterWhisperer in #3319
- feat(sdk): implement vsr header framing by @numinnex in #3254
- feat(connectors): add agent docs, per-batch observability, atomic state by @spetz in #3321
- feat(php): implement initial version of PHP SDK by @countradooku in #3235
- chore(deps): bump workspace; migrate sqlx 0.9 + keyring 4 by @hubcio in #3324
- ci: share runner disk cleanup across PHP, Rust, BDD, coverage by @hubcio in #3330
- ci: fold free-disk-space into setup-rust-with-cache by @hubcio in #3332
- ci: run PR Title workflow on ubuntu-24.04-arm by @hubcio in #3329
- fix(cli): swap libdbus-backed keyring for pure-Rust zbus by @hubcio in #3326
- ci: broaden dependabot coverage, add cooldown and PR caps by @hubcio in #3322
- feat(python): add package cooldown and pyrefly by @slbotbm in #3323
- chore(deps): Bump System.IO.Hashing from 8.0.0 to 10.0.8 by @dependabot[bot] in #3360
- chore(deps): Bump the minor-and-patch group with 16 updates by @dependabot[bot] in #3358
- chore(server-ng): extract compio executor and io_uring diagnostics into shared crate by @jayakasadev in #3331
- feat(connectors): add Apache Doris sink connector by @ryankert01 in #3215
- ci(connectors): raise vm.max_map_count for Doris in coverage job by @hubcio in #3365
- ci(php): pin supported PHP version by @WaterWhisperer in #3333
- docs: clarify compression placeholders by @arunsingh in #3366
- chore(deps): bump googletest from 1.17.0 to 1.17.0.bcr.2 in /foreign/cpp by @dependabot[bot] in #3336
- fix(js): publish npm prereleases under a channel tag, not latest by @hubcio in #3370
- chore(repo): improve issue/PR templates and trim triage docs by @hubcio in #3372
- ci: gate Docker :edge refresh by cargo-rail DAG by @hubcio in #3369
- feat(php): add SDK examples component by @countradooku in #3368
- chore(deps): bump go, docker, bazel and github-actions deps by @hubcio in #3363
- feat(cpp): Create fixture for clean up and add purge_* functions by @slbotbm in #3320
- chore(deps): bump npm packages and node docker image by @hubcio in #3361
- feat(sdk): support sending raw requests for custom commands by @spetz in #3373
- chore(deps): bump github.com/onsi/gomega from 1.40.0 to 1.41.0 in /bdd/go in the minor-and-patch group across 1 directory by @dependabot[bot] in #3378
- chore(deps): update and pin .net nuget versions by @lukaszzborek in #3375
- feat(connectors): Implement influxdb v2 and v3 connector with separate source and sink crates by @ryerraguntla in #3140
- ci: run finalize_pr on arm runner by @hubcio in #3402
- ci: auto-assign issue authors who volunteer to contribute by @hubcio in #3400
- test(connectors): share one Elasticsearch container across tests by @hubcio in #3401
- ci(php): run TLS tests in CI by @WaterWhisperer in #3381
- refactor(server-ng): move bootstrap directories to server_common by @AmalenduManoj in #3403
- fix(metadata): fix integration tests by @numinnex in #3399
- fix(server): distribute partitions evenly in cooperative rebalancing by @geertbrit in #3374
- fix(server): fix websocket recv by @numinnex in #3405
- feat(php): map Iggy errors to typed exceptions by @WaterWhisperer in #3382
- chore(deps): Bump the minor-and-patch group with 1 update by @dependabot[bot] in #3409
- fix(php): pin ext-php-rs and cargo-php to stop flaky stubs load by @hubcio in #3411
- fix(server): correct VSR client session routing and lifecycle by @numinnex in #3407
- chore(deps): Bump pytest-cov from 6.3.0 to 7.1.0 in /foreign/python by @dependabot[bot] in #3418
- chore(deps): Update pytest-cov requirement from <7.0,>=4.0 to >=7.1.0,<8.0 in /examples/python by @dependabot[bot] in #3417
- chore(deps): Update pytest-asyncio requirement from <2.0,>=0.24.0 to >=1.4.0,<2.0 in /examples/python by @dependabot[bot] in #3416
- chore(deps): Bump c8 from 10.1.3 to 11.0.0 in /foreign/node by @dependabot[bot] in #3424
- chore(deps): Bump the minor-and-patch group across 2 directories with 15 updates by @dependabot[bot] in #3422
- ci(php): add SDK coverage report by @WaterWhisperer in #3408
- chore(deps): Bump @types/node from 24.10.1 to 25.9.1 in /foreign/node by @dependabot[bot] in #3423
- test(connectors): add random source liveness helper by @arunsingh in #3377
- ci: replace
addlicensewithHawkEyefor license header checks by @Standing-Man in #3325 - ci: scope runner disk cleanup per job and trim rust pre-merge setup by @hubcio in #3406
- fix(ci): ensure dependencies are available when running
lintinpre-commitby @Standing-Man in #3427 - fix(connectors): guard InfluxDB v3 cursor rollback on rows_at_max_cursor > 1 by @ryerraguntla in #3434
- chore(deps): Bump the minor-and-patch group across 3 directories with 3 updates by @dependabot[bot] in #3435
- fix(connectors): handle unrecognized types with explicit coverage and diagnostics by @atharvalade in #3196
- chore(deps): Bump the minor-and-patch group with 1 update by @dependabot[bot] in #3440
- fix(ci): repair and harden pre-commit hooks and CI checks by @hubcio in #3426
- chore(deps): Bump the minor-and-patch group with 5 updates by @dependabot[bot] in #3413
- chore(rust): bump toolchain to 1.96 and sync stray Dockerfiles by @hubcio in #3443
- feat(php): fill Packagist metadata by @countradooku in #3380
- feat(go): implement golang sdk logger by @slash-init in #3379
- chore(deps): Bump the minor-and-patch group with 3 updates by @dependabot[bot] in #3446
- feat(cluster): authenticate replica peers with PSK + BLAKE3 handshake by @hubcio in #3425
- feat(server-ng): add partition reconciliation loop by @krishvishal in #3436
- chore(deps): bump java gradle dependencies by @hubcio in #3362
- chore(deps): Bump @commitlint/cli from 20.1.0 to 21.0.2 in /foreign/node by @dependabot[bot] in #3458
- chore(deps): Bump the minor-and-patch group across 3 directories with 8 updates by @dependabot[bot] in #3456
- test(php): add BDD suite wiring by @countradooku in #3410
- chore(deps): Bump @commitlint/config-conventional from 20.0.0 to 21.0.2 in /foreign/node by @dependabot[bot] in #3457
- chore(deps): Bump esbuild from 0.28.0 to 0.28.1 in /examples/node by @dependabot[bot] in #3466
- test(python): Add tests for python sdk by @slbotbm in #3432
- ci: fix edge-gate over-publish and retry license check by @hubcio in #3468
- ci: one dependabot PR per component for all update types by @hubcio in #3467
- chore(deps): Bump the github-actions group with 4 updates by @dependabot[bot] in #3476
- chore(deps): Bump the csharp group with 3 updates by @dependabot[bot] in #3477
- ci: stop Dependabot bumping iggy in java examples by @hubcio in #3478
- chore(deps): Bump the java group across 2 directories with 1 update by @dependabot[bot] in #3481
- ci: ignore go and dotnet base-image bumps by @hubcio in #3484
- fix(bdd): make ./scripts/run-bdd-tests.sh actually support FEATURE flag by @chengxilo in #3384
- ci: strip registry prefix from docker ignores by @hubcio in #3486
- ci: split npm dependabot group into web and node by @hubcio in #3488
- feat(csharp): enhance message handling with rented payloads by @lukaszzborek in #3471
- feat(cluster): add TLS 1.3 to replica plane with PSK channel binding by @hubcio in #3461
- perf(go): pool the request-path wire payload by @matanper in #3442
- chore(deps): Bump com.github.spotbugs:spotbugs-annotations from 4.9.8 to 4.10.1 in /foreign/java in the java group across 1 directory by @dependabot[bot] in #3489
- fix(connectors): prevent silent failures in FlatBuffer conversions by @Standing-Man in #3431
- chore(deps): Bump the node group across 1 directory with 2 updates by @dependabot[bot] in #3493
- feat(php): add consumer message iterator by @countradooku in #3463
- feat: replace ingress-nginx smoke cluster with Gateway API and Envoy Gateway by @avirajkhare00 in #3386
- fix(web): use explicit css import to support latest vite build by @T1B0 in #3502
- chore(deps): Bump the java group across 2 directories with 1 update by @dependabot[bot] in #3501
- feat(server-ng): add expired personal access token cleaner by @krishvishal in #3448
- chore(deps): Bump vite and @sveltejs/vite-plugin-svelte in /web by @dependabot[bot] in #3494
- fix(integration): fix partitions,permissions integration tests by @numinnex in #3487
- chore(deps): Bump the node group across 1 directory with 12 updates by @dependabot[bot] in #3510
- chore(deps): Bump github.com/onsi/ginkgo/v2 from 2.29.0 to 2.30.0 in /bdd/go in the go group across 1 directory by @dependabot[bot] in #3513
- feat(java): add reporting suite to java bench by @slbotbm in #3420
- ci: auto-apply good first issue label from issue form checkbox by @hubcio in #3528
- chore(cpp): upgrade bazel to 9.1.1 by @slbotbm in #3511
- fix(partitions): persist data on vsr backups, add data integrity test by @hubcio in #3512
- chore(deps): Bump the csharp group with 7 updates by @dependabot[bot] in #3531
- feat(go): align TCP client logging with Rust SDK by @slash-init in #3464
- chore(deps): Bump the web group across 1 directory with 6 updates by @dependabot[bot] in #3509
- chore(deps): bump Rust dependencies by @atharvalade in #3551
- chore(deps): Bump the java group across 3 directories with 2 updates by @dependabot[bot] in #3555
- chore(deps): Bump the github-actions group with 3 updates by @dependabot[bot] in #3556
- chore(deps): bump python/cpp FFI SDK deps to latest by @hubcio in #3552
- feat(cpp): add functions related to consumer groups and topics by @slbotbm in #3506
- feat(ci,rust): declare MSRV 1.95 and enforce it in CI by @hubcio in #3558
- chore: remove
once_cellin favor of the standard library by @llogiq in #3524 - feat(server-ng): port consumer group by @numinnex in #3527
- chore(deps): bump gradle wrapper to 9.6.0 by @mmodzelewski in #3563
- chore(deps): Bump the node group across 2 directories with 2 updates by @dependabot[bot] in #3567
- chore(deps): Bump rules_cc from 0.2.18 to 0.2.19 in /foreign/cpp in the cpp group by @dependabot[bot] in #3565
- chore(deps): Bump the web group across 1 directory with 8 updates by @dependabot[bot] in #3566
- feat(server-ng): commit-time metadata validation with result codes by @krishvishal in #3553
- fix(security): require read_servers permission for system snapshot by @hubcio in #3579
- feat(connectors): add S3 sink connector by @atharvalade in #3103
- fix(partitions): stop holding partition refs across .await by @hubcio in #3557
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in #3583
- feat(server-ng): reject incompatible clients at login via protocol version by @hubcio in #3454
- feat(bdd): unify rust image versions to slim-trixie by @slbotbm in #3569
- feat(partitions): implement partition background tasks by @numinnex in #3564
- chore(deps): Bump the java group across 1 directory with 6 updates by @dependabot[bot] in #3586
- chore(deps): Bump the github-actions group with 3 updates by @dependabot[bot] in #3587
- feat(io_uring): diagnose shard panic from unsupported opcode by @hubcio in #3589
- chore(deps): fix dependabot PR for go SDK by @chengxilo in #3590
- chore(deps): Bump gradle from 9.6.0-jdk17 to 9.6.1-jdk17 in /bdd/java in the docker group across 1 directory by @dependabot[bot] in #3592
- chore(deps): Bump the python group across 3 directories with 3 updates by @dependabot[bot] in #3593
- feat(cpp): add functions related to offset, tests related to consumer groups by @slbotbm in #3559
- chore(deps): Bump golang.org/x/net from 0.53.0 to 0.55.0 in /bdd/go by @dependabot[bot] in #3596
- chore(deps): Update maturin requirement from <2.0,>=1.2 to >=1.14.1,<2.0 in /examples/python by @dependabot[bot] in #3595
- feat(simulator): deterministic workload fuzzer with consensus oracles by @krishvishal in #3591
- refactor: move password crypto into server_common by @jayakasadev in #3562
- chore(deps): Bump rules_cc from 0.2.19 to 0.2.20 in /foreign/cpp in the cpp group by @dependabot[bot] in #3598
- chore(deps): Bump the web group across 1 directory with 10 updates by @dependabot[bot] in #3599
- feat(python): add topic listing, update, delete and purge by @mattp5657 in #3572
- chore(deps): bump node group, pin CI npm to 11 by @hubcio in #3602
- feat(python): expose consumer group create and get APIs by @WaterWhisperer in #3581
- fix(integration): pass remaining tests for server-ng by @numinnex in #3585
- fix(connectors): add support for server-ng by @numinnex in #3603
- chore(deps): Bump the go group across 1 directory with 2 updates by @dependabot[bot] in #3606
- refactor: extract shard allocator into a dedicated crate by @jayakasadev in #3578
- refactor(server-ng): drop dependency on the legacy server crate by @numinnex in #3616
- chore(integration): remove stale todo and run mcp under vsr by @numinnex in #3617
- chore(go): remove legacy example in foreign/go/samples by @chengxilo in #3604
- chore(deps): Bump the csharp group with 2 updates by @dependabot[bot] in #3620
- test(bdd): add C++ SDK BDD tests for basic messaging by @seokjin0414 in #3554
- feat(server-ng): add cluster-correct HTTP listener + per-op RBAC by @hubcio in #3622
- ci: bump docker/build-push-action to allowlisted v7.3.0 by @hubcio in #3624
- fix(python): fix flaky python test by @slbotbm in #3627
- chore(deps): bump java deps by @mmodzelewski in #3631
- chore(deps): Bump the github-actions group with 3 updates by @dependabot[bot] in #3628
- chore(deps): Bump golang.org/x/crypto from 0.51.0 to 0.52.0 in /foreign/go by @dependabot[bot] in #3632
- feat(server): respect CPU affinity and cgroup limits in shards and stats by @mmodzelewski in #3615
- refactor(configs): fork ShardingConfig for legacy and server-ng by @hubcio in #3633
- feat(connectors): add SurrealDB sink connector by @countradooku in #3453
- fix(server-ng): fix restart/reconnect hardening and cg integration tests by @numinnex in #3625
- feat(server-ng): verify trusted-issuer a2a JWT and expose SDK refresh by @hubcio in #3626
- fix(server-ng): add messages encryption by @numinnex in #3644
- chore(deps): Bump the node group across 2 directories with 6 updates by @dependabot[bot] in #3638
- feat: respect CPU and cgroup limits in server-ng and connectors stats by @mmodzelewski in #3647
- chore(deps): Bump github.com/klauspost/compress from 1.18.6 to 1.19.0 in /bdd/go in the go group across 1 directory by @dependabot[bot] in #3649
- chore(deps): Bump the web group across 1 directory with 10 updates by @dependabot[bot] in #3636
- ci(python): bump setup-uv to ASF-allowlisted v8.3.2 by @hubcio in #3653
- feat(server-ng): honor [http.cors] config on the HTTP listener by @hubcio in #3646
- feat(python): expose consumer group delete join and leave APIs by @WaterWhisperer in #3607
- chore(rust): bump sdk, common, binary_protocol, server patch versions by @hubcio in #3659
- ci: add/cpp to dependabot config by @slbotbm in #3655
- refactor(csharp): move encryption and decryption to raw client by @lukaszzborek in #3639
- chore(deps): Bump the csharp group with 2 updates by @dependabot[bot] in #3665
- chore(deps): Bump the github-actions group with 4 updates by @dependabot[bot] in #3664
- chore(deps): Bump the web group across 1 directory with 2 updates by @dependabot[bot] in #3663
- chore(deps): Bump the java group across 1 directory with 2 updates by @dependabot[bot] in #3660
- fix(rust,sdk): stop late offset stores from hitting a left group by @spetz in #3668
- feat(connectors): Clickhouse Sink Connector by @kriti-sc in #2886
- chore(deps): Bump tsx from 4.22.5 to 4.23.0 in /examples/node in the node group across 1 directory by @dependabot[bot] in #3661
- fix(go): complete TCP client teardown when conn.Close fails by @chengxilo in #3670
- chore(deps): Bump the github-actions group with 4 updates by @dependabot[bot] in #3674
- chore(deps): Bump the java group across 1 directory with 6 updates by @dependabot[bot] in #3673
- feat(server-ng): serve web UI, honor topic expiry default by @hubcio in #3676
- feat(server-ng): replica rejoin via view probe and message repair by @numinnex in #3667
- feat(simulator): deterministic future executor and server-ng dispatch shell by @krishvishal in #3671
- feat(server-ng): serve HTTPS on the REST listener by @hubcio in #3672
- docs(server-ng): refine partition-materialization barrier TODO by @numinnex in #3677
- feat(cli): support vsr and enable the CLI suite under server-ng by @hubcio in #3679
- refactor(go): separate transport state and session state by @chengxilo in #3652
- feat(cpp): add functions related to client lifecycle, and message headers by @slbotbm in #3610
- test(bdd): fail Go BDD runner on undefined steps by @seokjin0414 in #3681
- fix(node): correct scoped permissions wire codec by @ryankert01 in #3642
- fix(sdk): rejoin consumer group after membership loss under vsr by @hubcio in #3703
- perf(common): write message header directly into target buffer by @ryankert01 in #3707
- perf(common): decode user headers without copying the blob by @ryankert01 in #3708
- fix(server-ng): eliminate unnecessary backpressure under concurrent clients by @numinnex in #3692
- feat(python): add user management methods to IggyClient by @ethanlin01x in #3695
- chore(deps): Bump the csharp group with 4 updates by @dependabot[bot] in #3712
- feat(sdk): expose raw command API across foreign clients by @spetz in #3691
- chore(deps): Bump brace-expansion from 5.0.5 to 5.0.7 in /web by @dependabot[bot] in #3714
- test(bdd): fail Rust BDD runner on undefined steps by @seokjin0414 in #3680
- chore(deps): Bump brace-expansion from 5.0.4 to 5.0.7 in /foreign/node by @dependabot[bot] in #3713
- fix(integration): gate keyring setup on supported targets by @Standing-Man in #3717
- fix(ci): align local golangci-lint version with CI by @Standing-Man in #3719
- fix(cpp): move bazel build config for bdd/cpp to foreign/cpp by @slbotbm in #3675
- chore(deps): Bump the node group across 1 directory with 3 updates by @dependabot[bot] in #3687
- feat(configs): add devcontainer config for reproducible dev and cross-platform code track by @jiengup in #3656
- chore(deps): Bump brace-expansion from 5.0.6 to 5.0.7 in /examples/node by @dependabot[bot] in #3718
- chore(deps): Bump the cpp group across 1 directory with 2 updates by @dependabot[bot] in #3685
- chore(deps): Bump the java group across 3 directories with 7 updates by @dependabot[bot] in #3721
- chore(repo): upgrade deps and bump Rust to 1.97.1 by @hubcio in #3720
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in #3724
- chore(deps): Bump the github-actions group with 6 updates by @dependabot[bot] in #3723
- docs(server-ng): drop stale TODOs by @numinnex in #3725
- chore(deps): Bump fast-uri from 3.1.3 to 3.1.4 in /foreign/node by @dependabot[bot] in #3730
- test(bdd): run Rust BDD against iggy-server-ng with VSR by @hubcio in #3732
- fix(python): pin python version and add uv caching by @slbotbm in #3690
- fix(connectors): fix postgres source CDC producing no messages by @mattp5657 in #3640
- feat(bench): record cluster topology in reports and surface it in UI by @hubcio in #3737
- feat(server-ng): add cluster.heartbeat_timeout for VSR liveness window by @hubcio in #3738
- chore(deps): Bump the node group across 2 directories with 15 updates by @dependabot[bot] in #3741
- feat(connectors): use TCP client for Flink sink by @Standing-Man in #3657
- feat(server-ng): forward follower HTTP requests to VSR primary by @hubcio in #3744
- test(integration): spec clients-table durability across node restart by @hubcio in #3736
- fix(server-ng): legacy-parity consumer group errors, roster HTTP bind by @hubcio in #3754
- chore(deps): Bump the csharp group with 8 updates by @dependabot[bot] in #3759
- feat(server-ng): add cluster.nodes.advertised_address for clients by @mmodzelewski in #3757
- feat(consensus): rework client table for session resume across restarts by @numinnex in #3753
- feat(server-ng): harden configuration surface by @hubcio in #3756
- fix(sdk): forward unknown command codes instead of rejecting them by @hubcio in #3766
- fix(server-ng): stop restart panic when WAL replay recovers sessions by @hubcio in #3768
- fix(ci): propagate failures from multi-project hooks by @Standing-Man in #3743
- chore(deps): Bump com.gradleup.shadow from 9.5.1 to 9.6.0 in /foreign/java in the java group across 1 directory by @dependabot[bot] in #3771
- chore(deps): Bump the github-actions group with 5 updates by @dependabot[bot] in #3772
- fix(ci): example-runner silently skips Python/Go examples when exclude starts with a dash by @ethanlin01x in #3770
- fix(server-ng): make partition reconvergence safe for in-flight sends by @hubcio in #3761
- fix(server-ng): fold io_uring remediation into runtime-creation errors by @numinnex in #3775
- fix(ci): stop trailing checks from skipping text files as binary by @ethanlin01x in #3778
- feat(js): add VSR framing to the Node SDK by @spetz in #3763
- chore(deps): Bump postcss from 8.5.16 to 8.5.23 in /web by @dependabot[bot] in #3762
- fix(server-ng): bind cluster TCP to [tcp].address, not the roster ip by @mmodzelewski in #3783
- feat(server-ng): harden listener, auth, shutdown, and disk-poll paths by @numinnex in #3774
- feat(consensus): persist metadata VSR state in a durable superblock by @krishvishal in #3767
- feat(python): expose Permissions and remaining user auth methods by @ethanlin01x in #3727
- feat(metadata): state transfer for snapshot and client table by @numinnex in #3765
- feat(server-ng): enforce PAT limits and expose Prometheus metrics by @hubcio in #3773
- chore(deps): Bump the node group across 1 directory with 3 updates by @dependabot[bot] in #3779
- chore(deps): Bump github.com/klauspost/compress from 1.19.0 to 1.19.1 in /bdd/go in the go group across 1 directory by @dependabot[bot] in #3785
- feat(connectors): retry transient Doris Stream Load failures in-request by @ryankert01 in #3574
- fix(ci): make README CLI preflight execute its commands by @ethanlin01x in #3792
- ci(rust): skip unnecessary setup steps by @Standing-Man in #3749
- feat(python): add user header and origin timestamp support by @jiengup in #3613
- feat(connectors): add Meilisearch sink connector by @countradooku in #3497
- feat(server-ng): close the partition materialisation race at the owner by @krishvishal in #3786
- chore(deps): Bump the web group across 1 directory with 16 updates by @dependabot[bot] in #3807
- chore(deps): Bump fast-uri from 3.1.4 to 3.1.5 in /foreign/node by @dependabot[bot] in #3812
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in #3810
- fix(node): TLS + VSR connection support by @spetz in #3813
- perf(server-ng): cap sealed-segment read handles with per-partition LRU by @hubcio in #3806
- perf(server-ng): compute batch checksum in a single produce pass by @hubcio in #3746
- feat(java): add cluster metadata and leader redirection to TCP client by @mmodzelewski in #3745
- docs(security): add SECURITY.md with ASF reporting process by @justinmclean in #3787
- fix(ci): use portable fallbacks for bash-4 builtins and GNU sed in hook scripts by @jiengup in #3694
- chore(deps): Bump the github-actions group with 2 updates by @dependabot[bot] in #3817
- chore(deps): Bump the java group across 3 directories with 5 updates by @dependabot[bot] in #3816
- feat(python): expose remaining Topic/TopicDetails fields and partitions by @mattp5657 in #3623
- test(integration): remove suites duplicating existing coverage by @hubcio in #3823
- feat(server-ng): add per-client-network advertised address selectors by @mmodzelewski in #3818
- feat(server-ng): confirm committed sends with partition and offset by @hubcio in #3781
- ci: skip unaffected language jobs in coverage baseline by @hubcio in #3822
- chore(deps): Update testcontainers requirement from <5.0,>=3.7.0 to >=4.15.0,<5.0 in /bdd/python by @dependabot[bot] in #3826
- feat(partitions): implement state transfer by @numinnex in #3808
- chore(deps): Bump rules_rust from 0.71.3 to 0.72.0 in /foreign/cpp in the cpp group across 1 directory by @dependabot[bot] in #3829
- chore(deps): Bump the node group across 2 directories with 2 updates by @dependabot[bot] in #3830
- chore(deps): Bump the web group across 1 directory with 5 updates by @dependabot[bot] in #3831
- refactor(python): readme improvements by @mmmmxa in #3825
- fix(server-ng): close server-ng SDK-visible behavior gaps by @hubcio in #3828
- feat(python): run Python SDK tests only against the VSR server by @hubcio in #3838
- feat(go): migrate SDK to the VSR wire protocol by @spetz in #3834
- test(integration): fix vsr flakes from racing recovery routes by @numinnex in #3833
- feat(csharp): migrate to VSR wire protocol by @lukaszzborek in #3800
- fix(server-ng): stop redundant partition rebuilds resetting offsets by @numinnex in #3846
- feat(python): expose TCP client configuration by @ethanlin01x in #3776
- feat(java): migrate the TCP client to the VSR wire protocol by @mmodzelewski in #3841
- docs(connectors): fix the inverted serde_secret redaction claim by @mlevkov in #3803
- fix(rust): add heartbeat handle and drop for rust sdk by @slbotbm in #3852
- fix(consensus): stop view change discarding committed ops by @krishvishal in #3824
- feat(cpp): run C++ SDK tests only against the VSR server by @hubcio in #3844
- feat(node): drop classic framing and test only against the VSR server by @hubcio in #3843
- fix(partitions): fix flaky tests by @numinnex in #3854
- fix(server-ng): skip NUMA memory binding on non-Linux platforms by @ethanlin01x in #3850
- feat(php): run PHP SDK tests only against the VSR server by @hubcio in #3845
- feat(ci): require bash >= 4.2 in the pre-commit hook scripts by @ethanlin01x in #3837
- chore(deps): Bump the csharp group with 3 updates by @dependabot[bot] in #3857
- refactor(consensus): remove namespace from client headers by @numinnex in #3836
- feat(server)!: promote server-ng to the Apache Iggy server by @hubcio in #3856
- fix(server): preserve producer batches across replication by @spetz in #3859
- chore(deps): Bump org.apache.httpcomponents.client5:httpclient5 from 5.6.2 to 5.6.3 in /foreign/java in the java group across 1 directory by @dependabot[bot] in #3865
- ci: make Rust image matching portable by @WaterWhisperer in #3871
- chore(deps): Bump rules_rust from 0.72.0 to 0.73.0 in /foreign/cpp in the cpp group across 1 directory by @dependabot[bot] in #3863
- chore(deps): Bump the node group across 2 directories with 2 updates by @dependabot[bot] in #3861
- chore(deps): Bump github.com/cucumber/godog from 0.15.1 to 0.16.0 in /bdd/go in the go group across 1 directory by @dependabot[bot] in #3862
- chore(deps): Bump the web group across 1 directory with 2 updates by @dependabot[bot] in #3864
- chore(deps): Bump the github-actions group with 2 updates by @dependabot[bot] in #3868
- feat(server)!: auth-gate cluster metadata, forward register to primary by @hubcio in #3872
- chore(deps): Bump the python group across 3 directories with 2 updates by @dependabot[bot] in #3866
- chore(deps): Update pytest requirement from <10.0,>=9.0.3 to >=9.1.1,<10.0 in /examples/python by @dependabot[bot] in #3867
- ci(csharp): split e2e integration tests per target framework by @lukaszzborek in #3874
- fix(consensus): close metadata and consensus plane TODOs by @krishvishal in #3870
- chore(deps): Bump tsx from 4.23.5 to 4.23.9 in /examples/node in the node group across 1 directory by @dependabot[bot] in #3879
- chore(deps): Bump the web group across 1 directory with 2 updates by @dependabot[bot] in #3878
- fix(sdk): delete_offset(None) for a standalone consumer should delete current_partition_id offset by @haubur in #3882
- chore(deps): Bump github.com/klauspost/compress from 1.19.1 to 1.19.2 in /bdd/go in the go group across 1 directory by @dependabot[bot] in #3884
- feat(common)!: extensible key-value options for topics, streams, users by @numinnex in #3880
- ci(security): replace package tokens with OIDC by @spetz in #3892
- chore: remove resolved TODO comments by @numinnex in #3887
- fix(server): restore get_user self-read without read_users permission by @hubcio in #3897
- refactor(configs): clean up server config after full field audit by @hubcio in #3895
- fix(ci): restore Docker and PyPI releases by @spetz in #3902
- perf(connectors): add opt-in CSV output format to Doris sink by @ryankert01 in #3575
- fix(cli): bound ping retries, macOS boot smoke, java PAT expiry by @hubcio in #3903
- feat(csharp): add heartbeat mechanism by @lukaszzborek in #3894
- fix(metadata): enforce namespace caps at admission to stop aliasing by @krishvishal in #3907
- refactor(sdk)!: remove v2 bridges and legacy message wire format by @numinnex in #3904
- refactor(consensus): build replies in Owned and clear stale todos by @numinnex in #3908
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in #3906
- test(integration): add SIGKILL crash-durability cluster tests by @hubcio in #3905
- test(bdd): add stream CRUD coverage for Rust and Java by @Jamison929611 in #3875
- feat(connectors): add source batch acknowledgments by @rohankumardubey in #3855
- refactor(consensus): single restore constructor + wedge/replay/ack fixes by @numinnex in #3909
- fix(connectors): stop rendering counter metrics with a doubled _total by @hubcio in #3921
- ci: bound apt-get so a dead mirror cannot wedge a job by @hubcio in #3924
- refactor(server): consensus restore, fail-stop, linear cleanup batch by @numinnex in #3911
- refactor(shard): drop journal generic, metrics scrape, poll cursor by @numinnex in #3914
- feat(shard): split the inbox into consensus and client-reply lanes by @numinnex in #3915
- fix(metadata): truncate the WAL suffix above the state-transfer floor by @numinnex in #3918
- chore(repo): remove incubating references after TLP graduation by @hubcio in #3928
- ci: replace Ana06/get-changed-files with dorny/paths-filter by @hubcio in #3916
- feat(python): let poll_messages take a consumer by @ethanlin01x in #3877
- chore(deps): Bump taiki-e/install-action from 2.85.8 to 2.85.11 in the github-actions group by @dependabot[bot] in #3920
- chore(deps): Bump the node group across 2 directories with 7 updates by @dependabot[bot] in #3938
- chore(deps): Bump googletest from 1.17.0.bcr.2 to 1.18.0 in /foreign/cpp in the cpp group across 1 directory by @dependabot[bot] in #3937
- chore(deps): Bump the web group across 1 directory with 9 updates by @dependabot[bot] in #3936
- ci(rust): don't fail when a DAG scope matches no tests by @chengxilo in #3943
- chore(deps): Bump the python group across 3 directories with 1 update by @dependabot[bot] in #3926
- ci(rust): fail the build on rustdoc and rustc warnings by @hubcio in #3925
- chore: migrate HawkEye to v7 by @tisonkun in #3952
- fix(server): truncate torn segment tails instead of resurrecting them by @hubcio in #3946
- feat(connectors): store source state on an HTTP state server by @mmodzelewski in #3940
- feat(cpp): add functions related to user management, and initial high-level client by @slbotbm in #3733
- fix(shard): tell an unknown consensus operation from a corrupt header by @numinnex in #3931
- chore(deps): Bump the csharp group with 12 updates by @dependabot[bot] in #3961
- refactor(csharp): cleanup tcp connection after vsr implementation by @lukaszzborek in #3858
- ci(csharp): separate baseline coverage reports per framework by @lukaszzborek in #3960
- fix(consensus): keep a client's dedup fence across capacity eviction by @numinnex in #3934
- chore(repo): bump Rust toolchain to 1.98.0 by @hubcio in #3962
- fix(connectors): Harden Elasticsearch sink test readiness by @ryerraguntla in #3729
- fix(ci): bump cargo-zigbuild so arm64 images link under Rust 1.98 by @hubcio in #3963
- refactor(sdk): introduce NonZeroIggyDuration for retries and heartbeats by @ethanlin01x in #3891
- feat(connectors): add Redshift sink connector by @realonbebeto in #3654
- fix(sdk): error callback should await shard flush on producer shutdown by @haubur in #3953
- chore(deps): Bump the github-actions group across 1 directory with 2 updates by @dependabot[bot] in #3968
- fix(python): read consumer metadata without the consumer lock by @ethanlin01x in #3888
- fix(server): restore the mimalloc global allocator by @hubcio in #3971
- chore(deps): Bump gradle from 9.6.1-jdk17 to 9.7.0-jdk17 in /bdd/java in the docker group across 1 directory by @dependabot[bot] in #3972
- feat(sdk): fail over to a surviving node when the current one dies by @numinnex in #3944
- fix(partitions): stop reserving 16 MiB per active segment index by @hubcio in #3974
- feat(gateways): iggy gateway for kafka listener by @ryerraguntla in #3519
- fix(consensus): keep a late retry's reply instead of refusing it by @numinnex in #3945
- fix(cluster): prevent repaired prepares from rewinding WAL parent by @spetz in #3978
- feat(simulator): drive the workload under network and replica faults by @krishvishal in #3942
- chore(deps): Bump the web group across 1 directory with 4 updates by @dependabot[bot] in #3983
- chore(deps): Bump the node group across 1 directory with 10 updates by @dependabot[bot] in #3984
- fix(cluster): make the advertised leader accept partition writes by @numinnex in #3985
- feat(node): support connection string syntax for nodejs client creation by @T1B0 in #3917
- fix(cluster): recover writes after a fast partition primary rejoin by @spetz in #3987
- feat(partitions): persist log and index concurrently, harden recovery by @hubcio in #3970
- fix(server): apply thread pool limit carve-out to all of macOS by @djanand in #3994
- fix(go): tear down only the connection a request failed on by @hubcio in #3986
- chore(deps): Bump the go group across 2 directories with 2 updates by @dependabot[bot] in #3990
- test(partitions): gate the persist-retry test on Linux by @hubcio in #3998
- fix(server)!: reject a wildcard bind with no advertised address by @chengxilo in #3923
- ci(python): fold the build task into test and check the stub by @ethanlin01x in #3980
- fix(bdd): resolve server address and credentials only from env by @chengxilo in #3935
- chore(deps): Bump the java group across 3 directories with 17 updates by @dependabot[bot] in #3966
- fix(sdk): respect max_buffer_size when merging batches by @haubur in #3933
- feat(sdk): consume the request counter for partition operations by @numinnex in #3958
- fix(cluster): stop a late partition materialiser from wedging its group by @hubcio in #4007
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in #4011
- fix(sdk): stream should terminate after consumer shutdown by @haubur in #3964
- docs(repo): add repo-wide team-review agent skill by @hubcio in #4004
- fix(journal): reject recovery slot collisions by @Aias00 in #4009
- fix(journal): repair a torn WAL tail instead of panicking the shard by @numinnex in #3976
- refactor(server): make the module graph a DAG and enforce it by @hubcio in #4023
- fix(shard): keep a parked prepare's stamp and op order on re-dispatch by @numinnex in #4005
- fix(connectors): iceberg sink writes real partitions on iceberg 0.10 by @hubcio in #3969
- chore(docs): core/sdk lib.rs and IggyClient docs by @haubur in #3809
- perf(server): serve poll replies without copying record bytes by @hubcio in #4025
- fix(csharp): set default socket buffer size to OS default by @richardcocks in #4013
- refactor(server): split the dispatch spine into plane-named leaves by @hubcio in #4026
- chore(sdk): IggyProducer docs for Rust SDK by @haubur in https://github.com/apache/iggy/pull/3989
- chore(deps): Bump com.github.spotbugs:spotbugs-annotations from 4.10.3 to 4.10.4 in /foreign/java in the java group across 1 directory by @dependabot[bot] in https://github.com/apache/iggy/pull/4029
- test(integration): stop harness servers pinning shards to cores by @hubcio in https://github.com/apache/iggy/pull/4030
- chore(sdk): IggyConsumer docs by @haubur in https://github.com/apache/iggy/pull/3913
- chore(deps): Bump taiki-e/install-action from 2.86.3 to 2.86.7 in the github-actions group by @dependabot[bot] in https://github.com/apache/iggy/pull/4028
- docs: wait for the issue to be assigned, not for a label by @justinmclean in https://github.com/apache/iggy/pull/4032
- refactor(server): split bootstrap.rs into the boot/ tree by @hubcio in https://github.com/apache/iggy/pull/4031
- test(integration): catch on-disk storage format breaks pre-merge by @hubcio in https://github.com/apache/iggy/pull/4003
- feat(server,deps,ci): update deps, fix CI scoping, panic exit, crash recovery by @hubcio in https://github.com/apache/iggy/pull/4033
- feat(helm): deploy a cluster with one release per node by @numinnex in https://github.com/apache/iggy/pull/4035
- fix(sdk): correct consumer group polling and commits in IggyConsumer by @hubcio in https://github.com/apache/iggy/pull/4034
- docs: fix partition IDs and auto commit wording in the README quickstart by @justinmclean in https://github.com/apache/iggy/pull/4040
- chore(deps): Bump fast-uri from 3.1.5 to 3.1.7 in /foreign/node by @dependabot[bot] in https://github.com/apache/iggy/pull/4042
- refactor(csharp): update integer properties to unsigned types for consistency by @lukaszzborek in https://github.com/apache/iggy/pull/4027
- feat(server): dedup partition writes with per-group client table slices by @numinnex in https://github.com/apache/iggy/pull/3959
- chore(deps): Bump @humanfs/node from 0.16.7 to 0.16.8 in /examples/node by @dependabot[bot] in https://github.com/apache/iggy/pull/4044
- chore(deps): Bump @humanfs/node from 0.16.7 to 0.16.8 in /web by @dependabot[bot] in https://github.com/apache/iggy/pull/4045
- chore(deps): Bump the python group across 2 directories with 1 update by @dependabot[bot] in https://github.com/apache/iggy/pull/4039
- docs: mention the PHP SDK in the README by @justinmclean in https://github.com/apache/iggy/pull/4041
- test(java): add Pinot connector E2E coverage by @goutamadwant in https://github.com/apache/iggy/pull/3922
- docs(simulator): add a README for the deterministic harness by @krishvishal in https://github.com/apache/iggy/pull/4047
- chore(deps): Bump the node group across 2 directories with 3 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4052
- chore(deps): Bump the web group across 1 directory with 3 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4051
- test(java): boot the edge server consistently in both Java suites by @mmodzelewski in https://github.com/apache/iggy/pull/4054
- fix(cluster): serve metadata reads at or above the client's own writes by @numinnex in https://github.com/apache/iggy/pull/4024
- fix(partitions): reserve offsets before confirming them by @krishvishal in https://github.com/apache/iggy/pull/3975
- refactor(server): make dispatch routing and failure paths explicit by @hubcio in https://github.com/apache/iggy/pull/4036
- fix(connectors): warn when the runtime API is exposed without a key by @mlevkov in https://github.com/apache/iggy/pull/3804
- fix(shard): drive partition repair and the commit walk from the tick by @numinnex in https://github.com/apache/iggy/pull/4006
- chore(deps): Bump github.com/onsi/gomega from 1.42.1 to 1.43.0 in /bdd/go in the go group across 1 directory by @dependabot[bot] in https://github.com/apache/iggy/pull/4057
- feat(ci): add /pin and /unpin triage commands by @mlevkov in https://github.com/apache/iggy/pull/4060
- docs: say where a closed PR's findings go, and fix the stale timing by @mlevkov in https://github.com/apache/iggy/pull/4059
- ci(python): restore Windows wheels for the PyPI release by @hubcio in https://github.com/apache/iggy/pull/4049
- fix(csharp): update string length validation to use UTF-8 byte count by @lukaszzborek in https://github.com/apache/iggy/pull/4072
- fix(go): update MaxPayloadSize from 10 MB to 64 MB to match size update in rust message construction by @sipher-01 in https://github.com/apache/iggy/pull/4080
- fix(connectors): validate protobuf field lengths consistently by @spetz in https://github.com/apache/iggy/pull/4069
- fix(shard): widen partition repair when a view-adopted suffix is missing bodies by @mattp5657 in https://github.com/apache/iggy/pull/4074
- feat(python): expose get_stats on IggyClient by @7487 in https://github.com/apache/iggy/pull/4018
- docs: add AI assistance expectations to CONTRIBUTING by @justinmclean in https://github.com/apache/iggy/pull/4081
- perf(node, csharp, java, go): generate message ids from random bytes instead of via UUIDs by @richardcocks in https://github.com/apache/iggy/pull/4076
- fix(shard): drive metadata repair and the commit walk from the tick by @numinnex in https://github.com/apache/iggy/pull/4008
- fix(partitions): bound consumer offset state per partition by @spetz in https://github.com/apache/iggy/pull/4063
- feat(python): add QuicConfig transport configuration by @saie-ch in https://github.com/apache/iggy/pull/3991
- feat(python): add stream listing, update, delete, and purge by @felixfaisal in https://github.com/apache/iggy/pull/3701
- fix(java): size wire strings by UTF-8 byte length, not char count by @mmodzelewski in https://github.com/apache/iggy/pull/4068
- fix(connectors): validate connector key before it becomes a path by @ryankert01 in https://github.com/apache/iggy/pull/4083
- chore: add Iggy banner to server startup by @spetz in https://github.com/apache/iggy/pull/4085
- feat(python): add HttpConfig transport configuration by @saie-ch in https://github.com/apache/iggy/pull/3992
- ci(connectors): run a plugin's integration suite when it changes by @ethanlin01x in https://github.com/apache/iggy/pull/4077
- feat(python): support message partitioning strategies by @jiengup in https://github.com/apache/iggy/pull/3927
- feat(python): add WebSocketConfig transport configuration by @saie-ch in https://github.com/apache/iggy/pull/4000
- chore(deps): Bump the csharp group with 1 update by @dependabot[bot] in https://github.com/apache/iggy/pull/4087
- fix(metadata): roll deleted partitions and topics out of parent stats by @numinnex in https://github.com/apache/iggy/pull/4046
- feat(connectors): add RabbitMQ sink by @amr8t in https://github.com/apache/iggy/pull/3973
- fix(consensus): keep a replica off a hole in its committed prefix by @krishvishal in https://github.com/apache/iggy/pull/4073
- feat(java): let TCP clients run one I/O thread or share a group by @mmodzelewski in https://github.com/apache/iggy/pull/4096
- chore(deps): Bump the java group across 3 directories with 1 update by @dependabot[bot] in https://github.com/apache/iggy/pull/4098
- chore(deps): Bump the github-actions group with 3 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4099
- chore(deps): remove Microsoft.SourceLink.GitHub package reference by @lukaszzborek in https://github.com/apache/iggy/pull/4113
- fix(connectors): use DLL_EXTENSION for plugin path suffix by @richardcocks in https://github.com/apache/iggy/pull/4114
- chore: add justinmclean to .asf.yaml collaborators by @justinmclean in https://github.com/apache/iggy/pull/4115
- fix(connectors): bring quickwit_sink up to convention by @mfyuce in https://github.com/apache/iggy/pull/3523
- feat(python): expose partition management by @Elioooon in https://github.com/apache/iggy/pull/4017
- chore(ci): add team-review-slim, cheaper team-review and plain english by @haubur in https://github.com/apache/iggy/pull/4095
- feat(connectors)!: add shared retry_async helper to the connector SDK by @ryankert01 in https://github.com/apache/iggy/pull/4104
- test(integration): cleanup & drop the doris nextest test-group by @ryankert01 in https://github.com/apache/iggy/pull/4116
- fix(repo): include gateways so the source release tarball builds by @hubcio in https://github.com/apache/iggy/pull/4126
- feat(cluster)!: let topics require durable acks and flatten config by @spetz in https://github.com/apache/iggy/pull/4092
- chore(deps): Bump js-yaml from 4.3.1 to 4.3.2 in /foreign/node by @dependabot[bot] in https://github.com/apache/iggy/pull/4107
- chore(deps): Bump joi from 17.13.4 to 17.13.7 in /web by @dependabot[bot] in https://github.com/apache/iggy/pull/4106
- fix(consensus): count an unservable header as a nack by @krishvishal in https://github.com/apache/iggy/pull/4109
- fix(shard): refuse a frame no consensus plane claims by @krishvishal in https://github.com/apache/iggy/pull/4103
- test(simulator): cover durability failures no existing test can reach by @numinnex in https://github.com/apache/iggy/pull/4132
- fix(integration): pull MinIO fixtures from quay instead of Docker Hub by @spetz in https://github.com/apache/iggy/pull/4148
- feat(cpp): add stream, topic, and partition functions to high level client by @slbotbm in https://github.com/apache/iggy/pull/4022
- feat(connectors): add the HTTP source webhook gateway connector by @mlevkov in https://github.com/apache/iggy/pull/3798
- fix(ci): run integration tests when a binary they launch changes by @hubcio in https://github.com/apache/iggy/pull/4131
- chore(deps): Bump the node group across 2 directories with 3 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4125
- chore(deps): Bump github.com/klauspost/compress from 1.19.2 to 1.20.0 in /bdd/go in the go group across 1 directory by @dependabot[bot] in https://github.com/apache/iggy/pull/4147
- chore(deps): Bump the web group across 1 directory with 7 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4124
- fix(server): resolve non-Linux clippy errors in shard binding by @Standing-Man in https://github.com/apache/iggy/pull/4144
- fix(connectors): draw the retry delay inside the cap instead of clamping by @ryankert01 in https://github.com/apache/iggy/pull/4129
- chore(deps): Bump the python group across 3 directories with 1 update by @dependabot[bot] in https://github.com/apache/iggy/pull/4110
- perf(partitions): cut persisted-mode disk traffic per acknowledgment by @spetz in https://github.com/apache/iggy/pull/4146
- fix(connectors): close the source instance a failed start leaves behind by @mlevkov in https://github.com/apache/iggy/pull/4064
- fix(server): preserve write responses and validate CLI input by @hubcio in https://github.com/apache/iggy/pull/4150
- docs(integration): say that the test harness runs prebuilt binaries by @mlevkov in https://github.com/apache/iggy/pull/4160
- fix(sdk): preserve consumer progress and client error handling by @hubcio in https://github.com/apache/iggy/pull/4151
- fix(connectors): report failures and correct format conversion by @hubcio in https://github.com/apache/iggy/pull/4152
- fix(partitions): complete polls on the owning shard by @diegomrsantos in https://github.com/apache/iggy/pull/4119
- fix(configs): allow sibling IGGY variables by @Rudra-G-23 in https://github.com/apache/iggy/pull/4149
- feat(python): add high-level producer API by @jiengup in https://github.com/apache/iggy/pull/4156
- fix(ci): support multiline README commands by @jiengup in https://github.com/apache/iggy/pull/4162
- fix(ci): don't mark PRs stale while they wait on review by @justinmclean in https://github.com/apache/iggy/pull/4172
- fix(node): stop dropping and corrupting tokens in list responses by @mattp5657 in https://github.com/apache/iggy/pull/4171
- fix(connectors): defer postgres source progress until ack by @rohankumardubey in https://github.com/apache/iggy/pull/3957
- feat(python): expose update_user options by @Jorge-Polanco-Roque in https://github.com/apache/iggy/pull/4173
- fix(connectors): validate sink writes and startup readiness by @hubcio in https://github.com/apache/iggy/pull/4154
- fix(connectors): defer source checkpoints and surface sink failures by @hubcio in https://github.com/apache/iggy/pull/4153
- fix(cluster): preserve group membership and reduce produce/poll overhead by @spetz in https://github.com/apache/iggy/pull/4169
- chore(deps): Bump the csharp group with 5 updates by @dependabot[bot] in https://github.com/apache/iggy/pull/4185
- chore(repo): refresh dependencies and strip edge versions for 0.9.0 by @hubcio in https://github.com/apache/iggy/pull/4187
- fix(server): distribute TCP-TLS and WSS connections across shards by @hubcio in https://github.com/apache/iggy/pull/4193
- fix(cluster): prevent spurious heartbeat elections by @hubcio in https://github.com/apache/iggy/pull/4194
New Contributors
- @Standing-Man made their first contribution in #3142
- @explise made their first contribution in #3193
- @matanper made their first contribution in #3191
- @MukundaKatta made their first contribution in #3179
- @oscarArismendi made their first contribution in #3182
- @chammika made their first contribution in #3204
- @jpds made their first contribution in #3233
- @arpitjain099 made their first contribution in #3243
- @ankushT369 made their first contribution in #3202
- @WaterWhisperer made their first contribution in #3319
- @countradooku made their first contribution in #3235
- @jayakasadev made their first contribution in #3331
- @arunsingh made their first contribution in #3366
- @AmalenduManoj made their first contribution in #3403
- @geertbrit made their first contribution in #3374
- @slash-init made their first contribution in #3379
- @llogiq made their first contribution in #3524
- @mattp5657 made their first contribution in #3572
- @ethanlin01x made their first contribution in #3695
- @mmmmxa made their first contribution in #3825
- @Jamison929611 made their first contribution in #3875
- @tisonkun made their first contribution in #3952
- @realonbebeto made their first contribution in #3654
- @djanand made their first contribution in #3994
- @Aias00 made their first contribution in #4009
- @richardcocks made their first contribution in #4013
- @goutamadwant made their first contribution in https://github.com/apache/iggy/pull/3922
- @sipher-01 made their first contribution in https://github.com/apache/iggy/pull/4080
- @7487 made their first contribution in https://github.com/apache/iggy/pull/4018
- @amr8t made their first contribution in https://github.com/apache/iggy/pull/3973
- @mfyuce made their first contribution in https://github.com/apache/iggy/pull/3523
- @Elioooon made their first contribution in https://github.com/apache/iggy/pull/4017
- @Rudra-G-23 made their first contribution in https://github.com/apache/iggy/pull/4149
- @Jorge-Polanco-Roque made their first contribution in https://github.com/apache/iggy/pull/4173
Full Changelog: server-0.8.0...server-0.9.0