NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #431 most downloaded on crates.io
UTF-8 paths
Last release 22 days ago
15 Sep 2026
Release timing varies
gaps range from 9 days to 10 months
Nearly every release is documented
notes for 28 of 28 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
29 releases · first in 2021
One column per quarter.
The Utf8Path::ends_with parameter is now called child to match std::Path::ends_with . Thanks hxperl for your first contribution!
Utf8Path::ends_with parameter is now called child to match std::path::Path::ends_with. Thanks hxperl for your first contribution!Removed unnecessary files from the package.
Removed unnecessary files from the package.
Methods to convert between Box<Utf8Path> and Box<Path> :
Methods to convert between Box<Utf8Path> and Box<Path>:
From<Box<Utf8Path>> for Box<Path> (as of release, not documented due to rust-lang/rust#158466).Utf8Path::into_std_boxed_path(self: Box<Self>)Utf8Path::from_boxed_path(path: Box<Path>)TryFrom<Box<Path>> for Box<Utf8Path>Thanks nicopap for your first contribution!
Methods to convert between Box<Utf8Path> and Box<Path>:
From<Box<Utf8Path>> for Box<Path> (as of release, not documented due to rust-lang/rust#158466).Utf8Path::into_std_boxed_path(self: Box<Self>)Utf8Path::from_boxed_path(path: Box<Path>)TryFrom<Box<Path>> for Box<Utf8Path>Thanks nicopap for your first contribution!
Utf8Path::hash now delegates to std::Path::hash , resulting in hashing requiring ~2x fewer instructions. Thanks stormslowly for your first contributio
Utf8Path::hash now delegates to std::path::Path::hash, resulting in hashing requiring ~2x fewer instructions. Thanks stormslowly for your first contribution!Utf8PathBuf::new is a const fn.
On Rust 1.91 and above:
Utf8PathBuf::add_extensionUtf8Path::file_prefixUtf8Path::with_added_extensionUtf8PathBuf::new is a const fn.Replaced obsolete doc_auto_cfg with doc_cfg , to fix Rust nightly builds with the doc_cfg flag enabled.
Replaced obsolete doc_auto_cfg with doc_cfg, to fix Rust nightly builds with the doc_cfg flag enabled.
serde and proptest are no longer available as features. This is technically a breaking change, but these features were already no-ops. Instead, use se…
serde_core.serde_core rather than serde. This allows camino's compilation to be parallelized with serde_derive.serde and proptest are no longer available as features. This is technically a breaking change, but these features were already no-ops. Instead, use serde1 and proptest1 respectively.Utf8PathBuf::from_os_string and Utf8Path::from_os_str conversions.
Utf8PathBuf::from_os_string and Utf8Path::from_os_str conversions.TryFrom<OsString> for Utf8PathBuf and TryFrom<&OsStr> for &Utf8Path conversions.Thanks to BenjaminBrienen for your first contribution!
Utf8PathBuf::from_os_string and Utf8Path::from_os_str conversions.TryFrom<OsString> for Utf8PathBuf and TryFrom<&OsStr> for &Utf8Path conversions.Thanks to BenjaminBrienen for your first contribution!
Utf8PathBuf::leak on Rust 1.89 and above.
Utf8PathBuf::leak on Rust 1.89 and above.Hand-write serde implementations, dropping the dependency on serde_derive . Thanks to Enselic for initiating the discussion and for your first contrib
serde_derive. Thanks to Enselic for initiating the discussion and for your first contribution!Top-level function absolute_utf8 wraps std::absolute , converting paths to UTF-8. Requires Rust 1.79 and above.
absolute_utf8 wraps std::path::absolute, converting paths to UTF-8.Use OsStr::as_encoded_bytes on Rust 1.74 and above, making conversions from OsStr to str virtually free (#93). Thanks @h-a-n-a for your first contribu
Resolve unexpected_cfg warnings.
unexpected_cfg warnings.Implement Deserialize for Box .
Deserialize for Box<Utf8Path>.Implement DerefMut for Utf8PathBuf on Rust 1.68 and above.
DerefMut for Utf8PathBuf on Rust 1.68 and above.New method Utf8DirEntry::into_path to return an owned Utf8PathBuf.
Utf8DirEntry::into_path to return an owned Utf8PathBuf.New convenience methods [FromPathBufError::into_io_error] and [FromPathError::into_io_error].
FromPathBufError::into_io_error] and
[FromPathError::into_io_error].Fixed a build regression on older nightlies in the 1.63 series (#22).
New methods, mirroring those in recent versions of Rust:
Utf8Path::try_exists checks whether a path exists. Note that while std::path::Path only provides this method for Rust 1.58 and above, camino backfills the method for all Rust versions it supports.Utf8PathBuf::shrink_to shrinks a Utf8PathBuf to a given size. This was added in, and is gated on, Rust 1.56+.Utf8PathBuf::try_reserve and Utf8PathBuf::try_reserve_exact implement fallible allocations. These were added in, and are gated on, Rust 1.63+.#[must_use] annotations to APIs, mirroring those added to Path and PathBuf in recent versions of Rust. The minor version bump is due to this change.### Fixed - Documentation fixes.
New methods canonicalize_utf8, read_link_utf8 and read_dir_utf8 return Utf8PathBufs, erroring out if a resulting path is not valid UTF-8.
Utf8Path::is_symlink checks whether a path is a symlink. Note that while std::Path only provides this method for version 1.58 and above, camino backfi
Utf8Path::is_symlink checks whether a path is a symlink. Note that while std::path::Path only
provides this method for version 1.58 and above, camino backfills the method for all Rust versions
it supports.structopt example to clap 3's builtin derive feature.
(camino continues to work with structopt as before.)(This release was yanked due to a publishing issue.)
(This release was yanked due to a publishing issue.)
Utf8PathBuf::into_std_path_buf converts a Utf8PathBuf to a PathBuf; equivalent to the From for PathBuf impl, but may aid in type inference.
Utf8PathBuf::into_std_path_buf converts a Utf8PathBuf to a PathBuf; equivalent to the
From<Utf8PathBuf> for PathBuf impl, but may aid in type inference.Utf8Path::as_std_path converts a Utf8Path to a Path; equivalent to the
AsRef<&Path> for &Utf8Path impl, but may aid in type inference.Hash impls for Utf8PathBuf and Utf8Path now match as required by the Borrow contract ([#9]).
Hash impls for Utf8PathBuf and Utf8Path now match as required by the Borrow contract (#9).TryFrom for Utf8PathBuf and TryFrom<&Path> for &Utf8Path, both of which return new error types ([#6]).
TryFrom<PathBuf> for Utf8PathBuf and TryFrom<&Path> for &Utf8Path, both of which return new error types (#6).AsRef<Utf8Path>, AsRef<Path>, AsRef<str> and AsRef<OsStr> impls for Utf8Components, Utf8Component and
Iter.From impls for converting a &Utf8Path or a Utf8PathBuf into Box , Rc , Arc and Cow<'a, Path>.
From impls for converting a &Utf8Path or a Utf8PathBuf into Box<Path>, Rc<Path>, Arc<Path> and Cow<'a, Path>.PartialEq and PartialOrd implementations comparing Utf8Path and Utf8PathBuf with Path, PathBuf and its
variants, and comparing OsStr, OsString and its variants.More PartialEq and PartialOrd implementations.
PartialEq and PartialOrd implementations.<!-- next-url --> [1.2.6]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.6 [1.2.5]: https://github.com/camino-rs/camino/releases/tag/cam
Initial release.
<!-- next-url --> [1.2.6]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.6 [1.2.5]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.5 [1.2.4]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.4 [1.2.3]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.3 [1.2.2]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.2 [1.2.1]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.1 [1.2.0]: https://github.com/camino-rs/camino/releases/tag/camino-1.2.0 [1.1.12]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.12 [1.1.11]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.11 [1.1.10]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.10 [1.1.9]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.9 [1.1.8]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.8 [1.1.7]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.7 [1.1.6]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.6 [1.1.5]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.5 [1.1.4]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.4 [1.1.3]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.3 [1.1.2]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.2 [1.1.1]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.1 [1.1.0]: https://github.com/camino-rs/camino/releases/tag/camino-1.1.0 [1.0.9]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.9 [1.0.8]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.8 [1.0.7]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.7 [1.0.6]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.6 [1.0.5]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.5 [1.0.4]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.4 [1.0.3]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.3 [1.0.2]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.2 [1.0.1]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.1 [1.0.0]: https://github.com/camino-rs/camino/releases/tag/camino-1.0.0
Your coding agent can read these notes before it upgrades. Set up the MCP server →