You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@fluss.apache.org by ip...@apache.org on 2026/04/07 07:40:38 UTC
(fluss) branch main updated: [blog] Fluss rust / python / c++ client release blog draft (#2730)
This is an automated email from the ASF dual-hosted git repository.
ipolyzos pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fluss.git
The following commit(s) were added to refs/heads/main by this push:
new 10e93681c [blog] Fluss rust / python / c++ client release blog draft (#2730)
10e93681c is described below
commit 10e93681cd951ccaf99166ad28df81cf032bfead
Author: Keith Lee <le...@apache.org>
AuthorDate: Tue Apr 7 08:40:34 2026 +0100
[blog] Fluss rust / python / c++ client release blog draft (#2730)
* Add Fluss Rust/Python/C++ 0.1.0 release blog post
Blog post announcing the first official release of fluss-rust with
Python and C++ bindings. Covers table operations, Arrow-native batch
scanner, remote storage support, and getting started links. Also adds
new blog authors and updates Mehul's title to PPMC member.
* Update fluss-rust release blog date and minor proof read update.
---
.../2026-04-06-fluss-rust-python-cpp-release.md | 76 +++++++++++++++++++++
website/blog/assets/fluss_rust_release/banner.png | Bin 0 -> 276642 bytes
website/blog/authors.yml | 14 +++-
3 files changed, 88 insertions(+), 2 deletions(-)
diff --git a/website/blog/2026-04-06-fluss-rust-python-cpp-release.md b/website/blog/2026-04-06-fluss-rust-python-cpp-release.md
new file mode 100644
index 000000000..fcd0a4726
--- /dev/null
+++ b/website/blog/2026-04-06-fluss-rust-python-cpp-release.md
@@ -0,0 +1,76 @@
+---
+slug: fluss_rust_client_release
+date: 2026-04-06
+title: "Announcing Apache Fluss (Incubating) Rust, Python, and C++ Client 0.1.0 Release"
+authors: [yuxia, keithlee, anton]
+toc_max_heading_level: 5
+tags: [releases, fluss-rust, fluss-rs, pyfluss, fluss-cpp, arrow]
+image: ./assets/fluss_rust_release/banner.png
+---
+
+
+
+We are excited to announce the release of [fluss-rust clients](https://github.com/apache/fluss-rust) 0.1.0, the first official release of the [Rust](https://clients.fluss.apache.org/user-guide/rust/installation), [Python](https://clients.fluss.apache.org/user-guide/python/installation), and [C++](https://clients.fluss.apache.org/user-guide/cpp/installation) clients for Apache Fluss. This 0.1.0 release represents the culmination of 210+ commits from the community, delivering a feature-ric [...]
+
+Under the hood, all three clients share a single Rust core that handles protocol negotiation, batching, retries, and [Apache Arrow](https://arrow.apache.org/)-based data exchange, with thin language-specific bindings on top. This was a deliberate community decision to deliver native performance and feature parity across every language from day one.
+
+## Highlights
+
+### Support for all Fluss table types
+
+- Log Tables - Append-only streaming ingestion with subscription-based polling. Example uses include clickstreams, IoT sensor data, and audit logs. See [log table examples](https://clients.fluss.apache.org/user-guide/rust/example/log-tables)
+([Python](https://clients.fluss.apache.org/user-guide/python/example/log-tables), [C++](https://clients.fluss.apache.org/user-guide/cpp/example/log-tables)).
+- Primary Key Tables - Upsert, delete, and point lookups by key, with support for partial column updates. Example uses include product catalogs and real-time dashboards backed by data from multiple sources.
+See [primary key table examples](https://clients.fluss.apache.org/user-guide/rust/example/primary-key-tables) ([Python](https://clients.fluss.apache.org/user-guide/python/example/primary-key-tables), [C++](https://clients.fluss.apache.org/user-guide/cpp/example/primary-key-tables)).
+- Partitioned Tables - Both Log and Primary Key tables support partitioning, with partition-aware reads and writes.
+See the [partitioned table examples](https://clients.fluss.apache.org/user-guide/rust/example/partitioned-tables) ([Python](https://clients.fluss.apache.org/user-guide/python/example/partitioned-tables), [C++](https://clients.fluss.apache.org/user-guide/cpp/example/partitioned-tables)).
+
+All table types support idempotent writes and memory-bounded backpressure for reliable production use. The scanner includes parallel, prioritized remote segment fetching for efficient reads over tiered storage. The Python client additionally provides Polars and Pandas specific APIs for seamless integration with dataframe workflows.
+
+### Zero-copy Arrow integration
+
+Leverage your existing Apache Arrow ecosystem. Whether you use Polars, Pandas, DuckDB, DataFusion, or Arrow directly, the clients speak Arrow natively. Log records are represented as Arrow RecordBatches throughout the stack, so data arriving from Fluss can be handed directly to your tools without serialization or conversion.
+
+A batch scanner mode makes this practical at scale: it returns complete RecordBatches to the caller, ready for immediate use. Python users can pass batches straight to Polars or Pandas, C++ applications can feed them into DuckDB, and Rust tools benefit from the same zero-copy path. The Java client does not offer this today because Flink and Spark convert data into their own internal row formats on ingestion. For the native ecosystem, skipping that conversion is where the performance wins are.
+
+### Direct reads from tiered storage
+
+Fluss tiers older log segments to remote storage. When you need to replay or backfill historical data, fluss-rust reads those segments directly from the object store rather than routing them back through the server. This keeps replay workloads off the serving path and avoids paying for data to round-trip through the cluster.
+
+Supported storage backends (enabled via feature flags):
+
+- **storage-fs** — Local filesystem (default)
+- **storage-s3** — [Amazon S3](https://aws.amazon.com/s3/)
+- **storage-oss** — [Alibaba Object Storage Service](https://www.alibabacloud.com/product/object-storage-service)
+
+A priority-queue-based prefetching system with configurable concurrent downloads keeps sequential scans from stalling on object store round trips.
+
+### Other Features
+
+The release also includes SASL/PLAIN authentication across all three clients, a comprehensive admin API for database and table management, fire-and-forget write batching with configurable bucket assignment strategies, column projection, and more.
+
+### Getting Started
+
+- Rust: fluss-rs [installation guide](https://clients.fluss.apache.org/user-guide/rust/installation).
+- Python: pyfluss [installation guide](https://clients.fluss.apache.org/user-guide/python/installation).
+- C++: fluss-cpp [installation guide](https://clients.fluss.apache.org/user-guide/cpp/installation).
+
+### What's Next
+
+This is the first release of fluss-rs, pyfluss and fluss-cpp, and the community is actively working on expanding capabilities. Areas of future development include additional language bindings, additional storage backends, enhanced compression support, and expanded ecosystem integrations.
+
+### Thank You, Contributors
+
+This release would not have been possible without the efforts of our contributors. Thank you to everyone who submitted code, reported issues, reviewed pull requests, and helped shape the project:
+
+[AlexZhao](https://github.com/zhaohaidao), [Andrea Bozzo](https://github.com/AndreaBozzo), [Anton Borisov](https://github.com/fresh-borzoni), [Arnav Panjla](https://github.com/Arnav-panjla), [Chase Naples](https://github.com/cnaples79), [Evan](https://github.com/binary-signal), [Jark Wu](https://github.com/wuchong), [Junbo Wang](https://github.com/beryllw), [Junfan Zhang](https://github.com/zuston), [Kaiqi Dong](https://github.com/charlesdong1991), [Karan Pradhan](https://github.com/Kara [...]
+
+### Getting Involved
+
+The Apache Fluss community welcomes contributions!
+
+- Client GitHub: https://github.com/apache/fluss-rust
+- Client Documentation: https://clients.fluss.apache.org
+- Website: https://fluss.apache.org/
+- Mailing List: https://fluss.apache.org/community/welcome/#mailing-lists
+- Slack: https://apache-fluss.slack.com
\ No newline at end of file
diff --git a/website/blog/assets/fluss_rust_release/banner.png b/website/blog/assets/fluss_rust_release/banner.png
new file mode 100644
index 000000000..40f53c6ce
Binary files /dev/null and b/website/blog/assets/fluss_rust_release/banner.png differ
diff --git a/website/blog/authors.yml b/website/blog/authors.yml
index e9e6fdc67..573c1e756 100644
--- a/website/blog/authors.yml
+++ b/website/blog/authors.yml
@@ -52,7 +52,7 @@ zhangxinyu:
mehulbatra:
name: Mehul Batra
- title: Apache Fluss (Incubating) Committer
+ title: PPMC member of Apache Fluss (Incubating)
url: https://github.com/mehulbatra
image_url: /img/avatars/mehulbatra.png
@@ -62,4 +62,14 @@ jacopogardini:
url: https://github.com/Lourousa
image_url: /img/avatars/jacopogardini.png
-
\ No newline at end of file
+anton:
+ name: Anton Borisov
+ title: Contributor of Apache Fluss (Incubating)
+ url: https://github.com/fresh-borzoni
+ image_url: https://github.com/fresh-borzoni.png
+
+keithlee:
+ name: Keith Lee
+ title: Apache Fluss (Incubating) Committer
+ url: https://github.com/leekeiabstraction
+ image_url: https://github.com/leekeiabstraction.png
\ No newline at end of file