Migrate most of wasmtime from lazy_static to once_cell (#4368)

* Update tracing-core to a version which doesn't depend on lazy-static.

* Update crossbeam-utils to a version that doesn't depend on lazy-static.

* Update crossbeam-epoch to a version that doesn't depend on lazy-static.

* Update clap to a version that doesn't depend on lazy-static.

* Convert Wasmtime's own use of lazy_static to once_cell.

* Make `GDB_REGISTRATION`'s comment a doc comment.

* Fix compilation on Windows.
This commit is contained in:
Dan Gohman
2022-07-05 10:52:48 -07:00
committed by GitHub
parent d9e0e6a6a9
commit 371ae80ac3
25 changed files with 123 additions and 138 deletions

53
Cargo.lock generated
View File

@@ -404,16 +404,16 @@ dependencies = [
[[package]]
name = "clap"
version = "3.1.15"
version = "3.2.8"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "85a35a599b11c089a7f49105658d089b8f2cf0882993c17daf6de15285c2c35d"
checksum = "190814073e85d238f31ff738fcb0bf6910cedeb73376c87cd69291028966fd83"
dependencies = [
"atty",
"bitflags",
"clap_derive",
"clap_lex",
"indexmap",
"lazy_static",
"once_cell",
"strsim",
"termcolor",
"textwrap 0.15.0",
@@ -421,9 +421,9 @@ dependencies = [
[[package]]
name = "clap_derive"
version = "3.1.7"
version = "3.2.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3aab4734e083b809aaf5794e14e756d1c798d2c69c7f7de7a09a2f5214993c1"
checksum = "759bf187376e1afa7b85b959e6a664a3e7a95203415dba952ad19139e798f902"
dependencies = [
"heck",
"proc-macro-error",
@@ -434,9 +434,9 @@ dependencies = [
[[package]]
name = "clap_lex"
version = "0.2.0"
version = "0.2.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a37c35f1112dad5e6e0b1adaff798507497a18fceeb30cceb3bae7d1427b9213"
checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5"
dependencies = [
"os_str_bytes",
]
@@ -688,7 +688,7 @@ dependencies = [
name = "cranelift-serde"
version = "0.87.0"
dependencies = [
"clap 3.1.15",
"clap 3.2.8",
"cranelift-codegen",
"cranelift-reader",
"serde_json",
@@ -701,7 +701,7 @@ dependencies = [
"anyhow",
"capstone",
"cfg-if",
"clap 3.1.15",
"clap 3.2.8",
"cranelift",
"cranelift-codegen",
"cranelift-entity",
@@ -814,26 +814,26 @@ dependencies = [
[[package]]
name = "crossbeam-epoch"
version = "0.9.8"
version = "0.9.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1145cf131a2c6ba0615079ab6a638f7e1973ac9c2634fcbeaaad6114246efe8c"
checksum = "07db9d94cbd326813772c968ccd25999e5f8ae22f4f8d1b11effa37ef6ce281d"
dependencies = [
"autocfg 1.1.0",
"cfg-if",
"crossbeam-utils",
"lazy_static",
"memoffset",
"once_cell",
"scopeguard",
]
[[package]]
name = "crossbeam-utils"
version = "0.8.8"
version = "0.8.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0bf124c720b7686e3c2663cf54062ab0f68a88af2fb6a030e87e30bf721fcb38"
checksum = "7d82ee10ce34d7bc12c2122495e7593a9c41347ecdd64185af4ecf72cb1a7f83"
dependencies = [
"cfg-if",
"lazy_static",
"once_cell",
]
[[package]]
@@ -1467,7 +1467,7 @@ dependencies = [
name = "islec"
version = "0.1.0"
dependencies = [
"clap 3.1.15",
"clap 3.2.8",
"cranelift-isle",
"env_logger 0.9.0",
"miette",
@@ -2945,11 +2945,11 @@ dependencies = [
[[package]]
name = "tracing-core"
version = "0.1.26"
version = "0.1.28"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f54c8ca710e81886d498c2fd3331b56c93aa248d49de2222ad2742247c60072f"
checksum = "7b7358be39f2f274f322d2aaed611acc57f382e8eb1e5b48cb9ae30933495ce7"
dependencies = [
"lazy_static",
"once_cell",
"valuable",
]
@@ -3101,7 +3101,7 @@ dependencies = [
"io-extras",
"io-lifetimes",
"is-terminal",
"lazy_static",
"once_cell",
"rustix",
"system-interface",
"tempfile",
@@ -3164,7 +3164,6 @@ dependencies = [
"cap-tempfile",
"io-extras",
"io-lifetimes",
"lazy_static",
"rustix",
"tempfile",
"tokio",
@@ -3268,8 +3267,8 @@ dependencies = [
name = "wasm-spec-interpreter"
version = "0.1.0"
dependencies = [
"lazy_static",
"ocaml-interop",
"once_cell",
"wat",
]
@@ -3326,7 +3325,6 @@ dependencies = [
"bincode",
"cfg-if",
"indexmap",
"lazy_static",
"libc",
"log",
"object",
@@ -3402,9 +3400,9 @@ dependencies = [
"directories-next",
"file-per-thread-logger",
"filetime",
"lazy_static",
"log",
"more-asserts",
"once_cell",
"pretty_env_logger",
"rustix",
"serde",
@@ -3421,13 +3419,12 @@ version = "0.40.0"
dependencies = [
"anyhow",
"async-trait",
"clap 3.1.15",
"clap 3.2.8",
"component-macro-test",
"criterion",
"env_logger 0.9.0",
"filecheck",
"humantime 2.1.0",
"lazy_static",
"libc",
"listenfd",
"memchr",
@@ -3461,7 +3458,7 @@ name = "wasmtime-cli-flags"
version = "0.40.0"
dependencies = [
"anyhow",
"clap 3.1.15",
"clap 3.2.8",
"file-per-thread-logger",
"pretty_env_logger",
"rayon",
@@ -3596,8 +3593,8 @@ dependencies = [
name = "wasmtime-jit-debug"
version = "0.40.0"
dependencies = [
"lazy_static",
"object",
"once_cell",
"rustix",
]

View File

@@ -30,12 +30,12 @@ wasmtime-wast = { path = "crates/wast", version = "=0.40.0" }
wasmtime-wasi = { path = "crates/wasi", version = "0.40.0" }
wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "0.40.0", optional = true }
wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "0.40.0", optional = true }
clap = { version = "3.1.12", features = ["color", "suggestions", "derive"] }
clap = { version = "3.2.0", features = ["color", "suggestions", "derive"] }
anyhow = "1.0.19"
target-lexicon = { version = "0.12.0", default-features = false }
libc = "0.2.60"
humantime = "2.0.0"
lazy_static = "1.4.0"
once_cell = "1.12"
listenfd = "1.0.0"
[target.'cfg(unix)'.dependencies]

View File

@@ -41,7 +41,7 @@ indicatif = "0.13.0"
thiserror = "1.0.15"
walkdir = "2.2"
anyhow = "1.0.32"
clap = { version = "3.1.12", features = ["derive"] }
clap = { version = "3.2.0", features = ["derive"] }
[features]
default = ["disas", "wasm", "cranelift-codegen/all-arch", "souper-harvest"]

View File

@@ -10,4 +10,4 @@ publish = false
cranelift-isle = { version = "*", path = "../isle/", features = ["miette-errors", "logging"] }
env_logger = { version = "0.9", default-features = false }
miette = { version = "4.7.0", features = ["fancy"] }
clap = { version = "3.1.12", features = ["derive"] }
clap = { version = "3.2.0", features = ["derive"] }

View File

@@ -14,7 +14,7 @@ name = "clif-json"
path = "src/clif-json.rs"
[dependencies]
clap = { version = "3.1.12", features = ["derive"] }
clap = { version = "3.2.0", features = ["derive"] }
serde_json = "1.0.26"
cranelift-codegen = { path = "../codegen", version = "0.87.0", features = ["enable-serde"] }
cranelift-reader = { path = "../reader", version = "0.87.0" }

View File

@@ -31,7 +31,7 @@ rustix = { version = "0.35.6", features = ["process"] }
[dev-dependencies]
filetime = "0.2.7"
lazy_static = "1.3.0"
once_cell = "1.12.0"
more-asserts = "0.2.1"
pretty_env_logger = "0.4.0"
tempfile = "3"

View File

@@ -1,9 +1,7 @@
use lazy_static::lazy_static;
use once_cell::sync::Lazy;
use std::time::{Duration, SystemTime, SystemTimeError};
lazy_static! {
pub static ref NOW: SystemTime = SystemTime::now(); // no need for RefCell and set_now() for now
}
pub static NOW: Lazy<SystemTime> = Lazy::new(SystemTime::now);
#[derive(PartialOrd, PartialEq, Ord, Eq)]
pub struct SystemTimeStub(SystemTime);

View File

@@ -10,7 +10,7 @@ edition = "2021"
[dependencies]
anyhow = "1.0.19"
clap = { version = "3.1.12", features = ["color", "suggestions", "derive"] }
clap = { version = "3.2.0", features = ["color", "suggestions", "derive"] }
file-per-thread-logger = "0.1.1"
pretty_env_logger = "0.4.0"
rayon = "1.5.0"

View File

@@ -13,10 +13,10 @@ license = "Apache-2.0 WITH LLVM-exception"
# `build-libinterpret` feature set by this crate's parent).
[dependencies]
ocaml-interop = { version = "0.8", optional = true }
lazy_static = { version = "1.4", optional = true }
once_cell = { version = "1.12.0", optional = true }
[dev-dependencies]
wat = "1.0"
[features]
build-libinterpret = ["ocaml-interop", "lazy_static"]
build-libinterpret = ["ocaml-interop", "once_cell"]

View File

@@ -7,13 +7,11 @@
//! assert_eq!(results, &[Value::I32(43)]);
//! ```
use crate::Value;
use lazy_static::lazy_static;
use ocaml_interop::{OCamlRuntime, ToOCaml};
use once_cell::sync::Lazy;
use std::sync::Mutex;
lazy_static! {
static ref INTERPRET: Mutex<()> = Mutex::new(());
}
static INTERPRET: Lazy<Mutex<()>> = Lazy::new(|| Mutex::new(()));
/// Interpret the first function in the passed WebAssembly module (in Wasm form,
/// currently, not WAT), optionally with the given parameters. If no parameters

View File

@@ -11,7 +11,7 @@ readme = "README.md"
edition = "2021"
[dependencies]
lazy_static = {version = "1.3.0", optional = true }
once_cell = {version = "1.12.0", optional = true }
object = { version = "0.28.0", default-features = false, features = ["std", "read_core"], optional = true }
[target.'cfg(target_os = "linux")'.dependencies]
@@ -21,5 +21,5 @@ rustix = { version = "0.35.6", features = ["mm", "param", "time"], optional = tr
maintenance = { status = "actively-developed" }
[features]
gdb_jit_int = ["lazy_static"]
gdb_jit_int = ["once_cell"]
perf_jitdump = ["rustix", "object"]

View File

@@ -2,7 +2,7 @@
//! the __jit_debug_register_code() and __jit_debug_descriptor to register
//! or unregister generated object images with debuggers.
use lazy_static::lazy_static;
use once_cell::sync::Lazy;
use std::pin::Pin;
use std::ptr;
use std::sync::Mutex;
@@ -32,15 +32,13 @@ extern "C" {
fn __jit_debug_register_code();
}
lazy_static! {
// The process controls access to the __jit_debug_descriptor by itself --
// the GDB/LLDB accesses this structure and its data at the process startup
// and when paused in __jit_debug_register_code.
//
// The GDB_REGISTRATION lock is needed for GdbJitImageRegistration to protect
// access to the __jit_debug_descriptor within this process.
pub static ref GDB_REGISTRATION: Mutex<()> = Mutex::new(Default::default());
}
/// The process controls access to the __jit_debug_descriptor by itself --
/// the GDB/LLDB accesses this structure and its data at the process startup
/// and when paused in __jit_debug_register_code.
///
/// The GDB_REGISTRATION lock is needed for GdbJitImageRegistration to protect
/// access to the __jit_debug_descriptor within this process.
static GDB_REGISTRATION: Lazy<Mutex<()>> = Lazy::new(|| Mutex::new(Default::default()));
/// Registeration for JIT image
pub struct GdbJitImageRegistration {

View File

@@ -1,10 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
[[package]]
name = "lazy_static"
version = "1.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
version = 3
[[package]]
name = "libc"
@@ -18,6 +14,12 @@ version = "0.2.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0debeb9fcf88823ea64d64e4a815ab1643f33127d995978e099942ce38f25238"
[[package]]
name = "once_cell"
version = "1.12.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7709cef83f0c1f58f666e746a08b21e0085f7440fa6a29cc194d68aac97a4225"
[[package]]
name = "wasi"
version = "0.10.2+wasi-snapshot-preview1"
@@ -28,8 +30,8 @@ checksum = "fd6fbd9a79829dd1ad0cc20627bf1ed606756a7f77edff7b66b7064f9cb327c6"
name = "wasi-tests"
version = "0.19.0"
dependencies = [
"lazy_static",
"libc",
"more-asserts",
"once_cell",
"wasi",
]

View File

@@ -10,7 +10,7 @@ publish = false
libc = "0.2.65"
wasi = "0.10.2"
more-asserts = "0.2.1"
lazy_static = "1.4"
once_cell = "1.12.0"
# This crate is built with the wasm32-wasi target, so it's separate
# from the main Wasmtime build, so use this directive to exclude it

View File

@@ -1,9 +1,8 @@
use more_asserts::assert_gt;
pub mod config;
use once_cell::sync::Lazy;
lazy_static::lazy_static! {
pub static ref TESTCONFIG: config::TestConfig = config::TestConfig::from_env();
}
pub static TESTCONFIG: Lazy<config::TestConfig> = Lazy::new(config::TestConfig::from_env);
// The `wasi` crate version 0.9.0 and beyond, doesn't
// seem to define these constants, so we do it ourselves.

View File

@@ -29,7 +29,7 @@ is-terminal = "0.3.0"
rustix = { version = "0.35.6", features = ["fs"] }
[target.'cfg(windows)'.dependencies]
lazy_static = "1.4"
once_cell = "1.12.0"
io-extras = "0.15.0"
[target.'cfg(windows)'.dependencies.windows-sys]

View File

@@ -9,6 +9,7 @@
// taken the time to improve it. See bug #2880.
use anyhow::Context;
use once_cell::sync::Lazy;
use std::ops::Deref;
use std::sync::mpsc::{self, Receiver, RecvTimeoutError, Sender, TryRecvError};
use std::sync::Mutex;
@@ -145,9 +146,7 @@ struct StdinPoll {
notify_rx: Receiver<PollState>,
}
lazy_static::lazy_static! {
static ref STDIN_POLL: Mutex<StdinPoll> = StdinPoll::new();
}
static STDIN_POLL: Lazy<Mutex<StdinPoll>> = Lazy::new(StdinPoll::new);
impl StdinPoll {
pub fn new() -> Mutex<Self> {

View File

@@ -23,7 +23,6 @@ io-lifetimes = { version = "0.7.0", default-features = false }
rustix = { version = "0.35.6", features = ["fs"] }
[target.'cfg(windows)'.dependencies]
lazy_static = "1.4"
io-extras = "0.15.0"
[dev-dependencies]

View File

@@ -34,11 +34,10 @@ bincode = "1.2.1"
indexmap = "1.6"
paste = "1.0.3"
psm = "0.1.11"
lazy_static = "1.4"
once_cell = "1.12.0"
rayon = { version = "1.0", optional = true }
object = { version = "0.28", default-features = false, features = ['read_core', 'elf'] }
async-trait = { version = "0.1.51", optional = true }
once_cell = "1.12"
[target.'cfg(target_os = "windows")'.dependencies.windows-sys]
version = "0.36.0"

View File

@@ -3,6 +3,7 @@
#[cfg(feature = "component-model")]
use crate::component::Component;
use crate::{FrameInfo, Module};
use once_cell::sync::Lazy;
use std::{
collections::BTreeMap,
sync::{Arc, RwLock},
@@ -201,9 +202,7 @@ impl ModuleRegistry {
// it is also automatically registered with the singleton global module
// registry. When a `ModuleRegistry` is destroyed then all of its entries
// are removed from the global module registry.
lazy_static::lazy_static! {
static ref GLOBAL_MODULES: RwLock<GlobalModuleRegistry> = Default::default();
}
static GLOBAL_MODULES: Lazy<RwLock<GlobalModuleRegistry>> = Lazy::new(Default::default);
type GlobalModuleRegistry = BTreeMap<usize, (usize, TrapInfo)>;

View File

@@ -2,14 +2,14 @@
use anyhow::{bail, Context, Result};
use clap::Parser;
use once_cell::sync::Lazy;
use std::fs;
use std::path::PathBuf;
use target_lexicon::Triple;
use wasmtime::Engine;
use wasmtime_cli_flags::CommonOptions;
lazy_static::lazy_static! {
static ref AFTER_HELP: String = {
static AFTER_HELP: Lazy<String> = Lazy::new(|| {
format!(
"By default, no CPU features or presets will be enabled for the compilation.\n\
\n\
@@ -30,8 +30,7 @@ lazy_static::lazy_static! {
wasmtime compile --target x86_64-unknown-linux --cranelift-enable skylake foo.wasm\n",
crate::FLAG_EXPLANATIONS.as_str()
)
};
}
});
/// Compiles a WebAssembly module.
#[derive(Parser)]

View File

@@ -2,6 +2,7 @@
use anyhow::{anyhow, bail, Context as _, Result};
use clap::Parser;
use once_cell::sync::Lazy;
use std::fs::File;
use std::io::Read;
use std::thread;
@@ -65,11 +66,7 @@ fn parse_preloads(s: &str) -> Result<(String, PathBuf)> {
Ok((parts[0].into(), parts[1].into()))
}
lazy_static::lazy_static! {
static ref AFTER_HELP: String = {
crate::FLAG_EXPLANATIONS.to_string()
};
}
static AFTER_HELP: Lazy<String> = Lazy::new(|| crate::FLAG_EXPLANATIONS.to_string());
/// Runs a WebAssembly module
#[derive(Parser)]

View File

@@ -2,16 +2,13 @@
use anyhow::{Context as _, Result};
use clap::Parser;
use once_cell::sync::Lazy;
use std::path::PathBuf;
use wasmtime::{Engine, Store};
use wasmtime_cli_flags::CommonOptions;
use wasmtime_wast::WastContext;
lazy_static::lazy_static! {
static ref AFTER_HELP: String = {
crate::FLAG_EXPLANATIONS.to_string()
};
}
static AFTER_HELP: Lazy<String> = Lazy::new(|| crate::FLAG_EXPLANATIONS.to_string());
/// Runs a WebAssembly test script file
#[derive(Parser)]

View File

@@ -23,10 +23,10 @@
)
)]
use once_cell::sync::Lazy;
use wasmtime_cli_flags::{SUPPORTED_WASI_MODULES, SUPPORTED_WASM_FEATURES};
lazy_static::lazy_static! {
static ref FLAG_EXPLANATIONS: String = {
static FLAG_EXPLANATIONS: Lazy<String> = Lazy::new(|| {
use std::fmt::Write;
let mut s = String::new();
@@ -34,7 +34,10 @@ lazy_static::lazy_static! {
// Explain --wasm-features.
writeln!(&mut s, "Supported values for `--wasm-features`:").unwrap();
writeln!(&mut s).unwrap();
let max = SUPPORTED_WASM_FEATURES.iter().max_by_key(|(name, _)| name.len()).unwrap();
let max = SUPPORTED_WASM_FEATURES
.iter()
.max_by_key(|(name, _)| name.len())
.unwrap();
for (name, desc) in SUPPORTED_WASM_FEATURES.iter() {
writeln!(&mut s, "{:width$} {}", name, desc, width = max.0.len() + 2).unwrap();
}
@@ -43,7 +46,10 @@ lazy_static::lazy_static! {
// Explain --wasi-modules.
writeln!(&mut s, "Supported values for `--wasi-modules`:").unwrap();
writeln!(&mut s).unwrap();
let max = SUPPORTED_WASI_MODULES.iter().max_by_key(|(name, _)| name.len()).unwrap();
let max = SUPPORTED_WASI_MODULES
.iter()
.max_by_key(|(name, _)| name.len())
.unwrap();
for (name, desc) in SUPPORTED_WASI_MODULES.iter() {
writeln!(&mut s, "{:width$} {}", name, desc, width = max.0.len() + 2).unwrap();
}
@@ -52,7 +58,6 @@ lazy_static::lazy_static! {
writeln!(&mut s, "Features prefixed with '-' will be disabled.").unwrap();
s
};
}
});
pub mod commands;

View File

@@ -1,3 +1,4 @@
use once_cell::sync::Lazy;
use std::path::Path;
use std::sync::{Condvar, Mutex};
use wasmtime::{
@@ -118,9 +119,7 @@ fn feature_found(path: &Path, name: &str) -> bool {
fn lock_pooling() -> impl Drop {
const MAX_CONCURRENT_POOLING: u32 = 8;
lazy_static::lazy_static! {
static ref ACTIVE: MyState = MyState::default();
}
static ACTIVE: Lazy<MyState> = Lazy::new(MyState::default);
#[derive(Default)]
struct MyState {