GHC WebAssembly Weekly Update, 2023-04-19

Testsuite update

The number of remaining unexpected failures is down to 8 right now. These failures are annoying at best, but not worrying like codegen bugs, since it’s obvious they are all related to the interaction between the non-threaded I/O manager and the host runtime’s WASI layer.

Remaining work here is creating appropriate tracking tickets for them, get the number down to 0, clean up the commits a bit, make sure nothing regresses for other jobs. Then we’ll have whole testsuite CI for the wasm backend, finally. After that I’ll take a break before moving on to other tasks.

I figured out the root cause of file descriptor EPERM errors that bugged me last week. The testsuite driver runs each case in a fresh directory containing files copied from the tree, except…it attempts to symlink instead of copying whenever the host platform supports it. Which works well so far, but wasmtime may refuse to resolve such symlinks when opening these files. The solution is simple though: make sure we actually copy files and their permission bits when testing the wasm32 target. I’ve also filed upstream wasmtime issues (#6227) (#6239).