diff --git a/.github/workflows/msrv.yml b/.github/workflows/msrv.yml
index e65d54c188c..9cb0c9df669 100644
--- a/.github/workflows/msrv.yml
+++ b/.github/workflows/msrv.yml
@@ -25,7 +25,7 @@ jobs:
env:
# dictated by `firefox` to support the `helix` editor, but now probably effectively be controlled by `jiff`, which also aligns with `regex`.
# IMPORTANT: adjust etc/msrv-badge.svg as well
- rust_version: 1.74.0
+ rust_version: 1.80.0
steps:
- uses: actions/checkout@v4
- uses: extractions/setup-just@v2
diff --git a/Cargo.lock b/Cargo.lock
index d2fa693c9e4..2ec9598bf55 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1231,7 +1231,6 @@ dependencies = [
"gix",
"gix-features 0.38.2",
"is-terminal",
- "once_cell",
"prodash 29.0.0",
"serde_derive",
"terminal_size",
@@ -1334,7 +1333,6 @@ dependencies = [
"gix-worktree-state",
"gix-worktree-stream",
"is_ci",
- "once_cell",
"parking_lot",
"pretty_assertions",
"prodash 29.0.0",
@@ -1532,7 +1530,6 @@ dependencies = [
"gix-ref 0.45.0",
"gix-sec 0.10.7",
"memchr",
- "once_cell",
"serde",
"smallvec",
"thiserror",
@@ -1583,7 +1580,6 @@ dependencies = [
"gix-testtools",
"gix-trace 0.1.9",
"gix-url",
- "once_cell",
"serde",
"thiserror",
]
@@ -1610,7 +1606,6 @@ dependencies = [
"gix-testtools",
"itoa",
"jiff",
- "once_cell",
"serde",
"thiserror",
]
@@ -2201,7 +2196,6 @@ dependencies = [
"gix-trace 0.1.9",
"home",
"known-folders",
- "once_cell",
"tempfile",
"thiserror",
"windows 0.58.0",
@@ -2232,7 +2226,6 @@ dependencies = [
"gix-glob 0.16.4",
"gix-path 0.10.9",
"gix-testtools",
- "once_cell",
"serial_test",
"thiserror",
]
@@ -2519,7 +2512,6 @@ dependencies = [
"document-features",
"gix-fs 0.11.2",
"libc",
- "once_cell",
"parking_lot",
"signal-hook",
"signal-hook-registry",
@@ -2559,7 +2551,6 @@ dependencies = [
"gix-worktree 0.34.1 (registry+https://github.com/rust-lang/crates.io-index)",
"io-close",
"is_ci",
- "once_cell",
"parking_lot",
"tar",
"tempfile",
@@ -2786,7 +2777,6 @@ dependencies = [
"gix-odb",
"gix-testtools",
"gix-worktree-state",
- "once_cell",
"symlink",
"walkdir",
]
diff --git a/Cargo.toml b/Cargo.toml
index 56dd00e2f0a..3543e07ff94 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -190,7 +190,6 @@ terminal_size = "0.3.0"
# Avoid pre-compiled binaries, see https://github.com/serde-rs/serde/issues/2538 and https://github.com/serde-rs/serde/pull/2590
serde_derive = ">=1.0.185"
-once_cell = "1.18.0"
document-features = { version = "0.2.0", optional = true }
[profile.dev.package]
diff --git a/clippy.toml b/clippy.toml
index 3b9db9dfebc..5729b3f05da 100644
--- a/clippy.toml
+++ b/clippy.toml
@@ -1 +1 @@
-msrv = "1.74.0"
+msrv = "1.80.0"
diff --git a/etc/msrv-badge.svg b/etc/msrv-badge.svg
index c346e1cb307..5bde79c479c 100644
--- a/etc/msrv-badge.svg
+++ b/etc/msrv-badge.svg
@@ -1,5 +1,5 @@
diff --git a/gix-config/Cargo.toml b/gix-config/Cargo.toml
index ccc4d343386..24bf9ff7e26 100644
--- a/gix-config/Cargo.toml
+++ b/gix-config/Cargo.toml
@@ -9,7 +9,7 @@ edition = "2021"
keywords = ["git-config", "git", "config", "gitoxide"]
categories = ["config", "parser-implementations"]
include = ["src/**/*", "LICENSE-*", "README.md"]
-rust-version = "1.65"
+rust-version = "1.80"
autotests = false
[features]
@@ -31,7 +31,6 @@ unicode-bom.workspace = true
bstr = { version = "1.3.0", default-features = false, features = ["std"] }
serde = { version = "1.0.114", optional = true, default-features = false, features = ["derive"] }
smallvec = "1.9.0"
-once_cell = "1.14.0"
document-features = { version = "0.2.0", optional = true }
diff --git a/gix-credentials/Cargo.toml b/gix-credentials/Cargo.toml
index 9156eb0af05..b6fcc8f1c1c 100644
--- a/gix-credentials/Cargo.toml
+++ b/gix-credentials/Cargo.toml
@@ -36,7 +36,6 @@ document-features = { version = "0.2.1", optional = true }
[dev-dependencies]
gix-testtools = { path = "../tests/tools" }
gix-sec = { path = "../gix-sec" }
-once_cell = "1.19.0"
[package.metadata.docs.rs]
all-features = true
diff --git a/gix-credentials/tests/program/from_custom_definition.rs b/gix-credentials/tests/program/from_custom_definition.rs
index 4ef71f4ee4a..d0df6cb691d 100644
--- a/gix-credentials/tests/program/from_custom_definition.rs
+++ b/gix-credentials/tests/program/from_custom_definition.rs
@@ -1,7 +1,7 @@
use gix_credentials::{helper, program::Kind, Program};
-static GIT: once_cell::sync::Lazy<&'static str> =
- once_cell::sync::Lazy::new(|| gix_path::env::exe_invocation().to_str().expect("not illformed"));
+static GIT: std::sync::LazyLock<&'static str> =
+ std::sync::LazyLock::new(|| gix_path::env::exe_invocation().to_str().expect("not illformed"));
#[cfg(windows)]
const SH: &str = "sh";
diff --git a/gix-date/Cargo.toml b/gix-date/Cargo.toml
index 12f78326d89..4b00086cbc0 100644
--- a/gix-date/Cargo.toml
+++ b/gix-date/Cargo.toml
@@ -27,7 +27,6 @@ document-features = { version = "0.2.0", optional = true }
[dev-dependencies]
gix-testtools = { path = "../tests/tools" }
-once_cell = "1.12.0"
gix-hash = { path = "../gix-hash" }
[package.metadata.docs.rs]
diff --git a/gix-date/tests/time/baseline.rs b/gix-date/tests/time/baseline.rs
index 7f8c2aa01d7..4eff7cef066 100644
--- a/gix-date/tests/time/baseline.rs
+++ b/gix-date/tests/time/baseline.rs
@@ -5,7 +5,7 @@ use gix_date::{
SecondsSinceUnixEpoch,
};
use gix_testtools::Result;
-use once_cell::sync::Lazy;
+use std::sync::LazyLock;
struct Sample {
format_name: Option,
@@ -13,7 +13,7 @@ struct Sample {
seconds: SecondsSinceUnixEpoch,
}
-static BASELINE: Lazy> = Lazy::new(|| {
+static BASELINE: LazyLock> = LazyLock::new(|| {
(|| -> Result<_> {
let base = gix_testtools::scripted_fixture_read_only("generate_git_date_baseline.sh")?;
let mut map = HashMap::new();
diff --git a/gix-fsck/tests/connectivity/mod.rs b/gix-fsck/tests/connectivity/mod.rs
index 3468f0bc290..28d048af652 100644
--- a/gix-fsck/tests/connectivity/mod.rs
+++ b/gix-fsck/tests/connectivity/mod.rs
@@ -2,7 +2,7 @@ use gix_fsck::Connectivity;
use gix_hash::ObjectId;
use gix_hashtable::HashMap;
use gix_object::Kind;
-use gix_testtools::once_cell::sync::Lazy;
+use std::sync::LazyLock;
use crate::hex_to_id;
@@ -40,7 +40,7 @@ fn hex_to_objects<'a>(hex_ids: impl IntoIterator- , kind: Kind) ->
// Get a `&Vec &'static [ObjectId] {
- static ALL_COMMITS: Lazy> = Lazy::new(|| {
+ static ALL_COMMITS: LazyLock> = LazyLock::new(|| {
hex_to_ids([
"ebed23648b19484cb1f340c4ee04dda08479188a",
"8ff6d0f8891c3cb22827be142cc64606121d47b3",
diff --git a/gix-path/Cargo.toml b/gix-path/Cargo.toml
index abb7d5615c6..9ef5caaa4ef 100644
--- a/gix-path/Cargo.toml
+++ b/gix-path/Cargo.toml
@@ -7,7 +7,7 @@ description = "A crate of the gitoxide project dealing paths and their conversio
authors = ["Sebastian Thiel "]
edition = "2021"
include = ["src/**/*", "LICENSE-*"]
-rust-version = "1.65"
+rust-version = "1.80"
[lib]
doctest = false
@@ -16,7 +16,6 @@ doctest = false
gix-trace = { version = "^0.1.8", path = "../gix-trace" }
bstr = { version = "1.3.0", default-features = false, features = ["std"] }
thiserror = "1.0.26"
-once_cell = "1.17.1"
[target.'cfg(not(target_family = "wasm"))'.dependencies]
home = "0.5.5"
diff --git a/gix-path/src/env/git/mod.rs b/gix-path/src/env/git/mod.rs
index a24e26ecb47..9a020cfebf8 100644
--- a/gix-path/src/env/git/mod.rs
+++ b/gix-path/src/env/git/mod.rs
@@ -2,14 +2,14 @@ use std::path::{Path, PathBuf};
use std::process::{Command, Stdio};
use bstr::{BStr, BString, ByteSlice};
-use once_cell::sync::Lazy;
+use std::sync::LazyLock;
/// Other places to find Git in.
#[cfg(windows)]
-pub(super) static ALTERNATIVE_LOCATIONS: Lazy> =
- Lazy::new(|| locations_under_program_files(|key| std::env::var_os(key)));
+pub(super) static ALTERNATIVE_LOCATIONS: LazyLock> =
+ LazyLock::new(|| locations_under_program_files(|key| std::env::var_os(key)));
#[cfg(not(windows))]
-pub(super) static ALTERNATIVE_LOCATIONS: Lazy> = Lazy::new(Vec::new);
+pub(super) static ALTERNATIVE_LOCATIONS: LazyLock> = LazyLock::new(Vec::new);
#[cfg(windows)]
fn locations_under_program_files(var_os_func: F) -> Vec
@@ -79,7 +79,7 @@ pub(super) static EXE_NAME: &str = "git";
/// Invoke the git executable to obtain the origin configuration, which is cached and returned.
///
/// The git executable is the one found in PATH or an alternative location.
-pub(super) static EXE_INFO: Lazy