Skip to content

Latest commit

 

History

History
281 lines (178 loc) · 7.99 KB

CHANGELOG.md

File metadata and controls

281 lines (178 loc) · 7.99 KB

Changelog

3.10.1

  • Handle potential integer overflows in 32-bit systems when seeking/truncating "spooled" temporary files past 4GiB (2³²).
  • Handle a theoretical 32-bit overflow when generating a temporary file name larger than 4GiB. Now it'll panic (on allocation failure) rather than silently succeeding due to wraparound.

Thanks to @stoeckmann for finding and fixing both of these issues.

3.10.0

  • Drop redox_syscall dependency, we now use rustix for Redox.
  • Add Builder::permissions for setting the permissions on temporary files and directories (thanks to @Byron).
  • Update rustix to 0.38.31.
  • Update fastrand to 2.0.1.

3.9.0

  • Updates windows-sys to 0.52
  • Updates minimum rustix version to 0.38.25

3.8.1

  • Update rustix to fix a potential panic on persist_noclobber on android.
  • Update redox_syscall to 0.4 (on redox).
  • Fix some docs typos.

3.8.0

  • Added with_prefix and with_prefix_in to TempDir and NamedTempFile to make it easier to create temporary files/directories with nice prefixes.
  • Misc cleanups.

3.7.1

  • Tempfile builds on haiku again.
  • Under the hood, we've switched from the unlinkat/linkat syscalls to the regular unlink/link syscalls where possible.

3.7.0

BREAKING: This release updates the MSRV to 1.63. This isn't an API-breaking change (so no major release) but it's still a breaking change for some users.

  • Update fastrand from 1.6 to 2.0
  • Update rustix to 0.38
  • Updates the MSRV to 1.63.
  • Provide AsFd/AsRawFd on wasi.

3.6.0

  • Update windows-sys to 0.48.
  • Update rustix min version to 0.37.11
  • Forward some NamedTempFile and SpooledTempFile methods to the underlying File object for better performance (especially vectorized writes, etc.).
  • Implement AsFd and AsHandle.
  • Misc documentation fixes and code cleanups.

