Xuanwo commented on PR #966:
URL: https://github.com/apache/iceberg-rust/pull/966#issuecomment-2673388726

   For @wgtmac 
   
   > * Is it a battery-included solution or is flexible enough to let 
downstreams plugin their own implementations of I/O (cloud object store, hdfs, 
async I/O, etc.), file formats (parquet/avro/orc)? This has been discussed a 
lot in the iceberg-cpp project and should be the 1st priority.
   
   It will be battery-included solution but can split into different modules so 
that users can use their own IO.
   
   > * Is there any limitation to support different architectures (e.g. ARM) or 
platforms (e.g. Windows)?
   
   No limitation on mainstream platforms. (x86_64, ARM) × (Linux, macOS, 
Windows) are known to be supported.
   
   The complete list of supported platforms can be found at 
https://doc.rust-lang.org/nightly/rustc/platform-support.html.
   
   > * Is it possible to automatically generate C++ headers to be more friendly 
to C++?
   
   [cbindgen](https://github.com/mozilla/cbindgen) also supports generating C++ 
headers, but I haven't tried it yet. I'll take a look if needed.
   
   It's also possible to use [`cxx`](https://github.com/dtolnay/cxx) to create 
a pure C++ binding, but it depends on the direction we want to take for 
iceberg-cpp.
   
   > * Is there any performance penalty compared to a pure C/C++ implementation?
   
   This FFI bridge operates at zero or negligible overhead, i.e. no copying, no 
serialization, no runtime checks needed.
   
   ---
   
   For @lidavidm 
   
   > I'm also curious if there's any potential for linking issues if say, we 
use this (with OpenDAL enabled) and also OpenDAL's C++ bindings separately.
   
   I believe they will work seamlessly since neither iceberg-rust nor opendal 
has runtime or global variables to share.
   
   > I'm also assuming (given Rust has no stable ABI) that this builds one 
shared object with all enabled features; given that maybe another thing to 
think about (down the line!) is integration with CMake etc. so consumers can 
choose which features to build and link more easily?
   
   Yes, it is definitely possible. We have explored this in OpenDAL, where we 
can build it using only selected services or disable async support. Users can 
control these options through different CMake profiles.


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org

For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


---------------------------------------------------------------------
To unsubscribe, e-mail: issues-unsubscr...@iceberg.apache.org
For additional commands, e-mail: issues-h...@iceberg.apache.org

Reply via email to