Hi Xuan,

The vote passed and the repo has been created. 
https://github.com/apache/iotdb-client-rust

Thanks,
Haonan

On 2026/07/17 03:57:02 王旋 wrote:
> Hi Yuan,
> 
> Thank you for the suggestions. Status on both:
> 
> 1. Compatibility & release policy -- now landed in the repository as
> COMPATIBILITY.md <http://compatibility.md/> [1]:
> 
> - IoTDB server compatibility matrix: 2.0.1-2.0.8, 2.0.10 and master are
>   listed; 2.0.6 and 2.0.10 are tested (CI live suite / full benchmark +
>   data-correctness verification respectively), the other versions are
>   explicitly marked as untested.
> - A per-release protocol toolchain table recording, for each crate
>   version, the exact IDL source (currently apache/iotdb master,
>   iotdb-protocol/ @ 2fedd8a395) and the Thrift compiler version (0.23.0,
>   as pinned by the IoTDB pom), plus the thrift crate version.
> - A SemVer policy (Cargo semantics, 0.x pre-1.0 rules), a deprecation
>   policy (#[deprecated] for at least one minor release before removal),
>   and a release checklist that updates the toolchain table on every
>   release.
> 
> CI now runs the live integration suite and examples against both the
> oldest tested and the latest stable IoTDB (2.0.6 and 2.0.10) as a build
> matrix [2].
> 
> 2. crates.io publishing permissions and a community-managed release
> process -- fully agreed. Since this depends on the Apache repository and
> community processes existing first, I will file it as a roadmap issue in
> apache/iotdb-client-rust once the repository is created, covering
> community-owned crates.io ownership, reproducible release steps, and
> review by multiple maintainers.
> 
> [1]
> https://github.com/CritasWang/iotdb-client-rust/blob/main/COMPATIBILITY.md
> [2]
> https://github.com/CritasWang/iotdb-client-rust/blob/main/.github/workflows/ci.yml
> 
> Best regards,
> Xuan Wang
> 
> zerolbsony <[email protected]> 于2026年7月16日周四 20:58写道:
> 
> > Hi, Xuan Wang
> > It’s hard to believe that Rust has overtaken Go and become so popular.
> > The top 10 programming languages in the July 2026 TIOBE rankings are as
> > follows:
> > Python – 18.94%
> > C – 10.86%
> > C++ – 9.12%
> > Java – 8.03%
> > C# – 4.49%
> > JavaScript – 2.72%
> > Visual Basic – 2.48%
> > SQL – 1.71%
> > R – 1.69%
> > Rust – 1.34%
> >
> >
> > I’ve noticed that starting from 2024, the Linux kernel has allowed certain
> > modules, primarily device drivers, to be written in Rust.
> >
> >
> > Rust can be used to write Linux kernel modules, which means you can run
> > Rust code directly at the kernel level. This is extremely useful for
> > scenarios that demand high performance and low-level hardware operations.
> > Have you considered invoking certain IoTDB functionalities directly via the
> > Linux kernel to boost performance?
> > Best regards,
> > Bo Li
> >
> >
> > >Hi,
> > >
> > >Thank you very much for the supportive and detailed reply. The suggested
> > >route (code donation to the existing TLP + ASF IP clearance, rather than
> > >incubation) makes sense to me, and I'm glad full Java-parity is not a
> > >prerequisite — an incremental, roadmap-tracked approach matches how the
> > >client was built.
> > >
> > >Below are the five items requested before a vote.
> > >
> > >## 1. Supported IoTDB version matrix
> > >
> > >| IoTDB version | Status | Evidence |
> > >|---|---|---|
> > >| 2.0.6 | Supported | CI integration job runs the full live test suite + 3
> > >examples against apache/iotdb:2.0.6-standalone on every push |
> > >| 2.0.10 | Supported | Full benchmark + data-correctness verification (all
> > >10 data types, tree & table, nulls) against a 2.0.10 standalone
> > deployment |
> > >| 2.0.x (general) | Expected to work | Thrift IDL is synced from
> > >iotdb-protocol/ master; protocol version V3; no version-specific branching
> > >in the client |
> > >| 1.x | Not targeted | Table model and several data types
> > >(TIMESTAMP/DATE/BLOB/STRING) assume 2.x; no plan to support 1.x |
> > >
> > >TLS was verified end-to-end against 2.0.6 with enable_thrift_ssl (TLSv1.3,
> > >full certificate verification). RPC compression (compact protocol)
> > verified
> > >against a server with dn_rpc_thrift_compression_enable=true.
> > >
> > >## 2. Contributors and provenance
> > >
> > >The entire git history has a single author — myself (Wang Xuan /
> > CritasWang
> > ><[email protected]>). I am an existing Apache IoTDB committer with an
> > ICLA
> > >already on file, and I hold full ownership of this work, so the provenance
> > >chain is straightforward. Two categories of code in the repo:
> > >
> > >- Hand-written code: 100% original work, written for this project,
> > >Apache-2.0 headers on every file.
> > >- Generated code (src/protocol/): produced by the Apache Thrift compiler
> > >from the Apache IoTDB project's own IDL files (iotdb-protocol/, ALv2); the
> > >generation pipeline (tools/generate-thrift.sh) is documented and
> > >reproducible.
> > >
> > >No code was copied from other client SDKs; the Java/C#/Node.js clients
> > were
> > >used as behavioral references only (wire-protocol semantics), which is
> > also
> > >how the cross-client protocol issues (e.g. the Node.js DATE encoding bug)
> > >were found.
> > >
> > >## 3. Dependency and license inventory
> > >
> > >Runtime dependencies (4 + 1 optional):
> > >
> > >| Crate | Version | License | Purpose |
> > >|---|---|---|---|
> > >| thrift | 0.23 | Apache-2.0 | RPC (matches the compiler version pinned by
> > >the IoTDB pom) |
> > >| byteorder | 1.5 | Unlicense OR MIT | Big-endian encoding |
> > >| chrono | 0.4 | MIT OR Apache-2.0 | DATE handling |
> > >| log | 0.4 | MIT OR Apache-2.0 | Logging facade |
> > >| native-tls (optional, feature "tls") | 0.2 | MIT OR Apache-2.0 | TLS |
> > >
> > >Dev-dependency: env_logger (MIT OR Apache-2.0). Full transitive closure:
> > 74
> > >packages, machine-checked — every one is MIT / Apache-2.0 / Unlicense /
> > BSD
> > >/ Zlib dual-or-multi licensed, i.e. 100% ASF Category-A. Zero
> > Category-B/X,
> > >zero unknown-license packages. The full inventory (cargo metadata) can be
> > >attached to the IP-clearance checklist.
> > >
> > >## 4. Proposed initial maintainers and maintenance plan
> > >
> > >- Initial maintainer: myself (CritasWang — existing IoTDB committer). I
> > >commit to maintaining the client — issue triage, protocol-sync with
> > >iotdb-protocol changes, and regular releases through the normal IoTDB
> > >community process — and to growing co-maintainers from the community;
> > >review bandwidth from other committers/PMC members on client-facing
> > changes
> > >would be welcome.
> > >- The repo already carries the practices expected for handover: CI (fmt /
> > >clippy -D warnings / license check / unit tests / live integration against
> > >a service container), bilingual READMEs, runnable examples, a
> > >statistics-aligned benchmark, and a documented codegen pipeline. Nothing
> > >depends on my personal infrastructure.
> > >
> > >## 5. API support matrix (vs Java client) and near-term roadmap
> > >
> > >Supported today (feature → Java-client equivalent):
> > >
> > >| Area | Rust today | Java client |
> > >|---|---|---|
> > >| Session lifecycle, multi-node URLs, failover, auto-reconnect | ✅ | ✅ |
> > >| insertTablet / insertTablets | ✅ | ✅ |
> > >| insertRecord(s) / insertRecordsOfOneDevice (+ aligned variants) | ✅ | ✅
> > |
> > >| Table model (TableSession/Pool, TAG/FIELD/ATTRIBUTE) | ✅ | ✅ |
> > >| SessionPool / TableSessionPool (idle eviction, redirection cache) | ✅ |
> > ✅
> > >|
> > >| Query + paging iteration (TsBlock, fetchResultsV2) | ✅ | ✅ |
> > >| All data types incl. TIMESTAMP/DATE/BLOB/STRING | ✅ | ✅ |
> > >| TLS (incl. client identity) / RPC compression | ✅ | ✅ |
> > >| deleteData / deleteTimeseries / DDL helpers | SQL only | ✅ dedicated
> > APIs
> > >|
> > >| Schema templates | ❌ | ✅ |
> > >| executeRawDataQuery / executeLastDataQuery / aggregation APIs | ❌ | ✅ |
> > >| Per-type encoding tuning (RPC compression V2) | ❌ | ✅ |
> > >
> > >Near-term roadmap (order negotiable with the community):
> > >
> > >1. async (tokio) API layer — most-requested Rust-ecosystem feature, kept
> > >out of v0.1 to keep the sync core small
> > >2. crates.io releases under the Apache project
> > >
> > >I'll keep this thread open for feedback on maintenance ownership and API
> > >scope as suggested. Since I'm an existing committer with an ICLA on file
> > >and the sole author, the IP-clearance paperwork should be light — I'm
> > happy
> > >to prepare whatever the PMC deems necessary (software grant if required
> > for
> > >the pre-existing external history, plus the dependency inventory above)
> > >whenever the community feels ready to move to a VOTE.
> > >
> > >Best regards,
> > >Xuan Wang
> > >
> > >Haonan Hou <[email protected]> 于2026年7月15日周三 15:06写道:
> > >
> > >> Hi Xuan,
> > >>
> > >> Thank you for sharing this work. The implementation already covers a
> > >> substantial part of the client functionality, and the test coverage,
> > live
> > >> integration testing, CI setup, and benchmark results are all
> > encouraging.
> > >>
> > >> The protocol issues and performance improvements discovered while
> > >> validating
> > >> against the other clients are also a good indication that this work can
> > >> benefit the broader IoTDB client ecosystem.
> > >>
> > >> As a member of the IoTDB PMC, I support bringing a well-maintained Rust
> > >> client
> > >> into the Apache IoTDB project. Based on what you have presented, I
> > believe
> > >> this
> > >> repository is a strong candidate for donation and for becoming an
> > official
> > >> IoTDB client.
> > >>
> > >> Since IoTDB is already an Apache top-level project, the appropriate
> > route
> > >> should be a code donation to the existing project, followed by the ASF
> > IP
> > >> clearance process, rather than incubation as a separate project.
> > >>
> > >> I suggest the following next steps:
> > >>
> > >> 1. Continue this DISCUSS thread to collect feedback from the community,
> > >>    especially regarding maintenance ownership and the initial API scope.
> > >> 2. Prepare a concise compatibility and API-support matrix against the
> > Java
> > >>    client, together with a near-term roadmap.
> > >> 3. If there are no major concerns, start a formal PMC VOTE to accept the
> > >> code
> > >>    donation and create the apache/iotdb-client-rust repository.
> > >> 4. Complete the software grant, code provenance, dependency/license
> > review,
> > >>    and ASF IP clearance.
> > >> 5. Move the code to the Apache repository and continue development and
> > >>    releases through the normal IoTDB community process.
> > >>
> > >> I do not think complete Java client API parity needs to be a
> > prerequisite
> > >> for
> > >> the donation. The current functionality appears sufficient to establish
> > a
> > >> useful official client. APIs such as schema-template operations and
> > >> additional
> > >> session-level query methods can be added incrementally and tracked
> > through
> > >> a
> > >> public roadmap.
> > >>
> > >> Before moving to a vote, it would be helpful to provide:
> > >>
> > >> - The supported IoTDB version matrix.
> > >> - A list of contributors and confirmation of the code’s
> > >> ownership/provenance.
> > >> - A dependency and license inventory.
> > >> - The proposed initial maintainers and long-term maintenance plan.
> > >> - An API support matrix and near-term roadmap.
> > >>
> > >> Overall, I am supportive of this proposal and am willing to help move
> > the
> > >> discussion and donation process forward.
> > >>
> > >> Best regards,
> > >> Haonan Hou
> > >>
> > >> On 2026/07/15 03:50:24 王旋 wrote:
> > >> > Hi all,
> > >> >
> > >> > I'd like to share a Rust client SDK for Apache IoTDB that I've been
> > >> > developing, and ask for the community's feedback on whether there is
> > >> > interest in bringing it into the Apache IoTDB ecosystem.
> > >> >
> > >> > Repository: https://github.com/CritasWang/iotdb-client-rust
> > >> >
> > >> > Scope & features
> > >> >
> > >> > Tree model (Session) and table model (TableSession / SQL dialect),
> > >> > mirroring the API shape of the Java / C# / Node.js clients
> > >> > Write APIs: insertTablet / insertTablets (multi-tablet batching),
> > >> > insertRecord(s), insertRecordsOfOneDevice, plus aligned variants
> > >> > SessionPool and TableSessionPool: RAII checkout, lazy growth, idle
> > >> > eviction, dead-connection eviction, write-redirection cache (status
> > 400
> > >> > redirect hints), automatic reconnect with endpoint failover
> > >> > Full data-type coverage including TIMESTAMP / DATE / BLOB / STRING;
> > >> TsBlock
> > >> > decoding with logical-type re-tagging (the TsBlock header carries
> > >> physical
> > >> > types — DATE arrives as INT32, BLOB as TEXT)
> > >> > TLS (feature-gated, incl. client identity) — verified end-to-end
> > against
> > >> a
> > >> > real IoTDB with enable_thrift_ssl; RPC compression (compact protocol)
> > >> > Thrift codegen pipeline sources the IDL from iotdb-protocol/ and uses
> > the
> > >> > thrift compiler fetched by the IoTDB Maven build, so the stubs stay in
> > >> > lockstep with the server
> > >> >
> > >> > Quality
> > >> >
> > >> > 113 unit tests (124 with TLS) + live integration tests that skip
> > >> gracefully
> > >> > without a server; CI on GitHub Actions runs fmt / clippy -D warnings /
> > >> > license checks plus an integration job against an IoTDB 2.0.6 service
> > >> > container — green
> > >> > Statistics-aligned benchmark (measurement semantics mirror
> > iot-benchmark:
> > >> > prep inside the timed span, failures excluded from latency,
> > >> Result/Latency
> > >> > Matrix output). On a 16-core server writing 2B points per run (table
> > >> model,
> > >> > 100 devices x 20 DOUBLE sensors, 1000-row tablets, 20 sessions), the
> > Rust
> > >> > client sustains ~46-47M points/s — statistically tied with
> > >> iot-benchmark's
> > >> > Java Session path on the same box, where the server, not the client,
> > is
> > >> the
> > >> > ceiling
> > >> > Every file carries the ASF Apache 2.0 header
> > >> >
> > >> > Side effects the community already received
> > >> >
> > >> > Cross-validating the wire protocol against the Java / C# / Node.js
> > >> > implementations surfaced two upstream issues in the Node.js client,
> > both
> > >> > now addressed: the DATE wire-encoding fix
> > (apache/iotdb-client-nodejs#14,
> > >> > PR #15, merged) and a write-path serialization optimization (+52%
> > >> > throughput, PR #16, under review).
> > >> >
> > >> > Questions for the community
> > >> >
> > >> > Is there interest in an official Rust client under the Apache IoTDB
> > >> > umbrella (e.g., apache/iotdb-client-rust), following the path of the
> > >> > Node.js / C# clients?
> > >> > If so, what would the preferred route be — code donation via the
> > >> incubator
> > >> > process for client SDKs, or starting a repo under the existing project
> > >> and
> > >> > iterating there?
> > >> > Any API-surface expectations from the PMC side before such a move
> > (e.g.,
> > >> > schema-template APIs, session-level query APIs like
> > executeRawDataQuery)?
> > >> > I'm happy to keep maintaining it either way, and to align the roadmap
> > >> with
> > >> > the community's priorities.
> > >> >
> > >> > 大家好
> > >> >
> > >> > 我想向社区分享一个我一直在开发的 Apache IoTDB Rust 客户端 SDK,并征求大家的意见:社区是否有兴趣将它纳入 Apache
> > >> > IoTDB 生态。
> > >> >
> > >> > 仓库地址:https://github.com/CritasWang/iotdb-client-rust
> > >> >
> > >> > 范围与功能
> > >> >
> > >> > 树模型(Session)与表模型(TableSession / SQL 方言),API 形态与 Java / C# / Node.js
> > 客户端对齐
> > >> > 写入 API:insertTablet / insertTablets(多 tablet
> > >> > 批量)、insertRecord(s)、insertRecordsOfOneDevice,以及 aligned 变体
> > >> > SessionPool 与 TableSessionPool:RAII 借还、惰性增长、空闲回收、死连接剔除、写重定向缓存(status
> > 400
> > >> > 重定向提示)、带端点故障转移的自动重连
> > >> > 完整数据类型覆盖,包括 TIMESTAMP / DATE / BLOB / STRING;TsBlock
> > 解码带逻辑类型重标记(TsBlock
> > >> > 头携带的是物理类型——DATE 以 INT32 到达、BLOB 以 TEXT 到达)
> > >> > TLS(feature 门控,含客户端证书)——已对开启 enable_thrift_ssl 的真实 IoTDB 完成端到端验证;RPC
> > >> > 压缩(compact 协议)
> > >> > Thrift 代码生成流水线:IDL 取自 iotdb-protocol/,编译器使用 IoTDB Maven 构建拉取的版本,确保
> > stub
> > >> > 与服务端严格同步
> > >> >
> > >> > 质量
> > >> >
> > >> > 113 个单元测试(含 TLS 为 124 个)+ 无服务器时优雅跳过的 live 集成测试;GitHub Actions CI 运行
> > fmt /
> > >> > clippy -D warnings / license 检查,另有针对 IoTDB 2.0.6 service container 的集成
> > >> > job——全绿
> > >> > 统计口径对齐的基准测试(测量语义对齐 iot-benchmark:批准备计入计时段、失败不计入延迟、Result/Latency
> > Matrix
> > >> > 输出)。在 16 核服务器上每轮写入 20 亿点(表模型、100 设备 x 20 个 DOUBLE 测点、1000 行/tablet、20
> > >> > 会话),Rust 客户端持续吞吐约 4600-4700 万点/秒——与同机 iot-benchmark 的 Java Session
> > >> > 路径统计学持平,此时瓶颈在服务端而非客户端
> > >> > 所有文件均带 ASF Apache 2.0 头
> > >> >
> > >> > 社区已经收到的副产品
> > >> >
> > >> > 在与 Java / C# / Node.js 实现交叉验证线上协议的过程中,发现了 Node.js
> > 客户端的两个上游问题,目前均已处理:DATE
> > >> > 线上编码修复(apache/iotdb-client-nodejs#14,PR #15,已合并)以及写路径序列化优化(吞吐 +52%,PR
> > >> > #16,评审中)。
> > >> >
> > >> > 想请教社区的问题
> > >> >
> > >> > 社区是否有兴趣在 Apache IoTDB 旗下提供官方 Rust 客户端(例如 apache/iotdb-client-rust),沿用
> > >> > Node.js / C# 客户端的路径?
> > >> > 如果有,倾向的路线是什么——通过客户端 SDK 的代码捐赠流程,还是先在现有项目下建仓库迭代?
> > >> > 在此之前,PMC 对 API 面是否有预期要求(例如 schema 模板 API、executeRawDataQuery 等会话级查询
> > API)?
> > >> > 无论结果如何,我都会继续维护它,并愿意将路线图与社区的优先级对齐。
> > >> >
> > >> > Best regards,
> > >> > Xuan Wang
> > >> >
> > >>
> >
> 

Reply via email to