diff --git a/Cargo.lock b/Cargo.lock index f4cbc45a..850e4380 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -602,9 +602,9 @@ dependencies = [ [[package]] name = "bumpalo" -version = "3.16.0" +version = "3.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "79296716171880943b8470b5f8d03aa55eb2e645a4874bdbb28adb49162e012c" +checksum = "1628fb46dfa0b37568d12e5edd512553eccf6a22a78e8bde00bb4aed84d5bdbf" [[package]] name = "byteorder" @@ -750,9 +750,9 @@ checksum = "cbd0f76e066e64fdc5631e3bb46381254deab9ef1158292f27c8c57e3bf3fe59" [[package]] name = "cmake" -version = "0.1.52" +version = "0.1.53" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c682c223677e0e5b6b7f63a64b9351844c3f1b1678a68b7ee617e30fb082620e" +checksum = "e24a03c8b52922d68a1589ad61032f2c1aa5a8158d2aa0d93c6e9534944bbad6" dependencies = [ "cc", ] @@ -1398,6 +1398,18 @@ dependencies = [ "wasi 0.11.0+wasi-snapshot-preview1", ] +[[package]] +name = "getrandom" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +dependencies = [ + "cfg-if 1.0.0", + "libc", + "wasi 0.13.3+wasi-0.2.2", + "windows-targets 0.52.6", +] + [[package]] name = "getset" version = "0.1.4" @@ -2106,9 +2118,9 @@ dependencies = [ [[package]] name = "httparse" -version = "1.9.5" +version = "1.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7d71d3574edd2771538b901e6549113b4006ece66150fb69c0fb6d9a2adae946" +checksum = "f2d708df4e7140240a16cd6ab0ab65c972d7433ab77819ea693fde9c43811e2a" [[package]] name = "httpdate" @@ -2358,9 +2370,9 @@ checksum = "d75a2a4b1b190afb6f5425f10f6a8f959d2ea0b9c2b1d79553551850539e4674" [[package]] name = "jiff" -version = "0.1.27" +version = "0.1.28" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a85348106ab244d90fe2d70faad939b71c5dad1258e5da9116e176064fc6c078" +checksum = "c607c728e28764fecde611a2764a3a5db19ae21dcec46f292244f5cc5c085a81" dependencies = [ "jiff-tzdb-platform", "log", @@ -2876,7 +2888,6 @@ dependencies = [ "const_format", "dirs2", "getset", - "lazy_static", "rand 0.8.5", "regex", "rustversion", @@ -3265,9 +3276,9 @@ dependencies = [ [[package]] name = "rustls-pki-types" -version = "1.10.1" +version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d2bf47e6ff922db3825eb750c4e2ff784c6ff8fb9e13046ef6a1d1c5401b0b37" +checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" [[package]] name = "rustls-webpki" @@ -3289,9 +3300,9 @@ checksum = "f7c45b9784283f1b2e7fb61b42047c2fd678ef0960d4f6f1eba131594cc369d4" [[package]] name = "ryu" -version = "1.0.18" +version = "1.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f3cb5ba0dc43242ce17de99c180e96db90b235b8a9fdc9543c96d2209116bd9f" +checksum = "6ea1a2d0a644769cc99faa24c3ad26b379b786fe7c36fd3c546254801650e6dd" [[package]] name = "same-file" @@ -3371,9 +3382,9 @@ dependencies = [ [[package]] name = "serde_json" -version = "1.0.137" +version = "1.0.138" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "930cfb6e6abf99298aaad7d29abbef7a9999a9a8806a40088f55f0dcec03146b" +checksum = "d434192e7da787e94a6ea7e9670b26a036d0ca41e0b7efb2676dd32bae872949" dependencies = [ "itoa", "memchr", @@ -3601,13 +3612,13 @@ dependencies = [ [[package]] name = "tempfile" -version = "3.15.0" +version = "3.16.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a8a559c81686f576e8cd0290cd2a24a2a9ad80c98b3478856500fcbd7acd704" +checksum = "38c246215d7d24f48ae091a2902398798e05d978b24315d6efbc00ede9a8bb91" dependencies = [ "cfg-if 1.0.0", "fastrand 2.3.0", - "getrandom 0.2.15", + "getrandom 0.3.1", "once_cell", "rustix", "windows-sys 0.59.0", @@ -3921,9 +3932,9 @@ checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" [[package]] name = "unicode-ident" -version = "1.0.15" +version = "1.0.16" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "11cd88e12b17c6494200a9c1b683a04fcac9573ed74cd1b62aeb2727c5592243" +checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034" [[package]] name = "unicode-normalization" @@ -4111,6 +4122,15 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" +[[package]] +name = "wasi" +version = "0.13.3+wasi-0.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +dependencies = [ + "wit-bindgen-rt", +] + [[package]] name = "wasm-bindgen" version = "0.2.100" @@ -4447,9 +4467,9 @@ checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] name = "winnow" -version = "0.6.24" +version = "0.6.25" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8d71a593cc5c42ad7876e2c1fda56f314f3754c084128833e64f1345ff8a03a" +checksum = "ad699df48212c6cc6eb4435f35500ac6fd3b9913324f938aea302022ce19d310" dependencies = [ "memchr", ] @@ -4486,6 +4506,15 @@ dependencies = [ "tokio", ] +[[package]] +name = "wit-bindgen-rt" +version = "0.33.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +dependencies = [ + "bitflags 2.8.0", +] + [[package]] name = "write16" version = "1.0.0" diff --git a/pudlib/Cargo.toml b/pudlib/Cargo.toml index a744da53..e822e464 100644 --- a/pudlib/Cargo.toml +++ b/pudlib/Cargo.toml @@ -31,7 +31,6 @@ console = "0.15.8" const_format = "0.2.34" dirs2 = "3.0.1" getset = { workspace = true } -lazy_static = { workspace = true } rand = "0.8.5" regex = { workspace = true } serde = { workspace = true } diff --git a/pudlib/src/header/mod.rs b/pudlib/src/header/mod.rs index 96600176..adabc734 100644 --- a/pudlib/src/header/mod.rs +++ b/pudlib/src/header/mod.rs @@ -81,10 +81,11 @@ fn trace(app_style: Style, prefix: &'static str) -> Result<()> { #[cfg(test)] mod test { + use std::sync::LazyLock; + use super::{from_u8, header}; use crate::log::Config as LogConfig; use console::Style; - use lazy_static::lazy_static; use regex::Regex; use tracing::Level; @@ -153,11 +154,12 @@ mod test { } } - lazy_static! { - static ref BUILD_TIMESTAMP: Regex = Regex::new(r"Timestamp \( build\)").unwrap(); - static ref BUILD_SEMVER: Regex = Regex::new(r"Semver \( rustc\)").unwrap(); - static ref GIT_BRANCH: Regex = Regex::new(r"Branch \( git\)").unwrap(); - } + static BUILD_TIMESTAMP: LazyLock = + LazyLock::new(|| Regex::new(r"Timestamp \( build\)").unwrap()); + static BUILD_SEMVER: LazyLock = + LazyLock::new(|| Regex::new(r"Semver \( rustc\)").unwrap()); + static GIT_BRANCH: LazyLock = + LazyLock::new(|| Regex::new(r"Branch \( git\)").unwrap()); #[test] fn from_u8_works() { diff --git a/pudlib/src/log/mod.rs b/pudlib/src/log/mod.rs index 0fc9a89e..098c5ab4 100644 --- a/pudlib/src/log/mod.rs +++ b/pudlib/src/log/mod.rs @@ -9,10 +9,9 @@ // Logging use anyhow::Result; -use lazy_static::lazy_static; use std::sync::{ atomic::{AtomicBool, Ordering}, - Arc, Mutex, + Arc, LazyLock, Mutex, }; use time::format_description::well_known::Iso8601; use tracing::Level; @@ -46,9 +45,8 @@ pub trait Config { fn set_level(&mut self, level: Level) -> &mut Self; } -lazy_static! { - static ref INIT_LOCK: Arc> = Arc::new(Mutex::new(AtomicBool::new(false))); -} +static INIT_LOCK: LazyLock>> = + LazyLock::new(|| Arc::new(Mutex::new(AtomicBool::new(false)))); /// Initialize tracing /// diff --git a/pudlib/src/schedule/dow.rs b/pudlib/src/schedule/dow.rs index 5fd5bf25..a06dfe03 100644 --- a/pudlib/src/schedule/dow.rs +++ b/pudlib/src/schedule/dow.rs @@ -13,15 +13,13 @@ use crate::{ utils::until_err, }; use anyhow::{anyhow, Result}; -use lazy_static::lazy_static; use regex::Regex; -use std::{collections::HashSet, fmt::Display}; +use std::{collections::HashSet, fmt::Display, sync::LazyLock}; use time::Weekday; -lazy_static! { - static ref DOW_RANGE_RE: Regex = - Regex::new(r"([a-zA-Z]{3,})\.\.([a-zA-Z]{3,})").expect("invalid day of week range regex"); -} +static DOW_RANGE_RE: LazyLock = LazyLock::new(|| { + Regex::new(r"([a-zA-Z]{3,})\.\.([a-zA-Z]{3,})").expect("invalid day of week range regex") +}); /// The day of the week for a realtime schedule #[derive(Clone, Debug, Eq, Hash, PartialEq)] diff --git a/pudlib/src/schedule/mod.rs b/pudlib/src/schedule/mod.rs index 66be6992..ab158501 100644 --- a/pudlib/src/schedule/mod.rs +++ b/pudlib/src/schedule/mod.rs @@ -21,9 +21,8 @@ use crate::{ utils::until_err, }; use anyhow::Result; -use lazy_static::lazy_static; use regex::Regex; -use std::collections::HashSet; +use std::{collections::HashSet, sync::LazyLock}; use time::OffsetDateTime; use typed_builder::TypedBuilder; @@ -31,12 +30,11 @@ pub(crate) mod dow; pub(crate) mod hms; pub(crate) mod ymd; -lazy_static! { - static ref RANGE_RE: Regex = - Regex::new(r"(\d{1,2})\.\.(\d{1,2})").expect("invalid range regex"); - static ref REP_RE: Regex = - Regex::new(r"(\d{1,2})(\.\.(\d{1,2}))?/(\d{1,2})").expect("invalid repetition regex"); -} +static RANGE_RE: LazyLock = + LazyLock::new(|| Regex::new(r"(\d{1,2})\.\.(\d{1,2})").expect("invalid range regex")); +static REP_RE: LazyLock = LazyLock::new(|| { + Regex::new(r"(\d{1,2})(\.\.(\d{1,2}))?/(\d{1,2})").expect("invalid repetition regex") +}); const MINUTELY: &str = "minutely"; const HOURLY: &str = "hourly";