arrow-wasm icon indicating copy to clipboard operation
arrow-wasm copied to clipboard

Interested in any PRs?

Open kylebarron opened this issue 2 years ago • 2 comments

👋 I've become convinced that there's a use for a library like arrow-wasm... not designed to be used directly from JavaScript (assuming no perf gain over JS) but instead to be used as a building block library for rust-wasm applications that want to use Arrow but don't want to manage wrapping core Arrow data structures to wasm themselves. And especially to simplify FFI between JS and Rust.

I started on a library at https://github.com/kylebarron/arrow-wasm using parts of your code as inspiration, but thought I should check if you were interested in any upstream PRs to this project 🙂

kylebarron avatar Sep 16 '23 02:09 kylebarron

Absolutely although I haven't done much here as you can see so we could also shift development to your repo (I can archive this here and link to yours)! I think it would be even better if we could upstream code into apache/arrow. What do you think?

domoritz avatar Sep 17 '23 05:09 domoritz

upstream code into apache/arrow

There's essentially two projects I'm working on:

  • arrow-js-ffi code on the JS side of the boundary
  • arrow-wasm on the Rust side of the Wasm boundary.

The former could potentially be upstreamed into Arrow JS, but I think it makes sense for now to be a separate library. For one, an application that mostly uses Wasm but might need minimal interop with JS could use that without bringing in the full Arrow JS dependency. And in a WIP refactor, it lets me handle all Arrow types, even the ones Arrow JS doesn't yet support, by having minimal objects holding the raw Arrow buffers.

The latter I don't think would make sense in Arrow JS. arrow-rs has built-in Python trait implementations, but not a Python API; I wouldn't guess they'd be interested in upstreaming an official wasm-bindgen binding. So I think that also makes sense as a separate library.

Building out a full JS API isn't yet a priority for arrow-wasm; first I'm focused on just handling table/record batch interop, where I can build geospatial table support on top in another library. So I'm not sure when my library will fully encompass your existing APIs in this repo

kylebarron avatar Sep 18 '23 17:09 kylebarron