Skip to content

Commit 4c8fece

Browse files
jsturtevantCopilot
andcommitted
Add pulley support for LTS wasmtime builds
Pass features (including wasmtime_lts) through to pulley build recipes in Justfile, and add pulley target support to the LTS AOT compilation path so --lts --pulley works correctly. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent f0408aa commit 4c8fece

File tree

2 files changed

+22
-10
lines changed

2 files changed

+22
-10
lines changed

Justfile

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ build-rust-wasm-examples target=default-target features="": (mkdir-redist target
4747
build-pulley-rust-wasm-examples target=default-target features="": (mkdir-redist target)
4848
rustup target add wasm32-unknown-unknown
4949
cd ./src/tests/rust_guests/rust_wasm_samples && cargo build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }}
50-
cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot
50+
cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} ./src/tests/rust_guests/rust_wasm_samples/target/wasm32-unknown-unknown/{{ target }}/rust_wasm_samples.wasm ./x64/{{ target }}/rust_wasm_samples.aot
5151

5252
build-rust-component-examples target=default-target features="": (compile-wit)
5353
# use cargo component so we don't get all the wasi imports https://github.com/bytecodealliance/cargo-component?tab=readme-ov-file#relationship-with-wasm32-wasip2
@@ -63,7 +63,7 @@ build-pulley-rust-component-examples target=default-target features="": (compile
6363
# we also explicitly target wasm32-unknown-unknown since cargo component might try to pull in wasi imports https://github.com/bytecodealliance/cargo-component/issues/290
6464
rustup target add wasm32-unknown-unknown
6565
cd ./src/tests/rust_guests/component_sample && cargo component build --target wasm32-unknown-unknown --profile={{ if target == "debug" {"dev"} else { target } }}
66-
cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot
66+
cargo run -p hyperlight-wasm-aot compile --pulley {{ if features =~ "gdb" {"--debug"} else {""} }} {{ if features =~ "wasmtime_lts" {"--lts"} else {""} }} --component ./src/tests/rust_guests/component_sample/target/wasm32-unknown-unknown/{{ target }}/component_sample.wasm ./x64/{{ target }}/component_sample.aot
6767

6868
check target=default-target:
6969
cargo check --profile={{ if target == "debug" {"dev"} else { target } }}
@@ -126,7 +126,7 @@ examples-components target=default-target features="": (build-rust-component-exa
126126
{{ wit-world }} {{ wit-world-name-greeter }} cargo run {{ if features =="" {''} else {"--no-default-features -F kvm -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example component_greeter_example
127127

128128
# Test a component and a module compiled with pulley
129-
examples-pulley target=default-target features="": (build-pulley-rust-component-examples target) (build-pulley-rust-wasm-examples target)
129+
examples-pulley target=default-target features="": (build-pulley-rust-component-examples target features) (build-pulley-rust-wasm-examples target features)
130130
{{ wit-world }} cargo run {{ if features =="" {'-F pulley'} else {"--no-default-features -F kvm,pulley -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example component_example
131131
cargo run {{ if features =="" {'-F pulley'} else {"--no-default-features -F pulley -F " + features } }} --profile={{ if target == "debug" {"dev"} else { target } }} --example rust_wasm_examples
132132

src/hyperlight_wasm_aot/src/main.rs

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -94,10 +94,14 @@ enum Commands {
9494
},
9595
}
9696

97-
/// Precompile bytes using the LTS wasmtime version (x86_64-unknown-none target only)
98-
fn precompile_bytes_lts(bytes: &[u8], debug: bool, is_component: bool) -> Vec<u8> {
97+
/// Precompile bytes using the LTS wasmtime version
98+
fn precompile_bytes_lts(bytes: &[u8], debug: bool, pulley: bool, is_component: bool) -> Vec<u8> {
9999
let mut config = wasmtime_lts::Config::new();
100-
config.target("x86_64-unknown-none").unwrap();
100+
if pulley {
101+
config.target("pulley64").unwrap();
102+
} else {
103+
config.target("x86_64-unknown-none").unwrap();
104+
}
101105
if debug {
102106
config.debug_info(true);
103107
config.cranelift_opt_level(wasmtime_lts::OptLevel::None);
@@ -165,16 +169,24 @@ fn main() {
165169
};
166170

167171
if lts {
172+
let target_name = if pulley {
173+
"pulley64"
174+
} else {
175+
"x86_64-unknown-none"
176+
};
168177
if debug {
169178
println!(
170-
"Aot Compiling {} to {} with debug info and optimizations off (LTS wasmtime)",
171-
input, outfile
179+
"Aot Compiling {} to [{}]: {} with debug info and optimizations off (LTS wasmtime)",
180+
input, target_name, outfile
172181
);
173182
} else {
174-
println!("Aot Compiling {} to {} (LTS wasmtime)", input, outfile);
183+
println!(
184+
"Aot Compiling {} to [{}]: {} (LTS wasmtime)",
185+
input, target_name, outfile
186+
);
175187
}
176188
let bytes = std::fs::read(&input).unwrap();
177-
let serialized = precompile_bytes_lts(&bytes, debug, component);
189+
let serialized = precompile_bytes_lts(&bytes, debug, pulley, component);
178190
std::fs::write(outfile, serialized).unwrap();
179191
} else {
180192
let target = if pulley {

0 commit comments

Comments
 (0)