├── src ├── main.rs ├── lib.rs ├── rhai.rs ├── mlua.rs ├── koto.rs ├── roto.rs ├── rquickjs.rs ├── boa.rs └── wasm.rs ├── .gitignore ├── Sort Rust objects.png ├── benches ├── wasmi.rs ├── wasmtime.rs ├── rhai.rs ├── rquickjs.rs ├── roto.rs ├── mlua_luau.rs ├── mlua_lua54.rs ├── boa.rs └── koto.rs ├── scripts ├── sort_userdata.koto ├── sort_userdata.lua ├── sort_userdata.rhai ├── sort_userdata.roto ├── sort_userdata.js └── sort_userdata.wasm.rs ├── README.md ├── bench.py ├── Cargo.toml └── Cargo.lock /src/main.rs: -------------------------------------------------------------------------------- 1 | fn main() {} 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /target 2 | /.vscode 3 | /scripts/sort_userdata.wasm 4 | -------------------------------------------------------------------------------- /Sort Rust objects.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/khvzak/script-bench-rs/HEAD/Sort Rust objects.png -------------------------------------------------------------------------------- /src/lib.rs: -------------------------------------------------------------------------------- 1 | #[cfg(feature = "boa")] 2 | pub mod boa; 3 | #[cfg(feature = "koto")] 4 | pub mod koto; 5 | #[cfg(any(feature = "mlua_lua54", feature = "mlua_luau"))] 6 | pub mod mlua; 7 | #[cfg(feature = "rhai")] 8 | pub mod rhai; 9 | #[cfg(feature = "roto")] 10 | pub mod roto; 11 | #[cfg(feature = "rquickjs")] 12 | pub mod rquickjs; 13 | #[cfg(any(feature = "wasmi", feature = "wasmtime"))] 14 | pub mod wasm; 15 | -------------------------------------------------------------------------------- /benches/wasmi.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | fn benchmark(c: &mut Criterion) { 4 | script_bench::wasm::sort_userdata( 5 | |func| { 6 | c.bench_function("Sort Rust objects", |b| { 7 | b.iter(|| func()); 8 | }); 9 | }, 10 | |result| { 11 | // Validate that the results are sorted 12 | assert_eq!(result.len(), 10000); 13 | for i in 0..result.len() - 1 { 14 | assert!(result[i] <= result[i + 1],); 15 | } 16 | }, 17 | ) 18 | .unwrap(); 19 | } 20 | 21 | criterion_group! { 22 | name = benches; 23 | config = Criterion::default().sample_size(10); 24 | targets = benchmark, 25 | } 26 | 27 | criterion_main!(benches); 28 | -------------------------------------------------------------------------------- /benches/wasmtime.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | fn benchmark(c: &mut Criterion) { 4 | script_bench::wasm::sort_userdata( 5 | |func| { 6 | c.bench_function("Sort Rust objects", |b| { 7 | b.iter(|| func()); 8 | }); 9 | }, 10 | |result| { 11 | // Validate that the results are sorted 12 | assert_eq!(result.len(), 10000); 13 | for i in 0..result.len() - 1 { 14 | assert!(result[i] <= result[i + 1],); 15 | } 16 | }, 17 | ) 18 | .unwrap(); 19 | } 20 | 21 | criterion_group! { 22 | name = benches; 23 | config = Criterion::default().sample_size(10); 24 | targets = benchmark, 25 | } 26 | 27 | criterion_main!(benches); 28 | -------------------------------------------------------------------------------- /benches/rhai.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use script_bench::rhai::RustData; 4 | 5 | fn benchmark(c: &mut Criterion) { 6 | script_bench::rhai::sort_userdata( 7 | |func| { 8 | c.bench_function("Sort Rust objects", |b| { 9 | b.iter(|| func()); 10 | }); 11 | }, 12 | |array| { 13 | // Validate that the results are sorted 14 | assert_eq!(array.len(), 10000); 15 | let mut prev = RustData::default(); 16 | for next in array { 17 | let next = next.cast::(); 18 | assert!(prev <= next); 19 | prev = next; 20 | } 21 | }, 22 | ) 23 | .unwrap(); 24 | } 25 | 26 | criterion_group! { 27 | name = benches; 28 | config = Criterion::default().sample_size(10); 29 | targets = benchmark, 30 | } 31 | 32 | criterion_main!(benches); 33 | -------------------------------------------------------------------------------- /scripts/sort_userdata.koto: -------------------------------------------------------------------------------- 1 | charset = ("0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f") 2 | 3 | generate_string = |len| 4 | data = [] 5 | for i in 0..len 6 | data.push charset[rand(size charset)] 7 | data.to_string() 8 | 9 | partition = |arr, lo, hi| 10 | pivot_idx = ((lo + hi) / 2).floor() 11 | pivot = arr[pivot_idx] 12 | arr[pivot_idx], arr[hi] = arr[hi], arr[pivot_idx] 13 | j = lo 14 | for i in lo..hi 15 | if arr[i] < pivot 16 | arr[i], arr[j] = arr[j], arr[i] 17 | j += 1 18 | arr[j], arr[hi] = arr[hi], arr[j] 19 | j 20 | 21 | quicksort = |arr, lo, hi| 22 | while lo < hi 23 | p = partition arr, lo, hi 24 | quicksort arr, lo, (p - 1) 25 | lo = p + 1 26 | 27 | export bench = || 28 | array = [] 29 | for _ in 0..10000 30 | array.push RustData_new generate_string(8 + rand(16)) 31 | quicksort array, 0, (array.count() - 1) 32 | array 33 | -------------------------------------------------------------------------------- /benches/rquickjs.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use script_bench::rquickjs::RustData; 4 | 5 | fn benchmark(c: &mut Criterion) { 6 | script_bench::rquickjs::sort_userdata( 7 | |func| { 8 | c.bench_function("Sort Rust objects", |b| { 9 | b.iter(|| func()); 10 | }); 11 | }, 12 | |array| { 13 | // Validate that the results are sorted 14 | let mut count = 0; 15 | let mut prev = RustData::default(); 16 | for next in array.iter::() { 17 | let next = next.unwrap(); 18 | assert!(prev <= next); 19 | prev = next; 20 | count += 1; 21 | } 22 | assert_eq!(count, 10000); 23 | }, 24 | ) 25 | .unwrap(); 26 | } 27 | 28 | criterion_group! { 29 | name = benches; 30 | config = Criterion::default().sample_size(10); 31 | targets = benchmark, 32 | } 33 | 34 | criterion_main!(benches); 35 | -------------------------------------------------------------------------------- /benches/roto.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use script_bench::roto::RustData; 4 | 5 | fn benchmark(c: &mut Criterion) { 6 | script_bench::roto::sort_userdata( 7 | |func| { 8 | c.bench_function("Sort Rust objects", |b| b.iter(|| func())); 9 | }, 10 | |list| { 11 | // Validate that the results are sorted 12 | let mut count = 0; 13 | let mut prev = RustData::default(); 14 | let list = &list.0; 15 | let list = list.0.borrow(); 16 | list.iter().for_each(|next| { 17 | let next = &next.0; 18 | assert!(prev.0 <= next.0); 19 | prev = next.clone(); 20 | count += 1; 21 | }); 22 | 23 | assert_eq!(count, 10000); 24 | }, 25 | ) 26 | .unwrap(); 27 | } 28 | 29 | criterion_group! { 30 | name = benches; 31 | config = Criterion::default().sample_size(10); 32 | targets = benchmark 33 | } 34 | 35 | criterion_main!(benches); 36 | -------------------------------------------------------------------------------- /scripts/sort_userdata.lua: -------------------------------------------------------------------------------- 1 | local charset = { "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f" } 2 | local function generate_string(len) 3 | local data = table.create(len) 4 | for _ = 1, len do 5 | table.insert(data, charset[rand(#charset) + 1]) 6 | end 7 | return table.concat(data) 8 | end 9 | 10 | local function partition(arr, lo, hi) 11 | local pivot_idx = math.floor((lo + hi) / 2) 12 | local pivot = arr[pivot_idx] 13 | arr[pivot_idx], arr[hi] = arr[hi], arr[pivot_idx] 14 | local j = lo 15 | for i = lo, hi - 1 do 16 | if arr[i] < pivot then 17 | arr[i], arr[j] = arr[j], arr[i] 18 | j = j + 1 19 | end 20 | end 21 | arr[j], arr[hi] = arr[hi], arr[j] 22 | return j 23 | end 24 | 25 | local function quicksort(arr, lo, hi) 26 | while lo < hi do 27 | local p = partition(arr, lo, hi) 28 | quicksort(arr, lo, p - 1) 29 | -- Tail recursion 30 | lo = p + 1 31 | end 32 | end 33 | 34 | function bench() 35 | local array = {} 36 | for _ = 1, 10000 do 37 | table.insert(array, RustData.new(generate_string(8 + rand(16)))) 38 | end 39 | quicksort(array, 1, #array) 40 | return array 41 | end 42 | -------------------------------------------------------------------------------- /benches/mlua_luau.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use script_bench::mlua::RustData; 4 | 5 | fn benchmark(c: &mut Criterion) { 6 | script_bench::mlua::sort_userdata( 7 | |func| { 8 | // Benchmark the function 9 | c.bench_function("Sort Rust objects", |b| { 10 | b.iter(|| func()); 11 | }); 12 | }, 13 | |table| { 14 | // Validate that the results are sorted 15 | let mut count = 0; 16 | let mut prev = RustData::default(); 17 | table 18 | .for_each_value(|next: mlua::UserDataRef| { 19 | assert!(prev <= *next); 20 | prev = next.clone(); 21 | count += 1; 22 | Ok(()) 23 | }) 24 | .unwrap(); 25 | assert_eq!(count, 10000); 26 | }, 27 | ) 28 | .unwrap(); 29 | } 30 | 31 | criterion_group! { 32 | name = benches; 33 | config = Criterion::default().sample_size(10); 34 | targets = benchmark, 35 | } 36 | 37 | criterion_main!(benches); 38 | -------------------------------------------------------------------------------- /benches/mlua_lua54.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use script_bench::mlua::RustData; 4 | 5 | fn benchmark(c: &mut Criterion) { 6 | script_bench::mlua::sort_userdata( 7 | |func| { 8 | // Benchmark the function 9 | c.bench_function("Sort Rust objects", |b| { 10 | b.iter(|| func()); 11 | }); 12 | }, 13 | |table| { 14 | // Validate that the results are sorted 15 | let mut count = 0; 16 | let mut prev = RustData::default(); 17 | table 18 | .for_each_value(|next: mlua::UserDataRef| { 19 | assert!(prev <= *next); 20 | prev = next.clone(); 21 | count += 1; 22 | Ok(()) 23 | }) 24 | .unwrap(); 25 | assert_eq!(count, 10000); 26 | }, 27 | ) 28 | .unwrap(); 29 | } 30 | 31 | criterion_group! { 32 | name = benches; 33 | config = Criterion::default().sample_size(10); 34 | targets = benchmark, 35 | } 36 | 37 | criterion_main!(benches); 38 | -------------------------------------------------------------------------------- /scripts/sort_userdata.rhai: -------------------------------------------------------------------------------- 1 | let charset = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; 2 | let generate_string = |len| { 3 | let data = []; 4 | for i in 0..len { 5 | data.push(charset[rand(charset.len)]); 6 | } 7 | return concat(data); 8 | }; 9 | 10 | fn swap(i, j) { 11 | let t = this[i]; 12 | this[i] = this[j]; 13 | this[j] = t; 14 | } 15 | 16 | fn partition(lo, hi) { 17 | let pivot_idx = (lo + hi) / 2; 18 | let pivot = this[pivot_idx]; 19 | this.swap(pivot_idx, hi); 20 | let j = lo; 21 | for i in lo..hi { 22 | if this[i] < pivot { 23 | this.swap(i, j); 24 | j = j + 1; 25 | } 26 | } 27 | this.swap(j, hi); 28 | return j; 29 | } 30 | 31 | fn quicksort(lo, hi) { 32 | while lo < hi { 33 | let p = this.partition(lo, hi); 34 | this.quicksort(lo, p - 1); 35 | // Tail recursion 36 | lo = p + 1; 37 | } 38 | } 39 | 40 | let array = []; 41 | for i in 0..10000 { 42 | array.push(RustData_new(generate_string.call(8 + rand(16)))); 43 | } 44 | array.quicksort(0, array.len - 1); 45 | return array; 46 | -------------------------------------------------------------------------------- /scripts/sort_userdata.roto: -------------------------------------------------------------------------------- 1 | fn generate_string(len: i64, charset: String) -> String { 2 | let result = ""; 3 | let i = 0; 4 | while i < len { 5 | result = result.append(string_get(charset, rand(string_len(charset)))); 6 | i = i + 1; 7 | } 8 | 9 | result 10 | } 11 | 12 | fn partition(arr: List, lo: i64, hi: i64) -> i64 { 13 | let pivot_idx = (lo + hi) / 2; 14 | let pivot = arr.get(pivot_idx); 15 | arr.swap(pivot_idx, hi); 16 | let j = lo; 17 | while lo < hi { 18 | if arr.get(lo).lt(pivot) { 19 | arr.swap(lo, j); 20 | j = j + 1; 21 | } 22 | lo = lo + 1; 23 | } 24 | arr.swap(j, hi); 25 | return j; 26 | } 27 | 28 | fn quicksort(arr: List, lo: i64, hi: i64) { 29 | while lo < hi { 30 | let p = partition(arr, lo, hi); 31 | quicksort(arr, lo, p - 1); 32 | # Tail recursion 33 | lo = p + 1; 34 | } 35 | } 36 | 37 | fn bench() -> List { 38 | let charset = "0123456789abcdef"; 39 | 40 | let list = List.new(); 41 | let i = 0; 42 | while i < 10000 { 43 | list.push(RustData.new(generate_string(8 + rand(16), charset))); 44 | i = i + 1; 45 | } 46 | quicksort(list, 0, list.len() - 1); 47 | 48 | list 49 | } 50 | -------------------------------------------------------------------------------- /benches/boa.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use boa_engine::object::builtins::JsArray; 4 | use boa_engine::value::TryFromJs; 5 | use script_bench::boa::RustData; 6 | 7 | fn benchmark(c: &mut Criterion) { 8 | script_bench::boa::sort_userdata( 9 | |func| { 10 | c.bench_function("Sort Rust objects", |b| { 11 | b.iter(|| func()); 12 | }); 13 | }, 14 | |value, ctx| { 15 | // Validate that the results are sorted 16 | let array: JsArray = TryFromJs::try_from_js(&value, ctx).unwrap(); 17 | let len = array.length(ctx).unwrap(); 18 | assert_eq!(len, 10000); 19 | let mut prev = RustData::default(); 20 | for i in 0..len { 21 | let next = array.get(i, ctx).unwrap(); 22 | let next = next.as_object().unwrap(); 23 | let next = next.downcast_ref::().unwrap(); 24 | assert!(prev <= *next); 25 | prev = next.clone(); 26 | } 27 | }, 28 | ) 29 | .unwrap(); 30 | } 31 | 32 | criterion_group! { 33 | name = benches; 34 | config = Criterion::default().sample_size(10); 35 | targets = benchmark, 36 | } 37 | 38 | criterion_main!(benches); 39 | -------------------------------------------------------------------------------- /scripts/sort_userdata.js: -------------------------------------------------------------------------------- 1 | const charset = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "a", "b", "c", "d", "e", "f"]; 2 | function generate_string(len) { 3 | let data = new Array(len); 4 | for (let i = 0; i < len; i++) { 5 | data.push(charset[rand(charset.length)]); 6 | } 7 | return data.join(""); 8 | } 9 | 10 | function swap(arr, i, j) { 11 | const t = arr[i]; 12 | arr[i] = arr[j]; 13 | arr[j] = t; 14 | } 15 | 16 | function partition(arr, lo, hi) { 17 | let pivot_idx = Math.floor((lo + hi) / 2); 18 | let pivot = arr[pivot_idx]; 19 | swap(arr, pivot_idx, hi); 20 | let j = lo; 21 | for (let i = lo; i < hi; i++) { 22 | if (arr[i].lt(pivot)) { 23 | swap(arr, i, j); 24 | j++; 25 | } 26 | } 27 | swap(arr, j, hi); 28 | return j; 29 | } 30 | 31 | function quicksort(arr, lo, hi) { 32 | while (lo < hi) { 33 | let p = partition(arr, lo, hi); 34 | quicksort(arr, lo, p - 1); 35 | // Tail recursion 36 | lo = p + 1; 37 | } 38 | } 39 | 40 | function bench() { 41 | let array = []; 42 | for (let i = 0; i < 10000; i++) { 43 | array.push(new RustData(generate_string(8 + rand(16)))); 44 | } 45 | quicksort(array, 0, array.length - 1); 46 | return array; 47 | } 48 | -------------------------------------------------------------------------------- /src/rhai.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use itertools::Itertools; 4 | use rand::Rng; 5 | use rhai::{Array, Engine}; 6 | 7 | #[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] 8 | pub struct RustData(Rc); 9 | 10 | pub fn sort_userdata( 11 | run: impl FnOnce(&mut dyn FnMut()), 12 | validate: impl FnOnce(Array), 13 | ) -> anyhow::Result<()> { 14 | let mut engine = Engine::new(); 15 | engine.set_max_call_levels(1000); 16 | engine.set_max_expr_depths(0, 0); 17 | 18 | engine 19 | .register_type_with_name::("RustData") 20 | .register_fn("RustData_new", |s: &str| RustData(s.into())) 21 | .register_fn("to_string", |this: &mut RustData| this.0.to_string()) 22 | .register_fn("<", |l: &mut RustData, r: RustData| *l < r) 23 | .register_fn("rand", |n: i64| rand::rng().random_range(0..n)) 24 | .register_fn("concat", |items: Array| { 25 | items 26 | .into_iter() 27 | .map(|x| x.into_immutable_string().unwrap()) 28 | .join("") 29 | }); 30 | 31 | let ast = engine.compile(include_str!("../scripts/sort_userdata.rhai"))?; 32 | 33 | validate(engine.eval_ast::(&ast).unwrap()); 34 | run(&mut || { 35 | engine.eval_ast::(&ast).unwrap(); 36 | }); 37 | 38 | Ok(()) 39 | } 40 | -------------------------------------------------------------------------------- /benches/koto.rs: -------------------------------------------------------------------------------- 1 | use criterion::{criterion_group, criterion_main, Criterion}; 2 | 3 | use koto::runtime::KValue; 4 | use script_bench::koto::RustData; 5 | 6 | fn benchmark(c: &mut Criterion) { 7 | script_bench::koto::sort_userdata( 8 | |func| { 9 | c.bench_function("Sort Rust objects", |b| { 10 | b.iter(|| func()); 11 | }); 12 | }, 13 | |value| { 14 | // Validate that the results are sorted 15 | let KValue::List(list) = value else { 16 | panic!("Expected a list"); 17 | }; 18 | let mut count = 0; 19 | let mut prev = script_bench::koto::RustData::default(); 20 | for next in list.data().iter() { 21 | let KValue::Object(obj) = next else { 22 | panic!("Expected an object"); 23 | }; 24 | let next = obj.cast::().unwrap(); 25 | assert!(prev <= *next); 26 | prev = next.clone(); 27 | count += 1; 28 | } 29 | assert_eq!(count, 10000); 30 | }, 31 | ) 32 | .unwrap(); 33 | } 34 | 35 | criterion_group! { 36 | name = benches; 37 | config = Criterion::default().sample_size(10); 38 | targets = benchmark, 39 | } 40 | 41 | criterion_main!(benches); 42 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Rust scripting languages benchmark 2 | 3 | The project goal is to benchmark most popular embedded scripting languages for Rust. 4 | 5 | - [boa](https://boajs.dev) 6 | - [koto](https://crates.io/crates/koto) 7 | - [mlua](https://crates.io/crates/mlua) (Lua 5.4 and Luau) 8 | - [rhai](https://crates.io/crates/rhai) 9 | - [roto](https://crates.io/crates/roto) 10 | - [rquickjs](https://crates.io/crates/rquickjs) 11 | - [wasmi](https://crates.io/crates/wasmi) 12 | - [wasmtime](https://crates.io/crates/wasmtime) 13 | 14 | The benchmark is designed to cover not only the performance of code evaluation but interoperability with Rust too. 15 | 16 | ## Getting your own results 17 | 18 | Simply run the `bench.py` script to generate images. It requires `cargo criterion` and `python3-matplotlib` package installed. 19 | 20 | You also must have `wasm32-unknown-unknown` target installed for webassembly benchmarks. 21 | 22 | ## Environment 23 | 24 | | | | 25 | |----------|-------------------------------| 26 | | OS | MacOS 15.7 M3 Pro | 27 | | rustc | v1.90.0 | 28 | | boa | v0.21.0 | 29 | | koto | v0.16.0 | 30 | | mlua | v0.11.4 | 31 | | rhai | v1.23.4 | 32 | | roto | v0.9.0 | 33 | | rquickjs | v0.9.0 | 34 | | wasmi | v0.51.1 | 35 | | wasmtime | v38.0.2 | 36 | 37 | ## Results 38 | 39 | ![Sort Rust objects](Sort%20Rust%20objects.png) 40 | 41 | Rev 1761581592 42 | -------------------------------------------------------------------------------- /bench.py: -------------------------------------------------------------------------------- 1 | import json 2 | import glob 3 | import subprocess 4 | from os.path import splitext, basename 5 | import matplotlib.pyplot as plt 6 | 7 | 8 | def run_benchmark(name): 9 | print(f"Running benchmark for {name}") 10 | proc = subprocess.run( 11 | f"cargo criterion --bench {name} --message-format json --features {name}", 12 | shell=True, 13 | stdout=subprocess.PIPE, 14 | stderr=subprocess.DEVNULL, 15 | text=True, 16 | check=True, 17 | ) 18 | res = [] 19 | for line in proc.stdout.splitlines(): 20 | x = json.loads(line) 21 | if "id" in x: 22 | res.append(x) 23 | return res 24 | 25 | 26 | # Compile webassembly modules 27 | subprocess.run( 28 | "rustc --target wasm32-unknown-unknown -Cpanic=abort -O --crate-name sort_userdata scripts/sort_userdata.wasm.rs -o scripts/sort_userdata.wasm", 29 | shell=True, 30 | check=True, 31 | ) 32 | 33 | benches = dict() 34 | ids = set() 35 | for f in glob.glob("benches/*.rs"): 36 | name = splitext(basename(f))[0] 37 | benches[name] = dict() 38 | results = run_benchmark(name) 39 | for res in results: 40 | benches[name][res["id"]] = res 41 | ids.add(res["id"]) 42 | 43 | for id in ids: 44 | fig, ax = plt.subplots() 45 | 46 | ymax = 0 47 | for (name, bench) in sorted(benches.items(), key=lambda x: x[1][id]["typical"]["estimate"]): 48 | val = round(bench[id]["typical"]["estimate"] / 1000000, 2) 49 | rect = ax.bar(name, val, width=0.3) 50 | ax.bar_label(rect, padding=3) 51 | ymax = max(ymax, val) 52 | 53 | ax.set_title("lower is better") 54 | ax.set_ylabel("time (ms)", fontweight="bold") 55 | ax.set_ylim(0, ymax * 1.2) 56 | fig.autofmt_xdate() 57 | fig.suptitle(id, fontsize=18) 58 | fig.tight_layout() 59 | 60 | plt.savefig(f"{id}.png", dpi=300) 61 | -------------------------------------------------------------------------------- /src/mlua.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use mlua::{ 4 | Function, Lua, MetaMethod, Result, String as LuaString, Table, UserData, UserDataMethods, 5 | UserDataRef, 6 | }; 7 | use rand::Rng; 8 | 9 | #[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] 10 | pub struct RustData(Rc); 11 | 12 | impl UserData for RustData { 13 | fn add_methods>(methods: &mut M) { 14 | methods.add_function("new", |_, s: LuaString| Ok(RustData((*s.to_str()?).into()))); 15 | methods.add_meta_method(MetaMethod::Lt, |_, this, rhs: UserDataRef| { 16 | Ok(this < &rhs) 17 | }); 18 | methods.add_meta_method(MetaMethod::ToString, |_, this, ()| Ok(this.0.to_string())); 19 | } 20 | } 21 | 22 | pub fn sort_userdata( 23 | run: impl FnOnce(&mut dyn FnMut()), 24 | validate: impl FnOnce(Table), 25 | ) -> Result<()> { 26 | let lua = Lua::new(); 27 | 28 | let globals = lua.globals(); 29 | globals.set("RustData", lua.create_proxy::()?)?; 30 | globals.set( 31 | "rand", 32 | Function::wrap(|n: u32| Ok(rand::rng().random_range(0..n))), 33 | )?; 34 | 35 | #[cfg(feature = "mlua_luau")] 36 | { 37 | lua.sandbox(true)?; 38 | lua.set_compiler(mlua::Compiler::new().set_optimization_level(2)); 39 | } 40 | 41 | #[cfg(feature = "mlua_lua54")] 42 | { 43 | let table = lua.globals().get::("table")?; 44 | table.set( 45 | "create", 46 | lua.create_function(|lua, narr: usize| lua.create_table_with_capacity(narr, 0))?, 47 | )?; 48 | } 49 | 50 | lua.load(include_str!("../scripts/sort_userdata.lua")) 51 | .exec()?; 52 | 53 | let func = lua.globals().get::("bench")?; 54 | 55 | validate(func.call(())?); 56 | run(&mut || func.call::<()>(()).unwrap()); 57 | 58 | Ok(()) 59 | } 60 | -------------------------------------------------------------------------------- /src/koto.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use anyhow::{bail, Result}; 4 | use koto::{derive::*, prelude::*, runtime}; 5 | 6 | #[derive(Default, Debug, Clone, PartialEq, Eq, PartialOrd, Ord, KotoCopy, KotoType)] 7 | pub struct RustData(pub Rc); 8 | 9 | #[koto_impl] 10 | impl RustData { 11 | fn new_koto_object(s: &str) -> KObject { 12 | let me = Self(s.into()); 13 | KObject::from(me) 14 | } 15 | } 16 | 17 | impl KotoObject for RustData { 18 | fn display(&self, ctx: &mut DisplayContext) -> runtime::Result<()> { 19 | ctx.append(self.0.to_string()); 20 | Ok(()) 21 | } 22 | 23 | fn less(&self, rhs: &KValue) -> runtime::Result { 24 | if let KValue::Object(kobj) = rhs { 25 | let rhs_dc = kobj.cast::()?; 26 | Ok(*self < *rhs_dc) 27 | } else { 28 | unexpected_type("RustData object", rhs) 29 | } 30 | } 31 | } 32 | 33 | pub fn sort_userdata( 34 | run: impl FnOnce(&mut dyn FnMut()), 35 | validate: impl FnOnce(KValue), 36 | ) -> Result<()> { 37 | let mut engine = Koto::default(); 38 | let prelude = engine.prelude(); 39 | 40 | prelude.add_fn("RustData_new", |ctx| match ctx.args() { 41 | [KValue::Str(input)] => Ok(RustData::new_koto_object(input.as_str()).into()), 42 | unexpected => unexpected_args("a string", unexpected), 43 | }); 44 | 45 | prelude.add_fn("rand", |ctx| match ctx.args() { 46 | [KValue::Number(n)] => { 47 | let res = rand::random::() as i64 % i64::from(n); 48 | Ok(res.into()) 49 | } 50 | unexpected => unexpected_args("a number", unexpected), 51 | }); 52 | 53 | engine.compile_and_run(include_str!("../scripts/sort_userdata.koto"))?; 54 | let Some(bench) = engine.exports().get("bench") else { 55 | bail!("Missing bench function"); 56 | }; 57 | 58 | validate(engine.call_function(bench.clone(), &[]).unwrap()); 59 | run(&mut || { 60 | engine.call_function(bench.clone(), &[]).unwrap(); 61 | }); 62 | 63 | Ok(()) 64 | } 65 | -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "script-bench" 3 | version = "0.1.0" 4 | edition = "2021" 5 | authors = ["Aleksandr Orlenko "] 6 | 7 | [lib] 8 | name = "script_bench" 9 | 10 | [features] 11 | boa = ["dep:boa_engine", "dep:boa_gc", "dep:boa_runtime"] 12 | koto = ["dep:koto", "dep:anyhow"] 13 | mlua_lua54 = ["mlua/lua54", "mlua/vendored"] 14 | mlua_luau = ["mlua/luau-jit"] 15 | rhai = ["dep:rhai", "dep:itertools", "dep:anyhow"] 16 | roto = ["dep:roto", "dep:anyhow"] 17 | wasmi = ["dep:wasmi", "dep:anyhow"] 18 | wasmtime = ["dep:wasmtime", "dep:anyhow"] 19 | 20 | [dependencies] 21 | rand = "0.9" 22 | anyhow = { version = "1.0", optional = true } 23 | itertools = { version = "0.14", optional = true } 24 | boa_engine = { version = "0.21.0", optional = true } 25 | boa_gc = { version = "0.21.0", optional = true } 26 | boa_runtime = { version = "0.21.0", optional = true } 27 | koto = { version = "0.16.0", optional = true } 28 | mlua = { version = "0.11.4", optional = true } 29 | rhai = { version = "1.23.4", optional = true } 30 | roto = { version = "0.9.0", optional = true, default-features = false } 31 | rquickjs = { version = "0.9.0", optional = true } 32 | wasmi = { version = "0.51.1", optional = true } 33 | wasmtime = { version = "38.0.2", optional = true } 34 | 35 | [dev-dependencies] 36 | criterion = { version = "0.7" } 37 | 38 | [profile.bench] 39 | opt-level = 3 40 | lto = "fat" 41 | codegen-units = 1 42 | 43 | [[bench]] 44 | name = "boa" 45 | harness = false 46 | required-features = ["boa"] 47 | 48 | [[bench]] 49 | name = "koto" 50 | harness = false 51 | required-features = ["koto"] 52 | 53 | [[bench]] 54 | name = "mlua_lua54" 55 | harness = false 56 | required-features = ["mlua_lua54"] 57 | 58 | [[bench]] 59 | name = "mlua_luau" 60 | harness = false 61 | required-features = ["mlua_luau"] 62 | 63 | [[bench]] 64 | name = "rhai" 65 | harness = false 66 | required-features = ["rhai"] 67 | 68 | [[bench]] 69 | name = "roto" 70 | harness = false 71 | required-features = ["roto"] 72 | 73 | [[bench]] 74 | name = "rquickjs" 75 | harness = false 76 | required-features = ["rquickjs"] 77 | 78 | [[bench]] 79 | name = "wasmi" 80 | harness = false 81 | required-features = ["wasmi"] 82 | 83 | [[bench]] 84 | name = "wasmtime" 85 | harness = false 86 | required-features = ["wasmtime"] 87 | -------------------------------------------------------------------------------- /src/roto.rs: -------------------------------------------------------------------------------- 1 | use std::{cell::RefCell, rc::Rc, sync::Arc}; 2 | 3 | use rand::Rng; 4 | use roto::{library, Runtime, Val}; 5 | 6 | #[derive(Clone, Default)] 7 | pub struct RustData(pub Arc); 8 | 9 | #[derive(Clone)] 10 | pub struct List(pub Rc>>>); 11 | 12 | pub fn sort_userdata( 13 | run: impl FnOnce(&mut dyn FnMut()), 14 | validate: impl FnOnce(Val), 15 | ) -> anyhow::Result<()> { 16 | let lib = library! { 17 | fn rand(n: i64) -> i64 { 18 | rand::rng().random_range(0..n) 19 | } 20 | 21 | fn string_get(charset: Arc, idx: i64) -> Arc { 22 | charset[idx as usize..idx as usize + 1].into() 23 | } 24 | 25 | fn string_len(s: Arc) -> i64 { 26 | s.len() as i64 27 | } 28 | 29 | #[clone] type RustData = Val; 30 | 31 | impl Val { 32 | fn new(s: Arc) -> Val { 33 | Val(RustData(s)) 34 | } 35 | 36 | fn lt(this: Val, rhs: Val) -> bool { 37 | this.0.0 < rhs.0.0 38 | } 39 | } 40 | 41 | #[clone] type List = Val; 42 | 43 | impl Val { 44 | fn new() -> Val { 45 | Val(List(Rc::new(RefCell::new(Vec::new())))) 46 | } 47 | 48 | fn push(this: Val, rd: Val) { 49 | this.0.0.borrow_mut().push(rd); 50 | } 51 | 52 | fn get(this: Val, idx: i64) -> Val { 53 | this.0.0.borrow().get(idx as usize).cloned().expect("get valid list idx") 54 | } 55 | 56 | fn len(this: Val) -> i64 { 57 | this.0.0.borrow().len() as i64 58 | } 59 | 60 | fn swap(self, i: i64, j: i64) { 61 | self.0.0.borrow_mut().swap(i as usize, j as usize) 62 | } 63 | } 64 | }; 65 | 66 | let runtime = Runtime::from_lib(lib)?; 67 | let mut compiled = runtime.compile("scripts/sort_userdata.roto")?; 68 | 69 | let func = compiled.get_function::<(), fn() -> Val>("bench")?; 70 | 71 | validate(func.call(&mut ())); 72 | run(&mut || { 73 | func.call(&mut ()); 74 | }); 75 | 76 | Ok(()) 77 | } 78 | -------------------------------------------------------------------------------- /scripts/sort_userdata.wasm.rs: -------------------------------------------------------------------------------- 1 | #![cfg(target_arch = "wasm32")] 2 | #![no_main] 3 | 4 | use std::cell::RefCell; 5 | 6 | #[link(wasm_import_module = "RustData")] 7 | unsafe extern "C" { 8 | safe fn rustdata_new(ptr: u32, len: u32) -> u32; 9 | safe fn rustdata_delete(id: u32) -> (); 10 | safe fn rustdata_lt(this: u32, other: u32) -> u32; 11 | safe fn rand(limit: u32) -> u32; 12 | } 13 | 14 | struct RustData(u32); 15 | 16 | impl RustData { 17 | fn new(s: &str) -> Self { 18 | RustData(rustdata_new(s.as_ptr() as u32, s.len() as u32)) 19 | } 20 | 21 | fn lt(&self, other: &Self) -> bool { 22 | rustdata_lt(self.0, other.0) != 0 23 | } 24 | } 25 | 26 | impl Drop for RustData { 27 | fn drop(&mut self) { 28 | rustdata_delete(self.0); 29 | } 30 | } 31 | 32 | static CHARSET: &[u8] = b"0123456789abcdef"; 33 | 34 | fn generate_string(len: usize) -> String { 35 | (0..len) 36 | .map(|_| CHARSET[rand(CHARSET.len() as u32) as usize] as char) 37 | .collect() 38 | } 39 | 40 | fn partition(arr: &mut [RustData]) -> usize { 41 | let (lo, hi) = (0, arr.len() - 1); 42 | let pivot_idx = (lo + hi) / 2; 43 | arr.swap(pivot_idx, hi); 44 | let Some((pivot, arr)) = arr.split_last_mut() else { 45 | return 0; 46 | }; 47 | let mut j = lo; 48 | for i in lo..hi { 49 | if arr[i].lt(pivot) { 50 | arr.swap(i, j); 51 | j += 1; 52 | } 53 | } 54 | if let Some(arr_j) = arr.get_mut(j) { 55 | std::mem::swap(arr_j, pivot); 56 | } 57 | j 58 | } 59 | 60 | fn quicksort(mut arr: &mut [RustData]) { 61 | while !arr.is_empty() { 62 | let p = partition(arr); 63 | quicksort(&mut arr[..p]); 64 | // Tail recursion 65 | arr = &mut arr[p + 1..]; 66 | } 67 | } 68 | 69 | // Global storage to get access the sorted array 70 | thread_local! { 71 | static SORTED_ARRAY: RefCell> = RefCell::new(Vec::new()); 72 | } 73 | 74 | #[no_mangle] 75 | pub fn bench(store: u32) -> u32 { 76 | let length = 10_000; 77 | let mut array = (0..length) 78 | .map(|_| RustData::new(&generate_string(rand(16) as usize + 8))) 79 | .collect::>(); 80 | quicksort(&mut array); 81 | 82 | if store != 0 { 83 | SORTED_ARRAY.with(|arr| { 84 | *arr.borrow_mut() = array; 85 | }); 86 | } 87 | length as u32 88 | } 89 | 90 | // Get the ID at specific index in the sorted array 91 | // Used only at validation step 92 | #[no_mangle] 93 | pub fn get_id(index: u32) -> u32 { 94 | SORTED_ARRAY.with(|cell| cell.borrow()[index as usize].0) 95 | } 96 | -------------------------------------------------------------------------------- /src/rquickjs.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use rand::Rng; 4 | use rquickjs::class::{Class, JsClass, Readable, Trace, Tracer}; 5 | use rquickjs::function::{Constructor, This}; 6 | use rquickjs::{ 7 | Array, Context, Ctx, FromJs, Function, IntoJs, JsLifetime, Object, Result, Runtime, Value, 8 | }; 9 | 10 | #[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord)] 11 | pub struct RustData(Rc); 12 | 13 | impl<'js> Trace<'js> for RustData { 14 | fn trace<'a>(&self, _tracer: Tracer<'a, 'js>) {} 15 | } 16 | 17 | impl<'js> FromJs<'js> for RustData { 18 | fn from_js(_: &Ctx<'js>, value: Value<'js>) -> Result { 19 | Ok(Class::::from_value(&value)?.try_borrow()?.clone()) 20 | } 21 | } 22 | 23 | impl<'js> IntoJs<'js> for RustData { 24 | fn into_js(self, ctx: &Ctx<'js>) -> Result> { 25 | Class::instance(ctx.clone(), self).into_js(ctx) 26 | } 27 | } 28 | 29 | unsafe impl<'js> JsLifetime<'js> for RustData { 30 | type Changed<'to> = RustData; 31 | } 32 | 33 | impl<'js> JsClass<'js> for RustData { 34 | const NAME: &'static str = "RustData"; 35 | 36 | type Mutable = Readable; 37 | 38 | fn prototype(ctx: &Ctx<'js>) -> Result>> { 39 | let proto = Object::new(ctx.clone())?; 40 | 41 | let to_string = Function::new(ctx.clone(), |this: This| this.0 .0.to_string())? 42 | .with_name("toString")?; 43 | proto.prop("toString", to_string)?; 44 | 45 | let lt = Function::new(ctx.clone(), |this: This, other: Self| this.0 < other)? 46 | .with_name("lt")?; 47 | proto.prop("lt", lt)?; 48 | 49 | Ok(Some(proto)) 50 | } 51 | 52 | fn constructor(ctx: &Ctx<'js>) -> Result>> { 53 | Ok(Some(Constructor::new_class::( 54 | ctx.clone(), 55 | |s: String| RustData(s.into()), 56 | )?)) 57 | } 58 | } 59 | 60 | pub fn sort_userdata( 61 | run: impl FnOnce(&mut dyn FnMut()), 62 | validate: impl FnOnce(Array), 63 | ) -> Result<()> { 64 | let rt = Runtime::new()?; 65 | let context = Context::full(&rt)?; 66 | 67 | context.with(|ctx| { 68 | let globals = ctx.globals(); 69 | 70 | let rand = Function::new(ctx.clone(), |n: u32| rand::rng().random_range(0..n))? 71 | .with_name("rand")?; 72 | globals.set("rand", rand).unwrap(); 73 | 74 | Class::::define(&globals)?; 75 | 76 | ctx.eval::<(), _>(include_str!("../scripts/sort_userdata.js"))?; 77 | 78 | let func = globals.get::<_, Function>("bench")?; 79 | 80 | validate(func.call::<_, Array>(())?); 81 | run(&mut || func.call::<_, ()>(()).unwrap()); 82 | 83 | Ok(()) 84 | }) 85 | } 86 | -------------------------------------------------------------------------------- /src/boa.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use boa_engine::class::{Class, ClassBuilder}; 4 | use boa_engine::property::Attribute; 5 | use boa_engine::{ 6 | js_string, Context, Finalize, JsData, JsResult, JsString, JsValue, NativeFunction, Source, 7 | Trace, 8 | }; 9 | use boa_runtime::Console; 10 | use rand::Rng; 11 | 12 | #[derive(Default, Clone, PartialEq, Eq, PartialOrd, Ord, Trace, Finalize, JsData)] 13 | pub struct RustData(Rc); 14 | 15 | impl Class for RustData { 16 | const NAME: &'static str = "RustData"; 17 | const LENGTH: usize = 1; 18 | 19 | fn data_constructor( 20 | _new_target: &JsValue, 21 | args: &[JsValue], 22 | context: &mut Context, 23 | ) -> JsResult { 24 | let kind = args[0].to_string(context)?; 25 | let s = kind.to_std_string().unwrap(); 26 | Ok(RustData(s.into())) 27 | } 28 | 29 | fn init(class: &mut ClassBuilder) -> JsResult<()> { 30 | class.method( 31 | js_string!("toString"), 32 | 0, 33 | NativeFunction::from_fn_ptr(|this, _args, _ctx| { 34 | let this = this.as_object().unwrap(); 35 | let this = this.downcast_ref::().unwrap(); 36 | Ok(JsString::from(&*this.0).into()) 37 | }), 38 | ); 39 | 40 | class.method( 41 | js_string!("lt"), 42 | 1, 43 | NativeFunction::from_fn_ptr(|this, args, _ctx| { 44 | let this = this.as_object().unwrap(); 45 | let this = this.downcast_ref::().unwrap(); 46 | let other = args[0].as_object().unwrap(); 47 | let other = other.downcast_ref::().unwrap(); 48 | Ok((*this < *other).into()) 49 | }), 50 | ); 51 | 52 | Ok(()) 53 | } 54 | } 55 | 56 | pub fn sort_userdata( 57 | run: impl FnOnce(&mut dyn FnMut()), 58 | validate: impl FnOnce(JsValue, &mut Context), 59 | ) -> JsResult<()> { 60 | let mut context = Context::default(); 61 | 62 | let console = Console::init(&mut context); 63 | context.register_global_property(js_string!(Console::NAME), console, Attribute::all())?; 64 | 65 | context.register_global_class::()?; 66 | context.register_global_builtin_callable( 67 | js_string!("rand"), 68 | 1, 69 | NativeFunction::from_fn_ptr(|_this, args, ctx| { 70 | let n = args[0].to_u32(ctx)?; 71 | Ok(rand::rng().random_range(0..n).into()) 72 | }), 73 | )?; 74 | 75 | let source = Source::from_bytes(include_str!("../scripts/sort_userdata.js")); 76 | context.eval(source)?; 77 | 78 | let globals = context.global_object(); 79 | let bench_val = globals.get(js_string!("bench"), &mut context)?; 80 | let bench_fn = bench_val.as_callable().unwrap(); 81 | 82 | validate(bench_fn.call(&bench_val, &[], &mut context)?, &mut context); 83 | run(&mut || { 84 | bench_fn.call(&bench_val, &[], &mut context).unwrap(); 85 | }); 86 | 87 | Ok(()) 88 | } 89 | -------------------------------------------------------------------------------- /src/wasm.rs: -------------------------------------------------------------------------------- 1 | use std::rc::Rc; 2 | 3 | use rand::Rng; 4 | #[cfg(feature = "wasmi")] 5 | use wasmi::*; 6 | #[cfg(feature = "wasmtime")] 7 | use wasmtime::*; 8 | 9 | #[derive(Clone, PartialEq, Eq, PartialOrd, Ord)] 10 | pub struct RustData(Rc); 11 | 12 | #[derive(Default)] 13 | struct HostState { 14 | store: Vec, 15 | free: Option, 16 | memory: Option, 17 | } 18 | 19 | enum Entry { 20 | Free { next: Option }, 21 | Occupied { rd: RustData }, 22 | } 23 | 24 | impl HostState { 25 | fn alloc(&mut self, rd: RustData) -> u32 { 26 | if let Some(id) = self.free { 27 | let entry = &mut self.store[id as usize]; 28 | let Entry::Free { next } = entry else { 29 | panic!("corruption"); 30 | }; 31 | self.free = *next; 32 | *entry = Entry::Occupied { rd }; 33 | return id; 34 | } 35 | self.store.push(Entry::Occupied { rd }); 36 | self.store.len() as u32 - 1 37 | } 38 | 39 | fn get(&self, id: u32) -> &RustData { 40 | match &self.store[id as usize] { 41 | Entry::Free { .. } => panic!("use after free"), 42 | Entry::Occupied { rd } => rd, 43 | } 44 | } 45 | 46 | fn dealloc(&mut self, id: u32) { 47 | let entry = &mut self.store[id as usize]; 48 | let Entry::Occupied { .. } = entry else { 49 | panic!("double free"); 50 | }; 51 | *entry = Entry::Free { next: self.free }; 52 | self.free = Some(id); 53 | } 54 | } 55 | 56 | pub fn sort_userdata( 57 | run: impl FnOnce(&mut dyn FnMut()), 58 | validate: impl FnOnce(Vec), 59 | ) -> anyhow::Result<()> { 60 | let engine = Engine::default(); 61 | let wasm = include_bytes!("../scripts/sort_userdata.wasm"); 62 | let module = Module::new(&engine, wasm)?; 63 | 64 | let mut store = Store::new(&engine, Default::default()); 65 | let rustdata_new = Func::wrap( 66 | &mut store, 67 | |mut caller: Caller<'_, HostState>, off: u32, len: u32| -> u32 { 68 | let buffer = 69 | &caller.data().memory.unwrap().data(&mut caller)[off as usize..][..len as usize]; 70 | let rd = RustData(std::str::from_utf8(buffer).unwrap().into()); 71 | caller.data_mut().alloc(rd) 72 | }, 73 | ); 74 | let rustdata_delete = Func::wrap( 75 | &mut store, 76 | |mut caller: Caller<'_, HostState>, id: u32| -> () { 77 | caller.data_mut().dealloc(id); 78 | }, 79 | ); 80 | let rustdata_lt = Func::wrap( 81 | &mut store, 82 | |caller: Caller<'_, HostState>, i: u32, j: u32| -> u32 { 83 | let data = caller.data(); 84 | (data.get(i) < data.get(j)) as u32 85 | }, 86 | ); 87 | 88 | let mut linker = >::new(&engine); 89 | linker.func_wrap("RustData", "rand", |n: u32| rand::rng().random_range(0..n))?; 90 | #[cfg(feature = "wasmtime")] 91 | { 92 | linker 93 | .define(&store, "RustData", "rustdata_new", rustdata_new)? 94 | .define(&store, "RustData", "rustdata_delete", rustdata_delete)? 95 | .define(&store, "RustData", "rustdata_lt", rustdata_lt)?; 96 | } 97 | #[cfg(feature = "wasmi")] 98 | { 99 | linker 100 | .define("RustData", "rustdata_new", rustdata_new)? 101 | .define("RustData", "rustdata_delete", rustdata_delete)? 102 | .define("RustData", "rustdata_lt", rustdata_lt)?; 103 | } 104 | 105 | let instance = linker.instantiate(&mut store, &module)?; 106 | #[cfg(feature = "wasmi")] 107 | let instance = instance.start(&mut store)?; 108 | store.data_mut().memory = instance.get_memory(&mut store, "memory"); 109 | let bench = instance.get_typed_func::(&mut store, "bench")?; 110 | let get_id = instance.get_typed_func::(&mut store, "get_id")?; 111 | 112 | // Run the benchmark once to get the result for validation 113 | let length = bench.call(&mut store, 1)?; 114 | let result = (0..length) 115 | .map(|i| { 116 | let id = get_id.call(&mut store, i)?; 117 | Ok(store.data().get(id).clone()) 118 | }) 119 | .collect::, Error>>()?; 120 | validate(result); 121 | 122 | run(&mut || { 123 | bench.call(&mut store, 0).unwrap(); 124 | }); 125 | 126 | Ok(()) 127 | } 128 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 4 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.25.1" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" 10 | dependencies = [ 11 | "gimli 0.32.3", 12 | ] 13 | 14 | [[package]] 15 | name = "ahash" 16 | version = "0.8.12" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "5a15f179cd60c4584b8a8c596927aadc462e27f2ca70c04e0071964a73ba7a75" 19 | dependencies = [ 20 | "cfg-if", 21 | "const-random", 22 | "getrandom 0.3.4", 23 | "once_cell", 24 | "version_check", 25 | "zerocopy", 26 | ] 27 | 28 | [[package]] 29 | name = "aho-corasick" 30 | version = "1.1.3" 31 | source = "registry+https://github.com/rust-lang/crates.io-index" 32 | checksum = "8e60d3430d3a69478ad0993f19238d2df97c507009a52b3c10addcd7f6bcb916" 33 | dependencies = [ 34 | "memchr", 35 | ] 36 | 37 | [[package]] 38 | name = "aligned-vec" 39 | version = "0.6.4" 40 | source = "registry+https://github.com/rust-lang/crates.io-index" 41 | checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" 42 | dependencies = [ 43 | "equator", 44 | ] 45 | 46 | [[package]] 47 | name = "allocator-api2" 48 | version = "0.2.21" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "683d7910e743518b0e34f1186f92494becacb047c7b6bf616c96772180fef923" 51 | 52 | [[package]] 53 | name = "android_system_properties" 54 | version = "0.1.5" 55 | source = "registry+https://github.com/rust-lang/crates.io-index" 56 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 57 | dependencies = [ 58 | "libc", 59 | ] 60 | 61 | [[package]] 62 | name = "anes" 63 | version = "0.1.6" 64 | source = "registry+https://github.com/rust-lang/crates.io-index" 65 | checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" 66 | 67 | [[package]] 68 | name = "anstyle" 69 | version = "1.0.13" 70 | source = "registry+https://github.com/rust-lang/crates.io-index" 71 | checksum = "5192cca8006f1fd4f7237516f40fa183bb07f8fbdfedaa0036de5ea9b0b45e78" 72 | 73 | [[package]] 74 | name = "anyhow" 75 | version = "1.0.100" 76 | source = "registry+https://github.com/rust-lang/crates.io-index" 77 | checksum = "a23eb6b1614318a8071c9b2521f36b424b2c83db5eb3a0fead4a6c0809af6e61" 78 | 79 | [[package]] 80 | name = "arbitrary" 81 | version = "1.4.2" 82 | source = "registry+https://github.com/rust-lang/crates.io-index" 83 | checksum = "c3d036a3c4ab069c7b410a2ce876bd74808d2d0888a82667669f8e783a898bf1" 84 | 85 | [[package]] 86 | name = "ariadne" 87 | version = "0.5.1" 88 | source = "registry+https://github.com/rust-lang/crates.io-index" 89 | checksum = "36f5e3dca4e09a6f340a61a0e9c7b61e030c69fc27bf29d73218f7e5e3b7638f" 90 | dependencies = [ 91 | "unicode-width 0.1.14", 92 | "yansi", 93 | ] 94 | 95 | [[package]] 96 | name = "arrayvec" 97 | version = "0.7.6" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" 100 | 101 | [[package]] 102 | name = "async-trait" 103 | version = "0.1.89" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "9035ad2d096bed7955a320ee7e2230574d28fd3c3a0f186cbea1ff3c7eed5dbb" 106 | dependencies = [ 107 | "proc-macro2", 108 | "quote", 109 | "syn", 110 | ] 111 | 112 | [[package]] 113 | name = "autocfg" 114 | version = "1.5.0" 115 | source = "registry+https://github.com/rust-lang/crates.io-index" 116 | checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" 117 | 118 | [[package]] 119 | name = "base64" 120 | version = "0.22.1" 121 | source = "registry+https://github.com/rust-lang/crates.io-index" 122 | checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6" 123 | 124 | [[package]] 125 | name = "bitflags" 126 | version = "1.3.2" 127 | source = "registry+https://github.com/rust-lang/crates.io-index" 128 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 129 | 130 | [[package]] 131 | name = "bitflags" 132 | version = "2.10.0" 133 | source = "registry+https://github.com/rust-lang/crates.io-index" 134 | checksum = "812e12b5285cc515a9c72a5c1d3b6d46a19dac5acfef5265968c166106e31dd3" 135 | 136 | [[package]] 137 | name = "block-buffer" 138 | version = "0.10.4" 139 | source = "registry+https://github.com/rust-lang/crates.io-index" 140 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 141 | dependencies = [ 142 | "generic-array", 143 | ] 144 | 145 | [[package]] 146 | name = "boa_ast" 147 | version = "0.21.0" 148 | source = "registry+https://github.com/rust-lang/crates.io-index" 149 | checksum = "bc119a5ad34c3f459062a96907f53358989b173d104258891bb74f95d93747e8" 150 | dependencies = [ 151 | "bitflags 2.10.0", 152 | "boa_interner", 153 | "boa_macros", 154 | "boa_string", 155 | "indexmap", 156 | "num-bigint", 157 | "rustc-hash", 158 | ] 159 | 160 | [[package]] 161 | name = "boa_engine" 162 | version = "0.21.0" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "e637ec52ea66d76b0ca86180c259d6c7bb6e6a6e14b2f36b85099306d8b00cc3" 165 | dependencies = [ 166 | "aligned-vec", 167 | "arrayvec", 168 | "bitflags 2.10.0", 169 | "boa_ast", 170 | "boa_gc", 171 | "boa_interner", 172 | "boa_macros", 173 | "boa_parser", 174 | "boa_string", 175 | "bytemuck", 176 | "cfg-if", 177 | "cow-utils", 178 | "dashmap", 179 | "dynify", 180 | "either", 181 | "fast-float2", 182 | "float16", 183 | "futures-channel", 184 | "futures-concurrency", 185 | "futures-lite", 186 | "hashbrown 0.16.0", 187 | "icu_normalizer", 188 | "indexmap", 189 | "intrusive-collections", 190 | "itertools 0.14.0", 191 | "num-bigint", 192 | "num-integer", 193 | "num-traits", 194 | "num_enum", 195 | "paste", 196 | "portable-atomic", 197 | "rand", 198 | "regress", 199 | "rustc-hash", 200 | "ryu-js", 201 | "serde", 202 | "serde_json", 203 | "small_btree", 204 | "static_assertions", 205 | "tag_ptr", 206 | "tap", 207 | "thin-vec", 208 | "thiserror 2.0.17", 209 | "time", 210 | "xsum", 211 | ] 212 | 213 | [[package]] 214 | name = "boa_gc" 215 | version = "0.21.0" 216 | source = "registry+https://github.com/rust-lang/crates.io-index" 217 | checksum = "f1179f690cbfcbe5364cceee5f1cb577265bb6f07b0be6f210aabe270adcf9da" 218 | dependencies = [ 219 | "boa_macros", 220 | "boa_string", 221 | "either", 222 | "hashbrown 0.16.0", 223 | "thin-vec", 224 | ] 225 | 226 | [[package]] 227 | name = "boa_interner" 228 | version = "0.21.0" 229 | source = "registry+https://github.com/rust-lang/crates.io-index" 230 | checksum = "9626505d33dc63d349662437297df1d3afd9d5fc4a2b3ad34e5e1ce879a78848" 231 | dependencies = [ 232 | "boa_gc", 233 | "boa_macros", 234 | "hashbrown 0.16.0", 235 | "indexmap", 236 | "once_cell", 237 | "phf", 238 | "rustc-hash", 239 | "static_assertions", 240 | ] 241 | 242 | [[package]] 243 | name = "boa_macros" 244 | version = "0.21.0" 245 | source = "registry+https://github.com/rust-lang/crates.io-index" 246 | checksum = "7f36418a46544b152632c141b0a0b7a453cd69ca150caeef83aee9e2f4b48b7d" 247 | dependencies = [ 248 | "cfg-if", 249 | "cow-utils", 250 | "proc-macro2", 251 | "quote", 252 | "syn", 253 | "synstructure", 254 | ] 255 | 256 | [[package]] 257 | name = "boa_parser" 258 | version = "0.21.0" 259 | source = "registry+https://github.com/rust-lang/crates.io-index" 260 | checksum = "02f99bf5b684f0de946378fcfe5f38c3a0fbd51cbf83a0f39ff773a0e218541f" 261 | dependencies = [ 262 | "bitflags 2.10.0", 263 | "boa_ast", 264 | "boa_interner", 265 | "boa_macros", 266 | "fast-float2", 267 | "icu_properties", 268 | "num-bigint", 269 | "num-traits", 270 | "regress", 271 | "rustc-hash", 272 | ] 273 | 274 | [[package]] 275 | name = "boa_runtime" 276 | version = "0.21.0" 277 | source = "registry+https://github.com/rust-lang/crates.io-index" 278 | checksum = "f8ee83c5e3634de25fe80c785c4a240483daedf9e346a9848ec87f7a13250471" 279 | dependencies = [ 280 | "boa_engine", 281 | "boa_gc", 282 | "bytemuck", 283 | "either", 284 | "futures", 285 | "futures-lite", 286 | "http", 287 | "rustc-hash", 288 | "serde_json", 289 | "url", 290 | ] 291 | 292 | [[package]] 293 | name = "boa_string" 294 | version = "0.21.0" 295 | source = "registry+https://github.com/rust-lang/crates.io-index" 296 | checksum = "45ce9d7aa5563a2e14eab111e2ae1a06a69a812f6c0c3d843196c9d03fbef440" 297 | dependencies = [ 298 | "fast-float2", 299 | "itoa", 300 | "paste", 301 | "rustc-hash", 302 | "ryu-js", 303 | "static_assertions", 304 | ] 305 | 306 | [[package]] 307 | name = "bstr" 308 | version = "1.12.0" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | checksum = "234113d19d0d7d613b40e86fb654acf958910802bcceab913a4f9e7cda03b1a4" 311 | dependencies = [ 312 | "memchr", 313 | "serde", 314 | ] 315 | 316 | [[package]] 317 | name = "bumpalo" 318 | version = "3.19.0" 319 | source = "registry+https://github.com/rust-lang/crates.io-index" 320 | checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" 321 | dependencies = [ 322 | "allocator-api2", 323 | ] 324 | 325 | [[package]] 326 | name = "bytemuck" 327 | version = "1.24.0" 328 | source = "registry+https://github.com/rust-lang/crates.io-index" 329 | checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" 330 | dependencies = [ 331 | "bytemuck_derive", 332 | ] 333 | 334 | [[package]] 335 | name = "bytemuck_derive" 336 | version = "1.10.2" 337 | source = "registry+https://github.com/rust-lang/crates.io-index" 338 | checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" 339 | dependencies = [ 340 | "proc-macro2", 341 | "quote", 342 | "syn", 343 | ] 344 | 345 | [[package]] 346 | name = "bytes" 347 | version = "1.10.1" 348 | source = "registry+https://github.com/rust-lang/crates.io-index" 349 | checksum = "d71b6127be86fdcfddb610f7182ac57211d4b18a3e9c82eb2d17662f2227ad6a" 350 | 351 | [[package]] 352 | name = "cast" 353 | version = "0.3.0" 354 | source = "registry+https://github.com/rust-lang/crates.io-index" 355 | checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" 356 | 357 | [[package]] 358 | name = "cc" 359 | version = "1.2.41" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "ac9fe6cdbb24b6ade63616c0a0688e45bb56732262c158df3c0c4bea4ca47cb7" 362 | dependencies = [ 363 | "find-msvc-tools", 364 | "jobserver", 365 | "libc", 366 | "shlex", 367 | ] 368 | 369 | [[package]] 370 | name = "cfg-if" 371 | version = "1.0.4" 372 | source = "registry+https://github.com/rust-lang/crates.io-index" 373 | checksum = "9330f8b2ff13f34540b44e946ef35111825727b38d33286ef986142615121801" 374 | 375 | [[package]] 376 | name = "chrono" 377 | version = "0.4.42" 378 | source = "registry+https://github.com/rust-lang/crates.io-index" 379 | checksum = "145052bdd345b87320e369255277e3fb5152762ad123a901ef5c262dd38fe8d2" 380 | dependencies = [ 381 | "iana-time-zone", 382 | "js-sys", 383 | "num-traits", 384 | "wasm-bindgen", 385 | "windows-link 0.2.1", 386 | ] 387 | 388 | [[package]] 389 | name = "ciborium" 390 | version = "0.2.2" 391 | source = "registry+https://github.com/rust-lang/crates.io-index" 392 | checksum = "42e69ffd6f0917f5c029256a24d0161db17cea3997d185db0d35926308770f0e" 393 | dependencies = [ 394 | "ciborium-io", 395 | "ciborium-ll", 396 | "serde", 397 | ] 398 | 399 | [[package]] 400 | name = "ciborium-io" 401 | version = "0.2.2" 402 | source = "registry+https://github.com/rust-lang/crates.io-index" 403 | checksum = "05afea1e0a06c9be33d539b876f1ce3692f4afea2cb41f740e7743225ed1c757" 404 | 405 | [[package]] 406 | name = "ciborium-ll" 407 | version = "0.2.2" 408 | source = "registry+https://github.com/rust-lang/crates.io-index" 409 | checksum = "57663b653d948a338bfb3eeba9bb2fd5fcfaecb9e199e87e1eda4d9e8b240fd9" 410 | dependencies = [ 411 | "ciborium-io", 412 | "half", 413 | ] 414 | 415 | [[package]] 416 | name = "circular-buffer" 417 | version = "1.2.0" 418 | source = "registry+https://github.com/rust-lang/crates.io-index" 419 | checksum = "14c638459986b83c2b885179bd4ea6a2cbb05697b001501a56adb3a3d230803b" 420 | 421 | [[package]] 422 | name = "clap" 423 | version = "4.5.50" 424 | source = "registry+https://github.com/rust-lang/crates.io-index" 425 | checksum = "0c2cfd7bf8a6017ddaa4e32ffe7403d547790db06bd171c1c53926faab501623" 426 | dependencies = [ 427 | "clap_builder", 428 | ] 429 | 430 | [[package]] 431 | name = "clap_builder" 432 | version = "4.5.50" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | checksum = "0a4c05b9e80c5ccd3a7ef080ad7b6ba7d6fc00a985b8b157197075677c82c7a0" 435 | dependencies = [ 436 | "anstyle", 437 | "clap_lex", 438 | ] 439 | 440 | [[package]] 441 | name = "clap_lex" 442 | version = "0.7.6" 443 | source = "registry+https://github.com/rust-lang/crates.io-index" 444 | checksum = "a1d728cc89cf3aee9ff92b05e62b19ee65a02b5702cff7d5a377e32c6ae29d8d" 445 | 446 | [[package]] 447 | name = "cobs" 448 | version = "0.3.0" 449 | source = "registry+https://github.com/rust-lang/crates.io-index" 450 | checksum = "0fa961b519f0b462e3a3b4a34b64d119eeaca1d59af726fe450bbba07a9fc0a1" 451 | dependencies = [ 452 | "thiserror 2.0.17", 453 | ] 454 | 455 | [[package]] 456 | name = "const-random" 457 | version = "0.1.18" 458 | source = "registry+https://github.com/rust-lang/crates.io-index" 459 | checksum = "87e00182fe74b066627d63b85fd550ac2998d4b0bd86bfed477a0ae4c7c71359" 460 | dependencies = [ 461 | "const-random-macro", 462 | ] 463 | 464 | [[package]] 465 | name = "const-random-macro" 466 | version = "0.1.16" 467 | source = "registry+https://github.com/rust-lang/crates.io-index" 468 | checksum = "f9d839f2a20b0aee515dc581a6172f2321f96cab76c1a38a4c584a194955390e" 469 | dependencies = [ 470 | "getrandom 0.2.16", 471 | "once_cell", 472 | "tiny-keccak", 473 | ] 474 | 475 | [[package]] 476 | name = "cordyceps" 477 | version = "0.3.4" 478 | source = "registry+https://github.com/rust-lang/crates.io-index" 479 | checksum = "688d7fbb8092b8de775ef2536f36c8c31f2bc4006ece2e8d8ad2d17d00ce0a2a" 480 | dependencies = [ 481 | "loom", 482 | "tracing", 483 | ] 484 | 485 | [[package]] 486 | name = "core-foundation-sys" 487 | version = "0.8.7" 488 | source = "registry+https://github.com/rust-lang/crates.io-index" 489 | checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" 490 | 491 | [[package]] 492 | name = "cow-utils" 493 | version = "0.1.3" 494 | source = "registry+https://github.com/rust-lang/crates.io-index" 495 | checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" 496 | 497 | [[package]] 498 | name = "cpp_demangle" 499 | version = "0.4.5" 500 | source = "registry+https://github.com/rust-lang/crates.io-index" 501 | checksum = "f2bb79cb74d735044c972aae58ed0aaa9a837e85b01106a54c39e42e97f62253" 502 | dependencies = [ 503 | "cfg-if", 504 | ] 505 | 506 | [[package]] 507 | name = "cpufeatures" 508 | version = "0.2.17" 509 | source = "registry+https://github.com/rust-lang/crates.io-index" 510 | checksum = "59ed5838eebb26a2bb2e58f6d5b5316989ae9d08bab10e0e6d103e656d1b0280" 511 | dependencies = [ 512 | "libc", 513 | ] 514 | 515 | [[package]] 516 | name = "cranelift" 517 | version = "0.120.2" 518 | source = "registry+https://github.com/rust-lang/crates.io-index" 519 | checksum = "28bda640bdb33597583178887b25582520457258590a979344f3137a1e64a282" 520 | dependencies = [ 521 | "cranelift-codegen 0.120.2", 522 | "cranelift-frontend 0.120.2", 523 | "cranelift-jit", 524 | "cranelift-module", 525 | "cranelift-native 0.120.2", 526 | ] 527 | 528 | [[package]] 529 | name = "cranelift-assembler-x64" 530 | version = "0.120.2" 531 | source = "registry+https://github.com/rust-lang/crates.io-index" 532 | checksum = "a5023e06632d8f351c2891793ccccfe4aef957954904392434038745fb6f1f68" 533 | dependencies = [ 534 | "cranelift-assembler-x64-meta 0.120.2", 535 | ] 536 | 537 | [[package]] 538 | name = "cranelift-assembler-x64" 539 | version = "0.125.2" 540 | source = "registry+https://github.com/rust-lang/crates.io-index" 541 | checksum = "df19c898b43136cbd6389f2dbf6c9088b26f5ba88f4e7345affb5c3836f0872d" 542 | dependencies = [ 543 | "cranelift-assembler-x64-meta 0.125.2", 544 | ] 545 | 546 | [[package]] 547 | name = "cranelift-assembler-x64-meta" 548 | version = "0.120.2" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "b1c4012b4c8c1f6eb05c0a0a540e3e1ee992631af51aa2bbb3e712903ce4fd65" 551 | dependencies = [ 552 | "cranelift-srcgen 0.120.2", 553 | ] 554 | 555 | [[package]] 556 | name = "cranelift-assembler-x64-meta" 557 | version = "0.125.2" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | checksum = "fed55aa93c85ba0d824347b58d48ebc70dad883dd60a54a3096e5b0d993f05dc" 560 | dependencies = [ 561 | "cranelift-srcgen 0.125.2", 562 | ] 563 | 564 | [[package]] 565 | name = "cranelift-bforest" 566 | version = "0.120.2" 567 | source = "registry+https://github.com/rust-lang/crates.io-index" 568 | checksum = "4d6d883b4942ef3a7104096b8bc6f2d1a41393f159ac8de12aed27b25d67f895" 569 | dependencies = [ 570 | "cranelift-entity 0.120.2", 571 | ] 572 | 573 | [[package]] 574 | name = "cranelift-bforest" 575 | version = "0.125.2" 576 | source = "registry+https://github.com/rust-lang/crates.io-index" 577 | checksum = "856cba57e3eea62f31f934e3e37b92ed1853c12168f416050c1966c52287245b" 578 | dependencies = [ 579 | "cranelift-entity 0.125.2", 580 | ] 581 | 582 | [[package]] 583 | name = "cranelift-bitset" 584 | version = "0.120.2" 585 | source = "registry+https://github.com/rust-lang/crates.io-index" 586 | checksum = "db7b2ee9eec6ca8a716d900d5264d678fb2c290c58c46c8da7f94ee268175d17" 587 | 588 | [[package]] 589 | name = "cranelift-bitset" 590 | version = "0.125.2" 591 | source = "registry+https://github.com/rust-lang/crates.io-index" 592 | checksum = "f2ff6f439dc37e118e84cc5ed20977011a8d400e21e6bfeb0fcf982f3faa0ffd" 593 | dependencies = [ 594 | "serde", 595 | "serde_derive", 596 | ] 597 | 598 | [[package]] 599 | name = "cranelift-codegen" 600 | version = "0.120.2" 601 | source = "registry+https://github.com/rust-lang/crates.io-index" 602 | checksum = "aeda0892577afdce1ac2e9a983a55f8c5b87a59334e1f79d8f735a2d7ba4f4b4" 603 | dependencies = [ 604 | "bumpalo", 605 | "cranelift-assembler-x64 0.120.2", 606 | "cranelift-bforest 0.120.2", 607 | "cranelift-bitset 0.120.2", 608 | "cranelift-codegen-meta 0.120.2", 609 | "cranelift-codegen-shared 0.120.2", 610 | "cranelift-control 0.120.2", 611 | "cranelift-entity 0.120.2", 612 | "cranelift-isle 0.120.2", 613 | "gimli 0.31.1", 614 | "hashbrown 0.15.5", 615 | "log", 616 | "regalloc2 0.12.2", 617 | "rustc-hash", 618 | "serde", 619 | "smallvec", 620 | "target-lexicon", 621 | ] 622 | 623 | [[package]] 624 | name = "cranelift-codegen" 625 | version = "0.125.2" 626 | source = "registry+https://github.com/rust-lang/crates.io-index" 627 | checksum = "eea9501e74a2a106205b56719ba472ccfb48f92e1f4e938056447796ac626229" 628 | dependencies = [ 629 | "bumpalo", 630 | "cranelift-assembler-x64 0.125.2", 631 | "cranelift-bforest 0.125.2", 632 | "cranelift-bitset 0.125.2", 633 | "cranelift-codegen-meta 0.125.2", 634 | "cranelift-codegen-shared 0.125.2", 635 | "cranelift-control 0.125.2", 636 | "cranelift-entity 0.125.2", 637 | "cranelift-isle 0.125.2", 638 | "gimli 0.32.3", 639 | "hashbrown 0.15.5", 640 | "log", 641 | "pulley-interpreter", 642 | "regalloc2 0.13.2", 643 | "rustc-hash", 644 | "serde", 645 | "smallvec", 646 | "target-lexicon", 647 | "wasmtime-internal-math", 648 | ] 649 | 650 | [[package]] 651 | name = "cranelift-codegen-meta" 652 | version = "0.120.2" 653 | source = "registry+https://github.com/rust-lang/crates.io-index" 654 | checksum = "e461480d87f920c2787422463313326f67664e68108c14788ba1676f5edfcd15" 655 | dependencies = [ 656 | "cranelift-assembler-x64-meta 0.120.2", 657 | "cranelift-codegen-shared 0.120.2", 658 | "cranelift-srcgen 0.120.2", 659 | ] 660 | 661 | [[package]] 662 | name = "cranelift-codegen-meta" 663 | version = "0.125.2" 664 | source = "registry+https://github.com/rust-lang/crates.io-index" 665 | checksum = "ba8d3cbf66d60adc2b677eed08c4c74c28b04490ff85f80a4456593dad3f1795" 666 | dependencies = [ 667 | "cranelift-assembler-x64-meta 0.125.2", 668 | "cranelift-codegen-shared 0.125.2", 669 | "cranelift-srcgen 0.125.2", 670 | "heck", 671 | "pulley-interpreter", 672 | ] 673 | 674 | [[package]] 675 | name = "cranelift-codegen-shared" 676 | version = "0.120.2" 677 | source = "registry+https://github.com/rust-lang/crates.io-index" 678 | checksum = "976584d09f200c6c84c4b9ff7af64fc9ad0cb64dffa5780991edd3fe143a30a1" 679 | 680 | [[package]] 681 | name = "cranelift-codegen-shared" 682 | version = "0.125.2" 683 | source = "registry+https://github.com/rust-lang/crates.io-index" 684 | checksum = "599cdc596922c5c2879d3319f848be1eb5bfd208c31d5b7c9cc46004a86f43bf" 685 | 686 | [[package]] 687 | name = "cranelift-control" 688 | version = "0.120.2" 689 | source = "registry+https://github.com/rust-lang/crates.io-index" 690 | checksum = "46d43d70f4e17c545aa88dbf4c84d4200755d27c6e3272ebe4de65802fa6a955" 691 | dependencies = [ 692 | "arbitrary", 693 | ] 694 | 695 | [[package]] 696 | name = "cranelift-control" 697 | version = "0.125.2" 698 | source = "registry+https://github.com/rust-lang/crates.io-index" 699 | checksum = "a95d211f74ec979c901ca4db85176b4c1b883d85efc4d036732ade67390d3fe4" 700 | dependencies = [ 701 | "arbitrary", 702 | ] 703 | 704 | [[package]] 705 | name = "cranelift-entity" 706 | version = "0.120.2" 707 | source = "registry+https://github.com/rust-lang/crates.io-index" 708 | checksum = "d75418674520cb400c8772bfd6e11a62736c78fc1b6e418195696841d1bf91f1" 709 | dependencies = [ 710 | "cranelift-bitset 0.120.2", 711 | ] 712 | 713 | [[package]] 714 | name = "cranelift-entity" 715 | version = "0.125.2" 716 | source = "registry+https://github.com/rust-lang/crates.io-index" 717 | checksum = "5af1aa40c1f20bf2b0b0d98ed6df66fdde69b85d5067b832aeee2843e8fa5153" 718 | dependencies = [ 719 | "cranelift-bitset 0.125.2", 720 | "serde", 721 | "serde_derive", 722 | ] 723 | 724 | [[package]] 725 | name = "cranelift-frontend" 726 | version = "0.120.2" 727 | source = "registry+https://github.com/rust-lang/crates.io-index" 728 | checksum = "3c8b1a91c86687a344f3c52dd6dfb6e50db0dfa7f2e9c7711b060b3623e1fdeb" 729 | dependencies = [ 730 | "cranelift-codegen 0.120.2", 731 | "log", 732 | "smallvec", 733 | "target-lexicon", 734 | ] 735 | 736 | [[package]] 737 | name = "cranelift-frontend" 738 | version = "0.125.2" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "d9f034538552655391d571472140e303e7691c76fe12e8e636fd867b70b25f4e" 741 | dependencies = [ 742 | "cranelift-codegen 0.125.2", 743 | "log", 744 | "smallvec", 745 | "target-lexicon", 746 | ] 747 | 748 | [[package]] 749 | name = "cranelift-isle" 750 | version = "0.120.2" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "711baa4e3432d4129295b39ec2b4040cc1b558874ba0a37d08e832e857db7285" 753 | 754 | [[package]] 755 | name = "cranelift-isle" 756 | version = "0.125.2" 757 | source = "registry+https://github.com/rust-lang/crates.io-index" 758 | checksum = "aa1059c4dddd329635d97a22e2dac6265c3df663eeffa42a737a5bb48c7b988a" 759 | 760 | [[package]] 761 | name = "cranelift-jit" 762 | version = "0.120.2" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "86eece6be06ba68ed88ea8acb59a528deffe9cee09f08f2a422bfec554e82995" 765 | dependencies = [ 766 | "anyhow", 767 | "cranelift-codegen 0.120.2", 768 | "cranelift-control 0.120.2", 769 | "cranelift-entity 0.120.2", 770 | "cranelift-module", 771 | "cranelift-native 0.120.2", 772 | "libc", 773 | "log", 774 | "region", 775 | "target-lexicon", 776 | "wasmtime-jit-icache-coherence", 777 | "windows-sys 0.59.0", 778 | ] 779 | 780 | [[package]] 781 | name = "cranelift-module" 782 | version = "0.120.2" 783 | source = "registry+https://github.com/rust-lang/crates.io-index" 784 | checksum = "e0065b75e59fcd32cfb50f754d6daf56235a2914eecb29e61aa2b4250a095c4c" 785 | dependencies = [ 786 | "anyhow", 787 | "cranelift-codegen 0.120.2", 788 | "cranelift-control 0.120.2", 789 | ] 790 | 791 | [[package]] 792 | name = "cranelift-native" 793 | version = "0.120.2" 794 | source = "registry+https://github.com/rust-lang/crates.io-index" 795 | checksum = "41c83e8666e3bcc5ffeaf6f01f356f0e1f9dcd69ce5511a1efd7ca5722001a3f" 796 | dependencies = [ 797 | "cranelift-codegen 0.120.2", 798 | "libc", 799 | "target-lexicon", 800 | ] 801 | 802 | [[package]] 803 | name = "cranelift-native" 804 | version = "0.125.2" 805 | source = "registry+https://github.com/rust-lang/crates.io-index" 806 | checksum = "5c924aa669e18093a768b28476ac1fe99312f09cf5fe0a09ed8a40922f3440b4" 807 | dependencies = [ 808 | "cranelift-codegen 0.125.2", 809 | "libc", 810 | "target-lexicon", 811 | ] 812 | 813 | [[package]] 814 | name = "cranelift-srcgen" 815 | version = "0.120.2" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "02e3f4d783a55c64266d17dc67d2708852235732a100fc40dd9f1051adc64d7b" 818 | 819 | [[package]] 820 | name = "cranelift-srcgen" 821 | version = "0.125.2" 822 | source = "registry+https://github.com/rust-lang/crates.io-index" 823 | checksum = "a08dfb167733dfc164cc4601da4aa6cc95d98ca26251680643d134853bbe49d0" 824 | 825 | [[package]] 826 | name = "crc32fast" 827 | version = "1.5.0" 828 | source = "registry+https://github.com/rust-lang/crates.io-index" 829 | checksum = "9481c1c90cbf2ac953f07c8d4a58aa3945c425b7185c9154d67a65e4230da511" 830 | dependencies = [ 831 | "cfg-if", 832 | ] 833 | 834 | [[package]] 835 | name = "criterion" 836 | version = "0.7.0" 837 | source = "registry+https://github.com/rust-lang/crates.io-index" 838 | checksum = "e1c047a62b0cc3e145fa84415a3191f628e980b194c2755aa12300a4e6cbd928" 839 | dependencies = [ 840 | "anes", 841 | "cast", 842 | "ciborium", 843 | "clap", 844 | "criterion-plot", 845 | "itertools 0.13.0", 846 | "num-traits", 847 | "oorandom", 848 | "plotters", 849 | "rayon", 850 | "regex", 851 | "serde", 852 | "serde_json", 853 | "tinytemplate", 854 | "walkdir", 855 | ] 856 | 857 | [[package]] 858 | name = "criterion-plot" 859 | version = "0.6.0" 860 | source = "registry+https://github.com/rust-lang/crates.io-index" 861 | checksum = "9b1bcc0dc7dfae599d84ad0b1a55f80cde8af3725da8313b528da95ef783e338" 862 | dependencies = [ 863 | "cast", 864 | "itertools 0.13.0", 865 | ] 866 | 867 | [[package]] 868 | name = "crossbeam-deque" 869 | version = "0.8.6" 870 | source = "registry+https://github.com/rust-lang/crates.io-index" 871 | checksum = "9dd111b7b7f7d55b72c0a6ae361660ee5853c9af73f70c3c2ef6858b950e2e51" 872 | dependencies = [ 873 | "crossbeam-epoch", 874 | "crossbeam-utils", 875 | ] 876 | 877 | [[package]] 878 | name = "crossbeam-epoch" 879 | version = "0.9.18" 880 | source = "registry+https://github.com/rust-lang/crates.io-index" 881 | checksum = "5b82ac4a3c2ca9c3460964f020e1402edd5753411d7737aa39c3714ad1b5420e" 882 | dependencies = [ 883 | "crossbeam-utils", 884 | ] 885 | 886 | [[package]] 887 | name = "crossbeam-utils" 888 | version = "0.8.21" 889 | source = "registry+https://github.com/rust-lang/crates.io-index" 890 | checksum = "d0a5c400df2834b80a4c3327b3aad3a4c4cd4de0629063962b03235697506a28" 891 | 892 | [[package]] 893 | name = "crunchy" 894 | version = "0.2.4" 895 | source = "registry+https://github.com/rust-lang/crates.io-index" 896 | checksum = "460fbee9c2c2f33933d720630a6a0bac33ba7053db5344fac858d4b8952d77d5" 897 | 898 | [[package]] 899 | name = "crypto-common" 900 | version = "0.1.6" 901 | source = "registry+https://github.com/rust-lang/crates.io-index" 902 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 903 | dependencies = [ 904 | "generic-array", 905 | "typenum", 906 | ] 907 | 908 | [[package]] 909 | name = "dashmap" 910 | version = "6.1.0" 911 | source = "registry+https://github.com/rust-lang/crates.io-index" 912 | checksum = "5041cc499144891f3790297212f32a74fb938e5136a14943f338ef9e0ae276cf" 913 | dependencies = [ 914 | "cfg-if", 915 | "crossbeam-utils", 916 | "hashbrown 0.14.5", 917 | "lock_api", 918 | "once_cell", 919 | "parking_lot_core", 920 | ] 921 | 922 | [[package]] 923 | name = "debugid" 924 | version = "0.8.0" 925 | source = "registry+https://github.com/rust-lang/crates.io-index" 926 | checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" 927 | dependencies = [ 928 | "uuid", 929 | ] 930 | 931 | [[package]] 932 | name = "deranged" 933 | version = "0.5.4" 934 | source = "registry+https://github.com/rust-lang/crates.io-index" 935 | checksum = "a41953f86f8a05768a6cda24def994fd2f424b04ec5c719cf89989779f199071" 936 | dependencies = [ 937 | "powerfmt", 938 | ] 939 | 940 | [[package]] 941 | name = "derive-name" 942 | version = "1.1.0" 943 | source = "registry+https://github.com/rust-lang/crates.io-index" 944 | checksum = "a19af109a7f1118ab96e1fd2a0c87310787f791680fa71b4bbfa5dffbc358b08" 945 | dependencies = [ 946 | "derive-name-macros", 947 | ] 948 | 949 | [[package]] 950 | name = "derive-name-macros" 951 | version = "1.1.1" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "aa60999fb9292247d7c7eec5dada22b4ba337394612b0d935616bf49964c8bfd" 954 | dependencies = [ 955 | "quote", 956 | "syn", 957 | ] 958 | 959 | [[package]] 960 | name = "diatomic-waker" 961 | version = "0.2.3" 962 | source = "registry+https://github.com/rust-lang/crates.io-index" 963 | checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" 964 | 965 | [[package]] 966 | name = "digest" 967 | version = "0.10.7" 968 | source = "registry+https://github.com/rust-lang/crates.io-index" 969 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 970 | dependencies = [ 971 | "block-buffer", 972 | "crypto-common", 973 | ] 974 | 975 | [[package]] 976 | name = "directories-next" 977 | version = "2.0.0" 978 | source = "registry+https://github.com/rust-lang/crates.io-index" 979 | checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" 980 | dependencies = [ 981 | "cfg-if", 982 | "dirs-sys-next", 983 | ] 984 | 985 | [[package]] 986 | name = "dirs-sys-next" 987 | version = "0.1.2" 988 | source = "registry+https://github.com/rust-lang/crates.io-index" 989 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 990 | dependencies = [ 991 | "libc", 992 | "redox_users", 993 | "winapi", 994 | ] 995 | 996 | [[package]] 997 | name = "displaydoc" 998 | version = "0.2.5" 999 | source = "registry+https://github.com/rust-lang/crates.io-index" 1000 | checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" 1001 | dependencies = [ 1002 | "proc-macro2", 1003 | "quote", 1004 | "syn", 1005 | ] 1006 | 1007 | [[package]] 1008 | name = "dunce" 1009 | version = "1.0.5" 1010 | source = "registry+https://github.com/rust-lang/crates.io-index" 1011 | checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" 1012 | 1013 | [[package]] 1014 | name = "dynify" 1015 | version = "0.1.2" 1016 | source = "registry+https://github.com/rust-lang/crates.io-index" 1017 | checksum = "81acb15628a3e22358bf73de5e7e62360b8a777dbcb5fc9ac7dfa9ae73723747" 1018 | dependencies = [ 1019 | "dynify-macros", 1020 | ] 1021 | 1022 | [[package]] 1023 | name = "dynify-macros" 1024 | version = "0.1.2" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | checksum = "1ec431cd708430d5029356535259c5d645d60edd3d39c54e5eea9782d46caa7d" 1027 | dependencies = [ 1028 | "proc-macro2", 1029 | "quote", 1030 | "syn", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "either" 1035 | version = "1.15.0" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "48c757948c5ede0e46177b7add2e67155f70e33c07fea8284df6576da70b3719" 1038 | 1039 | [[package]] 1040 | name = "embedded-io" 1041 | version = "0.4.0" 1042 | source = "registry+https://github.com/rust-lang/crates.io-index" 1043 | checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 1044 | 1045 | [[package]] 1046 | name = "embedded-io" 1047 | version = "0.6.1" 1048 | source = "registry+https://github.com/rust-lang/crates.io-index" 1049 | checksum = "edd0f118536f44f5ccd48bcb8b111bdc3de888b58c74639dfb034a357d0f206d" 1050 | 1051 | [[package]] 1052 | name = "encoding_rs" 1053 | version = "0.8.35" 1054 | source = "registry+https://github.com/rust-lang/crates.io-index" 1055 | checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" 1056 | dependencies = [ 1057 | "cfg-if", 1058 | ] 1059 | 1060 | [[package]] 1061 | name = "env_home" 1062 | version = "0.1.0" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "c7f84e12ccf0a7ddc17a6c41c93326024c42920d7ee630d04950e6926645c0fe" 1065 | 1066 | [[package]] 1067 | name = "equator" 1068 | version = "0.4.2" 1069 | source = "registry+https://github.com/rust-lang/crates.io-index" 1070 | checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" 1071 | dependencies = [ 1072 | "equator-macro", 1073 | ] 1074 | 1075 | [[package]] 1076 | name = "equator-macro" 1077 | version = "0.4.2" 1078 | source = "registry+https://github.com/rust-lang/crates.io-index" 1079 | checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" 1080 | dependencies = [ 1081 | "proc-macro2", 1082 | "quote", 1083 | "syn", 1084 | ] 1085 | 1086 | [[package]] 1087 | name = "equivalent" 1088 | version = "1.0.2" 1089 | source = "registry+https://github.com/rust-lang/crates.io-index" 1090 | checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" 1091 | 1092 | [[package]] 1093 | name = "errno" 1094 | version = "0.3.14" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "39cab71617ae0d63f51a36d69f866391735b51691dbda63cf6f96d042b63efeb" 1097 | dependencies = [ 1098 | "libc", 1099 | "windows-sys 0.61.2", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "fallible-iterator" 1104 | version = "0.3.0" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" 1107 | 1108 | [[package]] 1109 | name = "fast-float2" 1110 | version = "0.2.3" 1111 | source = "registry+https://github.com/rust-lang/crates.io-index" 1112 | checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" 1113 | 1114 | [[package]] 1115 | name = "fastrand" 1116 | version = "2.3.0" 1117 | source = "registry+https://github.com/rust-lang/crates.io-index" 1118 | checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" 1119 | 1120 | [[package]] 1121 | name = "find-msvc-tools" 1122 | version = "0.1.4" 1123 | source = "registry+https://github.com/rust-lang/crates.io-index" 1124 | checksum = "52051878f80a721bb68ebfbc930e07b65ba72f2da88968ea5c06fd6ca3d3a127" 1125 | 1126 | [[package]] 1127 | name = "fixedbitset" 1128 | version = "0.5.7" 1129 | source = "registry+https://github.com/rust-lang/crates.io-index" 1130 | checksum = "1d674e81391d1e1ab681a28d99df07927c6d4aa5b027d7da16ba32d1d21ecd99" 1131 | 1132 | [[package]] 1133 | name = "float16" 1134 | version = "0.1.5" 1135 | source = "registry+https://github.com/rust-lang/crates.io-index" 1136 | checksum = "7bffafbd079d520191c7c2779ae9cf757601266cf4167d3f659ff09617ff8483" 1137 | dependencies = [ 1138 | "cfg-if", 1139 | "rustc_version", 1140 | ] 1141 | 1142 | [[package]] 1143 | name = "fnv" 1144 | version = "1.0.7" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 1147 | 1148 | [[package]] 1149 | name = "foldhash" 1150 | version = "0.1.5" 1151 | source = "registry+https://github.com/rust-lang/crates.io-index" 1152 | checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" 1153 | 1154 | [[package]] 1155 | name = "foldhash" 1156 | version = "0.2.0" 1157 | source = "registry+https://github.com/rust-lang/crates.io-index" 1158 | checksum = "77ce24cb58228fbb8aa041425bb1050850ac19177686ea6e0f41a70416f56fdb" 1159 | 1160 | [[package]] 1161 | name = "form_urlencoded" 1162 | version = "1.2.2" 1163 | source = "registry+https://github.com/rust-lang/crates.io-index" 1164 | checksum = "cb4cb245038516f5f85277875cdaa4f7d2c9a0fa0468de06ed190163b1581fcf" 1165 | dependencies = [ 1166 | "percent-encoding", 1167 | ] 1168 | 1169 | [[package]] 1170 | name = "futures" 1171 | version = "0.3.31" 1172 | source = "registry+https://github.com/rust-lang/crates.io-index" 1173 | checksum = "65bc07b1a8bc7c85c5f2e110c476c7389b4554ba72af57d8445ea63a576b0876" 1174 | dependencies = [ 1175 | "futures-channel", 1176 | "futures-core", 1177 | "futures-executor", 1178 | "futures-io", 1179 | "futures-sink", 1180 | "futures-task", 1181 | "futures-util", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "futures-buffered" 1186 | version = "0.2.12" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "a8e0e1f38ec07ba4abbde21eed377082f17ccb988be9d988a5adbf4bafc118fd" 1189 | dependencies = [ 1190 | "cordyceps", 1191 | "diatomic-waker", 1192 | "futures-core", 1193 | "pin-project-lite", 1194 | "spin 0.10.0", 1195 | ] 1196 | 1197 | [[package]] 1198 | name = "futures-channel" 1199 | version = "0.3.31" 1200 | source = "registry+https://github.com/rust-lang/crates.io-index" 1201 | checksum = "2dff15bf788c671c1934e366d07e30c1814a8ef514e1af724a602e8a2fbe1b10" 1202 | dependencies = [ 1203 | "futures-core", 1204 | "futures-sink", 1205 | ] 1206 | 1207 | [[package]] 1208 | name = "futures-concurrency" 1209 | version = "7.6.3" 1210 | source = "registry+https://github.com/rust-lang/crates.io-index" 1211 | checksum = "0eb68017df91f2e477ed4bea586c59eaecaa47ed885a770d0444e21e62572cd2" 1212 | dependencies = [ 1213 | "fixedbitset", 1214 | "futures-buffered", 1215 | "futures-core", 1216 | "futures-lite", 1217 | "pin-project", 1218 | "slab", 1219 | "smallvec", 1220 | ] 1221 | 1222 | [[package]] 1223 | name = "futures-core" 1224 | version = "0.3.31" 1225 | source = "registry+https://github.com/rust-lang/crates.io-index" 1226 | checksum = "05f29059c0c2090612e8d742178b0580d2dc940c837851ad723096f87af6663e" 1227 | 1228 | [[package]] 1229 | name = "futures-executor" 1230 | version = "0.3.31" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "1e28d1d997f585e54aebc3f97d39e72338912123a67330d723fdbb564d646c9f" 1233 | dependencies = [ 1234 | "futures-core", 1235 | "futures-task", 1236 | "futures-util", 1237 | ] 1238 | 1239 | [[package]] 1240 | name = "futures-io" 1241 | version = "0.3.31" 1242 | source = "registry+https://github.com/rust-lang/crates.io-index" 1243 | checksum = "9e5c1b78ca4aae1ac06c48a526a655760685149f0d465d21f37abfe57ce075c6" 1244 | 1245 | [[package]] 1246 | name = "futures-lite" 1247 | version = "2.6.1" 1248 | source = "registry+https://github.com/rust-lang/crates.io-index" 1249 | checksum = "f78e10609fe0e0b3f4157ffab1876319b5b0db102a2c60dc4626306dc46b44ad" 1250 | dependencies = [ 1251 | "fastrand", 1252 | "futures-core", 1253 | "futures-io", 1254 | "parking", 1255 | "pin-project-lite", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "futures-macro" 1260 | version = "0.3.31" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "162ee34ebcb7c64a8abebc059ce0fee27c2262618d7b60ed8faf72fef13c3650" 1263 | dependencies = [ 1264 | "proc-macro2", 1265 | "quote", 1266 | "syn", 1267 | ] 1268 | 1269 | [[package]] 1270 | name = "futures-sink" 1271 | version = "0.3.31" 1272 | source = "registry+https://github.com/rust-lang/crates.io-index" 1273 | checksum = "e575fab7d1e0dcb8d0c7bcf9a63ee213816ab51902e6d244a95819acacf1d4f7" 1274 | 1275 | [[package]] 1276 | name = "futures-task" 1277 | version = "0.3.31" 1278 | source = "registry+https://github.com/rust-lang/crates.io-index" 1279 | checksum = "f90f7dce0722e95104fcb095585910c0977252f286e354b5e3bd38902cd99988" 1280 | 1281 | [[package]] 1282 | name = "futures-util" 1283 | version = "0.3.31" 1284 | source = "registry+https://github.com/rust-lang/crates.io-index" 1285 | checksum = "9fa08315bb612088cc391249efdc3bc77536f16c91f6cf495e6fbe85b20a4a81" 1286 | dependencies = [ 1287 | "futures-channel", 1288 | "futures-core", 1289 | "futures-io", 1290 | "futures-macro", 1291 | "futures-sink", 1292 | "futures-task", 1293 | "memchr", 1294 | "pin-project-lite", 1295 | "pin-utils", 1296 | "slab", 1297 | ] 1298 | 1299 | [[package]] 1300 | name = "fxprof-processed-profile" 1301 | version = "0.8.1" 1302 | source = "registry+https://github.com/rust-lang/crates.io-index" 1303 | checksum = "25234f20a3ec0a962a61770cfe39ecf03cb529a6e474ad8cff025ed497eda557" 1304 | dependencies = [ 1305 | "bitflags 2.10.0", 1306 | "debugid", 1307 | "rustc-hash", 1308 | "serde", 1309 | "serde_derive", 1310 | "serde_json", 1311 | ] 1312 | 1313 | [[package]] 1314 | name = "generator" 1315 | version = "0.8.7" 1316 | source = "registry+https://github.com/rust-lang/crates.io-index" 1317 | checksum = "605183a538e3e2a9c1038635cc5c2d194e2ee8fd0d1b66b8349fad7dbacce5a2" 1318 | dependencies = [ 1319 | "cc", 1320 | "cfg-if", 1321 | "libc", 1322 | "log", 1323 | "rustversion", 1324 | "windows", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "generic-array" 1329 | version = "0.14.9" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "4bb6743198531e02858aeaea5398fcc883e71851fcbcb5a2f773e2fb6cb1edf2" 1332 | dependencies = [ 1333 | "typenum", 1334 | "version_check", 1335 | ] 1336 | 1337 | [[package]] 1338 | name = "getrandom" 1339 | version = "0.2.16" 1340 | source = "registry+https://github.com/rust-lang/crates.io-index" 1341 | checksum = "335ff9f135e4384c8150d6f27c6daed433577f86b4750418338c01a1a2528592" 1342 | dependencies = [ 1343 | "cfg-if", 1344 | "libc", 1345 | "wasi", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "getrandom" 1350 | version = "0.3.4" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "899def5c37c4fd7b2664648c28120ecec138e4d395b459e5ca34f9cce2dd77fd" 1353 | dependencies = [ 1354 | "cfg-if", 1355 | "libc", 1356 | "r-efi", 1357 | "wasip2", 1358 | ] 1359 | 1360 | [[package]] 1361 | name = "gimli" 1362 | version = "0.31.1" 1363 | source = "registry+https://github.com/rust-lang/crates.io-index" 1364 | checksum = "07e28edb80900c19c28f1072f2e8aeca7fa06b23cd4169cefe1af5aa3260783f" 1365 | dependencies = [ 1366 | "fallible-iterator", 1367 | "indexmap", 1368 | "stable_deref_trait", 1369 | ] 1370 | 1371 | [[package]] 1372 | name = "gimli" 1373 | version = "0.32.3" 1374 | source = "registry+https://github.com/rust-lang/crates.io-index" 1375 | checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" 1376 | dependencies = [ 1377 | "fallible-iterator", 1378 | "indexmap", 1379 | "stable_deref_trait", 1380 | ] 1381 | 1382 | [[package]] 1383 | name = "half" 1384 | version = "2.7.1" 1385 | source = "registry+https://github.com/rust-lang/crates.io-index" 1386 | checksum = "6ea2d84b969582b4b1864a92dc5d27cd2b77b622a8d79306834f1be5ba20d84b" 1387 | dependencies = [ 1388 | "cfg-if", 1389 | "crunchy", 1390 | "zerocopy", 1391 | ] 1392 | 1393 | [[package]] 1394 | name = "hashbrown" 1395 | version = "0.14.5" 1396 | source = "registry+https://github.com/rust-lang/crates.io-index" 1397 | checksum = "e5274423e17b7c9fc20b6e7e208532f9b19825d82dfd615708b70edd83df41f1" 1398 | 1399 | [[package]] 1400 | name = "hashbrown" 1401 | version = "0.15.5" 1402 | source = "registry+https://github.com/rust-lang/crates.io-index" 1403 | checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" 1404 | dependencies = [ 1405 | "allocator-api2", 1406 | "equivalent", 1407 | "foldhash 0.1.5", 1408 | "serde", 1409 | ] 1410 | 1411 | [[package]] 1412 | name = "hashbrown" 1413 | version = "0.16.0" 1414 | source = "registry+https://github.com/rust-lang/crates.io-index" 1415 | checksum = "5419bdc4f6a9207fbeba6d11b604d481addf78ecd10c11ad51e76c2f6482748d" 1416 | dependencies = [ 1417 | "allocator-api2", 1418 | "equivalent", 1419 | "foldhash 0.2.0", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "heck" 1424 | version = "0.5.0" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 1427 | 1428 | [[package]] 1429 | name = "http" 1430 | version = "1.3.1" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "f4a85d31aea989eead29a3aaf9e1115a180df8282431156e533de47660892565" 1433 | dependencies = [ 1434 | "bytes", 1435 | "fnv", 1436 | "itoa", 1437 | ] 1438 | 1439 | [[package]] 1440 | name = "iana-time-zone" 1441 | version = "0.1.64" 1442 | source = "registry+https://github.com/rust-lang/crates.io-index" 1443 | checksum = "33e57f83510bb73707521ebaffa789ec8caf86f9657cad665b092b581d40e9fb" 1444 | dependencies = [ 1445 | "android_system_properties", 1446 | "core-foundation-sys", 1447 | "iana-time-zone-haiku", 1448 | "js-sys", 1449 | "log", 1450 | "wasm-bindgen", 1451 | "windows-core 0.62.2", 1452 | ] 1453 | 1454 | [[package]] 1455 | name = "iana-time-zone-haiku" 1456 | version = "0.1.2" 1457 | source = "registry+https://github.com/rust-lang/crates.io-index" 1458 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1459 | dependencies = [ 1460 | "cc", 1461 | ] 1462 | 1463 | [[package]] 1464 | name = "icu_collections" 1465 | version = "2.0.0" 1466 | source = "registry+https://github.com/rust-lang/crates.io-index" 1467 | checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" 1468 | dependencies = [ 1469 | "displaydoc", 1470 | "potential_utf", 1471 | "yoke", 1472 | "zerofrom", 1473 | "zerovec", 1474 | ] 1475 | 1476 | [[package]] 1477 | name = "icu_locale_core" 1478 | version = "2.0.0" 1479 | source = "registry+https://github.com/rust-lang/crates.io-index" 1480 | checksum = "0cde2700ccaed3872079a65fb1a78f6c0a36c91570f28755dda67bc8f7d9f00a" 1481 | dependencies = [ 1482 | "displaydoc", 1483 | "litemap", 1484 | "tinystr", 1485 | "writeable", 1486 | "zerovec", 1487 | ] 1488 | 1489 | [[package]] 1490 | name = "icu_normalizer" 1491 | version = "2.0.0" 1492 | source = "registry+https://github.com/rust-lang/crates.io-index" 1493 | checksum = "436880e8e18df4d7bbc06d58432329d6458cc84531f7ac5f024e93deadb37979" 1494 | dependencies = [ 1495 | "displaydoc", 1496 | "icu_collections", 1497 | "icu_normalizer_data", 1498 | "icu_properties", 1499 | "icu_provider", 1500 | "smallvec", 1501 | "utf16_iter", 1502 | "write16", 1503 | "zerovec", 1504 | ] 1505 | 1506 | [[package]] 1507 | name = "icu_normalizer_data" 1508 | version = "2.0.0" 1509 | source = "registry+https://github.com/rust-lang/crates.io-index" 1510 | checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" 1511 | 1512 | [[package]] 1513 | name = "icu_properties" 1514 | version = "2.0.1" 1515 | source = "registry+https://github.com/rust-lang/crates.io-index" 1516 | checksum = "016c619c1eeb94efb86809b015c58f479963de65bdb6253345c1a1276f22e32b" 1517 | dependencies = [ 1518 | "displaydoc", 1519 | "icu_collections", 1520 | "icu_locale_core", 1521 | "icu_properties_data", 1522 | "icu_provider", 1523 | "potential_utf", 1524 | "zerotrie", 1525 | "zerovec", 1526 | ] 1527 | 1528 | [[package]] 1529 | name = "icu_properties_data" 1530 | version = "2.0.1" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" 1533 | 1534 | [[package]] 1535 | name = "icu_provider" 1536 | version = "2.0.0" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "03c80da27b5f4187909049ee2d72f276f0d9f99a42c306bd0131ecfe04d8e5af" 1539 | dependencies = [ 1540 | "displaydoc", 1541 | "icu_locale_core", 1542 | "stable_deref_trait", 1543 | "tinystr", 1544 | "writeable", 1545 | "yoke", 1546 | "zerofrom", 1547 | "zerotrie", 1548 | "zerovec", 1549 | ] 1550 | 1551 | [[package]] 1552 | name = "id-arena" 1553 | version = "2.2.1" 1554 | source = "registry+https://github.com/rust-lang/crates.io-index" 1555 | checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" 1556 | 1557 | [[package]] 1558 | name = "idna" 1559 | version = "1.1.0" 1560 | source = "registry+https://github.com/rust-lang/crates.io-index" 1561 | checksum = "3b0875f23caa03898994f6ddc501886a45c7d3d62d04d2d90788d47be1b1e4de" 1562 | dependencies = [ 1563 | "idna_adapter", 1564 | "smallvec", 1565 | "utf8_iter", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "idna_adapter" 1570 | version = "1.2.1" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "3acae9609540aa318d1bc588455225fb2085b9ed0c4f6bd0d9d5bcd86f1a0344" 1573 | dependencies = [ 1574 | "icu_normalizer", 1575 | "icu_properties", 1576 | ] 1577 | 1578 | [[package]] 1579 | name = "indexmap" 1580 | version = "2.12.0" 1581 | source = "registry+https://github.com/rust-lang/crates.io-index" 1582 | checksum = "6717a8d2a5a929a1a2eb43a12812498ed141a0bcfb7e8f7844fbdbe4303bba9f" 1583 | dependencies = [ 1584 | "equivalent", 1585 | "hashbrown 0.16.0", 1586 | "serde", 1587 | "serde_core", 1588 | ] 1589 | 1590 | [[package]] 1591 | name = "inetnum" 1592 | version = "0.1.1" 1593 | source = "registry+https://github.com/rust-lang/crates.io-index" 1594 | checksum = "03940df8ac11c9903291f4e50567a070902e77b1be42305280b91b23d3ccac19" 1595 | 1596 | [[package]] 1597 | name = "instant" 1598 | version = "0.1.13" 1599 | source = "registry+https://github.com/rust-lang/crates.io-index" 1600 | checksum = "e0242819d153cba4b4b05a5a8f2a7e9bbf97b6055b2a002b395c96b5ff3c0222" 1601 | dependencies = [ 1602 | "cfg-if", 1603 | "js-sys", 1604 | "wasm-bindgen", 1605 | "web-sys", 1606 | ] 1607 | 1608 | [[package]] 1609 | name = "intrusive-collections" 1610 | version = "0.9.7" 1611 | source = "registry+https://github.com/rust-lang/crates.io-index" 1612 | checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86" 1613 | dependencies = [ 1614 | "memoffset", 1615 | ] 1616 | 1617 | [[package]] 1618 | name = "itertools" 1619 | version = "0.13.0" 1620 | source = "registry+https://github.com/rust-lang/crates.io-index" 1621 | checksum = "413ee7dfc52ee1a4949ceeb7dbc8a33f2d6c088194d9f922fb8318faf1f01186" 1622 | dependencies = [ 1623 | "either", 1624 | ] 1625 | 1626 | [[package]] 1627 | name = "itertools" 1628 | version = "0.14.0" 1629 | source = "registry+https://github.com/rust-lang/crates.io-index" 1630 | checksum = "2b192c782037fadd9cfa75548310488aabdbf3d2da73885b31bd0abd03351285" 1631 | dependencies = [ 1632 | "either", 1633 | ] 1634 | 1635 | [[package]] 1636 | name = "itoa" 1637 | version = "1.0.15" 1638 | source = "registry+https://github.com/rust-lang/crates.io-index" 1639 | checksum = "4a5f13b858c8d314ee3e8f639011f7ccefe71f97f96e50151fb991f267928e2c" 1640 | 1641 | [[package]] 1642 | name = "ittapi" 1643 | version = "0.4.0" 1644 | source = "registry+https://github.com/rust-lang/crates.io-index" 1645 | checksum = "6b996fe614c41395cdaedf3cf408a9534851090959d90d54a535f675550b64b1" 1646 | dependencies = [ 1647 | "anyhow", 1648 | "ittapi-sys", 1649 | "log", 1650 | ] 1651 | 1652 | [[package]] 1653 | name = "ittapi-sys" 1654 | version = "0.4.0" 1655 | source = "registry+https://github.com/rust-lang/crates.io-index" 1656 | checksum = "52f5385394064fa2c886205dba02598013ce83d3e92d33dbdc0c52fe0e7bf4fc" 1657 | dependencies = [ 1658 | "cc", 1659 | ] 1660 | 1661 | [[package]] 1662 | name = "jobserver" 1663 | version = "0.1.34" 1664 | source = "registry+https://github.com/rust-lang/crates.io-index" 1665 | checksum = "9afb3de4395d6b3e67a780b6de64b51c978ecf11cb9a462c66be7d4ca9039d33" 1666 | dependencies = [ 1667 | "getrandom 0.3.4", 1668 | "libc", 1669 | ] 1670 | 1671 | [[package]] 1672 | name = "js-sys" 1673 | version = "0.3.81" 1674 | source = "registry+https://github.com/rust-lang/crates.io-index" 1675 | checksum = "ec48937a97411dcb524a265206ccd4c90bb711fca92b2792c407f268825b9305" 1676 | dependencies = [ 1677 | "once_cell", 1678 | "wasm-bindgen", 1679 | ] 1680 | 1681 | [[package]] 1682 | name = "koto" 1683 | version = "0.16.0" 1684 | source = "registry+https://github.com/rust-lang/crates.io-index" 1685 | checksum = "d67619caf21b92c010025c56b79043fc65662be12036a0a4ca5dd6b82554003a" 1686 | dependencies = [ 1687 | "koto_bytecode", 1688 | "koto_parser", 1689 | "koto_runtime", 1690 | "koto_serde", 1691 | "thiserror 2.0.17", 1692 | ] 1693 | 1694 | [[package]] 1695 | name = "koto_bytecode" 1696 | version = "0.16.0" 1697 | source = "registry+https://github.com/rust-lang/crates.io-index" 1698 | checksum = "e7e95ab0ab9f580d19e7f17c212996444f03d8f52aaa4f598ca40e45d5234640" 1699 | dependencies = [ 1700 | "circular-buffer", 1701 | "derive-name", 1702 | "dunce", 1703 | "koto_memory", 1704 | "koto_parser", 1705 | "rustc-hash", 1706 | "smallvec", 1707 | "thiserror 2.0.17", 1708 | ] 1709 | 1710 | [[package]] 1711 | name = "koto_derive" 1712 | version = "0.16.0" 1713 | source = "registry+https://github.com/rust-lang/crates.io-index" 1714 | checksum = "90683d15833959731a2a6ba382e98514972ab5af2c3774b9ae61bd508efb66f1" 1715 | dependencies = [ 1716 | "proc-macro2", 1717 | "quote", 1718 | "syn", 1719 | ] 1720 | 1721 | [[package]] 1722 | name = "koto_lexer" 1723 | version = "0.16.0" 1724 | source = "registry+https://github.com/rust-lang/crates.io-index" 1725 | checksum = "109765b6fd703ea2cbfd7dd5dc40e5504fe48983f71120643e2ca3ad3a4f5d56" 1726 | dependencies = [ 1727 | "unicode-segmentation", 1728 | "unicode-width 0.2.2", 1729 | "unicode-xid", 1730 | ] 1731 | 1732 | [[package]] 1733 | name = "koto_memory" 1734 | version = "0.16.0" 1735 | source = "registry+https://github.com/rust-lang/crates.io-index" 1736 | checksum = "c7d7d1b8f793ca3215b88ad73dc9697e28585bfd45ec7b0acc28a6dcf4009a5e" 1737 | 1738 | [[package]] 1739 | name = "koto_parser" 1740 | version = "0.16.0" 1741 | source = "registry+https://github.com/rust-lang/crates.io-index" 1742 | checksum = "ce05b350e021edbd90ecf80ef01fe66071c50133503dec82ffa64b6f0397ed37" 1743 | dependencies = [ 1744 | "derive-name", 1745 | "koto_lexer", 1746 | "koto_memory", 1747 | "smallvec", 1748 | "thiserror 2.0.17", 1749 | "unicode-segmentation", 1750 | ] 1751 | 1752 | [[package]] 1753 | name = "koto_runtime" 1754 | version = "0.16.0" 1755 | source = "registry+https://github.com/rust-lang/crates.io-index" 1756 | checksum = "04e9e8ef2d57ff9dad73fcd332d3588cf924ce8e601c01dc32d4234fbe135efd" 1757 | dependencies = [ 1758 | "chrono", 1759 | "indexmap", 1760 | "instant", 1761 | "koto_bytecode", 1762 | "koto_derive", 1763 | "koto_lexer", 1764 | "koto_memory", 1765 | "koto_parser", 1766 | "paste", 1767 | "rustc-hash", 1768 | "saturating_cast", 1769 | "smallvec", 1770 | "thiserror 2.0.17", 1771 | "unicode-segmentation", 1772 | ] 1773 | 1774 | [[package]] 1775 | name = "koto_serde" 1776 | version = "0.16.0" 1777 | source = "registry+https://github.com/rust-lang/crates.io-index" 1778 | checksum = "c0f7d0cac0e3320e19944295c5bc7b59bf549350cc3e3a47b3763f05b4b82414" 1779 | dependencies = [ 1780 | "koto_runtime", 1781 | "serde", 1782 | "thiserror 2.0.17", 1783 | ] 1784 | 1785 | [[package]] 1786 | name = "lazy_static" 1787 | version = "1.5.0" 1788 | source = "registry+https://github.com/rust-lang/crates.io-index" 1789 | checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" 1790 | 1791 | [[package]] 1792 | name = "leb128fmt" 1793 | version = "0.1.0" 1794 | source = "registry+https://github.com/rust-lang/crates.io-index" 1795 | checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" 1796 | 1797 | [[package]] 1798 | name = "libc" 1799 | version = "0.2.177" 1800 | source = "registry+https://github.com/rust-lang/crates.io-index" 1801 | checksum = "2874a2af47a2325c2001a6e6fad9b16a53b802102b528163885171cf92b15976" 1802 | 1803 | [[package]] 1804 | name = "libm" 1805 | version = "0.2.15" 1806 | source = "registry+https://github.com/rust-lang/crates.io-index" 1807 | checksum = "f9fbbcab51052fe104eb5e5d351cf728d30a5be1fe14d9be8a3b097481fb97de" 1808 | 1809 | [[package]] 1810 | name = "libredox" 1811 | version = "0.1.10" 1812 | source = "registry+https://github.com/rust-lang/crates.io-index" 1813 | checksum = "416f7e718bdb06000964960ffa43b4335ad4012ae8b99060261aa4a8088d5ccb" 1814 | dependencies = [ 1815 | "bitflags 2.10.0", 1816 | "libc", 1817 | ] 1818 | 1819 | [[package]] 1820 | name = "linux-raw-sys" 1821 | version = "0.11.0" 1822 | source = "registry+https://github.com/rust-lang/crates.io-index" 1823 | checksum = "df1d3c3b53da64cf5760482273a98e575c651a67eec7f77df96b5b642de8f039" 1824 | 1825 | [[package]] 1826 | name = "litemap" 1827 | version = "0.8.0" 1828 | source = "registry+https://github.com/rust-lang/crates.io-index" 1829 | checksum = "241eaef5fd12c88705a01fc1066c48c4b36e0dd4377dcdc7ec3942cea7a69956" 1830 | 1831 | [[package]] 1832 | name = "lock_api" 1833 | version = "0.4.14" 1834 | source = "registry+https://github.com/rust-lang/crates.io-index" 1835 | checksum = "224399e74b87b5f3557511d98dff8b14089b3dadafcab6bb93eab67d3aace965" 1836 | dependencies = [ 1837 | "scopeguard", 1838 | ] 1839 | 1840 | [[package]] 1841 | name = "log" 1842 | version = "0.4.28" 1843 | source = "registry+https://github.com/rust-lang/crates.io-index" 1844 | checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432" 1845 | 1846 | [[package]] 1847 | name = "loom" 1848 | version = "0.7.2" 1849 | source = "registry+https://github.com/rust-lang/crates.io-index" 1850 | checksum = "419e0dc8046cb947daa77eb95ae174acfbddb7673b4151f56d1eed8e93fbfaca" 1851 | dependencies = [ 1852 | "cfg-if", 1853 | "generator", 1854 | "scoped-tls", 1855 | "tracing", 1856 | "tracing-subscriber", 1857 | ] 1858 | 1859 | [[package]] 1860 | name = "lua-src" 1861 | version = "548.1.2" 1862 | source = "registry+https://github.com/rust-lang/crates.io-index" 1863 | checksum = "bdc4e1aff422ad5f08cffb4719603dcdbc2be2307f4c1510d7aab74b7fa88ca8" 1864 | dependencies = [ 1865 | "cc", 1866 | ] 1867 | 1868 | [[package]] 1869 | name = "luajit-src" 1870 | version = "210.6.2+25a61a1" 1871 | source = "registry+https://github.com/rust-lang/crates.io-index" 1872 | checksum = "89b3e51e810ed7940b3d057d4cb63ef5faa8261fc8f46fb1905947a22f1c89ec" 1873 | dependencies = [ 1874 | "cc", 1875 | "which", 1876 | ] 1877 | 1878 | [[package]] 1879 | name = "luau0-src" 1880 | version = "0.15.9+luau694" 1881 | source = "registry+https://github.com/rust-lang/crates.io-index" 1882 | checksum = "71a02a835f81c2bbf5edd17b595a7927fa0c91002b11f5bc1d2402d0ac392ed7" 1883 | dependencies = [ 1884 | "cc", 1885 | ] 1886 | 1887 | [[package]] 1888 | name = "mach2" 1889 | version = "0.4.3" 1890 | source = "registry+https://github.com/rust-lang/crates.io-index" 1891 | checksum = "d640282b302c0bb0a2a8e0233ead9035e3bed871f0b7e81fe4a1ec829765db44" 1892 | dependencies = [ 1893 | "libc", 1894 | ] 1895 | 1896 | [[package]] 1897 | name = "matchers" 1898 | version = "0.2.0" 1899 | source = "registry+https://github.com/rust-lang/crates.io-index" 1900 | checksum = "d1525a2a28c7f4fa0fc98bb91ae755d1e2d1505079e05539e35bc876b5d65ae9" 1901 | dependencies = [ 1902 | "regex-automata", 1903 | ] 1904 | 1905 | [[package]] 1906 | name = "memchr" 1907 | version = "2.7.6" 1908 | source = "registry+https://github.com/rust-lang/crates.io-index" 1909 | checksum = "f52b00d39961fc5b2736ea853c9cc86238e165017a493d1d5c8eac6bdc4cc273" 1910 | 1911 | [[package]] 1912 | name = "memfd" 1913 | version = "0.6.5" 1914 | source = "registry+https://github.com/rust-lang/crates.io-index" 1915 | checksum = "ad38eb12aea514a0466ea40a80fd8cc83637065948eb4a426e4aa46261175227" 1916 | dependencies = [ 1917 | "rustix", 1918 | ] 1919 | 1920 | [[package]] 1921 | name = "memoffset" 1922 | version = "0.9.1" 1923 | source = "registry+https://github.com/rust-lang/crates.io-index" 1924 | checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" 1925 | dependencies = [ 1926 | "autocfg", 1927 | ] 1928 | 1929 | [[package]] 1930 | name = "mlua" 1931 | version = "0.11.4" 1932 | source = "registry+https://github.com/rust-lang/crates.io-index" 1933 | checksum = "9be1c2bfc684b8a228fbaebf954af7a47a98ec27721986654a4cc2c40a20cc7e" 1934 | dependencies = [ 1935 | "bstr", 1936 | "either", 1937 | "mlua-sys", 1938 | "num-traits", 1939 | "parking_lot", 1940 | "rustc-hash", 1941 | "rustversion", 1942 | ] 1943 | 1944 | [[package]] 1945 | name = "mlua-sys" 1946 | version = "0.8.3" 1947 | source = "registry+https://github.com/rust-lang/crates.io-index" 1948 | checksum = "3d4dc9cfc5a7698899802e97480617d9726f7da78c910db989d4d0fd4991d900" 1949 | dependencies = [ 1950 | "cc", 1951 | "cfg-if", 1952 | "lua-src", 1953 | "luajit-src", 1954 | "luau0-src", 1955 | "pkg-config", 1956 | ] 1957 | 1958 | [[package]] 1959 | name = "nu-ansi-term" 1960 | version = "0.50.3" 1961 | source = "registry+https://github.com/rust-lang/crates.io-index" 1962 | checksum = "7957b9740744892f114936ab4a57b3f487491bbeafaf8083688b16841a4240e5" 1963 | dependencies = [ 1964 | "windows-sys 0.61.2", 1965 | ] 1966 | 1967 | [[package]] 1968 | name = "num-bigint" 1969 | version = "0.4.6" 1970 | source = "registry+https://github.com/rust-lang/crates.io-index" 1971 | checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" 1972 | dependencies = [ 1973 | "num-integer", 1974 | "num-traits", 1975 | "serde", 1976 | ] 1977 | 1978 | [[package]] 1979 | name = "num-conv" 1980 | version = "0.1.0" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "51d515d32fb182ee37cda2ccdcb92950d6a3c2893aa280e540671c2cd0f3b1d9" 1983 | 1984 | [[package]] 1985 | name = "num-integer" 1986 | version = "0.1.46" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | checksum = "7969661fd2958a5cb096e56c8e1ad0444ac2bbcd0061bd28660485a44879858f" 1989 | dependencies = [ 1990 | "num-traits", 1991 | ] 1992 | 1993 | [[package]] 1994 | name = "num-traits" 1995 | version = "0.2.19" 1996 | source = "registry+https://github.com/rust-lang/crates.io-index" 1997 | checksum = "071dfc062690e90b734c0b2273ce72ad0ffa95f0c74596bc250dcfd960262841" 1998 | dependencies = [ 1999 | "autocfg", 2000 | ] 2001 | 2002 | [[package]] 2003 | name = "num_enum" 2004 | version = "0.7.5" 2005 | source = "registry+https://github.com/rust-lang/crates.io-index" 2006 | checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" 2007 | dependencies = [ 2008 | "num_enum_derive", 2009 | "rustversion", 2010 | ] 2011 | 2012 | [[package]] 2013 | name = "num_enum_derive" 2014 | version = "0.7.5" 2015 | source = "registry+https://github.com/rust-lang/crates.io-index" 2016 | checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" 2017 | dependencies = [ 2018 | "proc-macro-crate", 2019 | "proc-macro2", 2020 | "quote", 2021 | "syn", 2022 | ] 2023 | 2024 | [[package]] 2025 | name = "num_threads" 2026 | version = "0.1.7" 2027 | source = "registry+https://github.com/rust-lang/crates.io-index" 2028 | checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" 2029 | dependencies = [ 2030 | "libc", 2031 | ] 2032 | 2033 | [[package]] 2034 | name = "object" 2035 | version = "0.37.3" 2036 | source = "registry+https://github.com/rust-lang/crates.io-index" 2037 | checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" 2038 | dependencies = [ 2039 | "crc32fast", 2040 | "hashbrown 0.15.5", 2041 | "indexmap", 2042 | "memchr", 2043 | ] 2044 | 2045 | [[package]] 2046 | name = "once_cell" 2047 | version = "1.21.3" 2048 | source = "registry+https://github.com/rust-lang/crates.io-index" 2049 | checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" 2050 | dependencies = [ 2051 | "portable-atomic", 2052 | ] 2053 | 2054 | [[package]] 2055 | name = "oorandom" 2056 | version = "11.1.5" 2057 | source = "registry+https://github.com/rust-lang/crates.io-index" 2058 | checksum = "d6790f58c7ff633d8771f42965289203411a5e5c68388703c06e14f24770b41e" 2059 | 2060 | [[package]] 2061 | name = "parking" 2062 | version = "2.2.1" 2063 | source = "registry+https://github.com/rust-lang/crates.io-index" 2064 | checksum = "f38d5652c16fde515bb1ecef450ab0f6a219d619a7274976324d5e377f7dceba" 2065 | 2066 | [[package]] 2067 | name = "parking_lot" 2068 | version = "0.12.5" 2069 | source = "registry+https://github.com/rust-lang/crates.io-index" 2070 | checksum = "93857453250e3077bd71ff98b6a65ea6621a19bb0f559a85248955ac12c45a1a" 2071 | dependencies = [ 2072 | "lock_api", 2073 | "parking_lot_core", 2074 | ] 2075 | 2076 | [[package]] 2077 | name = "parking_lot_core" 2078 | version = "0.9.12" 2079 | source = "registry+https://github.com/rust-lang/crates.io-index" 2080 | checksum = "2621685985a2ebf1c516881c026032ac7deafcda1a2c9b7850dc81e3dfcb64c1" 2081 | dependencies = [ 2082 | "cfg-if", 2083 | "libc", 2084 | "redox_syscall", 2085 | "smallvec", 2086 | "windows-link 0.2.1", 2087 | ] 2088 | 2089 | [[package]] 2090 | name = "paste" 2091 | version = "1.0.15" 2092 | source = "registry+https://github.com/rust-lang/crates.io-index" 2093 | checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" 2094 | 2095 | [[package]] 2096 | name = "percent-encoding" 2097 | version = "2.3.2" 2098 | source = "registry+https://github.com/rust-lang/crates.io-index" 2099 | checksum = "9b4f627cb1b25917193a259e49bdad08f671f8d9708acfd5fe0a8c1455d87220" 2100 | 2101 | [[package]] 2102 | name = "phf" 2103 | version = "0.13.1" 2104 | source = "registry+https://github.com/rust-lang/crates.io-index" 2105 | checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" 2106 | dependencies = [ 2107 | "phf_macros", 2108 | "phf_shared", 2109 | ] 2110 | 2111 | [[package]] 2112 | name = "phf_generator" 2113 | version = "0.13.1" 2114 | source = "registry+https://github.com/rust-lang/crates.io-index" 2115 | checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" 2116 | dependencies = [ 2117 | "fastrand", 2118 | "phf_shared", 2119 | ] 2120 | 2121 | [[package]] 2122 | name = "phf_macros" 2123 | version = "0.13.1" 2124 | source = "registry+https://github.com/rust-lang/crates.io-index" 2125 | checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" 2126 | dependencies = [ 2127 | "phf_generator", 2128 | "phf_shared", 2129 | "proc-macro2", 2130 | "quote", 2131 | "syn", 2132 | ] 2133 | 2134 | [[package]] 2135 | name = "phf_shared" 2136 | version = "0.13.1" 2137 | source = "registry+https://github.com/rust-lang/crates.io-index" 2138 | checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" 2139 | dependencies = [ 2140 | "siphasher", 2141 | ] 2142 | 2143 | [[package]] 2144 | name = "pin-project" 2145 | version = "1.1.10" 2146 | source = "registry+https://github.com/rust-lang/crates.io-index" 2147 | checksum = "677f1add503faace112b9f1373e43e9e054bfdd22ff1a63c1bc485eaec6a6a8a" 2148 | dependencies = [ 2149 | "pin-project-internal", 2150 | ] 2151 | 2152 | [[package]] 2153 | name = "pin-project-internal" 2154 | version = "1.1.10" 2155 | source = "registry+https://github.com/rust-lang/crates.io-index" 2156 | checksum = "6e918e4ff8c4549eb882f14b3a4bc8c8bc93de829416eacf579f1207a8fbf861" 2157 | dependencies = [ 2158 | "proc-macro2", 2159 | "quote", 2160 | "syn", 2161 | ] 2162 | 2163 | [[package]] 2164 | name = "pin-project-lite" 2165 | version = "0.2.16" 2166 | source = "registry+https://github.com/rust-lang/crates.io-index" 2167 | checksum = "3b3cff922bd51709b605d9ead9aa71031d81447142d828eb4a6eba76fe619f9b" 2168 | 2169 | [[package]] 2170 | name = "pin-utils" 2171 | version = "0.1.0" 2172 | source = "registry+https://github.com/rust-lang/crates.io-index" 2173 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 2174 | 2175 | [[package]] 2176 | name = "pkg-config" 2177 | version = "0.3.32" 2178 | source = "registry+https://github.com/rust-lang/crates.io-index" 2179 | checksum = "7edddbd0b52d732b21ad9a5fab5c704c14cd949e5e9a1ec5929a24fded1b904c" 2180 | 2181 | [[package]] 2182 | name = "plotters" 2183 | version = "0.3.7" 2184 | source = "registry+https://github.com/rust-lang/crates.io-index" 2185 | checksum = "5aeb6f403d7a4911efb1e33402027fc44f29b5bf6def3effcc22d7bb75f2b747" 2186 | dependencies = [ 2187 | "num-traits", 2188 | "plotters-backend", 2189 | "plotters-svg", 2190 | "wasm-bindgen", 2191 | "web-sys", 2192 | ] 2193 | 2194 | [[package]] 2195 | name = "plotters-backend" 2196 | version = "0.3.7" 2197 | source = "registry+https://github.com/rust-lang/crates.io-index" 2198 | checksum = "df42e13c12958a16b3f7f4386b9ab1f3e7933914ecea48da7139435263a4172a" 2199 | 2200 | [[package]] 2201 | name = "plotters-svg" 2202 | version = "0.3.7" 2203 | source = "registry+https://github.com/rust-lang/crates.io-index" 2204 | checksum = "51bae2ac328883f7acdfea3d66a7c35751187f870bc81f94563733a154d7a670" 2205 | dependencies = [ 2206 | "plotters-backend", 2207 | ] 2208 | 2209 | [[package]] 2210 | name = "portable-atomic" 2211 | version = "1.11.1" 2212 | source = "registry+https://github.com/rust-lang/crates.io-index" 2213 | checksum = "f84267b20a16ea918e43c6a88433c2d54fa145c92a811b5b047ccbe153674483" 2214 | 2215 | [[package]] 2216 | name = "postcard" 2217 | version = "1.1.3" 2218 | source = "registry+https://github.com/rust-lang/crates.io-index" 2219 | checksum = "6764c3b5dd454e283a30e6dfe78e9b31096d9e32036b5d1eaac7a6119ccb9a24" 2220 | dependencies = [ 2221 | "cobs", 2222 | "embedded-io 0.4.0", 2223 | "embedded-io 0.6.1", 2224 | "serde", 2225 | ] 2226 | 2227 | [[package]] 2228 | name = "potential_utf" 2229 | version = "0.1.3" 2230 | source = "registry+https://github.com/rust-lang/crates.io-index" 2231 | checksum = "84df19adbe5b5a0782edcab45899906947ab039ccf4573713735ee7de1e6b08a" 2232 | dependencies = [ 2233 | "zerovec", 2234 | ] 2235 | 2236 | [[package]] 2237 | name = "powerfmt" 2238 | version = "0.2.0" 2239 | source = "registry+https://github.com/rust-lang/crates.io-index" 2240 | checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" 2241 | 2242 | [[package]] 2243 | name = "ppv-lite86" 2244 | version = "0.2.21" 2245 | source = "registry+https://github.com/rust-lang/crates.io-index" 2246 | checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" 2247 | dependencies = [ 2248 | "zerocopy", 2249 | ] 2250 | 2251 | [[package]] 2252 | name = "proc-macro-crate" 2253 | version = "3.4.0" 2254 | source = "registry+https://github.com/rust-lang/crates.io-index" 2255 | checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" 2256 | dependencies = [ 2257 | "toml_edit 0.23.7", 2258 | ] 2259 | 2260 | [[package]] 2261 | name = "proc-macro2" 2262 | version = "1.0.102" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | checksum = "8e0f6df8eaa422d97d72edcd152e1451618fed47fabbdbd5a8864167b1d4aff7" 2265 | dependencies = [ 2266 | "unicode-ident", 2267 | ] 2268 | 2269 | [[package]] 2270 | name = "pulley-interpreter" 2271 | version = "38.0.2" 2272 | source = "registry+https://github.com/rust-lang/crates.io-index" 2273 | checksum = "2d53ca93042a3ca50f6264b662c554fff47304580c4b038dc36185744e2e65b4" 2274 | dependencies = [ 2275 | "cranelift-bitset 0.125.2", 2276 | "log", 2277 | "pulley-macros", 2278 | "wasmtime-internal-math", 2279 | ] 2280 | 2281 | [[package]] 2282 | name = "pulley-macros" 2283 | version = "38.0.2" 2284 | source = "registry+https://github.com/rust-lang/crates.io-index" 2285 | checksum = "a29c17463c4adaf0e221c8006d96c6c69e07b03642df13effb00882074488d9d" 2286 | dependencies = [ 2287 | "proc-macro2", 2288 | "quote", 2289 | "syn", 2290 | ] 2291 | 2292 | [[package]] 2293 | name = "quote" 2294 | version = "1.0.41" 2295 | source = "registry+https://github.com/rust-lang/crates.io-index" 2296 | checksum = "ce25767e7b499d1b604768e7cde645d14cc8584231ea6b295e9c9eb22c02e1d1" 2297 | dependencies = [ 2298 | "proc-macro2", 2299 | ] 2300 | 2301 | [[package]] 2302 | name = "r-efi" 2303 | version = "5.3.0" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" 2306 | 2307 | [[package]] 2308 | name = "rand" 2309 | version = "0.9.2" 2310 | source = "registry+https://github.com/rust-lang/crates.io-index" 2311 | checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" 2312 | dependencies = [ 2313 | "rand_chacha", 2314 | "rand_core", 2315 | ] 2316 | 2317 | [[package]] 2318 | name = "rand_chacha" 2319 | version = "0.9.0" 2320 | source = "registry+https://github.com/rust-lang/crates.io-index" 2321 | checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" 2322 | dependencies = [ 2323 | "ppv-lite86", 2324 | "rand_core", 2325 | ] 2326 | 2327 | [[package]] 2328 | name = "rand_core" 2329 | version = "0.9.3" 2330 | source = "registry+https://github.com/rust-lang/crates.io-index" 2331 | checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" 2332 | dependencies = [ 2333 | "getrandom 0.3.4", 2334 | ] 2335 | 2336 | [[package]] 2337 | name = "rayon" 2338 | version = "1.11.0" 2339 | source = "registry+https://github.com/rust-lang/crates.io-index" 2340 | checksum = "368f01d005bf8fd9b1206fb6fa653e6c4a81ceb1466406b81792d87c5677a58f" 2341 | dependencies = [ 2342 | "either", 2343 | "rayon-core", 2344 | ] 2345 | 2346 | [[package]] 2347 | name = "rayon-core" 2348 | version = "1.13.0" 2349 | source = "registry+https://github.com/rust-lang/crates.io-index" 2350 | checksum = "22e18b0f0062d30d4230b2e85ff77fdfe4326feb054b9783a3460d8435c8ab91" 2351 | dependencies = [ 2352 | "crossbeam-deque", 2353 | "crossbeam-utils", 2354 | ] 2355 | 2356 | [[package]] 2357 | name = "redox_syscall" 2358 | version = "0.5.18" 2359 | source = "registry+https://github.com/rust-lang/crates.io-index" 2360 | checksum = "ed2bf2547551a7053d6fdfafda3f938979645c44812fbfcda098faae3f1a362d" 2361 | dependencies = [ 2362 | "bitflags 2.10.0", 2363 | ] 2364 | 2365 | [[package]] 2366 | name = "redox_users" 2367 | version = "0.4.6" 2368 | source = "registry+https://github.com/rust-lang/crates.io-index" 2369 | checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" 2370 | dependencies = [ 2371 | "getrandom 0.2.16", 2372 | "libredox", 2373 | "thiserror 1.0.69", 2374 | ] 2375 | 2376 | [[package]] 2377 | name = "regalloc2" 2378 | version = "0.12.2" 2379 | source = "registry+https://github.com/rust-lang/crates.io-index" 2380 | checksum = "5216b1837de2149f8bc8e6d5f88a9326b63b8c836ed58ce4a0a29ec736a59734" 2381 | dependencies = [ 2382 | "allocator-api2", 2383 | "bumpalo", 2384 | "hashbrown 0.15.5", 2385 | "log", 2386 | "rustc-hash", 2387 | "smallvec", 2388 | ] 2389 | 2390 | [[package]] 2391 | name = "regalloc2" 2392 | version = "0.13.2" 2393 | source = "registry+https://github.com/rust-lang/crates.io-index" 2394 | checksum = "efd8138ce7c3d7c13be4f61893154b5d711bd798d2d7be3ecb8dcc7e7a06ca98" 2395 | dependencies = [ 2396 | "allocator-api2", 2397 | "bumpalo", 2398 | "hashbrown 0.15.5", 2399 | "log", 2400 | "rustc-hash", 2401 | "smallvec", 2402 | ] 2403 | 2404 | [[package]] 2405 | name = "regex" 2406 | version = "1.12.2" 2407 | source = "registry+https://github.com/rust-lang/crates.io-index" 2408 | checksum = "843bc0191f75f3e22651ae5f1e72939ab2f72a4bc30fa80a066bd66edefc24d4" 2409 | dependencies = [ 2410 | "aho-corasick", 2411 | "memchr", 2412 | "regex-automata", 2413 | "regex-syntax", 2414 | ] 2415 | 2416 | [[package]] 2417 | name = "regex-automata" 2418 | version = "0.4.13" 2419 | source = "registry+https://github.com/rust-lang/crates.io-index" 2420 | checksum = "5276caf25ac86c8d810222b3dbb938e512c55c6831a10f3e6ed1c93b84041f1c" 2421 | dependencies = [ 2422 | "aho-corasick", 2423 | "memchr", 2424 | "regex-syntax", 2425 | ] 2426 | 2427 | [[package]] 2428 | name = "regex-syntax" 2429 | version = "0.8.8" 2430 | source = "registry+https://github.com/rust-lang/crates.io-index" 2431 | checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" 2432 | 2433 | [[package]] 2434 | name = "region" 2435 | version = "3.0.2" 2436 | source = "registry+https://github.com/rust-lang/crates.io-index" 2437 | checksum = "e6b6ebd13bc009aef9cd476c1310d49ac354d36e240cf1bd753290f3dc7199a7" 2438 | dependencies = [ 2439 | "bitflags 1.3.2", 2440 | "libc", 2441 | "mach2", 2442 | "windows-sys 0.52.0", 2443 | ] 2444 | 2445 | [[package]] 2446 | name = "regress" 2447 | version = "0.10.4" 2448 | source = "registry+https://github.com/rust-lang/crates.io-index" 2449 | checksum = "145bb27393fe455dd64d6cbc8d059adfa392590a45eadf079c01b11857e7b010" 2450 | dependencies = [ 2451 | "hashbrown 0.15.5", 2452 | "memchr", 2453 | ] 2454 | 2455 | [[package]] 2456 | name = "rhai" 2457 | version = "1.23.4" 2458 | source = "registry+https://github.com/rust-lang/crates.io-index" 2459 | checksum = "527390cc333a8d2cd8237890e15c36518c26f8b54c903d86fc59f42f08d25594" 2460 | dependencies = [ 2461 | "ahash", 2462 | "bitflags 2.10.0", 2463 | "instant", 2464 | "num-traits", 2465 | "once_cell", 2466 | "rhai_codegen", 2467 | "smallvec", 2468 | "smartstring", 2469 | "thin-vec", 2470 | ] 2471 | 2472 | [[package]] 2473 | name = "rhai_codegen" 2474 | version = "3.1.0" 2475 | source = "registry+https://github.com/rust-lang/crates.io-index" 2476 | checksum = "d4322a2a4e8cf30771dd9f27f7f37ca9ac8fe812dddd811096a98483080dabe6" 2477 | dependencies = [ 2478 | "proc-macro2", 2479 | "quote", 2480 | "syn", 2481 | ] 2482 | 2483 | [[package]] 2484 | name = "roto" 2485 | version = "0.9.0" 2486 | source = "registry+https://github.com/rust-lang/crates.io-index" 2487 | checksum = "705bd549031bcc891fd5c810c95ee3dc744b60fd8731f70e92d492b5208a4df2" 2488 | dependencies = [ 2489 | "ariadne", 2490 | "cranelift", 2491 | "cranelift-codegen 0.120.2", 2492 | "inetnum", 2493 | "libc", 2494 | "log", 2495 | "roto-macros", 2496 | "rustc-literal-escaper", 2497 | "symbol_table", 2498 | "unicode-ident", 2499 | ] 2500 | 2501 | [[package]] 2502 | name = "roto-macros" 2503 | version = "0.9.0" 2504 | source = "registry+https://github.com/rust-lang/crates.io-index" 2505 | checksum = "a2e3ba983c911c551cd501c8dac62f8f68e2dbeb5ed75de2288e8e53288c4d7f" 2506 | dependencies = [ 2507 | "proc-macro2", 2508 | "quote", 2509 | "syn", 2510 | ] 2511 | 2512 | [[package]] 2513 | name = "rquickjs" 2514 | version = "0.9.0" 2515 | source = "registry+https://github.com/rust-lang/crates.io-index" 2516 | checksum = "5c5227859c4dfc83f428e58f9569bf439e628c8d139020e7faff437e6f5abaa0" 2517 | dependencies = [ 2518 | "rquickjs-core", 2519 | ] 2520 | 2521 | [[package]] 2522 | name = "rquickjs-core" 2523 | version = "0.9.0" 2524 | source = "registry+https://github.com/rust-lang/crates.io-index" 2525 | checksum = "e82e0ca83028ad5b533b53b96c395bbaab905a5774de4aaf1004eeacafa3d85d" 2526 | dependencies = [ 2527 | "rquickjs-sys", 2528 | ] 2529 | 2530 | [[package]] 2531 | name = "rquickjs-sys" 2532 | version = "0.9.0" 2533 | source = "registry+https://github.com/rust-lang/crates.io-index" 2534 | checksum = "7fed0097b0b4fbb2a87f6dd3b995a7c64ca56de30007eb7e867dfdfc78324ba5" 2535 | dependencies = [ 2536 | "cc", 2537 | ] 2538 | 2539 | [[package]] 2540 | name = "rustc-demangle" 2541 | version = "0.1.26" 2542 | source = "registry+https://github.com/rust-lang/crates.io-index" 2543 | checksum = "56f7d92ca342cea22a06f2121d944b4fd82af56988c270852495420f961d4ace" 2544 | 2545 | [[package]] 2546 | name = "rustc-hash" 2547 | version = "2.1.1" 2548 | source = "registry+https://github.com/rust-lang/crates.io-index" 2549 | checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" 2550 | 2551 | [[package]] 2552 | name = "rustc-literal-escaper" 2553 | version = "0.0.4" 2554 | source = "registry+https://github.com/rust-lang/crates.io-index" 2555 | checksum = "ab03008eb631b703dd16978282ae36c73282e7922fe101a4bd072a40ecea7b8b" 2556 | 2557 | [[package]] 2558 | name = "rustc_version" 2559 | version = "0.2.3" 2560 | source = "registry+https://github.com/rust-lang/crates.io-index" 2561 | checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" 2562 | dependencies = [ 2563 | "semver 0.9.0", 2564 | ] 2565 | 2566 | [[package]] 2567 | name = "rustix" 2568 | version = "1.1.2" 2569 | source = "registry+https://github.com/rust-lang/crates.io-index" 2570 | checksum = "cd15f8a2c5551a84d56efdc1cd049089e409ac19a3072d5037a17fd70719ff3e" 2571 | dependencies = [ 2572 | "bitflags 2.10.0", 2573 | "errno", 2574 | "libc", 2575 | "linux-raw-sys", 2576 | "windows-sys 0.61.2", 2577 | ] 2578 | 2579 | [[package]] 2580 | name = "rustversion" 2581 | version = "1.0.22" 2582 | source = "registry+https://github.com/rust-lang/crates.io-index" 2583 | checksum = "b39cdef0fa800fc44525c84ccb54a029961a8215f9619753635a9c0d2538d46d" 2584 | 2585 | [[package]] 2586 | name = "ryu" 2587 | version = "1.0.20" 2588 | source = "registry+https://github.com/rust-lang/crates.io-index" 2589 | checksum = "28d3b2b1366ec20994f1fd18c3c594f05c5dd4bc44d8bb0c1c632c8d6829481f" 2590 | 2591 | [[package]] 2592 | name = "ryu-js" 2593 | version = "1.0.2" 2594 | source = "registry+https://github.com/rust-lang/crates.io-index" 2595 | checksum = "dd29631678d6fb0903b69223673e122c32e9ae559d0960a38d574695ebc0ea15" 2596 | 2597 | [[package]] 2598 | name = "same-file" 2599 | version = "1.0.6" 2600 | source = "registry+https://github.com/rust-lang/crates.io-index" 2601 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 2602 | dependencies = [ 2603 | "winapi-util", 2604 | ] 2605 | 2606 | [[package]] 2607 | name = "saturating_cast" 2608 | version = "0.1.0" 2609 | source = "registry+https://github.com/rust-lang/crates.io-index" 2610 | checksum = "3fc4972f129a0ea378b69fa7c186d63255606e362ad00795f00b869dea5265eb" 2611 | 2612 | [[package]] 2613 | name = "scoped-tls" 2614 | version = "1.0.1" 2615 | source = "registry+https://github.com/rust-lang/crates.io-index" 2616 | checksum = "e1cf6437eb19a8f4a6cc0f7dca544973b0b78843adbfeb3683d1a94a0024a294" 2617 | 2618 | [[package]] 2619 | name = "scopeguard" 2620 | version = "1.2.0" 2621 | source = "registry+https://github.com/rust-lang/crates.io-index" 2622 | checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" 2623 | 2624 | [[package]] 2625 | name = "script-bench" 2626 | version = "0.1.0" 2627 | dependencies = [ 2628 | "anyhow", 2629 | "boa_engine", 2630 | "boa_gc", 2631 | "boa_runtime", 2632 | "criterion", 2633 | "itertools 0.14.0", 2634 | "koto", 2635 | "mlua", 2636 | "rand", 2637 | "rhai", 2638 | "roto", 2639 | "rquickjs", 2640 | "wasmi", 2641 | "wasmtime", 2642 | ] 2643 | 2644 | [[package]] 2645 | name = "semver" 2646 | version = "0.9.0" 2647 | source = "registry+https://github.com/rust-lang/crates.io-index" 2648 | checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" 2649 | dependencies = [ 2650 | "semver-parser", 2651 | ] 2652 | 2653 | [[package]] 2654 | name = "semver" 2655 | version = "1.0.27" 2656 | source = "registry+https://github.com/rust-lang/crates.io-index" 2657 | checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" 2658 | dependencies = [ 2659 | "serde", 2660 | "serde_core", 2661 | ] 2662 | 2663 | [[package]] 2664 | name = "semver-parser" 2665 | version = "0.7.0" 2666 | source = "registry+https://github.com/rust-lang/crates.io-index" 2667 | checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" 2668 | 2669 | [[package]] 2670 | name = "serde" 2671 | version = "1.0.228" 2672 | source = "registry+https://github.com/rust-lang/crates.io-index" 2673 | checksum = "9a8e94ea7f378bd32cbbd37198a4a91436180c5bb472411e48b5ec2e2124ae9e" 2674 | dependencies = [ 2675 | "serde_core", 2676 | "serde_derive", 2677 | ] 2678 | 2679 | [[package]] 2680 | name = "serde_core" 2681 | version = "1.0.228" 2682 | source = "registry+https://github.com/rust-lang/crates.io-index" 2683 | checksum = "41d385c7d4ca58e59fc732af25c3983b67ac852c1a25000afe1175de458b67ad" 2684 | dependencies = [ 2685 | "serde_derive", 2686 | ] 2687 | 2688 | [[package]] 2689 | name = "serde_derive" 2690 | version = "1.0.228" 2691 | source = "registry+https://github.com/rust-lang/crates.io-index" 2692 | checksum = "d540f220d3187173da220f885ab66608367b6574e925011a9353e4badda91d79" 2693 | dependencies = [ 2694 | "proc-macro2", 2695 | "quote", 2696 | "syn", 2697 | ] 2698 | 2699 | [[package]] 2700 | name = "serde_json" 2701 | version = "1.0.145" 2702 | source = "registry+https://github.com/rust-lang/crates.io-index" 2703 | checksum = "402a6f66d8c709116cf22f558eab210f5a50187f702eb4d7e5ef38d9a7f1c79c" 2704 | dependencies = [ 2705 | "itoa", 2706 | "memchr", 2707 | "ryu", 2708 | "serde", 2709 | "serde_core", 2710 | ] 2711 | 2712 | [[package]] 2713 | name = "serde_spanned" 2714 | version = "0.6.9" 2715 | source = "registry+https://github.com/rust-lang/crates.io-index" 2716 | checksum = "bf41e0cfaf7226dca15e8197172c295a782857fcb97fad1808a166870dee75a3" 2717 | dependencies = [ 2718 | "serde", 2719 | ] 2720 | 2721 | [[package]] 2722 | name = "sha2" 2723 | version = "0.10.9" 2724 | source = "registry+https://github.com/rust-lang/crates.io-index" 2725 | checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" 2726 | dependencies = [ 2727 | "cfg-if", 2728 | "cpufeatures", 2729 | "digest", 2730 | ] 2731 | 2732 | [[package]] 2733 | name = "sharded-slab" 2734 | version = "0.1.7" 2735 | source = "registry+https://github.com/rust-lang/crates.io-index" 2736 | checksum = "f40ca3c46823713e0d4209592e8d6e826aa57e928f09752619fc696c499637f6" 2737 | dependencies = [ 2738 | "lazy_static", 2739 | ] 2740 | 2741 | [[package]] 2742 | name = "shlex" 2743 | version = "1.3.0" 2744 | source = "registry+https://github.com/rust-lang/crates.io-index" 2745 | checksum = "0fda2ff0d084019ba4d7c6f371c95d8fd75ce3524c3cb8fb653a3023f6323e64" 2746 | 2747 | [[package]] 2748 | name = "siphasher" 2749 | version = "1.0.1" 2750 | source = "registry+https://github.com/rust-lang/crates.io-index" 2751 | checksum = "56199f7ddabf13fe5074ce809e7d3f42b42ae711800501b5b16ea82ad029c39d" 2752 | 2753 | [[package]] 2754 | name = "slab" 2755 | version = "0.4.11" 2756 | source = "registry+https://github.com/rust-lang/crates.io-index" 2757 | checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" 2758 | 2759 | [[package]] 2760 | name = "small_btree" 2761 | version = "0.1.0" 2762 | source = "registry+https://github.com/rust-lang/crates.io-index" 2763 | checksum = "0ba60d2df92ba73864714808ca68c059734853e6ab722b40e1cf543ebb3a057a" 2764 | dependencies = [ 2765 | "arrayvec", 2766 | ] 2767 | 2768 | [[package]] 2769 | name = "smallvec" 2770 | version = "1.15.1" 2771 | source = "registry+https://github.com/rust-lang/crates.io-index" 2772 | checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" 2773 | dependencies = [ 2774 | "serde", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "smartstring" 2779 | version = "1.0.1" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" 2782 | dependencies = [ 2783 | "autocfg", 2784 | "static_assertions", 2785 | "version_check", 2786 | ] 2787 | 2788 | [[package]] 2789 | name = "spin" 2790 | version = "0.9.8" 2791 | source = "registry+https://github.com/rust-lang/crates.io-index" 2792 | checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" 2793 | 2794 | [[package]] 2795 | name = "spin" 2796 | version = "0.10.0" 2797 | source = "registry+https://github.com/rust-lang/crates.io-index" 2798 | checksum = "d5fe4ccb98d9c292d56fec89a5e07da7fc4cf0dc11e156b41793132775d3e591" 2799 | 2800 | [[package]] 2801 | name = "stable_deref_trait" 2802 | version = "1.2.1" 2803 | source = "registry+https://github.com/rust-lang/crates.io-index" 2804 | checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" 2805 | 2806 | [[package]] 2807 | name = "static_assertions" 2808 | version = "1.1.0" 2809 | source = "registry+https://github.com/rust-lang/crates.io-index" 2810 | checksum = "a2eb9349b6444b326872e140eb1cf5e7c522154d69e7a0ffb0fb81c06b37543f" 2811 | 2812 | [[package]] 2813 | name = "string-interner" 2814 | version = "0.19.0" 2815 | source = "registry+https://github.com/rust-lang/crates.io-index" 2816 | checksum = "23de088478b31c349c9ba67816fa55d9355232d63c3afea8bf513e31f0f1d2c0" 2817 | dependencies = [ 2818 | "hashbrown 0.15.5", 2819 | "serde", 2820 | ] 2821 | 2822 | [[package]] 2823 | name = "symbol_table" 2824 | version = "0.4.0" 2825 | source = "registry+https://github.com/rust-lang/crates.io-index" 2826 | checksum = "f19bffd69fb182e684d14e3c71d04c0ef33d1641ac0b9e81c712c734e83703bc" 2827 | dependencies = [ 2828 | "crossbeam-utils", 2829 | "foldhash 0.1.5", 2830 | "hashbrown 0.15.5", 2831 | ] 2832 | 2833 | [[package]] 2834 | name = "syn" 2835 | version = "2.0.108" 2836 | source = "registry+https://github.com/rust-lang/crates.io-index" 2837 | checksum = "da58917d35242480a05c2897064da0a80589a2a0476c9a3f2fdc83b53502e917" 2838 | dependencies = [ 2839 | "proc-macro2", 2840 | "quote", 2841 | "unicode-ident", 2842 | ] 2843 | 2844 | [[package]] 2845 | name = "synstructure" 2846 | version = "0.13.2" 2847 | source = "registry+https://github.com/rust-lang/crates.io-index" 2848 | checksum = "728a70f3dbaf5bab7f0c4b1ac8d7ae5ea60a4b5549c8a5914361c99147a709d2" 2849 | dependencies = [ 2850 | "proc-macro2", 2851 | "quote", 2852 | "syn", 2853 | ] 2854 | 2855 | [[package]] 2856 | name = "tag_ptr" 2857 | version = "0.1.0" 2858 | source = "registry+https://github.com/rust-lang/crates.io-index" 2859 | checksum = "c0e973b34477b7823833469eb0f5a3a60370fef7a453e02d751b59180d0a5a05" 2860 | 2861 | [[package]] 2862 | name = "tap" 2863 | version = "1.0.1" 2864 | source = "registry+https://github.com/rust-lang/crates.io-index" 2865 | checksum = "55937e1799185b12863d447f42597ed69d9928686b8d88a1df17376a097d8369" 2866 | 2867 | [[package]] 2868 | name = "target-lexicon" 2869 | version = "0.13.3" 2870 | source = "registry+https://github.com/rust-lang/crates.io-index" 2871 | checksum = "df7f62577c25e07834649fc3b39fafdc597c0a3527dc1c60129201ccfcbaa50c" 2872 | 2873 | [[package]] 2874 | name = "termcolor" 2875 | version = "1.4.1" 2876 | source = "registry+https://github.com/rust-lang/crates.io-index" 2877 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2878 | dependencies = [ 2879 | "winapi-util", 2880 | ] 2881 | 2882 | [[package]] 2883 | name = "thin-vec" 2884 | version = "0.2.14" 2885 | source = "registry+https://github.com/rust-lang/crates.io-index" 2886 | checksum = "144f754d318415ac792f9d69fc87abbbfc043ce2ef041c60f16ad828f638717d" 2887 | 2888 | [[package]] 2889 | name = "thiserror" 2890 | version = "1.0.69" 2891 | source = "registry+https://github.com/rust-lang/crates.io-index" 2892 | checksum = "b6aaf5339b578ea85b50e080feb250a3e8ae8cfcdff9a461c9ec2904bc923f52" 2893 | dependencies = [ 2894 | "thiserror-impl 1.0.69", 2895 | ] 2896 | 2897 | [[package]] 2898 | name = "thiserror" 2899 | version = "2.0.17" 2900 | source = "registry+https://github.com/rust-lang/crates.io-index" 2901 | checksum = "f63587ca0f12b72a0600bcba1d40081f830876000bb46dd2337a3051618f4fc8" 2902 | dependencies = [ 2903 | "thiserror-impl 2.0.17", 2904 | ] 2905 | 2906 | [[package]] 2907 | name = "thiserror-impl" 2908 | version = "1.0.69" 2909 | source = "registry+https://github.com/rust-lang/crates.io-index" 2910 | checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" 2911 | dependencies = [ 2912 | "proc-macro2", 2913 | "quote", 2914 | "syn", 2915 | ] 2916 | 2917 | [[package]] 2918 | name = "thiserror-impl" 2919 | version = "2.0.17" 2920 | source = "registry+https://github.com/rust-lang/crates.io-index" 2921 | checksum = "3ff15c8ecd7de3849db632e14d18d2571fa09dfc5ed93479bc4485c7a517c913" 2922 | dependencies = [ 2923 | "proc-macro2", 2924 | "quote", 2925 | "syn", 2926 | ] 2927 | 2928 | [[package]] 2929 | name = "thread_local" 2930 | version = "1.1.9" 2931 | source = "registry+https://github.com/rust-lang/crates.io-index" 2932 | checksum = "f60246a4944f24f6e018aa17cdeffb7818b76356965d03b07d6a9886e8962185" 2933 | dependencies = [ 2934 | "cfg-if", 2935 | ] 2936 | 2937 | [[package]] 2938 | name = "time" 2939 | version = "0.3.44" 2940 | source = "registry+https://github.com/rust-lang/crates.io-index" 2941 | checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" 2942 | dependencies = [ 2943 | "deranged", 2944 | "itoa", 2945 | "js-sys", 2946 | "libc", 2947 | "num-conv", 2948 | "num_threads", 2949 | "powerfmt", 2950 | "serde", 2951 | "time-core", 2952 | "time-macros", 2953 | ] 2954 | 2955 | [[package]] 2956 | name = "time-core" 2957 | version = "0.1.6" 2958 | source = "registry+https://github.com/rust-lang/crates.io-index" 2959 | checksum = "40868e7c1d2f0b8d73e4a8c7f0ff63af4f6d19be117e90bd73eb1d62cf831c6b" 2960 | 2961 | [[package]] 2962 | name = "time-macros" 2963 | version = "0.2.24" 2964 | source = "registry+https://github.com/rust-lang/crates.io-index" 2965 | checksum = "30cfb0125f12d9c277f35663a0a33f8c30190f4e4574868a330595412d34ebf3" 2966 | dependencies = [ 2967 | "num-conv", 2968 | "time-core", 2969 | ] 2970 | 2971 | [[package]] 2972 | name = "tiny-keccak" 2973 | version = "2.0.2" 2974 | source = "registry+https://github.com/rust-lang/crates.io-index" 2975 | checksum = "2c9d3793400a45f954c52e73d068316d76b6f4e36977e3fcebb13a2721e80237" 2976 | dependencies = [ 2977 | "crunchy", 2978 | ] 2979 | 2980 | [[package]] 2981 | name = "tinystr" 2982 | version = "0.8.1" 2983 | source = "registry+https://github.com/rust-lang/crates.io-index" 2984 | checksum = "5d4f6d1145dcb577acf783d4e601bc1d76a13337bb54e6233add580b07344c8b" 2985 | dependencies = [ 2986 | "displaydoc", 2987 | "zerovec", 2988 | ] 2989 | 2990 | [[package]] 2991 | name = "tinytemplate" 2992 | version = "1.2.1" 2993 | source = "registry+https://github.com/rust-lang/crates.io-index" 2994 | checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" 2995 | dependencies = [ 2996 | "serde", 2997 | "serde_json", 2998 | ] 2999 | 3000 | [[package]] 3001 | name = "toml" 3002 | version = "0.8.23" 3003 | source = "registry+https://github.com/rust-lang/crates.io-index" 3004 | checksum = "dc1beb996b9d83529a9e75c17a1686767d148d70663143c7854d8b4a09ced362" 3005 | dependencies = [ 3006 | "serde", 3007 | "serde_spanned", 3008 | "toml_datetime 0.6.11", 3009 | "toml_edit 0.22.27", 3010 | ] 3011 | 3012 | [[package]] 3013 | name = "toml_datetime" 3014 | version = "0.6.11" 3015 | source = "registry+https://github.com/rust-lang/crates.io-index" 3016 | checksum = "22cddaf88f4fbc13c51aebbf5f8eceb5c7c5a9da2ac40a13519eb5b0a0e8f11c" 3017 | dependencies = [ 3018 | "serde", 3019 | ] 3020 | 3021 | [[package]] 3022 | name = "toml_datetime" 3023 | version = "0.7.3" 3024 | source = "registry+https://github.com/rust-lang/crates.io-index" 3025 | checksum = "f2cdb639ebbc97961c51720f858597f7f24c4fc295327923af55b74c3c724533" 3026 | dependencies = [ 3027 | "serde_core", 3028 | ] 3029 | 3030 | [[package]] 3031 | name = "toml_edit" 3032 | version = "0.22.27" 3033 | source = "registry+https://github.com/rust-lang/crates.io-index" 3034 | checksum = "41fe8c660ae4257887cf66394862d21dbca4a6ddd26f04a3560410406a2f819a" 3035 | dependencies = [ 3036 | "indexmap", 3037 | "serde", 3038 | "serde_spanned", 3039 | "toml_datetime 0.6.11", 3040 | "toml_write", 3041 | "winnow", 3042 | ] 3043 | 3044 | [[package]] 3045 | name = "toml_edit" 3046 | version = "0.23.7" 3047 | source = "registry+https://github.com/rust-lang/crates.io-index" 3048 | checksum = "6485ef6d0d9b5d0ec17244ff7eb05310113c3f316f2d14200d4de56b3cb98f8d" 3049 | dependencies = [ 3050 | "indexmap", 3051 | "toml_datetime 0.7.3", 3052 | "toml_parser", 3053 | "winnow", 3054 | ] 3055 | 3056 | [[package]] 3057 | name = "toml_parser" 3058 | version = "1.0.4" 3059 | source = "registry+https://github.com/rust-lang/crates.io-index" 3060 | checksum = "c0cbe268d35bdb4bb5a56a2de88d0ad0eb70af5384a99d648cd4b3d04039800e" 3061 | dependencies = [ 3062 | "winnow", 3063 | ] 3064 | 3065 | [[package]] 3066 | name = "toml_write" 3067 | version = "0.1.2" 3068 | source = "registry+https://github.com/rust-lang/crates.io-index" 3069 | checksum = "5d99f8c9a7727884afe522e9bd5edbfc91a3312b36a77b5fb8926e4c31a41801" 3070 | 3071 | [[package]] 3072 | name = "tracing" 3073 | version = "0.1.41" 3074 | source = "registry+https://github.com/rust-lang/crates.io-index" 3075 | checksum = "784e0ac535deb450455cbfa28a6f0df145ea1bb7ae51b821cf5e7927fdcfbdd0" 3076 | dependencies = [ 3077 | "pin-project-lite", 3078 | "tracing-attributes", 3079 | "tracing-core", 3080 | ] 3081 | 3082 | [[package]] 3083 | name = "tracing-attributes" 3084 | version = "0.1.30" 3085 | source = "registry+https://github.com/rust-lang/crates.io-index" 3086 | checksum = "81383ab64e72a7a8b8e13130c49e3dab29def6d0c7d76a03087b3cf71c5c6903" 3087 | dependencies = [ 3088 | "proc-macro2", 3089 | "quote", 3090 | "syn", 3091 | ] 3092 | 3093 | [[package]] 3094 | name = "tracing-core" 3095 | version = "0.1.34" 3096 | source = "registry+https://github.com/rust-lang/crates.io-index" 3097 | checksum = "b9d12581f227e93f094d3af2ae690a574abb8a2b9b7a96e7cfe9647b2b617678" 3098 | dependencies = [ 3099 | "once_cell", 3100 | "valuable", 3101 | ] 3102 | 3103 | [[package]] 3104 | name = "tracing-log" 3105 | version = "0.2.0" 3106 | source = "registry+https://github.com/rust-lang/crates.io-index" 3107 | checksum = "ee855f1f400bd0e5c02d150ae5de3840039a3f54b025156404e34c23c03f47c3" 3108 | dependencies = [ 3109 | "log", 3110 | "once_cell", 3111 | "tracing-core", 3112 | ] 3113 | 3114 | [[package]] 3115 | name = "tracing-subscriber" 3116 | version = "0.3.20" 3117 | source = "registry+https://github.com/rust-lang/crates.io-index" 3118 | checksum = "2054a14f5307d601f88daf0553e1cbf472acc4f2c51afab632431cdcd72124d5" 3119 | dependencies = [ 3120 | "matchers", 3121 | "nu-ansi-term", 3122 | "once_cell", 3123 | "regex-automata", 3124 | "sharded-slab", 3125 | "smallvec", 3126 | "thread_local", 3127 | "tracing", 3128 | "tracing-core", 3129 | "tracing-log", 3130 | ] 3131 | 3132 | [[package]] 3133 | name = "typenum" 3134 | version = "1.19.0" 3135 | source = "registry+https://github.com/rust-lang/crates.io-index" 3136 | checksum = "562d481066bde0658276a35467c4af00bdc6ee726305698a55b86e61d7ad82bb" 3137 | 3138 | [[package]] 3139 | name = "unicode-ident" 3140 | version = "1.0.20" 3141 | source = "registry+https://github.com/rust-lang/crates.io-index" 3142 | checksum = "462eeb75aeb73aea900253ce739c8e18a67423fadf006037cd3ff27e82748a06" 3143 | 3144 | [[package]] 3145 | name = "unicode-segmentation" 3146 | version = "1.12.0" 3147 | source = "registry+https://github.com/rust-lang/crates.io-index" 3148 | checksum = "f6ccf251212114b54433ec949fd6a7841275f9ada20dddd2f29e9ceea4501493" 3149 | 3150 | [[package]] 3151 | name = "unicode-width" 3152 | version = "0.1.14" 3153 | source = "registry+https://github.com/rust-lang/crates.io-index" 3154 | checksum = "7dd6e30e90baa6f72411720665d41d89b9a3d039dc45b8faea1ddd07f617f6af" 3155 | 3156 | [[package]] 3157 | name = "unicode-width" 3158 | version = "0.2.2" 3159 | source = "registry+https://github.com/rust-lang/crates.io-index" 3160 | checksum = "b4ac048d71ede7ee76d585517add45da530660ef4390e49b098733c6e897f254" 3161 | 3162 | [[package]] 3163 | name = "unicode-xid" 3164 | version = "0.2.6" 3165 | source = "registry+https://github.com/rust-lang/crates.io-index" 3166 | checksum = "ebc1c04c71510c7f702b52b7c350734c9ff1295c464a03335b00bb84fc54f853" 3167 | 3168 | [[package]] 3169 | name = "url" 3170 | version = "2.5.7" 3171 | source = "registry+https://github.com/rust-lang/crates.io-index" 3172 | checksum = "08bc136a29a3d1758e07a9cca267be308aeebf5cfd5a10f3f67ab2097683ef5b" 3173 | dependencies = [ 3174 | "form_urlencoded", 3175 | "idna", 3176 | "percent-encoding", 3177 | "serde", 3178 | ] 3179 | 3180 | [[package]] 3181 | name = "utf16_iter" 3182 | version = "1.0.5" 3183 | source = "registry+https://github.com/rust-lang/crates.io-index" 3184 | checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" 3185 | 3186 | [[package]] 3187 | name = "utf8_iter" 3188 | version = "1.0.4" 3189 | source = "registry+https://github.com/rust-lang/crates.io-index" 3190 | checksum = "b6c140620e7ffbb22c2dee59cafe6084a59b5ffc27a8859a5f0d494b5d52b6be" 3191 | 3192 | [[package]] 3193 | name = "uuid" 3194 | version = "1.18.1" 3195 | source = "registry+https://github.com/rust-lang/crates.io-index" 3196 | checksum = "2f87b8aa10b915a06587d0dec516c282ff295b475d94abf425d62b57710070a2" 3197 | dependencies = [ 3198 | "js-sys", 3199 | "wasm-bindgen", 3200 | ] 3201 | 3202 | [[package]] 3203 | name = "valuable" 3204 | version = "0.1.1" 3205 | source = "registry+https://github.com/rust-lang/crates.io-index" 3206 | checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" 3207 | 3208 | [[package]] 3209 | name = "version_check" 3210 | version = "0.9.5" 3211 | source = "registry+https://github.com/rust-lang/crates.io-index" 3212 | checksum = "0b928f33d975fc6ad9f86c8f283853ad26bdd5b10b7f1542aa2fa15e2289105a" 3213 | 3214 | [[package]] 3215 | name = "walkdir" 3216 | version = "2.5.0" 3217 | source = "registry+https://github.com/rust-lang/crates.io-index" 3218 | checksum = "29790946404f91d9c5d06f9874efddea1dc06c5efe94541a7d6863108e3a5e4b" 3219 | dependencies = [ 3220 | "same-file", 3221 | "winapi-util", 3222 | ] 3223 | 3224 | [[package]] 3225 | name = "wasi" 3226 | version = "0.11.1+wasi-snapshot-preview1" 3227 | source = "registry+https://github.com/rust-lang/crates.io-index" 3228 | checksum = "ccf3ec651a847eb01de73ccad15eb7d99f80485de043efb2f370cd654f4ea44b" 3229 | 3230 | [[package]] 3231 | name = "wasip2" 3232 | version = "1.0.1+wasi-0.2.4" 3233 | source = "registry+https://github.com/rust-lang/crates.io-index" 3234 | checksum = "0562428422c63773dad2c345a1882263bbf4d65cf3f42e90921f787ef5ad58e7" 3235 | dependencies = [ 3236 | "wit-bindgen", 3237 | ] 3238 | 3239 | [[package]] 3240 | name = "wasm-bindgen" 3241 | version = "0.2.104" 3242 | source = "registry+https://github.com/rust-lang/crates.io-index" 3243 | checksum = "c1da10c01ae9f1ae40cbfac0bac3b1e724b320abfcf52229f80b547c0d250e2d" 3244 | dependencies = [ 3245 | "cfg-if", 3246 | "once_cell", 3247 | "rustversion", 3248 | "wasm-bindgen-macro", 3249 | "wasm-bindgen-shared", 3250 | ] 3251 | 3252 | [[package]] 3253 | name = "wasm-bindgen-backend" 3254 | version = "0.2.104" 3255 | source = "registry+https://github.com/rust-lang/crates.io-index" 3256 | checksum = "671c9a5a66f49d8a47345ab942e2cb93c7d1d0339065d4f8139c486121b43b19" 3257 | dependencies = [ 3258 | "bumpalo", 3259 | "log", 3260 | "proc-macro2", 3261 | "quote", 3262 | "syn", 3263 | "wasm-bindgen-shared", 3264 | ] 3265 | 3266 | [[package]] 3267 | name = "wasm-bindgen-macro" 3268 | version = "0.2.104" 3269 | source = "registry+https://github.com/rust-lang/crates.io-index" 3270 | checksum = "7ca60477e4c59f5f2986c50191cd972e3a50d8a95603bc9434501cf156a9a119" 3271 | dependencies = [ 3272 | "quote", 3273 | "wasm-bindgen-macro-support", 3274 | ] 3275 | 3276 | [[package]] 3277 | name = "wasm-bindgen-macro-support" 3278 | version = "0.2.104" 3279 | source = "registry+https://github.com/rust-lang/crates.io-index" 3280 | checksum = "9f07d2f20d4da7b26400c9f4a0511e6e0345b040694e8a75bd41d578fa4421d7" 3281 | dependencies = [ 3282 | "proc-macro2", 3283 | "quote", 3284 | "syn", 3285 | "wasm-bindgen-backend", 3286 | "wasm-bindgen-shared", 3287 | ] 3288 | 3289 | [[package]] 3290 | name = "wasm-bindgen-shared" 3291 | version = "0.2.104" 3292 | source = "registry+https://github.com/rust-lang/crates.io-index" 3293 | checksum = "bad67dc8b2a1a6e5448428adec4c3e84c43e561d8c9ee8a9e5aabeb193ec41d1" 3294 | dependencies = [ 3295 | "unicode-ident", 3296 | ] 3297 | 3298 | [[package]] 3299 | name = "wasm-encoder" 3300 | version = "0.239.0" 3301 | source = "registry+https://github.com/rust-lang/crates.io-index" 3302 | checksum = "5be00faa2b4950c76fe618c409d2c3ea5a3c9422013e079482d78544bb2d184c" 3303 | dependencies = [ 3304 | "leb128fmt", 3305 | "wasmparser 0.239.0", 3306 | ] 3307 | 3308 | [[package]] 3309 | name = "wasm-encoder" 3310 | version = "0.240.0" 3311 | source = "registry+https://github.com/rust-lang/crates.io-index" 3312 | checksum = "06d642d8c5ecc083aafe9ceb32809276a304547a3a6eeecceb5d8152598bc71f" 3313 | dependencies = [ 3314 | "leb128fmt", 3315 | "wasmparser 0.240.0", 3316 | ] 3317 | 3318 | [[package]] 3319 | name = "wasmi" 3320 | version = "0.51.1" 3321 | source = "registry+https://github.com/rust-lang/crates.io-index" 3322 | checksum = "cb4f6b71d5cb04a4615b9a8a2e522ba284c491ad847afd9e905d89be15e3efc0" 3323 | dependencies = [ 3324 | "spin 0.9.8", 3325 | "wasmi_collections", 3326 | "wasmi_core", 3327 | "wasmi_ir", 3328 | "wasmparser 0.228.0", 3329 | "wat", 3330 | ] 3331 | 3332 | [[package]] 3333 | name = "wasmi_collections" 3334 | version = "0.51.1" 3335 | source = "registry+https://github.com/rust-lang/crates.io-index" 3336 | checksum = "6a4a11fa090c4d742e5a77dbbc8efbbe1aa151db7335ca6850232e6cafbb1023" 3337 | dependencies = [ 3338 | "string-interner", 3339 | ] 3340 | 3341 | [[package]] 3342 | name = "wasmi_core" 3343 | version = "0.51.1" 3344 | source = "registry+https://github.com/rust-lang/crates.io-index" 3345 | checksum = "ab3e422fc1f4df78c9ded6ed48c4ca6d1f55f4609f04c99962fc07532e4db61d" 3346 | dependencies = [ 3347 | "libm", 3348 | ] 3349 | 3350 | [[package]] 3351 | name = "wasmi_ir" 3352 | version = "0.51.1" 3353 | source = "registry+https://github.com/rust-lang/crates.io-index" 3354 | checksum = "13fe9f9f1747ec81644e764c4dc798f063f5d54a495f0a3b4a375bce9af65399" 3355 | dependencies = [ 3356 | "wasmi_core", 3357 | ] 3358 | 3359 | [[package]] 3360 | name = "wasmparser" 3361 | version = "0.228.0" 3362 | source = "registry+https://github.com/rust-lang/crates.io-index" 3363 | checksum = "4abf1132c1fdf747d56bbc1bb52152400c70f336870f968b85e89ea422198ae3" 3364 | dependencies = [ 3365 | "bitflags 2.10.0", 3366 | "indexmap", 3367 | ] 3368 | 3369 | [[package]] 3370 | name = "wasmparser" 3371 | version = "0.239.0" 3372 | source = "registry+https://github.com/rust-lang/crates.io-index" 3373 | checksum = "8c9d90bb93e764f6beabf1d02028c70a2156a6583e63ac4218dd07ef733368b0" 3374 | dependencies = [ 3375 | "bitflags 2.10.0", 3376 | "hashbrown 0.15.5", 3377 | "indexmap", 3378 | "semver 1.0.27", 3379 | "serde", 3380 | ] 3381 | 3382 | [[package]] 3383 | name = "wasmparser" 3384 | version = "0.240.0" 3385 | source = "registry+https://github.com/rust-lang/crates.io-index" 3386 | checksum = "b722dcf61e0ea47440b53ff83ccb5df8efec57a69d150e4f24882e4eba7e24a4" 3387 | dependencies = [ 3388 | "bitflags 2.10.0", 3389 | "indexmap", 3390 | "semver 1.0.27", 3391 | ] 3392 | 3393 | [[package]] 3394 | name = "wasmprinter" 3395 | version = "0.239.0" 3396 | source = "registry+https://github.com/rust-lang/crates.io-index" 3397 | checksum = "b3981f3d51f39f24f5fc90f93049a90f08dbbca8deba602cd46bb8ca67a94718" 3398 | dependencies = [ 3399 | "anyhow", 3400 | "termcolor", 3401 | "wasmparser 0.239.0", 3402 | ] 3403 | 3404 | [[package]] 3405 | name = "wasmtime" 3406 | version = "38.0.2" 3407 | source = "registry+https://github.com/rust-lang/crates.io-index" 3408 | checksum = "1618d56b73d49f7d581a0302728c2b65b7f0543dbbe845a36c112e16a0b2eafa" 3409 | dependencies = [ 3410 | "addr2line", 3411 | "anyhow", 3412 | "async-trait", 3413 | "bitflags 2.10.0", 3414 | "bumpalo", 3415 | "cc", 3416 | "cfg-if", 3417 | "encoding_rs", 3418 | "fxprof-processed-profile", 3419 | "gimli 0.32.3", 3420 | "hashbrown 0.15.5", 3421 | "indexmap", 3422 | "ittapi", 3423 | "libc", 3424 | "log", 3425 | "mach2", 3426 | "memfd", 3427 | "object", 3428 | "once_cell", 3429 | "postcard", 3430 | "pulley-interpreter", 3431 | "rayon", 3432 | "rustix", 3433 | "semver 1.0.27", 3434 | "serde", 3435 | "serde_derive", 3436 | "serde_json", 3437 | "smallvec", 3438 | "target-lexicon", 3439 | "wasm-encoder 0.239.0", 3440 | "wasmparser 0.239.0", 3441 | "wasmtime-environ", 3442 | "wasmtime-internal-cache", 3443 | "wasmtime-internal-component-macro", 3444 | "wasmtime-internal-component-util", 3445 | "wasmtime-internal-cranelift", 3446 | "wasmtime-internal-fiber", 3447 | "wasmtime-internal-jit-debug", 3448 | "wasmtime-internal-jit-icache-coherence", 3449 | "wasmtime-internal-math", 3450 | "wasmtime-internal-slab", 3451 | "wasmtime-internal-unwinder", 3452 | "wasmtime-internal-versioned-export-macros", 3453 | "wasmtime-internal-winch", 3454 | "wat", 3455 | "windows-sys 0.60.2", 3456 | ] 3457 | 3458 | [[package]] 3459 | name = "wasmtime-environ" 3460 | version = "38.0.2" 3461 | source = "registry+https://github.com/rust-lang/crates.io-index" 3462 | checksum = "f7e14326763d15ad17fae8085159504070a3c503a006363fbf46095dcb9f5c5e" 3463 | dependencies = [ 3464 | "anyhow", 3465 | "cpp_demangle", 3466 | "cranelift-bitset 0.125.2", 3467 | "cranelift-entity 0.125.2", 3468 | "gimli 0.32.3", 3469 | "indexmap", 3470 | "log", 3471 | "object", 3472 | "postcard", 3473 | "rustc-demangle", 3474 | "semver 1.0.27", 3475 | "serde", 3476 | "serde_derive", 3477 | "smallvec", 3478 | "target-lexicon", 3479 | "wasm-encoder 0.239.0", 3480 | "wasmparser 0.239.0", 3481 | "wasmprinter", 3482 | "wasmtime-internal-component-util", 3483 | ] 3484 | 3485 | [[package]] 3486 | name = "wasmtime-internal-cache" 3487 | version = "38.0.2" 3488 | source = "registry+https://github.com/rust-lang/crates.io-index" 3489 | checksum = "ce24819a0a05099a5bf1d94b2e42d49e05f503f546a0636361b3c04cedf343ae" 3490 | dependencies = [ 3491 | "anyhow", 3492 | "base64", 3493 | "directories-next", 3494 | "log", 3495 | "postcard", 3496 | "rustix", 3497 | "serde", 3498 | "serde_derive", 3499 | "sha2", 3500 | "toml", 3501 | "windows-sys 0.60.2", 3502 | "zstd", 3503 | ] 3504 | 3505 | [[package]] 3506 | name = "wasmtime-internal-component-macro" 3507 | version = "38.0.2" 3508 | source = "registry+https://github.com/rust-lang/crates.io-index" 3509 | checksum = "f97934c61a29aea3271f82ecf3c0f2b7f47dd8708a439168d62731611fcf52de" 3510 | dependencies = [ 3511 | "anyhow", 3512 | "proc-macro2", 3513 | "quote", 3514 | "syn", 3515 | "wasmtime-internal-component-util", 3516 | "wasmtime-internal-wit-bindgen", 3517 | "wit-parser", 3518 | ] 3519 | 3520 | [[package]] 3521 | name = "wasmtime-internal-component-util" 3522 | version = "38.0.2" 3523 | source = "registry+https://github.com/rust-lang/crates.io-index" 3524 | checksum = "38c8efb189259d72845f442771086f2e0230ec71720f94a318b8f38e7384a447" 3525 | 3526 | [[package]] 3527 | name = "wasmtime-internal-cranelift" 3528 | version = "38.0.2" 3529 | source = "registry+https://github.com/rust-lang/crates.io-index" 3530 | checksum = "2a2af45574e4cb39d93f46e54439bbddc0f0e189786efd3f7ff99dbc3ba4f372" 3531 | dependencies = [ 3532 | "anyhow", 3533 | "cfg-if", 3534 | "cranelift-codegen 0.125.2", 3535 | "cranelift-control 0.125.2", 3536 | "cranelift-entity 0.125.2", 3537 | "cranelift-frontend 0.125.2", 3538 | "cranelift-native 0.125.2", 3539 | "gimli 0.32.3", 3540 | "itertools 0.14.0", 3541 | "log", 3542 | "object", 3543 | "pulley-interpreter", 3544 | "smallvec", 3545 | "target-lexicon", 3546 | "thiserror 2.0.17", 3547 | "wasmparser 0.239.0", 3548 | "wasmtime-environ", 3549 | "wasmtime-internal-math", 3550 | "wasmtime-internal-unwinder", 3551 | "wasmtime-internal-versioned-export-macros", 3552 | ] 3553 | 3554 | [[package]] 3555 | name = "wasmtime-internal-fiber" 3556 | version = "38.0.2" 3557 | source = "registry+https://github.com/rust-lang/crates.io-index" 3558 | checksum = "e17fafc65ad02b1c4672fb286a2a5e0ae81eef5889125578111b7fa719ce69d4" 3559 | dependencies = [ 3560 | "anyhow", 3561 | "cc", 3562 | "cfg-if", 3563 | "libc", 3564 | "rustix", 3565 | "wasmtime-internal-versioned-export-macros", 3566 | "windows-sys 0.60.2", 3567 | ] 3568 | 3569 | [[package]] 3570 | name = "wasmtime-internal-jit-debug" 3571 | version = "38.0.2" 3572 | source = "registry+https://github.com/rust-lang/crates.io-index" 3573 | checksum = "16d196f1b9062c6acf0029f28df013124931fc22bee8f500055e8b866632fbd0" 3574 | dependencies = [ 3575 | "cc", 3576 | "object", 3577 | "rustix", 3578 | "wasmtime-internal-versioned-export-macros", 3579 | ] 3580 | 3581 | [[package]] 3582 | name = "wasmtime-internal-jit-icache-coherence" 3583 | version = "38.0.2" 3584 | source = "registry+https://github.com/rust-lang/crates.io-index" 3585 | checksum = "ec43a7b2a58fc434ea14bbe681282ce8cca429b7f3703818bd4421fcdd1877ea" 3586 | dependencies = [ 3587 | "anyhow", 3588 | "cfg-if", 3589 | "libc", 3590 | "windows-sys 0.60.2", 3591 | ] 3592 | 3593 | [[package]] 3594 | name = "wasmtime-internal-math" 3595 | version = "38.0.2" 3596 | source = "registry+https://github.com/rust-lang/crates.io-index" 3597 | checksum = "28656769d952cd0fc964c8d2a37839f423dc85eb6c39e94cb840c4b0fe078486" 3598 | dependencies = [ 3599 | "libm", 3600 | ] 3601 | 3602 | [[package]] 3603 | name = "wasmtime-internal-slab" 3604 | version = "38.0.2" 3605 | source = "registry+https://github.com/rust-lang/crates.io-index" 3606 | checksum = "9dd6a13761f04f0734daff63c12654574c3b0dda03c18817090f1305a874eb3b" 3607 | 3608 | [[package]] 3609 | name = "wasmtime-internal-unwinder" 3610 | version = "38.0.2" 3611 | source = "registry+https://github.com/rust-lang/crates.io-index" 3612 | checksum = "7a2916edeb29a21a43229680879840f62e30a626515575b0af142a0d7b0559d5" 3613 | dependencies = [ 3614 | "anyhow", 3615 | "cfg-if", 3616 | "cranelift-codegen 0.125.2", 3617 | "log", 3618 | "object", 3619 | ] 3620 | 3621 | [[package]] 3622 | name = "wasmtime-internal-versioned-export-macros" 3623 | version = "38.0.2" 3624 | source = "registry+https://github.com/rust-lang/crates.io-index" 3625 | checksum = "5c0442c2507130433611f2845bd5cb75506b7beb14bef146ed99131f5eafac53" 3626 | dependencies = [ 3627 | "proc-macro2", 3628 | "quote", 3629 | "syn", 3630 | ] 3631 | 3632 | [[package]] 3633 | name = "wasmtime-internal-winch" 3634 | version = "38.0.2" 3635 | source = "registry+https://github.com/rust-lang/crates.io-index" 3636 | checksum = "c17ec692680e9d31563fa7ea1ba4bd134d02ad6ff4419a31b66fbf9981850776" 3637 | dependencies = [ 3638 | "anyhow", 3639 | "cranelift-codegen 0.125.2", 3640 | "gimli 0.32.3", 3641 | "log", 3642 | "object", 3643 | "target-lexicon", 3644 | "wasmparser 0.239.0", 3645 | "wasmtime-environ", 3646 | "wasmtime-internal-cranelift", 3647 | "winch-codegen", 3648 | ] 3649 | 3650 | [[package]] 3651 | name = "wasmtime-internal-wit-bindgen" 3652 | version = "38.0.2" 3653 | source = "registry+https://github.com/rust-lang/crates.io-index" 3654 | checksum = "f296862556e6234a9e2c7698db10ba37baec6a0a600abea65e0cb53836ab51b7" 3655 | dependencies = [ 3656 | "anyhow", 3657 | "bitflags 2.10.0", 3658 | "heck", 3659 | "indexmap", 3660 | "wit-parser", 3661 | ] 3662 | 3663 | [[package]] 3664 | name = "wasmtime-jit-icache-coherence" 3665 | version = "33.0.2" 3666 | source = "registry+https://github.com/rust-lang/crates.io-index" 3667 | checksum = "7af0e940cb062a45c0b3f01a926f77da5947149e99beb4e3dd9846d5b8f11619" 3668 | dependencies = [ 3669 | "anyhow", 3670 | "cfg-if", 3671 | "libc", 3672 | "windows-sys 0.59.0", 3673 | ] 3674 | 3675 | [[package]] 3676 | name = "wast" 3677 | version = "240.0.0" 3678 | source = "registry+https://github.com/rust-lang/crates.io-index" 3679 | checksum = "b0efe1c93db4ac562b9733e3dca19ed7fc878dba29aef22245acf84f13da4a19" 3680 | dependencies = [ 3681 | "bumpalo", 3682 | "leb128fmt", 3683 | "memchr", 3684 | "unicode-width 0.2.2", 3685 | "wasm-encoder 0.240.0", 3686 | ] 3687 | 3688 | [[package]] 3689 | name = "wat" 3690 | version = "1.240.0" 3691 | source = "registry+https://github.com/rust-lang/crates.io-index" 3692 | checksum = "4ec9b6eab7ecd4d639d78515e9ea491c9bacf494aa5eda10823bd35992cf8c1e" 3693 | dependencies = [ 3694 | "wast", 3695 | ] 3696 | 3697 | [[package]] 3698 | name = "web-sys" 3699 | version = "0.3.81" 3700 | source = "registry+https://github.com/rust-lang/crates.io-index" 3701 | checksum = "9367c417a924a74cae129e6a2ae3b47fabb1f8995595ab474029da749a8be120" 3702 | dependencies = [ 3703 | "js-sys", 3704 | "wasm-bindgen", 3705 | ] 3706 | 3707 | [[package]] 3708 | name = "which" 3709 | version = "8.0.0" 3710 | source = "registry+https://github.com/rust-lang/crates.io-index" 3711 | checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d" 3712 | dependencies = [ 3713 | "env_home", 3714 | "rustix", 3715 | "winsafe", 3716 | ] 3717 | 3718 | [[package]] 3719 | name = "winapi" 3720 | version = "0.3.9" 3721 | source = "registry+https://github.com/rust-lang/crates.io-index" 3722 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 3723 | dependencies = [ 3724 | "winapi-i686-pc-windows-gnu", 3725 | "winapi-x86_64-pc-windows-gnu", 3726 | ] 3727 | 3728 | [[package]] 3729 | name = "winapi-i686-pc-windows-gnu" 3730 | version = "0.4.0" 3731 | source = "registry+https://github.com/rust-lang/crates.io-index" 3732 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 3733 | 3734 | [[package]] 3735 | name = "winapi-util" 3736 | version = "0.1.11" 3737 | source = "registry+https://github.com/rust-lang/crates.io-index" 3738 | checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" 3739 | dependencies = [ 3740 | "windows-sys 0.61.2", 3741 | ] 3742 | 3743 | [[package]] 3744 | name = "winapi-x86_64-pc-windows-gnu" 3745 | version = "0.4.0" 3746 | source = "registry+https://github.com/rust-lang/crates.io-index" 3747 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 3748 | 3749 | [[package]] 3750 | name = "winch-codegen" 3751 | version = "38.0.2" 3752 | source = "registry+https://github.com/rust-lang/crates.io-index" 3753 | checksum = "fb5211d1fceef29b5b45f0bfa23e6afa60c681b83531bcdff015ede50e5d03c6" 3754 | dependencies = [ 3755 | "anyhow", 3756 | "cranelift-assembler-x64 0.125.2", 3757 | "cranelift-codegen 0.125.2", 3758 | "gimli 0.32.3", 3759 | "regalloc2 0.13.2", 3760 | "smallvec", 3761 | "target-lexicon", 3762 | "thiserror 2.0.17", 3763 | "wasmparser 0.239.0", 3764 | "wasmtime-environ", 3765 | "wasmtime-internal-cranelift", 3766 | "wasmtime-internal-math", 3767 | ] 3768 | 3769 | [[package]] 3770 | name = "windows" 3771 | version = "0.61.3" 3772 | source = "registry+https://github.com/rust-lang/crates.io-index" 3773 | checksum = "9babd3a767a4c1aef6900409f85f5d53ce2544ccdfaa86dad48c91782c6d6893" 3774 | dependencies = [ 3775 | "windows-collections", 3776 | "windows-core 0.61.2", 3777 | "windows-future", 3778 | "windows-link 0.1.3", 3779 | "windows-numerics", 3780 | ] 3781 | 3782 | [[package]] 3783 | name = "windows-collections" 3784 | version = "0.2.0" 3785 | source = "registry+https://github.com/rust-lang/crates.io-index" 3786 | checksum = "3beeceb5e5cfd9eb1d76b381630e82c4241ccd0d27f1a39ed41b2760b255c5e8" 3787 | dependencies = [ 3788 | "windows-core 0.61.2", 3789 | ] 3790 | 3791 | [[package]] 3792 | name = "windows-core" 3793 | version = "0.61.2" 3794 | source = "registry+https://github.com/rust-lang/crates.io-index" 3795 | checksum = "c0fdd3ddb90610c7638aa2b3a3ab2904fb9e5cdbecc643ddb3647212781c4ae3" 3796 | dependencies = [ 3797 | "windows-implement", 3798 | "windows-interface", 3799 | "windows-link 0.1.3", 3800 | "windows-result 0.3.4", 3801 | "windows-strings 0.4.2", 3802 | ] 3803 | 3804 | [[package]] 3805 | name = "windows-core" 3806 | version = "0.62.2" 3807 | source = "registry+https://github.com/rust-lang/crates.io-index" 3808 | checksum = "b8e83a14d34d0623b51dce9581199302a221863196a1dde71a7663a4c2be9deb" 3809 | dependencies = [ 3810 | "windows-implement", 3811 | "windows-interface", 3812 | "windows-link 0.2.1", 3813 | "windows-result 0.4.1", 3814 | "windows-strings 0.5.1", 3815 | ] 3816 | 3817 | [[package]] 3818 | name = "windows-future" 3819 | version = "0.2.1" 3820 | source = "registry+https://github.com/rust-lang/crates.io-index" 3821 | checksum = "fc6a41e98427b19fe4b73c550f060b59fa592d7d686537eebf9385621bfbad8e" 3822 | dependencies = [ 3823 | "windows-core 0.61.2", 3824 | "windows-link 0.1.3", 3825 | "windows-threading", 3826 | ] 3827 | 3828 | [[package]] 3829 | name = "windows-implement" 3830 | version = "0.60.2" 3831 | source = "registry+https://github.com/rust-lang/crates.io-index" 3832 | checksum = "053e2e040ab57b9dc951b72c264860db7eb3b0200ba345b4e4c3b14f67855ddf" 3833 | dependencies = [ 3834 | "proc-macro2", 3835 | "quote", 3836 | "syn", 3837 | ] 3838 | 3839 | [[package]] 3840 | name = "windows-interface" 3841 | version = "0.59.3" 3842 | source = "registry+https://github.com/rust-lang/crates.io-index" 3843 | checksum = "3f316c4a2570ba26bbec722032c4099d8c8bc095efccdc15688708623367e358" 3844 | dependencies = [ 3845 | "proc-macro2", 3846 | "quote", 3847 | "syn", 3848 | ] 3849 | 3850 | [[package]] 3851 | name = "windows-link" 3852 | version = "0.1.3" 3853 | source = "registry+https://github.com/rust-lang/crates.io-index" 3854 | checksum = "5e6ad25900d524eaabdbbb96d20b4311e1e7ae1699af4fb28c17ae66c80d798a" 3855 | 3856 | [[package]] 3857 | name = "windows-link" 3858 | version = "0.2.1" 3859 | source = "registry+https://github.com/rust-lang/crates.io-index" 3860 | checksum = "f0805222e57f7521d6a62e36fa9163bc891acd422f971defe97d64e70d0a4fe5" 3861 | 3862 | [[package]] 3863 | name = "windows-numerics" 3864 | version = "0.2.0" 3865 | source = "registry+https://github.com/rust-lang/crates.io-index" 3866 | checksum = "9150af68066c4c5c07ddc0ce30421554771e528bde427614c61038bc2c92c2b1" 3867 | dependencies = [ 3868 | "windows-core 0.61.2", 3869 | "windows-link 0.1.3", 3870 | ] 3871 | 3872 | [[package]] 3873 | name = "windows-result" 3874 | version = "0.3.4" 3875 | source = "registry+https://github.com/rust-lang/crates.io-index" 3876 | checksum = "56f42bd332cc6c8eac5af113fc0c1fd6a8fd2aa08a0119358686e5160d0586c6" 3877 | dependencies = [ 3878 | "windows-link 0.1.3", 3879 | ] 3880 | 3881 | [[package]] 3882 | name = "windows-result" 3883 | version = "0.4.1" 3884 | source = "registry+https://github.com/rust-lang/crates.io-index" 3885 | checksum = "7781fa89eaf60850ac3d2da7af8e5242a5ea78d1a11c49bf2910bb5a73853eb5" 3886 | dependencies = [ 3887 | "windows-link 0.2.1", 3888 | ] 3889 | 3890 | [[package]] 3891 | name = "windows-strings" 3892 | version = "0.4.2" 3893 | source = "registry+https://github.com/rust-lang/crates.io-index" 3894 | checksum = "56e6c93f3a0c3b36176cb1327a4958a0353d5d166c2a35cb268ace15e91d3b57" 3895 | dependencies = [ 3896 | "windows-link 0.1.3", 3897 | ] 3898 | 3899 | [[package]] 3900 | name = "windows-strings" 3901 | version = "0.5.1" 3902 | source = "registry+https://github.com/rust-lang/crates.io-index" 3903 | checksum = "7837d08f69c77cf6b07689544538e017c1bfcf57e34b4c0ff58e6c2cd3b37091" 3904 | dependencies = [ 3905 | "windows-link 0.2.1", 3906 | ] 3907 | 3908 | [[package]] 3909 | name = "windows-sys" 3910 | version = "0.52.0" 3911 | source = "registry+https://github.com/rust-lang/crates.io-index" 3912 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 3913 | dependencies = [ 3914 | "windows-targets 0.52.6", 3915 | ] 3916 | 3917 | [[package]] 3918 | name = "windows-sys" 3919 | version = "0.59.0" 3920 | source = "registry+https://github.com/rust-lang/crates.io-index" 3921 | checksum = "1e38bc4d79ed67fd075bcc251a1c39b32a1776bbe92e5bef1f0bf1f8c531853b" 3922 | dependencies = [ 3923 | "windows-targets 0.52.6", 3924 | ] 3925 | 3926 | [[package]] 3927 | name = "windows-sys" 3928 | version = "0.60.2" 3929 | source = "registry+https://github.com/rust-lang/crates.io-index" 3930 | checksum = "f2f500e4d28234f72040990ec9d39e3a6b950f9f22d3dba18416c35882612bcb" 3931 | dependencies = [ 3932 | "windows-targets 0.53.5", 3933 | ] 3934 | 3935 | [[package]] 3936 | name = "windows-sys" 3937 | version = "0.61.2" 3938 | source = "registry+https://github.com/rust-lang/crates.io-index" 3939 | checksum = "ae137229bcbd6cdf0f7b80a31df61766145077ddf49416a728b02cb3921ff3fc" 3940 | dependencies = [ 3941 | "windows-link 0.2.1", 3942 | ] 3943 | 3944 | [[package]] 3945 | name = "windows-targets" 3946 | version = "0.52.6" 3947 | source = "registry+https://github.com/rust-lang/crates.io-index" 3948 | checksum = "9b724f72796e036ab90c1021d4780d4d3d648aca59e491e6b98e725b84e99973" 3949 | dependencies = [ 3950 | "windows_aarch64_gnullvm 0.52.6", 3951 | "windows_aarch64_msvc 0.52.6", 3952 | "windows_i686_gnu 0.52.6", 3953 | "windows_i686_gnullvm 0.52.6", 3954 | "windows_i686_msvc 0.52.6", 3955 | "windows_x86_64_gnu 0.52.6", 3956 | "windows_x86_64_gnullvm 0.52.6", 3957 | "windows_x86_64_msvc 0.52.6", 3958 | ] 3959 | 3960 | [[package]] 3961 | name = "windows-targets" 3962 | version = "0.53.5" 3963 | source = "registry+https://github.com/rust-lang/crates.io-index" 3964 | checksum = "4945f9f551b88e0d65f3db0bc25c33b8acea4d9e41163edf90dcd0b19f9069f3" 3965 | dependencies = [ 3966 | "windows-link 0.2.1", 3967 | "windows_aarch64_gnullvm 0.53.1", 3968 | "windows_aarch64_msvc 0.53.1", 3969 | "windows_i686_gnu 0.53.1", 3970 | "windows_i686_gnullvm 0.53.1", 3971 | "windows_i686_msvc 0.53.1", 3972 | "windows_x86_64_gnu 0.53.1", 3973 | "windows_x86_64_gnullvm 0.53.1", 3974 | "windows_x86_64_msvc 0.53.1", 3975 | ] 3976 | 3977 | [[package]] 3978 | name = "windows-threading" 3979 | version = "0.1.0" 3980 | source = "registry+https://github.com/rust-lang/crates.io-index" 3981 | checksum = "b66463ad2e0ea3bbf808b7f1d371311c80e115c0b71d60efc142cafbcfb057a6" 3982 | dependencies = [ 3983 | "windows-link 0.1.3", 3984 | ] 3985 | 3986 | [[package]] 3987 | name = "windows_aarch64_gnullvm" 3988 | version = "0.52.6" 3989 | source = "registry+https://github.com/rust-lang/crates.io-index" 3990 | checksum = "32a4622180e7a0ec044bb555404c800bc9fd9ec262ec147edd5989ccd0c02cd3" 3991 | 3992 | [[package]] 3993 | name = "windows_aarch64_gnullvm" 3994 | version = "0.53.1" 3995 | source = "registry+https://github.com/rust-lang/crates.io-index" 3996 | checksum = "a9d8416fa8b42f5c947f8482c43e7d89e73a173cead56d044f6a56104a6d1b53" 3997 | 3998 | [[package]] 3999 | name = "windows_aarch64_msvc" 4000 | version = "0.52.6" 4001 | source = "registry+https://github.com/rust-lang/crates.io-index" 4002 | checksum = "09ec2a7bb152e2252b53fa7803150007879548bc709c039df7627cabbd05d469" 4003 | 4004 | [[package]] 4005 | name = "windows_aarch64_msvc" 4006 | version = "0.53.1" 4007 | source = "registry+https://github.com/rust-lang/crates.io-index" 4008 | checksum = "b9d782e804c2f632e395708e99a94275910eb9100b2114651e04744e9b125006" 4009 | 4010 | [[package]] 4011 | name = "windows_i686_gnu" 4012 | version = "0.52.6" 4013 | source = "registry+https://github.com/rust-lang/crates.io-index" 4014 | checksum = "8e9b5ad5ab802e97eb8e295ac6720e509ee4c243f69d781394014ebfe8bbfa0b" 4015 | 4016 | [[package]] 4017 | name = "windows_i686_gnu" 4018 | version = "0.53.1" 4019 | source = "registry+https://github.com/rust-lang/crates.io-index" 4020 | checksum = "960e6da069d81e09becb0ca57a65220ddff016ff2d6af6a223cf372a506593a3" 4021 | 4022 | [[package]] 4023 | name = "windows_i686_gnullvm" 4024 | version = "0.52.6" 4025 | source = "registry+https://github.com/rust-lang/crates.io-index" 4026 | checksum = "0eee52d38c090b3caa76c563b86c3a4bd71ef1a819287c19d586d7334ae8ed66" 4027 | 4028 | [[package]] 4029 | name = "windows_i686_gnullvm" 4030 | version = "0.53.1" 4031 | source = "registry+https://github.com/rust-lang/crates.io-index" 4032 | checksum = "fa7359d10048f68ab8b09fa71c3daccfb0e9b559aed648a8f95469c27057180c" 4033 | 4034 | [[package]] 4035 | name = "windows_i686_msvc" 4036 | version = "0.52.6" 4037 | source = "registry+https://github.com/rust-lang/crates.io-index" 4038 | checksum = "240948bc05c5e7c6dabba28bf89d89ffce3e303022809e73deaefe4f6ec56c66" 4039 | 4040 | [[package]] 4041 | name = "windows_i686_msvc" 4042 | version = "0.53.1" 4043 | source = "registry+https://github.com/rust-lang/crates.io-index" 4044 | checksum = "1e7ac75179f18232fe9c285163565a57ef8d3c89254a30685b57d83a38d326c2" 4045 | 4046 | [[package]] 4047 | name = "windows_x86_64_gnu" 4048 | version = "0.52.6" 4049 | source = "registry+https://github.com/rust-lang/crates.io-index" 4050 | checksum = "147a5c80aabfbf0c7d901cb5895d1de30ef2907eb21fbbab29ca94c5b08b1a78" 4051 | 4052 | [[package]] 4053 | name = "windows_x86_64_gnu" 4054 | version = "0.53.1" 4055 | source = "registry+https://github.com/rust-lang/crates.io-index" 4056 | checksum = "9c3842cdd74a865a8066ab39c8a7a473c0778a3f29370b5fd6b4b9aa7df4a499" 4057 | 4058 | [[package]] 4059 | name = "windows_x86_64_gnullvm" 4060 | version = "0.52.6" 4061 | source = "registry+https://github.com/rust-lang/crates.io-index" 4062 | checksum = "24d5b23dc417412679681396f2b49f3de8c1473deb516bd34410872eff51ed0d" 4063 | 4064 | [[package]] 4065 | name = "windows_x86_64_gnullvm" 4066 | version = "0.53.1" 4067 | source = "registry+https://github.com/rust-lang/crates.io-index" 4068 | checksum = "0ffa179e2d07eee8ad8f57493436566c7cc30ac536a3379fdf008f47f6bb7ae1" 4069 | 4070 | [[package]] 4071 | name = "windows_x86_64_msvc" 4072 | version = "0.52.6" 4073 | source = "registry+https://github.com/rust-lang/crates.io-index" 4074 | checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" 4075 | 4076 | [[package]] 4077 | name = "windows_x86_64_msvc" 4078 | version = "0.53.1" 4079 | source = "registry+https://github.com/rust-lang/crates.io-index" 4080 | checksum = "d6bbff5f0aada427a1e5a6da5f1f98158182f26556f345ac9e04d36d0ebed650" 4081 | 4082 | [[package]] 4083 | name = "winnow" 4084 | version = "0.7.13" 4085 | source = "registry+https://github.com/rust-lang/crates.io-index" 4086 | checksum = "21a0236b59786fed61e2a80582dd500fe61f18b5dca67a4a067d0bc9039339cf" 4087 | dependencies = [ 4088 | "memchr", 4089 | ] 4090 | 4091 | [[package]] 4092 | name = "winsafe" 4093 | version = "0.0.19" 4094 | source = "registry+https://github.com/rust-lang/crates.io-index" 4095 | checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" 4096 | 4097 | [[package]] 4098 | name = "wit-bindgen" 4099 | version = "0.46.0" 4100 | source = "registry+https://github.com/rust-lang/crates.io-index" 4101 | checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" 4102 | 4103 | [[package]] 4104 | name = "wit-parser" 4105 | version = "0.239.0" 4106 | source = "registry+https://github.com/rust-lang/crates.io-index" 4107 | checksum = "55c92c939d667b7bf0c6bf2d1f67196529758f99a2a45a3355cc56964fd5315d" 4108 | dependencies = [ 4109 | "anyhow", 4110 | "id-arena", 4111 | "indexmap", 4112 | "log", 4113 | "semver 1.0.27", 4114 | "serde", 4115 | "serde_derive", 4116 | "serde_json", 4117 | "unicode-xid", 4118 | "wasmparser 0.239.0", 4119 | ] 4120 | 4121 | [[package]] 4122 | name = "write16" 4123 | version = "1.0.0" 4124 | source = "registry+https://github.com/rust-lang/crates.io-index" 4125 | checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" 4126 | 4127 | [[package]] 4128 | name = "writeable" 4129 | version = "0.6.1" 4130 | source = "registry+https://github.com/rust-lang/crates.io-index" 4131 | checksum = "ea2f10b9bb0928dfb1b42b65e1f9e36f7f54dbdf08457afefb38afcdec4fa2bb" 4132 | 4133 | [[package]] 4134 | name = "xsum" 4135 | version = "0.1.6" 4136 | source = "registry+https://github.com/rust-lang/crates.io-index" 4137 | checksum = "0637d3a5566a82fa5214bae89087bc8c9fb94cd8e8a3c07feb691bb8d9c632db" 4138 | 4139 | [[package]] 4140 | name = "yansi" 4141 | version = "1.0.1" 4142 | source = "registry+https://github.com/rust-lang/crates.io-index" 4143 | checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" 4144 | 4145 | [[package]] 4146 | name = "yoke" 4147 | version = "0.8.0" 4148 | source = "registry+https://github.com/rust-lang/crates.io-index" 4149 | checksum = "5f41bb01b8226ef4bfd589436a297c53d118f65921786300e427be8d487695cc" 4150 | dependencies = [ 4151 | "serde", 4152 | "stable_deref_trait", 4153 | "yoke-derive", 4154 | "zerofrom", 4155 | ] 4156 | 4157 | [[package]] 4158 | name = "yoke-derive" 4159 | version = "0.8.0" 4160 | source = "registry+https://github.com/rust-lang/crates.io-index" 4161 | checksum = "38da3c9736e16c5d3c8c597a9aaa5d1fa565d0532ae05e27c24aa62fb32c0ab6" 4162 | dependencies = [ 4163 | "proc-macro2", 4164 | "quote", 4165 | "syn", 4166 | "synstructure", 4167 | ] 4168 | 4169 | [[package]] 4170 | name = "zerocopy" 4171 | version = "0.8.27" 4172 | source = "registry+https://github.com/rust-lang/crates.io-index" 4173 | checksum = "0894878a5fa3edfd6da3f88c4805f4c8558e2b996227a3d864f47fe11e38282c" 4174 | dependencies = [ 4175 | "zerocopy-derive", 4176 | ] 4177 | 4178 | [[package]] 4179 | name = "zerocopy-derive" 4180 | version = "0.8.27" 4181 | source = "registry+https://github.com/rust-lang/crates.io-index" 4182 | checksum = "88d2b8d9c68ad2b9e4340d7832716a4d21a22a1154777ad56ea55c51a9cf3831" 4183 | dependencies = [ 4184 | "proc-macro2", 4185 | "quote", 4186 | "syn", 4187 | ] 4188 | 4189 | [[package]] 4190 | name = "zerofrom" 4191 | version = "0.1.6" 4192 | source = "registry+https://github.com/rust-lang/crates.io-index" 4193 | checksum = "50cc42e0333e05660c3587f3bf9d0478688e15d870fab3346451ce7f8c9fbea5" 4194 | dependencies = [ 4195 | "zerofrom-derive", 4196 | ] 4197 | 4198 | [[package]] 4199 | name = "zerofrom-derive" 4200 | version = "0.1.6" 4201 | source = "registry+https://github.com/rust-lang/crates.io-index" 4202 | checksum = "d71e5d6e06ab090c67b5e44993ec16b72dcbaabc526db883a360057678b48502" 4203 | dependencies = [ 4204 | "proc-macro2", 4205 | "quote", 4206 | "syn", 4207 | "synstructure", 4208 | ] 4209 | 4210 | [[package]] 4211 | name = "zerotrie" 4212 | version = "0.2.2" 4213 | source = "registry+https://github.com/rust-lang/crates.io-index" 4214 | checksum = "36f0bbd478583f79edad978b407914f61b2972f5af6fa089686016be8f9af595" 4215 | dependencies = [ 4216 | "displaydoc", 4217 | "yoke", 4218 | "zerofrom", 4219 | ] 4220 | 4221 | [[package]] 4222 | name = "zerovec" 4223 | version = "0.11.4" 4224 | source = "registry+https://github.com/rust-lang/crates.io-index" 4225 | checksum = "e7aa2bd55086f1ab526693ecbe444205da57e25f4489879da80635a46d90e73b" 4226 | dependencies = [ 4227 | "yoke", 4228 | "zerofrom", 4229 | "zerovec-derive", 4230 | ] 4231 | 4232 | [[package]] 4233 | name = "zerovec-derive" 4234 | version = "0.11.1" 4235 | source = "registry+https://github.com/rust-lang/crates.io-index" 4236 | checksum = "5b96237efa0c878c64bd89c436f661be4e46b2f3eff1ebb976f7ef2321d2f58f" 4237 | dependencies = [ 4238 | "proc-macro2", 4239 | "quote", 4240 | "syn", 4241 | ] 4242 | 4243 | [[package]] 4244 | name = "zstd" 4245 | version = "0.13.3" 4246 | source = "registry+https://github.com/rust-lang/crates.io-index" 4247 | checksum = "e91ee311a569c327171651566e07972200e76fcfe2242a4fa446149a3881c08a" 4248 | dependencies = [ 4249 | "zstd-safe", 4250 | ] 4251 | 4252 | [[package]] 4253 | name = "zstd-safe" 4254 | version = "7.2.4" 4255 | source = "registry+https://github.com/rust-lang/crates.io-index" 4256 | checksum = "8f49c4d5f0abb602a93fb8736af2a4f4dd9512e36f7f570d66e65ff867ed3b9d" 4257 | dependencies = [ 4258 | "zstd-sys", 4259 | ] 4260 | 4261 | [[package]] 4262 | name = "zstd-sys" 4263 | version = "2.0.16+zstd.1.5.7" 4264 | source = "registry+https://github.com/rust-lang/crates.io-index" 4265 | checksum = "91e19ebc2adc8f83e43039e79776e3fda8ca919132d68a1fed6a5faca2683748" 4266 | dependencies = [ 4267 | "cc", 4268 | "pkg-config", 4269 | ] 4270 | --------------------------------------------------------------------------------