deterministic_wasi_ctx/
lib.rs1mod clocks;
2mod scheduling;
3mod wasi_abi;
4
5use clocks::{DeterministicMonotonicClock, DeterministicWallClock};
6use rand_core::SeedableRng;
7use rand_pcg::Pcg64Mcg;
8pub use scheduling::{
9 replace_scheduling_functions, replace_scheduling_functions_for_wasi_preview_0,
10};
11use wasmtime_wasi::WasiCtxBuilder;
12
13pub fn add_determinism_to_wasi_ctx_builder(
14 wasi_builder: &mut WasiCtxBuilder,
15) -> &mut WasiCtxBuilder {
16 const RANDOM_SEED: u64 = 42; let random = Pcg64Mcg::seed_from_u64(RANDOM_SEED);
23
24 wasi_builder
25 .allow_tcp(false)
26 .allow_udp(false)
27 .insecure_random(random.clone())
28 .secure_random(random)
29 .wall_clock(DeterministicWallClock)
30 .monotonic_clock(DeterministicMonotonicClock)
31}