3.5.0

  • Update rustix from 0.36 to 0.37.1. This makes wasi work on rust stable
  • Update windows-sys, redox_syscall
  • BREAKING: Remove the implementation of Write for &NamedTempFile<F> where &F: Write. Unfortunately, this can cause compile issues in unrelated code (#224).

3.4.0

SECURITY: Prior tempfile releases depended on remove_dir_all version 0.5.0 which was vulnerable to a TOCTOU race. This same race is present in rust versions prior to 1.58.1.

Features:

  • Generalized temporary files: NamedTempFile can now abstract over different kinds of files (e.g., unix domain sockets, pipes, etc.):
    • Add Builder::make and Builder::make_in for generalized temp file creation.
    • Add NamedTempFile::from_parts to complement NamedTempFile::into_parts.
    • Add generic parameter to NamedTempFile to support wrapping non-File types.

Bug Fixes/Improvements:

  • Don't try to create a temporary file multiple times if the file path has been fully specified by the user (no random characters).
  • NamedTempFile::persist_noclobber is now always atomic on linux when renameat_with is supported. Previously, it would first link the new path, then unlink the previous path.
  • Fix compiler warnings on windows.

Trivia:

  • Switch from libc to rustix on wasi/unix. This now makes direct syscalls instead of calling through libc.
  • Remove remove_dir_all dependency. The rust standard library has optimized their internal version significantly.
  • Switch to official windows-sys windows bindings.

Breaking:

  • The minimum rust version is now 1.48.0.
  • Mark most functions as must_use.
  • Uses direct syscalls on linux by default, instead of libc.
  • The new type parameter in NamedTempFile may lead to type inference issues in some cases.

3.3.0

Features:

  • Replace rand with fastrand for a significantly smaller dependency tree. Cryptographic randomness isn't necessary for temporary file names, and isn't all that helpful either.
  • Add limited WASI support.
  • Add a function to extract the inner data from a SpooledTempFile.

Bug Fixes:

  • Make it possible to persist unnamed temporary files on linux by removing the O_EXCL flag.
  • Fix redox minimum crate version.

3.2.0

Features:

  • Bump rand dependency to 0.8.
  • Bump cfg-if dependency to 1.0

Other than that, this release mostly includes small cleanups and simplifications.

Breaking: The minimum rust version is now 1.40.0.

3.1.0

Features:

  • Bump rand dependency to 0.7.

Breaking: The minimum rust version is now 1.32.0.

3.0.9

Documentation:

  • Add an example for reopening a named temporary file.
  • Flesh out the security documentation.

Features:

  • Introduce an append option to the builder.
  • Errors:
    • No longer implement the soft-deprecated description.
    • Implement source instead of cause.

Breaking: The minimum rust version is now 1.30.

3.0.8

This is a bugfix release.

Fixes:

  • Export PathPersistError.
  • Fix a bug where flushing a SpooledTempFile to disk could fail to write part of the file in some rare, yet-to-reproduced cases.

3.0.7

Breaking:

  • Builder::prefix and Builder::suffix now accept a generic &AsRef<OsStr>. This could affect type inference.
  • Temporary files (except unnamed temporary files on Windows and Linux >= 3.11) now use absolute path names. This will break programs that create temporary files relative to their current working directory when they don't have the search permission (x) on some ancestor directory. This is only likely to affect programs with strange chroot-less filesystem sandboxes. If you believe you're affected by this issue, please comment on #40.

Features:

  • Accept anything implementing &AsRef<OsStr> in the builder: &OsStr, &OsString, &Path, etc.

Fixes:

  • Fix LFS support.
  • Use absolute paths for named temporary files to guard against changes in the current directory.
  • Use absolute paths when creating unnamed temporary files on platforms that can't create unlinked or auto-deleted temporary files. This fixes a very unlikely race where the current directory could change while the temporary file is being created.

Misc:

  • Use modern stdlib features to avoid custom unsafe code. This reduces the number of unsafe blocks from 12 to 4.

3.0.6

  • Don't hide temporary files on windows, fixing #66 and #69.

3.0.5

Features:

  • Added a spooled temporary file implementation. This temporary file variant starts out as an in-memory temporary file but "rolls-over" onto disk when it grows over a specified size (#68).
  • Errors are now annotated with paths to make debugging easier (#73).

Misc:

  • The rand version has been bumped to 0.6 (#74).

Bugs:

  • Tempfile compiles again on Redox (#75).

3.0.4

  • Now compiles on unsupported platforms.

3.0.3

  • update rand to 0.5

3.0.2

  • Actually delete temporary files on non-Linux unix systems (thanks to @oliverhenshaw for the fix and a test case).

3.0.1

  • Restore NamedTempFile::new_in

3.0.0

  • Adds temporary directory support (@KodrAus)
  • Allow closing named temporary files without deleting them (@jasonwhite)

2.2.0

  • Redox Support

2.1.6

  • Remove build script and bump minimum rustc version to 1.9.0

2.1.5

  • Don't build platform-specific dependencies on all platforms.
  • Cleanup some documentation.

2.1.4

  • Fix crates.io tags. No interesting changes.

2.1.3

Export PersistError.

2.1.2

Add Read/Write/Seek impls on &NamedTempFile. This mirrors the implementations on &File. One can currently just deref to a &File but these implementations are more discoverable.

2.1.1

Add LFS Support.

2.1.0

  • Implement AsRef<File> for NamedTempFile allowing named temporary files to be borrowed as Files.
  • Add a method to convert a NamedTempFile to an unnamed temporary File.

2.0.1

  • Arm bugfix

2.0.0

This release replaces TempFile with a tempfile() function that returns std::fs::File objects. These are significantly more useful because most rust libraries expect normal File objects.

To continue supporting shared temporary files, this new version adds a reopen() method to NamedTempFile.