For more details check our blog post: https://iggy.apache.org/blogs/2026/04/22/release-0.8.0/
What's Changed
- docs(java): add async client JavaDoc and usage guide by @atharvalade in #2711
- refactor(metadata): improve the stm update method by @numinnex in #2757
- refactor(consensus): couple message assoc type by @numinnex in #2761
- fix(ci): skip stable Docker tags in check-tags during auto-publish by @hubcio in #2759
- feat(web): update benchmark dashboard dark mode to Iggy brand colors by @vishakha1411 in #2738
- fix(connectors): don't use posix function names as FFI interface by @kriti-sc in #2771
- chore(python): replace pip with uv by @slbotbm in #2767
- feat(bench): add --username/--password and reuse admin client by @hubcio in #2778
- feat(sdk): support hostnames in QUIC and WebSocket clients by @seokjin0414 in #2768
- refactor(csharp): rewrite integration tests to remove DependsOn by @atharvalade in #2710
- fix(ci): pin hwloc to v2.12.2 on macOS by @mmodzelewski in #2784
- feat(consensus): enable independent commit progress across namespaces by @hubcio in #2765
- feat(cluster): create a unified abstraction for subsystems by @numinnex in #2780
- chore(repo): advance to year 2026 by @numinnex in #2795
- ci(csharp): add C# coverage upload to Codecov by @lukaszzborek in #2782
- fix(server): report correct current_offset after segment deletion by @hubcio in #2798
- fix(ci): pass Codecov token to C# and Java test jobs by @hubcio in #2800
- fix(server): prevent storing consumer offsets beyond max partition range by @gomnitrix in #2794
- ci: add Codecov coverage for Python SDK by @atharvalade in #2790
- ci(python,rust): fix publish dry-run and disable Windows wheels by @hubcio in #2813
- fix(ci): unblock wheel collection when Windows is disabled by @hubcio in #2814
- feat(ci): impl typos automatically checks by @Svecco in #2803
- feat(java): add async API parity with blocking client by @atharvalade in #2718
- ci: add Codecov coverage for Node SDK (#2774) by @atharvalade in #2792
- feat(shard): create
shardcrate and genericIggyShardby @krishvishal in #2811 - deps(web): update frontend dependencies by @mmodzelewski in #2819
- refactor(configs): move ServerConfig types from server to configs crate by @hubcio in #2796
- ci: add Codecov coverage for Go SDK by @atharvalade in #2793
- fix(ci): use cargo-llvm-cov for Python SDK coverage by @atharvalade in #2817
- feat(simulator): implement PacketSimulator for deterministic simulator by @krishvishal in #2769
- perf(bench): downsample time series charts with LTTB by @hubcio in #2831
- feat(bench): add latency distribution chart with log-normal fit by @hubcio in #2832
- fix(integration): prevent flaky connector sink tests from f64 round-trip mismatch by @hubcio in #2838
- feat(java): add missing methods to async TCP UsersClient by @jrhenderson1988 in #2837
- feat(bench): add embeddable chart endpoints with PNG rendering by @hubcio in #2833
- docs(csharp): update dotnet SDK README by @lukaszzborek in #2836
- refactor(go): Introduce Command interface to improve Go client request handling by @chengxilo in #2737
- feat(cpp): Add bazel building and testing infrastructure by @slbotbm in #2785
- feat(cli): add cluster metadata command by @seokjin0414 in #2839
- fix(csharp): fix .net node redirection in tcp client by @lukaszzborek in #2843
- feat(consensus): add loopback queue for primary self-addressed messages by @hubcio in #2825
- fix(cluster): fix type mismatch for variadic plane impl by @numinnex in #2857
- ci(go): improve go bdd Dockerfile to leverage Docker layer caching by @chengxilo in #2862
- feat(consensus): Add metadata and partition handles for MuxPlane by @krishvishal in #2855
- feat(shard): Implement shard router by @krishvishal in #2853
- ci: add --no-format to cargo sort check by @hubcio in #2864
- perf: make IggyMessagesBatch::last_offset O(1) by @cijiugechu in #2840
- fix(ci): fix gnome-keyring locking mid-test in CI by @hubcio in #2868
- fix(ci): use cargo-llvm-cov properly for Python SDK coverage in Codecov by @atharvalade in #2867
- feat(go): implement TCP/TLS connection in Go SDK by @saie-ch in #2834
- feat(metadata): thread STM response into consensus Reply body by @hubcio in #2856
- fix(go): fix tcp client connect method by @chengxilo in #2860
- chore(repo): update versions to edge for all packages by @mmodzelewski in #2871
- ci: add binary artifact detection to pre-commit and CI by @hubcio in #2875
- feat(server): delete segments command for http by @dajneem23 in #2804
- fix(web): improve handling of
message_expiryby @piotrziolko in #2888 - fix(ci): disable Go caching to eliminate duplicate-restore errors by @hubcio in #2877
- chore(consensus): enable pedantic and nursery clippy lints by @hubcio in #2870
- chore(clock, journal): enable pedantic and nursery clippy lints by @hubcio in #2874
- chore(partitions): enable pedantic and nursery clippy lints by @hubcio in #2876
- chore(message_bus): enable pedantic and nursery clippy lints by @hubcio in #2873
- chore(simulator): enable pedantic and nursery clippy lints by @hubcio in #2895
- chore(shard,metadata): enable pedantic and nursery clippy lints by @hubcio in #2896
- feat(python): add TLS and auth args to getting-started examples by @saie-ch in #2754
- fix(rust): auto-reconnect on transport errors after server restart by @spetz in #2880
- feat(connectors): restart connector with new config without runtime restart by @seokjin0414 in #2781
- refactor(go): move command /foreign/go/internal/command by @chengxilo in #2881
- refactor(go): upgrade go-retry to v5 and enable infinite reconnection by @chengxilo in #2884
- ci(go): merge BDD and e2e test coverage into Go SDK Codecov reports by @atharvalade in #2859
- feat(js): add TCP/TLS integration tests and examples by @atharvalade in #2822
- feat(java): implement Async Connection Pooling using FixedChannelPool by @rythm-sachdeva in #2606
- feat(connectors): add MongoDB sink connector by @amuldotexe in #2815
- feat(rust): add dedicated TCP/TLS producer and consumer examples by @atharvalade in #2820
- chore: bump Rust to 1.94 by @hubcio in #2900
- chore(deps): upgrade workspace dependencies, bump all edge iggy crates by @hubcio in #2901
- ci: split examples-suite into per-SDK example components by @hubcio in #2899
- ci: fix flaky keyring tests with eval and collection warmup by @hubcio in #2908
- refactor(java): use generation-based auth for pooled channels by @mmodzelewski in #2910
- test(java): add async-specific tests for ConsumerGroupsTcpClient by @atharvalade in #2890
- fix(consensus): prevent UB from untrusted bytes interpreted as enum discriminants in consensus headers by @krishvishal in #2887
- feat(csharp): add TCP/TLS producer and consumer examples by @atharvalade in #2821
- fix(js): use localhost instead of disabling hostname verification in … by @atharvalade in #2913
- feat(java): add TCP/TLS integration tests and examples by @atharvalade in #2823
- feat(bdd): support -race option for Go BDD tests by @atharvalade in #2914
- feat(java): Add unit tests for message package in Java SDK by @jrhenderson1988 in #2918
- refactor(java): replace JUnit assertions with AssertJ across all tests by @mmodzelewski in #2929
- feat(go): add TLS integration tests and examples by @saie-ch in #2898
- chore(deps): bump black from 24.10.0 to 26.3.1 in /foreign/python by @dependabot[bot] in #2926
- chore(deps): bump github.com/containerd/containerd from 1.7.18 to 1.7.29 in /foreign/go by @dependabot[bot] in #2935
- chore(deps): bump golang.org/x/crypto from 0.42.0 to 0.45.0 in /foreign/go by @dependabot[bot] in #2934
- refactor(csharp): implement SDK version handling in login requests by @lukaszzborek in #2937
- ci: unify run-*-examples-from-readme.sh into single entrypoint with TLS support by @atharvalade in #2920
- feat(java): Increase test coverage by @jrhenderson1988 in #2939
- refactor(rust): empty binary_protocol crate by relocating its contents by @hubcio in #2942
- feat(cpp): part of low-level bindings, their tests, and e2e CI config by @slbotbm in #2852
- fix(cpp): Remove
--lockedoption and delete cargo.lock file by @slbotbm in #2949 - refactor(journal): refactor partition journal utilize storage trait by @numinnex in #2909
- refactor(repo): wrap credentials in SecretString to prevent leaks by @grainier in #2931
- refactor(java): unify blocking TCP client as wrapper over async client by @mmodzelewski in #2947
- docs(connectors): align MongoDB sink duplicate-key semantics by @avirajkhare00 in #2941
- refactor(java): harden client lifecycle and streamline test suite by @mmodzelewski in #2959
- feat(rust): add wire protocol codec and types to binary_protocol crate by @hubcio in #2946
- feat(server): add threads count and disk space to sysinfo stats by @seokjin0414 in #2917
- refactor(go): refactor WithTLS by @chengxilo in #2957
- fix(ci): prevent flaky keyring tests by keeping daemons alive by @hubcio in #2963
- feat(rust): add wire types for all commands and zero-copy message primitives by @hubcio in #2962
- fix(integration): reduce flakiness in connector integration tests by @hubcio in #2966
- docs(go): solve typo in DeleteStream method. by @chengxilo in #2972
- fix(sdk): fix broken Windows build for SDK and CLI by @hubcio in #2971
- feat(bdd): add --coverage flag to run-bdd-tests.sh for all SDKs by @atharvalade in #2950
- feat(partitions): add poll_messages support to simulator by @krishvishal in #2960
- fix(web): submit login form on Enter instead of toggling password visibility by @mmodzelewski in #2970
- feat(java): add new stats fields to match server sysinfo updates by @mmodzelewski in #2969
- test(server): add regression test to ensure secrets are never persisted as plaintext by @yeyomontana in #2945
- feat(security): generate random JWT secrets when not configured by @spetz in #2974
- chore(python): bump Python SDK to 0.7.3-dev1 by @hubcio in #2989
- ci: fix ASF github actions allowlist violations by @hubcio in #2993
- chore(ci): add uv lock check to pre-commit hooks by @hubcio in #2996
- feat(server): implement TwoHalves buffer by @numinnex in #2944
- ci: pin Docker actions to SHA and bump setup-bazel per ASF allowlist by @hubcio in #2999
- fix(ci): prevent flaky keyring tests by deferring unlock to test phase by @hubcio in #2995
- ci: partition Rust tests across 2 parallel CI machines by @hubcio in #3003
- fix: Helm chart install guidance and deployment defaults by @avirajkhare00 in #2976
- fix(bench): delete stale streams on re-run to prevent corrupted latency by @hubcio in #2991
- refactor(csharp): rename asynchronous methods to have Async suffix by @lukaszzborek in #2994
- deps(rust): bump workspace dependencies by @hubcio in #3005
- feat: add UI /healthz endpoint by @avirajkhare00 in #2983
- fix(docs): fix grammar errors in README, examples, and test comments by @strbrgr in #3011
- feat(rust): add sans-IO frame codec and command dispatch table by @hubcio in #2967
- chore(python): bump SDK to 0.7.4-dev1, modernize CI and deps by @hubcio in #2992
- feat(go): implement binary reader/writer by @chengxilo in #2986
- fix(server): prevent consumer offset skip during concurrent produce+consume by @hubcio in #2958
- fix(deps): resolve 15 Dependabot vulnerability alerts by @hubcio in #3016
- feat(server): aligned buffer memory pool by @tungtose in #2921
- feat(server): add io_uring EINVAL diagnostics for shard executors by @hubcio in #3021
- test(csharp): wait for HTTP readiness in fixture by @avirajkhare00 in #3024
- refactor(consensus): consolidate VSR types in binary_protocol by @hubcio in #3014
- ci: split post-merge monolith and harden Codecov uploads by @hubcio in #3006
- feat(go): send SDK version in login request by @ryankert01 in #3025
- fix(security): replace SecretString with String for API response tokens by @spetz in #3008
- chore(deps): bump requests from 2.32.5 to 2.33.0 in /foreign/python by @dependabot[bot] in #3031
- ci: allow
deps-devscope in PR title by @hubcio in #3035 - chore(deps-dev): bump picomatch from 4.0.3 to 4.0.4 in /foreign/node by @dependabot[bot] in #3034
- chore(deps-dev): bump picomatch from 4.0.3 to 4.0.4 in /examples/node by @dependabot[bot] in #3033
- refactor(server): replace ServerCommand enum and binary mapper with wire types by @hubcio in #3027
- feat(metadata): Persistent WAL journal with recovery and compaction by @krishvishal in #2916
- feat(java): Support connection timeout by @jrhenderson1988 in #3026
- ci: add Helm chart validation by @avirajkhare00 in #3019
- fix(go): correct Permissions serialization and add unit tests by @saie-ch in #3015
- feat(cli): Add context create/delete CLI commands to complete login/logout workflow by @atharvalade in #2998
- feat(security): encrypt user headers alongside message payload by @spetz in #3040
- fix(test): remove race condition in postgres source mark test by @krishvishal in #3052
- fix: stats semver wire alignment using a zero sentinel by @atharvalade in #3036
- chore(deps): bump pygments from 2.19.2 to 2.20.0 in /bdd/python by @dependabot[bot] in #3055
- chore(deps): bump pygments from 2.19.2 to 2.20.0 in /foreign/python by @dependabot[bot] in #3054
- fix(test): remove racy assertion in postgres source delete_after_read test by @krishvishal in #3064
- feat(partitions): rework partitions using new message by @numinnex in #3020
- feat(connectors): implement InfluxDB Sink and Source by @ryerraguntla in #2933
- feat(cpp): Add functions related to consumer groups by @slbotbm in #2988
- feat(connectors): add generic HTTP sink connector by @mlevkov in #2925
- chore(repo): update connectors versions and readme by @spetz in #3066
- feat(ci): add version bump tooling and consistency checks by @hubcio in #2990
- feat(simulator): wire Network into tick loop with per-replica outboxes and replica_crash by @krishvishal in #3049
- refactor(server,sdk): replace ServerCommand/BytesSerializable with wire types by @hubcio in #3041
- feat(server-ng): create iggy-server-ng binary crate by @krishvishal in #3053
- chore(deps): update workspace dependencies by @hubcio in #3072
- chore(repo): bump all components minor version by @hubcio in #3073
- fix(test): Fix Iceberg container readiness check to use HTTP health check by @krishvishal in #3077
- fix(test): Fix Elasticsearch container readiness check to use HTTP health check by @krishvishal in #3079
- chore(deps-dev): bump vite from 7.3.1 to 7.3.2 in /web by @dependabot[bot] in #3083
- fix(sdk): allow hostnames in server address configuration by @felixfaisal in #2923
- chore(deps): bump hwlocality and passterm, fix non-tty password read by @hubcio in #3084
- chore(go): delete redundant script run_tcp_e2e.sh by @chengxilo in #3065
- feat(test): add shared_server to iggy_harness for server reuse across tests by @hubcio in #3085
- feat(consensus): add ClientTable with WAL-backed commit path and view-change safety by @krishvishal in #3023
- revert(test): remove shared_server, add nextest CI retries by @hubcio in #3088
- chore(security): fix Dependabot security vulnerabilities by @hubcio in #3087
- feat(server): support A2A protocol by @Tyooughtul in #2656
- feat(consensus): wire up view change protocol in simulator by @krishvishal in #3092
- fix(connectors): support default credential provider chain for iceberg sink by @gomnitrix in #3045
- feat(bench): prettier table output by @tungtose in #3090
- fix(ci): fix comfy table problem when building WASM targets by @tungtose in #3107
- chore: add third-party attribution for bundled Gradle Wrapper by @mmodzelewski in #3109
- feat(ci): dependency-DAG-based test scoping for Rust CI by @krishvishal in #3095
- fix(sdk): inline iobuf into iggy_binary_protocol by @hubcio in #3110
- fix(ci): include binary packages in DAG-scoped builds for CARGO_BIN_EXE support by @krishvishal in #3113
- fix(ci): fix DAG-scoped builds for connector plugins and multi-crate PRs by @krishvishal in #3120
- chore(go): update sdk dependencies by @spetz in #3115
- fix(go): update stats field and its deserialization logic to align with rust SDK by @chengxilo in #3032
- feat(ci): harden Rust crate publish chain after rc1 incident by @hubcio in #3111
- fix(test): replace log-based container readiness checks with HTTP healthcheck endpoints by @krishvishal in #3093
- chore: bump iggy-web-ui to 0.3.0 by @hubcio in #3121
- feat(helm): add helm-docs, yamllint, and helmfmt for chart quality by @avirajkhare00 in #3070
- deps(python): bump pytest minimum to 9.0.3 by @mmodzelewski in #3122
- fix(docs): remove unsupported verbosity in benchmark command examples by @ryankert01 in #3114
- fix(cli): Ensure home directory exists when writing contexts by @pauliyobo in #3069
- chore(deps): update workspace dependencies by @krishvishal in #3123
- fix(ci): gate release tags on proven registry availability by @hubcio in #3124
- fix(go): correct buffer size for CreateUser and UpdatePermissions serialization by @atharvalade in #3097
- fix(ci): harden publish pipeline by @hubcio in #3125
- chore(sdk): update rust client to 0.10.0 by @spetz in #3126
New Contributors
- @vishakha1411 made their first contribution in #2738
- @kriti-sc made their first contribution in #2771
- @gomnitrix made their first contribution in #2794
- @jrhenderson1988 made their first contribution in #2837
- @cijiugechu made their first contribution in #2840
- @saie-ch made their first contribution in #2834
- @rythm-sachdeva made their first contribution in #2606
- @amuldotexe made their first contribution in #2815
- @grainier made their first contribution in #2931
- @avirajkhare00 made their first contribution in #2941
- @yeyomontana made their first contribution in #2945
- @strbrgr made their first contribution in #3011
- @ryankert01 made their first contribution in #3025
- @ryerraguntla made their first contribution in #2933
- @mlevkov made their first contribution in #2925
- @felixfaisal made their first contribution in #2923
- @Tyooughtul made their first contribution in #2656
- @pauliyobo made their first contribution in #3069
Full Changelog: server-0.7.0...server-0.8.0