This is an automated email from the ASF dual-hosted git repository.

CritasWang pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/iotdb-client-rust.git

commit d01a2fc85749ea561a31f3111929130155358240
Author: CritasWang <[email protected]>
AuthorDate: Fri Jul 17 11:50:08 2026 +0800

    Add COMPATIBILITY.md (server version matrix, per-release IDL/Thrift 
toolchain, SemVer/deprecation policy); CI integration matrix now tests IoTDB 
2.0.6 + 2.0.10
---
 .github/workflows/ci.yml |  8 +++-
 COMPATIBILITY.md         | 97 ++++++++++++++++++++++++++++++++++++++++++++++++
 README.md                |  2 +-
 README_ZH.md             |  2 +-
 4 files changed, 106 insertions(+), 3 deletions(-)

diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6e02e1b..ec4b485 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -66,9 +66,15 @@ jobs:
 
   integration:
     runs-on: ubuntu-latest
+    strategy:
+      fail-fast: false
+      matrix:
+        # Oldest tested + latest stable IoTDB (see COMPATIBILITY.md).
+        iotdb-version: ["2.0.6", "2.0.10"]
+    name: integration (iotdb ${{ matrix.iotdb-version }})
     services:
       iotdb:
-        image: apache/iotdb:2.0.6-standalone
+        image: apache/iotdb:${{ matrix.iotdb-version }}-standalone
         ports:
           - 6667:6667
     steps:
diff --git a/COMPATIBILITY.md b/COMPATIBILITY.md
new file mode 100644
index 0000000..a4dca0a
--- /dev/null
+++ b/COMPATIBILITY.md
@@ -0,0 +1,97 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+    http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Compatibility & Release Policy
+
+This document describes which IoTDB server versions this client targets, the
+exact protocol toolchain each crate release is built from, and the versioning
+rules the crate follows.
+
+## IoTDB server compatibility matrix
+
+The client speaks IoTDB service protocol **V3** over Apache Thrift RPC and
+targets the IoTDB **2.0.x** line. There is no version-specific branching in
+the client code.
+
+| IoTDB version | Status | Notes |
+|---|---|---|
+| 2.0.1 | Expected to work | Untested |
+| 2.0.2 | Expected to work | Untested |
+| 2.0.3 | Expected to work | Untested |
+| 2.0.4 | Expected to work | Untested |
+| 2.0.5 | Expected to work | Untested |
+| 2.0.6 | **Tested** | CI runs the full live test suite + 3 examples against 
`apache/iotdb:2.0.6-standalone` on every push; TLS verified end-to-end 
(`enable_thrift_ssl`, TLSv1.3, full certificate verification) |
+| 2.0.7 | Expected to work | Untested |
+| 2.0.8 | Expected to work | Untested |
+| 2.0.10 | **Tested** | Full benchmark + data-correctness verification (all 10 
data types, tree & table models, nulls) against a standalone deployment; RPC 
compression verified (`dn_rpc_thrift_compression_enable=true`) |
+| master | Expected to work | The Thrift IDL is synced from `apache/iotdb` 
master (`iotdb-protocol/`); untested beyond IDL lockstep |
+| 1.x | **Not supported** | The table model and the TIMESTAMP / DATE / BLOB / 
STRING data types assume 2.x; no plan to support 1.x |
+
+"Expected to work" means the version speaks protocol V3 and the same IDL
+surface, but the client has not been exercised against it. Reports of success
+or failure on untested versions are welcome as issues.
+
+## Protocol toolchain (per release)
+
+Each crate release records the exact IDL source and Thrift toolchain used to
+generate `src/protocol/`:
+
+| Crate version | IoTDB IDL source | Thrift compiler | `thrift` crate |
+|---|---|---|---|
+| 0.1.0 (unreleased) | `apache/iotdb` master, `iotdb-protocol/` @ `2fedd8a395` 
(2026-06-30, last change to `client.thrift`/`common.thrift`) | 0.23.0 (as 
pinned by the IoTDB pom's `thrift.version`) | 0.23 |
+
+The generation pipeline is documented in 
[`tools/generate-thrift.sh`](./tools/generate-thrift.sh):
+the IDL files (`thrift/client.thrift`, `thrift/common.thrift`) are synced from
+`apache/iotdb`'s `iotdb-protocol/` module, and the Thrift compiler binary is
+taken from the IoTDB Maven build output, which guarantees the compiler version
+matches the one the server project pins. The generated stubs are committed and
+must never be hand-edited.
+
+This table is updated as part of every release.
+
+## Versioning policy (SemVer)
+
+The crate follows [Cargo's SemVer 
rules](https://doc.rust-lang.org/cargo/reference/semver.html):
+
+- **Pre-1.0 (`0.x.y`)**: a bump of `x` may contain breaking API changes; a
+  bump of `y` is additive or a bug fix. Cargo treats `0.x` as the
+  compatibility boundary, so `^0.1` will never auto-upgrade to `0.2`.
+- **Post-1.0**: breaking changes bump the major version, new functionality
+  bumps the minor version, bug fixes bump the patch version.
+- A regeneration of the Thrift stubs against a newer IDL is treated as
+  breaking only if it changes the public Rust API surface; pure wire-level
+  additions ship as minor/patch releases.
+
+## Deprecation policy
+
+- APIs slated for removal are first marked `#[deprecated]` (with a message
+  pointing at the replacement) and remain functional for at least one minor
+  release before removal.
+- Removals happen only in releases that SemVer already marks as breaking
+  (major bumps, or `0.x` bumps pre-1.0).
+- Deprecations and removals are listed in the release notes.
+
+## Release process
+
+- Every release documents, in its release notes: the IoTDB IDL commit, the
+  Thrift compiler version, and the tested IoTDB server versions (the table
+  above is updated in the same change).
+- CI continuously tests against both the oldest tested and the latest stable
+  IoTDB versions (currently 2.0.6 and 2.0.10; see
+  [`.github/workflows/ci.yml`](./.github/workflows/ci.yml)).
diff --git a/README.md b/README.md
index a403b7d..78ba579 100644
--- a/README.md
+++ b/README.md
@@ -16,7 +16,7 @@ Working client: session management (with multi-node 
failover), tablet writes (`i
 ## Requirements
 
 - Rust 1.75+
-- Apache IoTDB 2.x (examples and integration tests use 
`apache/iotdb:2.0.6-standalone`)
+- Apache IoTDB 2.x — see [COMPATIBILITY.md](./COMPATIBILITY.md) for the full 
server version matrix, the IDL/Thrift toolchain per release, and the 
SemVer/deprecation policy (CI tests against 2.0.6 and 2.0.10)
 
 ## Installation
 
diff --git a/README_ZH.md b/README_ZH.md
index 6f62b4f..ae4b026 100644
--- a/README_ZH.md
+++ b/README_ZH.md
@@ -16,7 +16,7 @@
 ## 环境要求
 
 - Rust 1.75+
-- Apache IoTDB 2.x(示例与集成测试使用 `apache/iotdb:2.0.6-standalone`)
+- Apache IoTDB 2.x — 完整的服务器版本兼容矩阵、每个 release 对应的 IDL/Thrift 工具链版本,以及 
SemVer/弃用政策见 [COMPATIBILITY.md](./COMPATIBILITY.md)(CI 针对 2.0.6 与 2.0.10 测试)
 
 ## 安装
 

Reply via email to