This is an automated email from the ASF dual-hosted git repository. piotr pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/iggy-website.git
commit 941711aec126ffee4c075f5c465b4bcfe0bd90ee Author: spetz <[email protected]> AuthorDate: Tue Feb 24 21:04:16 2026 +0100 Add release 0.7.0 --- content/blog/release-0.6.0.mdx | 2 +- content/blog/release-0.7.0.mdx | 167 +++++++++++++++++++++ .../blog/technology-radar-and-currrent-goals.mdx | 2 +- src/app/(site)/downloads/page.tsx | 22 ++- 4 files changed, 185 insertions(+), 8 deletions(-) diff --git a/content/blog/release-0.6.0.mdx b/content/blog/release-0.6.0.mdx index f7704f8c..5c32d44f 100644 --- a/content/blog/release-0.6.0.mdx +++ b/content/blog/release-0.6.0.mdx @@ -93,7 +93,7 @@ Server and UI combined into a **[unified Helm chart](https://github.com/apache/i ## What's Next -Our primary focus is **clustering with [Viewstamped Replication (VSR)](https://pmg.csail.mit.edu/papers/vr-revisited.pdf)** consensus protocol. This will enable fault-tolerant, replicated deployments — a critical milestone for production workloads requiring high availability and reliability. +Our primary focus is **clustering with [Viewstamped Replication (VSR)](https://sands.kaust.edu.sa/classes/CS240/F21/papers/vr-revisited.pdf)** consensus protocol. This will enable fault-tolerant, replicated deployments — a critical milestone for production workloads requiring high availability and reliability. Other upcoming efforts: - Server's core optimizataions such as kTLS, DirectIO, NUMA, TCP connections transfer across shards and more diff --git a/content/blog/release-0.7.0.mdx b/content/blog/release-0.7.0.mdx new file mode 100644 index 00000000..9b539d61 --- /dev/null +++ b/content/blog/release-0.7.0.mdx @@ -0,0 +1,167 @@ +--- +title: Apache Iggy 0.7.0 Release +author: piotr +tags: ["release", "0.7.0", "announcement"] +date: 2026-02-24 +--- +## Release 0.7.0 + +Less than three months after [0.6.0](https://iggy.apache.org/blogs/2025/12/09/release-0.6.0/), we're excited to release **[Apache Iggy 0.7.0](https://github.com/apache/iggy/releases/tag/server-0.7.0)** — a massive step toward production-ready clustering. + +While 0.6.0 was about the io_uring rewrite, 0.7.0 is about what comes next: **replication**. We've built the foundations for **Viewstamped Replication (VSR)** consensus, redesigned how the server manages metadata, added **NUMA awareness** and **socket migration**, embedded the **Web UI directly into the server binary**, and shipped important improvements across all SDKs and connectors. + +## New Committer + +We're thrilled to welcome **[Łukasz Zborek](https://github.com/lukaszzborek)** as a new Apache Iggy committer! Łukasz has been a core contributor to our C# SDK and is the #8 contributor in our repository. His work goes far beyond building a top-notch C# SDK — he has helped find and fix issues across many areas of the project. His contributions span CI, BDD testing, core features like TLS support, reconnection handling, and the high-level consumer/publisher APIs. Congratulations, Łukasz! + +--- + +## Iggy Server + +### Clustering & VSR Consensus + +The primary focus of 0.7.0 is laying the groundwork for **clustering with [Viewstamped Replication (VSR)](https://sands.kaust.edu.sa/classes/CS240/F21/papers/vr-revisited.pdf)** — a critical milestone for fault-tolerant, replicated deployments. + +We've implemented the core consensus building blocks that will power the upcoming cluster mode: + +- **[VSR view_change](https://github.com/apache/iggy/pull/2546)** — the view change protocol from the VSR-revisited paper, enabling leader election and fault recovery +- **[Replication pipeline](https://github.com/apache/iggy/pull/2493)** — core replication machinery including `on_ack`, `send_prepare_ok`, and `replicate`, with [on_replicate](https://github.com/apache/iggy/pull/2469) for data propagation between nodes +- **[Deterministic tick-based timeouts](https://github.com/apache/iggy/pull/2450)** — precise, deterministic timeout mechanism essential for correct consensus behavior +- **[Metadata snapshots](https://github.com/apache/iggy/pull/2675)** — a three-layer snapshot system enabling state transfer between replicas for recovery and bootstrapping +- **[Partitions module](https://github.com/apache/iggy/pull/2735)** — extracted partition and segment logic into a dedicated crate, with a [unified Partitions trait](https://github.com/apache/iggy/pull/2620) that abstracts both single-node and replicated operations behind the same interface +- **[Pipeline decoupling](https://github.com/apache/iggy/pull/2740)** — made `VsrConsensus` generic over the `Pipeline` trait, so implementations can be swapped and memory usage is reduced by keeping only headers in the pipeline +- **[Message bus](https://github.com/apache/iggy/pull/2446)** — internal message bus for inter-component communication +- **[Simulator](https://github.com/apache/iggy/pull/2688)** — initial version of a distributed system simulator for testing VSR behavior in a controlled, deterministic environment + +### LeftRight-Based Global Metadata + +We've **[replaced the distributed slab ECS approach](https://github.com/apache/iggy/pull/2555)** with a centralized **LeftRight-based global metadata store**. This is one of the largest refactoring efforts in this release — shards now read from a shared, lock-free snapshot while shard 0 exclusively handles writes. The result is consistent metadata across all shards without per-read synchronization, and a much simpler concurrency model that's easier to reason about and extend for clustering. + +### NUMA Awareness + +The server now features **[NUMA awareness](https://github.com/apache/iggy/pull/2412)** with configurable CPU affinity and memory binding per NUMA node. On multi-socket machines, this keeps each shard's memory local to its CPU, reducing cross-socket latency and improving cache efficiency — an important optimization for high-throughput deployments. + +### Socket Migration Across Shards + +**[TCP socket migration](https://github.com/apache/iggy/pull/2476)** eliminates cross-shard forwarding overhead. When a client connects to a shard that doesn't own its target partition, the socket is migrated to the correct shard instead of forwarding every request. This significantly reduces latency for workloads spread across multiple shards. + +### Embedded Web UI + +The Web UI can now be **[embedded directly into the server binary](https://github.com/apache/iggy/pull/2485)**, served at the `/ui` endpoint. No separate deployment needed — just start the server and open the dashboard. The feature is **[enabled by default](https://github.com/apache/iggy/pull/2497)** and can be **[toggled](https://github.com/apache/iggy/pull/2494)** via `http.web_ui` in the server config. + +### Cooperative Partition Reassignment + +**[Cooperative partition reassignment](https://github.com/apache/iggy/pull/2734)** for consumer groups eliminates message duplicates during rebalancing. Previously, partitions were moved instantly on join — the old consumer could still be mid-processing while the new one polled the same uncommitted offset. The new approach introduces a "pending revocation" phase where partitions are held until the committed offset catches up or a timeout is reached, ensuring clean handoff without duplicates. + +### Log Rotation + +**[Configurable log rotation](https://github.com/apache/iggy/pull/2452)** based on file size and retention policies prevents unbounded log growth in long-running deployments. + +### Breaking Changes + +- **[Reserved u64 in message header](https://github.com/apache/iggy/pull/2657)** — added for forward-compatible protocol extensions (all SDKs updated) +- **[Arbitrary header key kinds](https://github.com/apache/iggy/pull/2637)** — `HeaderKey` now supports non-string types, matching `HeaderValue` capabilities +- **[MessagePack replaces bincode](https://github.com/apache/iggy/pull/2523)** — state persistence switched to `msgpack` from the unmaintained `bincode` +- **[Compile-time env var mappings](https://github.com/apache/iggy/pull/2614)** — new `configs_derive` crate replaces runtime path inference, making environment variable handling explicit and unambiguous; `server.toml` renamed to `config.toml` +- **[Legacy C++ client removed](https://github.com/apache/iggy/pull/2668)** — the old C++ client has been removed from the repository + +### Security Improvements + +- **[Hardened deserializers](https://github.com/apache/iggy/pull/2741)** — all command deserializers now use checked reads instead of direct byte indexing, preventing malformed packets from crashing the server +- **[Password hashing before state log](https://github.com/apache/iggy/pull/2724)** — fixed a critical bug where plaintext passwords were persisted to the state log, causing login failures after server restart +- **[Auth required for stats](https://github.com/apache/iggy/pull/2559)** — the `/stats` endpoint now requires authentication +- **[Permission inheritance fixes](https://github.com/apache/iggy/pull/2564)** — consolidated permissions into the metadata crate and fixed broken inheritance (e.g., `manage_stream` now correctly implies `read_stream`) + +### Notable Bug Fixes + +- **[Memory leak in segment rotation](https://github.com/apache/iggy/pull/2686)** — sealed segments retained index buffers and open file writers indefinitely; under heavy load, memory could grow unbounded +- **[Message cleaner](https://github.com/apache/iggy/pull/2670)** — new segments ignored the topic's configured `message_expiry`, causing messages to never be cleaned up +- **[Stream stats corruption](https://github.com/apache/iggy/pull/2736)** — purging one topic incorrectly zeroed stats for the entire stream +- **[Segment rotation race](https://github.com/apache/iggy/pull/2588)** — prevented panic when segment rotates during async persistence +- **[IOV_MAX overflow](https://github.com/apache/iggy/pull/2581)** — chunked vectored writes for large message batches +- **[Message availability during persistence](https://github.com/apache/iggy/pull/2575)** — messages remain readable during async disk I/O +- **[Graceful shutdown](https://github.com/apache/iggy/pull/2439)** — all shards shut down cleanly when one panics, with [panic propagation](https://github.com/apache/iggy/pull/2515) from connection handlers and [critical task failure handling](https://github.com/apache/iggy/pull/2506) +- **[Consumer group leave race](https://github.com/apache/iggy/pull/2521)** — fixed race condition in consumer group leave and index corruption in `append_messages` +- **[Stale consumer group clients](https://github.com/apache/iggy/pull/2547)** — properly handled stale clients in consumer group operations +- **[PAT broadcast across shards](https://github.com/apache/iggy/pull/2589)** — personal access tokens created via HTTP are now broadcast to all shards, fixing cross-protocol visibility +- **[Empty permission maps crash](https://github.com/apache/iggy/pull/2527)** — fixed server crash on restart when users had empty permission maps +- **[Entity ID gaps on bootstrap](https://github.com/apache/iggy/pull/2548)** — handled ID gaps after deletions during server restart + +Docker images are available on **[Docker Hub](https://hub.docker.com/u/apache?page=1&search=iggy)**. + +--- + +## SDKs + +All SDKs now have **auto-publishing** enabled — edge and RC versions are automatically published to their respective package registries on every merge. + +- [Rust](https://crates.io/crates/iggy) — improved high-level producer/consumer with ordered sharding, graceful `shutdown()`, and message loss prevention; fixed `max_in_flight` permit acquisition and client reconnection after disconnect +- [C#](https://www.nuget.org/packages/Apache.Iggy/) — .NET 10 support, `DeleteSegments` and `GetSnapshot` methods, `TimeSpan`-based expiry handling, source link for debugging +- [Java](https://mvnrepository.com/artifact/org.apache.iggy/iggy-java-sdk) — fluent builder API (`Iggy.tcpClientBuilder().blocking()`), semantic exception hierarchy, BDD tests with Cucumber, user headers support, TLS for HTTP, memory leak detection in CI +- [Python](https://pypi.org/project/apache-iggy/) — `AsyncIterator` interface for `IggyConsumer`, `message_expiry` parameter in `create_topic`, Windows build support +- [Node.js (TypeScript)](https://www.npmjs.com/package/apache-iggy) — comprehensive JSDoc comments for improved API documentation and IDE support +- [Go](https://pkg.go.dev/github.com/apache/iggy/foreign/go) — leader redirection for cluster failover handling + +--- + +## Connectors + +New connectors and runtime improvements: + +- **[Apache Pinot connector](https://github.com/apache/iggy/pull/2499)** — new external connector for Apache Pinot integration +- **[Postgres sink & source](https://github.com/apache/iggy/pull/2579)** — extended with JSON and raw message format support, multiple processing modes (mark/delete), and comprehensive integration tests +- **[Prometheus metrics](https://github.com/apache/iggy/pull/2633)** — `/metrics` and `/stats` endpoints for monitoring connector runtime, per-connector message counters, CPU/memory tracking +- **[Quickwit sink tests](https://github.com/apache/iggy/pull/2636)** — integration test coverage for the Quickwit sink +- **[Telemetry logging](https://github.com/apache/iggy/pull/2612)** — structured logging with telemetry for connectors and MCP +- **[Retry mechanism](https://github.com/apache/iggy/pull/2437)** — configurable retry with exponential backoff for the HTTP config provider +- **[State loss prevention](https://github.com/apache/iggy/pull/2743)** and **[memory leak fix](https://github.com/apache/iggy/pull/2685)** — critical reliability improvements for long-running connectors + +Learn more in the [documentation](/docs/connectors/introduction). + +--- + +## Web UI + +- Embedded into the server binary (see above) +- User headers now display decoded values based on their type (string, int, float, bool, etc.) with expandable rows for type details +- Checksum displayed as hex alongside raw value +- Fixed root user ID (now 0 instead of 1) +- Fixed logout side-effect on page load +- Refactored from SSR to SPA with client-side authentication +- Benchmark dashboard upgraded to Yew 0.22 + +--- + +## Helm Charts + +- **[Fixed volume mount path](https://github.com/apache/iggy/pull/2526)** and added io_uring requirements for proper Kubernetes deployment + +--- + +## CI/CD & Infrastructure + +- **ARM64 builds** — native ARM64 runners with shared Docker cache, aarch64 builds in pre-merge and release workflows +- **Edge releases** — rolling pre-releases with versioned Docker tags (e.g., `0.6.1-edge.2`) and binary tarballs +- **Auto-publish** — all SDKs (Rust, C#, Java, Python, Node.js, Go) automatically publish edge/RC versions on merge +- **Code coverage** — Codecov integration for Rust and Java +- **Pre-commit hooks** — local validation for all SDKs matching CI tools and versions +- **Test harness** — `iggy_harness` proc macro for consistent, boilerplate-free test infrastructure with crash detection + +--- + +## What's Next + +Our primary focus remains **completing the clustering implementation with VSR consensus**. The foundations laid in 0.7.0 — view change, replication pipeline, metadata snapshots, partitions module — will come together into a fully functional replicated cluster in the upcoming releases. + +Other upcoming efforts: +- Server core optimizations: kTLS, DirectIO, and continued NUMA and socket migration tuning +- SDK evolution with synchronous clients and [sans-io](https://www.firezone.dev/blog/sans-io) architecture for better testability and portability +- More connector integrations and runtime hardening +- Web UI enhancements — building on the newly embedded dashboard +- **Agentic AI** exploration for streaming-based agent coordination + +--- + +Thanks to our amazing community and contributors for making Apache Iggy better with every release. A special welcome to our new committer Łukasz Zborek! + +**Join us on [Discord](https://discord.gg/apache-iggy) and help shape the future of the project!** diff --git a/content/blog/technology-radar-and-currrent-goals.mdx b/content/blog/technology-radar-and-currrent-goals.mdx index c935cdf1..8706c740 100644 --- a/content/blog/technology-radar-and-currrent-goals.mdx +++ b/content/blog/technology-radar-and-currrent-goals.mdx @@ -29,7 +29,7 @@ Without a doubt, being able to run your infrastructure (which processes & stores We've started [experimenting](https://github.com/iggy-rs/iggy-cluster-sandbox) with the replication over half a year ago already by implementing the basic, Raft based consensus algorithm for the simple message streaming server. -At the same time, we were researching the other possible solutions, after we've finally decided to move on with **Viewstamped Replication** (in its [revisited form](https://pmg.csail.mit.edu/papers/vr-revisited.pdf)), which was successfully used by e.g. [TigerBeetle](https://tigerbeetle.com/). +At the same time, we were researching the other possible solutions, after we've finally decided to move on with **Viewstamped Replication** (in its [revisited form](https://sands.kaust.edu.sa/classes/CS240/F21/papers/vr-revisited.pdf)), which was successfully used by e.g. [TigerBeetle](https://tigerbeetle.com/). Long story short - the **deterministic leader election**, allows us to go for ring topology and chain replication of our data - it's excellent for high throughput, which is very important for us. diff --git a/src/app/(site)/downloads/page.tsx b/src/app/(site)/downloads/page.tsx index 45e45375..af00f9c4 100644 --- a/src/app/(site)/downloads/page.tsx +++ b/src/app/(site)/downloads/page.tsx @@ -8,8 +8,18 @@ export const metadata: Metadata = { const releases = [ { - version: "0.6.0-incubating", + version: "0.7.0-incubating", latest: true, + date: "2026-02-24", + archive: + "https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz", + asc: "https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz.asc", + sha: "https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz.sha512", + changelog: "/blogs/2026/02/24/release-0.7.0", + }, + { + version: "0.6.0-incubating", + latest: false, date: "2025-12-09", archive: "https://downloads.apache.org/incubator/iggy/0.6.0/iggy-0.6.0-incubating-src.tar.gz", @@ -180,22 +190,22 @@ export default function DownloadsPage() { <pre className="overflow-x-auto rounded-xl border border-fd-border bg-fd-card p-5 text-sm leading-relaxed text-fd-foreground/85"> <code>{`# Download artifact, matching .asc file and KEYS curl -O https://downloads.apache.org/incubator/iggy/KEYS -curl -O https://downloads.apache.org/incubator/iggy/0.6.0/iggy-0.6.0-incubating-src.tar.gz -curl -O https://downloads.apache.org/incubator/iggy/0.6.0/iggy-0.6.0-incubating-src.tar.gz.asc +curl -O https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz +curl -O https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz.asc # Import Iggy release keys gpg --import KEYS # Verify signature -gpg --verify iggy-0.6.0-incubating-src.tar.gz.asc iggy-0.6.0-incubating-src.tar.gz`}</code> +gpg --verify iggy-0.7.0-incubating-src.tar.gz.asc iggy-0.7.0-incubating-src.tar.gz`}</code> </pre> <h2 className="mb-4 mt-14 text-2xl font-bold text-fd-foreground"> Verify the checksum </h2> <pre className="overflow-x-auto rounded-xl border border-fd-border bg-fd-card p-5 text-sm leading-relaxed text-fd-foreground/85"> - <code>{`curl -O https://downloads.apache.org/incubator/iggy/0.6.0/iggy-0.6.0-incubating-src.tar.gz.sha512 -shasum -a 512 -c iggy-0.6.0-incubating-src.tar.gz.sha512`}</code> + <code>{`curl -O https://downloads.apache.org/incubator/iggy/0.7.0/iggy-0.7.0-incubating-src.tar.gz.sha512 +shasum -a 512 -c iggy-0.7.0-incubating-src.tar.gz.sha512`}</code> </pre> <h2 className="mb-4 mt-14 text-2xl font-bold text-fd-foreground">
