Skip to content

Commit dd78345

Browse files
authored
bump: upgrade wasmtime and related dependencies to 13.0.0 (#221)
1 parent 3693154 commit dd78345

File tree

8 files changed

+294
-271
lines changed

8 files changed

+294
-271
lines changed

Cargo.lock

Lines changed: 258 additions & 248 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -91,9 +91,9 @@ wws-project = { path = "./crates/project" }
9191
wws-panel = { path = "./crates/panel" }
9292
wws-api-manage = { path = "./crates/api-manage" }
9393
wws-api-manage-openapi = { path = "./crates/api-manage-openapi" }
94-
wasmtime = "10.0.2"
95-
wasmtime-wasi = "10.0.2"
96-
wasmtime-wasi-nn = "10.0.2"
97-
wasi-common = "10.0.2"
94+
wasmtime = "13.0.0"
95+
wasmtime-wasi = "13.0.0"
96+
wasmtime-wasi-nn = "13.0.0"
97+
wasi-common = "13.0.0"
9898
path-slash = "0.2.1"
9999
openssl = { version = "=0.10.55" }

crates/runtimes/src/modules/external.rs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -90,13 +90,16 @@ impl Runtime for ExternalRuntime {
9090

9191
/// Mount the source code in the WASI context so it can be
9292
/// processed by the engine
93-
fn prepare_wasi_ctx(&self, builder: WasiCtxBuilder) -> Result<WasiCtxBuilder> {
94-
let dir = Dir::open_ambient_dir(&self.store.folder, ambient_authority())?;
95-
93+
fn prepare_wasi_ctx(&self, builder: &mut WasiCtxBuilder) -> Result<()> {
9694
builder
97-
.preopened_dir(dir, "/src")?
95+
.preopened_dir(
96+
Dir::open_ambient_dir(&self.store.folder, ambient_authority())?,
97+
"/src",
98+
)?
9899
.args(&self.metadata.args)
99-
.map_err(|_| errors::RuntimeError::WasiContextError)
100+
.map_err(|_| errors::RuntimeError::WasiContextError)?;
101+
102+
Ok(())
100103
}
101104

102105
/// Returns a reference to the Wasm module that should

crates/runtimes/src/modules/javascript.rs

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,9 +46,13 @@ impl Runtime for JavaScriptRuntime {
4646

4747
/// Mount the source code in the WASI context so it can be
4848
/// processed by the engine
49-
fn prepare_wasi_ctx(&self, builder: WasiCtxBuilder) -> Result<WasiCtxBuilder> {
50-
let dir = Dir::open_ambient_dir(&self.store.folder, ambient_authority())?;
51-
Ok(builder.preopened_dir(dir, "/src")?)
49+
fn prepare_wasi_ctx(&self, builder: &mut WasiCtxBuilder) -> Result<()> {
50+
builder.preopened_dir(
51+
Dir::open_ambient_dir(&self.store.folder, ambient_authority())?,
52+
"/src",
53+
)?;
54+
55+
Ok(())
5256
}
5357

5458
/// Returns a reference to the Wasm module that should

crates/runtimes/src/runtime.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,8 +21,8 @@ pub trait Runtime {
2121
/// WASI context builder. This allow runtimes to mount
2222
/// specific lib folders, source code and adding
2323
/// environment variables.
24-
fn prepare_wasi_ctx(&self, builder: WasiCtxBuilder) -> Result<WasiCtxBuilder> {
25-
Ok(builder)
24+
fn prepare_wasi_ctx(&self, _builder: &mut WasiCtxBuilder) -> Result<()> {
25+
Ok(())
2626
}
2727

2828
/// Returns a reference raw bytes of the Wasm module that should

crates/worker/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,6 @@ wws-data-kv = { workspace = true }
2525
wws-runtimes = { workspace = true }
2626
# We didn't integrate components yet. For an initial binding implementation,
2727
# we will use the wit-bindgen-wasmtime crate maintained by the Fermyon team.
28-
wit-bindgen-wasmtime = { git = "https://github.com/fermyon/wit-bindgen-backport", rev = "b89d5079ba5b07b319631a1b191d2139f126c976" }
28+
wit-bindgen-wasmtime = { git = "https://github.com/fermyon/wit-bindgen-backport", rev = "598cd229bb43baceff9616d16930b8a5a3e79d79" }
2929
base64 = "0.21.0"
3030
sha256 = "1.1.1"

crates/worker/src/lib.rs

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -111,21 +111,22 @@ impl Worker {
111111
vars.iter().map(|(k, v)| (k.clone(), v.clone())).collect();
112112

113113
// Create the initial WASI context
114-
let mut wasi_builder = WasiCtxBuilder::new()
114+
let mut wasi_builder = WasiCtxBuilder::new();
115+
wasi_builder
115116
.envs(&tuple_vars)
116117
.map_err(|_| errors::WorkerError::ConfigureRuntimeError)?;
117118

118119
// Configure the stdio
119120
let stdio = Stdio::new(&input);
120-
wasi_builder = stdio.configure_wasi_ctx(wasi_builder);
121+
stdio.configure_wasi_ctx(&mut wasi_builder);
121122

122123
// Mount folders from the configuration
123124
if let Some(folders) = self.config.folders.as_ref() {
124125
for folder in folders {
125126
if let Some(base) = &self.path.parent() {
126127
let dir = Dir::open_ambient_dir(base.join(&folder.from), ambient_authority())
127128
.map_err(|_| errors::WorkerError::ConfigureRuntimeError)?;
128-
wasi_builder = wasi_builder
129+
wasi_builder
129130
.preopened_dir(dir, &folder.to)
130131
.map_err(|_| errors::WorkerError::ConfigureRuntimeError)?;
131132
} else {
@@ -145,7 +146,7 @@ impl Worker {
145146
eprintln!("❌ The only WASI-NN supported backend name is \"{WASI_NN_BACKEND_OPENVINO}\". Please, update your config.");
146147
None
147148
} else {
148-
wasmtime_wasi_nn::add_to_linker(&mut linker, |s: &mut WorkerState| {
149+
wasmtime_wasi_nn::witx::add_to_linker(&mut linker, |s: &mut WorkerState| {
149150
Arc::get_mut(s.wasi_nn.as_mut().unwrap())
150151
.expect("wasi-nn is not implemented with multi-threading support")
151152
})
@@ -155,18 +156,20 @@ impl Worker {
155156
)
156157
})?;
157158

158-
Some(Arc::new(WasiNnCtx::new().map_err(|_| {
159+
let (backends, registry) = wasmtime_wasi_nn::preload(&[]).map_err(|_| {
159160
errors::WorkerError::RuntimeError(
160161
wws_runtimes::errors::RuntimeError::WasiContextError,
161162
)
162-
})?))
163+
})?;
164+
165+
Some(Arc::new(WasiNnCtx::new(backends, registry)))
163166
}
164167
} else {
165168
None
166169
};
167170

168171
// Pass to the runtime to add any WASI specific requirement
169-
wasi_builder = self.runtime.prepare_wasi_ctx(wasi_builder)?;
172+
self.runtime.prepare_wasi_ctx(&mut wasi_builder)?;
170173

171174
let wasi = wasi_builder.build();
172175
let state = WorkerState {

crates/worker/src/stdio.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,10 @@ impl Stdio {
2424
}
2525
}
2626

27-
pub fn configure_wasi_ctx(&self, builder: WasiCtxBuilder) -> WasiCtxBuilder {
27+
pub fn configure_wasi_ctx<'a>(
28+
&self,
29+
builder: &'a mut WasiCtxBuilder,
30+
) -> &'a mut WasiCtxBuilder {
2831
builder
2932
.stdin(Box::new(self.stdin.clone()))
3033
.stdout(Box::new(self.stdout.clone()))

0 commit comments

Comments
 (0)