)]}'
{
  "log": [
    {
      "commit": "a0fbe9343825b392b44b9910b63302a308d685b0",
      "tree": "f680251157572fa23017ebbbf90da1007a3fe851",
      "parents": [
        "71390b5724584ef97974776c4ac85d2504f3452f",
        "587a8a2b548dff671e3d3ac13ad434be31559545"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Thu Apr 23 21:23:15 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 21:23:15 2026 +0000"
      },
      "message": "cargo clean: do not error if explicitly specified target-dir does not exist (#16934)\n\nFixes #16925\n\nRegressed in #16712 which added validation for explicitly specified\ntarget directories by checking if they contain a valid `CACHEDIR.TAG`.\nThis PR makes it so that cargo skips this validation if the target-dir\ndoesn\u0027t exist.\n"
    },
    {
      "commit": "71390b5724584ef97974776c4ac85d2504f3452f",
      "tree": "5a6ba06a5cf4668d40bc238f25fe6495c3a9b182",
      "parents": [
        "32aa9b5fb068c9924d0ec6f5e829922ba90a0624",
        "0687a2c7a092852ad5a6517a07b05bc3057cb94d"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 23 20:49:03 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 20:49:03 2026 +0000"
      },
      "message": "Revert \"feat(lints): Add unused deps ignore list\" (#16937)\n\n### What does this PR try to resolve?\n\nThis is a follow up to #16935 where we take a different direction for\nfalse positives.\nWe are now ignoring unused direct deps that are also transitive deps\n(technically still used somewhere). This leaves workflows like `curl`\nwhere the `build.rs` dynamically decides what deps to use but that seems\nlike enough of an exception case to not worry about direct integration\nfor.\nThis means we can punt on having an allowlist to decide what approach we\nwant take from among rust-lang/rfcs#3920\n\n### How to test and review this PR?\n\nThis reverts commit b276acc529dad2938c56a7f3db90723344909ab1.\n"
    },
    {
      "commit": "587a8a2b548dff671e3d3ac13ad434be31559545",
      "tree": "c552bba7375aa187a85d6cf2f4f2497829b9fce9",
      "parents": [
        "71e941ffc6f8aa63f797e7738f078cdc36e98697"
      ],
      "author": {
        "name": "Tanmay Arya",
        "email": "tanmayarya2018@gmail.com",
        "time": "Thu Apr 23 19:10:39 2026 +0530"
      },
      "committer": {
        "name": "Tanmay Arya",
        "email": "tanmayarya2018@gmail.com",
        "time": "Fri Apr 24 01:28:01 2026 +0530"
      },
      "message": "cargo clean: do not error if explicit target-dir does not exist\n"
    },
    {
      "commit": "0687a2c7a092852ad5a6517a07b05bc3057cb94d",
      "tree": "5a6ba06a5cf4668d40bc238f25fe6495c3a9b182",
      "parents": [
        "32aa9b5fb068c9924d0ec6f5e829922ba90a0624"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 23 14:38:27 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 23 14:38:27 2026 -0500"
      },
      "message": "Revert \"feat(lints): Add unused deps ignore list\"\n\nThis reverts commit b276acc529dad2938c56a7f3db90723344909ab1.\n\nThis is a follow up to #16935 where we take a different direction for\nfalse positives.\nInstead of an allowlist, we will ignore unused direct deps that are also\ntransitive deps (technically still used somewhere).\nThis leaves workflows like `curl` where the `build.rs` dynamically\ndecides what deps to use but that seems like enough of an exception case\nto not worry about direct integration for.\n"
    },
    {
      "commit": "32aa9b5fb068c9924d0ec6f5e829922ba90a0624",
      "tree": "aa5f62030aada312e4b9977b0f8c904c21bb4d95",
      "parents": [
        "c5efee4513daa27b0852fe2430472a38a83adb7e",
        "944a5403d3916f09eb6d12965ef7889ba72dd9d1"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 23 17:58:08 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 23 17:58:08 2026 +0000"
      },
      "message": "fix(compile): Ignore unused deps if also transitive  (#16935)\n\n### What does this PR try to resolve?\n\nThis changes `unused_dependencies` lint to reduce the chance of false\npositives while we work out the story of how we want people to response\nto false positives (rust-lang/rfcs#3920).\n\n### How to test and review this PR?\n\nMy assumption is that I will revert the `ignore` lint control added in\n#16600 after this.\n\nLooking at the known cases of false positives, my short term plan is:\n- transitive version constraint: don\u0027t lint\n- transitive feature activation: don\u0027t lint\n- dynamically used dep (e.g. `build.rs` in `curl`): users must `allow`\n\nLonger term, I\u0027d like to replace this change with either\n- `lib \u003d false` from artifact deps\n- `cfg(resolver \u003d \"versions\")`, [#t-cargo \u003e Additional dependency tables\n@\n💬](https://rust-lang.zulipchat.com/#narrow/channel/246057-t-cargo/topic/Additional.20dependency.20tables/near/590208010)\n\nWe can evolve this because the exact nature of warning-by-default lints\nis not stable.\n"
    },
    {
      "commit": "944a5403d3916f09eb6d12965ef7889ba72dd9d1",
      "tree": "d20cd8092f54b59f5dfd00194ff56fe53bd035c1",
      "parents": [
        "5442d4942a9ccfabf0f1e2845a386c7a9c121fd2"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 14:04:06 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 23 10:24:37 2026 -0500"
      },
      "message": "fix(compile): Ignore unused deps if also transitive\n\nThis is to reduce false positives without having to ignore them.\nIn fact, I plan to revert support for `ignore` after this change."
    },
    {
      "commit": "5442d4942a9ccfabf0f1e2845a386c7a9c121fd2",
      "tree": "9cf03fb1ddfdc1d48048b5240f4b428b96b01acf",
      "parents": [
        "36ae25a52c9577850d6b9abca4ad8c60f696f9ba"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 16 16:07:11 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 23 10:24:37 2026 -0500"
      },
      "message": "refactor(compile): Track manifest deps in ExternState\n"
    },
    {
      "commit": "36ae25a52c9577850d6b9abca4ad8c60f696f9ba",
      "tree": "5c1ba40fd2e898c2c2bf3a7924440af5eeb98a46",
      "parents": [
        "c4dabdc36319ade77535cc64a5b9202ff589312e"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 15:59:51 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 23 10:24:37 2026 -0500"
      },
      "message": "test(lints): Make package selection test resilient against change\n\nThis is to ensure these tests still have the intended coverage\nregardless of how we work around unused direct deps that are present to\ncontrol their transitive presence."
    },
    {
      "commit": "71e941ffc6f8aa63f797e7738f078cdc36e98697",
      "tree": "c1df08d4f1ba02e9d3800cccbc38abe76856ccc1",
      "parents": [
        "c4dabdc36319ade77535cc64a5b9202ff589312e"
      ],
      "author": {
        "name": "Tanmay Arya",
        "email": "tanmayarya2018@gmail.com",
        "time": "Thu Apr 23 19:03:33 2026 +0530"
      },
      "committer": {
        "name": "Tanmay Arya",
        "email": "tanmayarya2018@gmail.com",
        "time": "Thu Apr 23 19:03:33 2026 +0530"
      },
      "message": "cargo clean: add test showing cargo error when explicitely specified target-dir does not exist\n"
    },
    {
      "commit": "c5efee4513daa27b0852fe2430472a38a83adb7e",
      "tree": "b54017dbf3f581393684d33142e5704c23d3af26",
      "parents": [
        "d32d631db154e109dbab152c6af329d79c8c96eb",
        "61a5231349a495b33c1c9ad37dd7e54c23f2af47"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 22:36:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 22:36:00 2026 +0000"
      },
      "message": "Update rustls (#16932)\n\nThis updates:\n\nUpdating rustls v0.23.37 -\u003e v0.23.39\nUpdating rustls-webpki v0.103.10 -\u003e v0.103.13\n\nThere were several security fixes in rustls-webki. I don\u0027t know if any\nof them are important. I don\u0027t remember if gix is even using rustls.\n\n- https://github.com/rustls/rustls/releases/tag/v%2F0.23.38\n- https://github.com/rustls/rustls/releases/tag/v%2F0.23.39\n- https://github.com/rustls/webpki/releases/tag/v%2F0.103.11\n- https://github.com/rustls/webpki/releases/tag/v%2F0.103.12\n- https://github.com/rustls/webpki/releases/tag/v%2F0.103.13\n"
    },
    {
      "commit": "d32d631db154e109dbab152c6af329d79c8c96eb",
      "tree": "d87afae5624d95da24b9530edc363345d204cb2d",
      "parents": [
        "6264f746c0610f2823ccb1f41a527de548a3bde3",
        "60a1f11ab317376be02a70e518e7d97daa08a433"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Wed Apr 22 22:09:20 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 22:09:20 2026 +0000"
      },
      "message": "chore(deps): update rust crate openssl to v0.10.78 [security] (#16931)\n\nThis PR contains the following updates:\n\n| Package | Type | Update | Change |\n|---|---|---|---|\n| [openssl](https://redirect.github.com/rust-openssl/rust-openssl) |\nworkspace.dependencies | patch | `0.10.76` → `0.10.78` |\n\n---\n\n### rust-openssl: Unchecked callback length in PSK/cookie trampolines\nleaks adjacent memory to peer\n\n[GHSA-hppc-g8h3-xhp3](https://redirect.github.com/advisories/GHSA-hppc-g8h3-xhp3)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore information\u003c/summary\u003e\n\n#### Details\nThe FFI trampolines behind `SslContextBuilder::set_psk_client_callback`,\n`set_psk_server_callback`, `set_cookie_generate_cb`, and\n`set_stateless_cookie_generate_cb` forwarded the user closure\u0027s returned\nusize directly to OpenSSL without checking it against the `\u0026mut [u8]`\nthat was handed to the closure. This can lead to buffer overflows and\nother unintended consequences.\n\n#### Severity\n- CVSS Score: 8.3 / 10 (High)\n- Vector String:\n`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:N/VA:L/SC:N/SI:N/SA:N`\n\n#### References\n-\n[https://github.com/rust-openssl/rust-openssl/security/advisories/GHSA-hppc-g8h3-xhp3](https://redirect.github.com/rust-openssl/rust-openssl/security/advisories/GHSA-hppc-g8h3-xhp3)\n-\n[https://github.com/rust-openssl/rust-openssl/pull/2607](https://redirect.github.com/rust-openssl/rust-openssl/pull/2607)\n-\n[https://github.com/rust-openssl/rust-openssl/commit/1d109020d98fff2fb2e45c39a373af3dff99b24c](https://redirect.github.com/rust-openssl/rust-openssl/commit/1d109020d98fff2fb2e45c39a373af3dff99b24c)\n-\n[https://github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n-\n[https://github.com/advisories/GHSA-hppc-g8h3-xhp3](https://redirect.github.com/advisories/GHSA-hppc-g8h3-xhp3)\n\nThis data is provided by the [GitHub Advisory\nDatabase](https://redirect.github.com/advisories/GHSA-hppc-g8h3-xhp3)\n([CC-BY\n4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n\u003c/details\u003e\n\n---\n\n### rust-openssl: rustMdCtxRef::digest_final() writes past caller buffer\nwith no length check\n[CVE-2026-41681](https://nvd.nist.gov/vuln/detail/CVE-2026-41681) /\n[GHSA-ghm9-cr32-g9qj](https://redirect.github.com/advisories/GHSA-ghm9-cr32-g9qj)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore information\u003c/summary\u003e\n\n#### Details\n`EVP_DigestFinal()` always writes `EVP_MD_CTX_size(ctx)` to the `out`\nbuffer. If `out` is smaller than that, `MdCtxRef::digest_final()` writes\npast its end, usually corrupting the stack. This is reachable from safe\nRust.\n\n#### Severity\n- CVSS Score: 8.1 / 10 (High)\n- Vector String:\n`CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U`\n\n#### References\n-\n[https://github.com/rust-openssl/rust-openssl/security/advisories/GHSA-ghm9-cr32-g9qj](https://redirect.github.com/rust-openssl/rust-openssl/security/advisories/GHSA-ghm9-cr32-g9qj)\n-\n[https://github.com/rust-openssl/rust-openssl/pull/2608](https://redirect.github.com/rust-openssl/rust-openssl/pull/2608)\n-\n[https://github.com/rust-openssl/rust-openssl/commit/826c3888b77add418b394770e2b2e3a72d9f92fe](https://redirect.github.com/rust-openssl/rust-openssl/commit/826c3888b77add418b394770e2b2e3a72d9f92fe)\n-\n[https://github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n-\n[https://github.com/advisories/GHSA-ghm9-cr32-g9qj](https://redirect.github.com/advisories/GHSA-ghm9-cr32-g9qj)\n\nThis data is provided by the [GitHub Advisory\nDatabase](https://redirect.github.com/advisories/GHSA-ghm9-cr32-g9qj)\n([CC-BY\n4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n\u003c/details\u003e\n\n---\n\n### rust-openssl has incorrect bounds assertion in aes key wrap\n[CVE-2026-41678](https://nvd.nist.gov/vuln/detail/CVE-2026-41678) /\n[GHSA-8c75-8mhr-p7r9](https://redirect.github.com/advisories/GHSA-8c75-8mhr-p7r9)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore information\u003c/summary\u003e\n\n#### Details\n##### Summary\n``aes::unwrap_key()`` has an incorrect bounds assertion on the out\nbuffer size, which can lead to out-of-bounds write.\n\n##### Details\n``aes::unwrap_key()`` contains an incorrect assertion: it checks that\n`out.len() + 8 \u003c\u003d in_.len()`, but this condition is reversed. The\nintended invariant is `out.len() \u003e\u003d in_.len() - 8`, ensuring the output\nbuffer is large enough.\n\nBecause of the inverted check, the function only accepts buffers at or\nbelow the minimum required size and rejects larger ones. If a smaller\nbuffer is provided the function will write past the end of `out` by\n`in_.len() - 8 - out.len()` bytes, causing an out-of-bounds write from a\nsafe public function.\n\n##### Impact\nVulnerable applications using AES keywrap and allowing attacker\ncontrolled buffer sizes could have an attacker trigger an out-of-bounds\nwrite.\n\n#### Severity\n- CVSS Score: 7.2 / 10 (High)\n- Vector String:\n`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U`\n\n#### References\n-\n[https://github.com/rust-openssl/rust-openssl/security/advisories/GHSA-8c75-8mhr-p7r9](https://redirect.github.com/rust-openssl/rust-openssl/security/advisories/GHSA-8c75-8mhr-p7r9)\n-\n[https://github.com/rust-openssl/rust-openssl/pull/2604](https://redirect.github.com/rust-openssl/rust-openssl/pull/2604)\n-\n[https://github.com/rust-openssl/rust-openssl/commit/718d07ff8ff7be417d5b7a6a0047f1607520b3b6](https://redirect.github.com/rust-openssl/rust-openssl/commit/718d07ff8ff7be417d5b7a6a0047f1607520b3b6)\n-\n[https://github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n-\n[https://github.com/advisories/GHSA-8c75-8mhr-p7r9](https://redirect.github.com/advisories/GHSA-8c75-8mhr-p7r9)\n\nThis data is provided by the [GitHub Advisory\nDatabase](https://redirect.github.com/advisories/GHSA-8c75-8mhr-p7r9)\n([CC-BY\n4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n\u003c/details\u003e\n\n---\n\n### rust-opennssl has an Out-of-bounds read in PEM password callback\nwhen returning an oversized length\n[CVE-2026-41677](https://nvd.nist.gov/vuln/detail/CVE-2026-41677) /\n[GHSA-xmgf-hq76-4vx2](https://redirect.github.com/advisories/GHSA-xmgf-hq76-4vx2)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore information\u003c/summary\u003e\n\n#### Details\nThe `*_from_pem_callback` APIs did not validate the length returned by\nthe user\u0027s callback. A password callback that returns a value larger\nthan the buffer it was given can cause some versions of OpenSSL to\nover-read this buffer. OpenSSL 3.x is not affected by this.\n\n#### Severity\n- CVSS Score: 1.7 / 10 (Low)\n- Vector String:\n`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:L/SC:N/SI:N/SA:N/E:U`\n\n#### References\n-\n[https://github.com/rust-openssl/rust-openssl/security/advisories/GHSA-xmgf-hq76-4vx2](https://redirect.github.com/rust-openssl/rust-openssl/security/advisories/GHSA-xmgf-hq76-4vx2)\n-\n[https://github.com/rust-openssl/rust-openssl/pull/2605](https://redirect.github.com/rust-openssl/rust-openssl/pull/2605)\n-\n[https://github.com/rust-openssl/rust-openssl/commit/5af6895c907773699f37f583f409b862284062b1](https://redirect.github.com/rust-openssl/rust-openssl/commit/5af6895c907773699f37f583f409b862284062b1)\n-\n[https://github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n-\n[https://github.com/advisories/GHSA-xmgf-hq76-4vx2](https://redirect.github.com/advisories/GHSA-xmgf-hq76-4vx2)\n\nThis data is provided by the [GitHub Advisory\nDatabase](https://redirect.github.com/advisories/GHSA-xmgf-hq76-4vx2)\n([CC-BY\n4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n\u003c/details\u003e\n\n---\n\n### rust-openssl: Deriver::derive and PkeyCtxRef::derive can overflow\nshort buffers on OpenSSL 1.1.1\n[CVE-2026-41676](https://nvd.nist.gov/vuln/detail/CVE-2026-41676) /\n[GHSA-pqf5-4pqq-29f5](https://redirect.github.com/advisories/GHSA-pqf5-4pqq-29f5)\n\n\u003cdetails\u003e\n\u003csummary\u003eMore information\u003c/summary\u003e\n\n#### Details\n`Deriver::derive` (and `PkeyCtxRef::derive`) sets `len \u003d buf.len()` and\npasses it as the in/out length to `EVP_PKEY_derive`, relying on OpenSSL\nto honor it. On OpenSSL 1.1.x, X25519, X448, DH and HKDF-extract ignore\nthe incoming `*keylen`, unconditionally writing the full shared secret\n(32/56/prime-size bytes). A caller passing a short slice gets a\nheap/stack overflow from safe code. OpenSSL 3.x providers do check, so\nthis only impacts older OpenSSL.\n\n#### Severity\n- CVSS Score: 7.2 / 10 (High)\n- Vector String:\n`CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N/E:U`\n\n#### References\n-\n[https://github.com/rust-openssl/rust-openssl/security/advisories/GHSA-pqf5-4pqq-29f5](https://redirect.github.com/rust-openssl/rust-openssl/security/advisories/GHSA-pqf5-4pqq-29f5)\n-\n[https://github.com/rust-openssl/rust-openssl/pull/2606](https://redirect.github.com/rust-openssl/rust-openssl/pull/2606)\n-\n[https://github.com/rust-openssl/rust-openssl/commit/09b425e5f59a2466d806e71a83a9a449c914c596](https://redirect.github.com/rust-openssl/rust-openssl/commit/09b425e5f59a2466d806e71a83a9a449c914c596)\n-\n[https://github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n-\n[https://github.com/advisories/GHSA-pqf5-4pqq-29f5](https://redirect.github.com/advisories/GHSA-pqf5-4pqq-29f5)\n\nThis data is provided by the [GitHub Advisory\nDatabase](https://redirect.github.com/advisories/GHSA-pqf5-4pqq-29f5)\n([CC-BY\n4.0](https://redirect.github.com/github/advisory-database/blob/main/LICENSE.md)).\n\u003c/details\u003e\n\n---\n\n### Release Notes\n\n\u003cdetails\u003e\n\u003csummary\u003erust-openssl/rust-openssl (openssl)\u003c/summary\u003e\n\n###\n[`v0.10.78`](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.78)\n\n[Compare\nSource](https://redirect.github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.77...openssl-v0.10.78)\n\n#### What\u0027s Changed\n\n- Fix Suite B flag assignments in verify.rs by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2592](https://redirect.github.com/rust-openssl/rust-openssl/pull/2592)\n- Use cvt\\_p for OPENSSL\\_malloc error handling by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2593](https://redirect.github.com/rust-openssl/rust-openssl/pull/2593)\n- Mark BIO\\_get\\_mem\\_data on AWS-LC to be unsafe by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2594](https://redirect.github.com/rust-openssl/rust-openssl/pull/2594)\n- Set timeout for package installation step by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2595](https://redirect.github.com/rust-openssl/rust-openssl/pull/2595)\n- Panic in Crypter::new when IV is required but not provided by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2596](https://redirect.github.com/rust-openssl/rust-openssl/pull/2596)\n- openssl 4 support by\n[@\u0026#8203;reaperhulk](https://redirect.github.com/reaperhulk) in\n[#\u0026#8203;2591](https://redirect.github.com/rust-openssl/rust-openssl/pull/2591)\n- Avoid panic for overlong OIDs by\n[@\u0026#8203;botovq](https://redirect.github.com/botovq) in\n[#\u0026#8203;2598](https://redirect.github.com/rust-openssl/rust-openssl/pull/2598)\n- Fix dangling stack pointer in custom extension add callback by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2599](https://redirect.github.com/rust-openssl/rust-openssl/pull/2599)\n- Add support for LibreSSL 4.3.x by\n[@\u0026#8203;botovq](https://redirect.github.com/botovq) in\n[#\u0026#8203;2603](https://redirect.github.com/rust-openssl/rust-openssl/pull/2603)\n- fix inverted bounds assertion in AES key unwrap by\n[@\u0026#8203;reaperhulk](https://redirect.github.com/reaperhulk) in\n[#\u0026#8203;2604](https://redirect.github.com/rust-openssl/rust-openssl/pull/2604)\n- Reject oversized length returns from password callback trampoline by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2605](https://redirect.github.com/rust-openssl/rust-openssl/pull/2605)\n- Validate callback-returned lengths in PSK and cookie trampolines by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2607](https://redirect.github.com/rust-openssl/rust-openssl/pull/2607)\n- Error for short out in MdCtxRef::digest\\_final() by\n[@\u0026#8203;botovq](https://redirect.github.com/botovq) in\n[#\u0026#8203;2608](https://redirect.github.com/rust-openssl/rust-openssl/pull/2608)\n- Check derive output buffer length on OpenSSL 1.1.x by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2606](https://redirect.github.com/rust-openssl/rust-openssl/pull/2606)\n- Release openssl v0.10.78 and openssl-sys v0.9.114 by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2609](https://redirect.github.com/rust-openssl/rust-openssl/pull/2609)\n\n**Full Changelog**:\n\u003chttps://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.77...openssl-v0.10.78\u003e\n\n###\n[`v0.10.77`](https://redirect.github.com/rust-openssl/rust-openssl/releases/tag/openssl-v0.10.77)\n\n[Compare\nSource](https://redirect.github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.76...openssl-v0.10.77)\n\n#### What\u0027s Changed\n\n- CI: Hash-pin all action usage, avoid credential persistence in\nactions/checkout by\n[@\u0026#8203;woodruffw](https://redirect.github.com/woodruffw) in\n[#\u0026#8203;2587](https://redirect.github.com/rust-openssl/rust-openssl/pull/2587)\n- Bump aws-lc-sys to 0.39 by\n[@\u0026#8203;goffrie](https://redirect.github.com/goffrie) in\n[#\u0026#8203;2588](https://redirect.github.com/rust-openssl/rust-openssl/pull/2588)\n- md\\_ctx: enable sign/verify/reset on BoringSSL, LibreSSL, and AWS-LC\nby [@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2589](https://redirect.github.com/rust-openssl/rust-openssl/pull/2589)\n- Release openssl v0.10.77 and openssl-sys v0.9.113 by\n[@\u0026#8203;alex](https://redirect.github.com/alex) in\n[#\u0026#8203;2590](https://redirect.github.com/rust-openssl/rust-openssl/pull/2590)\n\n#### New Contributors\n\n- [@\u0026#8203;woodruffw](https://redirect.github.com/woodruffw) made their\nfirst contribution in\n[#\u0026#8203;2587](https://redirect.github.com/rust-openssl/rust-openssl/pull/2587)\n\n**Full Changelog**:\n\u003chttps://github.com/rust-openssl/rust-openssl/compare/openssl-v0.10.76...openssl-v0.10.77\u003e\n\n\u003c/details\u003e\n\n---\n\n### Configuration\n\n📅 **Schedule**: (UTC)\n\n- Branch creation\n  - \"\"\n- Automerge\n  - At any time (no schedule defined)\n\n🚦 **Automerge**: Disabled by config. Please merge this manually once you\nare satisfied.\n\n♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the\nrebase/retry checkbox.\n\n🔕 **Ignore**: Close this PR and you won\u0027t be reminded about this update\nagain.\n\n---\n\n- [ ] \u003c!-- rebase-check --\u003eIf you want to rebase/retry this PR, check\nthis box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).\nView the [repository job\nlog](https://developer.mend.io/github/rust-lang/cargo).\n\n\u003c!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMzkuNCIsInVwZGF0ZWRJblZlciI6IjQzLjEzOS40IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0\u003d--\u003e\n"
    },
    {
      "commit": "61a5231349a495b33c1c9ad37dd7e54c23f2af47",
      "tree": "72a0fdac431cbad88fb94b45c8cd0a266856f111",
      "parents": [
        "6264f746c0610f2823ccb1f41a527de548a3bde3"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Wed Apr 22 15:03:02 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Wed Apr 22 15:03:02 2026 -0700"
      },
      "message": "Update rustls\n\nThis updates:\n\nUpdating rustls v0.23.37 -\u003e v0.23.39\nUpdating rustls-webpki v0.103.10 -\u003e v0.103.13\n\nThere were several security fixes in rustls-webki. I don\u0027t know if any\nof them are important. I don\u0027t remember if gix is even using rustls.\n\nhttps://github.com/rustls/rustls/releases/tag/v%2F0.23.38\nhttps://github.com/rustls/rustls/releases/tag/v%2F0.23.39\n\nhttps://github.com/rustls/webpki/releases/tag/v%2F0.103.11\nhttps://github.com/rustls/webpki/releases/tag/v%2F0.103.12\nhttps://github.com/rustls/webpki/releases/tag/v%2F0.103.13\n"
    },
    {
      "commit": "60a1f11ab317376be02a70e518e7d97daa08a433",
      "tree": "d87afae5624d95da24b9530edc363345d204cb2d",
      "parents": [
        "6264f746c0610f2823ccb1f41a527de548a3bde3"
      ],
      "author": {
        "name": "renovate[bot]",
        "email": "29139614+renovate[bot]@users.noreply.github.com",
        "time": "Wed Apr 22 21:35:39 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 21:35:39 2026 +0000"
      },
      "message": "chore(deps): update rust crate openssl to v0.10.78 [security]"
    },
    {
      "commit": "6264f746c0610f2823ccb1f41a527de548a3bde3",
      "tree": "e58aba9970648cf2b91f9dad87b4517436b5fc11",
      "parents": [
        "c4dabdc36319ade77535cc64a5b9202ff589312e",
        "8f01f76af1af5c663fa850dc9b8105f412184f0a"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Wed Apr 22 21:00:51 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 22 21:00:51 2026 +0000"
      },
      "message": "chore(build-rs): Ensure we lint the crate (#16930)\n\n### What does this PR try to resolve?\n\nThis is to resolve warnings from `-Zcargo-lints`\n\n### How to test and review this PR?\n"
    },
    {
      "commit": "8f01f76af1af5c663fa850dc9b8105f412184f0a",
      "tree": "e58aba9970648cf2b91f9dad87b4517436b5fc11",
      "parents": [
        "113e01fb060485d5e2ae2a6874d36887e1de7bfc"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 15:28:57 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 15:28:57 2026 -0500"
      },
      "message": "chore(build-rs): Bump version\n"
    },
    {
      "commit": "113e01fb060485d5e2ae2a6874d36887e1de7bfc",
      "tree": "ad0469ba258ff8d8c6622897242f4fd969dc094e",
      "parents": [
        "c4dabdc36319ade77535cc64a5b9202ff589312e"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 14:56:27 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 22 14:56:27 2026 -0500"
      },
      "message": "chore(build-rs): Ensure we lint the crate\n\nThis is to resolve warnings from `-Zcargo-lints`"
    },
    {
      "commit": "c4dabdc36319ade77535cc64a5b9202ff589312e",
      "tree": "d324d8bab9046734533e7fd92b5ef33aa4bbddbc",
      "parents": [
        "dede9f5f6b9f4a53f23f0297c4e35308f5012d37",
        "1758c891f5d816b25702deca684b6740dbfa87e1"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 21 23:00:00 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 23:00:00 2026 +0000"
      },
      "message": "Fix flaky test: proc_macro_in_artifact_dep (#16922)\n\nSometimes cargo will attempt to download `pm` before `bin-uses-pm`,\nwhich causes the expected error to occur before the `[DOWNLOADED]`\nmessage is printed.\n\nSince the test doesn\u0027t care about downloading `pm`, we can exclude this\ncase by matching `...`.\n"
    },
    {
      "commit": "1758c891f5d816b25702deca684b6740dbfa87e1",
      "tree": "6bb7b7d3be28319c1d298c670edc31271c104a6c",
      "parents": [
        "06ac0e7c05770a8c7bbf67bdd12fa1a1eefdc8ae"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Tue Apr 21 17:22:26 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Tue Apr 21 17:22:26 2026 -0500"
      },
      "message": "Fix flaky test: proc_macro_in_artifact_dep\n"
    },
    {
      "commit": "dede9f5f6b9f4a53f23f0297c4e35308f5012d37",
      "tree": "85438afe66ee18f634b8a61886f0a590b4b9160b",
      "parents": [
        "06ac0e7c05770a8c7bbf67bdd12fa1a1eefdc8ae",
        "4bcdfc16d56d8fcdf1cad4b334c19e86d45ececb"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 21 21:29:56 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 21:29:56 2026 +0000"
      },
      "message": "refactor(compile): Log all ignored unused externs (#16920)\n\n### What does this PR try to resolve?\n\nShoring up the logging we do for unused dependency lints to help with\ndebugging and profiling.\n\nThis could also be useful for users to get more insight on things we\ncan\u0027t or won\u0027t show, like helping hunt down features to deactivate to\nreduce unused dependencies (e.g. `cli` on `pulldown-cmark`) or removing\ntransitively unused dependencies.\n\n### How to test and review this PR?\n\nRunning this on `cargo` itself:\n```console\n$ CARGO_LOG\u003dcargo::core::compiler::unused_deps\u003ddebug nargo check\n...\n   2.537113285s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg crypto-common v0.1.6 (normal): ignoring unused extern `typenum`, untracked dependent\n   2.537569241s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg heapless v0.8.0 (normal): ignoring unused extern `stable_deref_trait`, untracked dependent\n   2.537758659s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg faster-hex v0.10.0 (normal): ignoring unused extern `heapless`, untracked dependent\n   2.537984665s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-date v0.15.1 (normal): ignoring unused extern `bstr`, untracked dependent\n   2.538312867s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-object v0.58.0 (normal): ignoring unused extern `gix_hashtable`, untracked dependent\n   2.538704975s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-tempfile v21.0.2 (normal): ignoring unused extern `libc`, untracked dependent\n   2.538762374s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-tempfile v21.0.2 (normal): ignoring unused extern `parking_lot`, untracked dependent\n   2.539010269s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-commitgraph v0.35.0 (normal): ignoring unused extern `bstr`, untracked dependent\n   2.539205527s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg libnghttp2-sys v0.1.13+1.68.1 (normal): ignoring unused extern `libc`, untracked dependent\n   2.539597903s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg curl-sys v0.4.87+curl-8.19.0 (normal): ignoring unused extern `libnghttp2_sys`, untracked dependent\n   2.539654548s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg curl-sys v0.4.87+curl-8.19.0 (normal): ignoring unused extern `libz_sys`, untracked dependent\n   2.539711192s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg curl-sys v0.4.87+curl-8.19.0 (normal): ignoring unused extern `openssl_sys`, untracked dependent\n   2.540319246s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg curl v0.4.49 (normal): ignoring unused extern `openssl_probe`, untracked dependent\n   2.540373049s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg curl v0.4.49 (normal): ignoring unused extern `openssl_sys`, untracked dependent\n   2.540811522s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-index v0.49.0 (normal): ignoring unused extern `gix_fs`, untracked dependent\n   2.541504178s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-revision v0.43.0 (normal): ignoring unused extern `gix_commitgraph`, untracked dependent\n   2.541560742s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-revision v0.43.0 (normal): ignoring unused extern `nonempty`, untracked dependent\n   2.541873702s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg nix v0.30.1 (normal): ignoring unused extern `bitflags`, lint is allowed\n   2.542548816s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg nom v7.1.3 (normal): ignoring unused extern `minimal_lexical`, lint is allowed\n   2.542935941s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-negotiate v0.29.0 (normal): ignoring unused extern `gix_commitgraph`, untracked dependent\n   2.542989018s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix-negotiate v0.29.0 (normal): ignoring unused extern `gix_object`, untracked dependent\n   2.543198046s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg tracing-subscriber v0.3.23 (normal): ignoring unused extern `once_cell`, lint is allowed\n   2.543249959s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg tracing-subscriber v0.3.23 (normal): ignoring unused extern `regex_automata`, lint is allowed\n   2.543640436s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg git2 v0.20.4 (normal): ignoring unused extern `openssl_sys`, untracked dependent\n   2.544004330s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg regex v1.12.3 (normal): ignoring unused extern `aho_corasick`, lint is allowed\n   2.544419766s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg futures v0.3.32 (normal): ignoring unused extern `futures_task`, lint is allowed\n   2.544564859s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix v0.81.0 (normal): ignoring unused extern `gix_revision`, untracked dependent\n   2.544617049s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg gix v0.81.0 (normal): ignoring unused extern `prodash`, untracked dependent\n   2.544779907s debug emit_unused_warnings: cargo::core::compiler::unused_deps: pkg rustfix v0.9.6 (normal): ignoring unused extern `tracing`, untracked dependent\n    Finished `dev` profile [unoptimized + debuginfo] target(s) in 2.54s\n\n```\n\nDoesn\u0027t work too well for `--all-targets` because we don\u0027t support dev\ntargets at the moment, so we don\u0027t track which externs came from\ndependencies vs dev-dependencies.\n\nAlso, of note that I found while doing this that confused me at first is\nthat we don\u0027t fingerprint `-Zcargo-lints`, so users can have stale\ncaches with no unused externs \"reported\" by rustc to cargo.\n"
    },
    {
      "commit": "4bcdfc16d56d8fcdf1cad4b334c19e86d45ececb",
      "tree": "09076c6e03fff8856132cc2fedc9dff60f3ce10d",
      "parents": [
        "f2051935a9891b4b6449e127508b5575723b6136"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 16:37:59 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 11:24:19 2026 -0500"
      },
      "message": "refactor(compile): Track all unused externs\n"
    },
    {
      "commit": "f2051935a9891b4b6449e127508b5575723b6136",
      "tree": "be79bd935d2cf71de8b0af61801c8b9fd5375c09",
      "parents": [
        "afd955f5e3edef6d4f32a4dc6ffa92b27d490a57"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 16:36:18 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 11:24:17 2026 -0500"
      },
      "message": "refactor(compile): Track when there are needed units\n"
    },
    {
      "commit": "afd955f5e3edef6d4f32a4dc6ffa92b27d490a57",
      "tree": "5ff9f2eeee5ec7720279092dae55bfbf7184c5b1",
      "parents": [
        "765e77e76a7dfd62c07e868a3f313a6dcf863df9"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Mon Apr 20 16:43:28 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 11:22:22 2026 -0500"
      },
      "message": "refactor(compile): Narrow the scope of some variables\n"
    },
    {
      "commit": "765e77e76a7dfd62c07e868a3f313a6dcf863df9",
      "tree": "b868f7c9811a457afdc14b5c1be4059a01627ab9",
      "parents": [
        "b9d07c7337e789e981af40d161154e8353a336e6"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Mon Apr 20 16:40:53 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 11:22:03 2026 -0500"
      },
      "message": "refactor(compile): Improve traces for outstanding dep"
    },
    {
      "commit": "b9d07c7337e789e981af40d161154e8353a336e6",
      "tree": "4721b6f510024f52450cad49b88fb7ae583c4a40",
      "parents": [
        "756c3acf11358a06c389e1b82c7e0d6d6abb90e7"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 10:51:18 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 10:51:18 2026 -0500"
      },
      "message": "refactor(compile): Trace allowed unused externs\n"
    },
    {
      "commit": "06ac0e7c05770a8c7bbf67bdd12fa1a1eefdc8ae",
      "tree": "c7c8d36e0b0363432928666d091b81ad34625fb7",
      "parents": [
        "da3f639369aef748a42091d5cbb1b71e24e30c2c",
        "c9ac3062577e3284c623d8cbe77378eae532b54f"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 21 15:33:56 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 15:33:56 2026 +0000"
      },
      "message": "test(git): add regression test for full-hash GitHub fast path (#16919)\n\n### What does this PR try to resolve?\n\nFollow-up coverage for #13946, which fixed #13555\n\nThat fix restored the early return in `github_fast_path` for full commit\nhashes, but it did not add a direct test for this path. If this guard\ngets removed in a later refactor, CI would not catch it very directly.\n\nI first looked at adding this in the testsuite, but the existing GitHub\nfast-path coverage uses the public network, and the GitHub API URL is\nbuilt directly in the code. So i went with a small unit test for the\nearly-return path instead.\n\n### How to test and review this PR?\n\n```bash\ncargo +1.95 test --lib github_fast_path_full_hash_returns_needs_fetch\ncargo +1.95 fmt --check --all\n```\n"
    },
    {
      "commit": "da3f639369aef748a42091d5cbb1b71e24e30c2c",
      "tree": "7371ea83a13e20295b21e08e6d92dc5516a60dc7",
      "parents": [
        "da18b7299133235771b1b5ac7e6c2c38a7808dda",
        "67e895acc55519e3e4d4d1672bb74173e19461d1"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 21 15:27:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 15:27:43 2026 +0000"
      },
      "message": "fix(help): add `.1` extension to man page temp file (#16917)\n\nFixes #16910\n\nAdd `.1` suffix to the temp file when spawning `man` so platforms like\nNetBSD recognize it as a man page.\n"
    },
    {
      "commit": "c9ac3062577e3284c623d8cbe77378eae532b54f",
      "tree": "47b40e6d63e5579effac4d9dfe4fe19a3d0167e2",
      "parents": [
        "da18b7299133235771b1b5ac7e6c2c38a7808dda"
      ],
      "author": {
        "name": "Vastargazing",
        "email": "vebohr@gmail.com",
        "time": "Tue Apr 21 17:48:02 2026 +0300"
      },
      "committer": {
        "name": "Vastargazing",
        "email": "vebohr@gmail.com",
        "time": "Tue Apr 21 17:48:02 2026 +0300"
      },
      "message": "test(git): add regression test for full-hash fast path (#13555)\n"
    },
    {
      "commit": "756c3acf11358a06c389e1b82c7e0d6d6abb90e7",
      "tree": "ee8c41d17c7148b0adc11b3ee9a49b23358c9fc4",
      "parents": [
        "d5a6b4e521b725d4164909cef2058fc2964296f5"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 16:46:08 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:41:22 2026 -0500"
      },
      "message": "refactor(compile): Improve trace for ignored dep\n"
    },
    {
      "commit": "d5a6b4e521b725d4164909cef2058fc2964296f5",
      "tree": "300de3ab1098bdae92db50063a5f386624f49ebf",
      "parents": [
        "cf14a70c76062a6036cb5eb752ceb8d97dc49f71"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Fri Apr 17 14:08:01 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:41:22 2026 -0500"
      },
      "message": "refactor(compile): Trace correct number of outstanding units\n"
    },
    {
      "commit": "cf14a70c76062a6036cb5eb752ceb8d97dc49f71",
      "tree": "3e65523a5980b0d811b8bc14c0e2ca4359ad71bb",
      "parents": [
        "0c2c5b5ada7d6f45967a84bc7d34d2b304c72b2b"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:38:56 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:38:56 2026 -0500"
      },
      "message": "refactor(compile): Log unused externs\n"
    },
    {
      "commit": "0c2c5b5ada7d6f45967a84bc7d34d2b304c72b2b",
      "tree": "6380f24071e04ea154652094f3ee54e3091e6523",
      "parents": [
        "e9f069c98e514832a3b7438e8f0824b5dceb3768"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Fri Apr 17 14:06:58 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:26:20 2026 -0500"
      },
      "message": "refactor(compile): Log the top-level unused dep operations\n"
    },
    {
      "commit": "e9f069c98e514832a3b7438e8f0824b5dceb3768",
      "tree": "3e6c198fc00c6e4bd1d70dae6e02fe37bccef6ec",
      "parents": [
        "72d80ecb5f78a5f8a5f88daa81fe2979d0a4d010"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:19:31 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 21 08:25:43 2026 -0500"
      },
      "message": "refactor(compile): Be consistent with variable name\n"
    },
    {
      "commit": "67e895acc55519e3e4d4d1672bb74173e19461d1",
      "tree": "7371ea83a13e20295b21e08e6d92dc5516a60dc7",
      "parents": [
        "4b39274b9ef9391f00e092c4e91b5df84dbeadd9"
      ],
      "author": {
        "name": "Raushan Kumar",
        "email": "raushansinghrajpoot687@gmail.com",
        "time": "Tue Apr 21 06:56:22 2026 +0000"
      },
      "committer": {
        "name": "Raushan Kumar",
        "email": "raushansinghrajpoot687@gmail.com",
        "time": "Tue Apr 21 06:56:22 2026 +0000"
      },
      "message": "fix(help): add .1 extension to man page temp file (#16910)\n"
    },
    {
      "commit": "4b39274b9ef9391f00e092c4e91b5df84dbeadd9",
      "tree": "49fc5269f67dcb43decc4ad93525d7bb783b95f9",
      "parents": [
        "da18b7299133235771b1b5ac7e6c2c38a7808dda"
      ],
      "author": {
        "name": "Raushan Kumar",
        "email": "raushansinghrajpoot687@gmail.com",
        "time": "Tue Apr 21 06:49:11 2026 +0000"
      },
      "committer": {
        "name": "Raushan Kumar",
        "email": "raushansinghrajpoot687@gmail.com",
        "time": "Tue Apr 21 06:52:34 2026 +0000"
      },
      "message": "test(help): add test for man page temp file extension (#16910)\n"
    },
    {
      "commit": "da18b7299133235771b1b5ac7e6c2c38a7808dda",
      "tree": "7c388a68e94561f10e62af393d6e3227613085ea",
      "parents": [
        "49b14fe6c552b7e63fd99faab4074e277d02032c",
        "f894f5763a5c4f4e3d007bc955797b6437f3487a"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Tue Apr 21 02:09:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 02:09:48 2026 +0000"
      },
      "message": "Fix flaky test: sparse_blocking_count (#16916)\n\nThe two dependencies `dep1` and `dep2` are fetched and downloaded at the\nsame time, leading to nondeterministic output in the test.\n\nFix this issue by replacing dep1 and dep2 with [..]\n\nAdditionally, sometimes the pending request count can be less than the\nnumber of queued requests if the requests finish before the resolver\nrestarts.\n\nFix this issue by replacing the pending request count with [..] unless\nit\u0027s zero, which is stable.\n"
    },
    {
      "commit": "f894f5763a5c4f4e3d007bc955797b6437f3487a",
      "tree": "d9aaeee41afeb63698a916703e8adc30dd380774",
      "parents": [
        "862f60b27a9322d9b45d972f99e311dbd79ce112"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 19:48:07 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 20:35:47 2026 -0500"
      },
      "message": "Fix flaky test: sparse_blocking_count\n\nThe two dependencies `dep1` and `dep2` are fetched and downloaded at the\nsame time, leading to nondeterministc output in the test.\n\nFix this issue by using `unordered()`.\n\nAdditionally, sometimes the pending request count can be less than the\nnumber of queued requests if the requests finish before the resolver\nrestarts.\n\nFix this issue by replacing the pending request count with [..] unless\nit\u0027s zero, which is stable.\n"
    },
    {
      "commit": "49b14fe6c552b7e63fd99faab4074e277d02032c",
      "tree": "a8a3741582a431cc4d211ec188fdb176673159fd",
      "parents": [
        "6c6a37e12b1898ca4a5fdc684ff732731fd51b03",
        "d774658502aa83e8ca1425487e5efd4f652daddc"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 21 00:56:32 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 00:56:32 2026 +0000"
      },
      "message": "Fix flaky test compile_offline_while_transitive_dep_not_cached (#16915)\n\nThe new async crate downloader is less deterministic in the order of\ndownloaded crates. In this test, the setup is to have bar download\nsuccessfully, but baz not be available. Then attempt to do a check with\n--offline. In the flaky failure case, the setup would be wrong, and\nneither bar nor baz would be available because it attempted to download\nbaz first and failed.\n\nThis changes the setup for the test to download both crates, then remove\nbaz from the cache before testing with --offline\n"
    },
    {
      "commit": "6c6a37e12b1898ca4a5fdc684ff732731fd51b03",
      "tree": "af4d25310055776ef216ff3850bdc729c72d0ef7",
      "parents": [
        "862f60b27a9322d9b45d972f99e311dbd79ce112",
        "2efe042b3b28e47b77a9a00c004143b342288ee7"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Tue Apr 21 00:40:53 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 21 00:40:53 2026 +0000"
      },
      "message": "Fix test fetch_all_platform_dependencies_when_no_target_is_given (#16914)\n\nThis test was randomly failing because the order that cargo prints the\ncompletion of `d1` and `d2` is not deterministic.\n\nI suspect this is a result of\nhttps://github.com/rust-lang/cargo/pull/16898 which can cause the\nparallel fetches to finish in different orders.\n\nThis is fixed with `.unordered()` because the order these are printed\nisn\u0027t important.\n"
    },
    {
      "commit": "d774658502aa83e8ca1425487e5efd4f652daddc",
      "tree": "d3af66005488892311cc58e1712c18d2f1b97a75",
      "parents": [
        "862f60b27a9322d9b45d972f99e311dbd79ce112"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 19:20:17 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 19:20:17 2026 -0500"
      },
      "message": "Fix flaky test compile_offline_while_transitive_dep_not_cached\n\nThe new async crate downloader is less deterministic in the order of\ndownloaded crates. In this test, the setup is to have bar download\nsuccessfully, but baz not be available. Then attempt to do a check with\n--offline. In the flaky failure case, the setup would be wrong, and\nneither bar nor baz would be available.\n\nThis changes the setup for the test to download both crates, then\nremove baz from the cache before testing with --offline\n"
    },
    {
      "commit": "2efe042b3b28e47b77a9a00c004143b342288ee7",
      "tree": "260184ee21c7590a344773bd3bfa66bace45ccb8",
      "parents": [
        "6307456e9a6795bbe167ab5f501df05962432a31"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Mon Apr 20 15:38:27 2026 -0700"
      },
      "committer": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Mon Apr 20 15:38:27 2026 -0700"
      },
      "message": "Fix test fetch_all_platform_dependencies_when_no_target_is_given\n\nThis test was randomly failing because the order that cargo prints the\ncompletion of `d1` and `d2` is not deterministic.\n\nI suspect this is a result of\nhttps://github.com/rust-lang/cargo/pull/16898 which can cause the\nparallel fetches to finish in different orders.\n\nThis is fixed with `.unordered()` because the order these are printed\nisn\u0027t important.\n"
    },
    {
      "commit": "862f60b27a9322d9b45d972f99e311dbd79ce112",
      "tree": "dd6e198724bce76cf1576ae89b4a4a83345f63f5",
      "parents": [
        "6307456e9a6795bbe167ab5f501df05962432a31",
        "732417aa2c80eac116607d0c2e7f2ad5c5bddcdc"
      ],
      "author": {
        "name": "Eric Huss",
        "email": "eric@huss.org",
        "time": "Mon Apr 20 22:27:01 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 22:27:01 2026 +0000"
      },
      "message": "chore(ci): Use `actions/deploy-pages` for Cargo Contributor Guide deployment (#16876)\n\nThis replaces the `gh-pages` git branch deployment with the official\n`actions/upload-pages-artifact` and `actions/deploy-pages` actions.\n\nIt requires changing the repository\u0027s Pages settings from \"Deploy from a\nbranch\" to \"GitHub Actions\" as described also in\nhttps://github.com/rust-lang/rfcs/pull/3419, which has used a similar\nsetup for a while now.\n\nI\u0027ve tested the `build` job in my forked repo and verified that the\nartifact contents match the current content of the `gh-pages` branch. I\ndid not test the `deploy` job with my fork repo, but since it is the\nsame as in e.g. the `rfcs` repo I don\u0027t expect any issues from that.\n"
    },
    {
      "commit": "6307456e9a6795bbe167ab5f501df05962432a31",
      "tree": "aad8cbfdfa7a2a87abe39d828c673f54f3ff8815",
      "parents": [
        "72d80ecb5f78a5f8a5f88daa81fe2979d0a4d010",
        "810cb7e8f45bee5cd13fbd4d8f8c2812fdb75efc"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Mon Apr 20 21:06:40 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 21:06:40 2026 +0000"
      },
      "message": "Convert GitHub fast path to use http_async (#16912)\n\n### What does this PR try to resolve?\n\n- Add a new `request_blocking` function to the `http_async` module. This\nfunction does not start an executor and runs the request on the current\nthread, preventing #16860\n- Migrates the GitHub fastpath to use the blocking http_async client.\n\ncc #16845\n\n### How to test and review this PR?\n\nCommit by commit. All commits pass tests.\n"
    },
    {
      "commit": "732417aa2c80eac116607d0c2e7f2ad5c5bddcdc",
      "tree": "c41b2d6afa49fdace8409f502edfe5d38af85f82",
      "parents": [
        "6a433fdb52bc4f016a2e461da0b4ea3660dbec08"
      ],
      "author": {
        "name": "Tobias Bieniek",
        "email": "tobias@bieniek.cloud",
        "time": "Mon Apr 20 20:49:01 2026 +0200"
      },
      "committer": {
        "name": "Tobias Bieniek",
        "email": "tobias@bieniek.cloud",
        "time": "Mon Apr 20 20:49:10 2026 +0200"
      },
      "message": "chore(ci): Remove `CNAME` file generation from `ci/generate.py`\n\n`CNAME` files are apparently ignored if GitHub Pages are deployed via GitHub Actions and instead the custom domain needs to be set in the repository settings.\n"
    },
    {
      "commit": "6a433fdb52bc4f016a2e461da0b4ea3660dbec08",
      "tree": "637812d1f5e7ad488b2ddaf540304f0f889629a3",
      "parents": [
        "72d80ecb5f78a5f8a5f88daa81fe2979d0a4d010"
      ],
      "author": {
        "name": "Tobias Bieniek",
        "email": "tobias@bieniek.cloud",
        "time": "Sun Apr 12 09:03:21 2026 +0200"
      },
      "committer": {
        "name": "Tobias Bieniek",
        "email": "tobias@bieniek.cloud",
        "time": "Mon Apr 20 20:49:10 2026 +0200"
      },
      "message": "chore(ci): Use `actions/deploy-pages` for Cargo Contributor Guide deployment\n\nReplace git worktree-based deployment with the official\n`actions/upload-pages-artifact` and `actions/deploy-pages` actions.\n\nThis requires changing the repository\u0027s Pages settings from\n\"Deploy from a branch\" to \"GitHub Actions\".\n"
    },
    {
      "commit": "810cb7e8f45bee5cd13fbd4d8f8c2812fdb75efc",
      "tree": "63cec3321abd699a84c69f85692f370910e4a045",
      "parents": [
        "bff19308e7de1630c74500d847d6025335303603"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:09:08 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:09:08 2026 -0500"
      },
      "message": "convert github fast path to use http_async\n\nDoes not start an async executor, so cannot panic due to executor nesting\n"
    },
    {
      "commit": "bff19308e7de1630c74500d847d6025335303603",
      "tree": "600e6ee678bb68ab3c7bdb0d1b1c194e69b17be9",
      "parents": [
        "14c6be40d72f77d593006140d816b810b10716cd"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:07:21 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:07:21 2026 -0500"
      },
      "message": "Add request_blocking function to http_async\n"
    },
    {
      "commit": "14c6be40d72f77d593006140d816b810b10716cd",
      "tree": "e9959e6321e956d23662de17bc2746591b0c6628",
      "parents": [
        "4a208f60f97b9e2fd9a2236cf2f74fdfbb58d8b4"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:06:45 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:06:45 2026 -0500"
      },
      "message": "move curl request processing into helper function\n"
    },
    {
      "commit": "4a208f60f97b9e2fd9a2236cf2f74fdfbb58d8b4",
      "tree": "17c76431358072039f2758cd19c6e089d0b8ea9c",
      "parents": [
        "c3dbe6e40f4235cc1025577326834187e36b4a34"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:05:54 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Mon Apr 20 11:05:54 2026 -0500"
      },
      "message": "move curl response processing into separate function\n"
    },
    {
      "commit": "72d80ecb5f78a5f8a5f88daa81fe2979d0a4d010",
      "tree": "e8db5dcd04be623051e2604c43543812e59478ff",
      "parents": [
        "c3dbe6e40f4235cc1025577326834187e36b4a34",
        "f87e56f423d4d04876c3cbeaaeff04a0ef681648"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Mon Apr 20 15:35:23 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Apr 20 15:35:23 2026 +0000"
      },
      "message": "refactor(network): convert .crate downloads to use http_async (#16902)\n\n### What does this PR try to resolve?\n\n* Makes the existing `download` and `finish_download` methods `async`.\nIt may be possible to do a future refactor PR that combines these two\nmethods together, since they no longer need to be separated to get\nparallel downloads. This could be a nice future simplification.\n* Remove the direct use of `curl::Multi` for downloading crates in\nparallel, and replace it with `http_async`.\n* Add `.unordered()` to several test file references. The async\ndownloader is less deterministic in the order that it performs\ndownloads, which would otherwise make the tests flaky.\n\ncc #16845\n\n### How to test and review this PR?\n\nCommit by commit. All commits pass tests.\n\nr? @weihanglo\n"
    },
    {
      "commit": "c3dbe6e40f4235cc1025577326834187e36b4a34",
      "tree": "f8450776b2aea66781e53750ad68bf6cee30ecbb",
      "parents": [
        "7ecf0285ebb408d596e4a8ac76a0980d8edb7005",
        "c22abd388cef348000ea87490289807af9571bdb"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Sun Apr 19 04:14:59 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sun Apr 19 04:14:59 2026 +0000"
      },
      "message": "fix(tests): flaky test local_poll_adapter deferred_success (#16909)\n\nThe deferred_success test used a timer to create a task future that\nwould yield. Sometimes the timer was short enough that it had elapsed by\nthe time it was supposed to yield, so the task didn\u0027t yield as the test\nexpected.\n\nThis change replaces the timer with a future that always yields exactly\nonce.\n\nFixes #16907\n"
    },
    {
      "commit": "c22abd388cef348000ea87490289807af9571bdb",
      "tree": "f8450776b2aea66781e53750ad68bf6cee30ecbb",
      "parents": [
        "7ecf0285ebb408d596e4a8ac76a0980d8edb7005"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Sat Apr 18 21:48:37 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Sat Apr 18 21:48:37 2026 -0500"
      },
      "message": "fix: flaky test: local_poll_adapter::deferred_success\n\nThe deferred_success test used a timer to create a task\nfuture that would yield. Sometimes the timer was short\nenough that it had elapsed, so the task didn\u0027t yield in\nas the test expected.\n\nThis change replaces the timer with a future that always\nyields exactly once.\n"
    },
    {
      "commit": "7ecf0285ebb408d596e4a8ac76a0980d8edb7005",
      "tree": "9354a4a9e634c30503d21fa8dc8d24673961aa8e",
      "parents": [
        "6ea2e7161c1cf1c2ed9f96455d33d8d14018753b",
        "21bcb1d4a139236f0b0909f9c096ae0d0740afb3"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Sat Apr 18 15:34:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 15:34:11 2026 +0000"
      },
      "message": "fix: use `portable-atomic` for 64-bit atomics (#16906)\n\n### What does this PR try to resolve?\n\n`std::sync::atomic::{AtomicU64, AtomicI64}`\nare not available on some tier 2 32-bit platforms.\n\nReplace them with `portable_atomic`,\nwhich is already a transitive dependency via `gix` and `jiff`\n\nSee\n\n* https://triage.rust-lang.org/gha-logs/rust-lang/rust/71938527712\n* rust-lang/rust#155470\n\nThis also removes some other unnecessary AtomicU64 gates in\n\n* cargo-util\n* tracing-chrome\n\n### How to test and review this PR?\n"
    },
    {
      "commit": "21bcb1d4a139236f0b0909f9c096ae0d0740afb3",
      "tree": "9354a4a9e634c30503d21fa8dc8d24673961aa8e",
      "parents": [
        "08f5545b3b7cde398892b43543d275173773530f"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 10:13:09 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 10:26:05 2026 -0400"
      },
      "message": "chore: remove `target_has_atomic` gate from `tracing-chrome`\n\n`tracing-chrome@0.7.2` switched to `AtomicUsize`\nso the cfg gate was unnecessary.\nhence enabling our internal profiling support on all platforms.\n\nSee \u003chttps://diff.rs/tracing-chrome/0.7.1/0.7.2/src%2Flib.rs\u003e\n"
    },
    {
      "commit": "08f5545b3b7cde398892b43543d275173773530f",
      "tree": "50494b2a40aba10a02e274bf5bc51b582cddc01d",
      "parents": [
        "d5c6b62fcbb5d707384e40f27917b1187ed7a0d1"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 10:04:39 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 10:04:42 2026 -0400"
      },
      "message": "refactor(cargo-util): move to portable-atomic\n\nThis is a partial revert of 1d35833e3b62b17ced3ffcbcb7ceb6483b91b743\n\nWe also downgrade to `Ordering::Relaxed`\nsince `ignore::WalkParallel` joins threads\n(while it is implementation details,\nit should otherwise a bug to whatever used its result after)\n"
    },
    {
      "commit": "d5c6b62fcbb5d707384e40f27917b1187ed7a0d1",
      "tree": "9160a78ab8efdf847f958f8f13eca890c4e7dbb7",
      "parents": [
        "a31bfbffac8afd1d8169196ffc916c97dde4bcdb"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 08:38:44 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 09:51:43 2026 -0400"
      },
      "message": "chore: disallow `AtomicI64` also\n"
    },
    {
      "commit": "a31bfbffac8afd1d8169196ffc916c97dde4bcdb",
      "tree": "ebe045390aa4bc5a016dfe5cd8ebda86757f2d76",
      "parents": [
        "64f472c5ed65b2a5e4e82cda55ded04d665c7a46"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 08:35:53 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 09:46:17 2026 -0400"
      },
      "message": "chore: enable `disallowed_types` lint\n\nWe added this configuration but forgot to enabled it in lints\n\nSee https://github.com/rust-lang/cargo/pull/12988\n"
    },
    {
      "commit": "64f472c5ed65b2a5e4e82cda55ded04d665c7a46",
      "tree": "4478a5d2dbe130e6b088d10d9f079d127065ce1f",
      "parents": [
        "6ea2e7161c1cf1c2ed9f96455d33d8d14018753b"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 09:42:30 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Sat Apr 18 09:46:16 2026 -0400"
      },
      "message": "fix: use `portable-atomic` for 64-bit atomics\n\n`std::sync::atomic::{AtomicU64, AtomicI64}`\nare not available on some tier 2 32-bit platforms.\n\nReplace them with `portable_atomic`,\nwhich is already a transitive dependency via `gix` and `jiff`\n\nSee\n\n* https://triage.rust-lang.org/gha-logs/rust-lang/rust/71938527712\n* https://github.com/rust-lang/rust/pull/155470#issuecomment-4273312423\n"
    },
    {
      "commit": "6ea2e7161c1cf1c2ed9f96455d33d8d14018753b",
      "tree": "a8a0df830a4f978b13a621ec5f3244815b85e930",
      "parents": [
        "3bf1388b8823ec4eab622340036593381d8871aa",
        "1ba5fc5daa5de82ae67a4610391b4d17fa1a911a"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Sat Apr 18 04:22:42 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Sat Apr 18 04:22:42 2026 +0000"
      },
      "message": "fix: rename incorrectly documented target-spec-json to json-target-sp… (#16905)\n\nClose #16896.\n"
    },
    {
      "commit": "1ba5fc5daa5de82ae67a4610391b4d17fa1a911a",
      "tree": "a8a0df830a4f978b13a621ec5f3244815b85e930",
      "parents": [
        "3bf1388b8823ec4eab622340036593381d8871aa"
      ],
      "author": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Sat Apr 18 03:42:52 2026 +0000"
      },
      "committer": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Sat Apr 18 03:42:52 2026 +0000"
      },
      "message": "fix: rename incorrectly documented target-spec-json to json-target-spec in documentation\n"
    },
    {
      "commit": "f87e56f423d4d04876c3cbeaaeff04a0ef681648",
      "tree": "a33181cabae0f17754985de0adc73a0c683ff14f",
      "parents": [
        "eb64de930a12dbd674bf135673b459a442a35e9c"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 19:22:15 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 19:22:22 2026 -0500"
      },
      "message": "remove dead code: sleep.rs\n"
    },
    {
      "commit": "eb64de930a12dbd674bf135673b459a442a35e9c",
      "tree": "16acc4ea169775b0ccf2c431b129e5d1421ad145",
      "parents": [
        "8d5d09733588530e381efc786c3745dca67e990e"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 10:45:15 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 19:22:22 2026 -0500"
      },
      "message": "Download crates using http_async\n\nRemoves the existing Multi-based interface to use the http_async\nabstraction for downloading crates.\n"
    },
    {
      "commit": "8d5d09733588530e381efc786c3745dca67e990e",
      "tree": "0bedcce2a2a3d03cbc76d84858e4daaffef55f0d",
      "parents": [
        "cd7dd6789ac959b4f6fad505e3fec35f043da068"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 12:15:09 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 19:22:22 2026 -0500"
      },
      "message": "use .unordered() on test outputs that downloads multiple crates\n"
    },
    {
      "commit": "cd7dd6789ac959b4f6fad505e3fec35f043da068",
      "tree": "dcd9a983df62e9c1f6a363f7a9c575970d3d95a3",
      "parents": [
        "3bf1388b8823ec4eab622340036593381d8871aa"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 10:36:02 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 19:22:22 2026 -0500"
      },
      "message": "Make download and finish_download async\n\nMakes the two crate downloading methods async\n"
    },
    {
      "commit": "3bf1388b8823ec4eab622340036593381d8871aa",
      "tree": "87128d632db47df4ebb6e989f3e1419320daf75c",
      "parents": [
        "da06c615cfa5f28d7e1babd144cc2678121e883e",
        "b42cd8b7075b07767e0cc200fe83271abf5cc55c"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 23:27:26 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 23:27:26 2026 +0000"
      },
      "message": "Add global HTTP timeout tracking to http_async (#16903)\n\n### What does this PR try to resolve?\n\nThis brings `http_async` up to match how the .crate downloader works by\nhaving a global HTTP timeout handled by cargo rather than setting the\ntimeout parameters on each curl handle.\n\n* Timeouts for fetching sparse registries are now less strict (matching\ndownloading crates).\n* Correctly retry curl errors from `http_async`. Previously only HTTP\nerrors would be retried. Now connection-level errors are also retried.\n* Adds a new `bytes_pending` function to `http_async` that indicates the\ntotal number of (known) bytes remaining to transfer.\n\n### How to test and review this PR?\nCommit by commit.\n\ncc #16845\n\nr? @weihanglo\n"
    },
    {
      "commit": "b42cd8b7075b07767e0cc200fe83271abf5cc55c",
      "tree": "e2f9616129fb9ae17340f0bb3292faac789592d0",
      "parents": [
        "963787c7591d9f59694de695e367dd0040ac070d"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 17:04:24 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 17:04:24 2026 -0500"
      },
      "message": "Add bytes_pending function to http_async\n"
    },
    {
      "commit": "963787c7591d9f59694de695e367dd0040ac070d",
      "tree": "b06c7e29371328cd091cfff03d53b7c8c8ecb933",
      "parents": [
        "509beee7726a259c9ff8fa276ef982ed352d935f"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 17:01:04 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 17:01:04 2026 -0500"
      },
      "message": "fix: add http_async types to spurious error detection\n\nThis is a fix, since we were not correctly retrying errors from\ncurl when using http_async.\n"
    },
    {
      "commit": "509beee7726a259c9ff8fa276ef982ed352d935f",
      "tree": "eb821d7e9e590203906468fae38fab37eca6bb55",
      "parents": [
        "be7b17acdfd5bf67bb693c9b19271986fbe7938e"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 16:59:44 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Fri Apr 17 16:59:44 2026 -0500"
      },
      "message": "Add global HTTP timeout tracking to http_async\n\nThis brings http_async up to match how the .crate downloader\nworks in terms of having a global HTTP timeout handled by cargo\nrather than setting the parameters on each curl handle.\n"
    },
    {
      "commit": "da06c615cfa5f28d7e1babd144cc2678121e883e",
      "tree": "a634e77b779edd1860c82e222cf998c67414a77d",
      "parents": [
        "72d5b5042d2185bf5625b8f1819b4a00bdfd5e92",
        "df2945feb84ab8b036036c83d7338e6e87a96041"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Fri Apr 17 20:57:52 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 20:57:52 2026 +0000"
      },
      "message": "feat(config): Stabilize `resolver.lockfile-path` config (#16694)\n\n*[View all\ncomments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/cargo/pull/16694)*\n\n### What does this PR try to resolve?\n\nCloses #14421\n\nOverall, this seems like a low policy knob for users to tweak in config\n(ie out of the way) so this seems relatively safe to stabilize.\n\n`resolver.lockfile-path` is a mechanism to override the default location\nfor lockfiles for local development\n- The filename must be specified and must be `Cargo.lock`\n- Making a decision about template support generally, and which\nvariables more specifically, was deferred out\n  - `{` and `}` are reserved to keep this a two-way door\n- Besides changing the location, all other lockfile behavior remains the\nsame, e.g. automatic creation of the lockfile, automatic parent\ndirectory creation, how `--locked` works\u0027\n- this remains consistent with config behavior\n- like `resolver.incompatible-rust-version`, `resolver.lockfile-path`\ndoes not apply to `cargo install`\n- like other paths in config, paths are relative to `.cargo`s parent\ndirectory if `.cargo/config.toml` is used and the current working\ndirectory for env variables and CLI.\n\nThis started out as a principled workaround to no or outdated lockfiles\non read-only filesystems. This could also help with users who juggle\nmultiple lockfiles (e.g. \"latest\" vs \"msrv\") particularly when they can\nhave dedicated config files for the different lockfiles and override\nother relevant resolver settings in the same config file.\n\nAlternatives\n- `--lockfile-path`: which this feature started its life as, see #5707\n- #15510 has a use case for this also to be done via an env variable\n(pain on user to always specify the flag)\n- A dedicated CLI flag doesn\u0027t feel like it carries its own weight (see\nalso #6100)\n- A config field more obvious semantics (\"change the default\") vs a flag\nwhich questions like \"should `cargo install --lockfile-path foo` imply\n`--locked`?\"\n\nSee also\n- Summary of the original cargo team discussion:\nhttps://github.com/rust-lang/cargo/issues/5707#issuecomment-2231276362\n- Discussion for changing to env variable\nhttps://github.com/rust-lang/cargo/issues/15510#issuecomment-2866887888\n\n**Unresolved questions from the tracking issue:**\n\n\u003e Inconsistency in `resolver` table being applied to `cargo install`\n\u003e\n\u003e `cargo install --lockfile-path\u003d\u003cpath\u003e` implies `--locked`, and\nrequires the alternative lockfile to exist.\n\n`cargo install` no longer respects `resolver.lockfile-path` so we remain\nconsistent on `[resolver]` never applying to `cargo install`.\n\n\u003e How this should work if the lockfile or a parent directory is not\npresent\n\nThis was from when the we had `--lockfile-path` instead which added its\nown set of policy questions.\nBy having this be a config that just overrides the default, all other\npolicies should remain the same.\n\n### How to test and review this PR?\n"
    },
    {
      "commit": "72d5b5042d2185bf5625b8f1819b4a00bdfd5e92",
      "tree": "0d14b8c77243ce24656bf9255eea9aeb28d34567",
      "parents": [
        "be7b17acdfd5bf67bb693c9b19271986fbe7938e",
        "03aee044d4065367f6d57de055cc257db8b9c181"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Fri Apr 17 17:55:02 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 17:55:02 2026 +0000"
      },
      "message": "chore(deps): update msrv (1 version) to v1.95 (#16897)\n\nThis PR contains the following updates:\n\n| Package | Update | Change |\n|---|---|---|\n| [MSRV:1](https://redirect.github.com/rust-lang/rust) | minor | `1.94`\n→ `1.95` |\n\n---\n\n### Release Notes\n\n\u003cdetails\u003e\n\u003csummary\u003erust-lang/rust (MSRV:1)\u003c/summary\u003e\n\n###\n[`v1.95`](https://redirect.github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1950-2026-04-16)\n\n[Compare\nSource](https://redirect.github.com/rust-lang/rust/compare/1.94.0...1.95.0)\n\n\\\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\u003d\n\n\u003ca id\u003d\"1.95-Language\"\u003e\u003c/a\u003e\n\n## Language\n\n- [Stabilize `if let` guards on match\narms](https://redirect.github.com/rust-lang/rust/pull/141295)\n- [`irrefutable_let_patterns` lint no longer lints on let\nchains](https://redirect.github.com/rust-lang/rust/pull/146832)\n- [Support importing path-segment keywords with\nrenaming](https://redirect.github.com/rust-lang/rust/pull/146972)\n- [Stabilize inline assembly for PowerPC and\nPowerPC64](https://redirect.github.com/rust-lang/rust/pull/147996)\n- [const-eval: be more consistent in the behavior of padding during\ntyped copies](https://redirect.github.com/rust-lang/rust/pull/148967)\n- [Const blocks are no longer evaluated to determine if expressions\ninvolving fallible operations can implicitly be\nconstant-promoted.](https://redirect.github.com/rust-lang/rust/pull/150557).\nExpressions whose ability to implicitly be promoted would depend on the\nresult of a const block are no longer implicitly promoted.\n- [Make operational semantics of pattern matching independent of crate\nand module](https://redirect.github.com/rust-lang/rust/pull/150681)\n\n\u003ca id\u003d\"1.95-Compiler\"\u003e\u003c/a\u003e\n\n## Compiler\n\n- [Stabilize `--remap-path-scope` for controlling the scoping of how\npaths get remapped in the resulting\nbinary](https://redirect.github.com/rust-lang/rust/pull/147611)\n- [Apply patches for CVE-2026-6042 and CVE-2026-40200 to vendored\nmusl](https://redirect.github.com/rust-lang/rust/pull/155171)\n\n\u003ca id\u003d\"1.95-Platform-Support\"\u003e\u003c/a\u003e\n\n## Platform Support\n\n- [Promote `powerpc64-unknown-linux-musl` to Tier 2 with host\ntools](https://redirect.github.com/rust-lang/rust/pull/149962)\n- [Promote `aarch64-apple-tvos` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n- [Promote `aarch64-apple-tvos-sim` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n- [Promote `aarch64-apple-watchos` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n- [Promote `aarch64-apple-watchos-sim` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n- [Promote `aarch64-apple-visionos` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n- [Promote `aarch64-apple-visionos-sim` to Tier\n2](https://redirect.github.com/rust-lang/rust/pull/152021)\n\nRefer to Rust\u0027s [platform support page][platform-support-doc]\nfor more information on Rust\u0027s tiered platform support.\n\n[platform-support-doc]:\nhttps://doc.rust-lang.org/rustc/platform-support.html\n\n\u003ca id\u003d\"1.95-Libraries\"\u003e\u003c/a\u003e\n\n## Libraries\n\n- [`thread::scope`: document how join interacts with TLS\ndestructors](https://redirect.github.com/rust-lang/rust/pull/149482)\n- [Speed up `str::contains` on aarch64 targets with `neon` target\nfeature enabled by\ndefault](https://redirect.github.com/rust-lang/rust/pull/152176)\n\n\u003ca id\u003d\"1.95-Stabilized-APIs\"\u003e\u003c/a\u003e\n\n## Stabilized APIs\n\n- [`MaybeUninit\u003c[T; N]\u003e: From\u003c[MaybeUninit\u003cT\u003e;\nN]\u003e`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3CMaybeUninit%3C%5BT;+N%5D%3E%3E-for-%5BMaybeUninit%3CT%3E;+N%5D)\n- [`MaybeUninit\u003c[T; N]\u003e: AsRef\u003c[MaybeUninit\u003cT\u003e;\nN]\u003e`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E)\n- [`MaybeUninit\u003c[T; N]\u003e:\nAsRef\u003c[MaybeUninit\u003cT\u003e]\u003e`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsRef%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E)\n- [`MaybeUninit\u003c[T; N]\u003e: AsMut\u003c[MaybeUninit\u003cT\u003e;\nN]\u003e`](https://doc.rust-lang.org/beta/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E)\n- [`MaybeUninit\u003c[T; N]\u003e:\nAsMut\u003c[MaybeUninit\u003cT\u003e]\u003e`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-AsMut%3C%5BMaybeUninit%3CT%3E%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E)\n- [`[MaybeUninit\u003cT\u003e; N]: From\u003cMaybeUninit\u003c[T;\nN]\u003e\u003e`](https://doc.rust-lang.org/stable/std/mem/union.MaybeUninit.html#impl-From%3C%5BMaybeUninit%3CT%3E;+N%5D%3E-for-MaybeUninit%3C%5BT;+N%5D%3E)\n- [`Cell\u003c[T; N]\u003e: AsRef\u003c[Cell\u003cT\u003e;\nN]\u003e`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E;+N%5D%3E-for-Cell%3C%5BT;+N%5D%3E)\n- [`Cell\u003c[T; N]\u003e:\nAsRef\u003c[Cell\u003cT\u003e]\u003e`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT;+N%5D%3E)\n- [`Cell\u003c[T]\u003e:\nAsRef\u003c[Cell\u003cT\u003e]\u003e`](https://doc.rust-lang.org/stable/std/cell/struct.Cell.html#impl-AsRef%3C%5BCell%3CT%3E%5D%3E-for-Cell%3C%5BT%5D%3E)\n- [`bool:\nTryFrom\u003c{integer}\u003e`](https://doc.rust-lang.org/stable/std/primitive.bool.html#impl-TryFrom%3Cu128%3E-for-bool)\n-\n[`AtomicPtr::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.update)\n-\n[`AtomicPtr::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicPtr.html#method.try_update)\n-\n[`AtomicBool::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.update)\n-\n[`AtomicBool::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicBool.html#method.try_update)\n-\n[`AtomicIn::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.update)\n-\n[`AtomicIn::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicIsize.html#method.try_update)\n-\n[`AtomicUn::update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.update)\n-\n[`AtomicUn::try_update`](https://doc.rust-lang.org/stable/std/sync/atomic/struct.AtomicUsize.html#method.try_update)\n-\n[`cfg_select!`](https://doc.rust-lang.org/stable/std/macro.cfg_select.html)\n- [`mod\ncore::range`](https://doc.rust-lang.org/stable/core/range/index.html)\n-\n[`core::range::RangeInclusive`](https://doc.rust-lang.org/stable/core/range/struct.RangeInclusive.html)\n-\n[`core::range::RangeInclusiveIter`](https://doc.rust-lang.org/stable/core/range/struct.RangeInclusiveIter.html)\n-\n[`core::hint::cold_path`](https://doc.rust-lang.org/stable/core/hint/fn.cold_path.html)\n- [`\u003c*const\nT\u003e::as_ref_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked)\n- [`\u003c*mut\nT\u003e::as_ref_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_ref_unchecked-1)\n- [`\u003c*mut\nT\u003e::as_mut_unchecked`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.as_mut_unchecked)\n-\n[`Vec::push_mut`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.push_mut)\n-\n[`Vec::insert_mut`](https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.insert_mut)\n-\n[`VecDeque::push_front_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_front_mut)\n-\n[`VecDeque::push_back_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.push_back_mut)\n-\n[`VecDeque::insert_mut`](https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.insert_mut)\n-\n[`LinkedList::push_front_mut`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_front_mut)\n-\n[`LinkedList::push_back_mut`](https://doc.rust-lang.org/stable/std/collections/struct.LinkedList.html#method.push_back_mut)\n-\n[`Layout::dangling_ptr`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.dangling_ptr)\n-\n[`Layout::repeat`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat)\n-\n[`Layout::repeat_packed`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.repeat_packed)\n-\n[`Layout::extend_packed`](https://doc.rust-lang.org/stable/std/alloc/struct.Layout.html#method.extend_packed)\n\nThese previously stable APIs are now stable in const contexts:\n\n-\n[`fmt::from_fn`](https://doc.rust-lang.org/stable/std/fmt/fn.from_fn.html)\n-\n[`ControlFlow::is_break`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_break)\n-\n[`ControlFlow::is_continue`](https://doc.rust-lang.org/stable/core/ops/enum.ControlFlow.html#method.is_continue)\n\n\u003ca id\u003d\"1.95-Rustdoc\"\u003e\u003c/a\u003e\n\n## Rustdoc\n\n- [In search results, rank unstable items\nlower](https://redirect.github.com/rust-lang/rust/pull/149460)\n- [Add new \"hide deprecated items\" setting in\nrustdoc](https://redirect.github.com/rust-lang/rust/pull/151091)\n\n\u003ca id\u003d\"1.95-Compatibility-Notes\"\u003e\u003c/a\u003e\n\n## Compatibility Notes\n\n- [Array coercions may now result in less inference constraints than\nbefore](https://redirect.github.com/rust-lang/rust/pull/140283)\n- Importing `$crate` without renaming, i.e. `use $crate::{self};`, is\nnow no longer permitted due to stricter error checking for `self`\nimports.\n- [const-eval: be more consistent in the behavior of padding during\ntyped copies.](https://redirect.github.com/rust-lang/rust/pull/148967)\nIn very rare cases, this may cause compilation errors due to bytes from\nparts of a pointer ending up in the padding bytes of a `const` or\n`static`.\n- [A future-incompatibility warning lint\n`ambiguous_glob_imported_traits` is now reported when using an\nambiguously glob imported\ntrait](https://redirect.github.com/rust-lang/rust/pull/149058)\n- [Check lifetime bounds of types mentioning only type\nparameters](https://redirect.github.com/rust-lang/rust/pull/149389)\n- [Report more visibility-related ambiguous import\nerrors](https://redirect.github.com/rust-lang/rust/pull/149596)\n- [Deprecate `Eq::assert_receiver_is_total_eq` and emit future\ncompatibility warnings on manual\nimpls](https://redirect.github.com/rust-lang/rust/pull/149978)\n- [powerpc64: Use the ELF ABI version set in target spec instead of\nguessing](https://redirect.github.com/rust-lang/rust/pull/150468) (fixes\nthe ELF ABI used by the OpenBSD target)\n- Matching on a `#[non_exhaustive]` enum [now reads the discriminant,\neven if the enum has only one\nvariant](https://redirect.github.com/rust-lang/rust/pull/150681). This\ncan cause closures to capture values that they previously wouldn\u0027t.\n- `mut ref` and `mut ref mut` patterns, part of the unstable [Match\nErgonomics 2024\nRFC](https://redirect.github.com/rust-lang/rust/issues/123076), were\naccidentally allowed on stable within struct pattern field shorthand.\nThese patterns are now correctly feature-gated as unstable in this\nposition.\n- [Add future-compatibility warning for derive helper attributes which\nconflict with built-in\nattributes](https://redirect.github.com/rust-lang/rust/pull/151152)\n- [JSON target\nspecs](https://doc.rust-lang.org/rustc/targets/custom.html) have been\ndestabilized and now require `-Z unstable-options` to use. Previously,\nthey could not be used without the standard library, which has no stable\nbuild mechanism. In preparation for the `build-std` project adding that\nsupport, JSON target specs are being proactively gated to ensure they\nremain unstable even if `build-std` is stabilized. Cargo now includes\nthe `-Z json-target-spec` CLI flag to automatically pass `-Z\nunstable-options` to the compiler when needed. See\n[#\u0026#8203;150151](https://redirect.github.com/rust-lang/rust/pull/150151),\n[#\u0026#8203;151534](https://redirect.github.com/rust-lang/rust/pull/150151),\nand\n[rust-lang/cargo#16557](https://redirect.github.com/rust-lang/cargo/pull/16557).\n- [The arguments of `#[feature]` attributes on invalid targets are now\nchecked](https://redirect.github.com/rust-lang/rust/issues/153764)\n\n\u003ca id\u003d\"1.95-Internal-Changes\"\u003e\u003c/a\u003e\n\n## Internal Changes\n\nThese changes do not affect any public interfaces of Rust, but they\nrepresent\nsignificant improvements to the performance or internals of rustc and\nrelated\ntools.\n\n- [Update to LLVM\n22](https://redirect.github.com/rust-lang/rust/pull/150722)\n\n\u003c/details\u003e\n\n---\n\n### Configuration\n\n📅 **Schedule**: (UTC)\n\n- Branch creation\n  - Every minute (`* * * * *`)\n- Automerge\n  - At any time (no schedule defined)\n\n🚦 **Automerge**: Disabled by config. Please merge this manually once you\nare satisfied.\n\n♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the\nrebase/retry checkbox.\n\n🔕 **Ignore**: Close this PR and you won\u0027t be reminded about this update\nagain.\n\n---\n\n- [ ] \u003c!-- rebase-check --\u003eIf you want to rebase/retry this PR, check\nthis box\n\n---\n\nThis PR was generated by [Mend Renovate](https://mend.io/renovate/).\nView the [repository job\nlog](https://developer.mend.io/github/rust-lang/cargo).\n\n\u003c!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xMjMuOCIsInVwZGF0ZWRJblZlciI6IjQzLjEyMy44IiwidGFyZ2V0QnJhbmNoIjoibWFzdGVyIiwibGFiZWxzIjpbXX0\u003d--\u003e\n"
    },
    {
      "commit": "03aee044d4065367f6d57de055cc257db8b9c181",
      "tree": "9ad133197a2105565bc4134cb3b93342a60ff1c0",
      "parents": [
        "d7ff567dec2ffd11ceff2f6a5bc2b30498854b2a"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Fri Apr 17 12:18:24 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Fri Apr 17 12:18:24 2026 -0500"
      },
      "message": "chore: Bump versions\n"
    },
    {
      "commit": "be7b17acdfd5bf67bb693c9b19271986fbe7938e",
      "tree": "0ba5ebc1515d66952adfb27d37ab7feea09a5099",
      "parents": [
        "ed0350d218613c2c95a1b307efdf9981891283dc",
        "c753ff41d5c70c27428d2cff21d12cbce7c82e9d"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Fri Apr 17 14:51:30 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 14:51:30 2026 +0000"
      },
      "message": "fix: rebuild rustdoc json for different versions of a same crate (#16773)\n\n*[View all\ncomments](https://triagebot.infra.rust-lang.org/gh-comments/rust-lang/cargo/pull/16773)*\n\nFix #16291.\n\n### What does this PR try to resolve?\n\nAs discussed in the linked issue, `cargo rustdoc --output-format\u003djson`\ndoesn\u0027t rebuild for same crate name but with different versions. This is\nbecause current cargo implementation around rustdoc only specifies\noutput paths/names by only its crate names, but not with version(hash)\ninfo.\n\nThis PR forces new layout for json output, and uplift the file into\nbackward-compatible place.\n\n### How to test and review this PR?\n\n- Can we consider just forcing new layout for `--output-format\u003djson`?\n(and stop uplifting)\n- Uplifting will always happen even if uplifted json is fresh, and/or\nnew layout is manually specified. (could not figure out how to prevent);\nhowever it is just a copy operation if docs JSON are already built and\nfresh.\n"
    },
    {
      "commit": "ed0350d218613c2c95a1b307efdf9981891283dc",
      "tree": "50842c83f31529f6590ba476f1f871947f01cde6",
      "parents": [
        "bf2f4a4a56d6b857eca7657839b51a90d50e20ae",
        "9cfe8e080bb5fb95355cbd6f680c01c70f3141b3"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Fri Apr 17 13:51:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 13:51:48 2026 +0000"
      },
      "message": "Add effective_url to http_async (#16899)\n\n### What does this PR try to resolve?\n\nAdds `effective_url` to `http_async`. The effective URL is already\ncaptured in some errors when using curl directly via the\n`HttpNotSuccessful::new_from_handle` function. Effective URL may differ\nfrom the original URL due to redirects.\n\nThis change adds the same functionality in `http_async` with a new\n`HttpNotSuccessful::new_from_response` function. The new function is\nthen used in sparse registry, which impacts error messages.\n\nAdditionally, the http_async `curl` errors are changed to be transparent\nto avoid making even longer error chains.\n\ncc #16845\n"
    },
    {
      "commit": "c753ff41d5c70c27428d2cff21d12cbce7c82e9d",
      "tree": "84abd9fe94ab15f1fd2ca70c134107d0802a4314",
      "parents": [
        "90695f167f75af2ef301df997fc0d7ea88e08c70"
      ],
      "author": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Fri Apr 17 13:28:48 2026 +0000"
      },
      "committer": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Fri Apr 17 13:28:48 2026 +0000"
      },
      "message": "fix: rebuild rustdoc json for different versions of a same crate\n"
    },
    {
      "commit": "90695f167f75af2ef301df997fc0d7ea88e08c70",
      "tree": "a182ee80b0fd2fd9ebe5c9884c73a4c77db54016",
      "parents": [
        "998be7de3ee585ea02259772c1ff261fdcbd5394"
      ],
      "author": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Fri Apr 17 13:27:41 2026 +0000"
      },
      "committer": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Fri Apr 17 13:27:41 2026 +0000"
      },
      "message": "refactor: remove redundant unstable options check in add_output_format()\n"
    },
    {
      "commit": "bf2f4a4a56d6b857eca7657839b51a90d50e20ae",
      "tree": "be79d9461f554fb3357e05c04ab4c7ea46480dd7",
      "parents": [
        "3643c8a76d771b6f041fb9ebee5a491609de1098",
        "501dd93c7ab8aab0049442e22afa427dd6942e19"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Fri Apr 17 05:37:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 05:37:11 2026 +0000"
      },
      "message": "Make crate downloads process as a queue rather than a stack (#16898)\n\nThe existing crate downloader pops the most recently completed download\noff when processing completed download. This results in the downloads\nfinishing backwards to the order they were started.\n\nIn practice, this only impacts when multiple crates finish at the same\ntime, such as when downloading from `file:///` URLs in the tests.\nOtherwise, the crates are processed in the order they finish\ndownloading.\n\nEmulating this behavior when converting to `http_async` is difficult,\nhence this change.\n\ncc #16845\n"
    },
    {
      "commit": "3643c8a76d771b6f041fb9ebee5a491609de1098",
      "tree": "a4f2ca08fe62f21b34b0adb0cdc13bf845402b4d",
      "parents": [
        "88982db0d1f2ece64a9f20d1d40c77a77eaa77e6",
        "6dd3fdbf567776647c97edfea34ca858281a1c80"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Fri Apr 17 05:21:29 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Apr 17 05:21:29 2026 +0000"
      },
      "message": "fix: sparse registry fetch progress reporting (#16900)\n\n### What does this PR try to resolve?\n\nThis makes the sparse progress update work a little better. Previously\nit would display `N completed; M pending`, when all of `N` had not\nactually finished yet. This is a regression in the new `async_http`\nsparse remote. With this change, N now ticks up as M ticks down.\n\nFor example:\nBefore\n```\n4 completed; 3 pending\n4 completed; 2 pending\n4 completed; 1 pending\n```\nAfter\n```\n1 completed; 3 pending\n2 completed; 2 pending\n3 completed; 1 pending\n```\n\n### How to test and review this PR?\nThere are no tests for this interactive progress reporting. To validate\nit yourself, I suggest `cargo update --dry-run`.\n\ncc #16845\n"
    },
    {
      "commit": "501dd93c7ab8aab0049442e22afa427dd6942e19",
      "tree": "02e96e932463a86a2b99890d57a9b54411aed10a",
      "parents": [
        "88982db0d1f2ece64a9f20d1d40c77a77eaa77e6"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 12:20:00 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 23:46:02 2026 -0500"
      },
      "message": "Make crate downloads process as a queue rather than a stack\n\nThe existing crate downloader popd the most recently completed\ndownload off when processing. This results in the downloads\nhappening backwards to the order they were started.\n\nThe change uses a queue instead and updates the test output\n"
    },
    {
      "commit": "6dd3fdbf567776647c97edfea34ca858281a1c80",
      "tree": "a4f2ca08fe62f21b34b0adb0cdc13bf845402b4d",
      "parents": [
        "88982db0d1f2ece64a9f20d1d40c77a77eaa77e6"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 21:59:26 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 23:32:35 2026 -0500"
      },
      "message": "fix: don\u0027t add to fresh until after download is complete\n\nThis makes the sparse progress update work a little better. Previously it would display\nN completed, M pending, when N had not actually finished yet.\n\nWith this change, N now ticks up exactly as M ticks down\n"
    },
    {
      "commit": "9cfe8e080bb5fb95355cbd6f680c01c70f3141b3",
      "tree": "e0eb18f57315f0c1ebf9a89dbc10cc45ef3ae04f",
      "parents": [
        "88982db0d1f2ece64a9f20d1d40c77a77eaa77e6"
      ],
      "author": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Wed Apr 01 11:32:07 2026 -0500"
      },
      "committer": {
        "name": "Arlo Siemsen",
        "email": "arkixml@gmail.com",
        "time": "Thu Apr 16 23:26:10 2026 -0500"
      },
      "message": "Add effective_url to http_async\n"
    },
    {
      "commit": "d7ff567dec2ffd11ceff2f6a5bc2b30498854b2a",
      "tree": "05be0e5224df14b4c503ac11077fcdba7d93032d",
      "parents": [
        "33ffcbff889ec833c48f0efbc687c27d8d052b66"
      ],
      "author": {
        "name": "renovate[bot]",
        "email": "29139614+renovate[bot]@users.noreply.github.com",
        "time": "Thu Apr 16 19:27:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 19:27:28 2026 +0000"
      },
      "message": "chore(deps): update msrv (1 version) to v1.95"
    },
    {
      "commit": "88982db0d1f2ece64a9f20d1d40c77a77eaa77e6",
      "tree": "412dd3e189b6623155cae354c8620b0bec07beca",
      "parents": [
        "33ffcbff889ec833c48f0efbc687c27d8d052b66",
        "175f096e52273fc3b2c2c7562e60903b8720484c"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Thu Apr 16 19:26:24 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 19:26:24 2026 +0000"
      },
      "message": "chore: bump to 0.98.0; update changelog (#16892)\n\n[rendered](https://github.com/weihanglo/cargo/blob/version-bump/src/doc/src/CHANGELOG.md)\n\nor preview through `mdbook serve src/doc`\n"
    },
    {
      "commit": "175f096e52273fc3b2c2c7562e60903b8720484c",
      "tree": "412dd3e189b6623155cae354c8620b0bec07beca",
      "parents": [
        "6b85674f174e65377ebe5d725a833ad1161f0ba4"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Wed Apr 15 23:54:09 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 14:53:56 2026 -0400"
      },
      "message": "docs(changelog): 1.97.0 update\n"
    },
    {
      "commit": "6b85674f174e65377ebe5d725a833ad1161f0ba4",
      "tree": "f50e159716cf48b728bc80c8c7059c248f7b7941",
      "parents": [
        "6a3a9dec1af431c25b1264c21a565587a05fdca2"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Wed Apr 15 23:53:56 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 14:53:56 2026 -0400"
      },
      "message": "docs(changelog): 1.96.0 update\n"
    },
    {
      "commit": "6a3a9dec1af431c25b1264c21a565587a05fdca2",
      "tree": "e199c73aea1ae6cbe5a3b8a82b3092a8c8a28e1f",
      "parents": [
        "ba8601ca6e0302788a9c1e54aeb52a9367e5dd30"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Wed Apr 15 23:47:55 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 14:53:56 2026 -0400"
      },
      "message": "docs(changelog): 1.95.0 update\n"
    },
    {
      "commit": "ba8601ca6e0302788a9c1e54aeb52a9367e5dd30",
      "tree": "5266970014236c8e796a4dc36b83b43427ce28c3",
      "parents": [
        "33ffcbff889ec833c48f0efbc687c27d8d052b66"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Tue Apr 14 22:21:49 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 14:53:55 2026 -0400"
      },
      "message": "chore: bump to 0.98.0\n"
    },
    {
      "commit": "33ffcbff889ec833c48f0efbc687c27d8d052b66",
      "tree": "9232b621c8809962660eb51c92192b0a6e1de1dd",
      "parents": [
        "b7de9d4e3ac870e1d7f5f9f97a3ac80533d499d9",
        "a07944b9002dbeff6af32ab58efbecdb57a1f455"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Thu Apr 16 18:02:30 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 16 18:02:30 2026 +0000"
      },
      "message": "docs(semver-check): update diagnostics to Rust 1.95 (#16895)\n\nSee\nhttps://github.com/rust-lang/cargo/actions/runs/24515552632/job/71658352382?pr\u003d16892\n\n```\nerror: test failed for example starting on line 1322: expected error message not found in compiler output\nExpected: the trait `Trait` is not dyn compatible\nGot:\nerror[E0038]: the trait `updated_crate::Trait` is not dyn compatible\n  --\u003e /tmp/.tmp0LpIwx/example.rs:10:22\n   |\n10 |     let obj: Box\u003cdyn Trait\u003e \u003d Box::new(Foo);\n   |                      ^^^^^ `updated_crate::Trait` is not dyn compatible\n   |\nnote: for a trait to be dyn compatible it needs to allow building a vtable\n      for more information, visit \u003chttps://doc.rust-lang.org/reference/items/traits.html#dyn-compatibility\u003e\n  --\u003e /tmp/.tmp0LpIwx/after.rs:6:11\n   |\n 6 |     const CONST: i32 \u003d 123;\n   |           ^^^^^ the trait is not dyn compatible because it contains associated const `CONST`\n   \u003d help: only type `Foo` implements `updated_crate::Trait`; consider using it directly instead.\n\nerror: aborting due to 1 previous error\n```\n"
    },
    {
      "commit": "a07944b9002dbeff6af32ab58efbecdb57a1f455",
      "tree": "9232b621c8809962660eb51c92192b0a6e1de1dd",
      "parents": [
        "b7de9d4e3ac870e1d7f5f9f97a3ac80533d499d9"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 11:24:43 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Thu Apr 16 11:24:43 2026 -0400"
      },
      "message": "docs(semver-check): update diagnostics to Rust 1.95\n"
    },
    {
      "commit": "998be7de3ee585ea02259772c1ff261fdcbd5394",
      "tree": "1f993e8676f387bf21186f809ddcbf7a27515513",
      "parents": [
        "428d32615a746f2e972d20cb5f889bfb0efbb2d0"
      ],
      "author": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Thu Mar 26 18:45:07 2026 +0000"
      },
      "committer": {
        "name": "motorailgun",
        "email": "28751910+motorailgun@users.noreply.github.com",
        "time": "Thu Apr 16 03:00:29 2026 +0000"
      },
      "message": "chore: add tests for rustdoc json output rebuild\n"
    },
    {
      "commit": "b7de9d4e3ac870e1d7f5f9f97a3ac80533d499d9",
      "tree": "83cfc330133058219f454fa3bbaaf28a4ed3f4ad",
      "parents": [
        "393088c0f3b47f75550d792feebe618eca5fa8b4",
        "5879a3bd3270c7abb7f195a2bdd20933c3c8841f"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Wed Apr 15 17:03:09 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 17:03:09 2026 +0000"
      },
      "message": "docs(ref): Better highlight \u0027package --list\u0027 for include/exclude (#16891)\n\n### What does this PR try to resolve?\n\nWith the suggestion of `cargo package --list` at the end of a paragraph,\nit could be easy to miss. Moving it into a note in case it helps\nencourage its use.\n\n### How to test and review this PR?\n"
    },
    {
      "commit": "393088c0f3b47f75550d792feebe618eca5fa8b4",
      "tree": "babf8f2cfa3614f50e5e07e1dd62e25434274f4b",
      "parents": [
        "f4f977ff6fc657b3bcf3ac1addd4fd62387ddd46",
        "f083c44bf61e648d6cf02a1c52a16efff7ea88a9"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 15:55:08 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 15:55:08 2026 +0000"
      },
      "message": "docs: `include` doesnt apply gitignore from repo (#16890)\n\n### What does this PR try to resolve?\n\nThis makes it more explicitly.\n\nfixes https://github.com/rust-lang/cargo/issues/16889\n\n### How to test and review this PR?\n\nI didn\u0027t try adding more for the others. They are resolved or mentioned\nalready:\n\n\u003e Files in gitignored directories may still be matched unexpectedly\n\nThis is more a concern in `cargo package`/`cargo publish`. The doc\nalready encourages checking the result of `cargo package --list` before\npublishing. The addition in this PR also explicitly say gitignore from\nGit is not respected by `include`.\n\n\u003e The ! prefix can be used to explicitly exclude such paths\n\nThis is mentioned a few lines down.\n\nhttps://github.com/rust-lang/cargo/blob/f4f977ff6fc657b3bcf3ac1addd4fd62387ddd46/src/doc/src/reference/manifest.md?plain\u003d1#L417-L419\n"
    },
    {
      "commit": "5879a3bd3270c7abb7f195a2bdd20933c3c8841f",
      "tree": "8b71c2363026a98f07781c063db1a7247000d55f",
      "parents": [
        "b0942d3fd2c59771c16fb4aae34f3e5ad106b78f"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 10:32:48 2026 -0500"
      },
      "committer": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Wed Apr 15 10:32:48 2026 -0500"
      },
      "message": "docs(ref): Better highlight \u0027package --list\u0027 for include/exclude\n"
    },
    {
      "commit": "f083c44bf61e648d6cf02a1c52a16efff7ea88a9",
      "tree": "babf8f2cfa3614f50e5e07e1dd62e25434274f4b",
      "parents": [
        "f4f977ff6fc657b3bcf3ac1addd4fd62387ddd46"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Wed Apr 15 09:32:01 2026 -0400"
      },
      "committer": {
        "name": "Weihang Lo",
        "email": "me@weihanglo.tw",
        "time": "Wed Apr 15 09:32:01 2026 -0400"
      },
      "message": "docs: `include` doesnt apply gitignore from repo\n"
    },
    {
      "commit": "f4f977ff6fc657b3bcf3ac1addd4fd62387ddd46",
      "tree": "7cd89019443b7a34bd41b7ab5c52f274be1af432",
      "parents": [
        "0bcac2eecc8caf1f0c62c51df6214e8cc6c9c178",
        "10dc107e0d0f25a3168bfde08aeb1505484502fc"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Wed Apr 15 11:11:56 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 11:11:56 2026 +0000"
      },
      "message": "fix: Update `bash` and `zsh` Autocompletion Documents to add `-m` (#16888)\n\n### What does this PR try to resolve?\n\n- Act on [this\nrequest](https://github.com/rust-lang/cargo/pull/16858#issuecomment-4248392904)\nin #16858\n- `-m` is short for `--manifest-path`, and must be added in places where\n`--manifest-path` could be accepted.\n\n### How to test and review this PR?\n\n- Use `zsh`, `bash`, or any other shell where Cargo provides\nautocomplete support, and ensure `-m` has identical behaviour to\n`--manifest-path`\n\n### Notes\n\n- I\u0027ve never worked on these autocomplete documents before, so I\u0027m\nassuming the modifications I\u0027ve made are correct based on existing\ninstances of shorthand (e.g., `-F`)\n- ~~Creating as a draft until #16858 is merged (which should be very\nsoon).~~\n- No AI tooling of any kind was used during the creation of this PR.\n"
    },
    {
      "commit": "10dc107e0d0f25a3168bfde08aeb1505484502fc",
      "tree": "7cd89019443b7a34bd41b7ab5c52f274be1af432",
      "parents": [
        "0bcac2eecc8caf1f0c62c51df6214e8cc6c9c178"
      ],
      "author": {
        "name": "Zac Harrold",
        "email": "zac@harrold.com.au",
        "time": "Wed Apr 15 11:26:08 2026 +1000"
      },
      "committer": {
        "name": "Zac Harrold",
        "email": "zac@harrold.com.au",
        "time": "Wed Apr 15 14:55:01 2026 +1000"
      },
      "message": "fix: Update `bash` and `zsh` Autocompletion Documents to add `-m`\n\n`-m` is short for `--manifest-path`, and must be added in places where `--manifest-path` could be accepted.\n"
    },
    {
      "commit": "0bcac2eecc8caf1f0c62c51df6214e8cc6c9c178",
      "tree": "0fd67167dd4e94519421e28024bec4b843e1e0ea",
      "parents": [
        "b0f187be8d4a2b005bdd1285ddaf518b80f9a111",
        "53e8ba11c267b2662d95352709e0291090774c3b"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Wed Apr 15 01:22:47 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Apr 15 01:22:47 2026 +0000"
      },
      "message": "Add `-m` shorthand for `--manifest-path` (#16858)\n\n### What does this PR try to resolve?\n\n* Solves #16726\n\n### How to test and review this PR?\n\n* In cases where you would expect `--manifest-path` to work, try `-m`\ninstead.\n\n---\n\n### Notes\n\n* First time contributing to `cargo` so please let me know what I can do\nto bring this PR up to par if I\u0027ve missed anything!\n* No AI tooling of any kind was used in the creation of this PR.\n"
    },
    {
      "commit": "b0f187be8d4a2b005bdd1285ddaf518b80f9a111",
      "tree": "f9678fcd93e52a6551a1af1cd53a9f2664df5585",
      "parents": [
        "17b41ae86d8d53d1aeac3a4a2dcb2162fc30ae02",
        "fe2b6ac7e176837577dbef5fde026ba87746aeaf"
      ],
      "author": {
        "name": "Dongpo Liu",
        "email": "poe.liu@pm.me",
        "time": "Tue Apr 14 20:57:48 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 20:57:48 2026 +0000"
      },
      "message": "Fix a typo (#16885)\n\n\"we consumers\" -\u003e \"the consumers\"\n"
    },
    {
      "commit": "17b41ae86d8d53d1aeac3a4a2dcb2162fc30ae02",
      "tree": "9b615bccaa1693abf9b41890d5f022e683ac3c2d",
      "parents": [
        "b0942d3fd2c59771c16fb4aae34f3e5ad106b78f",
        "9a2150b2f3c757f57236c9437e39af42fdd9060e"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 14 16:30:43 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 16:30:43 2026 +0000"
      },
      "message": "Always take a shared lock on `.cargo-lock` (#16886)\n\n### What does this PR try to resolve?\n\nThis PR changes the behavior to always take a shared lock on\n`.cargo-lock` to ensure backwards compatibility with older versions of\ncargo that do not lock `.cargo-build-lock`.\n\nTo allow `cargo check` and `cargo build` to continue running\nconcurrently `.cargo-artifact-lock` was added with the original behavior\nof `.cargo-lock`.\n\nWe may be able to revert this change after the new build-dir layout is\nstablized. (https://github.com/rust-lang/cargo/pull/16807)\n\ncloses: #16853\n\n### How to test and review this PR?\n\nSee the test changes\n"
    },
    {
      "commit": "9a2150b2f3c757f57236c9437e39af42fdd9060e",
      "tree": "10d5f9fde1f1ef30e1cf8ab96d9185d594b0bc9b",
      "parents": [
        "edf7ff01434287519767f9cd50b2b49beba5aee5"
      ],
      "author": {
        "name": "Ross Sullivan",
        "email": "rosssullivan101@gmail.com",
        "time": "Wed Apr 15 00:49:25 2026 +0900"
      },
      "committer": {
        "name": "Ross Sullivan",
        "email": "rosssullivan101@gmail.com",
        "time": "Wed Apr 15 00:49:25 2026 +0900"
      },
      "message": "fix: Always take a shared lock on `.cargo-lock`\n\nThis commit changes the behavior to always take a shared lock on\n`.cargo-lock` to ensure backwards compatiblity with older versions of\ncargo that do not lock `.cargo-build-lock`.\n\nTo allow `cargo check` and `cargo build` to continue running concurrently\n`.cargo-artifact-lock` was added with the original behavior of `.cargo-lock`.\n"
    },
    {
      "commit": "b0942d3fd2c59771c16fb4aae34f3e5ad106b78f",
      "tree": "10d1c4cf84003aa98554145cbecc3ac90411e436",
      "parents": [
        "273393c1843d291e9924f2712fa3519ece40d219",
        "8330a7ab09f1a6134fad62d59f2643ba255a945d"
      ],
      "author": {
        "name": "Weihang Lo",
        "email": "weihanglo@users.noreply.github.com",
        "time": "Tue Apr 14 13:48:11 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 13:48:11 2026 +0000"
      },
      "message": "fix(toml): Teach users how to pin edition (#16851)\n\n### What does this PR try to resolve?\n\nOnly when not `--quiet` (note: piped stderr implies `--quiet`)\n\nThis tries to strike a balance between\n- Helping users know how to react to the warning\n- Good noise that encourages users to pin the edition\n- Bad noise that overwhelms the throwaway scripts\n\n### How to test and review this PR\n"
    },
    {
      "commit": "273393c1843d291e9924f2712fa3519ece40d219",
      "tree": "7eb4fe25fb2d23e362cc31ffb0983dc9a4544f04",
      "parents": [
        "edf7ff01434287519767f9cd50b2b49beba5aee5",
        "4aec1e06016b7ca4e49787d75cd2feec2d9eb92e"
      ],
      "author": {
        "name": "Ed Page",
        "email": "eopage@gmail.com",
        "time": "Tue Apr 14 13:14:28 2026 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 14 13:14:28 2026 +0000"
      },
      "message": "fix: Prefer defined lint levels over default (#16879)\n\nThe current logic for selecting a level for a lint does not prioritize\ndefined lint levels over the default one. This led to cases where the\nwrong level, or `LintLevelReason`, was chosen. To address this, I did\ntwo things. The first was renaming `LintLevelReason` to\n`LintLevelSource`, this was done to better align the name with how it\nwill be used, as well as to align with how\n[Rust](https://github.com/rust-lang/rust/blob/14196dbfa3eb7c30195251eac092b1b86c8a2d84/compiler/rustc_middle/src/lint.rs#L19)\nnames its similar struct. The second thing is to add `LintLevelSource`\nto the `max_by_key` in `Lint::level`, as a way to prioritize defined\nlint levels over the default one.\n"
    }
  ],
  "next": "4aec1e06016b7ca4e49787d75cd2feec2d9eb92e"
}
