bytecodealliance / lucet

Lucet, the Sandboxing WebAssembly Compiler.
Apache License 2.0
4.07k stars 165 forks source link

Add new x64 backend as lucetc option, and add to CI runs. #616

Closed cfallin closed 3 years ago

cfallin commented 3 years ago

The new x86-64 backend in Cranelift is now able to run all Lucet tests, and has shown better performance (compile-time and run-time) than the current backend. This PR adds a Cargo feature to lucetc to build with the new backend, and modifies the Makefile and CircleCI config to run tests with the new backend as well, in order to ensure that it continues to work.

cfallin commented 3 years ago

This seems to have fixed the CircleCI yaml issue; but the force-push caused review comment(s) from @pchickey to become inaccessible it seems (sorry!).

cfallin commented 3 years ago

The new jobs aren't building with the feature flag in test-full; refactoring things a bit in the Makefile to make this happen.

Question: how reasonable would it be to run at least some of the tests on Rust nightly? I think we may need -Zpackage-features to specify a particular crate's features (lucetc/new-x64-backend) while testing all crates, unless someone else knows a better way!

cfallin commented 3 years ago

Emulating -Zpackage-features with trusty old sed instead; this will let us keep testing on stable Rust.

cfallin commented 3 years ago

Tests on new backend regressed due to bytecodealliance/wasmtime#2463, I think, in the stack-limit check code.

pchickey commented 3 years ago

I'm fine with running additional tests on nightly, but if there is a way to get new-backend testing on stable, that is preferable, since that is how it will eventually be deployed.