bytecodealliance/cargo-wasi

Consider archiving cargo-wasi repository

alexcrichton opened this issue · 3 comments

This tool was written quite some time ago and quite a lot has changed in the meantime. When this tool was first written the component model didn't exist and the future of WASI was not so certain. Additionally at the time this tool was written it was envisioned that wasm-bindgen may play a part in the future story of bindings generation and such. Nowadays much of the original underlying assumptions of this tool are no longer applicable.

Today the landscape is significantly different:

  • WASI is defined with the component model which has its own suite of tooling and such where a thin wrapper around Cargo, which this tool is, is not appropriate.
  • The cargo wasi tool should effectively be replaced by cargo component
  • Integration/support for wasm-bindgen is quite outdated and no longer relevant. The wasm-bindgen tool only ever supported wasm32-wasi at best and it's been explicitly removed now as well

While cargo wasi was a neat experiment I personally have not really been maintaining it for quite awhile now and I think the usage is quite small today (although I believe there are some users). I'm not keen myself on the continued support of this tool because it causes confusion for example being in a prominent location with a prominent name. Personally I think it would be best to update the README to document the current state of play as-of-today and indicate that cargo component is the effective successor of this tool and usage/tooling should be directed towards that.

I'll also note that this tool is not current planned to follow the developments of WASI meaning that it'll be stuck on preview1 "forever". Integration with components and continuing to follow WASI would require basically duplicating the efforts of cargo component which if that's the case means that effort should go there instead of here.

dj95 commented

I really appreciate the new approach and the component model. It looks really promising. Do you plan to support wasm32-wasi in cargo-component?

Currently I develop and maintain a WASM plugin for a terminal multiplexer (zellij). They support plugins with wasm32-wasi as compilation target. In order to run unit tests and benchmarks for profiling, cargo-wasi provides an easy way to run these tasks. Are these tasks possible with cargo-component? Unit tests seem to work fine, but benchmarks with criterion seem not to work.

Yes wasm32-wasi is already supported by cargo-component as it's the only means by which is implemented to create a component right now