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

Reply via email to