wasi-rs icon indicating copy to clipboard operation
wasi-rs copied to clipboard

Publish wasi-nn Rust bindings here?

Open abrown opened this issue 3 years ago • 6 comments

I would like to publish Rust bindings for wasi-nn that were generated with the witx-bindgen tool in this repo (the Rust bindings currently live in a Wasmtime example). It would be helpful to me to have the bindings in one place--i.e., most likely this repository--so that changes to WITX, the tools, etc., can be tested against bindings from several modules. This would simplify creating and maintaining WASI proposals and there are other WASI proposals (e.g. wasi-crypto, wasi-sockets, etc.) that might benefit from this same idea.

The first question is "should this be done?" and I am interested in opinions here. Then, "how?": I think this repository (and accompanying CI tasks) could be slightly refactored to generate and publish multiple crates, one per proposal. Thoughts?

abrown avatar Mar 26 '21 18:03 abrown

cc: @pchickey, @sunfishcode, @alexcrichton, @jedisct1

abrown avatar Mar 26 '21 18:03 abrown

The AssemblyScript/Zig bindings and documentation for wasi-crypto and other APIs were all generated with as-witx. The Rust bindings were generated with witx-generate-raw.

But none of these code generators support the recent changes made to the witx format yet.

I don't know what tools other proposals have used to generate their bindings. Some of them (ex: experimental-http) are manually written.

Before centralizing these bindings, maybe we really need code generators (not only for Rust) that we could all use.

jedisct1 avatar Mar 26 '21 20:03 jedisct1

I'm not personally sure where best the bindings for all the proposals to wasi would live, but here seems as best a place as any while we figure that out?

alexcrichton avatar Mar 29 '21 14:03 alexcrichton

Agreed with Alex that the long term isnt clear, but for now we should start by getting the Rust code generator in this crate working for all proposals. I don't have an opinion on where code generators for other languages should live.

pchickey avatar Mar 29 '21 16:03 pchickey

maybe we really need code generators (not only for Rust) that we could all use

@jedisct1, is witx-codegen an attempt to fix this problem? I haven't tried it out yet, but I like the idea of being able to generate bindings for a bunch of different languages! How do you see that tool relating to the current Rust code generator in this repo--should it replace it? Live alongside?

abrown avatar Apr 13 '21 20:04 abrown

@abrown Yes. witx-codegen was made to solve this problem, which also affected other non-rust projects as changes to witx were made. It merges existing code and doc generators into a single tool, which is way easier to maintain than all these different forks of as-witx.

witx-codegen is currently being updated to use the BindGen trait in order to support the next ABI, and for the Rust backend, the code from this repository can easily be ported to it instead of exposing a different interface.

jedisct1 avatar Apr 13 '21 21:04 jedisct1