Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Alias all LFS64 symbols to their non-LFS64 counterparts on musl #2935

Merged
merged 15 commits into from
May 31, 2023

Conversation

bossmc
Copy link
Contributor

@bossmc bossmc commented Sep 30, 2022

As per #2934 the LFS64 symbols on musl-libc are simply aliases to the non-LFS64 symbols. Currently this is done both in the header files (as #define entries) and in the library (as aliasing symbols). There is a desire in musl to drop the ABI compatibility shims (the symbol aliases) - currently the libc crate exports the LFS64 symbols by extern-ing the compatibility shims which will fail if musl removes them.

This changes the musl build of libc to replicate the aliasing that's in the C header files (with pub use xxx as xxx64) so the API from the libc crate is unchanged, but the crate is now compatible with the upcoming musl release.

I've also checked and all the LFS64 types (e.g. off64_t) are already the same as their non-LFS64 equivalents.

This is an annoying change to test, libc-test seems expect to build against musl 1.1.24 (in fact, does Rust even support musl 1.2? It's not obvious that it does... e.g. see

// FIXME: musl added paddings and adjusted
// layout in 1.2.0 but our CI is still 1.1.24.
// So, I'm leaving some fields as comments for now.
// ref. https://github.com/bminor/musl/commit/
// 1e7f0fcd7ff2096904fd93a2ee6d12a2392be392
)

@rust-highfive
Copy link

r? @Amanieu

(rust-highfive has picked a reviewer for you, use r? to override)

@JohnTitor
Copy link
Member

This is a breaking change, we have to deprecate them on musl first otherwise user code depending on them would be broken.

@bossmc
Copy link
Contributor Author

bossmc commented Oct 2, 2022

Unless I've missed something, this isn't a breaking change (at a crate API level at least) - all the types and functions that used to exist still do and still have the same name/arguments/structure/alignment etc. The only difference is that when rust code calls xxx64(*const xxx64_t) it will actually call the xxx function in the musl library (which it was already doing since the xxx64 symbol in the library was a link-time alias to the xxx symbol).

I've done a bit more work on this (ensuring that the complex types are rust-level aliases to each other on musl so they can be passed to either function without failing type checks), though I'm not sure it's complete (I've not done this for the structs in musl's b64 or b32 modules yet - and I'm unsure what needs to happen in the b32 case).

Comment on lines 748 to 802
// Musl's standard entrypoints are already LFS64 compatible, historically the library aliased
// these together in header files (as `#define`s) _and_ in the library with weak symbol aliases.
//
// Since <version> these aliases were removed from the library (both in the API and the ABI) so we
// alias them here to keep the crate API stable.
#[allow(dead_code)]
fn check_type_aliases(
dirent: ::dirent,
ino: ::ino_t,
flock: ::flock,
off: ::off_t,
pos: ::fpos_t,
rlimit: ::rlimit,
stat: ::stat,
statfs: ::statfs,
statvfs: ::statvfs,
) {
let _dirent: ::dirent64 = dirent;
let _ino: ::ino64_t = ino;
let _flock: ::flock64 = flock;
let _off: ::off64_t = off;
let _pos: ::fpos64_t = pos;
let _rlimit: ::rlimit64 = rlimit;
let _stat: ::stat64 = stat;
let _statfs: ::statfs64 = statfs;
let _statvfs: ::statvfs64 = statvfs;
}
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be moved to test, I guess?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Could be, though this is merely a compile-time check that the interchangeable types are aliases (rather than identically defined separate types) it's not a test in the classical sense.

An alternative might be to #[cfg(test)] this function?

src/unix/linux_like/mod.rs Outdated Show resolved Hide resolved
@bossmc bossmc marked this pull request as draft October 3, 2022 22:43
@JohnTitor
Copy link
Member

Ah, I see! Thanks for clarifying. Could you fix the style failure and squash commits?

