Hi, Chris: Thanks for raising this. Generally I'm +1 with building ruby bindings on top of rust implementation, who would help introduce iceberg into the ruby ecosystem.
On Mon, Aug 5, 2024 at 7:30 PM Chris Atkins <chri...@buildkite.com.invalid> wrote: > Hi there, > > I'm following up on a discussion > <https://apache-iceberg.slack.com/archives/C05HTENMJG4/p1722750831522969> from > the #rust channel on the Iceberg community slack, so starting a thread here > too. > > After seeing Xuanwo's and Song's recent proposals around leveraging > iceberg-rust to power parts of PyIceberg, I was thinking it could be > valuable to follow a similar pattern to build out Ruby bindings for > Iceberg. Being able to stand on the shoulders of iceberg-rust could really > help build out a robust Ruby interface, and also offer some opportunities > for interop with things like datafusion and opendal. > > Recently in the Ruby ecosystem, writing native extensions in Rust has > become more popular, and tools like rb-sys and magnus provide a lot of the > required infrastructure. A good example is ruby-polars, which provides an > interface that is idiomatic Ruby but retains good symmetry with the APIs > exposed by py-polars. I wonder if we could eventually aim for a similar > type of symmetry between PyIceberg and a Ruby gem? > > Is there much interest in this? I've started playing around with some of > the basics, and started out with a plain native Ruby implementation of some > of the basic metadata APIs, but quickly realised that building on > iceberg-rust could be more productive than writing it all from scratch. > > *References* > > https://lists.apache.org/thread/5570vbdkrk7mdswt4jqy45lv7y58pz4b > https://lists.apache.org/thread/33c0nkc3k6646lvro1lv22pvhwlp50ss > https://github.com/apache/iceberg-rust/pull/518 > > *Prior Art in Ruby* > > https://github.com/matsadler/magnus > https://github.com/oxidize-rb/rb-sys > https://github.com/ankane/ruby-polars > https://github.com/apache/opendal/tree/main/bindings/ruby > > Thanks, > Chris Atkins >