Skip to content

Commit 9a95d0b

Browse files
sbernauerTechassi
andauthored
refactor: Replace lazy_static with std::sync::LazyLock (#840)
* refactor: Replace lazy_static with std::sync::LazyLock * update changelog * bump to 0.80.1 * Mention all PRs in crates/k8s-version/CHANGELOG.md * Mention Techassi Co-authored-by: Techassi <git@techassi.dev> --------- Co-authored-by: Techassi <git@techassi.dev>
1 parent a796eed commit 9a95d0b

File tree

22 files changed

+108
-88
lines changed

22 files changed

+108
-88
lines changed

.github/workflows/build.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ env:
1717
CARGO_TERM_COLOR: always
1818
CARGO_INCREMENTAL: '0'
1919
CARGO_PROFILE_DEV_DEBUG: '0'
20-
RUST_TOOLCHAIN_VERSION: "1.79.0"
20+
RUST_TOOLCHAIN_VERSION: "1.80.1"
2121
RUSTFLAGS: "-D warnings"
2222
RUSTDOCFLAGS: "-D warnings"
2323
RUST_LOG: "info"
@@ -37,7 +37,7 @@ jobs:
3737
- uses: Swatinem/rust-cache@23bce251a8cd2ffc3c1075eaa2367cf899916d84 # v2.7.3
3838
with:
3939
key: udeps
40-
- run: cargo install --locked cargo-udeps@0.1.47
40+
- run: cargo install --locked cargo-udeps@0.1.50
4141
- run: cargo udeps --all-targets
4242

4343
run_cargodeny:

.github/workflows/pr_pre-commit.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ on:
66

77
env:
88
CARGO_TERM_COLOR: always
9-
RUST_TOOLCHAIN_VERSION: "1.79.0"
9+
RUST_TOOLCHAIN_VERSION: "1.80.1"
1010

1111
jobs:
1212
pre-commit:

Cargo.lock

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,6 @@ json-patch = "2.0.0"
3232
k8s-openapi = { version = "0.22.0", default-features = false, features = ["schemars", "v1_30"] }
3333
# We use rustls instead of openssl for easier portablitly, e.g. so that we can build stackablectl without the need to vendor (build from source) openssl
3434
kube = { version = "0.93.1", default-features = false, features = ["client", "jsonpatch", "runtime", "derive", "rustls-tls"] }
35-
lazy_static = "1.5.0"
3635
opentelemetry = "0.23.0"
3736
opentelemetry_sdk = { version = "0.23.0", features = ["rt-tokio"] }
3837
opentelemetry-appender-tracing = "0.4.0"

crates/k8s-version/CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,14 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
### Changed
8+
9+
- Replace `lazy_static` with `std::cell::LazyCell` ([#827], [#835], [#840]).
10+
11+
[#827]: https://github.com/stackabletech/operator-rs/pull/827
12+
[#835]: https://github.com/stackabletech/operator-rs/pull/835
13+
[#840]: https://github.com/stackabletech/operator-rs/pull/840
14+
715
## [0.1.1] - 2024-07-10
816

917
### Changed

crates/k8s-version/Cargo.toml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ darling = ["dep:darling"]
1111

1212
[dependencies]
1313
darling = { workspace = true, optional = true }
14-
lazy_static.workspace = true
1514
regex.workspace = true
1615
snafu.workspace = true
1716

crates/k8s-version/src/group.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,14 @@
1-
use std::{fmt, ops::Deref, str::FromStr};
1+
use std::{fmt, ops::Deref, str::FromStr, sync::LazyLock};
22

3-
use lazy_static::lazy_static;
43
use regex::Regex;
54
use snafu::{ensure, Snafu};
65

76
const MAX_GROUP_LENGTH: usize = 253;
87

9-
lazy_static! {
10-
static ref API_GROUP_REGEX: Regex =
11-
Regex::new(r"^(?:(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.?)+$")
12-
.expect("failed to compile API group regex");
13-
}
8+
static API_GROUP_REGEX: LazyLock<Regex> = LazyLock::new(|| {
9+
Regex::new(r"^(?:(?:[a-z0-9][a-z0-9-]{0,61}[a-z0-9])\.?)+$")
10+
.expect("failed to compile API group regex")
11+
});
1412

1513
/// Error variants which can be encountered when creating a new [`Group`] from
1614
/// unparsed input.

crates/k8s-version/src/level.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,18 @@ use std::{
44
num::ParseIntError,
55
ops::{Add, AddAssign, Sub, SubAssign},
66
str::FromStr,
7+
sync::LazyLock,
78
};
89

9-
use lazy_static::lazy_static;
1010
use regex::Regex;
1111
use snafu::{OptionExt, ResultExt, Snafu};
1212

1313
#[cfg(feature = "darling")]
1414
use darling::FromMeta;
1515

16-
lazy_static! {
17-
static ref LEVEL_REGEX: Regex = Regex::new(r"^(?P<identifier>[a-z]+)(?P<version>\d+)$")
18-
.expect("failed to compile level regex");
19-
}
16+
static LEVEL_REGEX: LazyLock<Regex> = LazyLock::new(|| {
17+
Regex::new(r"^(?P<identifier>[a-z]+)(?P<version>\d+)$").expect("failed to compile level regex")
18+
});
2019

2120
/// Error variants which can be encountered when creating a new [`Level`] from
2221
/// unparsed input.

crates/k8s-version/src/version.rs

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
use std::{cmp::Ordering, fmt::Display, num::ParseIntError, str::FromStr};
1+
use std::{cmp::Ordering, fmt::Display, num::ParseIntError, str::FromStr, sync::LazyLock};
22

3-
use lazy_static::lazy_static;
43
use regex::Regex;
54
use snafu::{OptionExt, ResultExt, Snafu};
65

@@ -9,11 +8,10 @@ use darling::FromMeta;
98

109
use crate::{Level, ParseLevelError};
1110

12-
lazy_static! {
13-
static ref VERSION_REGEX: Regex =
14-
Regex::new(r"^v(?P<major>\d+)(?P<level>[a-z0-9][a-z0-9-]{0,60}[a-z0-9])?$")
15-
.expect("failed to compile version regex");
16-
}
11+
static VERSION_REGEX: LazyLock<Regex> = LazyLock::new(|| {
12+
Regex::new(r"^v(?P<major>\d+)(?P<level>[a-z0-9][a-z0-9-]{0,60}[a-z0-9])?$")
13+
.expect("failed to compile version regex")
14+
});
1715

1816
/// Error variants which can be encountered when creating a new [`Version`] from
1917
/// unparsed input.

crates/stackable-operator/CHANGELOG.md

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,8 @@ All notable changes to this project will be documented in this file.
44

55
## [Unreleased]
66

7+
- BREAKING: Replace `lazy_static` with `std::cell::LazyCell` (the original implementation was done in [#827] and reverted in [#835]) ([#840]).
8+
79
### Added
810

911
- `iter::reverse_if` helper ([#838]).
@@ -18,7 +20,7 @@ All notable changes to this project will be documented in this file.
1820

1921
### Changed
2022

21-
- Reverted [#827], in order to restore Rust 1.79 compatibility for now ([#835]).
23+
- Reverted [#827], in order to restore Rust 1.79 compatibility for now ([#835]), re-opened in ([#840]).
2224

2325
### Fixed
2426

@@ -32,7 +34,7 @@ All notable changes to this project will be documented in this file.
3234

3335
### Changed
3436

35-
- BREAKING: Replace `lazy_static` with `std::cell::LazyCell` ([#827]).
37+
- BREAKING: Replace `lazy_static` with `std::cell::LazyCell` ([#827], [#835], [#840]).
3638
- BREAKING: Convert `podOverrides` and `affinity` fields to take any arbitrary
3739
YAML input, rather than using the underlying schema. With this change, one of
3840
the larger CRDs, like the Druid CRD went down in size from `2.4MB` to `288K`
@@ -44,6 +46,7 @@ All notable changes to this project will be documented in this file.
4446

4547
[#821]: https://github.com/stackabletech/operator-rs/pull/821
4648
[#827]: https://github.com/stackabletech/operator-rs/pull/827
49+
[#840]: https://github.com/stackabletech/operator-rs/pull/840
4750

4851
## [0.71.0] - 2024-07-29
4952

0 commit comments

Comments
 (0)