For a company internal experiment we wanted to try out Winch for which I personally have high hopes. Unfortunately it seems that Winch does not support certain Wasm operators like load and store instructions and maybe more, so we couldn't compare its performance to alternatives. How to best collaborate on Winch or get in contact with their authors? Unfortunately there is no Zulip channel dedicated to Winch.
@Robin Freyler Winch was proposed and is designed + led by @Saúl Cabrera ; I know the intent is to finish its implementation, but I'm not sure what their latest timeline is. I'm sure @Saúl Cabrera would be interested if you want to help with the effort!
Hi @Robin Freyler Winch is indeed currently missing support for some opcodes in order to fully support Core Wasm. We've been tracking our progress in this issue, which is meant to be an exhaustive list of all the opcodes/Wasm features needed in order to support Core Wasm (elements that have an assignee are currently in progress). As you can see, loads and stores are pretty much what's missing. Our target is to have these instructions completed by end of Feb 2024. We had hopes of finishing them earlier, but we decided to spend some time locally fuzzing Winch before adding more features to ensure the correctness of the existing building blocks.
As for what's next: one the objectives that we have for 2024 is to bring Winch's x64 target to Tier 2, according to Wasmtime's Tiers of Support, this will involve working on Wasm proposals like function references and SIMD. Aside from that, we'd also like to improve support for at least the Arm64 backend, which currently only supports a handful of Wasm instructions. Lastly, but not less important, we'd like to spend some time analyzing Winch's compilation and runtime performance, which we haven't done extensively yet.
Let me know if any of this helps, or if you have any other questions. We don't have a Winch specific stream yet, but I guess we could create one if needed.
Also: any help on any of those areas is definitely welcome! And of course, if there's anything else that's not covered, needed for your particular use case, I'd be happy to discuss it.
@Chris Fallin thanks for initiating the contact with @Saúl Cabrera . :)
@Saúl Cabrera Thanks for your reply and all the information about the project status. The issue tracking the progress is very helpful to get an overview. It is very wise to implement the JIT incrementally and with great care for correctness and I really like the care taken so far a lot. :)
We wanted to use Winch to test how well it performs in some benchmarks compared to other similar solutions. I think Winch is going to be a wonderful addition to Wasmtime. Currently I am trying to look for opportunities to collaborate more closely with Bytecode Alliance people. So far I have worked on a Wasm interpreter (https://github.com/paritytech/wasmi) but would like to dig deeper into compilers and JITs eventually.
A Winch specific Zulip stream would definitely help people like me collaborate on this effort. :)
I think it's reasonable to have a Winch specific stream. I'm not entirely sure if there's a process to create new streams, though, I'd like to confirm that before proceeding.
@fitzgen (he/him) / @Bailey Hayes do you happen to know if there are any requirements to create new streams?
there isn't really, no. One thing to watch out for is to make it web-public right away, because otherwise it requires admin rights to change
Thanks @Till Schneidereit , I'll make sure to make it web-public
Oh it seems that I don't have enough permissions to change the visibility to web-public at creation time, I can only select between the rest of the options.
ugh, that's frustrating. Let me see if I can do that
Looks like yes!
Thanks for your help!
Awesome that Winch now has its own Zulip stream. :)
Last updated: Dec 23 2024 at 13:07 UTC