├── .gitignore ├── crates ├── quickjs-wasm │ ├── dependencies │ │ └── index.js │ ├── Cargo.toml │ ├── src │ │ ├── main.rs │ │ ├── context.rs │ │ └── io.rs │ └── Cargo.lock └── quickjs │ ├── Cargo.toml │ ├── benches │ └── benchmark.rs │ ├── examples │ ├── iter.rs │ └── par_iter.rs │ └── src │ └── lib.rs ├── Cargo.toml ├── Makefile ├── .devcontainer ├── Dockerfile └── devcontainer.json ├── LICENSE ├── track_points.js ├── .github └── workflows │ └── rust.yml ├── README.md └── Cargo.lock /.gitignore: -------------------------------------------------------------------------------- 1 | target 2 | quickjs.wasm -------------------------------------------------------------------------------- /crates/quickjs-wasm/dependencies/index.js: -------------------------------------------------------------------------------- 1 | // add any code that you want to initialize here -------------------------------------------------------------------------------- /Cargo.toml: -------------------------------------------------------------------------------- 1 | [workspace] 2 | members = [ 3 | "crates/quickjs", 4 | "crates/quickjs-wasm", 5 | ] 6 | resolver = "2" 7 | 8 | [workspace.dependencies] 9 | anyhow = "1.0.86" 10 | 11 | [profile.release] 12 | codegen-units = 1 13 | lto = true 14 | opt-level = 3 -------------------------------------------------------------------------------- /crates/quickjs/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "quickjs" 3 | version = "0.6.0" 4 | edition = "2021" 5 | 6 | [dependencies] 7 | anyhow = { workspace = true } 8 | wasi-common = "23.0.1" 9 | wasmtime = "23.0.1" 10 | wasmtime-wasi = "23.0.1" 11 | 12 | [dev-dependencies] 13 | clap = { version = "4.5.11", features = ["derive"] } 14 | num_cpus = "1.16.0" 15 | rayon = "1.10.0" 16 | criterion = "0.5.1" 17 | 18 | [[bench]] 19 | name = "benchmark" 20 | harness = false -------------------------------------------------------------------------------- /crates/quickjs-wasm/Cargo.toml: -------------------------------------------------------------------------------- 1 | [package] 2 | name = "quickjs-wasm" 3 | version = "0.6.0" 4 | authors = [""] 5 | edition = "2021" 6 | license = "MIT" 7 | 8 | # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html 9 | 10 | [dependencies] 11 | anyhow = { workspace = true } 12 | once_cell = "1.19.0" 13 | quickjs-wasm-rs = "3.1.0" 14 | serde_json = "1.0.121" 15 | serde-transcode = "1.1.1" 16 | 17 | [features] 18 | default = ["console"] 19 | console = [] 20 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | iter_example: build_wasm 2 | cargo run --release --example iter 3 | 4 | par_iter_example: build_wasm 5 | cargo run --release --example par_iter 6 | 7 | build: build_wasm 8 | cargo build --release --package quickjs 9 | 10 | test: build_wasm 11 | cargo test --release --package quickjs 12 | 13 | bench: build_wasm 14 | cargo bench --package quickjs 15 | 16 | build_wasm: 17 | cargo build --release --package quickjs-wasm --target wasm32-wasi 18 | wizer --allow-wasi $${CARGO_TARGET_DIR:=target}/wasm32-wasi/release/quickjs-wasm.wasm --wasm-bulk-memory true -o quickjs.wasm 19 | 20 | lint: 21 | cargo clippy --all-targets --all-features -- -D warnings &&\ 22 | cargo fmt --all -- --check -------------------------------------------------------------------------------- /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM rust:1.80.0 2 | 3 | ENV QUICKJS_WASM_SYS_WASI_SDK_PATH=/opt/wasi-sdk 4 | 5 | RUN rustup component add rustfmt &&\ 6 | rustup component add clippy &&\ 7 | rustup target add wasm32-wasi &&\ 8 | cargo install cargo-wasi &&\ 9 | apt update &&\ 10 | apt install -y clang &&\ 11 | cargo install wizer --features="env_logger structopt" 12 | 13 | RUN cd /tmp &&\ 14 | wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-23/wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz &&\ 15 | mkdir -p $QUICKJS_WASM_SYS_WASI_SDK_PATH &&\ 16 | tar xvf wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz --strip-components=1 -C $QUICKJS_WASM_SYS_WASI_SDK_PATH &&\ 17 | rm wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz 18 | -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.177.0/containers/rust 3 | { 4 | "name": "Rust", 5 | "build": { 6 | "dockerfile": "Dockerfile" 7 | }, 8 | "runArgs": [], 9 | "containerEnv": { 10 | "CARGO_TARGET_DIR": "/tmp/target" 11 | }, 12 | // Set *default* container specific settings.json values on container create. 13 | "customizations": { 14 | "vscode": { 15 | "settings": { 16 | "lldb.executable": "/usr/bin/lldb", 17 | // VS Code don't watch files under ./target 18 | "files.watcherExclude": { 19 | "**/target/**": true 20 | }, 21 | "rust-analyzer.checkOnSave.command": "clippy" 22 | }, 23 | // Add the IDs of extensions you want installed when the container is created. 24 | "extensions": [ 25 | "rust-lang.rust-analyzer", 26 | "vadimcn.vscode-lldb", 27 | "bungcip.better-toml", 28 | "serayuzgur.crates" 29 | ] 30 | } 31 | } 32 | } -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) Mike Seddon 2023 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /track_points.js: -------------------------------------------------------------------------------- 1 | // simple approximate distance function returning distance between two points in meters 2 | function distance(lat0, lon0, lat1, lon1) { 3 | if ((lat0 == lat1) && (lon0 == lon1)) { 4 | return 0; 5 | } else { 6 | const radlat0 = Math.PI * lat0 / 180; 7 | const radlat1 = Math.PI * lat1 / 180; 8 | const theta = lon0 - lon1; 9 | const radtheta = Math.PI * theta / 180; 10 | let dist = Math.sin(radlat0) * Math.sin(radlat1) + Math.cos(radlat0) * Math.cos(radlat1) * Math.cos(radtheta); 11 | if (dist > 1) { 12 | dist = 1; 13 | } 14 | dist = Math.acos(dist); 15 | dist = dist * 180 / Math.PI; 16 | return dist * 60 * 1853.159; 17 | } 18 | } 19 | 20 | // calculate the total length of a set of input features in canadian football fields 21 | function calculate(data) { 22 | // canadian football fields are 140 meters 23 | const candadian_football_field = 140; 24 | 25 | return data.features.reduce( 26 | (accumulator, currentValue, currentIndex, array) => { 27 | if (currentIndex == 0) { 28 | return 0 29 | } else { 30 | const previousValue = array[currentIndex - 1]; 31 | const dist = distance(currentValue.geometry.coordinates[1], currentValue.geometry.coordinates[0], previousValue.geometry.coordinates[1], previousValue.geometry.coordinates[0]); 32 | return accumulator + dist / candadian_football_field 33 | } 34 | }, 35 | 0 36 | ) 37 | } 38 | 39 | calculate(data) -------------------------------------------------------------------------------- /crates/quickjs-wasm/src/main.rs: -------------------------------------------------------------------------------- 1 | #[cfg(feature = "console")] 2 | mod context; 3 | mod io; 4 | 5 | use anyhow::Result; 6 | use once_cell::sync::OnceCell; 7 | use quickjs_wasm_rs::JSContextRef; 8 | 9 | static mut JS_CONTEXT: OnceCell = OnceCell::new(); 10 | static SCRIPT_NAME: &str = "script.js"; 11 | static DEPENDENCIES: &str = include_str!("../dependencies/index.js"); 12 | 13 | /// init() is executed by wizer to create a snapshot after the quickjs context has been initialized. 14 | /// 15 | /// it also binds the console.log and console.error functions so they can be used for debugging in the 16 | /// user script. 17 | #[export_name = "wizer.initialize"] 18 | pub extern "C" fn init() { 19 | unsafe { 20 | let context = JSContextRef::default(); 21 | 22 | // add any init code 23 | context.eval_global(SCRIPT_NAME, DEPENDENCIES).unwrap(); 24 | 25 | // add globals to the quickjs instance if enabled 26 | #[cfg(feature = "console")] 27 | context::set_quickjs_globals(&context).unwrap(); 28 | 29 | JS_CONTEXT.set(context).unwrap(); 30 | } 31 | } 32 | 33 | fn main() -> Result<()> { 34 | match io::get_input_script()? { 35 | Some(input) => { 36 | let context = unsafe { JS_CONTEXT.get_or_init(JSContextRef::default) }; 37 | 38 | if let Some(value) = io::get_input_data(context)? { 39 | context.global_object()?.set_property("data", value)?; 40 | } 41 | 42 | io::set_output_value(context.eval_global(SCRIPT_NAME, &input).map(Some)) 43 | } 44 | None => io::set_output_value(Ok(None)), 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /crates/quickjs-wasm/src/context.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use quickjs_wasm_rs::{JSContextRef, JSValue, JSValueRef}; 3 | use std::io::Write; 4 | 5 | /// set quickjs globals 6 | pub fn set_quickjs_globals(context: &JSContextRef) -> anyhow::Result<()> { 7 | let console_log_callback = context.wrap_callback(console_log_to(std::io::stdout()))?; 8 | let console_error_callback = context.wrap_callback(console_log_to(std::io::stderr()))?; 9 | 10 | let console_object = context.object_value()?; 11 | console_object.set_property("log", console_log_callback)?; 12 | console_object.set_property("error", console_error_callback)?; 13 | 14 | let global = context.global_object()?; 15 | global.set_property("console", console_object)?; 16 | 17 | Ok(()) 18 | } 19 | 20 | /// console_log_to is used to allow the javascript functions console.log and console.error to 21 | /// log to the stdout and stderr respectively. 22 | fn console_log_to( 23 | mut stream: T, 24 | ) -> impl FnMut(&JSContextRef, JSValueRef, &[JSValueRef]) -> Result 25 | where 26 | T: Write + 'static, 27 | { 28 | move |_ctx: &JSContextRef, _this: JSValueRef, args: &[JSValueRef]| { 29 | // Write full string to in-memory destination before writing to stream since each write call to the stream 30 | // will invoke a hostcall. 31 | let mut log_line = String::new(); 32 | for (i, arg) in args.iter().enumerate() { 33 | if i != 0 { 34 | log_line.push(' '); 35 | } 36 | let line = arg.to_string(); 37 | log_line.push_str(&line); 38 | } 39 | 40 | writeln!(stream, "{log_line}")?; 41 | 42 | Ok(JSValue::Undefined) 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /crates/quickjs/benches/benchmark.rs: -------------------------------------------------------------------------------- 1 | use std::time::Duration; 2 | 3 | use criterion::{black_box, criterion_group, criterion_main, Criterion}; 4 | use quickjs::{QuickJSBuilder, TimeLimit}; 5 | 6 | pub fn bench(c: &mut Criterion) { 7 | let script = include_str!("../../../track_points.js"); 8 | let data = include_str!("../../../track_points.json"); 9 | 10 | let quickjs = QuickJSBuilder::new().build().unwrap(); 11 | c.bench_function("try_execute", |b| { 12 | b.iter(|| black_box(quickjs.try_execute(script, Some(data)).unwrap())) 13 | }); 14 | 15 | let quickjs = QuickJSBuilder::new() 16 | .with_memory_limit(4194304) 17 | .build() 18 | .unwrap(); 19 | c.bench_function("try_execute_with_memory_limit", |b| { 20 | b.iter(|| black_box(quickjs.try_execute(script, Some(data)).unwrap())) 21 | }); 22 | 23 | let quickjs = QuickJSBuilder::new() 24 | .with_time_limit( 25 | TimeLimit::new(Duration::from_millis(10000)) 26 | .with_evaluation_interval(Duration::from_micros(100)), 27 | ) 28 | .build() 29 | .unwrap(); 30 | c.bench_function("try_execute_with_time_limit_100us", |b| { 31 | b.iter(|| black_box(quickjs.try_execute(script, Some(data)).unwrap())) 32 | }); 33 | 34 | let quickjs = QuickJSBuilder::new() 35 | .with_time_limit( 36 | TimeLimit::new(Duration::from_millis(10000)) 37 | .with_evaluation_interval(Duration::from_micros(1000)), 38 | ) 39 | .build() 40 | .unwrap(); 41 | c.bench_function("try_execute_with_time_limit_1000us", |b| { 42 | b.iter(|| black_box(quickjs.try_execute(script, Some(data)).unwrap())) 43 | }); 44 | 45 | let quickjs = QuickJSBuilder::new() 46 | .with_time_limit( 47 | TimeLimit::new(Duration::from_millis(10000)) 48 | .with_evaluation_interval(Duration::from_micros(10000)), 49 | ) 50 | .build() 51 | .unwrap(); 52 | c.bench_function("try_execute_with_time_limit_10000us", |b| { 53 | b.iter(|| black_box(quickjs.try_execute(script, Some(data)).unwrap())) 54 | }); 55 | } 56 | 57 | criterion_group!(group, bench); 58 | criterion_main!(group); 59 | -------------------------------------------------------------------------------- /crates/quickjs/examples/iter.rs: -------------------------------------------------------------------------------- 1 | extern crate quickjs; 2 | 3 | use anyhow::Result; 4 | use clap::Parser; 5 | use quickjs::{QuickJS, TimeLimit}; 6 | use std::{ 7 | path::PathBuf, 8 | time::{Duration, Instant}, 9 | }; 10 | 11 | /// Simple program to demonstr 12 | #[derive(Parser, Debug)] 13 | #[command(author, version, about, long_about = None)] 14 | struct Args { 15 | /// Path to the wasm module 16 | #[arg(long)] 17 | module: Option, 18 | 19 | /// Path to the input script 20 | #[arg(long, default_value = "track_points.js")] 21 | script: PathBuf, 22 | 23 | /// Path to the data json object 24 | #[arg(long, default_value = "track_points.json")] 25 | data: PathBuf, 26 | 27 | /// Number of iterations to execute 28 | #[arg(long, default_value_t = 1000)] 29 | iterations: usize, 30 | 31 | /// Enable stdout (i.e. console.log) defualt false 32 | #[arg(long)] 33 | inherit_stdout: bool, 34 | 35 | /// Enable stderr (i.e. console.error) default false 36 | #[arg(long)] 37 | inherit_stderr: bool, 38 | 39 | /// Set runtime memory limit in bytes to restrict unconstrained memory growth 40 | #[arg(long)] 41 | memory_limit_bytes: Option, 42 | 43 | /// Set runtime time limit in microseconds 44 | #[arg(long)] 45 | time_limit_micros: Option, 46 | 47 | /// Set time limit evaluation interval. only used if `time_limit_micros` is set. 48 | #[arg(long)] 49 | time_limit_evaluation_interval_micros: Option, 50 | } 51 | 52 | fn main() -> Result<()> { 53 | let args = Args::parse(); 54 | 55 | let quickjs = QuickJS::try_new( 56 | args.module, 57 | args.inherit_stdout, 58 | args.inherit_stderr, 59 | args.memory_limit_bytes, 60 | args.time_limit_micros.map(|limit| { 61 | let mut limit = TimeLimit::new(Duration::from_micros(limit)); 62 | if let Some(evaluation_interval) = args.time_limit_evaluation_interval_micros { 63 | limit.evaluation_interval = Duration::from_micros(evaluation_interval); 64 | } 65 | limit 66 | }), 67 | )?; 68 | 69 | let script = std::fs::read_to_string(args.script)?; 70 | let data = std::fs::read_to_string(args.data)?; 71 | 72 | let start = Instant::now(); 73 | for i in 0..args.iterations { 74 | let output = quickjs.try_execute(&script, Some(&data))?; 75 | println!("{i} {}", output.unwrap_or_else(|| "None".to_string())); 76 | } 77 | 78 | let duration = start.elapsed(); 79 | println!( 80 | "elapsed: {:?}\niteration: {:?}", 81 | duration, 82 | duration.div_f32(args.iterations as f32) 83 | ); 84 | 85 | Ok(()) 86 | } 87 | -------------------------------------------------------------------------------- /.github/workflows/rust.yml: -------------------------------------------------------------------------------- 1 | name: Tests 2 | on: [push, pull_request] 3 | 4 | jobs: 5 | test: 6 | name: Test Workspace on AMD64 Rust ${{ matrix.rust }} 7 | runs-on: ubuntu-latest 8 | strategy: 9 | matrix: 10 | arch: [amd64] 11 | rust: [stable] 12 | container: 13 | image: ${{ matrix.arch }}/rust 14 | env: 15 | QUICKJS_WASM_SYS_WASI_SDK_PATH: /opt/wasi-sdk 16 | # Disable full debug symbol generation to speed up CI build and keep memory down 17 | # "1" means line tables only, which is useful for panic tracebacks. 18 | RUSTFLAGS: "-C debuginfo=1" 19 | steps: 20 | - uses: actions/checkout@v2 21 | with: 22 | submodules: true 23 | - name: Cache Cargo 24 | uses: actions/cache@v2 25 | with: 26 | path: /home/runner/.cargo 27 | key: cargo-cache- 28 | - name: Cache Rust dependencies 29 | uses: actions/cache@v2 30 | with: 31 | path: /home/runner/target 32 | key: target-cache- 33 | - name: Setup Rust toolchain 34 | run: | 35 | rustup toolchain install ${{ matrix.rust }} 36 | rustup default ${{ matrix.rust }} 37 | rustup component add rustfmt 38 | rustup component add clippy 39 | rustup target add wasm32-wasi 40 | cargo install cargo-wasi 41 | apt update 42 | apt install -y clang 43 | cargo install wizer --features="env_logger structopt" 44 | - name: Setup wasi-sdk 45 | run: | 46 | export QUICKJS_WASM_SYS_WASI_SDK_PATH=/opt/wasi-sdk 47 | cd /tmp &&\ 48 | wget https://github.com/WebAssembly/wasi-sdk/releases/download/wasi-sdk-23/wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz &&\ 49 | mkdir -p $QUICKJS_WASM_SYS_WASI_SDK_PATH &&\ 50 | tar xvf wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz --strip-components=1 -C $QUICKJS_WASM_SYS_WASI_SDK_PATH &&\ 51 | rm wasi-sdk-23.0-$(arch | sed s/aarch64/arm64/)-linux.tar.gz 52 | 53 | - name: Build quickjs.wasm 54 | run: | 55 | make build_wasm 56 | - name: Run tests 57 | run: | 58 | make test 59 | make iter_example 60 | make par_iter_example 61 | - name: Run clippy 62 | run: | 63 | cargo clippy --all-targets --workspace -- -D warnings 64 | - uses: actions/upload-artifact@v3 65 | with: 66 | name: quickjs.wasm 67 | path: ./quickjs.wasm 68 | fmt: 69 | name: Rust formatting 70 | runs-on: ubuntu-latest 71 | steps: 72 | - uses: actions/checkout@v2 73 | - name: Setup toolchain 74 | run: | 75 | rustup toolchain install stable 76 | rustup default stable 77 | rustup component add rustfmt 78 | - name: Run 79 | run: cargo fmt --all -- --check 80 | -------------------------------------------------------------------------------- /crates/quickjs/examples/par_iter.rs: -------------------------------------------------------------------------------- 1 | extern crate quickjs; 2 | 3 | use anyhow::Result; 4 | use clap::Parser; 5 | use quickjs::{QuickJS, TimeLimit}; 6 | use rayon::prelude::*; 7 | use std::{ 8 | path::PathBuf, 9 | time::{Duration, Instant}, 10 | }; 11 | 12 | /// Simple program to demonstr 13 | #[derive(Parser, Debug)] 14 | #[command(author, version, about, long_about = None)] 15 | struct Args { 16 | /// Path to the wasm module 17 | #[arg(long)] 18 | module: Option, 19 | 20 | /// Path to the input script 21 | #[arg(long, default_value = "track_points.js")] 22 | script: PathBuf, 23 | 24 | /// Path to the data json object 25 | #[arg(long, default_value = "track_points.json")] 26 | data: PathBuf, 27 | 28 | /// Number of iterations to execute 29 | #[arg(long, default_value_t = 1000)] 30 | iterations: usize, 31 | 32 | /// Enable stdout (i.e. console.log) default false 33 | #[arg(long)] 34 | inherit_stdout: bool, 35 | 36 | /// Enable stderr (i.e. console.error) default false 37 | #[arg(long)] 38 | inherit_stderr: bool, 39 | 40 | /// Set memory limit in bytes to restrict unconstrained memory growth 41 | #[arg(long)] 42 | memory_limit_bytes: Option, 43 | 44 | /// Set time limit in microseconds to restrict runtime 45 | #[arg(long)] 46 | time_limit_micros: Option, 47 | 48 | /// Set time limit evaluation interval. only used if `time_limit_micros` is set. 49 | #[arg(long)] 50 | time_limit_evaluation_interval_micros: Option, 51 | } 52 | 53 | fn main() -> Result<()> { 54 | let args = Args::parse(); 55 | 56 | let quickjs = QuickJS::try_new( 57 | args.module, 58 | args.inherit_stdout, 59 | args.inherit_stderr, 60 | args.memory_limit_bytes, 61 | args.time_limit_micros.map(|limit| { 62 | let mut limit = TimeLimit::new(Duration::from_micros(limit)); 63 | if let Some(evaluation_interval) = args.time_limit_evaluation_interval_micros { 64 | limit.evaluation_interval = Duration::from_micros(evaluation_interval); 65 | } 66 | limit 67 | }), 68 | )?; 69 | 70 | let script = std::fs::read_to_string(args.script)?; 71 | let data = std::fs::read_to_string(args.data)?; 72 | 73 | let start = Instant::now(); 74 | 75 | (0..args.iterations) 76 | .collect::>() 77 | .chunks(args.iterations / num_cpus::get()) 78 | .collect::>() 79 | .into_par_iter() 80 | .map(|chunk| { 81 | chunk 82 | .iter() 83 | .map(|i| { 84 | let output = quickjs.try_execute(&script, Some(&data))?; 85 | println!("{i} {}", output.unwrap_or_else(|| "None".to_string())); 86 | Ok(()) 87 | }) 88 | .collect::>>() 89 | }) 90 | .collect::>>()?; 91 | 92 | let duration = start.elapsed(); 93 | println!( 94 | "elapsed: {:?}\niteration: {:?}", 95 | duration, 96 | duration.div_f32(args.iterations as f32) 97 | ); 98 | 99 | Ok(()) 100 | } 101 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This repository demonstrates how to use [quickjs-wasm-rs](https://github.com/bytecodealliance/javy/tree/main/crates/quickjs-wasm-rs) with [wasmtime](https://github.com/bytecodealliance/wasmtime) to easily build a safe and isolated plugin system for Rust. 2 | 3 | Code to accompany blog post: https://reorchestrate.com/posts/plugins-for-rust 4 | 5 | # How to Use 6 | 7 | The two examples `iter` and `par_iter` demonstrate how to use this library. They both support the following arguments: 8 | 9 | - `module`: optional path to the wasm module. otherwise `quickjs.wasm` produced by the `quickjs-wasm` crate is used. 10 | - `script`: the javascript code to evaluate by quickjs. 11 | - `data`: an optional dataset to inject into the instance. availabie in quickjs as the global `data`. 12 | - `iterations`: how many times to execute the javascript. 13 | - `inherit-stdout`: allow the container to use `console.log`. requires building `quickjs-wasm` with `console` feature (default). 14 | - `inherit-stderr`: allow the container to use `console.error`. requires building `quickjs-wasm` with `console` feature (default). 15 | - `memory-limit-bytes`: optional runtime memory limit in bytes to restrict unconstrained memory growth. useful if running untrusted code. 16 | - `time-limit-micros`: optional runtime time limit in microseconds. useful if running untrusted code that may be long running programs/infinite loops or to provide quality-of-service. 17 | - `time-limit-evaluation-interval-micros`: optional interval in microseconds for evaluating if `time_limit` has been exceeded. default `100µs`. 18 | 19 | ```bash 20 | cargo run --release --example iter -- \ 21 | --module ./quickjs.wasm \ 22 | --script ./track_points.js \ 23 | --data ./track_points.json \ 24 | --iterations 1000 \ 25 | --inherit-stdout \ 26 | --inherit-stderr \ 27 | --memory-limit-bytes 4194304 \ 28 | --time-limit-micros 1000000 \ 29 | --time-limit-evaluation-interval-micros 1000 30 | ``` 31 | 32 | ## time-limit 33 | `time-limit-micros` utilises a configurable periodic (default `100µs`) interrupt to test if the program has exceeded its `time-limit` that adds some execution overhead. Run `make bench` or either [example](examples) with `time-limit-micros` to see what the impact is on your code. Due to this cost it is only probably worth using if evaluating untrusted code or if `time-limit-evaluation-interval-micros` is tuned for your use case (i.e. a script with an expected `time-limit` of 60 seconds probably does not need to be evaulated more than every `100ms`). 34 | 35 | ``` 36 | try_execute time: [2.7044 ms 2.7670 ms 2.8326 ms] 37 | ``` 38 | 39 | ``` 40 | try_execute_with_time_limit_100us 41 | time: [3.2581 ms 3.2964 ms 3.3367 ms] 42 | ``` 43 | 44 | # Build 45 | 46 | To build the `.wasm` module: 47 | 48 | ```bash 49 | make build_wasm 50 | ``` 51 | 52 | To build the project: 53 | 54 | ```bash 55 | make build 56 | ``` 57 | 58 | # Test 59 | 60 | ```bash 61 | make test 62 | ``` 63 | 64 | # Bench 65 | 66 | ```bash 67 | make bench 68 | ``` 69 | 70 | # Credits 71 | 72 | - Peter Malmgren https://github.com/pmalmgren/wasi-data-sharing 73 | - Shopify https://github.com/Shopify/javy now https://github.com/bytecodealliance/javy 74 | - Bytecode Alliance https://github.com/bytecodealliance/wasmtime 75 | - Bytecode Alliance https://github.com/bytecodealliance/wizer 76 | -------------------------------------------------------------------------------- /crates/quickjs-wasm/src/io.rs: -------------------------------------------------------------------------------- 1 | use anyhow::Result; 2 | use quickjs_wasm_rs::{Deserializer, JSContextRef, JSValueRef, Serializer}; 3 | 4 | #[link(wasm_import_module = "host")] 5 | extern "C" { 6 | fn get_script(ptr: i32); 7 | fn get_script_size() -> i32; 8 | fn get_data(ptr: i32); 9 | fn get_data_size() -> i32; 10 | fn set_output(ptr: i32, size: i32, error: i32); 11 | } 12 | 13 | /// Transcodes a byte slice containing a JSON encoded payload into a [`JSValueRef`]. 14 | /// 15 | /// Arguments: 16 | /// * `context` - A reference to the [`JSContextRef`] that will contain the 17 | /// returned [`JSValueRef`]. 18 | /// * `bytes` - A byte slice containing a JSON encoded payload. 19 | pub fn transcode_input<'a>(context: &'a JSContextRef, bytes: &[u8]) -> Result> { 20 | let mut deserializer = serde_json::Deserializer::from_slice(bytes); 21 | let mut serializer = Serializer::from_context(context)?; 22 | serde_transcode::transcode(&mut deserializer, &mut serializer)?; 23 | Ok(serializer.value) 24 | } 25 | 26 | /// Transcodes a [`JSValueRef`] into a JSON encoded byte vector. 27 | pub fn transcode_output(val: JSValueRef) -> Result> { 28 | let mut output = Vec::new(); 29 | let mut deserializer = Deserializer::from(val); 30 | let mut serializer = serde_json::Serializer::new(&mut output); 31 | serde_transcode::transcode(&mut deserializer, &mut serializer)?; 32 | Ok(output) 33 | } 34 | 35 | /// gets the script from the host as a string 36 | pub fn get_input_script() -> Result> { 37 | let input_size = unsafe { get_script_size() } as usize; 38 | 39 | if input_size == 0 { 40 | Ok(None) 41 | } else { 42 | let mut buf: Vec = Vec::with_capacity(input_size); 43 | let ptr = buf.as_mut_ptr(); 44 | unsafe { get_script(ptr as i32) }; 45 | 46 | let input_buf = unsafe { Vec::from_raw_parts(ptr, input_size, input_size) }; 47 | 48 | Ok(Some(String::from_utf8(input_buf.to_vec())?)) 49 | } 50 | } 51 | 52 | /// gets the data from the host as a JSValueRef 53 | pub fn get_input_data(context: &JSContextRef) -> Result> { 54 | let input_size = unsafe { get_data_size() } as usize; 55 | 56 | if input_size == 0 { 57 | Ok(None) 58 | } else { 59 | let mut buf: Vec = Vec::with_capacity(input_size); 60 | let ptr = buf.as_mut_ptr(); 61 | unsafe { get_data(ptr as i32) }; 62 | 63 | let input_buf = unsafe { Vec::from_raw_parts(ptr, input_size, input_size) }; 64 | 65 | Ok(Some(transcode_input(context, &input_buf)?)) 66 | } 67 | } 68 | 69 | /// sets the output value on the host 70 | pub fn set_output_value(output: Result>) -> Result<()> { 71 | match output { 72 | Ok(None) => unsafe { 73 | set_output(0, 0, 0); 74 | }, 75 | Ok(Some(output)) => { 76 | let output = transcode_output(output)?; 77 | 78 | let size = output.len() as i32; 79 | let ptr = output.as_ptr(); 80 | 81 | unsafe { 82 | set_output(ptr as i32, size, 0); 83 | } 84 | } 85 | Err(err) => { 86 | let err = err.to_string(); 87 | 88 | let output = err.as_bytes(); 89 | let size = output.len() as i32; 90 | let ptr = output.as_ptr(); 91 | 92 | unsafe { 93 | set_output(ptr as i32, size, 1); 94 | }; 95 | } 96 | } 97 | Ok(()) 98 | } 99 | -------------------------------------------------------------------------------- /crates/quickjs/src/lib.rs: -------------------------------------------------------------------------------- 1 | use anyhow::{anyhow, bail, Result}; 2 | use std::{ 3 | fmt::Debug, 4 | path::PathBuf, 5 | sync::mpsc::sync_channel, 6 | thread::{self}, 7 | time::Duration, 8 | }; 9 | use wasi_common::sync::WasiCtxBuilder; 10 | use wasi_common::WasiCtx; 11 | use wasmtime::*; 12 | 13 | static PAGE_SIZE: u32 = 65536; 14 | static EPOCH_INTERVAL: u64 = 100; 15 | 16 | /// A Rust wrapper around the QuickJS JavaScript engine. 17 | /// 18 | /// This struct represents a running instance of the QuickJS engine, along with its module and configuration options. 19 | pub struct QuickJS { 20 | /// The underlying QuickJS engine instance. 21 | engine: Engine, 22 | /// The module loaded into the engine. 23 | module: Module, 24 | /// Whether to inherit standard output from the parent process. 25 | inherit_stdout: bool, 26 | /// Whether to inherit standard error from the parent process. 27 | inherit_stderr: bool, 28 | /// Optional memory limit for the engine in bytes. 29 | memory_limit: Option, 30 | /// Optional time limit for the engine. If set, will be used to interrupt long-running scripts and prevent them from consuming excessive CPU time. 31 | time_limit: Option, 32 | } 33 | 34 | impl Debug for QuickJS { 35 | fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { 36 | f.debug_struct("QuickJS") 37 | .field("inherit_stdout", &self.inherit_stdout) 38 | .field("inherit_stderr", &self.inherit_stderr) 39 | .field("memory_limit", &self.memory_limit) 40 | .field("time_limit", &self.time_limit) 41 | .finish() 42 | } 43 | } 44 | 45 | impl QuickJS { 46 | /// Creates a new instance of `QuickJS` with the specified options. 47 | /// 48 | /// # Arguments 49 | /// 50 | /// * `path`: The path to the JavaScript module file, or `None` for an embedded default module. 51 | /// * `inherit_stdout`: Whether to inherit standard output from the parent process. 52 | /// * `inherit_stderr`: Whether to inherit standard error from the parent process. 53 | /// * `memory_limit`: Optional memory limit for the engine in bytes. 54 | /// * `time_limit`: Optional time limit for the engine. If set, will be used to interrupt long-running scripts and prevent them from consuming excessive CPU time. 55 | /// 56 | /// # Returns 57 | /// 58 | /// A `Result` containing an instance of `QuickJS`, or an error if there was a problem creating it. 59 | pub fn try_new( 60 | path: Option, 61 | inherit_stdout: bool, 62 | inherit_stderr: bool, 63 | memory_limit: Option, 64 | time_limit: Option, 65 | ) -> Result { 66 | let engine = Engine::new(Config::default().epoch_interruption(time_limit.is_some()))?; 67 | 68 | let module = match path { 69 | Some(path) => Module::from_file(&engine, path)?, 70 | None => Module::from_binary(&engine, include_bytes!("../../../quickjs.wasm"))?, 71 | }; 72 | Ok(Self { 73 | engine, 74 | module, 75 | inherit_stdout, 76 | inherit_stderr, 77 | memory_limit, 78 | time_limit, 79 | }) 80 | } 81 | } 82 | 83 | /// A builder for creating a `QuickJS` instance. 84 | /// 85 | /// This struct allows you to configure various options and settings before building a `QuickJS` instance. 86 | #[derive(Default)] 87 | pub struct QuickJSBuilder { 88 | /// The path to a custom module file (optional). 89 | module: Option, 90 | /// Whether to inherit standard output from the parent process (default: false). 91 | inherit_stdout: Option, 92 | /// Whether to inherit standard error from the parent process (default: false). 93 | inherit_stderr: Option, 94 | /// Optional memory limit for the engine in bytes. 95 | memory_limit: Option, 96 | /// Optional time limit for the engine. If set, will be used to interrupt long-running scripts and prevent them from consuming excessive CPU time. 97 | time_limit: Option, 98 | } 99 | 100 | impl QuickJSBuilder { 101 | /// Creates a new `QuickJSBuilder` instance with default settings. 102 | pub fn new() -> Self { 103 | Self::default() 104 | } 105 | 106 | /// Sets the path to a custom module file. 107 | /// 108 | /// If no module is provided, the engine will use its built-in module by default. 109 | pub fn with_module(mut self, path: PathBuf) -> Self { 110 | self.module = Some(path); 111 | self 112 | } 113 | 114 | /// Controls whether to inherit standard output from the parent process. 115 | pub fn with_inherit_stdout(mut self, inherit: bool) -> Self { 116 | self.inherit_stdout = Some(inherit); 117 | self 118 | } 119 | 120 | /// Controls whether to inherit standard error from the parent process. 121 | pub fn with_inherit_stderr(mut self, inherit: bool) -> Self { 122 | self.inherit_stderr = Some(inherit); 123 | self 124 | } 125 | 126 | /// Sets the memory limit for the engine in bytes. 127 | pub fn with_memory_limit(mut self, limit: u32) -> Self { 128 | self.memory_limit = Some(limit); 129 | self 130 | } 131 | 132 | /// Sets the time limit for the engine. If set, will be used to interrupt long-running scripts and prevent them from consuming excessive CPU time. 133 | pub fn with_time_limit(mut self, limit: TimeLimit) -> Self { 134 | self.time_limit = Some(limit); 135 | self 136 | } 137 | 138 | /// Builds a `QuickJS` instance from the current configuration settings. 139 | /// 140 | /// This method creates and returns a new `QuickJS` instance based on the settings provided through this builder. 141 | pub fn build(&self) -> Result { 142 | QuickJS::try_new( 143 | self.module.clone(), 144 | self.inherit_stdout.unwrap_or(false), 145 | self.inherit_stderr.unwrap_or(false), 146 | self.memory_limit, 147 | self.time_limit.clone(), 148 | ) 149 | } 150 | } 151 | 152 | #[derive(Clone, Debug)] 153 | /// Time limit for QuickJS execution. 154 | /// 155 | /// This struct represents a time limit for QuickJS execution. It allows setting 156 | /// both a total execution time limit and an evaluation interval to check if the 157 | /// execution is still within the allowed time frame. 158 | pub struct TimeLimit { 159 | /// Total execution time limit in milliseconds. 160 | pub limit: Duration, 161 | /// Evaluation interval to check if the execution is still within the allowed time frame. 162 | pub evaluation_interval: Duration, 163 | } 164 | 165 | impl TimeLimit { 166 | /// Creates a new `TimeLimit` with the specified total execution time limit. 167 | /// 168 | /// # Arguments 169 | /// 170 | /// * `limit`: Total execution time limit in milliseconds. 171 | pub fn new(limit: Duration) -> Self { 172 | Self { 173 | limit, 174 | evaluation_interval: Duration::from_micros(EPOCH_INTERVAL), 175 | } 176 | } 177 | 178 | /// Creates a new `TimeLimit` with the specified total execution time limit and evaluation interval. 179 | /// 180 | /// # Arguments 181 | /// 182 | /// * `limit`: Total execution time limit in milliseconds. 183 | /// * `evaluation_interval`: Evaluation interval to check if the execution is still within the allowed time frame. 184 | pub fn with_evaluation_interval(mut self, evaluation_interval: Duration) -> Self { 185 | self.evaluation_interval = evaluation_interval; 186 | self 187 | } 188 | } 189 | 190 | struct State { 191 | pub wasi: WasiCtx, 192 | pub limits: StoreLimits, 193 | } 194 | 195 | impl QuickJS { 196 | /// Attempts to execute the given JavaScript code with optional input data. 197 | /// 198 | /// This method sets up a WASI context and executes the provided JavaScript code in that context. If `data` is provided, it will be passed to the script as standard input. 199 | /// 200 | /// # Arguments 201 | /// 202 | /// * `script`: The JavaScript code to execute as a string. 203 | /// * `data`: Optional input data to pass to the script as standard input. 204 | /// 205 | /// # Returns 206 | /// 207 | /// If execution is successful, it returns `Some(String)` with the output or None if no output is returned from the JavaScript context. 208 | pub fn try_execute(&self, script: &str, data: Option<&str>) -> Result> { 209 | // Convert the script string to a byte vector for later use 210 | let script = script.as_bytes().to_vec(); 211 | 212 | // Get the size of the script as an i32 (for WASI API calls) 213 | let script_size = script.len() as i32; 214 | 215 | // Optionally convert the data string to a byte vector and set its default value if it's not provided 216 | let data = data 217 | .map(|data| data.as_bytes().to_vec()) 218 | .unwrap_or_default(); 219 | 220 | // Get the size of the data as an i32 (for WASI API calls) 221 | let data_size = data.len() as i32; 222 | 223 | // Create a new linker for the engine 224 | let mut linker = Linker::new(&self.engine); 225 | 226 | // Add the WASI library to the linker 227 | wasi_common::sync::add_to_linker(&mut linker, |state: &mut State| &mut state.wasi)?; 228 | 229 | // Build a new WASI context builder 230 | let mut wasi_ctx_builder = WasiCtxBuilder::new(); 231 | 232 | // Inherit stdout if requested by the user 233 | if self.inherit_stdout { 234 | wasi_ctx_builder.inherit_stdout(); 235 | }; 236 | 237 | // Inherit stderr if requested by the user 238 | if self.inherit_stderr { 239 | wasi_ctx_builder.inherit_stderr(); 240 | }; 241 | 242 | // Build the WASI context with the provided options 243 | let wasi = wasi_ctx_builder.build(); 244 | 245 | // Determine memory type and limits based on self.memory_limit. 246 | let (memory_type, limits) = match self.memory_limit { 247 | // If self.memory_limit is Some, calculate memory type and limits based on PAGE_SIZE. 248 | Some(memory_limit) => ( 249 | MemoryType::new(memory_limit / PAGE_SIZE, Some(memory_limit / PAGE_SIZE)), 250 | StoreLimitsBuilder::new() 251 | .instances(1) 252 | .memory_size(memory_limit as usize) 253 | .build(), 254 | ), 255 | // If self.memory_limit is None, use default values for memory type and limits. 256 | None => ( 257 | MemoryType::new(1, None), 258 | StoreLimitsBuilder::new().instances(1).build(), 259 | ), 260 | }; 261 | 262 | // Create a new store instance with the engine and initial state. 263 | let mut store = Store::new(&self.engine, State { wasi, limits }); 264 | 265 | // Set the limiter for the store to access its limits. 266 | store.limiter(move |state| &mut state.limits); 267 | 268 | // If self.time_limit is Some, set up a thread to increment the epoch at regular intervals. 269 | if let Some(time_limit) = &self.time_limit { 270 | // Calculate evaluation interval from time limit. 271 | let evaluation_interval = time_limit.evaluation_interval; 272 | // Clone engine instance for use in separate thread. 273 | let engine_clone = self.engine.clone(); 274 | // Start new thread to increment epoch every evaluation interval. 275 | thread::spawn(move || loop { 276 | thread::sleep(evaluation_interval); 277 | engine_clone.increment_epoch(); 278 | }); 279 | 280 | // Calculate initial epoch limit from time limit. 281 | let mut epoch_limit = u32::try_from( 282 | time_limit.limit.as_micros() / time_limit.evaluation_interval.as_micros(), 283 | )?; 284 | 285 | // Set up callback for when the epoch deadline is reached. 286 | store.epoch_deadline_callback(move |_| { 287 | // If epoch limit reaches 0, return error. 288 | if epoch_limit == 0 { 289 | bail!("exceeds time limit"); 290 | } 291 | // Decrement epoch limit and continue evaluation. 292 | epoch_limit -= 1; 293 | Ok(UpdateDeadline::Continue(1)) 294 | }); 295 | 296 | // Set initial epoch deadline to 1. 297 | store.set_epoch_deadline(1); 298 | } 299 | 300 | // Create new memory instance with the store and calculated memory type. 301 | Memory::new(&mut store, memory_type)?; 302 | 303 | // Wraps the host function to retrieve the size of the script. 304 | // This function is exposed as `get_script_size` in the JavaScript context. 305 | linker.func_wrap( 306 | "host", 307 | "get_script_size", 308 | move |_: Caller<'_, State>| -> Result { Ok(script_size) }, 309 | )?; 310 | 311 | // Wraps the host function to retrieve the script data. 312 | // This function is exposed as `get_script` in the JavaScript context. 313 | linker.func_wrap( 314 | "host", 315 | "get_script", 316 | move |mut caller: Caller<'_, State>, ptr: i32| -> Result<()> { 317 | // The memory export from the host environment. 318 | let memory = match caller.get_export("memory") { 319 | Some(Extern::Memory(memory)) => memory, 320 | _ => return Err(anyhow!("failed to find host memory")), 321 | }; 322 | 323 | // The offset in bytes at which to write the script data. 324 | let offset = ptr as u32 as usize; 325 | 326 | Ok(memory.write(&mut caller, offset, &script)?) 327 | }, 328 | )?; 329 | 330 | // Wraps the host function to retrieve the size of the input data. 331 | // This function is exposed as `get_data_size` in the JavaScript context. 332 | linker.func_wrap( 333 | "host", 334 | "get_data_size", 335 | move |_: Caller<'_, State>| -> Result { Ok(data_size) }, 336 | )?; 337 | 338 | // Wraps the host function to retrieve the input data. 339 | // This function is exposed as `get_data` in the JavaScript context. 340 | linker.func_wrap( 341 | "host", 342 | "get_data", 343 | move |mut caller: Caller<'_, State>, ptr: i32| -> Result<()> { 344 | // The memory export from the host environment. 345 | let memory = match caller.get_export("memory") { 346 | Some(Extern::Memory(memory)) => memory, 347 | _ => return Err(anyhow!("failed to find host memory")), 348 | }; 349 | 350 | // The offset in bytes at which to write the input data. 351 | let offset = ptr as u32 as usize; 352 | 353 | Ok(memory.write(&mut caller, offset, &data)?) 354 | }, 355 | )?; 356 | 357 | // A simulated one-shot channel to wait for the script to complete and retrieve the result. 358 | let (sender, receiver) = sync_channel(1); 359 | 360 | // Wraps the host function to retrieve the output data from the host memory. 361 | // This function is exposed as `set_output` in the JavaScript context. 362 | linker.func_wrap( 363 | "host", 364 | "set_output", 365 | move |mut caller: Caller<'_, State>, 366 | ptr: i32, 367 | capacity: i32, 368 | error: i32| 369 | -> Result<()> { 370 | // Check for invalid capacity 371 | if capacity == 0 { 372 | // If the capacity is zero, send None to the guest. 373 | sender.send(None).unwrap(); 374 | } else { 375 | // Get the host memory object from the caller's exports. 376 | let memory = match caller.get_export("memory") { 377 | Some(Extern::Memory(memory)) => Ok(memory), 378 | _ => Err(anyhow!("failed to find host memory")), 379 | }?; 380 | 381 | // Calculate the offset of the string in host memory. 382 | let offset = ptr as u32 as usize; 383 | 384 | // Allocate a buffer to store the read string. 385 | let mut buffer: Vec = vec![0; capacity as usize]; 386 | 387 | // Read the string from host memory into the buffer. 388 | memory.read(&caller, offset, &mut buffer)?; 389 | 390 | // Convert the buffer to a string and try to parse it as UTF-8. 391 | let result = String::from_utf8(buffer)?; 392 | 393 | // If an error occurred while reading the string, send the error back to the guest; otherwise, send the read string back. 394 | if error == 0 { 395 | sender.send(Some(Ok(result))).unwrap(); 396 | } else { 397 | sender.send(Some(Err(anyhow!(result)))).unwrap(); 398 | }; 399 | }; 400 | 401 | Ok(()) 402 | }, 403 | )?; 404 | 405 | // Create a new module in the store with an empty name and link it to our current module. 406 | linker.module(&mut store, "", &self.module)?; 407 | 408 | // Call the module's default entrypoint. 409 | linker 410 | .get_default(&mut store, "")? 411 | .typed::<(), ()>(&store)? 412 | .call(&mut store, ())?; 413 | 414 | // Receive any message that was sent to this module and return it (if anything was sent) 415 | receiver.recv()?.transpose() 416 | } 417 | } 418 | 419 | #[cfg(test)] 420 | mod tests { 421 | use super::*; 422 | 423 | #[test] 424 | fn try_execute() -> Result<()> { 425 | let quickjs = QuickJSBuilder::new().build()?; 426 | 427 | let script = r#" 428 | 'quickjs' + 'wasm' 429 | "#; 430 | 431 | let result = quickjs.try_execute(script, None).unwrap(); 432 | 433 | assert_eq!(result, Some("\"quickjswasm\"".to_string())); 434 | 435 | Ok(()) 436 | } 437 | 438 | #[test] 439 | fn try_execute_data() -> Result<()> { 440 | let quickjs = QuickJSBuilder::new().build()?; 441 | 442 | let script = r#" 443 | 'quickjs' + data.input 444 | "#; 445 | 446 | let data = r#"{"input": "wasm"}"#; 447 | 448 | let result = quickjs.try_execute(script, Some(data)).unwrap(); 449 | 450 | assert_eq!(result, Some("\"quickjswasm\"".to_string())); 451 | 452 | Ok(()) 453 | } 454 | 455 | #[test] 456 | fn try_throw_error() -> Result<()> { 457 | let quickjs = QuickJSBuilder::new().build()?; 458 | 459 | let script = r#" 460 | throw new Error('myerror'); 461 | "#; 462 | 463 | match quickjs.try_execute(script, None) { 464 | Err(err) if err.to_string().contains("Uncaught Error: myerror") => {} 465 | other => panic!("{:?}", other), 466 | } 467 | 468 | Ok(()) 469 | } 470 | 471 | #[test] 472 | fn try_execute_memory_limit_normal() -> Result<()> { 473 | let quickjs = QuickJSBuilder::new().with_memory_limit(4194304).build()?; 474 | 475 | let script = r#" 476 | 'quickjs' + 'wasm' 477 | "#; 478 | 479 | let result = quickjs.try_execute(script, None).unwrap(); 480 | 481 | assert_eq!(result, Some("\"quickjswasm\"".to_string())); 482 | 483 | Ok(()) 484 | } 485 | 486 | #[test] 487 | fn try_execute_memory_limit_exceed() -> Result<()> { 488 | let quickjs = QuickJSBuilder::new().with_memory_limit(4194304).build()?; 489 | 490 | let script = r#" 491 | let memory = []; 492 | while (true) { 493 | memory.push("allocate"); 494 | } 495 | "#; 496 | 497 | match quickjs.try_execute(script, None) { 498 | Err(err) if err.to_string().contains("out of memory") => {} 499 | other => panic!("{:?}", other), 500 | } 501 | 502 | Ok(()) 503 | } 504 | 505 | #[test] 506 | fn try_execute_time_limit() -> Result<()> { 507 | let quickjs = QuickJSBuilder::new() 508 | .with_time_limit( 509 | TimeLimit::new(Duration::from_secs(2)) 510 | .with_evaluation_interval(Duration::from_millis(100)), 511 | ) 512 | .build()?; 513 | 514 | let script = r#" 515 | function sleep(milliseconds) { 516 | const startDate = Date.now(); 517 | let currentDate = Date.now(); 518 | do { 519 | currentDate = Date.now(); 520 | } while (currentDate - startDate < milliseconds); 521 | } 522 | sleep(30000); 523 | "#; 524 | 525 | match quickjs.try_execute(script, None) { 526 | Err(err) if err.root_cause().to_string().contains("exceeds time limit") => {} 527 | other => panic!("{:?}", other), 528 | } 529 | 530 | Ok(()) 531 | } 532 | } 533 | -------------------------------------------------------------------------------- /crates/quickjs-wasm/Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.17.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "ahash" 16 | version = "0.7.6" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47" 19 | dependencies = [ 20 | "getrandom", 21 | "once_cell", 22 | "version_check", 23 | ] 24 | 25 | [[package]] 26 | name = "aho-corasick" 27 | version = "0.7.18" 28 | source = "registry+https://github.com/rust-lang/crates.io-index" 29 | checksum = "1e37cfd5e7657ada45f742d6e99ca5788580b5c529dc78faf11ece6dc702656f" 30 | dependencies = [ 31 | "memchr", 32 | ] 33 | 34 | [[package]] 35 | name = "ambient-authority" 36 | version = "0.0.1" 37 | source = "registry+https://github.com/rust-lang/crates.io-index" 38 | checksum = "ec8ad6edb4840b78c5c3d88de606b22252d552b55f3a4699fbb10fc070ec3049" 39 | 40 | [[package]] 41 | name = "anyhow" 42 | version = "1.0.66" 43 | source = "registry+https://github.com/rust-lang/crates.io-index" 44 | checksum = "216261ddc8289130e551ddcd5ce8a064710c0d064a4d2895c67151c92b5443f6" 45 | 46 | [[package]] 47 | name = "arrayvec" 48 | version = "0.7.2" 49 | source = "registry+https://github.com/rust-lang/crates.io-index" 50 | checksum = "8da52d66c7071e2e3fa2a1e5c6d088fec47b593032b254f5e980de8ea54454d6" 51 | 52 | [[package]] 53 | name = "async-trait" 54 | version = "0.1.53" 55 | source = "registry+https://github.com/rust-lang/crates.io-index" 56 | checksum = "ed6aa3524a2dfcf9fe180c51eae2b58738348d819517ceadf95789c51fff7600" 57 | dependencies = [ 58 | "proc-macro2", 59 | "quote", 60 | "syn", 61 | ] 62 | 63 | [[package]] 64 | name = "atty" 65 | version = "0.2.14" 66 | source = "registry+https://github.com/rust-lang/crates.io-index" 67 | checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" 68 | dependencies = [ 69 | "hermit-abi 0.1.19", 70 | "libc", 71 | "winapi", 72 | ] 73 | 74 | [[package]] 75 | name = "autocfg" 76 | version = "1.1.0" 77 | source = "registry+https://github.com/rust-lang/crates.io-index" 78 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 79 | 80 | [[package]] 81 | name = "base64" 82 | version = "0.13.0" 83 | source = "registry+https://github.com/rust-lang/crates.io-index" 84 | checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" 85 | 86 | [[package]] 87 | name = "bincode" 88 | version = "1.3.3" 89 | source = "registry+https://github.com/rust-lang/crates.io-index" 90 | checksum = "b1f45e9417d87227c7a56d22e471c6206462cba514c7590c09aff4cf6d1ddcad" 91 | dependencies = [ 92 | "serde", 93 | ] 94 | 95 | [[package]] 96 | name = "bitflags" 97 | version = "1.3.2" 98 | source = "registry+https://github.com/rust-lang/crates.io-index" 99 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 100 | 101 | [[package]] 102 | name = "block-buffer" 103 | version = "0.10.3" 104 | source = "registry+https://github.com/rust-lang/crates.io-index" 105 | checksum = "69cce20737498f97b993470a6e536b8523f0af7892a4f928cceb1ac5e52ebe7e" 106 | dependencies = [ 107 | "generic-array", 108 | ] 109 | 110 | [[package]] 111 | name = "bumpalo" 112 | version = "3.11.1" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "572f695136211188308f16ad2ca5c851a712c464060ae6974944458eb83880ba" 115 | 116 | [[package]] 117 | name = "byteorder" 118 | version = "1.4.3" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "14c189c53d098945499cdfa7ecc63567cf3886b3332b312a5b4585d8d3a6a610" 121 | 122 | [[package]] 123 | name = "cap-fs-ext" 124 | version = "0.26.1" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "0b0e103ce36d217d568903ad27b14ec2238ecb5d65bad2e756a8f3c0d651506e" 127 | dependencies = [ 128 | "cap-primitives", 129 | "cap-std", 130 | "io-lifetimes 0.7.5", 131 | "windows-sys 0.36.1", 132 | ] 133 | 134 | [[package]] 135 | name = "cap-primitives" 136 | version = "0.26.1" 137 | source = "registry+https://github.com/rust-lang/crates.io-index" 138 | checksum = "af3f336aa91cce16033ed3c94ac91d98956c49b420e6d6cd0dd7d0e386a57085" 139 | dependencies = [ 140 | "ambient-authority", 141 | "fs-set-times", 142 | "io-extras", 143 | "io-lifetimes 0.7.5", 144 | "ipnet", 145 | "maybe-owned", 146 | "rustix 0.35.13", 147 | "winapi-util", 148 | "windows-sys 0.36.1", 149 | "winx", 150 | ] 151 | 152 | [[package]] 153 | name = "cap-rand" 154 | version = "0.26.1" 155 | source = "registry+https://github.com/rust-lang/crates.io-index" 156 | checksum = "d14b9606aa9550d34651bc481443203bc014237bdb992d201d2afa62d2ec6dea" 157 | dependencies = [ 158 | "ambient-authority", 159 | "rand", 160 | ] 161 | 162 | [[package]] 163 | name = "cap-std" 164 | version = "0.26.1" 165 | source = "registry+https://github.com/rust-lang/crates.io-index" 166 | checksum = "c9d6e70b626eceac9d6fc790fe2d72cc3f2f7bc3c35f467690c54a526b0f56db" 167 | dependencies = [ 168 | "cap-primitives", 169 | "io-extras", 170 | "io-lifetimes 0.7.5", 171 | "ipnet", 172 | "rustix 0.35.13", 173 | ] 174 | 175 | [[package]] 176 | name = "cap-time-ext" 177 | version = "0.26.1" 178 | source = "registry+https://github.com/rust-lang/crates.io-index" 179 | checksum = "c3a0524f7c4cff2ea547ae2b652bf7a348fd3e48f76556dc928d8b45ab2f1d50" 180 | dependencies = [ 181 | "cap-primitives", 182 | "once_cell", 183 | "rustix 0.35.13", 184 | "winx", 185 | ] 186 | 187 | [[package]] 188 | name = "cc" 189 | version = "1.0.73" 190 | source = "registry+https://github.com/rust-lang/crates.io-index" 191 | checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" 192 | dependencies = [ 193 | "jobserver", 194 | ] 195 | 196 | [[package]] 197 | name = "cfg-if" 198 | version = "1.0.0" 199 | source = "registry+https://github.com/rust-lang/crates.io-index" 200 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 201 | 202 | [[package]] 203 | name = "cpp_demangle" 204 | version = "0.3.5" 205 | source = "registry+https://github.com/rust-lang/crates.io-index" 206 | checksum = "eeaa953eaad386a53111e47172c2fedba671e5684c8dd601a5f474f4f118710f" 207 | dependencies = [ 208 | "cfg-if", 209 | ] 210 | 211 | [[package]] 212 | name = "cpufeatures" 213 | version = "0.2.2" 214 | source = "registry+https://github.com/rust-lang/crates.io-index" 215 | checksum = "59a6001667ab124aebae2a495118e11d30984c3a653e99d86d58971708cf5e4b" 216 | dependencies = [ 217 | "libc", 218 | ] 219 | 220 | [[package]] 221 | name = "cranelift-bforest" 222 | version = "0.90.1" 223 | source = "registry+https://github.com/rust-lang/crates.io-index" 224 | checksum = "b62c772976416112fa4484cbd688cb6fb35fd430005c1c586224fc014018abad" 225 | dependencies = [ 226 | "cranelift-entity", 227 | ] 228 | 229 | [[package]] 230 | name = "cranelift-codegen" 231 | version = "0.90.1" 232 | source = "registry+https://github.com/rust-lang/crates.io-index" 233 | checksum = "9b40ed2dd13c2ac7e24f88a3090c68ad3414eb1d066a95f8f1f7b3b819cb4e46" 234 | dependencies = [ 235 | "arrayvec", 236 | "bumpalo", 237 | "cranelift-bforest", 238 | "cranelift-codegen-meta", 239 | "cranelift-codegen-shared", 240 | "cranelift-egraph", 241 | "cranelift-entity", 242 | "cranelift-isle", 243 | "gimli", 244 | "log", 245 | "regalloc2", 246 | "smallvec", 247 | "target-lexicon", 248 | ] 249 | 250 | [[package]] 251 | name = "cranelift-codegen-meta" 252 | version = "0.90.1" 253 | source = "registry+https://github.com/rust-lang/crates.io-index" 254 | checksum = "bb927a8f1c27c34ee3759b6b0ffa528d2330405d5cc4511f0cab33fe2279f4b5" 255 | dependencies = [ 256 | "cranelift-codegen-shared", 257 | ] 258 | 259 | [[package]] 260 | name = "cranelift-codegen-shared" 261 | version = "0.90.1" 262 | source = "registry+https://github.com/rust-lang/crates.io-index" 263 | checksum = "43dfa417b884a9ab488d95fd6b93b25e959321fe7bfd7a0a960ba5d7fb7ab927" 264 | 265 | [[package]] 266 | name = "cranelift-egraph" 267 | version = "0.90.1" 268 | source = "registry+https://github.com/rust-lang/crates.io-index" 269 | checksum = "e0a66b39785efd8513d2cca967ede56d6cc57c8d7986a595c7c47d0c78de8dce" 270 | dependencies = [ 271 | "cranelift-entity", 272 | "fxhash", 273 | "hashbrown", 274 | "indexmap", 275 | "log", 276 | "smallvec", 277 | ] 278 | 279 | [[package]] 280 | name = "cranelift-entity" 281 | version = "0.90.1" 282 | source = "registry+https://github.com/rust-lang/crates.io-index" 283 | checksum = "0637ffde963cb5d759bc4d454cfa364b6509e6c74cdaa21298add0ed9276f346" 284 | dependencies = [ 285 | "serde", 286 | ] 287 | 288 | [[package]] 289 | name = "cranelift-frontend" 290 | version = "0.90.1" 291 | source = "registry+https://github.com/rust-lang/crates.io-index" 292 | checksum = "fb72b8342685e850cb037350418f62cc4fc55d6c2eb9c7ca01b82f9f1a6f3d56" 293 | dependencies = [ 294 | "cranelift-codegen", 295 | "log", 296 | "smallvec", 297 | "target-lexicon", 298 | ] 299 | 300 | [[package]] 301 | name = "cranelift-isle" 302 | version = "0.90.1" 303 | source = "registry+https://github.com/rust-lang/crates.io-index" 304 | checksum = "850579cb9e4b448f7c301f1e6e6cbad99abe3f1f1d878a4994cb66e33c6db8cd" 305 | 306 | [[package]] 307 | name = "cranelift-native" 308 | version = "0.90.1" 309 | source = "registry+https://github.com/rust-lang/crates.io-index" 310 | checksum = "2d0a279e5bcba3e0466c734d8d8eb6bfc1ad29e95c37f3e4955b492b5616335e" 311 | dependencies = [ 312 | "cranelift-codegen", 313 | "libc", 314 | "target-lexicon", 315 | ] 316 | 317 | [[package]] 318 | name = "cranelift-wasm" 319 | version = "0.90.1" 320 | source = "registry+https://github.com/rust-lang/crates.io-index" 321 | checksum = "e6b8c5e7ffb754093fb89ec4bd4f9dbb9f1c955427299e334917d284745835c2" 322 | dependencies = [ 323 | "cranelift-codegen", 324 | "cranelift-entity", 325 | "cranelift-frontend", 326 | "itertools", 327 | "log", 328 | "smallvec", 329 | "wasmparser", 330 | "wasmtime-types", 331 | ] 332 | 333 | [[package]] 334 | name = "crc32fast" 335 | version = "1.3.2" 336 | source = "registry+https://github.com/rust-lang/crates.io-index" 337 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 338 | dependencies = [ 339 | "cfg-if", 340 | ] 341 | 342 | [[package]] 343 | name = "crossbeam-channel" 344 | version = "0.5.4" 345 | source = "registry+https://github.com/rust-lang/crates.io-index" 346 | checksum = "5aaa7bd5fb665c6864b5f963dd9097905c54125909c7aa94c9e18507cdbe6c53" 347 | dependencies = [ 348 | "cfg-if", 349 | "crossbeam-utils", 350 | ] 351 | 352 | [[package]] 353 | name = "crossbeam-deque" 354 | version = "0.8.1" 355 | source = "registry+https://github.com/rust-lang/crates.io-index" 356 | checksum = "6455c0ca19f0d2fbf751b908d5c55c1f5cbc65e03c4225427254b46890bdde1e" 357 | dependencies = [ 358 | "cfg-if", 359 | "crossbeam-epoch", 360 | "crossbeam-utils", 361 | ] 362 | 363 | [[package]] 364 | name = "crossbeam-epoch" 365 | version = "0.9.8" 366 | source = "registry+https://github.com/rust-lang/crates.io-index" 367 | checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c" 368 | dependencies = [ 369 | "autocfg", 370 | "cfg-if", 371 | "crossbeam-utils", 372 | "lazy_static", 373 | "memoffset", 374 | "scopeguard", 375 | ] 376 | 377 | [[package]] 378 | name = "crossbeam-utils" 379 | version = "0.8.8" 380 | source = "registry+https://github.com/rust-lang/crates.io-index" 381 | checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38" 382 | dependencies = [ 383 | "cfg-if", 384 | "lazy_static", 385 | ] 386 | 387 | [[package]] 388 | name = "crypto-common" 389 | version = "0.1.6" 390 | source = "registry+https://github.com/rust-lang/crates.io-index" 391 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 392 | dependencies = [ 393 | "generic-array", 394 | "typenum", 395 | ] 396 | 397 | [[package]] 398 | name = "digest" 399 | version = "0.10.6" 400 | source = "registry+https://github.com/rust-lang/crates.io-index" 401 | checksum = "8168378f4e5023e7218c89c891c0fd8ecdb5e5e4f18cb78f38cf245dd021e76f" 402 | dependencies = [ 403 | "block-buffer", 404 | "crypto-common", 405 | ] 406 | 407 | [[package]] 408 | name = "directories-next" 409 | version = "2.0.0" 410 | source = "registry+https://github.com/rust-lang/crates.io-index" 411 | checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" 412 | dependencies = [ 413 | "cfg-if", 414 | "dirs-sys-next", 415 | ] 416 | 417 | [[package]] 418 | name = "dirs-next" 419 | version = "2.0.0" 420 | source = "registry+https://github.com/rust-lang/crates.io-index" 421 | checksum = "b98cf8ebf19c3d1b223e151f99a4f9f0690dca41414773390fc824184ac833e1" 422 | dependencies = [ 423 | "cfg-if", 424 | "dirs-sys-next", 425 | ] 426 | 427 | [[package]] 428 | name = "dirs-sys-next" 429 | version = "0.1.2" 430 | source = "registry+https://github.com/rust-lang/crates.io-index" 431 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 432 | dependencies = [ 433 | "libc", 434 | "redox_users", 435 | "winapi", 436 | ] 437 | 438 | [[package]] 439 | name = "either" 440 | version = "1.6.1" 441 | source = "registry+https://github.com/rust-lang/crates.io-index" 442 | checksum = "e78d4f1cc4ae33bbfc157ed5d5a5ef3bc29227303d595861deb238fcec4e9457" 443 | 444 | [[package]] 445 | name = "env_logger" 446 | version = "0.9.0" 447 | source = "registry+https://github.com/rust-lang/crates.io-index" 448 | checksum = "0b2cf0344971ee6c64c31be0d530793fba457d322dfec2810c453d0ef228f9c3" 449 | dependencies = [ 450 | "atty", 451 | "humantime", 452 | "log", 453 | "regex", 454 | "termcolor", 455 | ] 456 | 457 | [[package]] 458 | name = "errno" 459 | version = "0.2.8" 460 | source = "registry+https://github.com/rust-lang/crates.io-index" 461 | checksum = "f639046355ee4f37944e44f60642c6f3a7efa3cf6b78c78a0d989a8ce6c396a1" 462 | dependencies = [ 463 | "errno-dragonfly", 464 | "libc", 465 | "winapi", 466 | ] 467 | 468 | [[package]] 469 | name = "errno-dragonfly" 470 | version = "0.1.2" 471 | source = "registry+https://github.com/rust-lang/crates.io-index" 472 | checksum = "aa68f1b12764fab894d2755d2518754e71b4fd80ecfb822714a1206c2aab39bf" 473 | dependencies = [ 474 | "cc", 475 | "libc", 476 | ] 477 | 478 | [[package]] 479 | name = "fallible-iterator" 480 | version = "0.2.0" 481 | source = "registry+https://github.com/rust-lang/crates.io-index" 482 | checksum = "4443176a9f2c162692bd3d352d745ef9413eec5782a80d8fd6f8a1ac692a07f7" 483 | 484 | [[package]] 485 | name = "file-per-thread-logger" 486 | version = "0.1.5" 487 | source = "registry+https://github.com/rust-lang/crates.io-index" 488 | checksum = "21e16290574b39ee41c71aeb90ae960c504ebaf1e2a1c87bd52aa56ed6e1a02f" 489 | dependencies = [ 490 | "env_logger", 491 | "log", 492 | ] 493 | 494 | [[package]] 495 | name = "fs-set-times" 496 | version = "0.17.1" 497 | source = "registry+https://github.com/rust-lang/crates.io-index" 498 | checksum = "a267b6a9304912e018610d53fe07115d8b530b160e85db4d2d3a59f3ddde1aec" 499 | dependencies = [ 500 | "io-lifetimes 0.7.5", 501 | "rustix 0.35.13", 502 | "windows-sys 0.36.1", 503 | ] 504 | 505 | [[package]] 506 | name = "fxhash" 507 | version = "0.2.1" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 510 | dependencies = [ 511 | "byteorder", 512 | ] 513 | 514 | [[package]] 515 | name = "generic-array" 516 | version = "0.14.5" 517 | source = "registry+https://github.com/rust-lang/crates.io-index" 518 | checksum = "fd48d33ec7f05fbfa152300fdad764757cbded343c1aa1cff2fbaf4134851803" 519 | dependencies = [ 520 | "typenum", 521 | "version_check", 522 | ] 523 | 524 | [[package]] 525 | name = "getrandom" 526 | version = "0.2.6" 527 | source = "registry+https://github.com/rust-lang/crates.io-index" 528 | checksum = "9be70c98951c83b8d2f8f60d7065fa6d5146873094452a1008da8c2f1e4205ad" 529 | dependencies = [ 530 | "cfg-if", 531 | "libc", 532 | "wasi", 533 | ] 534 | 535 | [[package]] 536 | name = "gimli" 537 | version = "0.26.1" 538 | source = "registry+https://github.com/rust-lang/crates.io-index" 539 | checksum = "78cc372d058dcf6d5ecd98510e7fbc9e5aec4d21de70f65fea8fecebcd881bd4" 540 | dependencies = [ 541 | "fallible-iterator", 542 | "indexmap", 543 | "stable_deref_trait", 544 | ] 545 | 546 | [[package]] 547 | name = "hashbrown" 548 | version = "0.12.3" 549 | source = "registry+https://github.com/rust-lang/crates.io-index" 550 | checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" 551 | dependencies = [ 552 | "ahash", 553 | ] 554 | 555 | [[package]] 556 | name = "heck" 557 | version = "0.4.0" 558 | source = "registry+https://github.com/rust-lang/crates.io-index" 559 | checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" 560 | 561 | [[package]] 562 | name = "hermit-abi" 563 | version = "0.1.19" 564 | source = "registry+https://github.com/rust-lang/crates.io-index" 565 | checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" 566 | dependencies = [ 567 | "libc", 568 | ] 569 | 570 | [[package]] 571 | name = "hermit-abi" 572 | version = "0.2.0" 573 | source = "registry+https://github.com/rust-lang/crates.io-index" 574 | checksum = "1ab7905ea95c6d9af62940f9d7dd9596d54c334ae2c15300c482051292d5637f" 575 | dependencies = [ 576 | "libc", 577 | ] 578 | 579 | [[package]] 580 | name = "humantime" 581 | version = "2.1.0" 582 | source = "registry+https://github.com/rust-lang/crates.io-index" 583 | checksum = "9a3a5bfb195931eeb336b2a7b4d761daec841b97f947d34394601737a7bba5e4" 584 | 585 | [[package]] 586 | name = "indexmap" 587 | version = "1.9.2" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "1885e79c1fc4b10f0e172c475f458b7f7b93061064d98c3293e98c5ba0c8b399" 590 | dependencies = [ 591 | "autocfg", 592 | "hashbrown", 593 | "serde", 594 | ] 595 | 596 | [[package]] 597 | name = "io-extras" 598 | version = "0.15.0" 599 | source = "registry+https://github.com/rust-lang/crates.io-index" 600 | checksum = "4a5d8c2ab5becd8720e30fd25f8fa5500d8dc3fceadd8378f05859bd7b46fc49" 601 | dependencies = [ 602 | "io-lifetimes 0.7.5", 603 | "windows-sys 0.36.1", 604 | ] 605 | 606 | [[package]] 607 | name = "io-lifetimes" 608 | version = "0.7.5" 609 | source = "registry+https://github.com/rust-lang/crates.io-index" 610 | checksum = "59ce5ef949d49ee85593fc4d3f3f95ad61657076395cbbce23e2121fc5542074" 611 | dependencies = [ 612 | "libc", 613 | "windows-sys 0.42.0", 614 | ] 615 | 616 | [[package]] 617 | name = "io-lifetimes" 618 | version = "1.0.3" 619 | source = "registry+https://github.com/rust-lang/crates.io-index" 620 | checksum = "46112a93252b123d31a119a8d1a1ac19deac4fac6e0e8b0df58f0d4e5870e63c" 621 | dependencies = [ 622 | "libc", 623 | "windows-sys 0.42.0", 624 | ] 625 | 626 | [[package]] 627 | name = "ipnet" 628 | version = "2.4.0" 629 | source = "registry+https://github.com/rust-lang/crates.io-index" 630 | checksum = "35e70ee094dc02fd9c13fdad4940090f22dbd6ac7c9e7094a46cf0232a50bc7c" 631 | 632 | [[package]] 633 | name = "is-terminal" 634 | version = "0.3.0" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "0d508111813f9af3afd2f92758f77e4ed2cc9371b642112c6a48d22eb73105c5" 637 | dependencies = [ 638 | "hermit-abi 0.2.0", 639 | "io-lifetimes 0.7.5", 640 | "rustix 0.35.13", 641 | "windows-sys 0.36.1", 642 | ] 643 | 644 | [[package]] 645 | name = "itertools" 646 | version = "0.10.3" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "a9a9d19fa1e79b6215ff29b9d6880b706147f16e9b1dbb1e4e5947b5b02bc5e3" 649 | dependencies = [ 650 | "either", 651 | ] 652 | 653 | [[package]] 654 | name = "itoa" 655 | version = "1.0.1" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "1aab8fc367588b89dcee83ab0fd66b72b50b72fa1904d7095045ace2b0c81c35" 658 | 659 | [[package]] 660 | name = "ittapi" 661 | version = "0.3.2" 662 | source = "registry+https://github.com/rust-lang/crates.io-index" 663 | checksum = "e8c4f6ff06169ce7048dac5150b1501c7e3716a929721aeb06b87e51a43e42f4" 664 | dependencies = [ 665 | "anyhow", 666 | "ittapi-sys", 667 | "log", 668 | ] 669 | 670 | [[package]] 671 | name = "ittapi-sys" 672 | version = "0.3.2" 673 | source = "registry+https://github.com/rust-lang/crates.io-index" 674 | checksum = "87e078cce01485f418bae3beb34dd604aaedf2065502853c7da17fbce8e64eda" 675 | dependencies = [ 676 | "cc", 677 | ] 678 | 679 | [[package]] 680 | name = "jobserver" 681 | version = "0.1.24" 682 | source = "registry+https://github.com/rust-lang/crates.io-index" 683 | checksum = "af25a77299a7f711a01975c35a6a424eb6862092cc2d6c72c4ed6cbc56dfc1fa" 684 | dependencies = [ 685 | "libc", 686 | ] 687 | 688 | [[package]] 689 | name = "lazy_static" 690 | version = "1.4.0" 691 | source = "registry+https://github.com/rust-lang/crates.io-index" 692 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 693 | 694 | [[package]] 695 | name = "leb128" 696 | version = "0.2.5" 697 | source = "registry+https://github.com/rust-lang/crates.io-index" 698 | checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" 699 | 700 | [[package]] 701 | name = "libc" 702 | version = "0.2.138" 703 | source = "registry+https://github.com/rust-lang/crates.io-index" 704 | checksum = "db6d7e329c562c5dfab7a46a2afabc8b987ab9a4834c9d1ca04dc54c1546cef8" 705 | 706 | [[package]] 707 | name = "linux-raw-sys" 708 | version = "0.0.46" 709 | source = "registry+https://github.com/rust-lang/crates.io-index" 710 | checksum = "d4d2456c373231a208ad294c33dc5bff30051eafd954cd4caae83a712b12854d" 711 | 712 | [[package]] 713 | name = "linux-raw-sys" 714 | version = "0.1.3" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "8f9f08d8963a6c613f4b1a78f4f4a4dbfadf8e6545b2d72861731e4858b8b47f" 717 | 718 | [[package]] 719 | name = "log" 720 | version = "0.4.16" 721 | source = "registry+https://github.com/rust-lang/crates.io-index" 722 | checksum = "6389c490849ff5bc16be905ae24bc913a9c8892e19b2341dbc175e14c341c2b8" 723 | dependencies = [ 724 | "cfg-if", 725 | ] 726 | 727 | [[package]] 728 | name = "mach" 729 | version = "0.3.2" 730 | source = "registry+https://github.com/rust-lang/crates.io-index" 731 | checksum = "b823e83b2affd8f40a9ee8c29dbc56404c1e34cd2710921f2801e2cf29527afa" 732 | dependencies = [ 733 | "libc", 734 | ] 735 | 736 | [[package]] 737 | name = "maybe-owned" 738 | version = "0.3.4" 739 | source = "registry+https://github.com/rust-lang/crates.io-index" 740 | checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" 741 | 742 | [[package]] 743 | name = "memchr" 744 | version = "2.4.1" 745 | source = "registry+https://github.com/rust-lang/crates.io-index" 746 | checksum = "308cc39be01b73d0d18f82a0e7b2a3df85245f84af96fdddc5d202d27e47b86a" 747 | 748 | [[package]] 749 | name = "memfd" 750 | version = "0.6.2" 751 | source = "registry+https://github.com/rust-lang/crates.io-index" 752 | checksum = "b20a59d985586e4a5aef64564ac77299f8586d8be6cf9106a5a40207e8908efb" 753 | dependencies = [ 754 | "rustix 0.36.5", 755 | ] 756 | 757 | [[package]] 758 | name = "memoffset" 759 | version = "0.6.5" 760 | source = "registry+https://github.com/rust-lang/crates.io-index" 761 | checksum = "5aa361d4faea93603064a027415f07bd8e1d5c88c9fbf68bf56a285428fd79ce" 762 | dependencies = [ 763 | "autocfg", 764 | ] 765 | 766 | [[package]] 767 | name = "num_cpus" 768 | version = "1.13.1" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" 771 | dependencies = [ 772 | "hermit-abi 0.1.19", 773 | "libc", 774 | ] 775 | 776 | [[package]] 777 | name = "object" 778 | version = "0.29.0" 779 | source = "registry+https://github.com/rust-lang/crates.io-index" 780 | checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" 781 | dependencies = [ 782 | "crc32fast", 783 | "hashbrown", 784 | "indexmap", 785 | "memchr", 786 | ] 787 | 788 | [[package]] 789 | name = "once_cell" 790 | version = "1.16.0" 791 | source = "registry+https://github.com/rust-lang/crates.io-index" 792 | checksum = "86f0b0d4bf799edbc74508c1e8bf170ff5f41238e5f8225603ca7caaae2b7860" 793 | 794 | [[package]] 795 | name = "paste" 796 | version = "1.0.7" 797 | source = "registry+https://github.com/rust-lang/crates.io-index" 798 | checksum = "0c520e05135d6e763148b6426a837e239041653ba7becd2e538c076c738025fc" 799 | 800 | [[package]] 801 | name = "pin-project-lite" 802 | version = "0.2.8" 803 | source = "registry+https://github.com/rust-lang/crates.io-index" 804 | checksum = "e280fbe77cc62c91527259e9442153f4688736748d24660126286329742b4c6c" 805 | 806 | [[package]] 807 | name = "ppv-lite86" 808 | version = "0.2.16" 809 | source = "registry+https://github.com/rust-lang/crates.io-index" 810 | checksum = "eb9f9e6e233e5c4a35559a617bf40a4ec447db2e84c20b55a6f83167b7e57872" 811 | 812 | [[package]] 813 | name = "proc-macro2" 814 | version = "1.0.47" 815 | source = "registry+https://github.com/rust-lang/crates.io-index" 816 | checksum = "5ea3d908b0e36316caf9e9e2c4625cdde190a7e6f440d794667ed17a1855e725" 817 | dependencies = [ 818 | "unicode-ident", 819 | ] 820 | 821 | [[package]] 822 | name = "psm" 823 | version = "0.1.18" 824 | source = "registry+https://github.com/rust-lang/crates.io-index" 825 | checksum = "871372391786ccec00d3c5d3d6608905b3d4db263639cfe075d3b60a736d115a" 826 | dependencies = [ 827 | "cc", 828 | ] 829 | 830 | [[package]] 831 | name = "quote" 832 | version = "1.0.17" 833 | source = "registry+https://github.com/rust-lang/crates.io-index" 834 | checksum = "632d02bff7f874a36f33ea8bb416cd484b90cc66c1194b1a1110d067a7013f58" 835 | dependencies = [ 836 | "proc-macro2", 837 | ] 838 | 839 | [[package]] 840 | name = "rand" 841 | version = "0.8.5" 842 | source = "registry+https://github.com/rust-lang/crates.io-index" 843 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 844 | dependencies = [ 845 | "libc", 846 | "rand_chacha", 847 | "rand_core", 848 | ] 849 | 850 | [[package]] 851 | name = "rand_chacha" 852 | version = "0.3.1" 853 | source = "registry+https://github.com/rust-lang/crates.io-index" 854 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 855 | dependencies = [ 856 | "ppv-lite86", 857 | "rand_core", 858 | ] 859 | 860 | [[package]] 861 | name = "rand_core" 862 | version = "0.6.3" 863 | source = "registry+https://github.com/rust-lang/crates.io-index" 864 | checksum = "d34f1408f55294453790c48b2f1ebbb1c5b4b7563eb1f418bcfcfdbb06ebb4e7" 865 | dependencies = [ 866 | "getrandom", 867 | ] 868 | 869 | [[package]] 870 | name = "rayon" 871 | version = "1.5.1" 872 | source = "registry+https://github.com/rust-lang/crates.io-index" 873 | checksum = "c06aca804d41dbc8ba42dfd964f0d01334eceb64314b9ecf7c5fad5188a06d90" 874 | dependencies = [ 875 | "autocfg", 876 | "crossbeam-deque", 877 | "either", 878 | "rayon-core", 879 | ] 880 | 881 | [[package]] 882 | name = "rayon-core" 883 | version = "1.9.1" 884 | source = "registry+https://github.com/rust-lang/crates.io-index" 885 | checksum = "d78120e2c850279833f1dd3582f730c4ab53ed95aeaaaa862a2a5c71b1656d8e" 886 | dependencies = [ 887 | "crossbeam-channel", 888 | "crossbeam-deque", 889 | "crossbeam-utils", 890 | "lazy_static", 891 | "num_cpus", 892 | ] 893 | 894 | [[package]] 895 | name = "redox_syscall" 896 | version = "0.2.13" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "62f25bc4c7e55e0b0b7a1d43fb893f4fa1361d0abe38b9ce4f323c2adfe6ef42" 899 | dependencies = [ 900 | "bitflags", 901 | ] 902 | 903 | [[package]] 904 | name = "redox_users" 905 | version = "0.4.3" 906 | source = "registry+https://github.com/rust-lang/crates.io-index" 907 | checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b" 908 | dependencies = [ 909 | "getrandom", 910 | "redox_syscall", 911 | "thiserror", 912 | ] 913 | 914 | [[package]] 915 | name = "regalloc2" 916 | version = "0.4.2" 917 | source = "registry+https://github.com/rust-lang/crates.io-index" 918 | checksum = "91b2eab54204ea0117fe9a060537e0b07a4e72f7c7d182361ecc346cab2240e5" 919 | dependencies = [ 920 | "fxhash", 921 | "log", 922 | "slice-group-by", 923 | "smallvec", 924 | ] 925 | 926 | [[package]] 927 | name = "regex" 928 | version = "1.5.5" 929 | source = "registry+https://github.com/rust-lang/crates.io-index" 930 | checksum = "1a11647b6b25ff05a515cb92c365cec08801e83423a235b51e231e1808747286" 931 | dependencies = [ 932 | "aho-corasick", 933 | "memchr", 934 | "regex-syntax", 935 | ] 936 | 937 | [[package]] 938 | name = "regex-syntax" 939 | version = "0.6.25" 940 | source = "registry+https://github.com/rust-lang/crates.io-index" 941 | checksum = "f497285884f3fcff424ffc933e56d7cbca511def0c9831a7f9b5f6153e3cc89b" 942 | 943 | [[package]] 944 | name = "rustc-demangle" 945 | version = "0.1.21" 946 | source = "registry+https://github.com/rust-lang/crates.io-index" 947 | checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" 948 | 949 | [[package]] 950 | name = "rustix" 951 | version = "0.35.13" 952 | source = "registry+https://github.com/rust-lang/crates.io-index" 953 | checksum = "727a1a6d65f786ec22df8a81ca3121107f235970dc1705ed681d3e6e8b9cd5f9" 954 | dependencies = [ 955 | "bitflags", 956 | "errno", 957 | "io-lifetimes 0.7.5", 958 | "itoa", 959 | "libc", 960 | "linux-raw-sys 0.0.46", 961 | "once_cell", 962 | "windows-sys 0.42.0", 963 | ] 964 | 965 | [[package]] 966 | name = "rustix" 967 | version = "0.36.5" 968 | source = "registry+https://github.com/rust-lang/crates.io-index" 969 | checksum = "a3807b5d10909833d3e9acd1eb5fb988f79376ff10fce42937de71a449c4c588" 970 | dependencies = [ 971 | "bitflags", 972 | "errno", 973 | "io-lifetimes 1.0.3", 974 | "libc", 975 | "linux-raw-sys 0.1.3", 976 | "windows-sys 0.42.0", 977 | ] 978 | 979 | [[package]] 980 | name = "ryu" 981 | version = "1.0.9" 982 | source = "registry+https://github.com/rust-lang/crates.io-index" 983 | checksum = "73b4b750c782965c211b42f022f59af1fbceabdd026623714f104152f1ec149f" 984 | 985 | [[package]] 986 | name = "scopeguard" 987 | version = "1.1.0" 988 | source = "registry+https://github.com/rust-lang/crates.io-index" 989 | checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" 990 | 991 | [[package]] 992 | name = "serde" 993 | version = "1.0.149" 994 | source = "registry+https://github.com/rust-lang/crates.io-index" 995 | checksum = "256b9932320c590e707b94576e3cc1f7c9024d0ee6612dfbcf1cb106cbe8e055" 996 | dependencies = [ 997 | "serde_derive", 998 | ] 999 | 1000 | [[package]] 1001 | name = "serde_derive" 1002 | version = "1.0.149" 1003 | source = "registry+https://github.com/rust-lang/crates.io-index" 1004 | checksum = "b4eae9b04cbffdfd550eb462ed33bc6a1b68c935127d008b27444d08380f94e4" 1005 | dependencies = [ 1006 | "proc-macro2", 1007 | "quote", 1008 | "syn", 1009 | ] 1010 | 1011 | [[package]] 1012 | name = "serde_json" 1013 | version = "1.0.89" 1014 | source = "registry+https://github.com/rust-lang/crates.io-index" 1015 | checksum = "020ff22c755c2ed3f8cf162dbb41a7268d934702f3ed3631656ea597e08fc3db" 1016 | dependencies = [ 1017 | "itoa", 1018 | "ryu", 1019 | "serde", 1020 | ] 1021 | 1022 | [[package]] 1023 | name = "sha2" 1024 | version = "0.10.6" 1025 | source = "registry+https://github.com/rust-lang/crates.io-index" 1026 | checksum = "82e6b795fe2e3b1e845bafcb27aa35405c4d47cdfc92af5fc8d3002f76cebdc0" 1027 | dependencies = [ 1028 | "cfg-if", 1029 | "cpufeatures", 1030 | "digest", 1031 | ] 1032 | 1033 | [[package]] 1034 | name = "shellexpand" 1035 | version = "2.1.0" 1036 | source = "registry+https://github.com/rust-lang/crates.io-index" 1037 | checksum = "83bdb7831b2d85ddf4a7b148aa19d0587eddbe8671a436b7bd1182eaad0f2829" 1038 | dependencies = [ 1039 | "dirs-next", 1040 | ] 1041 | 1042 | [[package]] 1043 | name = "slice-group-by" 1044 | version = "0.3.0" 1045 | source = "registry+https://github.com/rust-lang/crates.io-index" 1046 | checksum = "03b634d87b960ab1a38c4fe143b508576f075e7c978bfad18217645ebfdfa2ec" 1047 | 1048 | [[package]] 1049 | name = "smallvec" 1050 | version = "1.8.0" 1051 | source = "registry+https://github.com/rust-lang/crates.io-index" 1052 | checksum = "f2dd574626839106c320a323308629dcb1acfc96e32a8cba364ddc61ac23ee83" 1053 | 1054 | [[package]] 1055 | name = "stable_deref_trait" 1056 | version = "1.2.0" 1057 | source = "registry+https://github.com/rust-lang/crates.io-index" 1058 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1059 | 1060 | [[package]] 1061 | name = "syn" 1062 | version = "1.0.105" 1063 | source = "registry+https://github.com/rust-lang/crates.io-index" 1064 | checksum = "60b9b43d45702de4c839cb9b51d9f529c5dd26a4aff255b42b1ebc03e88ee908" 1065 | dependencies = [ 1066 | "proc-macro2", 1067 | "quote", 1068 | "unicode-ident", 1069 | ] 1070 | 1071 | [[package]] 1072 | name = "system-interface" 1073 | version = "0.23.0" 1074 | source = "registry+https://github.com/rust-lang/crates.io-index" 1075 | checksum = "92adbaf536f5aff6986e1e62ba36cee72b1718c5153eee08b9e728ddde3f6029" 1076 | dependencies = [ 1077 | "atty", 1078 | "bitflags", 1079 | "cap-fs-ext", 1080 | "cap-std", 1081 | "io-lifetimes 0.7.5", 1082 | "rustix 0.35.13", 1083 | "windows-sys 0.36.1", 1084 | "winx", 1085 | ] 1086 | 1087 | [[package]] 1088 | name = "target-lexicon" 1089 | version = "0.12.3" 1090 | source = "registry+https://github.com/rust-lang/crates.io-index" 1091 | checksum = "d7fa7e55043acb85fca6b3c01485a2eeb6b69c5d21002e273c79e465f43b7ac1" 1092 | 1093 | [[package]] 1094 | name = "termcolor" 1095 | version = "1.1.3" 1096 | source = "registry+https://github.com/rust-lang/crates.io-index" 1097 | checksum = "bab24d30b911b2376f3a13cc2cd443142f0c81dda04c118693e35b3835757755" 1098 | dependencies = [ 1099 | "winapi-util", 1100 | ] 1101 | 1102 | [[package]] 1103 | name = "thiserror" 1104 | version = "1.0.30" 1105 | source = "registry+https://github.com/rust-lang/crates.io-index" 1106 | checksum = "854babe52e4df1653706b98fcfc05843010039b406875930a70e4d9644e5c417" 1107 | dependencies = [ 1108 | "thiserror-impl", 1109 | ] 1110 | 1111 | [[package]] 1112 | name = "thiserror-impl" 1113 | version = "1.0.30" 1114 | source = "registry+https://github.com/rust-lang/crates.io-index" 1115 | checksum = "aa32fd3f627f367fe16f893e2597ae3c05020f8bba2666a4e6ea73d377e5714b" 1116 | dependencies = [ 1117 | "proc-macro2", 1118 | "quote", 1119 | "syn", 1120 | ] 1121 | 1122 | [[package]] 1123 | name = "toml" 1124 | version = "0.5.8" 1125 | source = "registry+https://github.com/rust-lang/crates.io-index" 1126 | checksum = "a31142970826733df8241ef35dc040ef98c679ab14d7c3e54d827099b3acecaa" 1127 | dependencies = [ 1128 | "serde", 1129 | ] 1130 | 1131 | [[package]] 1132 | name = "tracing" 1133 | version = "0.1.32" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "4a1bdf54a7c28a2bbf701e1d2233f6c77f473486b94bee4f9678da5a148dca7f" 1136 | dependencies = [ 1137 | "cfg-if", 1138 | "log", 1139 | "pin-project-lite", 1140 | "tracing-attributes", 1141 | "tracing-core", 1142 | ] 1143 | 1144 | [[package]] 1145 | name = "tracing-attributes" 1146 | version = "0.1.20" 1147 | source = "registry+https://github.com/rust-lang/crates.io-index" 1148 | checksum = "2e65ce065b4b5c53e73bb28912318cb8c9e9ad3921f1d669eb0e68b4c8143a2b" 1149 | dependencies = [ 1150 | "proc-macro2", 1151 | "quote", 1152 | "syn", 1153 | ] 1154 | 1155 | [[package]] 1156 | name = "tracing-core" 1157 | version = "0.1.24" 1158 | source = "registry+https://github.com/rust-lang/crates.io-index" 1159 | checksum = "90442985ee2f57c9e1b548ee72ae842f4a9a20e3f417cc38dbc5dc684d9bb4ee" 1160 | dependencies = [ 1161 | "lazy_static", 1162 | ] 1163 | 1164 | [[package]] 1165 | name = "typenum" 1166 | version = "1.15.0" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "dcf81ac59edc17cc8697ff311e8f5ef2d99fcbd9817b34cec66f90b6c3dfd987" 1169 | 1170 | [[package]] 1171 | name = "unicode-ident" 1172 | version = "1.0.5" 1173 | source = "registry+https://github.com/rust-lang/crates.io-index" 1174 | checksum = "6ceab39d59e4c9499d4e5a8ee0e2735b891bb7308ac83dfb4e80cad195c9f6f3" 1175 | 1176 | [[package]] 1177 | name = "unicode-width" 1178 | version = "0.1.9" 1179 | source = "registry+https://github.com/rust-lang/crates.io-index" 1180 | checksum = "3ed742d4ea2bd1176e236172c8429aaf54486e7ac098db29ffe6529e0ce50973" 1181 | 1182 | [[package]] 1183 | name = "version_check" 1184 | version = "0.9.4" 1185 | source = "registry+https://github.com/rust-lang/crates.io-index" 1186 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 1187 | 1188 | [[package]] 1189 | name = "wasi" 1190 | version = "0.10.2+wasi-snapshot-preview1" 1191 | source = "registry+https://github.com/rust-lang/crates.io-index" 1192 | checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6" 1193 | 1194 | [[package]] 1195 | name = "wasi-cap-std-sync" 1196 | version = "3.0.1" 1197 | source = "registry+https://github.com/rust-lang/crates.io-index" 1198 | checksum = "ecbeebb8985a5423f36f976b2f4a0b3c6ce38d7d9a7247e1ce07aa2880e4f29b" 1199 | dependencies = [ 1200 | "anyhow", 1201 | "async-trait", 1202 | "cap-fs-ext", 1203 | "cap-rand", 1204 | "cap-std", 1205 | "cap-time-ext", 1206 | "fs-set-times", 1207 | "io-extras", 1208 | "io-lifetimes 0.7.5", 1209 | "is-terminal", 1210 | "once_cell", 1211 | "rustix 0.35.13", 1212 | "system-interface", 1213 | "tracing", 1214 | "wasi-common", 1215 | "windows-sys 0.36.1", 1216 | ] 1217 | 1218 | [[package]] 1219 | name = "wasi-common" 1220 | version = "3.0.1" 1221 | source = "registry+https://github.com/rust-lang/crates.io-index" 1222 | checksum = "81e2171f3783fe6600ee24ff6c58ca1b329c55e458cc1622ecc1fd0427648607" 1223 | dependencies = [ 1224 | "anyhow", 1225 | "bitflags", 1226 | "cap-rand", 1227 | "cap-std", 1228 | "io-extras", 1229 | "rustix 0.35.13", 1230 | "thiserror", 1231 | "tracing", 1232 | "wasmtime", 1233 | "wiggle", 1234 | "windows-sys 0.36.1", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "wasi-data-sharing" 1239 | version = "0.1.0" 1240 | dependencies = [ 1241 | "anyhow", 1242 | "serde", 1243 | "serde_json", 1244 | "wasi-common", 1245 | "wasmtime", 1246 | "wasmtime-wasi", 1247 | ] 1248 | 1249 | [[package]] 1250 | name = "wasm-encoder" 1251 | version = "0.20.0" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "05632e0a66a6ed8cca593c24223aabd6262f256c3693ad9822c315285f010614" 1254 | dependencies = [ 1255 | "leb128", 1256 | ] 1257 | 1258 | [[package]] 1259 | name = "wasmparser" 1260 | version = "0.93.0" 1261 | source = "registry+https://github.com/rust-lang/crates.io-index" 1262 | checksum = "c5a4460aa3e271fa180b6a5d003e728f3963fb30e3ba0fa7c9634caa06049328" 1263 | dependencies = [ 1264 | "indexmap", 1265 | ] 1266 | 1267 | [[package]] 1268 | name = "wasmtime" 1269 | version = "3.0.1" 1270 | source = "registry+https://github.com/rust-lang/crates.io-index" 1271 | checksum = "d18265705b1c49218776577d9f301d79ab06888c7f4a32e2ed24e68a55738ce7" 1272 | dependencies = [ 1273 | "anyhow", 1274 | "async-trait", 1275 | "bincode", 1276 | "cfg-if", 1277 | "indexmap", 1278 | "libc", 1279 | "log", 1280 | "object", 1281 | "once_cell", 1282 | "paste", 1283 | "psm", 1284 | "rayon", 1285 | "serde", 1286 | "target-lexicon", 1287 | "wasmparser", 1288 | "wasmtime-cache", 1289 | "wasmtime-cranelift", 1290 | "wasmtime-environ", 1291 | "wasmtime-fiber", 1292 | "wasmtime-jit", 1293 | "wasmtime-runtime", 1294 | "wat", 1295 | "windows-sys 0.36.1", 1296 | ] 1297 | 1298 | [[package]] 1299 | name = "wasmtime-asm-macros" 1300 | version = "3.0.1" 1301 | source = "registry+https://github.com/rust-lang/crates.io-index" 1302 | checksum = "a201583f6c79b96e74dcce748fa44fb2958f474ef13c93f880ea4d3bed31ae4f" 1303 | dependencies = [ 1304 | "cfg-if", 1305 | ] 1306 | 1307 | [[package]] 1308 | name = "wasmtime-cache" 1309 | version = "3.0.1" 1310 | source = "registry+https://github.com/rust-lang/crates.io-index" 1311 | checksum = "3f37efc6945b08fcb634cffafc438dd299bac55a27c836954656c634d3e63c31" 1312 | dependencies = [ 1313 | "anyhow", 1314 | "base64", 1315 | "bincode", 1316 | "directories-next", 1317 | "file-per-thread-logger", 1318 | "log", 1319 | "rustix 0.35.13", 1320 | "serde", 1321 | "sha2", 1322 | "toml", 1323 | "windows-sys 0.36.1", 1324 | "zstd", 1325 | ] 1326 | 1327 | [[package]] 1328 | name = "wasmtime-cranelift" 1329 | version = "3.0.1" 1330 | source = "registry+https://github.com/rust-lang/crates.io-index" 1331 | checksum = "fe208297e045ea0ee6702be88772ea40f918d55fbd4163981a4699aff034b634" 1332 | dependencies = [ 1333 | "anyhow", 1334 | "cranelift-codegen", 1335 | "cranelift-entity", 1336 | "cranelift-frontend", 1337 | "cranelift-native", 1338 | "cranelift-wasm", 1339 | "gimli", 1340 | "log", 1341 | "object", 1342 | "target-lexicon", 1343 | "thiserror", 1344 | "wasmparser", 1345 | "wasmtime-environ", 1346 | ] 1347 | 1348 | [[package]] 1349 | name = "wasmtime-environ" 1350 | version = "3.0.1" 1351 | source = "registry+https://github.com/rust-lang/crates.io-index" 1352 | checksum = "754b97f7441ac780a7fa738db5b9c23c1b70ef4abccd8ad205ada5669d196ba2" 1353 | dependencies = [ 1354 | "anyhow", 1355 | "cranelift-entity", 1356 | "gimli", 1357 | "indexmap", 1358 | "log", 1359 | "object", 1360 | "serde", 1361 | "target-lexicon", 1362 | "thiserror", 1363 | "wasmparser", 1364 | "wasmtime-types", 1365 | ] 1366 | 1367 | [[package]] 1368 | name = "wasmtime-fiber" 1369 | version = "3.0.1" 1370 | source = "registry+https://github.com/rust-lang/crates.io-index" 1371 | checksum = "e5f54abc960b4a055ba16b942cbbd1da641e0ad44cc97a7608f3d43c069b120e" 1372 | dependencies = [ 1373 | "cc", 1374 | "cfg-if", 1375 | "rustix 0.35.13", 1376 | "wasmtime-asm-macros", 1377 | "windows-sys 0.36.1", 1378 | ] 1379 | 1380 | [[package]] 1381 | name = "wasmtime-jit" 1382 | version = "3.0.1" 1383 | source = "registry+https://github.com/rust-lang/crates.io-index" 1384 | checksum = "32800cb6e29faabab7056593f70a4c00c65c75c365aaf05406933f2169d0c22f" 1385 | dependencies = [ 1386 | "addr2line", 1387 | "anyhow", 1388 | "bincode", 1389 | "cfg-if", 1390 | "cpp_demangle", 1391 | "gimli", 1392 | "ittapi", 1393 | "log", 1394 | "object", 1395 | "rustc-demangle", 1396 | "serde", 1397 | "target-lexicon", 1398 | "thiserror", 1399 | "wasmtime-environ", 1400 | "wasmtime-jit-debug", 1401 | "wasmtime-jit-icache-coherence", 1402 | "wasmtime-runtime", 1403 | "windows-sys 0.36.1", 1404 | ] 1405 | 1406 | [[package]] 1407 | name = "wasmtime-jit-debug" 1408 | version = "3.0.1" 1409 | source = "registry+https://github.com/rust-lang/crates.io-index" 1410 | checksum = "fe057012a0ba6cee3685af1e923d6e0a6cb9baf15fb3ffa4be3d7f712c7dec42" 1411 | dependencies = [ 1412 | "object", 1413 | "once_cell", 1414 | "rustix 0.35.13", 1415 | ] 1416 | 1417 | [[package]] 1418 | name = "wasmtime-jit-icache-coherence" 1419 | version = "2.0.1" 1420 | source = "registry+https://github.com/rust-lang/crates.io-index" 1421 | checksum = "e6bbabb309c06cc238ee91b1455b748c45f0bdcab0dda2c2db85b0a1e69fcb66" 1422 | dependencies = [ 1423 | "cfg-if", 1424 | "libc", 1425 | "windows-sys 0.36.1", 1426 | ] 1427 | 1428 | [[package]] 1429 | name = "wasmtime-runtime" 1430 | version = "3.0.1" 1431 | source = "registry+https://github.com/rust-lang/crates.io-index" 1432 | checksum = "09a23b6e138e89594c0189162e524a29e217aec8f9a4e1959a34f74c64e8d17d" 1433 | dependencies = [ 1434 | "anyhow", 1435 | "cc", 1436 | "cfg-if", 1437 | "indexmap", 1438 | "libc", 1439 | "log", 1440 | "mach", 1441 | "memfd", 1442 | "memoffset", 1443 | "paste", 1444 | "rand", 1445 | "rustix 0.35.13", 1446 | "thiserror", 1447 | "wasmtime-asm-macros", 1448 | "wasmtime-environ", 1449 | "wasmtime-fiber", 1450 | "wasmtime-jit-debug", 1451 | "windows-sys 0.36.1", 1452 | ] 1453 | 1454 | [[package]] 1455 | name = "wasmtime-types" 1456 | version = "3.0.1" 1457 | source = "registry+https://github.com/rust-lang/crates.io-index" 1458 | checksum = "68ec7615fde8c79737f1345d81f0b18da83b3db929a87b4604f27c932246d1e2" 1459 | dependencies = [ 1460 | "cranelift-entity", 1461 | "serde", 1462 | "thiserror", 1463 | "wasmparser", 1464 | ] 1465 | 1466 | [[package]] 1467 | name = "wasmtime-wasi" 1468 | version = "3.0.1" 1469 | source = "registry+https://github.com/rust-lang/crates.io-index" 1470 | checksum = "ca539adf155dca1407aa3656e5661bf2364b1f3ebabc7f0a8bd62629d876acfa" 1471 | dependencies = [ 1472 | "anyhow", 1473 | "wasi-cap-std-sync", 1474 | "wasi-common", 1475 | "wasmtime", 1476 | "wiggle", 1477 | ] 1478 | 1479 | [[package]] 1480 | name = "wast" 1481 | version = "35.0.2" 1482 | source = "registry+https://github.com/rust-lang/crates.io-index" 1483 | checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" 1484 | dependencies = [ 1485 | "leb128", 1486 | ] 1487 | 1488 | [[package]] 1489 | name = "wast" 1490 | version = "50.0.0" 1491 | source = "registry+https://github.com/rust-lang/crates.io-index" 1492 | checksum = "a2cbb59d4ac799842791fe7e806fa5dbbf6b5554d538e51cc8e176db6ff0ae34" 1493 | dependencies = [ 1494 | "leb128", 1495 | "memchr", 1496 | "unicode-width", 1497 | "wasm-encoder", 1498 | ] 1499 | 1500 | [[package]] 1501 | name = "wat" 1502 | version = "1.0.52" 1503 | source = "registry+https://github.com/rust-lang/crates.io-index" 1504 | checksum = "584aaf7a1ecf4d383bbe1a25eeab0cbb8ff96acc6796707ff65cde48f4632f15" 1505 | dependencies = [ 1506 | "wast 50.0.0", 1507 | ] 1508 | 1509 | [[package]] 1510 | name = "wiggle" 1511 | version = "3.0.1" 1512 | source = "registry+https://github.com/rust-lang/crates.io-index" 1513 | checksum = "2da09ca5b8bb9278a2123e8c36342166b9aaa55a0dbab18b231f46d6f6ab85bc" 1514 | dependencies = [ 1515 | "anyhow", 1516 | "async-trait", 1517 | "bitflags", 1518 | "thiserror", 1519 | "tracing", 1520 | "wasmtime", 1521 | "wiggle-macro", 1522 | ] 1523 | 1524 | [[package]] 1525 | name = "wiggle-generate" 1526 | version = "3.0.1" 1527 | source = "registry+https://github.com/rust-lang/crates.io-index" 1528 | checksum = "ba5796f53b429df7d44cfdaae8f6d9cd981d82aec3516561352ca9c5e73ee185" 1529 | dependencies = [ 1530 | "anyhow", 1531 | "heck", 1532 | "proc-macro2", 1533 | "quote", 1534 | "shellexpand", 1535 | "syn", 1536 | "witx", 1537 | ] 1538 | 1539 | [[package]] 1540 | name = "wiggle-macro" 1541 | version = "3.0.1" 1542 | source = "registry+https://github.com/rust-lang/crates.io-index" 1543 | checksum = "8b830eb7203d48942fb8bc8bb105f76e7d09c33a082d638e990e02143bb2facd" 1544 | dependencies = [ 1545 | "proc-macro2", 1546 | "quote", 1547 | "syn", 1548 | "wiggle-generate", 1549 | ] 1550 | 1551 | [[package]] 1552 | name = "winapi" 1553 | version = "0.3.9" 1554 | source = "registry+https://github.com/rust-lang/crates.io-index" 1555 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 1556 | dependencies = [ 1557 | "winapi-i686-pc-windows-gnu", 1558 | "winapi-x86_64-pc-windows-gnu", 1559 | ] 1560 | 1561 | [[package]] 1562 | name = "winapi-i686-pc-windows-gnu" 1563 | version = "0.4.0" 1564 | source = "registry+https://github.com/rust-lang/crates.io-index" 1565 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 1566 | 1567 | [[package]] 1568 | name = "winapi-util" 1569 | version = "0.1.5" 1570 | source = "registry+https://github.com/rust-lang/crates.io-index" 1571 | checksum = "70ec6ce85bb158151cae5e5c87f95a8e97d2c0c4b001223f33a334e3ce5de178" 1572 | dependencies = [ 1573 | "winapi", 1574 | ] 1575 | 1576 | [[package]] 1577 | name = "winapi-x86_64-pc-windows-gnu" 1578 | version = "0.4.0" 1579 | source = "registry+https://github.com/rust-lang/crates.io-index" 1580 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 1581 | 1582 | [[package]] 1583 | name = "windows-sys" 1584 | version = "0.36.1" 1585 | source = "registry+https://github.com/rust-lang/crates.io-index" 1586 | checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" 1587 | dependencies = [ 1588 | "windows_aarch64_msvc 0.36.1", 1589 | "windows_i686_gnu 0.36.1", 1590 | "windows_i686_msvc 0.36.1", 1591 | "windows_x86_64_gnu 0.36.1", 1592 | "windows_x86_64_msvc 0.36.1", 1593 | ] 1594 | 1595 | [[package]] 1596 | name = "windows-sys" 1597 | version = "0.42.0" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "5a3e1820f08b8513f676f7ab6c1f99ff312fb97b553d30ff4dd86f9f15728aa7" 1600 | dependencies = [ 1601 | "windows_aarch64_gnullvm", 1602 | "windows_aarch64_msvc 0.42.0", 1603 | "windows_i686_gnu 0.42.0", 1604 | "windows_i686_msvc 0.42.0", 1605 | "windows_x86_64_gnu 0.42.0", 1606 | "windows_x86_64_gnullvm", 1607 | "windows_x86_64_msvc 0.42.0", 1608 | ] 1609 | 1610 | [[package]] 1611 | name = "windows_aarch64_gnullvm" 1612 | version = "0.42.0" 1613 | source = "registry+https://github.com/rust-lang/crates.io-index" 1614 | checksum = "41d2aa71f6f0cbe00ae5167d90ef3cfe66527d6f613ca78ac8024c3ccab9a19e" 1615 | 1616 | [[package]] 1617 | name = "windows_aarch64_msvc" 1618 | version = "0.36.1" 1619 | source = "registry+https://github.com/rust-lang/crates.io-index" 1620 | checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" 1621 | 1622 | [[package]] 1623 | name = "windows_aarch64_msvc" 1624 | version = "0.42.0" 1625 | source = "registry+https://github.com/rust-lang/crates.io-index" 1626 | checksum = "dd0f252f5a35cac83d6311b2e795981f5ee6e67eb1f9a7f64eb4500fbc4dcdb4" 1627 | 1628 | [[package]] 1629 | name = "windows_i686_gnu" 1630 | version = "0.36.1" 1631 | source = "registry+https://github.com/rust-lang/crates.io-index" 1632 | checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" 1633 | 1634 | [[package]] 1635 | name = "windows_i686_gnu" 1636 | version = "0.42.0" 1637 | source = "registry+https://github.com/rust-lang/crates.io-index" 1638 | checksum = "fbeae19f6716841636c28d695375df17562ca208b2b7d0dc47635a50ae6c5de7" 1639 | 1640 | [[package]] 1641 | name = "windows_i686_msvc" 1642 | version = "0.36.1" 1643 | source = "registry+https://github.com/rust-lang/crates.io-index" 1644 | checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" 1645 | 1646 | [[package]] 1647 | name = "windows_i686_msvc" 1648 | version = "0.42.0" 1649 | source = "registry+https://github.com/rust-lang/crates.io-index" 1650 | checksum = "84c12f65daa39dd2babe6e442988fc329d6243fdce47d7d2d155b8d874862246" 1651 | 1652 | [[package]] 1653 | name = "windows_x86_64_gnu" 1654 | version = "0.36.1" 1655 | source = "registry+https://github.com/rust-lang/crates.io-index" 1656 | checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" 1657 | 1658 | [[package]] 1659 | name = "windows_x86_64_gnu" 1660 | version = "0.42.0" 1661 | source = "registry+https://github.com/rust-lang/crates.io-index" 1662 | checksum = "bf7b1b21b5362cbc318f686150e5bcea75ecedc74dd157d874d754a2ca44b0ed" 1663 | 1664 | [[package]] 1665 | name = "windows_x86_64_gnullvm" 1666 | version = "0.42.0" 1667 | source = "registry+https://github.com/rust-lang/crates.io-index" 1668 | checksum = "09d525d2ba30eeb3297665bd434a54297e4170c7f1a44cad4ef58095b4cd2028" 1669 | 1670 | [[package]] 1671 | name = "windows_x86_64_msvc" 1672 | version = "0.36.1" 1673 | source = "registry+https://github.com/rust-lang/crates.io-index" 1674 | checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" 1675 | 1676 | [[package]] 1677 | name = "windows_x86_64_msvc" 1678 | version = "0.42.0" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "f40009d85759725a34da6d89a94e63d7bdc50a862acf0dbc7c8e488f1edcb6f5" 1681 | 1682 | [[package]] 1683 | name = "winx" 1684 | version = "0.33.0" 1685 | source = "registry+https://github.com/rust-lang/crates.io-index" 1686 | checksum = "b7b01e010390eb263a4518c8cebf86cb67469d1511c00b749a47b64c39e8054d" 1687 | dependencies = [ 1688 | "bitflags", 1689 | "io-lifetimes 0.7.5", 1690 | "windows-sys 0.36.1", 1691 | ] 1692 | 1693 | [[package]] 1694 | name = "witx" 1695 | version = "0.9.1" 1696 | source = "registry+https://github.com/rust-lang/crates.io-index" 1697 | checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" 1698 | dependencies = [ 1699 | "anyhow", 1700 | "log", 1701 | "thiserror", 1702 | "wast 35.0.2", 1703 | ] 1704 | 1705 | [[package]] 1706 | name = "zstd" 1707 | version = "0.11.2+zstd.1.5.2" 1708 | source = "registry+https://github.com/rust-lang/crates.io-index" 1709 | checksum = "20cc960326ece64f010d2d2107537f26dc589a6573a316bd5b1dba685fa5fde4" 1710 | dependencies = [ 1711 | "zstd-safe", 1712 | ] 1713 | 1714 | [[package]] 1715 | name = "zstd-safe" 1716 | version = "5.0.2+zstd.1.5.2" 1717 | source = "registry+https://github.com/rust-lang/crates.io-index" 1718 | checksum = "1d2a5585e04f9eea4b2a3d1eca508c4dee9592a89ef6f450c11719da0726f4db" 1719 | dependencies = [ 1720 | "libc", 1721 | "zstd-sys", 1722 | ] 1723 | 1724 | [[package]] 1725 | name = "zstd-sys" 1726 | version = "2.0.4+zstd.1.5.2" 1727 | source = "registry+https://github.com/rust-lang/crates.io-index" 1728 | checksum = "4fa202f2ef00074143e219d15b62ffc317d17cc33909feac471c044087cad7b0" 1729 | dependencies = [ 1730 | "cc", 1731 | "libc", 1732 | ] 1733 | -------------------------------------------------------------------------------- /Cargo.lock: -------------------------------------------------------------------------------- 1 | # This file is automatically @generated by Cargo. 2 | # It is not intended for manual editing. 3 | version = 3 4 | 5 | [[package]] 6 | name = "addr2line" 7 | version = "0.21.0" 8 | source = "registry+https://github.com/rust-lang/crates.io-index" 9 | checksum = "8a30b2e23b9e17a9f90641c7ab1549cd9b44f296d3ccbf309d2863cfe398a0cb" 10 | dependencies = [ 11 | "gimli", 12 | ] 13 | 14 | [[package]] 15 | name = "adler" 16 | version = "1.0.2" 17 | source = "registry+https://github.com/rust-lang/crates.io-index" 18 | checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" 19 | 20 | [[package]] 21 | name = "ahash" 22 | version = "0.8.11" 23 | source = "registry+https://github.com/rust-lang/crates.io-index" 24 | checksum = "e89da841a80418a9b391ebaea17f5c112ffaaa96f621d2c285b5174da76b9011" 25 | dependencies = [ 26 | "cfg-if", 27 | "once_cell", 28 | "version_check", 29 | "zerocopy", 30 | ] 31 | 32 | [[package]] 33 | name = "aho-corasick" 34 | version = "1.1.2" 35 | source = "registry+https://github.com/rust-lang/crates.io-index" 36 | checksum = "b2969dcb958b36655471fc61f7e416fa76033bdd4bfed0678d8fee1e2d07a1f0" 37 | dependencies = [ 38 | "memchr", 39 | ] 40 | 41 | [[package]] 42 | name = "ambient-authority" 43 | version = "0.0.2" 44 | source = "registry+https://github.com/rust-lang/crates.io-index" 45 | checksum = "e9d4ee0d472d1cd2e28c97dfa124b3d8d992e10eb0a035f33f5d12e3a177ba3b" 46 | 47 | [[package]] 48 | name = "android_system_properties" 49 | version = "0.1.5" 50 | source = "registry+https://github.com/rust-lang/crates.io-index" 51 | checksum = "819e7219dbd41043ac279b19830f2efc897156490d7fd6ea916720117ee66311" 52 | dependencies = [ 53 | "libc", 54 | ] 55 | 56 | [[package]] 57 | name = "anes" 58 | version = "0.1.6" 59 | source = "registry+https://github.com/rust-lang/crates.io-index" 60 | checksum = "4b46cbb362ab8752921c97e041f5e366ee6297bd428a31275b9fcf1e380f7299" 61 | 62 | [[package]] 63 | name = "anstream" 64 | version = "0.6.11" 65 | source = "registry+https://github.com/rust-lang/crates.io-index" 66 | checksum = "6e2e1ebcb11de5c03c67de28a7df593d32191b44939c482e97702baaaa6ab6a5" 67 | dependencies = [ 68 | "anstyle", 69 | "anstyle-parse", 70 | "anstyle-query", 71 | "anstyle-wincon", 72 | "colorchoice", 73 | "utf8parse", 74 | ] 75 | 76 | [[package]] 77 | name = "anstyle" 78 | version = "1.0.4" 79 | source = "registry+https://github.com/rust-lang/crates.io-index" 80 | checksum = "7079075b41f533b8c61d2a4d073c4676e1f8b249ff94a393b0595db304e0dd87" 81 | 82 | [[package]] 83 | name = "anstyle-parse" 84 | version = "0.2.3" 85 | source = "registry+https://github.com/rust-lang/crates.io-index" 86 | checksum = "c75ac65da39e5fe5ab759307499ddad880d724eed2f6ce5b5e8a26f4f387928c" 87 | dependencies = [ 88 | "utf8parse", 89 | ] 90 | 91 | [[package]] 92 | name = "anstyle-query" 93 | version = "1.0.2" 94 | source = "registry+https://github.com/rust-lang/crates.io-index" 95 | checksum = "e28923312444cdd728e4738b3f9c9cac739500909bb3d3c94b43551b16517648" 96 | dependencies = [ 97 | "windows-sys 0.52.0", 98 | ] 99 | 100 | [[package]] 101 | name = "anstyle-wincon" 102 | version = "3.0.2" 103 | source = "registry+https://github.com/rust-lang/crates.io-index" 104 | checksum = "1cd54b81ec8d6180e24654d0b371ad22fc3dd083b6ff8ba325b72e00c87660a7" 105 | dependencies = [ 106 | "anstyle", 107 | "windows-sys 0.52.0", 108 | ] 109 | 110 | [[package]] 111 | name = "anyhow" 112 | version = "1.0.86" 113 | source = "registry+https://github.com/rust-lang/crates.io-index" 114 | checksum = "b3d1d046238990b9cf5bcde22a3fb3584ee5cf65fb2765f454ed428c7a0063da" 115 | 116 | [[package]] 117 | name = "arbitrary" 118 | version = "1.3.2" 119 | source = "registry+https://github.com/rust-lang/crates.io-index" 120 | checksum = "7d5a26814d8dcb93b0e5a0ff3c6d80a8843bafb21b39e8e18a6f05471870e110" 121 | 122 | [[package]] 123 | name = "async-trait" 124 | version = "0.1.75" 125 | source = "registry+https://github.com/rust-lang/crates.io-index" 126 | checksum = "fdf6721fb0140e4f897002dd086c06f6c27775df19cfe1fccb21181a48fd2c98" 127 | dependencies = [ 128 | "proc-macro2", 129 | "quote", 130 | "syn", 131 | ] 132 | 133 | [[package]] 134 | name = "autocfg" 135 | version = "1.1.0" 136 | source = "registry+https://github.com/rust-lang/crates.io-index" 137 | checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" 138 | 139 | [[package]] 140 | name = "backtrace" 141 | version = "0.3.69" 142 | source = "registry+https://github.com/rust-lang/crates.io-index" 143 | checksum = "2089b7e3f35b9dd2d0ed921ead4f6d318c27680d4a5bd167b3ee120edb105837" 144 | dependencies = [ 145 | "addr2line", 146 | "cc", 147 | "cfg-if", 148 | "libc", 149 | "miniz_oxide", 150 | "object 0.32.1", 151 | "rustc-demangle", 152 | ] 153 | 154 | [[package]] 155 | name = "base64" 156 | version = "0.21.5" 157 | source = "registry+https://github.com/rust-lang/crates.io-index" 158 | checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9" 159 | 160 | [[package]] 161 | name = "bindgen" 162 | version = "0.69.4" 163 | source = "registry+https://github.com/rust-lang/crates.io-index" 164 | checksum = "a00dc851838a2120612785d195287475a3ac45514741da670b735818822129a0" 165 | dependencies = [ 166 | "bitflags 2.4.1", 167 | "cexpr", 168 | "clang-sys", 169 | "itertools 0.12.1", 170 | "lazy_static", 171 | "lazycell", 172 | "log", 173 | "prettyplease", 174 | "proc-macro2", 175 | "quote", 176 | "regex", 177 | "rustc-hash", 178 | "shlex", 179 | "syn", 180 | "which", 181 | ] 182 | 183 | [[package]] 184 | name = "bitflags" 185 | version = "1.3.2" 186 | source = "registry+https://github.com/rust-lang/crates.io-index" 187 | checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" 188 | 189 | [[package]] 190 | name = "bitflags" 191 | version = "2.4.1" 192 | source = "registry+https://github.com/rust-lang/crates.io-index" 193 | checksum = "327762f6e5a765692301e5bb513e0d9fef63be86bbc14528052b1cd3e6f03e07" 194 | 195 | [[package]] 196 | name = "block-buffer" 197 | version = "0.10.4" 198 | source = "registry+https://github.com/rust-lang/crates.io-index" 199 | checksum = "3078c7629b62d3f0439517fa394996acacc5cbc91c5a20d8c658e77abd503a71" 200 | dependencies = [ 201 | "generic-array", 202 | ] 203 | 204 | [[package]] 205 | name = "bumpalo" 206 | version = "3.14.0" 207 | source = "registry+https://github.com/rust-lang/crates.io-index" 208 | checksum = "7f30e7476521f6f8af1a1c4c0b8cc94f0bee37d91763d0ca2665f299b6cd8aec" 209 | 210 | [[package]] 211 | name = "byteorder" 212 | version = "1.5.0" 213 | source = "registry+https://github.com/rust-lang/crates.io-index" 214 | checksum = "1fd0f2584146f6f2ef48085050886acf353beff7305ebd1ae69500e27c67f64b" 215 | 216 | [[package]] 217 | name = "bytes" 218 | version = "1.5.0" 219 | source = "registry+https://github.com/rust-lang/crates.io-index" 220 | checksum = "a2bd12c1caf447e69cd4528f47f94d203fd2582878ecb9e9465484c4148a8223" 221 | 222 | [[package]] 223 | name = "cap-fs-ext" 224 | version = "3.2.0" 225 | source = "registry+https://github.com/rust-lang/crates.io-index" 226 | checksum = "eb23061fc1c4ead4e45ca713080fe768e6234e959f5a5c399c39eb41aa34e56e" 227 | dependencies = [ 228 | "cap-primitives", 229 | "cap-std", 230 | "io-lifetimes", 231 | "windows-sys 0.52.0", 232 | ] 233 | 234 | [[package]] 235 | name = "cap-net-ext" 236 | version = "3.2.0" 237 | source = "registry+https://github.com/rust-lang/crates.io-index" 238 | checksum = "f83ae11f116bcbafc5327c6af250341db96b5930046732e1905f7dc65887e0e1" 239 | dependencies = [ 240 | "cap-primitives", 241 | "cap-std", 242 | "rustix", 243 | "smallvec", 244 | ] 245 | 246 | [[package]] 247 | name = "cap-primitives" 248 | version = "3.2.0" 249 | source = "registry+https://github.com/rust-lang/crates.io-index" 250 | checksum = "6d00bd8d26c4270d950eaaa837387964a2089a1c3c349a690a1fa03221d29531" 251 | dependencies = [ 252 | "ambient-authority", 253 | "fs-set-times", 254 | "io-extras", 255 | "io-lifetimes", 256 | "ipnet", 257 | "maybe-owned", 258 | "rustix", 259 | "windows-sys 0.52.0", 260 | "winx", 261 | ] 262 | 263 | [[package]] 264 | name = "cap-rand" 265 | version = "3.2.0" 266 | source = "registry+https://github.com/rust-lang/crates.io-index" 267 | checksum = "dbcb16a619d8b8211ed61f42bd290d2a1ac71277a69cf8417ec0996fa92f5211" 268 | dependencies = [ 269 | "ambient-authority", 270 | "rand", 271 | ] 272 | 273 | [[package]] 274 | name = "cap-std" 275 | version = "3.2.0" 276 | source = "registry+https://github.com/rust-lang/crates.io-index" 277 | checksum = "19eb8e3d71996828751c1ed3908a439639752ac6bdc874e41469ef7fc15fbd7f" 278 | dependencies = [ 279 | "cap-primitives", 280 | "io-extras", 281 | "io-lifetimes", 282 | "rustix", 283 | ] 284 | 285 | [[package]] 286 | name = "cap-time-ext" 287 | version = "3.2.0" 288 | source = "registry+https://github.com/rust-lang/crates.io-index" 289 | checksum = "61142dc51e25b7acc970ca578ce2c3695eac22bbba46c1073f5f583e78957725" 290 | dependencies = [ 291 | "ambient-authority", 292 | "cap-primitives", 293 | "iana-time-zone", 294 | "once_cell", 295 | "rustix", 296 | "winx", 297 | ] 298 | 299 | [[package]] 300 | name = "cast" 301 | version = "0.3.0" 302 | source = "registry+https://github.com/rust-lang/crates.io-index" 303 | checksum = "37b2a672a2cb129a2e41c10b1224bb368f9f37a2b16b612598138befd7b37eb5" 304 | 305 | [[package]] 306 | name = "cc" 307 | version = "1.0.83" 308 | source = "registry+https://github.com/rust-lang/crates.io-index" 309 | checksum = "f1174fb0b6ec23863f8b971027804a42614e347eafb0a95bf0b12cdae21fc4d0" 310 | dependencies = [ 311 | "jobserver", 312 | "libc", 313 | ] 314 | 315 | [[package]] 316 | name = "cexpr" 317 | version = "0.6.0" 318 | source = "registry+https://github.com/rust-lang/crates.io-index" 319 | checksum = "6fac387a98bb7c37292057cffc56d62ecb629900026402633ae9160df93a8766" 320 | dependencies = [ 321 | "nom", 322 | ] 323 | 324 | [[package]] 325 | name = "cfg-if" 326 | version = "1.0.0" 327 | source = "registry+https://github.com/rust-lang/crates.io-index" 328 | checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" 329 | 330 | [[package]] 331 | name = "ciborium" 332 | version = "0.2.1" 333 | source = "registry+https://github.com/rust-lang/crates.io-index" 334 | checksum = "effd91f6c78e5a4ace8a5d3c0b6bfaec9e2baaef55f3efc00e45fb2e477ee926" 335 | dependencies = [ 336 | "ciborium-io", 337 | "ciborium-ll", 338 | "serde", 339 | ] 340 | 341 | [[package]] 342 | name = "ciborium-io" 343 | version = "0.2.1" 344 | source = "registry+https://github.com/rust-lang/crates.io-index" 345 | checksum = "cdf919175532b369853f5d5e20b26b43112613fd6fe7aee757e35f7a44642656" 346 | 347 | [[package]] 348 | name = "ciborium-ll" 349 | version = "0.2.1" 350 | source = "registry+https://github.com/rust-lang/crates.io-index" 351 | checksum = "defaa24ecc093c77630e6c15e17c51f5e187bf35ee514f4e2d67baaa96dae22b" 352 | dependencies = [ 353 | "ciborium-io", 354 | "half", 355 | ] 356 | 357 | [[package]] 358 | name = "clang-sys" 359 | version = "1.6.1" 360 | source = "registry+https://github.com/rust-lang/crates.io-index" 361 | checksum = "c688fc74432808e3eb684cae8830a86be1d66a2bd58e1f248ed0960a590baf6f" 362 | dependencies = [ 363 | "glob", 364 | "libc", 365 | "libloading", 366 | ] 367 | 368 | [[package]] 369 | name = "clap" 370 | version = "4.5.11" 371 | source = "registry+https://github.com/rust-lang/crates.io-index" 372 | checksum = "35723e6a11662c2afb578bcf0b88bf6ea8e21282a953428f240574fcc3a2b5b3" 373 | dependencies = [ 374 | "clap_builder", 375 | "clap_derive", 376 | ] 377 | 378 | [[package]] 379 | name = "clap_builder" 380 | version = "4.5.11" 381 | source = "registry+https://github.com/rust-lang/crates.io-index" 382 | checksum = "49eb96cbfa7cfa35017b7cd548c75b14c3118c98b423041d70562665e07fb0fa" 383 | dependencies = [ 384 | "anstream", 385 | "anstyle", 386 | "clap_lex", 387 | "strsim", 388 | ] 389 | 390 | [[package]] 391 | name = "clap_derive" 392 | version = "4.5.11" 393 | source = "registry+https://github.com/rust-lang/crates.io-index" 394 | checksum = "5d029b67f89d30bbb547c89fd5161293c0aec155fc691d7924b64550662db93e" 395 | dependencies = [ 396 | "heck 0.5.0", 397 | "proc-macro2", 398 | "quote", 399 | "syn", 400 | ] 401 | 402 | [[package]] 403 | name = "clap_lex" 404 | version = "0.7.2" 405 | source = "registry+https://github.com/rust-lang/crates.io-index" 406 | checksum = "1462739cb27611015575c0c11df5df7601141071f07518d56fcc1be504cbec97" 407 | 408 | [[package]] 409 | name = "cobs" 410 | version = "0.2.3" 411 | source = "registry+https://github.com/rust-lang/crates.io-index" 412 | checksum = "67ba02a97a2bd10f4b59b25c7973101c79642302776489e030cd13cdab09ed15" 413 | 414 | [[package]] 415 | name = "colorchoice" 416 | version = "1.0.0" 417 | source = "registry+https://github.com/rust-lang/crates.io-index" 418 | checksum = "acbf1af155f9b9ef647e42cdc158db4b64a1b61f743629225fde6f3e0be2a7c7" 419 | 420 | [[package]] 421 | name = "core-foundation" 422 | version = "0.9.4" 423 | source = "registry+https://github.com/rust-lang/crates.io-index" 424 | checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" 425 | dependencies = [ 426 | "core-foundation-sys", 427 | "libc", 428 | ] 429 | 430 | [[package]] 431 | name = "core-foundation-sys" 432 | version = "0.8.6" 433 | source = "registry+https://github.com/rust-lang/crates.io-index" 434 | checksum = "06ea2b9bc92be3c2baa9334a323ebca2d6f074ff852cd1d7b11064035cd3868f" 435 | 436 | [[package]] 437 | name = "cpp_demangle" 438 | version = "0.4.3" 439 | source = "registry+https://github.com/rust-lang/crates.io-index" 440 | checksum = "7e8227005286ec39567949b33df9896bcadfa6051bccca2488129f108ca23119" 441 | dependencies = [ 442 | "cfg-if", 443 | ] 444 | 445 | [[package]] 446 | name = "cpufeatures" 447 | version = "0.2.11" 448 | source = "registry+https://github.com/rust-lang/crates.io-index" 449 | checksum = "ce420fe07aecd3e67c5f910618fe65e94158f6dcc0adf44e00d69ce2bdfe0fd0" 450 | dependencies = [ 451 | "libc", 452 | ] 453 | 454 | [[package]] 455 | name = "cranelift-bforest" 456 | version = "0.110.1" 457 | source = "registry+https://github.com/rust-lang/crates.io-index" 458 | checksum = "effa84ab2023f7138045ece6b326588c17447ca22e66db71ec15cb0a6c0c4ad2" 459 | dependencies = [ 460 | "cranelift-entity", 461 | ] 462 | 463 | [[package]] 464 | name = "cranelift-bitset" 465 | version = "0.110.1" 466 | source = "registry+https://github.com/rust-lang/crates.io-index" 467 | checksum = "38a1dfc50dca188a15d938867c4400589530bcb0138f7022aae6d059d1d8c309" 468 | dependencies = [ 469 | "serde", 470 | "serde_derive", 471 | ] 472 | 473 | [[package]] 474 | name = "cranelift-codegen" 475 | version = "0.110.1" 476 | source = "registry+https://github.com/rust-lang/crates.io-index" 477 | checksum = "821c20c639350158ecca928dc2a244d0d1c9cef2377a378fc62a445a286eb1ca" 478 | dependencies = [ 479 | "bumpalo", 480 | "cranelift-bforest", 481 | "cranelift-bitset", 482 | "cranelift-codegen-meta", 483 | "cranelift-codegen-shared", 484 | "cranelift-control", 485 | "cranelift-entity", 486 | "cranelift-isle", 487 | "gimli", 488 | "hashbrown 0.14.3", 489 | "log", 490 | "regalloc2", 491 | "rustc-hash", 492 | "smallvec", 493 | "target-lexicon", 494 | ] 495 | 496 | [[package]] 497 | name = "cranelift-codegen-meta" 498 | version = "0.110.1" 499 | source = "registry+https://github.com/rust-lang/crates.io-index" 500 | checksum = "064473f2fd59b44fa2c9aaa60de1f9c44db5e13521e28bc85d2b92ee535ef625" 501 | dependencies = [ 502 | "cranelift-codegen-shared", 503 | ] 504 | 505 | [[package]] 506 | name = "cranelift-codegen-shared" 507 | version = "0.110.1" 508 | source = "registry+https://github.com/rust-lang/crates.io-index" 509 | checksum = "d0f39b9ebfd2febdc2acfb9a0fca110665bcd5a6839502576307735ed07b2177" 510 | 511 | [[package]] 512 | name = "cranelift-control" 513 | version = "0.110.1" 514 | source = "registry+https://github.com/rust-lang/crates.io-index" 515 | checksum = "94e125c189c3a1ca8dfe209fc6f46edba058a6d24e0b92aff69459a15f4711e7" 516 | dependencies = [ 517 | "arbitrary", 518 | ] 519 | 520 | [[package]] 521 | name = "cranelift-entity" 522 | version = "0.110.1" 523 | source = "registry+https://github.com/rust-lang/crates.io-index" 524 | checksum = "ea62eb109baec2247e1a6fa7b74c0f584b1e76e289cfd7017385b4b031fc8450" 525 | dependencies = [ 526 | "cranelift-bitset", 527 | "serde", 528 | "serde_derive", 529 | ] 530 | 531 | [[package]] 532 | name = "cranelift-frontend" 533 | version = "0.110.1" 534 | source = "registry+https://github.com/rust-lang/crates.io-index" 535 | checksum = "722b089357aacb6c7528b2e59a5fe00917d61ce63448b25a3e477a5b7819fac8" 536 | dependencies = [ 537 | "cranelift-codegen", 538 | "log", 539 | "smallvec", 540 | "target-lexicon", 541 | ] 542 | 543 | [[package]] 544 | name = "cranelift-isle" 545 | version = "0.110.1" 546 | source = "registry+https://github.com/rust-lang/crates.io-index" 547 | checksum = "c4b5005a48288e7fc2a2991a377831c534e26929b063c379c018060727785a9b" 548 | 549 | [[package]] 550 | name = "cranelift-native" 551 | version = "0.110.1" 552 | source = "registry+https://github.com/rust-lang/crates.io-index" 553 | checksum = "3ae2d48f38081a9e679ad795bd36bb29bedeb5552fc1c195185bf9885fa1b16e" 554 | dependencies = [ 555 | "cranelift-codegen", 556 | "libc", 557 | "target-lexicon", 558 | ] 559 | 560 | [[package]] 561 | name = "cranelift-wasm" 562 | version = "0.110.1" 563 | source = "registry+https://github.com/rust-lang/crates.io-index" 564 | checksum = "25abc7b3ec5aab50546ee9a29073223d2602b49b3d73ce312bf481fadba01255" 565 | dependencies = [ 566 | "cranelift-codegen", 567 | "cranelift-entity", 568 | "cranelift-frontend", 569 | "itertools 0.12.1", 570 | "log", 571 | "smallvec", 572 | "wasmparser", 573 | "wasmtime-types", 574 | ] 575 | 576 | [[package]] 577 | name = "crc32fast" 578 | version = "1.3.2" 579 | source = "registry+https://github.com/rust-lang/crates.io-index" 580 | checksum = "b540bd8bc810d3885c6ea91e2018302f68baba2129ab3e88f32389ee9370880d" 581 | dependencies = [ 582 | "cfg-if", 583 | ] 584 | 585 | [[package]] 586 | name = "criterion" 587 | version = "0.5.1" 588 | source = "registry+https://github.com/rust-lang/crates.io-index" 589 | checksum = "f2b12d017a929603d80db1831cd3a24082f8137ce19c69e6447f54f5fc8d692f" 590 | dependencies = [ 591 | "anes", 592 | "cast", 593 | "ciborium", 594 | "clap", 595 | "criterion-plot", 596 | "is-terminal", 597 | "itertools 0.10.5", 598 | "num-traits", 599 | "once_cell", 600 | "oorandom", 601 | "plotters", 602 | "rayon", 603 | "regex", 604 | "serde", 605 | "serde_derive", 606 | "serde_json", 607 | "tinytemplate", 608 | "walkdir", 609 | ] 610 | 611 | [[package]] 612 | name = "criterion-plot" 613 | version = "0.5.0" 614 | source = "registry+https://github.com/rust-lang/crates.io-index" 615 | checksum = "6b50826342786a51a89e2da3a28f1c32b06e387201bc2d19791f622c673706b1" 616 | dependencies = [ 617 | "cast", 618 | "itertools 0.10.5", 619 | ] 620 | 621 | [[package]] 622 | name = "crossbeam-deque" 623 | version = "0.8.4" 624 | source = "registry+https://github.com/rust-lang/crates.io-index" 625 | checksum = "fca89a0e215bab21874660c67903c5f143333cab1da83d041c7ded6053774751" 626 | dependencies = [ 627 | "cfg-if", 628 | "crossbeam-epoch", 629 | "crossbeam-utils", 630 | ] 631 | 632 | [[package]] 633 | name = "crossbeam-epoch" 634 | version = "0.9.16" 635 | source = "registry+https://github.com/rust-lang/crates.io-index" 636 | checksum = "2d2fe95351b870527a5d09bf563ed3c97c0cffb87cf1c78a591bf48bb218d9aa" 637 | dependencies = [ 638 | "autocfg", 639 | "cfg-if", 640 | "crossbeam-utils", 641 | "memoffset", 642 | ] 643 | 644 | [[package]] 645 | name = "crossbeam-utils" 646 | version = "0.8.17" 647 | source = "registry+https://github.com/rust-lang/crates.io-index" 648 | checksum = "c06d96137f14f244c37f989d9fff8f95e6c18b918e71f36638f8c49112e4c78f" 649 | dependencies = [ 650 | "cfg-if", 651 | ] 652 | 653 | [[package]] 654 | name = "crypto-common" 655 | version = "0.1.6" 656 | source = "registry+https://github.com/rust-lang/crates.io-index" 657 | checksum = "1bfb12502f3fc46cca1bb51ac28df9d618d813cdc3d2f25b9fe775a34af26bb3" 658 | dependencies = [ 659 | "generic-array", 660 | "typenum", 661 | ] 662 | 663 | [[package]] 664 | name = "debugid" 665 | version = "0.8.0" 666 | source = "registry+https://github.com/rust-lang/crates.io-index" 667 | checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" 668 | dependencies = [ 669 | "uuid", 670 | ] 671 | 672 | [[package]] 673 | name = "digest" 674 | version = "0.10.7" 675 | source = "registry+https://github.com/rust-lang/crates.io-index" 676 | checksum = "9ed9a281f7bc9b7576e61468ba615a66a5c8cfdff42420a70aa82701a3b1e292" 677 | dependencies = [ 678 | "block-buffer", 679 | "crypto-common", 680 | ] 681 | 682 | [[package]] 683 | name = "directories-next" 684 | version = "2.0.0" 685 | source = "registry+https://github.com/rust-lang/crates.io-index" 686 | checksum = "339ee130d97a610ea5a5872d2bbb130fdf68884ff09d3028b81bec8a1ac23bbc" 687 | dependencies = [ 688 | "cfg-if", 689 | "dirs-sys-next", 690 | ] 691 | 692 | [[package]] 693 | name = "dirs" 694 | version = "4.0.0" 695 | source = "registry+https://github.com/rust-lang/crates.io-index" 696 | checksum = "ca3aa72a6f96ea37bbc5aa912f6788242832f75369bdfdadcb0e38423f100059" 697 | dependencies = [ 698 | "dirs-sys", 699 | ] 700 | 701 | [[package]] 702 | name = "dirs-sys" 703 | version = "0.3.7" 704 | source = "registry+https://github.com/rust-lang/crates.io-index" 705 | checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" 706 | dependencies = [ 707 | "libc", 708 | "redox_users", 709 | "winapi", 710 | ] 711 | 712 | [[package]] 713 | name = "dirs-sys-next" 714 | version = "0.1.2" 715 | source = "registry+https://github.com/rust-lang/crates.io-index" 716 | checksum = "4ebda144c4fe02d1f7ea1a7d9641b6fc6b580adcfa024ae48797ecdeb6825b4d" 717 | dependencies = [ 718 | "libc", 719 | "redox_users", 720 | "winapi", 721 | ] 722 | 723 | [[package]] 724 | name = "either" 725 | version = "1.9.0" 726 | source = "registry+https://github.com/rust-lang/crates.io-index" 727 | checksum = "a26ae43d7bcc3b814de94796a5e736d4029efb0ee900c12e2d54c993ad1a1e07" 728 | 729 | [[package]] 730 | name = "embedded-io" 731 | version = "0.4.0" 732 | source = "registry+https://github.com/rust-lang/crates.io-index" 733 | checksum = "ef1a6892d9eef45c8fa6b9e0086428a2cca8491aca8f787c534a3d6d0bcb3ced" 734 | 735 | [[package]] 736 | name = "encoding_rs" 737 | version = "0.8.33" 738 | source = "registry+https://github.com/rust-lang/crates.io-index" 739 | checksum = "7268b386296a025e474d5140678f75d6de9493ae55a5d709eeb9dd08149945e1" 740 | dependencies = [ 741 | "cfg-if", 742 | ] 743 | 744 | [[package]] 745 | name = "equivalent" 746 | version = "1.0.1" 747 | source = "registry+https://github.com/rust-lang/crates.io-index" 748 | checksum = "5443807d6dff69373d433ab9ef5378ad8df50ca6298caf15de6e52e24aaf54d5" 749 | 750 | [[package]] 751 | name = "errno" 752 | version = "0.3.8" 753 | source = "registry+https://github.com/rust-lang/crates.io-index" 754 | checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" 755 | dependencies = [ 756 | "libc", 757 | "windows-sys 0.52.0", 758 | ] 759 | 760 | [[package]] 761 | name = "fallible-iterator" 762 | version = "0.3.0" 763 | source = "registry+https://github.com/rust-lang/crates.io-index" 764 | checksum = "2acce4a10f12dc2fb14a218589d4f1f62ef011b2d0cc4b3cb1bba8e94da14649" 765 | 766 | [[package]] 767 | name = "fastrand" 768 | version = "2.0.1" 769 | source = "registry+https://github.com/rust-lang/crates.io-index" 770 | checksum = "25cbce373ec4653f1a01a31e8a5e5ec0c622dc27ff9c4e6606eefef5cbbed4a5" 771 | 772 | [[package]] 773 | name = "fd-lock" 774 | version = "4.0.1" 775 | source = "registry+https://github.com/rust-lang/crates.io-index" 776 | checksum = "b93f7a0db71c99f68398f80653ed05afb0b00e062e1a20c7ff849c4edfabbbcc" 777 | dependencies = [ 778 | "cfg-if", 779 | "rustix", 780 | "windows-sys 0.52.0", 781 | ] 782 | 783 | [[package]] 784 | name = "fnv" 785 | version = "1.0.7" 786 | source = "registry+https://github.com/rust-lang/crates.io-index" 787 | checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" 788 | 789 | [[package]] 790 | name = "foreign-types" 791 | version = "0.3.2" 792 | source = "registry+https://github.com/rust-lang/crates.io-index" 793 | checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" 794 | dependencies = [ 795 | "foreign-types-shared", 796 | ] 797 | 798 | [[package]] 799 | name = "foreign-types-shared" 800 | version = "0.1.1" 801 | source = "registry+https://github.com/rust-lang/crates.io-index" 802 | checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" 803 | 804 | [[package]] 805 | name = "form_urlencoded" 806 | version = "1.2.1" 807 | source = "registry+https://github.com/rust-lang/crates.io-index" 808 | checksum = "e13624c2627564efccf4934284bdd98cbaa14e79b0b5a141218e507b3a823456" 809 | dependencies = [ 810 | "percent-encoding", 811 | ] 812 | 813 | [[package]] 814 | name = "fs-set-times" 815 | version = "0.20.1" 816 | source = "registry+https://github.com/rust-lang/crates.io-index" 817 | checksum = "033b337d725b97690d86893f9de22b67b80dcc4e9ad815f348254c38119db8fb" 818 | dependencies = [ 819 | "io-lifetimes", 820 | "rustix", 821 | "windows-sys 0.52.0", 822 | ] 823 | 824 | [[package]] 825 | name = "futures" 826 | version = "0.3.29" 827 | source = "registry+https://github.com/rust-lang/crates.io-index" 828 | checksum = "da0290714b38af9b4a7b094b8a37086d1b4e61f2df9122c3cad2577669145335" 829 | dependencies = [ 830 | "futures-channel", 831 | "futures-core", 832 | "futures-io", 833 | "futures-sink", 834 | "futures-task", 835 | "futures-util", 836 | ] 837 | 838 | [[package]] 839 | name = "futures-channel" 840 | version = "0.3.29" 841 | source = "registry+https://github.com/rust-lang/crates.io-index" 842 | checksum = "ff4dd66668b557604244583e3e1e1eada8c5c2e96a6d0d6653ede395b78bbacb" 843 | dependencies = [ 844 | "futures-core", 845 | "futures-sink", 846 | ] 847 | 848 | [[package]] 849 | name = "futures-core" 850 | version = "0.3.29" 851 | source = "registry+https://github.com/rust-lang/crates.io-index" 852 | checksum = "eb1d22c66e66d9d72e1758f0bd7d4fd0bee04cad842ee34587d68c07e45d088c" 853 | 854 | [[package]] 855 | name = "futures-io" 856 | version = "0.3.29" 857 | source = "registry+https://github.com/rust-lang/crates.io-index" 858 | checksum = "8bf34a163b5c4c52d0478a4d757da8fb65cabef42ba90515efee0f6f9fa45aaa" 859 | 860 | [[package]] 861 | name = "futures-sink" 862 | version = "0.3.29" 863 | source = "registry+https://github.com/rust-lang/crates.io-index" 864 | checksum = "e36d3378ee38c2a36ad710c5d30c2911d752cb941c00c72dbabfb786a7970817" 865 | 866 | [[package]] 867 | name = "futures-task" 868 | version = "0.3.29" 869 | source = "registry+https://github.com/rust-lang/crates.io-index" 870 | checksum = "efd193069b0ddadc69c46389b740bbccdd97203899b48d09c5f7969591d6bae2" 871 | 872 | [[package]] 873 | name = "futures-util" 874 | version = "0.3.29" 875 | source = "registry+https://github.com/rust-lang/crates.io-index" 876 | checksum = "a19526d624e703a3179b3d322efec918b6246ea0fa51d41124525f00f1cc8104" 877 | dependencies = [ 878 | "futures-core", 879 | "futures-sink", 880 | "futures-task", 881 | "pin-project-lite", 882 | "pin-utils", 883 | ] 884 | 885 | [[package]] 886 | name = "fxhash" 887 | version = "0.2.1" 888 | source = "registry+https://github.com/rust-lang/crates.io-index" 889 | checksum = "c31b6d751ae2c7f11320402d34e41349dd1016f8d5d45e48c4312bc8625af50c" 890 | dependencies = [ 891 | "byteorder", 892 | ] 893 | 894 | [[package]] 895 | name = "fxprof-processed-profile" 896 | version = "0.6.0" 897 | source = "registry+https://github.com/rust-lang/crates.io-index" 898 | checksum = "27d12c0aed7f1e24276a241aadc4cb8ea9f83000f34bc062b7cc2d51e3b0fabd" 899 | dependencies = [ 900 | "bitflags 2.4.1", 901 | "debugid", 902 | "fxhash", 903 | "serde", 904 | "serde_json", 905 | ] 906 | 907 | [[package]] 908 | name = "generic-array" 909 | version = "0.14.7" 910 | source = "registry+https://github.com/rust-lang/crates.io-index" 911 | checksum = "85649ca51fd72272d7821adaf274ad91c288277713d9c18820d8499a7ff69e9a" 912 | dependencies = [ 913 | "typenum", 914 | "version_check", 915 | ] 916 | 917 | [[package]] 918 | name = "getrandom" 919 | version = "0.2.11" 920 | source = "registry+https://github.com/rust-lang/crates.io-index" 921 | checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f" 922 | dependencies = [ 923 | "cfg-if", 924 | "libc", 925 | "wasi", 926 | ] 927 | 928 | [[package]] 929 | name = "gimli" 930 | version = "0.28.1" 931 | source = "registry+https://github.com/rust-lang/crates.io-index" 932 | checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" 933 | dependencies = [ 934 | "fallible-iterator", 935 | "indexmap", 936 | "stable_deref_trait", 937 | ] 938 | 939 | [[package]] 940 | name = "glob" 941 | version = "0.3.1" 942 | source = "registry+https://github.com/rust-lang/crates.io-index" 943 | checksum = "d2fabcfbdc87f4758337ca535fb41a6d701b65693ce38287d856d1674551ec9b" 944 | 945 | [[package]] 946 | name = "half" 947 | version = "1.8.2" 948 | source = "registry+https://github.com/rust-lang/crates.io-index" 949 | checksum = "eabb4a44450da02c90444cf74558da904edde8fb4e9035a9a6a4e15445af0bd7" 950 | 951 | [[package]] 952 | name = "hashbrown" 953 | version = "0.13.2" 954 | source = "registry+https://github.com/rust-lang/crates.io-index" 955 | checksum = "43a3c133739dddd0d2990f9a4bdf8eb4b21ef50e4851ca85ab661199821d510e" 956 | dependencies = [ 957 | "ahash", 958 | ] 959 | 960 | [[package]] 961 | name = "hashbrown" 962 | version = "0.14.3" 963 | source = "registry+https://github.com/rust-lang/crates.io-index" 964 | checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604" 965 | dependencies = [ 966 | "ahash", 967 | "serde", 968 | ] 969 | 970 | [[package]] 971 | name = "heck" 972 | version = "0.4.1" 973 | source = "registry+https://github.com/rust-lang/crates.io-index" 974 | checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" 975 | 976 | [[package]] 977 | name = "heck" 978 | version = "0.5.0" 979 | source = "registry+https://github.com/rust-lang/crates.io-index" 980 | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" 981 | 982 | [[package]] 983 | name = "hermit-abi" 984 | version = "0.3.9" 985 | source = "registry+https://github.com/rust-lang/crates.io-index" 986 | checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" 987 | 988 | [[package]] 989 | name = "home" 990 | version = "0.5.9" 991 | source = "registry+https://github.com/rust-lang/crates.io-index" 992 | checksum = "e3d1354bf6b7235cb4a0576c2619fd4ed18183f689b12b006a0ee7329eeff9a5" 993 | dependencies = [ 994 | "windows-sys 0.52.0", 995 | ] 996 | 997 | [[package]] 998 | name = "http" 999 | version = "1.0.0" 1000 | source = "registry+https://github.com/rust-lang/crates.io-index" 1001 | checksum = "b32afd38673a8016f7c9ae69e5af41a58f81b1d31689040f2f1959594ce194ea" 1002 | dependencies = [ 1003 | "bytes", 1004 | "fnv", 1005 | "itoa", 1006 | ] 1007 | 1008 | [[package]] 1009 | name = "http-body" 1010 | version = "1.0.0" 1011 | source = "registry+https://github.com/rust-lang/crates.io-index" 1012 | checksum = "1cac85db508abc24a2e48553ba12a996e87244a0395ce011e62b37158745d643" 1013 | dependencies = [ 1014 | "bytes", 1015 | "http", 1016 | ] 1017 | 1018 | [[package]] 1019 | name = "http-body-util" 1020 | version = "0.1.2" 1021 | source = "registry+https://github.com/rust-lang/crates.io-index" 1022 | checksum = "793429d76616a256bcb62c2a2ec2bed781c8307e797e2598c50010f2bee2544f" 1023 | dependencies = [ 1024 | "bytes", 1025 | "futures-util", 1026 | "http", 1027 | "http-body", 1028 | "pin-project-lite", 1029 | ] 1030 | 1031 | [[package]] 1032 | name = "httparse" 1033 | version = "1.8.0" 1034 | source = "registry+https://github.com/rust-lang/crates.io-index" 1035 | checksum = "d897f394bad6a705d5f4104762e116a75639e470d80901eed05a860a95cb1904" 1036 | 1037 | [[package]] 1038 | name = "hyper" 1039 | version = "1.4.1" 1040 | source = "registry+https://github.com/rust-lang/crates.io-index" 1041 | checksum = "50dfd22e0e76d0f662d429a5f80fcaf3855009297eab6a0a9f8543834744ba05" 1042 | dependencies = [ 1043 | "bytes", 1044 | "futures-channel", 1045 | "futures-util", 1046 | "http", 1047 | "http-body", 1048 | "httparse", 1049 | "itoa", 1050 | "pin-project-lite", 1051 | "smallvec", 1052 | "tokio", 1053 | "want", 1054 | ] 1055 | 1056 | [[package]] 1057 | name = "hyper-tls" 1058 | version = "0.6.0" 1059 | source = "registry+https://github.com/rust-lang/crates.io-index" 1060 | checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" 1061 | dependencies = [ 1062 | "bytes", 1063 | "http-body-util", 1064 | "hyper", 1065 | "hyper-util", 1066 | "native-tls", 1067 | "tokio", 1068 | "tokio-native-tls", 1069 | "tower-service", 1070 | ] 1071 | 1072 | [[package]] 1073 | name = "hyper-util" 1074 | version = "0.1.3" 1075 | source = "registry+https://github.com/rust-lang/crates.io-index" 1076 | checksum = "ca38ef113da30126bbff9cd1705f9273e15d45498615d138b0c20279ac7a76aa" 1077 | dependencies = [ 1078 | "bytes", 1079 | "futures-channel", 1080 | "futures-util", 1081 | "http", 1082 | "http-body", 1083 | "hyper", 1084 | "pin-project-lite", 1085 | "socket2", 1086 | "tokio", 1087 | "tower", 1088 | "tower-service", 1089 | "tracing", 1090 | ] 1091 | 1092 | [[package]] 1093 | name = "iana-time-zone" 1094 | version = "0.1.60" 1095 | source = "registry+https://github.com/rust-lang/crates.io-index" 1096 | checksum = "e7ffbb5a1b541ea2561f8c41c087286cc091e21e556a4f09a8f6cbf17b69b141" 1097 | dependencies = [ 1098 | "android_system_properties", 1099 | "core-foundation-sys", 1100 | "iana-time-zone-haiku", 1101 | "js-sys", 1102 | "wasm-bindgen", 1103 | "windows-core", 1104 | ] 1105 | 1106 | [[package]] 1107 | name = "iana-time-zone-haiku" 1108 | version = "0.1.2" 1109 | source = "registry+https://github.com/rust-lang/crates.io-index" 1110 | checksum = "f31827a206f56af32e590ba56d5d2d085f558508192593743f16b2306495269f" 1111 | dependencies = [ 1112 | "cc", 1113 | ] 1114 | 1115 | [[package]] 1116 | name = "id-arena" 1117 | version = "2.2.1" 1118 | source = "registry+https://github.com/rust-lang/crates.io-index" 1119 | checksum = "25a2bc672d1148e28034f176e01fffebb08b35768468cc954630da77a1449005" 1120 | 1121 | [[package]] 1122 | name = "idna" 1123 | version = "0.5.0" 1124 | source = "registry+https://github.com/rust-lang/crates.io-index" 1125 | checksum = "634d9b1461af396cad843f47fdba5597a4f9e6ddd4bfb6ff5d85028c25cb12f6" 1126 | dependencies = [ 1127 | "unicode-bidi", 1128 | "unicode-normalization", 1129 | ] 1130 | 1131 | [[package]] 1132 | name = "indexmap" 1133 | version = "2.1.0" 1134 | source = "registry+https://github.com/rust-lang/crates.io-index" 1135 | checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f" 1136 | dependencies = [ 1137 | "equivalent", 1138 | "hashbrown 0.14.3", 1139 | "serde", 1140 | ] 1141 | 1142 | [[package]] 1143 | name = "io-extras" 1144 | version = "0.18.1" 1145 | source = "registry+https://github.com/rust-lang/crates.io-index" 1146 | checksum = "c301e73fb90e8a29e600a9f402d095765f74310d582916a952f618836a1bd1ed" 1147 | dependencies = [ 1148 | "io-lifetimes", 1149 | "windows-sys 0.52.0", 1150 | ] 1151 | 1152 | [[package]] 1153 | name = "io-lifetimes" 1154 | version = "2.0.3" 1155 | source = "registry+https://github.com/rust-lang/crates.io-index" 1156 | checksum = "5a611371471e98973dbcab4e0ec66c31a10bc356eeb4d54a0e05eac8158fe38c" 1157 | 1158 | [[package]] 1159 | name = "ipnet" 1160 | version = "2.9.0" 1161 | source = "registry+https://github.com/rust-lang/crates.io-index" 1162 | checksum = "8f518f335dce6725a761382244631d86cf0ccb2863413590b31338feb467f9c3" 1163 | 1164 | [[package]] 1165 | name = "is-terminal" 1166 | version = "0.4.9" 1167 | source = "registry+https://github.com/rust-lang/crates.io-index" 1168 | checksum = "cb0889898416213fab133e1d33a0e5858a48177452750691bde3666d0fdbaf8b" 1169 | dependencies = [ 1170 | "hermit-abi", 1171 | "rustix", 1172 | "windows-sys 0.48.0", 1173 | ] 1174 | 1175 | [[package]] 1176 | name = "itertools" 1177 | version = "0.10.5" 1178 | source = "registry+https://github.com/rust-lang/crates.io-index" 1179 | checksum = "b0fd2260e829bddf4cb6ea802289de2f86d6a7a690192fbe91b3f46e0f2c8473" 1180 | dependencies = [ 1181 | "either", 1182 | ] 1183 | 1184 | [[package]] 1185 | name = "itertools" 1186 | version = "0.12.1" 1187 | source = "registry+https://github.com/rust-lang/crates.io-index" 1188 | checksum = "ba291022dbbd398a455acf126c1e341954079855bc60dfdda641363bd6922569" 1189 | dependencies = [ 1190 | "either", 1191 | ] 1192 | 1193 | [[package]] 1194 | name = "itoa" 1195 | version = "1.0.10" 1196 | source = "registry+https://github.com/rust-lang/crates.io-index" 1197 | checksum = "b1a46d1a171d865aa5f83f92695765caa047a9b4cbae2cbf37dbd613a793fd4c" 1198 | 1199 | [[package]] 1200 | name = "ittapi" 1201 | version = "0.4.0" 1202 | source = "registry+https://github.com/rust-lang/crates.io-index" 1203 | checksum = "6b996fe614c41395cdaedf3cf408a9534851090959d90d54a535f675550b64b1" 1204 | dependencies = [ 1205 | "anyhow", 1206 | "ittapi-sys", 1207 | "log", 1208 | ] 1209 | 1210 | [[package]] 1211 | name = "ittapi-sys" 1212 | version = "0.4.0" 1213 | source = "registry+https://github.com/rust-lang/crates.io-index" 1214 | checksum = "52f5385394064fa2c886205dba02598013ce83d3e92d33dbdc0c52fe0e7bf4fc" 1215 | dependencies = [ 1216 | "cc", 1217 | ] 1218 | 1219 | [[package]] 1220 | name = "jobserver" 1221 | version = "0.1.27" 1222 | source = "registry+https://github.com/rust-lang/crates.io-index" 1223 | checksum = "8c37f63953c4c63420ed5fd3d6d398c719489b9f872b9fa683262f8edd363c7d" 1224 | dependencies = [ 1225 | "libc", 1226 | ] 1227 | 1228 | [[package]] 1229 | name = "js-sys" 1230 | version = "0.3.66" 1231 | source = "registry+https://github.com/rust-lang/crates.io-index" 1232 | checksum = "cee9c64da59eae3b50095c18d3e74f8b73c0b86d2792824ff01bbce68ba229ca" 1233 | dependencies = [ 1234 | "wasm-bindgen", 1235 | ] 1236 | 1237 | [[package]] 1238 | name = "lazy_static" 1239 | version = "1.4.0" 1240 | source = "registry+https://github.com/rust-lang/crates.io-index" 1241 | checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" 1242 | 1243 | [[package]] 1244 | name = "lazycell" 1245 | version = "1.3.0" 1246 | source = "registry+https://github.com/rust-lang/crates.io-index" 1247 | checksum = "830d08ce1d1d941e6b30645f1a0eb5643013d835ce3779a5fc208261dbe10f55" 1248 | 1249 | [[package]] 1250 | name = "leb128" 1251 | version = "0.2.5" 1252 | source = "registry+https://github.com/rust-lang/crates.io-index" 1253 | checksum = "884e2677b40cc8c339eaefcb701c32ef1fd2493d71118dc0ca4b6a736c93bd67" 1254 | 1255 | [[package]] 1256 | name = "libc" 1257 | version = "0.2.155" 1258 | source = "registry+https://github.com/rust-lang/crates.io-index" 1259 | checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c" 1260 | 1261 | [[package]] 1262 | name = "libloading" 1263 | version = "0.7.4" 1264 | source = "registry+https://github.com/rust-lang/crates.io-index" 1265 | checksum = "b67380fd3b2fbe7527a606e18729d21c6f3951633d0500574c4dc22d2d638b9f" 1266 | dependencies = [ 1267 | "cfg-if", 1268 | "winapi", 1269 | ] 1270 | 1271 | [[package]] 1272 | name = "libm" 1273 | version = "0.2.8" 1274 | source = "registry+https://github.com/rust-lang/crates.io-index" 1275 | checksum = "4ec2a862134d2a7d32d7983ddcdd1c4923530833c9f2ea1a44fc5fa473989058" 1276 | 1277 | [[package]] 1278 | name = "libredox" 1279 | version = "0.0.1" 1280 | source = "registry+https://github.com/rust-lang/crates.io-index" 1281 | checksum = "85c833ca1e66078851dba29046874e38f08b2c883700aa29a03ddd3b23814ee8" 1282 | dependencies = [ 1283 | "bitflags 2.4.1", 1284 | "libc", 1285 | "redox_syscall", 1286 | ] 1287 | 1288 | [[package]] 1289 | name = "linux-raw-sys" 1290 | version = "0.4.12" 1291 | source = "registry+https://github.com/rust-lang/crates.io-index" 1292 | checksum = "c4cd1a83af159aa67994778be9070f0ae1bd732942279cabb14f86f986a21456" 1293 | 1294 | [[package]] 1295 | name = "log" 1296 | version = "0.4.20" 1297 | source = "registry+https://github.com/rust-lang/crates.io-index" 1298 | checksum = "b5e6163cb8c49088c2c36f57875e58ccd8c87c7427f7fbd50ea6710b2f3f2e8f" 1299 | 1300 | [[package]] 1301 | name = "mach2" 1302 | version = "0.4.2" 1303 | source = "registry+https://github.com/rust-lang/crates.io-index" 1304 | checksum = "19b955cdeb2a02b9117f121ce63aa52d08ade45de53e48fe6a38b39c10f6f709" 1305 | dependencies = [ 1306 | "libc", 1307 | ] 1308 | 1309 | [[package]] 1310 | name = "maybe-owned" 1311 | version = "0.3.4" 1312 | source = "registry+https://github.com/rust-lang/crates.io-index" 1313 | checksum = "4facc753ae494aeb6e3c22f839b158aebd4f9270f55cd3c79906c45476c47ab4" 1314 | 1315 | [[package]] 1316 | name = "memchr" 1317 | version = "2.6.4" 1318 | source = "registry+https://github.com/rust-lang/crates.io-index" 1319 | checksum = "f665ee40bc4a3c5590afb1e9677db74a508659dfd71e126420da8274909a0167" 1320 | 1321 | [[package]] 1322 | name = "memfd" 1323 | version = "0.6.4" 1324 | source = "registry+https://github.com/rust-lang/crates.io-index" 1325 | checksum = "b2cffa4ad52c6f791f4f8b15f0c05f9824b2ced1160e88cc393d64fff9a8ac64" 1326 | dependencies = [ 1327 | "rustix", 1328 | ] 1329 | 1330 | [[package]] 1331 | name = "memoffset" 1332 | version = "0.9.0" 1333 | source = "registry+https://github.com/rust-lang/crates.io-index" 1334 | checksum = "5a634b1c61a95585bd15607c6ab0c4e5b226e695ff2800ba0cdccddf208c406c" 1335 | dependencies = [ 1336 | "autocfg", 1337 | ] 1338 | 1339 | [[package]] 1340 | name = "minimal-lexical" 1341 | version = "0.2.1" 1342 | source = "registry+https://github.com/rust-lang/crates.io-index" 1343 | checksum = "68354c5c6bd36d73ff3feceb05efa59b6acb7626617f4962be322a825e61f79a" 1344 | 1345 | [[package]] 1346 | name = "miniz_oxide" 1347 | version = "0.7.1" 1348 | source = "registry+https://github.com/rust-lang/crates.io-index" 1349 | checksum = "e7810e0be55b428ada41041c41f32c9f1a42817901b4ccf45fa3d4b6561e74c7" 1350 | dependencies = [ 1351 | "adler", 1352 | ] 1353 | 1354 | [[package]] 1355 | name = "mio" 1356 | version = "1.0.1" 1357 | source = "registry+https://github.com/rust-lang/crates.io-index" 1358 | checksum = "4569e456d394deccd22ce1c1913e6ea0e54519f577285001215d33557431afe4" 1359 | dependencies = [ 1360 | "hermit-abi", 1361 | "libc", 1362 | "wasi", 1363 | "windows-sys 0.52.0", 1364 | ] 1365 | 1366 | [[package]] 1367 | name = "native-tls" 1368 | version = "0.2.11" 1369 | source = "registry+https://github.com/rust-lang/crates.io-index" 1370 | checksum = "07226173c32f2926027b63cce4bcd8076c3552846cbe7925f3aaffeac0a3b92e" 1371 | dependencies = [ 1372 | "lazy_static", 1373 | "libc", 1374 | "log", 1375 | "openssl", 1376 | "openssl-probe", 1377 | "openssl-sys", 1378 | "schannel", 1379 | "security-framework", 1380 | "security-framework-sys", 1381 | "tempfile", 1382 | ] 1383 | 1384 | [[package]] 1385 | name = "nom" 1386 | version = "7.1.3" 1387 | source = "registry+https://github.com/rust-lang/crates.io-index" 1388 | checksum = "d273983c5a657a70a3e8f2a01329822f3b8c8172b73826411a55751e404a0a4a" 1389 | dependencies = [ 1390 | "memchr", 1391 | "minimal-lexical", 1392 | ] 1393 | 1394 | [[package]] 1395 | name = "num-traits" 1396 | version = "0.2.17" 1397 | source = "registry+https://github.com/rust-lang/crates.io-index" 1398 | checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c" 1399 | dependencies = [ 1400 | "autocfg", 1401 | ] 1402 | 1403 | [[package]] 1404 | name = "num_cpus" 1405 | version = "1.16.0" 1406 | source = "registry+https://github.com/rust-lang/crates.io-index" 1407 | checksum = "4161fcb6d602d4d2081af7c3a45852d875a03dd337a6bfdd6e06407b61342a43" 1408 | dependencies = [ 1409 | "hermit-abi", 1410 | "libc", 1411 | ] 1412 | 1413 | [[package]] 1414 | name = "object" 1415 | version = "0.32.1" 1416 | source = "registry+https://github.com/rust-lang/crates.io-index" 1417 | checksum = "9cf5f9dd3933bd50a9e1f149ec995f39ae2c496d31fd772c1fd45ebc27e902b0" 1418 | dependencies = [ 1419 | "memchr", 1420 | ] 1421 | 1422 | [[package]] 1423 | name = "object" 1424 | version = "0.36.2" 1425 | source = "registry+https://github.com/rust-lang/crates.io-index" 1426 | checksum = "3f203fa8daa7bb185f760ae12bd8e097f63d17041dcdcaf675ac54cdf863170e" 1427 | dependencies = [ 1428 | "crc32fast", 1429 | "hashbrown 0.14.3", 1430 | "indexmap", 1431 | "memchr", 1432 | ] 1433 | 1434 | [[package]] 1435 | name = "once_cell" 1436 | version = "1.19.0" 1437 | source = "registry+https://github.com/rust-lang/crates.io-index" 1438 | checksum = "3fdb12b2476b595f9358c5161aa467c2438859caa136dec86c26fdd2efe17b92" 1439 | 1440 | [[package]] 1441 | name = "oorandom" 1442 | version = "11.1.3" 1443 | source = "registry+https://github.com/rust-lang/crates.io-index" 1444 | checksum = "0ab1bc2a289d34bd04a330323ac98a1b4bc82c9d9fcb1e66b63caa84da26b575" 1445 | 1446 | [[package]] 1447 | name = "openssl" 1448 | version = "0.10.63" 1449 | source = "registry+https://github.com/rust-lang/crates.io-index" 1450 | checksum = "15c9d69dd87a29568d4d017cfe8ec518706046a05184e5aea92d0af890b803c8" 1451 | dependencies = [ 1452 | "bitflags 2.4.1", 1453 | "cfg-if", 1454 | "foreign-types", 1455 | "libc", 1456 | "once_cell", 1457 | "openssl-macros", 1458 | "openssl-sys", 1459 | ] 1460 | 1461 | [[package]] 1462 | name = "openssl-macros" 1463 | version = "0.1.1" 1464 | source = "registry+https://github.com/rust-lang/crates.io-index" 1465 | checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" 1466 | dependencies = [ 1467 | "proc-macro2", 1468 | "quote", 1469 | "syn", 1470 | ] 1471 | 1472 | [[package]] 1473 | name = "openssl-probe" 1474 | version = "0.1.5" 1475 | source = "registry+https://github.com/rust-lang/crates.io-index" 1476 | checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" 1477 | 1478 | [[package]] 1479 | name = "openssl-sys" 1480 | version = "0.9.99" 1481 | source = "registry+https://github.com/rust-lang/crates.io-index" 1482 | checksum = "22e1bf214306098e4832460f797824c05d25aacdf896f64a985fb0fd992454ae" 1483 | dependencies = [ 1484 | "cc", 1485 | "libc", 1486 | "pkg-config", 1487 | "vcpkg", 1488 | ] 1489 | 1490 | [[package]] 1491 | name = "paste" 1492 | version = "1.0.14" 1493 | source = "registry+https://github.com/rust-lang/crates.io-index" 1494 | checksum = "de3145af08024dea9fa9914f381a17b8fc6034dfb00f3a84013f7ff43f29ed4c" 1495 | 1496 | [[package]] 1497 | name = "percent-encoding" 1498 | version = "2.3.1" 1499 | source = "registry+https://github.com/rust-lang/crates.io-index" 1500 | checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" 1501 | 1502 | [[package]] 1503 | name = "pin-project" 1504 | version = "1.1.4" 1505 | source = "registry+https://github.com/rust-lang/crates.io-index" 1506 | checksum = "0302c4a0442c456bd56f841aee5c3bfd17967563f6fadc9ceb9f9c23cf3807e0" 1507 | dependencies = [ 1508 | "pin-project-internal", 1509 | ] 1510 | 1511 | [[package]] 1512 | name = "pin-project-internal" 1513 | version = "1.1.4" 1514 | source = "registry+https://github.com/rust-lang/crates.io-index" 1515 | checksum = "266c042b60c9c76b8d53061e52b2e0d1116abc57cefc8c5cd671619a56ac3690" 1516 | dependencies = [ 1517 | "proc-macro2", 1518 | "quote", 1519 | "syn", 1520 | ] 1521 | 1522 | [[package]] 1523 | name = "pin-project-lite" 1524 | version = "0.2.13" 1525 | source = "registry+https://github.com/rust-lang/crates.io-index" 1526 | checksum = "8afb450f006bf6385ca15ef45d71d2288452bc3683ce2e2cacc0d18e4be60b58" 1527 | 1528 | [[package]] 1529 | name = "pin-utils" 1530 | version = "0.1.0" 1531 | source = "registry+https://github.com/rust-lang/crates.io-index" 1532 | checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" 1533 | 1534 | [[package]] 1535 | name = "pkg-config" 1536 | version = "0.3.28" 1537 | source = "registry+https://github.com/rust-lang/crates.io-index" 1538 | checksum = "69d3587f8a9e599cc7ec2c00e331f71c4e69a5f9a4b8a6efd5b07466b9736f9a" 1539 | 1540 | [[package]] 1541 | name = "plotters" 1542 | version = "0.3.5" 1543 | source = "registry+https://github.com/rust-lang/crates.io-index" 1544 | checksum = "d2c224ba00d7cadd4d5c660deaf2098e5e80e07846537c51f9cfa4be50c1fd45" 1545 | dependencies = [ 1546 | "num-traits", 1547 | "plotters-backend", 1548 | "plotters-svg", 1549 | "wasm-bindgen", 1550 | "web-sys", 1551 | ] 1552 | 1553 | [[package]] 1554 | name = "plotters-backend" 1555 | version = "0.3.5" 1556 | source = "registry+https://github.com/rust-lang/crates.io-index" 1557 | checksum = "9e76628b4d3a7581389a35d5b6e2139607ad7c75b17aed325f210aa91f4a9609" 1558 | 1559 | [[package]] 1560 | name = "plotters-svg" 1561 | version = "0.3.5" 1562 | source = "registry+https://github.com/rust-lang/crates.io-index" 1563 | checksum = "38f6d39893cca0701371e3c27294f09797214b86f1fb951b89ade8ec04e2abab" 1564 | dependencies = [ 1565 | "plotters-backend", 1566 | ] 1567 | 1568 | [[package]] 1569 | name = "postcard" 1570 | version = "1.0.8" 1571 | source = "registry+https://github.com/rust-lang/crates.io-index" 1572 | checksum = "a55c51ee6c0db07e68448e336cf8ea4131a620edefebf9893e759b2d793420f8" 1573 | dependencies = [ 1574 | "cobs", 1575 | "embedded-io", 1576 | "serde", 1577 | ] 1578 | 1579 | [[package]] 1580 | name = "ppv-lite86" 1581 | version = "0.2.17" 1582 | source = "registry+https://github.com/rust-lang/crates.io-index" 1583 | checksum = "5b40af805b3121feab8a3c29f04d8ad262fa8e0561883e7653e024ae4479e6de" 1584 | 1585 | [[package]] 1586 | name = "prettyplease" 1587 | version = "0.2.16" 1588 | source = "registry+https://github.com/rust-lang/crates.io-index" 1589 | checksum = "a41cf62165e97c7f814d2221421dbb9afcbcdb0a88068e5ea206e19951c2cbb5" 1590 | dependencies = [ 1591 | "proc-macro2", 1592 | "syn", 1593 | ] 1594 | 1595 | [[package]] 1596 | name = "proc-macro2" 1597 | version = "1.0.78" 1598 | source = "registry+https://github.com/rust-lang/crates.io-index" 1599 | checksum = "e2422ad645d89c99f8f3e6b88a9fdeca7fabeac836b1002371c4367c8f984aae" 1600 | dependencies = [ 1601 | "unicode-ident", 1602 | ] 1603 | 1604 | [[package]] 1605 | name = "psm" 1606 | version = "0.1.21" 1607 | source = "registry+https://github.com/rust-lang/crates.io-index" 1608 | checksum = "5787f7cda34e3033a72192c018bc5883100330f362ef279a8cbccfce8bb4e874" 1609 | dependencies = [ 1610 | "cc", 1611 | ] 1612 | 1613 | [[package]] 1614 | name = "quickjs" 1615 | version = "0.6.0" 1616 | dependencies = [ 1617 | "anyhow", 1618 | "clap", 1619 | "criterion", 1620 | "num_cpus", 1621 | "rayon", 1622 | "wasi-common", 1623 | "wasmtime", 1624 | "wasmtime-wasi", 1625 | ] 1626 | 1627 | [[package]] 1628 | name = "quickjs-wasm" 1629 | version = "0.6.0" 1630 | dependencies = [ 1631 | "anyhow", 1632 | "once_cell", 1633 | "quickjs-wasm-rs", 1634 | "serde-transcode", 1635 | "serde_json", 1636 | ] 1637 | 1638 | [[package]] 1639 | name = "quickjs-wasm-rs" 1640 | version = "3.1.0" 1641 | source = "registry+https://github.com/rust-lang/crates.io-index" 1642 | checksum = "28238e71a7aaafc42354af7908626b8b062d9a5ff16e4da6a5890e372b717cc5" 1643 | dependencies = [ 1644 | "anyhow", 1645 | "once_cell", 1646 | "quickjs-wasm-sys", 1647 | "serde", 1648 | ] 1649 | 1650 | [[package]] 1651 | name = "quickjs-wasm-sys" 1652 | version = "1.2.1" 1653 | source = "registry+https://github.com/rust-lang/crates.io-index" 1654 | checksum = "b052f6874a9e5c448f4f7d811972290acb3c09f8e580056c07f91ad7644ea33f" 1655 | dependencies = [ 1656 | "anyhow", 1657 | "bindgen", 1658 | "cc", 1659 | "http-body-util", 1660 | "hyper", 1661 | "hyper-tls", 1662 | "hyper-util", 1663 | "tokio", 1664 | "walkdir", 1665 | ] 1666 | 1667 | [[package]] 1668 | name = "quote" 1669 | version = "1.0.35" 1670 | source = "registry+https://github.com/rust-lang/crates.io-index" 1671 | checksum = "291ec9ab5efd934aaf503a6466c5d5251535d108ee747472c3977cc5acc868ef" 1672 | dependencies = [ 1673 | "proc-macro2", 1674 | ] 1675 | 1676 | [[package]] 1677 | name = "rand" 1678 | version = "0.8.5" 1679 | source = "registry+https://github.com/rust-lang/crates.io-index" 1680 | checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" 1681 | dependencies = [ 1682 | "libc", 1683 | "rand_chacha", 1684 | "rand_core", 1685 | ] 1686 | 1687 | [[package]] 1688 | name = "rand_chacha" 1689 | version = "0.3.1" 1690 | source = "registry+https://github.com/rust-lang/crates.io-index" 1691 | checksum = "e6c10a63a0fa32252be49d21e7709d4d4baf8d231c2dbce1eaa8141b9b127d88" 1692 | dependencies = [ 1693 | "ppv-lite86", 1694 | "rand_core", 1695 | ] 1696 | 1697 | [[package]] 1698 | name = "rand_core" 1699 | version = "0.6.4" 1700 | source = "registry+https://github.com/rust-lang/crates.io-index" 1701 | checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" 1702 | dependencies = [ 1703 | "getrandom", 1704 | ] 1705 | 1706 | [[package]] 1707 | name = "rayon" 1708 | version = "1.10.0" 1709 | source = "registry+https://github.com/rust-lang/crates.io-index" 1710 | checksum = "b418a60154510ca1a002a752ca9714984e21e4241e804d32555251faf8b78ffa" 1711 | dependencies = [ 1712 | "either", 1713 | "rayon-core", 1714 | ] 1715 | 1716 | [[package]] 1717 | name = "rayon-core" 1718 | version = "1.12.1" 1719 | source = "registry+https://github.com/rust-lang/crates.io-index" 1720 | checksum = "1465873a3dfdaa8ae7cb14b4383657caab0b3e8a0aa9ae8e04b044854c8dfce2" 1721 | dependencies = [ 1722 | "crossbeam-deque", 1723 | "crossbeam-utils", 1724 | ] 1725 | 1726 | [[package]] 1727 | name = "redox_syscall" 1728 | version = "0.4.1" 1729 | source = "registry+https://github.com/rust-lang/crates.io-index" 1730 | checksum = "4722d768eff46b75989dd134e5c353f0d6296e5aaa3132e776cbdb56be7731aa" 1731 | dependencies = [ 1732 | "bitflags 1.3.2", 1733 | ] 1734 | 1735 | [[package]] 1736 | name = "redox_users" 1737 | version = "0.4.4" 1738 | source = "registry+https://github.com/rust-lang/crates.io-index" 1739 | checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4" 1740 | dependencies = [ 1741 | "getrandom", 1742 | "libredox", 1743 | "thiserror", 1744 | ] 1745 | 1746 | [[package]] 1747 | name = "regalloc2" 1748 | version = "0.9.3" 1749 | source = "registry+https://github.com/rust-lang/crates.io-index" 1750 | checksum = "ad156d539c879b7a24a363a2016d77961786e71f48f2e2fc8302a92abd2429a6" 1751 | dependencies = [ 1752 | "hashbrown 0.13.2", 1753 | "log", 1754 | "rustc-hash", 1755 | "slice-group-by", 1756 | "smallvec", 1757 | ] 1758 | 1759 | [[package]] 1760 | name = "regex" 1761 | version = "1.10.2" 1762 | source = "registry+https://github.com/rust-lang/crates.io-index" 1763 | checksum = "380b951a9c5e80ddfd6136919eef32310721aa4aacd4889a8d39124b026ab343" 1764 | dependencies = [ 1765 | "aho-corasick", 1766 | "memchr", 1767 | "regex-automata", 1768 | "regex-syntax", 1769 | ] 1770 | 1771 | [[package]] 1772 | name = "regex-automata" 1773 | version = "0.4.3" 1774 | source = "registry+https://github.com/rust-lang/crates.io-index" 1775 | checksum = "5f804c7828047e88b2d32e2d7fe5a105da8ee3264f01902f796c8e067dc2483f" 1776 | dependencies = [ 1777 | "aho-corasick", 1778 | "memchr", 1779 | "regex-syntax", 1780 | ] 1781 | 1782 | [[package]] 1783 | name = "regex-syntax" 1784 | version = "0.8.2" 1785 | source = "registry+https://github.com/rust-lang/crates.io-index" 1786 | checksum = "c08c74e62047bb2de4ff487b251e4a92e24f48745648451635cec7d591162d9f" 1787 | 1788 | [[package]] 1789 | name = "rustc-demangle" 1790 | version = "0.1.23" 1791 | source = "registry+https://github.com/rust-lang/crates.io-index" 1792 | checksum = "d626bb9dae77e28219937af045c257c28bfd3f69333c512553507f5f9798cb76" 1793 | 1794 | [[package]] 1795 | name = "rustc-hash" 1796 | version = "1.1.0" 1797 | source = "registry+https://github.com/rust-lang/crates.io-index" 1798 | checksum = "08d43f7aa6b08d49f382cde6a7982047c3426db949b1424bc4b7ec9ae12c6ce2" 1799 | 1800 | [[package]] 1801 | name = "rustix" 1802 | version = "0.38.34" 1803 | source = "registry+https://github.com/rust-lang/crates.io-index" 1804 | checksum = "70dc5ec042f7a43c4a73241207cecc9873a06d45debb38b329f8541d85c2730f" 1805 | dependencies = [ 1806 | "bitflags 2.4.1", 1807 | "errno", 1808 | "itoa", 1809 | "libc", 1810 | "linux-raw-sys", 1811 | "once_cell", 1812 | "windows-sys 0.52.0", 1813 | ] 1814 | 1815 | [[package]] 1816 | name = "ryu" 1817 | version = "1.0.16" 1818 | source = "registry+https://github.com/rust-lang/crates.io-index" 1819 | checksum = "f98d2aa92eebf49b69786be48e4477826b256916e84a57ff2a4f21923b48eb4c" 1820 | 1821 | [[package]] 1822 | name = "same-file" 1823 | version = "1.0.6" 1824 | source = "registry+https://github.com/rust-lang/crates.io-index" 1825 | checksum = "93fc1dc3aaa9bfed95e02e6eadabb4baf7e3078b0bd1b4d7b6b0b68378900502" 1826 | dependencies = [ 1827 | "winapi-util", 1828 | ] 1829 | 1830 | [[package]] 1831 | name = "schannel" 1832 | version = "0.1.23" 1833 | source = "registry+https://github.com/rust-lang/crates.io-index" 1834 | checksum = "fbc91545643bcf3a0bbb6569265615222618bdf33ce4ffbbd13c4bbd4c093534" 1835 | dependencies = [ 1836 | "windows-sys 0.52.0", 1837 | ] 1838 | 1839 | [[package]] 1840 | name = "security-framework" 1841 | version = "2.9.2" 1842 | source = "registry+https://github.com/rust-lang/crates.io-index" 1843 | checksum = "05b64fb303737d99b81884b2c63433e9ae28abebe5eb5045dcdd175dc2ecf4de" 1844 | dependencies = [ 1845 | "bitflags 1.3.2", 1846 | "core-foundation", 1847 | "core-foundation-sys", 1848 | "libc", 1849 | "security-framework-sys", 1850 | ] 1851 | 1852 | [[package]] 1853 | name = "security-framework-sys" 1854 | version = "2.9.1" 1855 | source = "registry+https://github.com/rust-lang/crates.io-index" 1856 | checksum = "e932934257d3b408ed8f30db49d85ea163bfe74961f017f405b025af298f0c7a" 1857 | dependencies = [ 1858 | "core-foundation-sys", 1859 | "libc", 1860 | ] 1861 | 1862 | [[package]] 1863 | name = "semver" 1864 | version = "1.0.20" 1865 | source = "registry+https://github.com/rust-lang/crates.io-index" 1866 | checksum = "836fa6a3e1e547f9a2c4040802ec865b5d85f4014efe00555d7090a3dcaa1090" 1867 | dependencies = [ 1868 | "serde", 1869 | ] 1870 | 1871 | [[package]] 1872 | name = "serde" 1873 | version = "1.0.196" 1874 | source = "registry+https://github.com/rust-lang/crates.io-index" 1875 | checksum = "870026e60fa08c69f064aa766c10f10b1d62db9ccd4d0abb206472bee0ce3b32" 1876 | dependencies = [ 1877 | "serde_derive", 1878 | ] 1879 | 1880 | [[package]] 1881 | name = "serde-transcode" 1882 | version = "1.1.1" 1883 | source = "registry+https://github.com/rust-lang/crates.io-index" 1884 | checksum = "590c0e25c2a5bb6e85bf5c1bce768ceb86b316e7a01bdf07d2cb4ec2271990e2" 1885 | dependencies = [ 1886 | "serde", 1887 | ] 1888 | 1889 | [[package]] 1890 | name = "serde_derive" 1891 | version = "1.0.196" 1892 | source = "registry+https://github.com/rust-lang/crates.io-index" 1893 | checksum = "33c85360c95e7d137454dc81d9a4ed2b8efd8fbe19cee57357b32b9771fccb67" 1894 | dependencies = [ 1895 | "proc-macro2", 1896 | "quote", 1897 | "syn", 1898 | ] 1899 | 1900 | [[package]] 1901 | name = "serde_json" 1902 | version = "1.0.121" 1903 | source = "registry+https://github.com/rust-lang/crates.io-index" 1904 | checksum = "4ab380d7d9f22ef3f21ad3e6c1ebe8e4fc7a2000ccba2e4d71fc96f15b2cb609" 1905 | dependencies = [ 1906 | "itoa", 1907 | "memchr", 1908 | "ryu", 1909 | "serde", 1910 | ] 1911 | 1912 | [[package]] 1913 | name = "serde_spanned" 1914 | version = "0.6.7" 1915 | source = "registry+https://github.com/rust-lang/crates.io-index" 1916 | checksum = "eb5b1b31579f3811bf615c144393417496f152e12ac8b7663bf664f4a815306d" 1917 | dependencies = [ 1918 | "serde", 1919 | ] 1920 | 1921 | [[package]] 1922 | name = "sha2" 1923 | version = "0.10.8" 1924 | source = "registry+https://github.com/rust-lang/crates.io-index" 1925 | checksum = "793db75ad2bcafc3ffa7c68b215fee268f537982cd901d132f89c6343f3a3dc8" 1926 | dependencies = [ 1927 | "cfg-if", 1928 | "cpufeatures", 1929 | "digest", 1930 | ] 1931 | 1932 | [[package]] 1933 | name = "shellexpand" 1934 | version = "2.1.2" 1935 | source = "registry+https://github.com/rust-lang/crates.io-index" 1936 | checksum = "7ccc8076840c4da029af4f87e4e8daeb0fca6b87bbb02e10cb60b791450e11e4" 1937 | dependencies = [ 1938 | "dirs", 1939 | ] 1940 | 1941 | [[package]] 1942 | name = "shlex" 1943 | version = "1.2.0" 1944 | source = "registry+https://github.com/rust-lang/crates.io-index" 1945 | checksum = "a7cee0529a6d40f580e7a5e6c495c8fbfe21b7b52795ed4bb5e62cdf92bc6380" 1946 | 1947 | [[package]] 1948 | name = "slice-group-by" 1949 | version = "0.3.1" 1950 | source = "registry+https://github.com/rust-lang/crates.io-index" 1951 | checksum = "826167069c09b99d56f31e9ae5c99049e932a98c9dc2dac47645b08dbbf76ba7" 1952 | 1953 | [[package]] 1954 | name = "smallvec" 1955 | version = "1.13.2" 1956 | source = "registry+https://github.com/rust-lang/crates.io-index" 1957 | checksum = "3c5e1a9a646d36c3599cd173a41282daf47c44583ad367b8e6837255952e5c67" 1958 | dependencies = [ 1959 | "serde", 1960 | ] 1961 | 1962 | [[package]] 1963 | name = "socket2" 1964 | version = "0.5.5" 1965 | source = "registry+https://github.com/rust-lang/crates.io-index" 1966 | checksum = "7b5fac59a5cb5dd637972e5fca70daf0523c9067fcdc4842f053dae04a18f8e9" 1967 | dependencies = [ 1968 | "libc", 1969 | "windows-sys 0.48.0", 1970 | ] 1971 | 1972 | [[package]] 1973 | name = "sptr" 1974 | version = "0.3.2" 1975 | source = "registry+https://github.com/rust-lang/crates.io-index" 1976 | checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" 1977 | 1978 | [[package]] 1979 | name = "stable_deref_trait" 1980 | version = "1.2.0" 1981 | source = "registry+https://github.com/rust-lang/crates.io-index" 1982 | checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" 1983 | 1984 | [[package]] 1985 | name = "strsim" 1986 | version = "0.11.1" 1987 | source = "registry+https://github.com/rust-lang/crates.io-index" 1988 | checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" 1989 | 1990 | [[package]] 1991 | name = "syn" 1992 | version = "2.0.48" 1993 | source = "registry+https://github.com/rust-lang/crates.io-index" 1994 | checksum = "0f3531638e407dfc0814761abb7c00a5b54992b849452a0646b7f65c9f770f3f" 1995 | dependencies = [ 1996 | "proc-macro2", 1997 | "quote", 1998 | "unicode-ident", 1999 | ] 2000 | 2001 | [[package]] 2002 | name = "system-interface" 2003 | version = "0.27.2" 2004 | source = "registry+https://github.com/rust-lang/crates.io-index" 2005 | checksum = "b858526d22750088a9b3cf2e3c2aacebd5377f13adeec02860c30d09113010a6" 2006 | dependencies = [ 2007 | "bitflags 2.4.1", 2008 | "cap-fs-ext", 2009 | "cap-std", 2010 | "fd-lock", 2011 | "io-lifetimes", 2012 | "rustix", 2013 | "windows-sys 0.52.0", 2014 | "winx", 2015 | ] 2016 | 2017 | [[package]] 2018 | name = "target-lexicon" 2019 | version = "0.12.15" 2020 | source = "registry+https://github.com/rust-lang/crates.io-index" 2021 | checksum = "4873307b7c257eddcb50c9bedf158eb669578359fb28428bef438fec8e6ba7c2" 2022 | 2023 | [[package]] 2024 | name = "tempfile" 2025 | version = "3.9.0" 2026 | source = "registry+https://github.com/rust-lang/crates.io-index" 2027 | checksum = "01ce4141aa927a6d1bd34a041795abd0db1cccba5d5f24b009f694bdf3a1f3fa" 2028 | dependencies = [ 2029 | "cfg-if", 2030 | "fastrand", 2031 | "redox_syscall", 2032 | "rustix", 2033 | "windows-sys 0.52.0", 2034 | ] 2035 | 2036 | [[package]] 2037 | name = "termcolor" 2038 | version = "1.4.1" 2039 | source = "registry+https://github.com/rust-lang/crates.io-index" 2040 | checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" 2041 | dependencies = [ 2042 | "winapi-util", 2043 | ] 2044 | 2045 | [[package]] 2046 | name = "thiserror" 2047 | version = "1.0.51" 2048 | source = "registry+https://github.com/rust-lang/crates.io-index" 2049 | checksum = "f11c217e1416d6f036b870f14e0413d480dbf28edbee1f877abaf0206af43bb7" 2050 | dependencies = [ 2051 | "thiserror-impl", 2052 | ] 2053 | 2054 | [[package]] 2055 | name = "thiserror-impl" 2056 | version = "1.0.51" 2057 | source = "registry+https://github.com/rust-lang/crates.io-index" 2058 | checksum = "01742297787513b79cf8e29d1056ede1313e2420b7b3b15d0a768b4921f549df" 2059 | dependencies = [ 2060 | "proc-macro2", 2061 | "quote", 2062 | "syn", 2063 | ] 2064 | 2065 | [[package]] 2066 | name = "tinytemplate" 2067 | version = "1.2.1" 2068 | source = "registry+https://github.com/rust-lang/crates.io-index" 2069 | checksum = "be4d6b5f19ff7664e8c98d03e2139cb510db9b0a60b55f8e8709b689d939b6bc" 2070 | dependencies = [ 2071 | "serde", 2072 | "serde_json", 2073 | ] 2074 | 2075 | [[package]] 2076 | name = "tinyvec" 2077 | version = "1.6.0" 2078 | source = "registry+https://github.com/rust-lang/crates.io-index" 2079 | checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" 2080 | dependencies = [ 2081 | "tinyvec_macros", 2082 | ] 2083 | 2084 | [[package]] 2085 | name = "tinyvec_macros" 2086 | version = "0.1.1" 2087 | source = "registry+https://github.com/rust-lang/crates.io-index" 2088 | checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" 2089 | 2090 | [[package]] 2091 | name = "tokio" 2092 | version = "1.39.2" 2093 | source = "registry+https://github.com/rust-lang/crates.io-index" 2094 | checksum = "daa4fb1bc778bd6f04cbfc4bb2d06a7396a8f299dc33ea1900cedaa316f467b1" 2095 | dependencies = [ 2096 | "backtrace", 2097 | "bytes", 2098 | "libc", 2099 | "mio", 2100 | "pin-project-lite", 2101 | "socket2", 2102 | "tokio-macros", 2103 | "windows-sys 0.52.0", 2104 | ] 2105 | 2106 | [[package]] 2107 | name = "tokio-macros" 2108 | version = "2.4.0" 2109 | source = "registry+https://github.com/rust-lang/crates.io-index" 2110 | checksum = "693d596312e88961bc67d7f1f97af8a70227d9f90c31bba5806eec004978d752" 2111 | dependencies = [ 2112 | "proc-macro2", 2113 | "quote", 2114 | "syn", 2115 | ] 2116 | 2117 | [[package]] 2118 | name = "tokio-native-tls" 2119 | version = "0.3.1" 2120 | source = "registry+https://github.com/rust-lang/crates.io-index" 2121 | checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" 2122 | dependencies = [ 2123 | "native-tls", 2124 | "tokio", 2125 | ] 2126 | 2127 | [[package]] 2128 | name = "toml" 2129 | version = "0.8.16" 2130 | source = "registry+https://github.com/rust-lang/crates.io-index" 2131 | checksum = "81967dd0dd2c1ab0bc3468bd7caecc32b8a4aa47d0c8c695d8c2b2108168d62c" 2132 | dependencies = [ 2133 | "serde", 2134 | "serde_spanned", 2135 | "toml_datetime", 2136 | "toml_edit", 2137 | ] 2138 | 2139 | [[package]] 2140 | name = "toml_datetime" 2141 | version = "0.6.7" 2142 | source = "registry+https://github.com/rust-lang/crates.io-index" 2143 | checksum = "f8fb9f64314842840f1d940ac544da178732128f1c78c21772e876579e0da1db" 2144 | dependencies = [ 2145 | "serde", 2146 | ] 2147 | 2148 | [[package]] 2149 | name = "toml_edit" 2150 | version = "0.22.17" 2151 | source = "registry+https://github.com/rust-lang/crates.io-index" 2152 | checksum = "8d9f8729f5aea9562aac1cc0441f5d6de3cff1ee0c5d67293eeca5eb36ee7c16" 2153 | dependencies = [ 2154 | "indexmap", 2155 | "serde", 2156 | "serde_spanned", 2157 | "toml_datetime", 2158 | "winnow", 2159 | ] 2160 | 2161 | [[package]] 2162 | name = "tower" 2163 | version = "0.4.13" 2164 | source = "registry+https://github.com/rust-lang/crates.io-index" 2165 | checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c" 2166 | dependencies = [ 2167 | "futures-core", 2168 | "futures-util", 2169 | "pin-project", 2170 | "pin-project-lite", 2171 | "tokio", 2172 | "tower-layer", 2173 | "tower-service", 2174 | "tracing", 2175 | ] 2176 | 2177 | [[package]] 2178 | name = "tower-layer" 2179 | version = "0.3.2" 2180 | source = "registry+https://github.com/rust-lang/crates.io-index" 2181 | checksum = "c20c8dbed6283a09604c3e69b4b7eeb54e298b8a600d4d5ecb5ad39de609f1d0" 2182 | 2183 | [[package]] 2184 | name = "tower-service" 2185 | version = "0.3.2" 2186 | source = "registry+https://github.com/rust-lang/crates.io-index" 2187 | checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" 2188 | 2189 | [[package]] 2190 | name = "tracing" 2191 | version = "0.1.40" 2192 | source = "registry+https://github.com/rust-lang/crates.io-index" 2193 | checksum = "c3523ab5a71916ccf420eebdf5521fcef02141234bbc0b8a49f2fdc4544364ef" 2194 | dependencies = [ 2195 | "log", 2196 | "pin-project-lite", 2197 | "tracing-attributes", 2198 | "tracing-core", 2199 | ] 2200 | 2201 | [[package]] 2202 | name = "tracing-attributes" 2203 | version = "0.1.27" 2204 | source = "registry+https://github.com/rust-lang/crates.io-index" 2205 | checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7" 2206 | dependencies = [ 2207 | "proc-macro2", 2208 | "quote", 2209 | "syn", 2210 | ] 2211 | 2212 | [[package]] 2213 | name = "tracing-core" 2214 | version = "0.1.32" 2215 | source = "registry+https://github.com/rust-lang/crates.io-index" 2216 | checksum = "c06d3da6113f116aaee68e4d601191614c9053067f9ab7f6edbcb161237daa54" 2217 | dependencies = [ 2218 | "once_cell", 2219 | ] 2220 | 2221 | [[package]] 2222 | name = "try-lock" 2223 | version = "0.2.5" 2224 | source = "registry+https://github.com/rust-lang/crates.io-index" 2225 | checksum = "e421abadd41a4225275504ea4d6566923418b7f05506fbc9c0fe86ba7396114b" 2226 | 2227 | [[package]] 2228 | name = "typenum" 2229 | version = "1.17.0" 2230 | source = "registry+https://github.com/rust-lang/crates.io-index" 2231 | checksum = "42ff0bf0c66b8238c6f3b578df37d0b7848e55df8577b3f74f92a69acceeb825" 2232 | 2233 | [[package]] 2234 | name = "unicode-bidi" 2235 | version = "0.3.14" 2236 | source = "registry+https://github.com/rust-lang/crates.io-index" 2237 | checksum = "6f2528f27a9eb2b21e69c95319b30bd0efd85d09c379741b0f78ea1d86be2416" 2238 | 2239 | [[package]] 2240 | name = "unicode-ident" 2241 | version = "1.0.12" 2242 | source = "registry+https://github.com/rust-lang/crates.io-index" 2243 | checksum = "3354b9ac3fae1ff6755cb6db53683adb661634f67557942dea4facebec0fee4b" 2244 | 2245 | [[package]] 2246 | name = "unicode-normalization" 2247 | version = "0.1.22" 2248 | source = "registry+https://github.com/rust-lang/crates.io-index" 2249 | checksum = "5c5713f0fc4b5db668a2ac63cdb7bb4469d8c9fed047b1d0292cc7b0ce2ba921" 2250 | dependencies = [ 2251 | "tinyvec", 2252 | ] 2253 | 2254 | [[package]] 2255 | name = "unicode-width" 2256 | version = "0.1.11" 2257 | source = "registry+https://github.com/rust-lang/crates.io-index" 2258 | checksum = "e51733f11c9c4f72aa0c160008246859e340b00807569a0da0e7a1079b27ba85" 2259 | 2260 | [[package]] 2261 | name = "unicode-xid" 2262 | version = "0.2.4" 2263 | source = "registry+https://github.com/rust-lang/crates.io-index" 2264 | checksum = "f962df74c8c05a667b5ee8bcf162993134c104e96440b663c8daa176dc772d8c" 2265 | 2266 | [[package]] 2267 | name = "url" 2268 | version = "2.5.0" 2269 | source = "registry+https://github.com/rust-lang/crates.io-index" 2270 | checksum = "31e6302e3bb753d46e83516cae55ae196fc0c309407cf11ab35cc51a4c2a4633" 2271 | dependencies = [ 2272 | "form_urlencoded", 2273 | "idna", 2274 | "percent-encoding", 2275 | ] 2276 | 2277 | [[package]] 2278 | name = "utf8parse" 2279 | version = "0.2.1" 2280 | source = "registry+https://github.com/rust-lang/crates.io-index" 2281 | checksum = "711b9620af191e0cdc7468a8d14e709c3dcdb115b36f838e601583af800a370a" 2282 | 2283 | [[package]] 2284 | name = "uuid" 2285 | version = "1.6.1" 2286 | source = "registry+https://github.com/rust-lang/crates.io-index" 2287 | checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560" 2288 | 2289 | [[package]] 2290 | name = "vcpkg" 2291 | version = "0.2.15" 2292 | source = "registry+https://github.com/rust-lang/crates.io-index" 2293 | checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" 2294 | 2295 | [[package]] 2296 | name = "version_check" 2297 | version = "0.9.4" 2298 | source = "registry+https://github.com/rust-lang/crates.io-index" 2299 | checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" 2300 | 2301 | [[package]] 2302 | name = "walkdir" 2303 | version = "2.4.0" 2304 | source = "registry+https://github.com/rust-lang/crates.io-index" 2305 | checksum = "d71d857dc86794ca4c280d616f7da00d2dbfd8cd788846559a6813e6aa4b54ee" 2306 | dependencies = [ 2307 | "same-file", 2308 | "winapi-util", 2309 | ] 2310 | 2311 | [[package]] 2312 | name = "want" 2313 | version = "0.3.1" 2314 | source = "registry+https://github.com/rust-lang/crates.io-index" 2315 | checksum = "bfa7760aed19e106de2c7c0b581b509f2f25d3dacaf737cb82ac61bc6d760b0e" 2316 | dependencies = [ 2317 | "try-lock", 2318 | ] 2319 | 2320 | [[package]] 2321 | name = "wasi" 2322 | version = "0.11.0+wasi-snapshot-preview1" 2323 | source = "registry+https://github.com/rust-lang/crates.io-index" 2324 | checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" 2325 | 2326 | [[package]] 2327 | name = "wasi-common" 2328 | version = "23.0.1" 2329 | source = "registry+https://github.com/rust-lang/crates.io-index" 2330 | checksum = "e25c9f64184fa9950336db9bd72ae8dae28134f24986257ad0d5d7eea075feb5" 2331 | dependencies = [ 2332 | "anyhow", 2333 | "bitflags 2.4.1", 2334 | "cap-fs-ext", 2335 | "cap-rand", 2336 | "cap-std", 2337 | "cap-time-ext", 2338 | "fs-set-times", 2339 | "io-extras", 2340 | "io-lifetimes", 2341 | "log", 2342 | "once_cell", 2343 | "rustix", 2344 | "system-interface", 2345 | "thiserror", 2346 | "tracing", 2347 | "wasmtime", 2348 | "wiggle", 2349 | "windows-sys 0.52.0", 2350 | ] 2351 | 2352 | [[package]] 2353 | name = "wasm-bindgen" 2354 | version = "0.2.89" 2355 | source = "registry+https://github.com/rust-lang/crates.io-index" 2356 | checksum = "0ed0d4f68a3015cc185aff4db9506a015f4b96f95303897bfa23f846db54064e" 2357 | dependencies = [ 2358 | "cfg-if", 2359 | "wasm-bindgen-macro", 2360 | ] 2361 | 2362 | [[package]] 2363 | name = "wasm-bindgen-backend" 2364 | version = "0.2.89" 2365 | source = "registry+https://github.com/rust-lang/crates.io-index" 2366 | checksum = "1b56f625e64f3a1084ded111c4d5f477df9f8c92df113852fa5a374dbda78826" 2367 | dependencies = [ 2368 | "bumpalo", 2369 | "log", 2370 | "once_cell", 2371 | "proc-macro2", 2372 | "quote", 2373 | "syn", 2374 | "wasm-bindgen-shared", 2375 | ] 2376 | 2377 | [[package]] 2378 | name = "wasm-bindgen-macro" 2379 | version = "0.2.89" 2380 | source = "registry+https://github.com/rust-lang/crates.io-index" 2381 | checksum = "0162dbf37223cd2afce98f3d0785506dcb8d266223983e4b5b525859e6e182b2" 2382 | dependencies = [ 2383 | "quote", 2384 | "wasm-bindgen-macro-support", 2385 | ] 2386 | 2387 | [[package]] 2388 | name = "wasm-bindgen-macro-support" 2389 | version = "0.2.89" 2390 | source = "registry+https://github.com/rust-lang/crates.io-index" 2391 | checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283" 2392 | dependencies = [ 2393 | "proc-macro2", 2394 | "quote", 2395 | "syn", 2396 | "wasm-bindgen-backend", 2397 | "wasm-bindgen-shared", 2398 | ] 2399 | 2400 | [[package]] 2401 | name = "wasm-bindgen-shared" 2402 | version = "0.2.89" 2403 | source = "registry+https://github.com/rust-lang/crates.io-index" 2404 | checksum = "7ab9b36309365056cd639da3134bf87fa8f3d86008abf99e612384a6eecd459f" 2405 | 2406 | [[package]] 2407 | name = "wasm-encoder" 2408 | version = "0.212.0" 2409 | source = "registry+https://github.com/rust-lang/crates.io-index" 2410 | checksum = "501940df4418b8929eb6d52f1aade1fdd15a5b86c92453cb696e3c906bd3fc33" 2411 | dependencies = [ 2412 | "leb128", 2413 | ] 2414 | 2415 | [[package]] 2416 | name = "wasm-encoder" 2417 | version = "0.214.0" 2418 | source = "registry+https://github.com/rust-lang/crates.io-index" 2419 | checksum = "ff694f02a8d7a50b6922b197ae03883fbf18cdb2ae9fbee7b6148456f5f44041" 2420 | dependencies = [ 2421 | "leb128", 2422 | ] 2423 | 2424 | [[package]] 2425 | name = "wasmparser" 2426 | version = "0.212.0" 2427 | source = "registry+https://github.com/rust-lang/crates.io-index" 2428 | checksum = "8d28bc49ba1e5c5b61ffa7a2eace10820443c4b7d1c0b144109261d14570fdf8" 2429 | dependencies = [ 2430 | "ahash", 2431 | "bitflags 2.4.1", 2432 | "hashbrown 0.14.3", 2433 | "indexmap", 2434 | "semver", 2435 | "serde", 2436 | ] 2437 | 2438 | [[package]] 2439 | name = "wasmprinter" 2440 | version = "0.212.0" 2441 | source = "registry+https://github.com/rust-lang/crates.io-index" 2442 | checksum = "dfac65326cc561112af88c3028f6dfdb140acff67ede33a8e86be2dc6b8956f7" 2443 | dependencies = [ 2444 | "anyhow", 2445 | "termcolor", 2446 | "wasmparser", 2447 | ] 2448 | 2449 | [[package]] 2450 | name = "wasmtime" 2451 | version = "23.0.1" 2452 | source = "registry+https://github.com/rust-lang/crates.io-index" 2453 | checksum = "8945e69ec96e5d36cbe1aa2e88e28f988562dd3b5133578c44aae20ea2bcdb40" 2454 | dependencies = [ 2455 | "addr2line", 2456 | "anyhow", 2457 | "async-trait", 2458 | "bitflags 2.4.1", 2459 | "bumpalo", 2460 | "cc", 2461 | "cfg-if", 2462 | "encoding_rs", 2463 | "fxprof-processed-profile", 2464 | "gimli", 2465 | "hashbrown 0.14.3", 2466 | "indexmap", 2467 | "ittapi", 2468 | "libc", 2469 | "libm", 2470 | "log", 2471 | "mach2", 2472 | "memfd", 2473 | "object 0.36.2", 2474 | "once_cell", 2475 | "paste", 2476 | "postcard", 2477 | "psm", 2478 | "rayon", 2479 | "rustix", 2480 | "semver", 2481 | "serde", 2482 | "serde_derive", 2483 | "serde_json", 2484 | "smallvec", 2485 | "sptr", 2486 | "target-lexicon", 2487 | "wasm-encoder 0.212.0", 2488 | "wasmparser", 2489 | "wasmtime-asm-macros", 2490 | "wasmtime-cache", 2491 | "wasmtime-component-macro", 2492 | "wasmtime-component-util", 2493 | "wasmtime-cranelift", 2494 | "wasmtime-environ", 2495 | "wasmtime-fiber", 2496 | "wasmtime-jit-debug", 2497 | "wasmtime-jit-icache-coherence", 2498 | "wasmtime-slab", 2499 | "wasmtime-versioned-export-macros", 2500 | "wasmtime-winch", 2501 | "wat", 2502 | "windows-sys 0.52.0", 2503 | ] 2504 | 2505 | [[package]] 2506 | name = "wasmtime-asm-macros" 2507 | version = "23.0.1" 2508 | source = "registry+https://github.com/rust-lang/crates.io-index" 2509 | checksum = "964c3b3342547a51e0d2702eae3a2d2be215d16b55a14e2e786b11c4931b7f08" 2510 | dependencies = [ 2511 | "cfg-if", 2512 | ] 2513 | 2514 | [[package]] 2515 | name = "wasmtime-cache" 2516 | version = "23.0.1" 2517 | source = "registry+https://github.com/rust-lang/crates.io-index" 2518 | checksum = "ba2577db54531c36d875a89c5baf92dd860dd0cc256063ba710f28f36c4e9148" 2519 | dependencies = [ 2520 | "anyhow", 2521 | "base64", 2522 | "directories-next", 2523 | "log", 2524 | "postcard", 2525 | "rustix", 2526 | "serde", 2527 | "serde_derive", 2528 | "sha2", 2529 | "toml", 2530 | "windows-sys 0.52.0", 2531 | "zstd", 2532 | ] 2533 | 2534 | [[package]] 2535 | name = "wasmtime-component-macro" 2536 | version = "23.0.1" 2537 | source = "registry+https://github.com/rust-lang/crates.io-index" 2538 | checksum = "0e9a60f3dfc8a825214be6e3e8e4fab280ea9d46ea2f4db11d958e754be021ae" 2539 | dependencies = [ 2540 | "anyhow", 2541 | "proc-macro2", 2542 | "quote", 2543 | "syn", 2544 | "wasmtime-component-util", 2545 | "wasmtime-wit-bindgen", 2546 | "wit-parser", 2547 | ] 2548 | 2549 | [[package]] 2550 | name = "wasmtime-component-util" 2551 | version = "23.0.1" 2552 | source = "registry+https://github.com/rust-lang/crates.io-index" 2553 | checksum = "2bd9555175ad59d13fd353c2a6d9bc92f47f3496fc2b92e84eaa9e6edf048f3c" 2554 | 2555 | [[package]] 2556 | name = "wasmtime-cranelift" 2557 | version = "23.0.1" 2558 | source = "registry+https://github.com/rust-lang/crates.io-index" 2559 | checksum = "b7ab12460e903933b1122d0c7ca5eb1a6160574870a5b110891a4cc96ef6ec3a" 2560 | dependencies = [ 2561 | "anyhow", 2562 | "cfg-if", 2563 | "cranelift-codegen", 2564 | "cranelift-control", 2565 | "cranelift-entity", 2566 | "cranelift-frontend", 2567 | "cranelift-native", 2568 | "cranelift-wasm", 2569 | "gimli", 2570 | "log", 2571 | "object 0.36.2", 2572 | "target-lexicon", 2573 | "thiserror", 2574 | "wasmparser", 2575 | "wasmtime-environ", 2576 | "wasmtime-versioned-export-macros", 2577 | ] 2578 | 2579 | [[package]] 2580 | name = "wasmtime-environ" 2581 | version = "23.0.1" 2582 | source = "registry+https://github.com/rust-lang/crates.io-index" 2583 | checksum = "9e52faba13550fed76d5ffe75ec7cada73109b9324c4dabcaf18b3165107010d" 2584 | dependencies = [ 2585 | "anyhow", 2586 | "cpp_demangle", 2587 | "cranelift-bitset", 2588 | "cranelift-entity", 2589 | "gimli", 2590 | "indexmap", 2591 | "log", 2592 | "object 0.36.2", 2593 | "postcard", 2594 | "rustc-demangle", 2595 | "semver", 2596 | "serde", 2597 | "serde_derive", 2598 | "target-lexicon", 2599 | "wasm-encoder 0.212.0", 2600 | "wasmparser", 2601 | "wasmprinter", 2602 | "wasmtime-component-util", 2603 | "wasmtime-types", 2604 | ] 2605 | 2606 | [[package]] 2607 | name = "wasmtime-fiber" 2608 | version = "23.0.1" 2609 | source = "registry+https://github.com/rust-lang/crates.io-index" 2610 | checksum = "9ad6a540bc919350909817c3d72383007dd9386d60b74d0d728761284627feb1" 2611 | dependencies = [ 2612 | "anyhow", 2613 | "cc", 2614 | "cfg-if", 2615 | "rustix", 2616 | "wasmtime-asm-macros", 2617 | "wasmtime-versioned-export-macros", 2618 | "windows-sys 0.52.0", 2619 | ] 2620 | 2621 | [[package]] 2622 | name = "wasmtime-jit-debug" 2623 | version = "23.0.1" 2624 | source = "registry+https://github.com/rust-lang/crates.io-index" 2625 | checksum = "f71632cb3d01bc456b010689c554caf0f36e9040ffd357f097fdb8d42d09f710" 2626 | dependencies = [ 2627 | "object 0.36.2", 2628 | "once_cell", 2629 | "rustix", 2630 | "wasmtime-versioned-export-macros", 2631 | ] 2632 | 2633 | [[package]] 2634 | name = "wasmtime-jit-icache-coherence" 2635 | version = "23.0.1" 2636 | source = "registry+https://github.com/rust-lang/crates.io-index" 2637 | checksum = "7fddf3e2980fb1d123d1fcac55189e417fdd3dba4f62139b5a0a1f9efe5669d5" 2638 | dependencies = [ 2639 | "anyhow", 2640 | "cfg-if", 2641 | "libc", 2642 | "windows-sys 0.52.0", 2643 | ] 2644 | 2645 | [[package]] 2646 | name = "wasmtime-slab" 2647 | version = "23.0.1" 2648 | source = "registry+https://github.com/rust-lang/crates.io-index" 2649 | checksum = "f3ac25f8f80a3c5cda4ea68472057b23fa309956ae9784c0f1347439e624840e" 2650 | 2651 | [[package]] 2652 | name = "wasmtime-types" 2653 | version = "23.0.1" 2654 | source = "registry+https://github.com/rust-lang/crates.io-index" 2655 | checksum = "44a0fba5f60b030c635abafdcaf2e9ad883163676bd02a0f0ebaed9393453f28" 2656 | dependencies = [ 2657 | "anyhow", 2658 | "cranelift-entity", 2659 | "serde", 2660 | "serde_derive", 2661 | "smallvec", 2662 | "wasmparser", 2663 | ] 2664 | 2665 | [[package]] 2666 | name = "wasmtime-versioned-export-macros" 2667 | version = "23.0.1" 2668 | source = "registry+https://github.com/rust-lang/crates.io-index" 2669 | checksum = "85b40c6d9c8f56ea0cbeacb80f40075a91687163b693b7cda39b48efe3c974d2" 2670 | dependencies = [ 2671 | "proc-macro2", 2672 | "quote", 2673 | "syn", 2674 | ] 2675 | 2676 | [[package]] 2677 | name = "wasmtime-wasi" 2678 | version = "23.0.1" 2679 | source = "registry+https://github.com/rust-lang/crates.io-index" 2680 | checksum = "5a58bb8744f2e76c93e3bfb559646be80c1ebe1191b6e426f2d1b4571ad2a4c7" 2681 | dependencies = [ 2682 | "anyhow", 2683 | "async-trait", 2684 | "bitflags 2.4.1", 2685 | "bytes", 2686 | "cap-fs-ext", 2687 | "cap-net-ext", 2688 | "cap-rand", 2689 | "cap-std", 2690 | "cap-time-ext", 2691 | "fs-set-times", 2692 | "futures", 2693 | "io-extras", 2694 | "io-lifetimes", 2695 | "once_cell", 2696 | "rustix", 2697 | "system-interface", 2698 | "thiserror", 2699 | "tokio", 2700 | "tracing", 2701 | "url", 2702 | "wasmtime", 2703 | "wiggle", 2704 | "windows-sys 0.52.0", 2705 | ] 2706 | 2707 | [[package]] 2708 | name = "wasmtime-winch" 2709 | version = "23.0.1" 2710 | source = "registry+https://github.com/rust-lang/crates.io-index" 2711 | checksum = "0027b71a418208a21c46988393ceda01dc64842d1b3a601ca0517da270c317b5" 2712 | dependencies = [ 2713 | "anyhow", 2714 | "cranelift-codegen", 2715 | "gimli", 2716 | "object 0.36.2", 2717 | "target-lexicon", 2718 | "wasmparser", 2719 | "wasmtime-cranelift", 2720 | "wasmtime-environ", 2721 | "winch-codegen", 2722 | ] 2723 | 2724 | [[package]] 2725 | name = "wasmtime-wit-bindgen" 2726 | version = "23.0.1" 2727 | source = "registry+https://github.com/rust-lang/crates.io-index" 2728 | checksum = "8cec1424f842d187b8244284e565f71b77bef8993452e8524f71216172978ac8" 2729 | dependencies = [ 2730 | "anyhow", 2731 | "heck 0.4.1", 2732 | "indexmap", 2733 | "wit-parser", 2734 | ] 2735 | 2736 | [[package]] 2737 | name = "wast" 2738 | version = "35.0.2" 2739 | source = "registry+https://github.com/rust-lang/crates.io-index" 2740 | checksum = "2ef140f1b49946586078353a453a1d28ba90adfc54dde75710bc1931de204d68" 2741 | dependencies = [ 2742 | "leb128", 2743 | ] 2744 | 2745 | [[package]] 2746 | name = "wast" 2747 | version = "214.0.0" 2748 | source = "registry+https://github.com/rust-lang/crates.io-index" 2749 | checksum = "694bcdb24c49c8709bd8713768b71301a11e823923eee355d530f1d8d0a7f8e9" 2750 | dependencies = [ 2751 | "bumpalo", 2752 | "leb128", 2753 | "memchr", 2754 | "unicode-width", 2755 | "wasm-encoder 0.214.0", 2756 | ] 2757 | 2758 | [[package]] 2759 | name = "wat" 2760 | version = "1.214.0" 2761 | source = "registry+https://github.com/rust-lang/crates.io-index" 2762 | checksum = "347249eb56773fa728df2656cfe3a8c19437ded61a922a0b5e0839d9790e278e" 2763 | dependencies = [ 2764 | "wast 214.0.0", 2765 | ] 2766 | 2767 | [[package]] 2768 | name = "web-sys" 2769 | version = "0.3.66" 2770 | source = "registry+https://github.com/rust-lang/crates.io-index" 2771 | checksum = "50c24a44ec86bb68fbecd1b3efed7e85ea5621b39b35ef2766b66cd984f8010f" 2772 | dependencies = [ 2773 | "js-sys", 2774 | "wasm-bindgen", 2775 | ] 2776 | 2777 | [[package]] 2778 | name = "which" 2779 | version = "4.4.2" 2780 | source = "registry+https://github.com/rust-lang/crates.io-index" 2781 | checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" 2782 | dependencies = [ 2783 | "either", 2784 | "home", 2785 | "once_cell", 2786 | "rustix", 2787 | ] 2788 | 2789 | [[package]] 2790 | name = "wiggle" 2791 | version = "23.0.1" 2792 | source = "registry+https://github.com/rust-lang/crates.io-index" 2793 | checksum = "4e5319ed83c2ac543c5f69e77b3548020ac1c1cc1f590ad627c77ed4d827a811" 2794 | dependencies = [ 2795 | "anyhow", 2796 | "async-trait", 2797 | "bitflags 2.4.1", 2798 | "thiserror", 2799 | "tracing", 2800 | "wasmtime", 2801 | "wiggle-macro", 2802 | ] 2803 | 2804 | [[package]] 2805 | name = "wiggle-generate" 2806 | version = "23.0.1" 2807 | source = "registry+https://github.com/rust-lang/crates.io-index" 2808 | checksum = "fe9a96d7bf758f59a0cb086d94ae24269cb7f1ffd3c24058871769884e8e9026" 2809 | dependencies = [ 2810 | "anyhow", 2811 | "heck 0.4.1", 2812 | "proc-macro2", 2813 | "quote", 2814 | "shellexpand", 2815 | "syn", 2816 | "witx", 2817 | ] 2818 | 2819 | [[package]] 2820 | name = "wiggle-macro" 2821 | version = "23.0.1" 2822 | source = "registry+https://github.com/rust-lang/crates.io-index" 2823 | checksum = "caa70aa74de29f1438f083e39005d854812c72c48d876060e9e6df9686fb677b" 2824 | dependencies = [ 2825 | "proc-macro2", 2826 | "quote", 2827 | "syn", 2828 | "wiggle-generate", 2829 | ] 2830 | 2831 | [[package]] 2832 | name = "winapi" 2833 | version = "0.3.9" 2834 | source = "registry+https://github.com/rust-lang/crates.io-index" 2835 | checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" 2836 | dependencies = [ 2837 | "winapi-i686-pc-windows-gnu", 2838 | "winapi-x86_64-pc-windows-gnu", 2839 | ] 2840 | 2841 | [[package]] 2842 | name = "winapi-i686-pc-windows-gnu" 2843 | version = "0.4.0" 2844 | source = "registry+https://github.com/rust-lang/crates.io-index" 2845 | checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" 2846 | 2847 | [[package]] 2848 | name = "winapi-util" 2849 | version = "0.1.6" 2850 | source = "registry+https://github.com/rust-lang/crates.io-index" 2851 | checksum = "f29e6f9198ba0d26b4c9f07dbe6f9ed633e1f3d5b8b414090084349e46a52596" 2852 | dependencies = [ 2853 | "winapi", 2854 | ] 2855 | 2856 | [[package]] 2857 | name = "winapi-x86_64-pc-windows-gnu" 2858 | version = "0.4.0" 2859 | source = "registry+https://github.com/rust-lang/crates.io-index" 2860 | checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" 2861 | 2862 | [[package]] 2863 | name = "winch-codegen" 2864 | version = "0.21.1" 2865 | source = "registry+https://github.com/rust-lang/crates.io-index" 2866 | checksum = "56a6aa28dbe4633a9934f27f18e262fd4886c02be3c6de0ee4ad3a1cb32a7758" 2867 | dependencies = [ 2868 | "anyhow", 2869 | "cranelift-codegen", 2870 | "gimli", 2871 | "regalloc2", 2872 | "smallvec", 2873 | "target-lexicon", 2874 | "wasmparser", 2875 | "wasmtime-cranelift", 2876 | "wasmtime-environ", 2877 | ] 2878 | 2879 | [[package]] 2880 | name = "windows-core" 2881 | version = "0.52.0" 2882 | source = "registry+https://github.com/rust-lang/crates.io-index" 2883 | checksum = "33ab640c8d7e35bf8ba19b884ba838ceb4fba93a4e8c65a9059d08afcfc683d9" 2884 | dependencies = [ 2885 | "windows-targets 0.52.0", 2886 | ] 2887 | 2888 | [[package]] 2889 | name = "windows-sys" 2890 | version = "0.48.0" 2891 | source = "registry+https://github.com/rust-lang/crates.io-index" 2892 | checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" 2893 | dependencies = [ 2894 | "windows-targets 0.48.5", 2895 | ] 2896 | 2897 | [[package]] 2898 | name = "windows-sys" 2899 | version = "0.52.0" 2900 | source = "registry+https://github.com/rust-lang/crates.io-index" 2901 | checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" 2902 | dependencies = [ 2903 | "windows-targets 0.52.0", 2904 | ] 2905 | 2906 | [[package]] 2907 | name = "windows-targets" 2908 | version = "0.48.5" 2909 | source = "registry+https://github.com/rust-lang/crates.io-index" 2910 | checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" 2911 | dependencies = [ 2912 | "windows_aarch64_gnullvm 0.48.5", 2913 | "windows_aarch64_msvc 0.48.5", 2914 | "windows_i686_gnu 0.48.5", 2915 | "windows_i686_msvc 0.48.5", 2916 | "windows_x86_64_gnu 0.48.5", 2917 | "windows_x86_64_gnullvm 0.48.5", 2918 | "windows_x86_64_msvc 0.48.5", 2919 | ] 2920 | 2921 | [[package]] 2922 | name = "windows-targets" 2923 | version = "0.52.0" 2924 | source = "registry+https://github.com/rust-lang/crates.io-index" 2925 | checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" 2926 | dependencies = [ 2927 | "windows_aarch64_gnullvm 0.52.0", 2928 | "windows_aarch64_msvc 0.52.0", 2929 | "windows_i686_gnu 0.52.0", 2930 | "windows_i686_msvc 0.52.0", 2931 | "windows_x86_64_gnu 0.52.0", 2932 | "windows_x86_64_gnullvm 0.52.0", 2933 | "windows_x86_64_msvc 0.52.0", 2934 | ] 2935 | 2936 | [[package]] 2937 | name = "windows_aarch64_gnullvm" 2938 | version = "0.48.5" 2939 | source = "registry+https://github.com/rust-lang/crates.io-index" 2940 | checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" 2941 | 2942 | [[package]] 2943 | name = "windows_aarch64_gnullvm" 2944 | version = "0.52.0" 2945 | source = "registry+https://github.com/rust-lang/crates.io-index" 2946 | checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" 2947 | 2948 | [[package]] 2949 | name = "windows_aarch64_msvc" 2950 | version = "0.48.5" 2951 | source = "registry+https://github.com/rust-lang/crates.io-index" 2952 | checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" 2953 | 2954 | [[package]] 2955 | name = "windows_aarch64_msvc" 2956 | version = "0.52.0" 2957 | source = "registry+https://github.com/rust-lang/crates.io-index" 2958 | checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" 2959 | 2960 | [[package]] 2961 | name = "windows_i686_gnu" 2962 | version = "0.48.5" 2963 | source = "registry+https://github.com/rust-lang/crates.io-index" 2964 | checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" 2965 | 2966 | [[package]] 2967 | name = "windows_i686_gnu" 2968 | version = "0.52.0" 2969 | source = "registry+https://github.com/rust-lang/crates.io-index" 2970 | checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" 2971 | 2972 | [[package]] 2973 | name = "windows_i686_msvc" 2974 | version = "0.48.5" 2975 | source = "registry+https://github.com/rust-lang/crates.io-index" 2976 | checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" 2977 | 2978 | [[package]] 2979 | name = "windows_i686_msvc" 2980 | version = "0.52.0" 2981 | source = "registry+https://github.com/rust-lang/crates.io-index" 2982 | checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" 2983 | 2984 | [[package]] 2985 | name = "windows_x86_64_gnu" 2986 | version = "0.48.5" 2987 | source = "registry+https://github.com/rust-lang/crates.io-index" 2988 | checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" 2989 | 2990 | [[package]] 2991 | name = "windows_x86_64_gnu" 2992 | version = "0.52.0" 2993 | source = "registry+https://github.com/rust-lang/crates.io-index" 2994 | checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" 2995 | 2996 | [[package]] 2997 | name = "windows_x86_64_gnullvm" 2998 | version = "0.48.5" 2999 | source = "registry+https://github.com/rust-lang/crates.io-index" 3000 | checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" 3001 | 3002 | [[package]] 3003 | name = "windows_x86_64_gnullvm" 3004 | version = "0.52.0" 3005 | source = "registry+https://github.com/rust-lang/crates.io-index" 3006 | checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" 3007 | 3008 | [[package]] 3009 | name = "windows_x86_64_msvc" 3010 | version = "0.48.5" 3011 | source = "registry+https://github.com/rust-lang/crates.io-index" 3012 | checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" 3013 | 3014 | [[package]] 3015 | name = "windows_x86_64_msvc" 3016 | version = "0.52.0" 3017 | source = "registry+https://github.com/rust-lang/crates.io-index" 3018 | checksum = "dff9641d1cd4be8d1a070daf9e3773c5f67e78b4d9d42263020c057706765c04" 3019 | 3020 | [[package]] 3021 | name = "winnow" 3022 | version = "0.6.16" 3023 | source = "registry+https://github.com/rust-lang/crates.io-index" 3024 | checksum = "b480ae9340fc261e6be3e95a1ba86d54ae3f9171132a73ce8d4bbaf68339507c" 3025 | dependencies = [ 3026 | "memchr", 3027 | ] 3028 | 3029 | [[package]] 3030 | name = "winx" 3031 | version = "0.36.3" 3032 | source = "registry+https://github.com/rust-lang/crates.io-index" 3033 | checksum = "f9643b83820c0cd246ecabe5fa454dd04ba4fa67996369466d0747472d337346" 3034 | dependencies = [ 3035 | "bitflags 2.4.1", 3036 | "windows-sys 0.52.0", 3037 | ] 3038 | 3039 | [[package]] 3040 | name = "wit-parser" 3041 | version = "0.212.0" 3042 | source = "registry+https://github.com/rust-lang/crates.io-index" 3043 | checksum = "ceeb0424aa8679f3fcf2d6e3cfa381f3d6fa6179976a2c05a6249dd2bb426716" 3044 | dependencies = [ 3045 | "anyhow", 3046 | "id-arena", 3047 | "indexmap", 3048 | "log", 3049 | "semver", 3050 | "serde", 3051 | "serde_derive", 3052 | "serde_json", 3053 | "unicode-xid", 3054 | "wasmparser", 3055 | ] 3056 | 3057 | [[package]] 3058 | name = "witx" 3059 | version = "0.9.1" 3060 | source = "registry+https://github.com/rust-lang/crates.io-index" 3061 | checksum = "e366f27a5cabcddb2706a78296a40b8fcc451e1a6aba2fc1d94b4a01bdaaef4b" 3062 | dependencies = [ 3063 | "anyhow", 3064 | "log", 3065 | "thiserror", 3066 | "wast 35.0.2", 3067 | ] 3068 | 3069 | [[package]] 3070 | name = "zerocopy" 3071 | version = "0.7.31" 3072 | source = "registry+https://github.com/rust-lang/crates.io-index" 3073 | checksum = "1c4061bedbb353041c12f413700357bec76df2c7e2ca8e4df8bac24c6bf68e3d" 3074 | dependencies = [ 3075 | "zerocopy-derive", 3076 | ] 3077 | 3078 | [[package]] 3079 | name = "zerocopy-derive" 3080 | version = "0.7.31" 3081 | source = "registry+https://github.com/rust-lang/crates.io-index" 3082 | checksum = "b3c129550b3e6de3fd0ba67ba5c81818f9805e58b8d7fee80a3a59d2c9fc601a" 3083 | dependencies = [ 3084 | "proc-macro2", 3085 | "quote", 3086 | "syn", 3087 | ] 3088 | 3089 | [[package]] 3090 | name = "zstd" 3091 | version = "0.13.2" 3092 | source = "registry+https://github.com/rust-lang/crates.io-index" 3093 | checksum = "fcf2b778a664581e31e389454a7072dab1647606d44f7feea22cd5abb9c9f3f9" 3094 | dependencies = [ 3095 | "zstd-safe", 3096 | ] 3097 | 3098 | [[package]] 3099 | name = "zstd-safe" 3100 | version = "7.2.0" 3101 | source = "registry+https://github.com/rust-lang/crates.io-index" 3102 | checksum = "fa556e971e7b568dc775c136fc9de8c779b1c2fc3a63defaafadffdbd3181afa" 3103 | dependencies = [ 3104 | "zstd-sys", 3105 | ] 3106 | 3107 | [[package]] 3108 | name = "zstd-sys" 3109 | version = "2.0.12+zstd.1.5.6" 3110 | source = "registry+https://github.com/rust-lang/crates.io-index" 3111 | checksum = "0a4e40c320c3cb459d9a9ff6de98cff88f4751ee9275d140e2be94a2b74e4c13" 3112 | dependencies = [ 3113 | "cc", 3114 | "pkg-config", 3115 | ] 3116 | --------------------------------------------------------------------------------