Major Improvements & New Capabilities in 0.7.0
Cluster & Metadata Foundations
- Deterministic tick-based timeout mechanism for VSR — improves reliability for Viewstamped Replication workflows, a core building block toward clustering and distributed coordination.
- New cluster primitives (
on_replicate,send_prepare_ok,replicate, view change, partitions trait) to solidify cluster control paths and prepare for future distributed expansions. - Metadata state machine foundation & snapshot interface — essential groundwork for robust metadata handling and future high-availability features.
Server & Runtime Enhancements
- Embedded Web UI now included in the server and enabled by default — no extra deployment step required for the dashboard experience.
- NUMA awareness — improves performance on multi-socket hardware by aligning memory and CPU locality.
- Http.web_ui config option gives users control over Web UI exposure and configuration.
- Graceful shard shutdown on panic, enhanced async disk I/O availability handling, and improved critical task failure handling — all contribute to greater server resilience.
Connectors & Integrations
- Retry mechanism and detailed logging for connector HTTP configuration — increasing robustness when integrating with external systems.
- Prometheus metrics and stats endpoints now exposed for connectors so observability is first-class.
- Extended Postgres sink & source plugins with integration tests for richer pipeline ingestion.
- Connector runtime
--versionflag & other quality-of-life improvements for ops tooling.
CLI, SDK & Tooling
- Java SDK enhancements: fluent builder API, better tests, and async serialization improvements.
- Python SDK: async iterator support for consumer — smoother integration for modern async apps.
- Go leader redirection scenario addition — improved client routing logic.
- C# SDK: expanded API surface and .NET 10 support.
Quality, CI & Developer Experience
- Linux edge binary builds + ARM64 support — expands platform compatibility for pre-release runners.
- Automated artifacts & enhanced CI workflows (auto-publish, better shared caches, native runners) to speed iteration and ensure release quality.
- Pre-commit hooks, TOML formatting, auto-publish workflows across SDKs and languages — boosts contribution hygiene.
- Expanded API tests, integration tests, watchdogs, and crash detection — better confidence in deployment and regression risk reduction.
Dependency & Architecture Upgrades
- Rust toolchain bump (1.92.0) and widespread dependency updates.
- Replace unmaintained serialization (msgpack replacing old libs) — steers toward more sustainable and performant internals.
- Migration to up-to-date ecosystem dependencies (e.g., Yew & yew-router) for UI stack improvements.
Complete Changelog
- feat(connectors): add retry mechanism to connectors HTTP config provider by @tungtose in #2437
- chore(docs): improve Rust examples documentation by @slbotbm in #2440
- fix(server): graceful shutdown all shards when one panics by @hubcio in #2439
- refactor(server): initialize logging before config parsing by @hubcio in #2442
- feat(server): add file_enabled option to logging config by @hubcio in #2443
- fix(bench): fix failed to run pinned-consumer bench by @tungtose in #2444
- feat(ci): add Linux edge binary builds with rolling GitHub pre-release by @hubcio in #2447
- feat(message_bus): create message_bus interface and basic impl for IggyMessageBus by @numinnex in #2446
- feat(cluster): Add deterministic tick-based timeout mechanism for VSR by @krishvishal in #2450
- fix(ci): use newer gh runner for macos-intel by @hubcio in #2463
- fix(ci): use correct macos runner for building python wheels by @hubcio in #2464
- chore(deps): update dependencies by @mmodzelewski in #2466
- chore(repo): update modules versions by @mmodzelewski in #2465
- feat(connectors): log retry request with URL details by @tungtose in #2457
- chore(deps): upgrade to yew 0.22 and yew-router 0.19 by @hubcio in #2467
- chore(docs): update Java SDK info by @mmodzelewski in #2471
- feat(cluster): Add
on_replicateand related machinery by @krishvishal in #2469 - feat(ci): add ARM64 builds and connector plugins to edge release by @hubcio in #2472
- fix(ci): detect architecture for sccache and nextest installation by @hubcio in #2475
- feat(metadata): impl base mux_state_machine by @numinnex in #2474
- fix(cli): disable keyring on musl targets by @hubcio in #2478
- fix(ci): restore integration deps accidentally moved to musl-excluded section by @hubcio in #2479
- refactor(java): unify deserialization and serialization code for tcp clients by @mmodzelewski in #2477
- fix(ci): add aarch64 builds to pre-merge and fix musl linking by @hubcio in #2481
- chore(repo): bump Rust version to 1.92.0 by @hubcio in #2480
- feat(ci): add TOML formatting with taplo by @hubcio in #2482
- fix(ci): filter artifact download to exclude docker cache by @hubcio in #2483
- feat(server,web): embed Web UI into server behind iggy-web feature by @spetz in #2485
- feat(server): NUMA awareness by @tungtose in #2412
- fix(ci): fix hwloc build for musl targets in release workflow by @hubcio in #2486
- feat(ci): use native ARM64 runners and implement better shared Docker cache by @hubcio in #2487
- fix(ci): fix Docker build failures for server and connectors by @hubcio in #2488
- fix(ci): add xz-dev and xz-static to Alpine Docker builds for liblzma linking by @hubcio in #2490
- fix(ci): eliminate intermediate Docker tags using push-by-digest by @hubcio in #2491
- fix(ci): remove temporary tag cleanup job by @hubcio in #2492
- feat(server): add http.web_ui config option to control embedded Web UI by @hubcio in #2494
- feat(server): enable embedded Web UI by default by @hubcio in #2497
- fix(ci): include web directory in build context for embedded UI by @hubcio in #2498
- feat(connectors): add --version flag support to connector runtime by @hubcio in #2502
- fix(server): improve shutdown handling for critical task failures by @hubcio in #2506
- fix(connectors): read only TOML files from local config directory by @Rohan-flutterint in #2510
- feat(ci): add automatic crates.io publishing for edge/rc versions by @hubcio in #2508
- fix(sdk): fix high-level consumer polling strategies by @numinnex in #2495
- feat(cluster): Impl
on_ack,send_prepare_okandreplicateby @krishvishal in #2493 - feat(server): socket migration across shard by @tungtose in #2476
- fix(bench): add configurable read_amplification and fix E2E latency by @hubcio in #2468
- fix(server): set CPU affinity before NUMA memory bind by @tungtose in #2511
- chore(docs): add java examples and ci tests by @slbotbm in #2504
- fix(docs): add guide for running C# integration tests locally by @tungtose in #2513
- fix(ci): ensure SDK e2e tests fail when server build fails by @hubcio in #2509
- chore(repo): add cargo-sort to pre-commit hooks by @hubcio in #2503
- fix(server): propagate panics from connection handlers to trigger shutdown by @hubcio in #2515
- fix(server): fix consumer group leave race and append_messages by @numinnex in #2521
- chore(server): use
msgpackinstead of unmaintainedbincode, update deps by @hubcio in #2523 - fix(server): handle empty permission maps in serialization by @hubcio in #2527
- fix(helm): fix volume mount path and add io_uring requirements by @hubcio in #2526
- chore(repo): update
err-trailto 0.11.0 by @hubcio in #2525 - chore(connectors): Update sqlx version to address security advisory by @tungtose in #2530
- feat(ci): add versioned edge Docker tags in post-merge workflow by @hubcio in #2528
- feat(partitions): add partitions abstraction for clustering by @hubcio in #2514
- feat(java): Implement user headers serialization / deserialization in java sdk by @slbotbm in #2516
- fix(ci): set bot username and email in post-merge git tag creation by @hubcio in #2531
- feat(integration): detect server crashes during tests and dump logs by @hubcio in #2536
- fix(python): update python version to 3.10 by @slbotbm in #2532
- fix(connectors): add known secrets to env config reader by @mmodzelewski in #2538
- docs(js): add JSDoc comments by @nhs04047 in #2534
- fix(server,sdk): handle stale client in consumer group operations by @hubcio in #2547
- feat(java): implement Java SDK BDD tests with Cucumber by @ex172000 in #2535
- fix(server): handle entity ID gaps on bootstrap after deletions by @hubcio in #2548
- feat(metadata): introduce
mux_state_machinewith state impls by @numinnex in #2544 - feat(server): add SegmentedSlab collection by @hubcio in #2549
- fix(bench): use correct topic name and partitioning in high level benchmarks by @hubcio in #2553
- feat(cluster): Impl VSR
view_changeby @krishvishal in #2546 - refactor(server): add metadata module foundation by @hubcio in #2551
- fix(java): use Netty EventLoop for concurrent async operations by @ex172000 in #2558
- feat(server): require auth for stats endpoint by @hubcio in #2559
- perf(ci): use opt-level=2, optimize sccache usage by @hubcio in #2566
- feat(connectors,mcp): Implement reading iggy token from file by @mmodzelewski in #2565
- fix(rust): fix log in with PAT by publishing missing diagnostic event by @mmodzelewski in #2569
- chore(ci): improve sccache cache effectiveness by @hubcio in #2568
- perf(ci): reduce dev profile opt-level from 2 to 1 by @hubcio in #2573
- fix(server): maintain message availability during async disk I/O by @hubcio in #2575
- fix(integration): add watchdog to detect test server crashes by @hubcio in #2576
- fix(server): prevent message unavailability during background persistence by @hubcio in #2578
- refactor(server): consolidate permissions into metadata crate and fix inheritance bugs by @hubcio in #2564
- feat(connectors): extend Postgres sink & source connectors, add integration tests by @spetz in #2579
- fix(server): chunk vectored writes to avoid exceeding IOV_MAX limit by @hubcio in #2581
- fix(server): prevent panic when segment rotates during async persistence by @hubcio in #2588
- test(server): add API tests for message retrieval by @seokjin0414 in #2537
- feat(python): add AsyncIterator interface to IggyConsumer by @slbotbm in #2552
- fix(server): broadcast PAT events from HTTP handlers to all shards by @hubcio in #2589
- chore(integration): remove streaming tests superseded by API-level coverage by @hubcio in #2591
- fix(web): remove logout side-effect from page load by @JoshuaXOng in #2597
- feat(connector): add iggy-pinot external connector by @chiradip in #2499
- feat(cluster): Abstract out
Pipelineinto a trait similar toSequencertrait by @krishvishal in #2567 - feat(metadata): impl states for streams,users, consumer_groups in metadata module by @numinnex in #2582
- feat(csharp): add .net10 by @lukaszzborek in #2599
- fix(metadata): fix license header in module file by @numinnex in #2608
- refactor(server): replace slab ECS with LeftRight-based global metadata by @hubcio in #2555
- fix(sdk): prevent client from getting stuck after disconnect by @hubcio in #2610
- refactor(bench): remove TestServer startup capability by @hubcio in #2611
- feat(connectors,mcp): implement logging with telemetry by @mmodzelewski in #2612
- deps: Update iceberg to 0.8.0 by @EdgarModesto23 in #2605
- fix(sdk): improve high-level SDK direct and background producers by @spetz in #2621
- test(java): add unit tests for serialization utilities by @ex172000 in #2607
- docs: update PR template and contributing guidelines by @hubcio in #2601
- refactor(server): compile-time env var mappings eliminate runtime ambiguity by @hubcio in #2614
- fix(configs): support internally-tagged enums in ConfigEnv derive macro by @hubcio in #2631
- chore(sdk): Adds Rust example for message compression using user_headers by @haubur in #2613
- fix(sdk): acquire max_in_flight permits at network send, not dispatch by @hubcio in #2625
- feat(connectors): add Prometheus metrics and stats endpoints by @mmodzelewski in #2633
- feat(integration): add core test harness library by @hubcio in #2632
- ci(csharp): enhance test reporting and upload results by @lukaszzborek in #2638
- feat(java): refactor SDK with fluent builder API and exception hierarchy by @mmodzelewski in #2630
- fix(ci): pin ginkgo CLI to v2.23.4 to match go.mod by @hubcio in #2642
- feat(connectors): extend published stats by @mmodzelewski in #2640
- chore(repo): bump Rust version to 1.93.0 by @hubcio in #2644
- feat(metadata): expose metadata generics and create journal handle by @numinnex in #2624
- perf(ci): optimize hot dependencies in dev profile by @hubcio in #2645
- test(connectors): add integration tests for Quickwit sink by @JoshuaXOng in #2636
- ci: add stale PR workflow by @hubcio in #2641
- feat(server,sdk): allow arbitrary (non-string) header key kind by @spetz in #2637
- docs(repo): add pre-commit hooks checklist to PR template by @hubcio in #2646
- fix(configs): remove configs_derive re-export from common crate by @hubcio in #2649
- perf(ci): add reusable Go setup action and reduce cache bloat by @hubcio in #2648
- chore(python): upgrade pyo3 to 0.27 and fix deprecations by @hubcio in #2643
- test(csharp): fix GetOffset test case by @lukaszzborek in #2651
- chore(sdk): remove unused fast_async_lock feature by @hubcio in #2653
- refactor(deps): centralize workspace dependencies in root Cargo.toml by @hubcio in #2652
- feat(ci,java): add formatting verification for bdd and examples by @mmodzelewski in #2647
- feat(server): implement log rotation based on size and retention by @Svecco in #2452
- feat(java): improve tests and clean up json mappings by @mmodzelewski in #2658
- feat(java): add gradle wrapper with jar file autofetch by @mmodzelewski in #2659
- feat(connectors): add connector version to stats endpoint by @mmodzelewski in #2660
- feat(integration): add iggy_harness proc macro and use it in mcp tests by @hubcio in #2635
- feat(server,sdk): add reserved u64 to iggy message header by @spetz in #2657
- chore(cpp): delete old client by @slbotbm in #2668
- refactor(integration): migrate connectors tests to iggy_harness proc macro by @hubcio in #2667
- feat(bench): add --message-expiry CLI option for benchmark topics by @hubcio in #2672
- feat(python): add message_expiry parameter to create_topic by @hubcio in #2671
- ci: unify publishing via workflow_call in publish.yml by @hubcio in #2655
- ci: add pre-commit hooks for all SDKs by @hubcio in #2676
- ci(rust): replace sccache with Swatinem/rust-cache by @hubcio in #2679
- feat(cluster): add
Partitionstrait that unifies both single-node and VSR operations by @krishvishal in #2620 - ci(rust): add code coverage reporting with Codecov by @hubcio in #2677
- fix(server): properly cleanup messages in message cleaner by @hubcio in #2670
- chore: update coverage badge by @hubcio in #2680
- fix(ci): fix example jobs, pin images by @hubcio in #2681
- fix(server): memory leak in segment rotation by @spetz in #2686
- refactor(integration): remove legacy test infrastructure by @hubcio in #2678
- ci(go): enable auto-publish for Go SDK on post-merge by @hubcio in #2692
- ci(python): enable auto-publish for Python SDK on post-merge by @hubcio in #2693
- fix(python): gate Unix-only APIs to fix Windows SDK build by @hubcio in #2695
- ci(js): enable auto-publish for Node SDK on post-merge by @hubcio in #2694
- ci(java): enable auto-publish for Java SDK with SNAPSHOT semantics by @hubcio in #2696
- refactor(csharp): change expiry handling to use TimeSpan by @lukaszzborek in #2690
- feat(csharp): implement get_snapshot method in C# SDK by @atharvalade in #2698
- feat(simulator): implement bare bone version of simulator by @numinnex in #2688
- chore(server): move
IggyBatchSetand it's utilities to common by @numinnex in #2704 - ci: add JaCoCo code coverage with Codecov integration by @ex172000 in #2623
- fix(java): resolve Gradle 9 task dependency error in Pinot connector publish by @hubcio in #2706
- ci(java): add Java coverage baseline to post-merge workflow by @hubcio in #2707
- refactor(metadata): invert state handler dependency by @hubcio in #2705
- feat(connectors): fix state & memory leak, test all plugins, enrich sinks by @spetz in #2685
- fix(connectors): harden plugin loading and config metadata by @hubcio in #2713
- feat(java): fix integration test failure by @ex172000 in #2703
- feat(repo): add structured YAML issue forms by @hubcio in #2717
- feat(csharp): implement delete_segments method by @atharvalade in #2701
- fix(repo): fix path in bug report template description by @lukaszzborek in #2721
- fix(server): hash passwords before persisting to state log by @spetz in #2724
- deps(server,sdk): bump compio to 0.18.0 with unified feature-based imports by @hubcio in #2650
- deps: bump workspace dependencies and migrate to rand 0.10 by @hubcio in #2727
- refactor(server): improve server command handlers by @hubcio in #2669
- feat(metadata): impl Snapshot interface for Mux state machine by @krishvishal in #2675
- feat(server): cooperative partition reassignment for consumer groups by @spetz in #2734
- feat(java): Add test for AsyncIggyTcpClientBuilder by @ex172000 in #2726
- feat(go): implement Go leader redirection scenario by @chengxilo in #2580
- fix(server): fix stream stats corruption on topic purge by @hubcio in #2736
- fix(connectors): prevent state loss on source connector restart by @hubcio in #2743
- feat(partitions): impl first version of partitions module by @numinnex in #2735
- fix(ci): replace BREAKING body match with breaking:storage label check by @hubcio in #2742
- refactor(consensus): decouple pipeline from VsrConsensus internals by @hubcio in #2740
- refactor(partitions): add plane trait and refactor partitions module by @numinnex in #2744
- fix(security): harden all deserializers against malformed packets by @hubcio in #2741
- fix(sdk): add leader redirection logic for
login_with_personal_access_tokenby @chengxilo in #2752 - refactor(java): extract base integration test class by @mmodzelewski in #2749
- ci(java): detect Netty ByteBuf memory leaks in CI tests by @mmodzelewski in #2755
- chore(repo): bump version of all packages for new release by @numinnex in #2758
New Contributors
- @Rohan-flutterint made their first contribution in #2510
- @nhs04047 made their first contribution in #2534
- @ex172000 made their first contribution in #2535
- @JoshuaXOng made their first contribution in #2597
- @haubur made their first contribution in #2613
- @Svecco made their first contribution in #2452
Full Changelog: server-0.6.0...server-0.7.0