Hi folks! I've got someone starting on my wasm team at Fastly in early January and I am looking for good starter tasks for him to get an introduction to wasmtime. What issues would be good to get a feel for the codebase?
Hi Leslie, hope all's well! A few thoughts come to mind; @Alex Crichton and @fitzgen (he/him) probably have more (and prefer their ideas over mine honestly):
There is work to finish the lower execution-backend tiers: Winch (fast baseline compiler) and Pulley (interpreter). @Saúl Cabrera is leading the winch efforts, Alex and Nick the Pulley efforts. Getting both to full parity with the Cranelift backend would be fantastic to have for completeness reasons (Winch is also part of our debugging plans, and Pulley is part of our embedded/portability story which has community implications), and would be a good way to get familiar with the runtime, the test suite, and various bits of the compiler infrastructure. It's also "bitesize-friendly": PRs to add support for each individual Wasm opcode/instruction are fine.
If the new person has some experience with profiling and performance optimization, we haven't had a focused effort on that in a bit, and the nature of things is that when we don't pay attention, little regressions often slip in. It would be great to have someone do comprehensive profiling, sort through what they find, and make a performance push if there's any low-hanging fruit.
Big efforts ongoing or coming up include finishing GC (Nick), exception-handling support, debugging (many subparts). Not sure if any of those are really beginner-friendly but maybe if someone's interested specifically, there's a way to pitch in?
I haven't written up an issue on this (and would be happy too if it matches) but if they're experienced in C/C++ I've long wanted to improve the testing of wasmtimes C API in the main repository. This would mean probably moving wasmtime-cpp to the main repo and then setting up a test harness through that to test the C API with cmake or similar. Not necessarily the easiest starting point though unless they're already experienced with cmake and such
(and I'd of course second everything Chris said)
If they're interested in debugging and/or DWARF getting that up and running with Winch would also be a meaty project but a valuable one. (Saul could probably speak more to the difficulty)
Winch SIMD support might be on the easier side of the spectrum since it's mostly copying CLIF lowerings but would be nice to have.
He's not a C person, but he has had a bit of profiling performance optimization in his past -- and we're always very concerned about performance, so this might be a great way to kick things off :)
Alex and Chris gave pretty thorough answers, but taking https://github.com/bytecodealliance/wasmtime/pull/9093 over the finish line would also be great and should improve wasm execution speed
@Dan Gohman has started on that one :)
Last updated: Dec 23 2024 at 14:03 UTC