This is an annoying change to test, libc-test seems expect to build against musl 1.1.24 (in fact, does Rust even support musl 1.2

No, we don't support musl 1.2.0 or higher as it contains the time64 change. We've tried to update and the discussion is ongoing: #2088
I'm not sure how it's related to this change though, does it matter?

@bossmc
Copy link
Contributor Author

bossmc commented Oct 3, 2022

No, we don't support musl 1.2.0 or higher as it contains the time64 change. We've tried to update, and the discussion is ongoing: #2088 I'm not sure how it's related to this change though, does it matter?

There's a proposed patch available today to remove the symbols from the musl library on the 1.2.3 branch, to test this change has sufficiently removed the references to the LFS64 symbols, I plan to use that patched library. Unfortunately, this also entails making a few changes to the libc crate (e.g. fixing up that linked struct definition) to get the tests passing which are changes that don't want to go into the crate while it's targeting 1.1.

Maybe this PR should be deferred until @wesleywiser's 1.2 support lands - since these symbols won't be disappearing in the 1.1.x releases.

@bors
Copy link
Contributor

bors commented Feb 12, 2023

☔ The latest upstream changes (presumably #3095) made this pull request unmergeable. Please resolve the merge conflicts.

@colincross
Copy link
Contributor

I tested this against ToT musl that includes the LFS64 symbol removal (https://git.musl-libc.org/cgit/musl/commit/?id=246f1c811448f37a44b41cd8df8d0ef9736d95f4), and it required the attached addition to the second patch:
dirent64.patch.txt.

@bossmc bossmc force-pushed the alias-lfs64-symbols-on-musl branch from 328ec95 to f2ec9e0 Compare April 13, 2023 18:02
@bossmc
Copy link
Contributor Author

bossmc commented Apr 13, 2023

Thanks @colincross I'd not noticed the extra-traits feature. Apparently there's a catchup merge/rebase needed too now 💯

@joshtriplett joshtriplett mentioned this pull request May 15, 2023
19 tasks
@Amanieu
Copy link
Member

Amanieu commented May 20, 2023

Style check is failing, but otherwise this looks good to merge. It is not a breaking change.

@bossmc
Copy link
Contributor Author

bossmc commented May 22, 2023

From the discussion in #3248 this probably needs some markups. In that discussion @joshtriplett would prefer the libc crate to expose LFS64 symbols even on Musl 1.2.4 so cross-libc-targeting crates don't need to use #[cfg] to find the 64-bit compatible file operations. This seems reasonable (if a little unusual, not following the model used elsewhere in the libc crate) but it exposes another few questions about how the libc crate exposes the aliased symbols.

Currently the implementation exposes aliased types with type <foo>64 = <foo> and aliased functions with use <foo> as <foo>64 this has a few impacts:

  • The two types are not distinct, so (e.g.) trait impls on them overlap where they wouldn't for e.g. glibc
  • The function type signatures are "wrong", e.g. the <foo>64 function takes *mut <bar> not *mut <bar>64 arguments
  • The aliased functions are "the same" function (e.g. casting them to raw pointers will give the same value)

The use of use is also fairly messy, use pulls the named symbol into the current module in every namespace (value, function, type) unless there's already a symbol of that name defined directly in the current module. This, combined with the name clash in stat()/stat64() vs struct stat/struct stat64 means that it's not immediately obvious where symbols are coming from and if they're correct.

An alternative approach would be for the musl backend to define each LFS64-affected type twice and to define shim functions of the form:

fn stat64(path: *const c_char, buf: *mut stat64) -> c_int {
  return stat(path, buf.cast());
}

Which assumes:

  • The inliner will do the right thing in release builds
  • The two structures are .cast()-able to each other which would want a regression test (or deterministic codegen?)

Thoughts?

@Amanieu
Copy link
Member

Amanieu commented May 23, 2023

I believe there was some confusion in the discussion in #3248. @joshtriplett was talking about time64, not LFS64.

You're right that changing the *64 types would be a breaking change due to possibe impls, and the alternative solution would be better.

@bossmc
Copy link
Contributor Author

bossmc commented May 26, 2023

Ok, I've added the set of shim functions (in .../musl/lfs64.rs) and restored the duplicate definitions of the structs. I think this is now the correct shape for review!

@bors
Copy link
Contributor

bors commented May 31, 2023

⌛ Testing commit 75ac488 with merge 1e8c55c...

@bors
Copy link
Contributor

bors commented May 31, 2023

☀️ Test successful - checks-actions, checks-cirrus-freebsd-12, checks-cirrus-freebsd-13, checks-cirrus-freebsd-14
Approved by: Amanieu
Pushing 1e8c55c to main...

@bors bors merged commit 1e8c55c into rust-lang:main May 31, 2023
@bossmc bossmc deleted the alias-lfs64-symbols-on-musl branch May 31, 2023 19:16
orbea added a commit to orbea/gentoo that referenced this pull request Jun 1, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
bors added a commit that referenced this pull request Jun 4, 2023
Unify definitions of `siginfo_t`, `statvfs` and `statfs` in `musl` targets

During #2935 I noticed there were multiple identical definitions of some of the `bits/***.h` types in the  musl target, as well as a few places where a type was defined twice in the module tree (leading to the "upper-most" definition being the one exported by the library, in contradiction to the expectation that the "most-specific" definition would be used.

This change moves the definitions of `struct statvfs(64)` and `struct siginfo_t` to be global for all `musl` targets (see https://git.musl-libc.org/cgit/musl/tree/include/sys/statvfs.h and https://git.musl-libc.org/cgit/musl/tree/include/signal.h which are architecture-agnostic headers) and `struct statfs(64)` to be global for all 64-bit `musl` targets (see https://git.musl-libc.org/cgit/musl/tree/arch/generic/bits/statfs.h).  This also required moving `fsblkcnt64_t` and `fsfilcnt64_t` to be musl-wide too (for use in `struct statvfs64`).

It also removes a bunch of redundant (and unreachable) definitions in the `riscv64` and `riscv32` targets (there seems to be a `riscv32` target in the crate, but not in `musl` itself or at least there's no `arch/riscv32` folder in tree).

Upshot of the above is that this change has no externally visible effect, if the more specific types were intended to be used they weren't being so removing them is a no-op.  To actually use more specific type definitions one would need to `cfg` out the general definition as well as providing the specific one.

<details>

<summary>To find most of these issues I used this process</summary>

```
$ for target in $(rustc --print target-list | grep musl)
do
  echo $target
  RUSTDOCFLAGS="--output-format json --document-private-items" cargo +nightly doc -Z build-std=core --target $target
done
$ for json in target/**/doc/libc.json
do
  echo $json
  jq '.index[] | select(.inner | keys[0] == "struct") | .name' $json | sort | uniq -d
done
```

The first command uses rustdoc to create a JSON representation of the API of the crate for each (`musl`) target and the second searches that output for two exported structs of the same name within a single target.  Where there's a duplicate, only one of the two symbols is actually usable (and due to import rules, symbols defined locally take precedence over symbols imported from submodules so the less specific symbol is the one that wins).

You can do similar tests for `enum`, `typedef`, `union`, constant` by changing the second command in the obvious way, you can also do the same for `function` though you need to additionally filter on `extern "C"` (since e.g. there's many many `clone` functions defined in the crate):

```
$ jq '.index[] | select(.inner | keys[0] == "function") | select(.inner.function.header.abi | (type == "object" and keys[0] == "C"))
| .name' $json | sort | uniq -d
```

</details>

It feels like adding the checks in that methodology to CI for each target would be a good way to catch issues where a more specific definition is masked by a less-specific one.
orbea added a commit to orbea/gentoo that referenced this pull request Jun 5, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jun 5, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jun 8, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jun 8, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jun 9, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jun 29, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

At this point USE=system-boostrap will be required with >= musl-1.2.4
until uptream merges these patches and updates their boostrap.

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jul 16, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jul 17, 2023
This fixes the build with musl-1.2.4, for those that are still
experiencing issues these steps should resolve them:

1. Downgrade to musl-1.2.3
2. Rebuild dev-lang/rust with these patches
3. Upgrade to musl-1.2.4 again
4. Rebuild rust with USE=system-bootstrap

This was tested with musl-1.2.3, musl-1.2.4 and glibc-2.37-r3.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jul 20, 2023
This fixes the build with musl-1.2.4, may need -system-bootstrap after
updating musl.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-Commit: rust-lang/libc@1e8c55c
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
orbea added a commit to orbea/gentoo that referenced this pull request Jul 21, 2023
This fixes the build with musl-1.2.4, may need -system-bootstrap after
updating musl.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-Commit: rust-lang/libc@1e8c55c
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
bors referenced this pull request in rust-lang/cargo Aug 1, 2023
chore(deps): update compatible

[![Mend Renovate](https://app.renovatebot.com/images/banner.svg)](https://renovatebot.com)

This PR contains the following updates:

| Package | Type | Update | Change |
|---|---|---|---|
| [anyhow](https://togithub.com/dtolnay/anyhow) | workspace.dependencies | patch | `1.0.47` -> `1.0.72` |
| [base64](https://togithub.com/marshallpierce/rust-base64) | workspace.dependencies | patch | `0.21.0` -> `0.21.2` |
| [bytesize](https://togithub.com/hyunsik/bytesize) | workspace.dependencies | minor | `1.0` -> `1.2` |
| [clap](https://togithub.com/clap-rs/clap) | workspace.dependencies | minor | `4.2.0` -> `4.3.19` |
| [core-foundation](https://togithub.com/servo/core-foundation-rs) | workspace.dependencies | patch | `0.9.0` -> `0.9.3` |
| [filetime](https://togithub.com/alexcrichton/filetime) | workspace.dependencies | patch | `0.2.9` -> `0.2.21` |
| [flate2](https://togithub.com/rust-lang/flate2-rs) | workspace.dependencies | patch | `1.0.3` -> `1.0.26` |
| [git2](https://togithub.com/rust-lang/git2-rs) | workspace.dependencies | patch | `0.17.1` -> `0.17.2` |
| [glob](https://togithub.com/rust-lang/glob) | workspace.dependencies | patch | `0.3.0` -> `0.3.1` |
| [handlebars](https://togithub.com/sunng87/handlebars-rust) | workspace.dependencies | minor | `3.2.1` -> `3.5.5` |
| [hex](https://togithub.com/KokaKiwi/rust-hex) | workspace.dependencies | patch | `0.4.2` -> `0.4.3` |
| [http-auth](https://togithub.com/scottlamb/http-auth) | workspace.dependencies | patch | `0.1.6` -> `0.1.8` |
| [humantime](https://togithub.com/tailhook/humantime) | workspace.dependencies | minor | `2.0.0` -> `2.1.0` |
| [ignore](https://togithub.com/BurntSushi/ripgrep/tree/master/crates/ignore) ([source](https://togithub.com/BurntSushi/ripgrep)) | workspace.dependencies | patch | `0.4.7` -> `0.4.20` |
| [im-rc](http://immutable.rs/) ([source](https://togithub.com/bodil/im-rs)) | workspace.dependencies | minor | `15.0.0` -> `15.1.0` |
| [lazy_static](https://togithub.com/rust-lang-nursery/lazy-static.rs) | workspace.dependencies | minor | `1.3.0` -> `1.4.0` |
| [lazycell](https://togithub.com/indiv0/lazycell) | workspace.dependencies | minor | `1.2.0` -> `1.3.0` |
| [libc](https://togithub.com/rust-lang/libc) | workspace.dependencies | patch | `0.2.144` -> `0.2.147` |
| [libgit2-sys](https://togithub.com/rust-lang/git2-rs) | workspace.dependencies | patch | `0.15.1` -> `0.15.2+1.6.4` |
| [log](https://togithub.com/rust-lang/log) | workspace.dependencies | patch | `0.4.17` -> `0.4.19` |
| [memchr](https://togithub.com/BurntSushi/memchr) | workspace.dependencies | minor | `2.1.3` -> `2.5.0` |
| [os_info](https://togithub.com/stanislav-tkach/os_info) | workspace.dependencies | minor | `3.5.0` -> `3.7.0` |
| [pasetors](https://togithub.com/brycx/pasetors) | workspace.dependencies | patch | `0.6.4` -> `0.6.7` |
| [percent-encoding](https://togithub.com/servo/rust-url) | workspace.dependencies | minor | `2.0` -> `2.3` |
| [pkg-config](https://togithub.com/rust-lang/pkg-config-rs) | workspace.dependencies | patch | `0.3.19` -> `0.3.27` |
| [pretty_assertions](https://togithub.com/rust-pretty-assertions/rust-pretty-assertions) | workspace.dependencies | minor | `1.3.0` -> `1.4.0` |
| [proptest](https://proptest-rs.github.io/proptest/proptest/index.html) ([source](https://togithub.com/proptest-rs/proptest)) | workspace.dependencies | minor | `1.1.0` -> `1.2.0` |
| [pulldown-cmark](https://togithub.com/raphlinus/pulldown-cmark) | workspace.dependencies | patch | `0.9.2` -> `0.9.3` |
| [rustfix](https://togithub.com/rust-lang-nursery/rustfix) | workspace.dependencies | patch | `0.6.0` -> `0.6.1` |
| [security-framework](https://lib.rs/crates/security_framework) ([source](https://togithub.com/kornelski/rust-security-framework)) | workspace.dependencies | minor | `2.0.0` -> `2.9.2` |
| [semver](https://togithub.com/dtolnay/semver) | workspace.dependencies | patch | `1.0.3` -> `1.0.18` |
| [serde](https://serde.rs) ([source](https://togithub.com/serde-rs/serde)) | workspace.dependencies | patch | `1.0.123` -> `1.0.180` |
| [serde_ignored](https://togithub.com/dtolnay/serde-ignored) | workspace.dependencies | patch | `0.1.0` -> `0.1.9` |
| [serde_json](https://togithub.com/serde-rs/json) | workspace.dependencies | patch | `1.0.59` -> `1.0.104` |
| [sha2](https://togithub.com/RustCrypto/hashes) | workspace.dependencies | patch | `0.10.6` -> `0.10.7` |
| [shell-escape](https://togithub.com/sfackler/shell-escape) | workspace.dependencies | patch | `0.1.4` -> `0.1.5` |
| [snapbox](https://togithub.com/assert-rs/trycmd/tree/main/crates/snapbox) ([source](https://togithub.com/assert-rs/trycmd)) | workspace.dependencies | patch | `0.4.0` -> `0.4.11` |
| [strip-ansi-escapes](https://togithub.com/luser/strip-ansi-escapes) | workspace.dependencies | patch | `0.1.0` -> `0.1.1` |
| [syn](https://togithub.com/dtolnay/syn) | workspace.dependencies | patch | `2.0.14` -> `2.0.28` |
| [tar](https://togithub.com/alexcrichton/tar-rs) | workspace.dependencies | patch | `0.4.38` -> `0.4.39` |
| [tempfile](https://stebalien.com/projects/tempfile-rs/) ([source](https://togithub.com/Stebalien/tempfile)) | workspace.dependencies | minor | `3.1.0` -> `3.7.0` |
| [termcolor](https://togithub.com/BurntSushi/termcolor) | workspace.dependencies | minor | `1.1.2` -> `1.2.0` |
| [thiserror](https://togithub.com/dtolnay/thiserror) | workspace.dependencies | patch | `1.0.40` -> `1.0.44` |
| [toml](https://togithub.com/toml-rs/toml) | workspace.dependencies | patch | `0.7.0` -> `0.7.6` |
| [toml_edit](https://togithub.com/toml-rs/toml) | workspace.dependencies | patch | `0.19.0` -> `0.19.14` |
| [unicode-width](https://togithub.com/unicode-rs/unicode-width) | workspace.dependencies | patch | `0.1.5` -> `0.1.10` |
| [unicode-xid](https://togithub.com/unicode-rs/unicode-xid) | workspace.dependencies | patch | `0.2.0` -> `0.2.4` |
| [url](https://togithub.com/servo/rust-url) | workspace.dependencies | minor | `2.2.2` -> `2.4.0` |
| [varisat](https://jix.one/project/varisat/) ([source](https://togithub.com/jix/varisat)) | workspace.dependencies | patch | `0.2.1` -> `0.2.2` |
| [walkdir](https://togithub.com/BurntSushi/walkdir) | workspace.dependencies | patch | `2.3.1` -> `2.3.3` |

---

### Release Notes

<details>
<summary>dtolnay/anyhow (anyhow)</summary>

### [`v1.0.72`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.72)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.71...1.0.72)

-   Documentation improvements

### [`v1.0.71`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.71)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.70...1.0.71)

-   Documentation improvements

### [`v1.0.70`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.70)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.69...1.0.70)

-   Update syn dependency to 2.x

### [`v1.0.69`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.69)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.68...1.0.69)

-   Documentation improvements

### [`v1.0.68`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.68)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.67...1.0.68)

-   Opt out of `-Zrustdoc-scrape-examples` on docs.rs for now

### [`v1.0.67`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.67)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.66...1.0.67)

-   Improve the backtrace captured when `context()` is used on an `Option` ([#&#8203;280](https://togithub.com/dtolnay/anyhow/issues/280))

### [`v1.0.66`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.66)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.65...1.0.66)

-   Reduce unhelpful backtrace frames in backtraces captured during a `context` call ([#&#8203;279](https://togithub.com/dtolnay/anyhow/issues/279))

### [`v1.0.65`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.65)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.64...1.0.65)

-   <code>impl <a href="https://doc.rust-lang.org/std/any/trait.Provider.html">Provider</a> for anyhow::Error</code>

### [`v1.0.64`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.64)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.63...1.0.64)

-   Correctly propagate Backtrace when using `#[source] anyhow::Error` with [thiserror](https://togithub.com/dtolnay/thiserror) crate ([#&#8203;231](https://togithub.com/dtolnay/anyhow/issues/231))

### [`v1.0.63`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.63)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.62...1.0.63)

-   Expose backtraces via the new "generic member access" API on the Error trait ([https://github.com/rust-lang/rust/issues/99301](https://togithub.com/rust-lang/rust/issues/99301), [https://github.com/rust-lang/rust/issues/96024](https://togithub.com/rust-lang/rust/issues/96024))

### [`v1.0.62`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.62)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.61...1.0.62)

-   Fix extra rebuilding when interleaving command-line `cargo` invocations with IDE builds ([#&#8203;261](https://togithub.com/dtolnay/anyhow/issues/261))

### [`v1.0.61`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.61)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.60...1.0.61)

-   Work around rust-analyzer builds poisoning all subsequent command-line cargo builds ([#&#8203;252](https://togithub.com/dtolnay/anyhow/issues/252))

### [`v1.0.60`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.60)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.59...1.0.60)

-   Propagate `--target` to rustc invocation when deciding about backtrace support ([#&#8203;249](https://togithub.com/dtolnay/anyhow/issues/249), thanks [`@&#8203;RalfJung](https://togithub.com/RalfJung))`

### [`v1.0.59`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.59)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.58...1.0.59)

-   Update crates.io metadata to include `no-std` category

### [`v1.0.58`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.58)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.57...1.0.58)

-   Fix some broken links in documentation

### [`v1.0.57`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.57)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.56...1.0.57)

-   Remove a `log4rs`-specific workaround from `bail!` macro implementation

### [`v1.0.56`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.56)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.55...1.0.56)

-   Add `must_use` warning when an Error created by `anyhow!` is not used, perhaps because the programmer meant to write `bail!` instead ([#&#8203;229](https://togithub.com/dtolnay/anyhow/issues/229))

### [`v1.0.55`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.55)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.54...1.0.55)

-   Documentation improvements

### [`v1.0.54`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.54)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.53...1.0.54)

-   Construct more helpful error message from `ensure!` when the expression involves a negative literal const generic as the first generic argument of a method call ([#&#8203;224](https://togithub.com/dtolnay/anyhow/issues/224))

### [`v1.0.53`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.53)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.52...1.0.53)

-   Retrigger docs.rs build to work around rustdoc regression ([https://github.com/rust-lang/rust/issues/92331](https://togithub.com/rust-lang/rust/issues/92331))

### [`v1.0.52`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.52)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.51...1.0.52)

-   Reduce overhead of backtrace capture in the case that backtraces are not enabled ([#&#8203;212](https://togithub.com/dtolnay/anyhow/issues/212))

### [`v1.0.51`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.51)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.50...1.0.51)

-   Show doc for `Ok` fn

### [`v1.0.50`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.50)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.49...1.0.50)

-   Recognize more types of expressions in `ensure!` macro ([#&#8203;199](https://togithub.com/dtolnay/anyhow/issues/199), [#&#8203;200](https://togithub.com/dtolnay/anyhow/issues/200), [#&#8203;202](https://togithub.com/dtolnay/anyhow/issues/202), [#&#8203;203](https://togithub.com/dtolnay/anyhow/issues/203), [#&#8203;204](https://togithub.com/dtolnay/anyhow/issues/204), [#&#8203;205](https://togithub.com/dtolnay/anyhow/issues/205), [#&#8203;206](https://togithub.com/dtolnay/anyhow/issues/206))

### [`v1.0.49`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.49)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.48...1.0.49)

-   Add a function `anyhow::Ok(v)` equivalent to `Ok::<_, anyhow::Error>(v)` ([#&#8203;192](https://togithub.com/dtolnay/anyhow/issues/192))

### [`v1.0.48`](https://togithub.com/dtolnay/anyhow/releases/tag/1.0.48)

[Compare Source](https://togithub.com/dtolnay/anyhow/compare/1.0.47...1.0.48)

-   Include a `Debug` rendering of lhs and rhs in `ensure!` messages ([#&#8203;193](https://togithub.com/dtolnay/anyhow/issues/193), [#&#8203;194](https://togithub.com/dtolnay/anyhow/issues/194), [#&#8203;195](https://togithub.com/dtolnay/anyhow/issues/195), [#&#8203;196](https://togithub.com/dtolnay/anyhow/issues/196), [#&#8203;197](https://togithub.com/dtolnay/anyhow/issues/197), [#&#8203;198](https://togithub.com/dtolnay/anyhow/issues/198))

##### Example:

    ```rust
    ensure!(flags.len() <= 40);
    ```

    ```rust
    ensure!(kind == Kind::File);
    ```

    Before:

    ```console
    Condition failed: `flags.len() <= 40`
    Condition failed: `kind == Kind::File`
    ```

    After:

    ```console
    Condition failed: `flags.len() <= 40` (99 vs 40)
    Condition failed: `kind == Kind::File` (Symlink vs File)
    ```

</details>

<details>
<summary>marshallpierce/rust-base64 (base64)</summary>

### [`v0.21.2`](https://togithub.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0212)

[Compare Source](https://togithub.com/marshallpierce/rust-base64/compare/v0.21.1...v0.21.2)

-   Rollback MSRV to 1.57.0 -- only dev dependencies need 1.60, not the main code

### [`v0.21.1`](https://togithub.com/marshallpierce/rust-base64/blob/HEAD/RELEASE-NOTES.md#0211)

[Compare Source](https://togithub.com/marshallpierce/rust-base64/compare/v0.21.0...v0.21.1)

-   Remove the possibility of panicking during decoded length calculations
-   `DecoderReader` no longer sometimes erroneously ignores padding  [#&#8203;226](https://togithub.com/marshallpierce/rust-base64/issues/226)

#### Breaking changes

-   `Engine.internal_decode` return type changed
-   Update MSRV to 1.60.0

</details>

<details>
<summary>hyunsik/bytesize (bytesize)</summary>

### [`v1.2.0`](https://togithub.com/hyunsik/bytesize/releases/tag/v1.2.0): Release 1.2.0

[Compare Source](https://togithub.com/hyunsik/bytesize/compare/v1.1.0...v1.2.0)

#### Changes

-   serde improvements [#&#8203;29](https://togithub.com/hyunsik/bytesize/issues/29) ([`@&#8203;joeroback](https://togithub.com/joeroback))`

### [`v1.1.0`](https://togithub.com/hyunsik/bytesize/releases/tag/v1.1.0): Release 1.1.0

#### Changes

-   ByteSize: Hash [#&#8203;23](https://togithub.com/hyunsik/bytesize/issues/23) ([`@&#8203;matklad](https://togithub.com/matklad))`
-   add AddAssign operator to ByteSize [#&#8203;22](https://togithub.com/hyunsik/bytesize/issues/22) ([`@&#8203;pmnoxx](https://togithub.com/pmnoxx))`
-   ByteSize constants [#&#8203;21](https://togithub.com/hyunsik/bytesize/issues/21) ([`@&#8203;pmnoxx](https://togithub.com/pmnoxx))`
-   Implement the FromStr trait for ByteSize [#&#8203;20](https://togithub.com/hyunsik/bytesize/issues/20) ([`@&#8203;jRimbault](https://togithub.com/jRimbault))`
-   Padding for Display trait for ByteSize [#&#8203;19](https://togithub.com/hyunsik/bytesize/issues/19) ([`@&#8203;acheronfail](https://togithub.com/acheronfail))`

### [`v1.0.1`](https://togithub.com/hyunsik/bytesize/compare/release-1.0.0...release-1.0.1)

[Compare Source](https://togithub.com/hyunsik/bytesize/compare/release-1.0.0...release-1.0.1)

</details>

<details>
<summary>clap-rs/clap (clap)</summary>

### [`v4.3.19`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4319---2023-07-21)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.18...v4.3.19)

##### Fixes

-   *(parse)* Respect `value_terminator` even in the presence of later multiple-value positional arguments

### [`v4.3.18`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4318---2023-07-21)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.17...v4.3.18)

##### Fixes

-   *(parse)* Suggest `--` in fewer places where it won't work

### [`v4.3.17`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4317---2023-07-19)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.16...v4.3.17)

##### Fixes

-   *(help)* Address a regression in wrapping `PossibleValue` descriptions in `--help`

### [`v4.3.16`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4316---2023-07-18)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.15...v4.3.16)

##### Fixes

-   Don't assert when stateful value parsers fail on defaults (e.g. checking if a path exists)

### [`v4.3.15`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4315---2023-07-18)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.14...v4.3.15)

##### Features

-   *(unstable-styles)* Re-export `anstyle`

##### Documentation

-   *(unstable-styles)* Provide more examples

### [`v4.3.14`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4314---2023-07-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.13...v4.3.14)

##### Features

-   `ArgAction::HelpShort` and `ArgAction::HelpLong` for explicitly specifying which style of help to display

##### Fixes

-   Skip `[OPTIONS]` in usage if a help or version `ArgAction` is used

### [`v4.3.13`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4313---2023-07-17)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.12...v4.3.13)

### [`v4.3.12`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4312---2023-07-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.11...v4.3.12)

##### Fixes

-   *(derive)* Don't error on enum variant field attributes

### [`v4.3.11`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4311---2023-07-05)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.10...v4.3.11)

##### Features

-   *(derive)* Support fields wrapped in `num::Wrapping`, `Box`, or `Arc`
-   *(derive)* Support `Box<str>`, `Box<OsStr>`, and `Box<Path>`

### [`v4.3.10`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4310---2023-06-30)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.9...v4.3.10)

##### Performance

-   Drop a dependency, reducing binary size by 1.3 KiB

### [`v4.3.9`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#439---2023-06-28)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.8...v4.3.9)

##### Fixes

-   `Command::ignore_errors` no longer masks help/version

### [`v4.3.8`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#438---2023-06-23)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.7...v4.3.8)

##### Fixes

-   Error on ambiguity with `infer_long_arg`, rather than arbitrarily picking one, matching the documentation and subcommand's behavior

### [`v4.3.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#437---2023-06-23)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.6...v4.3.7)

##### Documentation

-   Further clarify magic behavior in derive tutorial
-   Further clarify derive API's relationship to builder within the tutorial

### [`v4.3.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#436---2023-06-23)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.5...v4.3.6)

##### Documentation

-   Suggest `clio`

### [`v4.3.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#435---2023-06-20)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.4...v4.3.5)

-   `ColorChoice::possible_values` is added to simplify things for builder users

##### Fixes

-   `ColorChoice::to_possible_value` no longer includes descriptions, encouraging shorter help where possible

### [`v4.3.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#434---2023-06-14)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.3...v4.3.4)

##### Features

-   Add `Error::exit_code`

### [`v4.3.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#433---2023-06-09)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.2...v4.3.3)

##### Features

-   `Command::defer` for delayed initialization of subcommands to reduce startup times of large applications like deno

### [`v4.3.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#432---2023-06-05)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.1...v4.3.2)

##### Fixes

-   *(derive)* Don't produce `unused_equalifications` warnings when someone brings a clap type into scope

### [`v4.3.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#4319---2023-07-21)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.3.0...v4.3.1)

##### Fixes

-   *(parse)* Respect `value_terminator` even in the presence of later multiple-value positional arguments

### [`v4.3.0`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#430---2023-05-19)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.7...v4.3.0)

##### Fixes

-   *(assert)* Allow multiple, value-terminated, positional arguments
-   *(assert)* Clear up language on `last` assertion
-   *(parser)* Correctly assign values to arguments when using multiple, value-termianted, positional arguments
-   *(parser)* Ensure `value_terminator` has higher precedence than `allow_hyphen_values`
-   *(help)* Only use next-line-help on subcommand list when explicitly specified, not just with `--help`
-   *(help)* Correctly align possible values list
-   *(help)* Don't waste code, vertical space in moving possible value descriptions to next line

### [`v4.2.7`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#427---2023-05-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.6...v4.2.7)

##### Fixes

-   Correctly track remaining length for iterators provided by `ArgMatches`

### [`v4.2.6`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#426---2023-05-02)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.5...v4.2.6)

##### Features

-   `impl Eq<std::any::TypeId> for clap_builder::util::AnyValueId`

### [`v4.2.5`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#425---2023-04-27)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.4...v4.2.5)

##### Fixes

-   Improve panic when a group requires a non-existent ID

### [`v4.2.4`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#424---2023-04-19)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.3...v4.2.4)

##### Documentation

-   Corrected docs for `Command::style`

### [`v4.2.3`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#423---2023-04-18)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.2...v4.2.3)

##### Features

-   `Command::styles` for theming help/errors (behind `unstable-styles`)

### [`v4.2.2`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#422---2023-04-13)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.1...v4.2.2)

##### Internal

-   Update dependencies

### [`v4.2.1`](https://togithub.com/clap-rs/clap/blob/HEAD/CHANGELOG.md#421---2023-03-28)

[Compare Source](https://togithub.com/clap-rs/clap/compare/v4.2.0...v4.2.1)

##### Fixes

-   Don't highlight uninteresting parts of the error message

</details>

<details>
<summary>servo/core-foundation-rs (core-foundation)</summary>

### [`v0.9.3`](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.2...core-foundation-v0.9.3)

[Compare Source](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.2...core-foundation-v0.9.3)

### [`v0.9.2`](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.1...core-foundation-v0.9.2)

[Compare Source](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.1...core-foundation-v0.9.2)

### [`v0.9.1`](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.0...core-foundation-v0.9.1)

[Compare Source](https://togithub.com/servo/core-foundation-rs/compare/core-foundation-v0.9.0...core-foundation-v0.9.1)

</details>

<details>
<summary>alexcrichton/filetime (filetime)</summary>

### [`v0.2.21`](https://togithub.com/alexcrichton/filetime/compare/0.2.20...0.2.21)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.20...0.2.21)

### [`v0.2.20`](https://togithub.com/alexcrichton/filetime/compare/0.2.19...0.2.20)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.19...0.2.20)

### [`v0.2.19`](https://togithub.com/alexcrichton/filetime/compare/0.2.18...0.2.19)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.18...0.2.19)

### [`v0.2.18`](https://togithub.com/alexcrichton/filetime/compare/0.2.17...0.2.18)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.17...0.2.18)

### [`v0.2.14`](https://togithub.com/alexcrichton/filetime/compare/0.2.13...0.2.14)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.13...0.2.14)

### [`v0.2.13`](https://togithub.com/alexcrichton/filetime/compare/0.2.12...0.2.13)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.12...0.2.13)

### [`v0.2.12`](https://togithub.com/alexcrichton/filetime/compare/0.2.11...0.2.12)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.11...0.2.12)

### [`v0.2.11`](https://togithub.com/alexcrichton/filetime/compare/0.2.10...0.2.11)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.10...0.2.11)

### [`v0.2.10`](https://togithub.com/alexcrichton/filetime/compare/0.2.9...0.2.10)

[Compare Source](https://togithub.com/alexcrichton/filetime/compare/0.2.9...0.2.10)

</details>

<details>
<summary>rust-lang/flate2-rs (flate2)</summary>

### [`v1.0.26`](https://togithub.com/rust-lang/flate2-rs/releases/tag/1.0.26)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.25...1.0.26)

#### What's Changed

-   Add decompress file example by [`@&#8203;MichaelMcDonnell](https://togithub.com/MichaelMcDonnell)` in [https://github.com/rust-lang/flate2-rs/pull/329](https://togithub.com/rust-lang/flate2-rs/pull/329)
-   Remove `extern crate`s by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/331](https://togithub.com/rust-lang/flate2-rs/pull/331)
-   Make clippy happy + a few more cleanups by [`@&#8203;nyurik](https://togithub.com/nyurik)` in [https://github.com/rust-lang/flate2-rs/pull/285](https://togithub.com/rust-lang/flate2-rs/pull/285)
-   Fix left-overs on decoder docs by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/333](https://togithub.com/rust-lang/flate2-rs/pull/333)
-   Mention MSRV policy by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/332](https://togithub.com/rust-lang/flate2-rs/pull/332)
-   Bump miniz-oxide to prevent assertion failure by [`@&#8203;softdevca](https://togithub.com/softdevca)` in [https://github.com/rust-lang/flate2-rs/pull/335](https://togithub.com/rust-lang/flate2-rs/pull/335)
-   Enable all-features, Use doc_auto_cfg on docs.rs by [`@&#8203;wcampbell0x2a](https://togithub.com/wcampbell0x2a)` in [https://github.com/rust-lang/flate2-rs/pull/336](https://togithub.com/rust-lang/flate2-rs/pull/336)
-   Fix a typo in doc for write::GzDecoder by [`@&#8203;yestyle](https://togithub.com/yestyle)` in [https://github.com/rust-lang/flate2-rs/pull/337](https://togithub.com/rust-lang/flate2-rs/pull/337)
-   Fixed overflow bug in crc combine by [`@&#8203;AntonJMLarsson](https://togithub.com/AntonJMLarsson)` in [https://github.com/rust-lang/flate2-rs/pull/330](https://togithub.com/rust-lang/flate2-rs/pull/330)
-   Added feature for enabling default zlib-sys features by [`@&#8203;taco-paco](https://togithub.com/taco-paco)` in [https://github.com/rust-lang/flate2-rs/pull/322](https://togithub.com/rust-lang/flate2-rs/pull/322)
-   Add write::MultiGzDecoder for multi-member gzip data by [`@&#8203;jongiddy](https://togithub.com/jongiddy)` in [https://github.com/rust-lang/flate2-rs/pull/325](https://togithub.com/rust-lang/flate2-rs/pull/325)
-   gha: Upgrade to windows-2022 by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/343](https://togithub.com/rust-lang/flate2-rs/pull/343)
-   gha: Specify tag instead of branch on actions/checkout by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/342](https://togithub.com/rust-lang/flate2-rs/pull/342)
-   Prepare 1.0.26 release by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/flate2-rs/pull/341](https://togithub.com/rust-lang/flate2-rs/pull/341)

#### New Contributors

-   [`@&#8203;MichaelMcDonnell](https://togithub.com/MichaelMcDonnell)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/329](https://togithub.com/rust-lang/flate2-rs/pull/329)
-   [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/331](https://togithub.com/rust-lang/flate2-rs/pull/331)
-   [`@&#8203;softdevca](https://togithub.com/softdevca)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/335](https://togithub.com/rust-lang/flate2-rs/pull/335)
-   [`@&#8203;wcampbell0x2a](https://togithub.com/wcampbell0x2a)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/336](https://togithub.com/rust-lang/flate2-rs/pull/336)
-   [`@&#8203;yestyle](https://togithub.com/yestyle)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/337](https://togithub.com/rust-lang/flate2-rs/pull/337)
-   [`@&#8203;AntonJMLarsson](https://togithub.com/AntonJMLarsson)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/330](https://togithub.com/rust-lang/flate2-rs/pull/330)
-   [`@&#8203;taco-paco](https://togithub.com/taco-paco)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/322](https://togithub.com/rust-lang/flate2-rs/pull/322)
-   [`@&#8203;jongiddy](https://togithub.com/jongiddy)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/325](https://togithub.com/rust-lang/flate2-rs/pull/325)

**Full Changelog**: https://github.com/rust-lang/flate2-rs/compare/1.0.25...1.0.26

### [`v1.0.25`](https://togithub.com/rust-lang/flate2-rs/releases/tag/1.0.25)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.24...1.0.25)

#### What's Changed

-   Use SPDX license format and update links by [`@&#8203;atouchet](https://togithub.com/atouchet)` in [https://github.com/rust-lang/flate2-rs/pull/296](https://togithub.com/rust-lang/flate2-rs/pull/296)
-   Bump miniz_oxide to 0.6 by [`@&#8203;paolobarbolini](https://togithub.com/paolobarbolini)` in [https://github.com/rust-lang/flate2-rs/pull/317](https://togithub.com/rust-lang/flate2-rs/pull/317)
-   Prep release 1.0.25 by [`@&#8203;thomcc](https://togithub.com/thomcc)` in [https://github.com/rust-lang/flate2-rs/pull/327](https://togithub.com/rust-lang/flate2-rs/pull/327)

#### New Contributors

-   [`@&#8203;atouchet](https://togithub.com/atouchet)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/296](https://togithub.com/rust-lang/flate2-rs/pull/296)
-   [`@&#8203;paolobarbolini](https://togithub.com/paolobarbolini)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/317](https://togithub.com/rust-lang/flate2-rs/pull/317)
-   [`@&#8203;thomcc](https://togithub.com/thomcc)` made their first contribution in [https://github.com/rust-lang/flate2-rs/pull/327](https://togithub.com/rust-lang/flate2-rs/pull/327)

**Full Changelog**: https://github.com/rust-lang/flate2-rs/compare/1.0.24...1.0.25

### [`v1.0.24`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.23...1.0.24)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.23...1.0.24)

### [`v1.0.23`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.22...1.0.23)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.22...1.0.23)

### [`v1.0.22`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.21...1.0.22)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.21...1.0.22)

### [`v1.0.21`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.20...1.0.21)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.20...1.0.21)

### [`v1.0.20`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.19...1.0.20)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.19...1.0.20)

### [`v1.0.19`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.18...1.0.19)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.18...1.0.19)

### [`v1.0.18`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.17...1.0.18)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.17...1.0.18)

### [`v1.0.17`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.16...1.0.17)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.16...1.0.17)

### [`v1.0.16`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.14...1.0.16)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.14...1.0.16)

### [`v1.0.14`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.13...1.0.14)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.13...1.0.14)

### [`v1.0.13`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.12...1.0.13)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.12...1.0.13)

### [`v1.0.12`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.11...1.0.12)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.11...1.0.12)

### [`v1.0.11`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.10...1.0.11)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.10...1.0.11)

### [`v1.0.10`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.9...1.0.10)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.9...1.0.10)

### [`v1.0.9`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.8...1.0.9)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.8...1.0.9)

### [`v1.0.8`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.7...1.0.8)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.7...1.0.8)

### [`v1.0.7`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.6...1.0.7)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.6...1.0.7)

### [`v1.0.6`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.5...1.0.6)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.5...1.0.6)

### [`v1.0.5`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.4...1.0.5)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.4...1.0.5)

### [`v1.0.4`](https://togithub.com/rust-lang/flate2-rs/compare/1.0.3...1.0.4)

[Compare Source](https://togithub.com/rust-lang/flate2-rs/compare/1.0.3...1.0.4)

</details>

<details>
<summary>rust-lang/git2-rs (git2)</summary>

### [`v0.17.2`](https://togithub.com/rust-lang/git2-rs/blob/HEAD/CHANGELOG.md#0172---2023-05-27)

[Compare Source](https://togithub.com/rust-lang/git2-rs/compare/0.17.1...0.17.2)

[0.17.1...0.17.2](https://togithub.com/rust-lang/git2-rs/compare/0.17.1...0.17.2)

##### Added

-   Added support for stashing with options (which can support partial stashing).
    [#&#8203;930](https://togithub.com/rust-lang/git2-rs/pull/930)

</details>

<details>
<summary>rust-lang/glob (glob)</summary>

### [`v0.3.1`](https://togithub.com/rust-lang/glob/releases/tag/0.3.1)

[Compare Source](https://togithub.com/rust-lang/glob/compare/0.3.0...0.3.1)

#### What's Changed

-   Add doc-comment to test README examples by [`@&#8203;GuillaumeGomez](https://togithub.com/GuillaumeGomez)` in [https://github.com/rust-lang/glob/pull/81](https://togithub.com/rust-lang/glob/pull/81)
-   Set up CI with Azure Pipelines by [`@&#8203;KodrAus](https://togithub.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/86](https://togithub.com/rust-lang/glob/pull/86)
-   Use 'dyn' since trait objects without an explicit 'dyn' are deprecated by [`@&#8203;Atul9](https://togithub.com/Atul9)` in [https://github.com/rust-lang/glob/pull/87](https://togithub.com/rust-lang/glob/pull/87)
-   Fix tests on Windows by [`@&#8203;steveklabnik](https://togithub.com/steveklabnik)` in [https://github.com/rust-lang/glob/pull/88](https://togithub.com/rust-lang/glob/pull/88)
-   Add Debug trait to MatchOptions by [`@&#8203;brmmm3](https://togithub.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/91](https://togithub.com/rust-lang/glob/pull/91)
-   Add triagebot configuration by [`@&#8203;Mark-Simulacrum](https://togithub.com/Mark-Simulacrum)` in [https://github.com/rust-lang/glob/pull/95](https://togithub.com/rust-lang/glob/pull/95)
-   Derive Debug for Paths by [`@&#8203;gibfahn](https://togithub.com/gibfahn)` in [https://github.com/rust-lang/glob/pull/97](https://togithub.com/rust-lang/glob/pull/97)
-   Derive Debug for MatchOptions by [`@&#8203;brmmm3](https://togithub.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/99](https://togithub.com/rust-lang/glob/pull/99)
-   Move tokens_len into if block as it is only used there by [`@&#8203;brmmm3](https://togithub.com/brmmm3)` in [https://github.com/rust-lang/glob/pull/93](https://togithub.com/rust-lang/glob/pull/93)
-   Replace Azure Pipelines with GitHub Actions by [`@&#8203;KodrAus](https://togithub.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/113](https://togithub.com/rust-lang/glob/pull/113)
-   Use SPDX license format by [`@&#8203;atouchet](https://togithub.com/atouchet)` in [https://github.com/rust-lang/glob/pull/115](https://togithub.com/rust-lang/glob/pull/115)
-   replace the Azure Pipelines status badge by [`@&#8203;KodrAus](https://togithub.com/KodrAus)` in [https://github.com/rust-lang/glob/pull/114](https://togithub.com/rust-lang/glob/pull/114)
-   Fix spacing in Readme by [`@&#8203;atouchet](https://togithub.com/atouchet)` in [https://github.com/rust-lang/glob/pull/119](https://togithub.com/rust-lang/glob/pull/119)
-   Update GHA OS versions to latest by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/118](https://togithub.com/rust-lang/glob/pull/118)
-   Allow deprecation to `Error::description` by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/120](https://togithub.com/rust-lang/glob/pull/120)
-   Note the difference between `new()` and `default()` by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/121](https://togithub.com/rust-lang/glob/pull/121)
-   Prepare 0.3.1 release by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/glob/pull/124](https://togithub.com/rust-lang/glob/pull/124)

#### New Contributors

-   [`@&#8203;GuillaumeGomez](https://togithub.com/GuillaumeGomez)` made their first contribution in [https://github.com/rust-lang/glob/pull/81](https://togithub.com/rust-lang/glob/pull/81)
-   [`@&#8203;Atul9](https://togithub.com/Atul9)` made their first contribution in [https://github.com/rust-lang/glob/pull/87](https://togithub.com/rust-lang/glob/pull/87)
-   [`@&#8203;brmmm3](https://togithub.com/brmmm3)` made their first contribution in [https://github.com/rust-lang/glob/pull/91](https://togithub.com/rust-lang/glob/pull/91)
-   [`@&#8203;Mark-Simulacrum](https://togithub.com/Mark-Simulacrum)` made their first contribution in [https://github.com/rust-lang/glob/pull/95](https://togithub.com/rust-lang/glob/pull/95)
-   [`@&#8203;gibfahn](https://togithub.com/gibfahn)` made their first contribution in [https://github.com/rust-lang/glob/pull/97](https://togithub.com/rust-lang/glob/pull/97)
-   [`@&#8203;atouchet](https://togithub.com/atouchet)` made their first contribution in [https://github.com/rust-lang/glob/pull/115](https://togithub.com/rust-lang/glob/pull/115)
-   [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` made their first contribution in [https://github.com/rust-lang/glob/pull/118](https://togithub.com/rust-lang/glob/pull/118)

**Full Changelog**: https://github.com/rust-lang/glob/compare/0.3.0...0.3.1

</details>

<details>
<summary>sunng87/handlebars-rust (handlebars)</summary>

### [`v3.5.5`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#355---2021-05-03)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.5.4...v3.5.5)

-   \[Fixed] Panic on reporting invalid tag name \[[#&#8203;427](https://togithub.com/sunng87/handlebars-rust/issues/427)]

### [`v3.5.4`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#354---2021-03-27)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.5.3...v3.5.4)

-   \[Fixed] Json string literal with escape char \[[#&#8203;422](https://togithub.com/sunng87/handlebars-rust/issues/422)]

### [`v3.5.3`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#353---2021-02-20)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.5.2...v3.5.3)

-   \[Fixed] value access issue when upper block has a base value \[[#&#8203;419](https://togithub.com/sunng87/handlebars-rust/issues/419)]

### [`v3.5.2`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#352---2020-12-29)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.5.1...v3.5.2)

-   \[Fixed] allow `/` as trailing separator on Windows, backported from master \[[#&#8203;405](https://togithub.com/sunng87/handlebars-rust/issues/405)]

### [`v3.5.1`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#351---2020-10-25)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.5.0...v3.5.1)

-   \[Fixed] dir source path separator bug on windows \[[#&#8203;389](https://togithub.com/sunng87/handlebars-rust/issues/389)]

### [`v3.5.0`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#350---2020-09-23)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.4.0...v3.5.0)

-   \[Changed] `#each` helper now renders else block for non-iterable data \[[#&#8203;380](https://togithub.com/sunng87/handlebars-rust/issues/380)]
-   \[Fixed] reference starts with `null`, `true` and `false` were parsed incorrectly \[[#&#8203;382](https://togithub.com/sunng87/handlebars-rust/issues/382)]

### [`v3.4.0`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#340---2020-08-14)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.3.0...v3.4.0)

-   \[Added] Debug log that can be turned on by using envlog or other implementation, to trace data resolution during rendering \[[#&#8203;369](https://togithub.com/sunng87/handlebars-rust/issues/369)]
-   \[Fixed] Derived value as block context base value \[[#&#8203;343](https://togithub.com/sunng87/handlebars-rust/issues/343), [#&#8203;353](https://togithub.com/sunng87/handlebars-rust/issues/353)]
-   \[Fixed] Partial name aligned with handlebars.js, added support for `.`, escape `[]` and string `''` name
-   \[Changed] HTML escape aligned with handlebars.js, added `=`, `\` and \`\`\` \[[#&#8203;366](https://togithub.com/sunng87/handlebars-rust/issues/366)]
-   \[Changed] Update rhai to 0.18 \[[#&#8203;370](https://togithub.com/sunng87/handlebars-rust/issues/370)]
-   \[Fixed] Result of simple helper is now escaped \[[#&#8203;373](https://togithub.com/sunng87/handlebars-rust/issues/373)]

### [`v3.3.0`](https://togithub.com/sunng87/handlebars-rust/blob/HEAD/CHANGELOG.md#330---2020-07-18)

[Compare Source](https://togithub.com/sunng87/handlebars-rust/compare/v3.2.1...v3.3.0)

-   \[Added] Added two new APIs to reuse `Context` for rendering \[[#&#8203;352](https://togithub.com/sunng87/handlebars-rust/issues/352)]
-   \[Changed] Update rhai to 0.17 \[[#&#8203;354](https://togithub.com/sunng87/handlebars-rust/issues/354)]
-   \[Fixed] Fixed mustache.js html expression support, which is "&" instead of "$"

</details>

<details>
<summary>KokaKiwi/rust-hex (hex)</summary>

### [`v0.4.3`](https://togithub.com/KokaKiwi/rust-hex/compare/v0.4.2...v0.4.3)

[Compare Source](https://togithub.com/KokaKiwi/rust-hex/compare/v0.4.2...v0.4.3)

</details>

<details>
<summary>scottlamb/http-auth (http-auth)</summary>

### [`v0.1.8`](https://togithub.com/scottlamb/http-auth/blob/HEAD/CHANGELOG.md#v018-2023-01-30)

[Compare Source](https://togithub.com/scottlamb/http-auth/compare/v0.1.7...v0.1.8)

-   upgrade `base64` dependency from 0.20 to 0.21.

### [`v0.1.7`](https://togithub.com/scottlamb/http-auth/blob/HEAD/CHANGELOG.md#v017-2023-01-05)

[Compare Source](https://togithub.com/scottlamb/http-auth/compare/v0.1.6...v0.1.7)

-   bump minimum Rust version to 1.57.
-   upgrade `base64` dependency from 0.13 to 0.20.

</details>

<details>
<summary>tailhook/humantime (humantime)</summary>

### [`v2.1.0`](https://togithub.com/tailhook/humantime/compare/v2.0.1...v2.1.0)

[Compare Source](https://togithub.com/tailhook/humantime/compare/v2.0.1...v2.1.0)

### [`v2.0.1`](https://togithub.com/tailhook/humantime/compare/v2.0.0...v2.0.1)

[Compare Source](https://togithub.com/tailhook/humantime/compare/v2.0.0...v2.0.1)

</details>

<details>
<summary>BurntSushi/ripgrep (ignore)</summary>

### [`v0.4.20`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.19...ignore-0.4.20)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.19...ignore-0.4.20)

### [`v0.4.19`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.18...ignore-0.4.19)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.18...ignore-0.4.19)

### [`v0.4.18`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.17...ignore-0.4.18)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.17...ignore-0.4.18)

### [`v0.4.17`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.16...ignore-0.4.17)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.16...ignore-0.4.17)

### [`v0.4.16`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.15...ignore-0.4.16)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.15...ignore-0.4.16)

### [`v0.4.15`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.14...ignore-0.4.15)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.14...ignore-0.4.15)

### [`v0.4.14`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.13...ignore-0.4.14)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.13...ignore-0.4.14)

### [`v0.4.13`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.12...ignore-0.4.13)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.12...ignore-0.4.13)

### [`v0.4.12`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.11...ignore-0.4.12)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.11...ignore-0.4.12)

### [`v0.4.11`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.10...ignore-0.4.11)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.10...ignore-0.4.11)

### [`v0.4.10`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.9...ignore-0.4.10)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.9...ignore-0.4.10)

### [`v0.4.9`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.8...ignore-0.4.9)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.8...ignore-0.4.9)

### [`v0.4.8`](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.7...ignore-0.4.8)

[Compare Source](https://togithub.com/BurntSushi/ripgrep/compare/ignore-0.4.7...ignore-0.4.8)

</details>

<details>
<summary>bodil/im-rs (im-rc)</summary>

### [`v15.1.0`](https://togithub.com/bodil/im-rs/blob/HEAD/CHANGELOG.md#1510---2022-04-29)

[Compare Source](https://togithub.com/bodil/im-rs/compare/v15.0.0...v15.1.0)

##### Added

-   `HashSet` now implements `From<Vector<A>>` and `From<&Vector<A>> where A: Clone`.

##### Fixed

-   Fixed a long standing crash bug in `OrdMap`/`OrdSet`. ([#&#8203;154](https://togithub.com/bodil/im-rs/issues/154), [#&#8203;143](https://togithub.com/bodil/im-rs/issues/143), [#&#8203;152](https://togithub.com/bodil/im-rs/issues/152), [#&#8203;124](https://togithub.com/bodil/im-rs/issues/124))
-   The `union` method on maps/sets will now prefer to mutate the larger set (which leads to less
    work) rather than the first set. ([#&#8203;163](https://togithub.com/bodil/im-rs/issues/163))
-   Ensure `TreeFocus` only implements `Send`/`Sync` when the underlying type does. ([#&#8203;157](https://togithub.com/bodil/im-rs/issues/157), [#&#8203;158](https://togithub.com/bodil/im-rs/issues/158))
-   There was an issue where nodes in very large `OrdMap`s could overflow when removing an element
    and cause a panic, which has now been fixed. ([#&#8203;141](https://togithub.com/bodil/im-rs/issues/141))
-   Assorted doc cleanup. ([#&#8203;150](https://togithub.com/bodil/im-rs/issues/150), [#&#8203;173](https://togithub.com/bodil/im-rs/issues/173), [#&#8203;186](https://togithub.com/bodil/im-rs/issues/186), [#&#8203;194](https://togithub.com/bodil/im-rs/issues/194))

</details>

<details>
<summary>rust-lang-nursery/lazy-static.rs (lazy_static)</summary>

### [`v1.4.0`](https://togithub.com/rust-lang-nursery/lazy-static.rs/releases/tag/1.4.0)

[Compare Source](https://togithub.com/rust-lang-nursery/lazy-static.rs/compare/1.3.0...1.4.0)

**Bumps the minimum supported version of `rustc` to `1.27.2`**

-   [Fix typo in lib.rs](https://togithub.com/rust-lang-nursery/lazy-static.rs/pull/144) (thanks [`@&#8203;fbruetting](https://togithub.com/fbruetting))`
-   [Automatically check if README.md examples are working when running "cargo test"](https://togithub.com/rust-lang-nursery/lazy-static.rs/pull/145) (thanks [`@&#8203;GuillaumeGomez](https://togithub.com/GuillaumeGomez))`
-   [Allow deprecated to remove warnings in nightly](https://togithub.com/rust-lang-nursery/lazy-static.rs/pull/152) (thanks [`@&#8203;Schaeff](https://togithub.com/Schaeff))`
-   [bump MSRV to 1.27.2](https://togithub.com/rust-lang-nursery/lazy-static.rs/pull/155) (thanks [`@&#8203;matklad](https://togithub.com/matklad))`

</details>

<details>
<summary>indiv0/lazycell (lazycell)</summary>

### [`v1.3.0`](https://togithub.com/indiv0/lazycell/blob/HEAD/CHANGELOG.md#v130-2020-08-12)

##### Bug Fixes

-   Add custom `impl Default` to support non-Default-able `<T>` types ([b49f4eab](https://togithub.com/indiv0/lazycell/commit/b49f4eabec49c0a5146ef01017c2506a3c357180))
-   **lazycell:**  Fix unsound aliasing in `LazyCell::fill` ([e789ac1a](https://togithub.com/indiv0/lazycell/commit/e789ac1a99010ad79c2d09c761fec6d67053647d), closes [#&#8203;98](https://togithub.com/indiv0/lazycell/issues/98))

##### Features

-   Implement serde support ([e728a0b6](https://togithub.com/indiv0/lazycell/commit/e728a0b680e607b793a81b5af7bf7f1d2c0eb5e5))

##### Documentation

-   fix typo ([5f5ba9d5](https://togithub.com/indiv0/lazycell/commit/5f5ba9d5ac3364f8376c0c872c2e5094974385ba))

### [`v1.2.1`](https://togithub.com/indiv0/lazycell/blob/HEAD/CHANGELOG.md#v121-2018-12-03)

[Compare Source](https://togithub.com/indiv0/lazycell/compare/v1.2.0...v1.2.1)

##### Features

-   Implement Clone for LazyCell and AtomicLazyCell ([30fe4a8f](https://togithub.com/indiv0/lazycell/commit/30fe4a8f568059b3c78ed149a810962a676cb2b2))

</details>

<details>
<summary>rust-lang/libc (libc)</summary>

### [`v0.2.147`](https://togithub.com/rust-lang/libc/releases/tag/0.2.147)

[Compare Source](https://togithub.com/rust-lang/libc/compare/0.2.146...0.2.147)

#### What's Changed

-   Add socket timestamping for Android by [`@&#8203;spencercw](https://togithub.com/spencercw)` in [https://github.com/rust-lang/libc/pull/3267](https://togithub.com/rust-lang/libc/pull/3267)
-   Fix s390x-installer paths by [`@&#8203;JohnTitor](https://togithub.com/JohnTitor)` in [https://github.com/rust-lang/libc/pull/3281](https://togithub.com/rust-lang/libc/pull/3281)
-   Generate documentation for all supported targets on docs.rs by [`@&#8203;GuillaumeGomez](https://togithub.com/GuillaumeGomez)` in [https://github.com/rust-lang/libc/pull/3279](https://togithub.com/rust-lang/libc/pull/3279)
-   Define `IPPROTO_ETHERNET` on Linux-like platforms. by [`@&#8203;sunfishcode](https://togithub.com/sunfishcode)` in [https://github.com/rust-lang/libc/pull/3272](https://togithub.com/rust-lang/libc/pull/3272)
-   Add trait implementations for QNX Neutrino by [`@&#8203;flba-eb](https://togithub.com/flba-eb)` in [https://github.com/rust-lang/libc/pull/3273](https://togithub.com/rust-lang/libc/pull/3273)
-   getentropy addition to android by [`@&#8203;devnexen](https://togithub.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3270](https://togithub.com/rust-lang/libc/pull/3270)
-   android adding sendfile64 variant by [`@&#8203;devnexen](https://togithub.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3271](https://togithub.com/rust-lang/libc/pull/3271)
-   android: Add NLM_F_DUMP_FILTERED constant by [`@&#8203;dragan-cecavac-nordsec](https://togithub.com/dragan-cecavac-nordsec)` in [https://github.com/rust-lang/libc/pull/3276](https://togithub.com/rust-lang/libc/pull/3276)
-   Update and release version 0.2.147 by [`@&#8203;flba-eb](https://togithub.com/flba-eb)` in [https://github.com/rust-lang/libc/pull/3283](https://togithub.com/rust-lang/libc/pull/3283)

#### New Contributors

-   [`@&#8203;dragan-cecavac-nordsec](https://togithub.com/dragan-cecavac-nordsec)` made their first contribution in [https://github.com/rust-lang/libc/pull/3276](https://togithub.com/rust-lang/libc/pull/3276)

**Full Changelog**: https://github.com/rust-lang/libc/compare/0.2.146...0.2.147

### [`v0.2.146`](https://togithub.com/rust-lang/libc/releases/tag/0.2.146)

[Compare Source](https://togithub.com/rust-lang/libc/compare/0.2.145...0.2.146)

#### What's Changed

-   Use `use` to alias open/openat in lfs64.rs by [`@&#8203;bossmc](https://togithub.com/bossmc)` in [https://github.com/rust-lang/libc/pull/3265](https://togithub.com/rust-lang/libc/pull/3265)
-   Update crate version to 0.2.146 by [`@&#8203;nikarh](https://togithub.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3266](https://togithub.com/rust-lang/libc/pull/3266)

**Full Changelog**: https://github.com/rust-lang/libc/compare/0.2.145...0.2.146

### [`v0.2.145`](https://togithub.com/rust-lang/libc/releases/tag/0.2.145)

[Compare Source](https://togithub.com/rust-lang/libc/compare/0.2.144...0.2.145)

**This version has been yanked on crates.io.**

#### What's Changed

-   redox add sig(timed)wait calls by [`@&#8203;devnexen](https://togithub.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3244](https://togithub.com/rust-lang/libc/pull/3244)
-   Support for `PTRACE_SYSEMU` and `PTRACE_SYSEMU_SINGLESTEP` on musl by [`@&#8203;emilengler](https://togithub.com/emilengler)` in [https://github.com/rust-lang/libc/pull/3245](https://togithub.com/rust-lang/libc/pull/3245)
-   Fix loongarch64 bindings by [`@&#8203;heiher](https://togithub.com/heiher)` in [https://github.com/rust-lang/libc/pull/3246](https://togithub.com/rust-lang/libc/pull/3246)
-   Add linux canxl constants and canxl frame struct by [`@&#8203;marcelbuesing](https://togithub.com/marcelbuesing)` in [https://github.com/rust-lang/libc/pull/3247](https://togithub.com/rust-lang/libc/pull/3247)
-   Change branch references to HEAD where possible or main otherwise by [`@&#8203;joshtriplett](https://togithub.com/joshtriplett)` in [https://github.com/rust-lang/libc/pull/3249](https://togithub.com/rust-lang/libc/pull/3249)
-   linux/musl/s390x: change f_\* constants to uint from ulong by [`@&#8203;nekopsykose](https://togithub.com/nekopsykose)` in [https://github.com/rust-lang/libc/pull/3137](https://togithub.com/rust-lang/libc/pull/3137)
-   android: add memmem by [`@&#8203;tibordp](https://togithub.com/tibordp)` in [https://github.com/rust-lang/libc/pull/3252](https://togithub.com/rust-lang/libc/pull/3252)
-   redox adding lockf flags by [`@&#8203;devnexen](https://togithub.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3251](https://togithub.com/rust-lang/libc/pull/3251)
-   Add ucred struct and field type aliases for redox by [`@&#8203;andrewdavidmackenzie](https://togithub.com/andrewdavidmackenzie)` in [https://github.com/rust-lang/libc/pull/3250](https://togithub.com/rust-lang/libc/pull/3250)
-   Fixed vita libc definitions by [`@&#8203;nikarh](https://togithub.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3255](https://togithub.com/rust-lang/libc/pull/3255)
-   Skip round-trip tests for structs with FAMs by [`@&#8203;bossmc](https://togithub.com/bossmc)` in [https://github.com/rust-lang/libc/pull/3254](https://togithub.com/rust-lang/libc/pull/3254)
-   Fixed pthread_attr_t and pthread_rwlockattr_t for newlib by [`@&#8203;nikarh](https://togithub.com/nikarh)` in [https://github.com/rust-lang/libc/pull/3256](https://togithub.com/rust-lang/libc/pull/3256)
-   Alias all LFS64 symbols to their non-LFS64 counterparts on musl by [`@&#8203;bossmc](https://togithub.com/bossmc)` in [https://github.com/rust-lang/libc/pull/2935](https://togithub.com/rust-lang/libc/pull/2935)
-   add constants and structs for vsock on macos by [`@&#8203;tzneal](https://togithub.com/tzneal)` in [https://github.com/rust-lang/libc/pull/3258](https://togithub.com/rust-lang/libc/pull/3258)
-   dragonflybsd supports malloc_usable_size too by [`@&#8203;devnexen](https://togithub.com/devnexen)` in [https://github.com/rust-lang/libc/pull/3253](https://togithub.com/rust-lang/libc/pull/3253)
-   linux-gnu: add putpwent/putgrent by [`@&#8203;superwhiskers](https://togithub.c`

</details>

---

### Configuration

📅 **Schedule**: Branch creation - "before 3am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).

🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.

♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://togithub.com/renovatebot/renovate/discussions) if that's undesired.

---

 - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box

---

This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://developer.mend.io/github/rust-lang/cargo).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNi4yNC4yIiwidXBkYXRlZEluVmVyIjoiMzYuMjQuMiIsInRhcmdldEJyYW5jaCI6Im1hc3RlciJ9-->
orbea added a commit to orbea/gentoo that referenced this pull request Aug 7, 2023
This fixes the build with musl-1.2.4, may need -system-bootstrap after
updating musl.

Closes: https://bugs.gentoo.org/903607
Upstream-PR: rust-lang/rust#106246
Upstream-Issue: rust-lang/libc#2934
Upstream-PR: rust-lang/libc#2935
Upstream-Commit: rust-lang/libc@1e8c55c
Upstream-PR: rust-random/getrandom#326
Upstream-Commit: rust-random/getrandom@7f73e3c
Signed-off-by: orbea <orbea@riseup.net>
bors added a commit that referenced this pull request Sep 22, 2023
Fix compatibility with Emscripten >= 3.1.44

By aliasing all LFS64 symbols to their non-LFS64 counterparts.

Context:
#2935
emscripten-core/emscripten#19812
@alyssais alyssais mentioned this pull request Oct 9, 2023
47 tasks
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

7 participants