Skip to content

Replace lazy_static with std::sync::LazyLock#306

Open
jbgriesner wants to merge 2 commits intortk-ai:masterfrom
jbgriesner:chore/replace-lazy-static-with-lazy-lock
Open

Replace lazy_static with std::sync::LazyLock#306
jbgriesner wants to merge 2 commits intortk-ai:masterfrom
jbgriesner:chore/replace-lazy-static-with-lazy-lock

Conversation

@jbgriesner
Copy link

Replaces all uses of the lazy_static crate with std::sync::LazyLock, which has been stable since Rust 1.80.

Motivation:

  • Removes one external dependency (lazy_static = "1.4")
  • Uses std

No behavior change. LazyLock initializes on first access, exactly like lazy_static. All regex patterns remain identical.

@FlorianBruniaux
Copy link
Collaborator

Hi @jbgriesner, the migration is mechanically correct across all 14 files and the motivation is solid: one fewer external dependency, aligned with the standard library since Rust 1.80.

Two things needed before merge:

  1. std::sync::LazyLock stabilized in Rust 1.80 (July 2024). Please add rust-version = "1.80" to Cargo.toml so anyone on an older toolchain gets a clear error instead of a cryptic compile failure.

  2. CI shows 0/0 checks. Could you check why the workflow isn't triggering? We need cargo fmt --all && cargo clippy --all-targets && cargo test to pass before merge.

Minor note: next_cmd.rs and playwright_cmd.rs keep the statics inside function bodies. This is valid Rust but inconsistent with every other module in the codebase after this PR. Worth moving to module level for uniformity, though it's not a blocker.

@FlorianBruniaux
Copy link
Collaborator

Hey @jbgriesner, heads up: PR #349 (TOML filter DSL) uses lazy_static\! in src/toml_filter.rs. If your LazyLock migration merges first, we'll switch to LazyLock directly — cleaner result. No action needed from you, just FYI.

jbgriesner added a commit to jbgriesner/rtk that referenced this pull request Mar 9, 2026
- Add rust-version = "1.80" to Cargo.toml: LazyLock was stabilized in
  Rust 1.80, this gives a clear error instead of cryptic compile failure
  on older toolchains
- Move LazyLock statics in next_cmd.rs and playwright_cmd.rs from
  function bodies to module level, consistent with every other module
  in the codebase
- Remove unused ROUTE_PATTERN static (dead code cleanup)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jbgriesner jbgriesner force-pushed the chore/replace-lazy-static-with-lazy-lock branch from 0cae53d to f8d090a Compare March 9, 2026 21:31
@jbgriesner
Copy link
Author

  1. CI shows 0/0 checks. Could you check why the workflow isn't triggering? We need cargo fmt --all && cargo clippy --all-targets && cargo test to pass before merge.

The 0/0 CI checks are a GitHub limitation with fork PRs: workflows run from the fork's own .github/workflows/ directory, not from the upstream repo. Since my fork doesn't replicate the upstream CI setup, no checks trigger automatically.

I've verified locally that all three gates pass: cargo fmt --all && cargo clippy --all-targets && cargo test
430 tests pass, no clippy errors.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants