Hi Xuanwo, Thanks for bringing this up. I'm not a cpp expert, but following this with great interest. I think this is a very promising approach since the memory model is already the same across projects (Arrow).
Kind regards, Fokko Op vr 14 mrt 2025 om 08:53 schreef Xuanwo <xua...@apache.org>: > Hi, everyone > > Today, Renjie Liu and I had a discussion with some of the iceberg-cpp > contributors—Gang Wu, Junwang Zhao, and David Li—about ways to advance the > project. We came up with some great ideas, so I'm sharing them here to > gather more feedback. > > ## Background > > The community continues to show interest in a C++ implementation of > Iceberg. Some users are interested in C++ bindings with a well-designed API > for data types and manifests, but they have their own runtime and I/O, so > they prefer a binding that exclude these components. However, there are > also users who require an all-in-one solution. > > The iceberg-cpp project aims to provide a well-designed interface for > users to plug in file I/O, readers, writers, and other components while > offering a default implementation in other modules. > > Luckily, we now have iceberg-rust, which is not fully feature-complete but > undergoing rapid development. We can develop a C++ binding based on > iceberg-rust and establish a robust C++ API within the iceberg-cpp project. > The C++ project will define public interfaces and offer various build > targets for users to choose from. The overall process will be similar to > how pyiceberg interacts with iceberg-rust. > > ## Plan > > > 1. Use cxx[^1] to build cpp bindings for iceberg-rust which exposes core > APIs. > > The binding will support different build profiles that users can choose to > use fileio from iceberg-rust or not. > > 2. iceberg-cpp will define public interfaces and types for cpp users. > > After this separation, iceberg-rust can focus on implementing features and > exposing them through simpler, more direct bindings. Meanwhile, iceberg-cpp > will be responsible for designing, testing, and maintaining the user-level > APIs, allowing users to select the parts they need or plug in their own > file I/O components. > > ## Conclusion > > We believe this design combines the best parts of two projects and helps > us iterate iceberg-cpp more quickly. > > Welcome to leave your comments here! > > [^1]: https://cxx.rs/ > > Xuanwo > > https://xuanwo.io/ >