NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1214 most downloaded on crates.io
A tempfile implementation with a global registry to assure cleanup
Last release today
08 Oct 2026
Ships fairly regularly
a new release about every 4 weeks
Nearly every release is documented
notes for 42 of 44 stable releases
1 version withdrawn
withdrawn after publishing
4 years old
45 releases · first in 2023
One column per quarter.
Nothing published for this version
Nothing published for this version
4 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4 commits contributed to the release over the course of 27 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6428edc)155ff6d)9402adc)f7d4f33)
</details>9 commits contributed to the release over the course of 28 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
10c58bb)ab2fee1)2cb17b2)e10d5f6)3675a8d)4c77f81)3af9b4a)d3e4c17)adb8328)
</details>2 commits contributed to the release over the course of 2 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
53f880c)4d5ba23)
</details>8 commits contributed to the release over the course of 32 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
f9fbcba)444a92b)package.include patterns more specific so they don't match ignored files (c2c917f)29c275e)b1102c2)700ad9e)82674cb)98bae84)
</details>5 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4a3d6e9)c389a2c)6183fd0)6bdb331)9327b73)
</details>Add Windows-specific retry logic for persist operations On Windows, external processes (antivirus, file watchers) can temporarily lock files, causing
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6648e05)d66ac10)c149c60)816d45f)8bceefb)7ce3c55)f7d0975)
</details>4 commits contributed to the release over the course of 16 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cbbdef5)562e684)0a333e5)c663b3f)
</details>4 commits contributed to the release over the course of 14 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
7be8f90)d914d95)4edc5dd)d6c5b9d)
</details>2 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
21fecdf)fbf9c39)
</details>3 commits contributed to the release over the course of 1 calendar day.
<csr-id-6f469a6fea59c88e6c69a5f94b0bc8a5977cb75b/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
bdcce5f)doc_auto_cfg feature to fix docs.rs documentation. (6f469a6)3313233)
</details>6 commits contributed to the release over the course of 99 calendar days.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
89fb308)4da2927)6cc8464)9365cc3)838ff95)784c046)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5a919c4)65037b5)dab97f7)a9a8ea1)c2eb0c1)bfb1c34)f8d7c0a)151e3a5)8d4c4d1)
</details>3 commits contributed to the release.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e104545)5f7f805)631f07a)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
cc5b696)49fa9f3)db0b095)0bf84db)46227e6)06bf1e1)b5e9059)68e6b2e)420e730)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
b41312b)38dff41)8df0db2)
</details>5 commits contributed to the release.
<csr-id-17835bccb066bbc47cc137e8ec5d9fe7d5665af0/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
dea106a)1f6390c)7ec21bb)rust-version to 1.70 (17835bc)db5c9cf)
</details>7 commits contributed to the release.
<csr-id-64ff0a77062d35add1a2dd422bb61075647d1a36/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
3f7e8ee)795962b)64ff0a7)649f588)beba720)37ba461)2e0ce50)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
f2b522d)a65a17f)42cecea)0f25841)1d37bf6)dashmap to v6.0 (aa34bed)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6232824)a1b73a6)0470df3)99c00cc)9fa1054)2cefe77)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
4f98e94)9511416)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
b050327)52c3bbd)3e5c974)f8ce3d0)7b44c7f)
</details>tempfile with permission support, adding new *_with_permissions(..., permissions) methods.
*_with_permissions(..., permissions) methods.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
eb6aa8f)6a2e0be)
</details>3 commits contributed to the release.
<csr-id-3bd09ef120945a9669321ea856db4079a5dab930/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
972241f)8c492d7)rust-version manifest field back to 1.65. (3bd09ef)
</details>4 commits contributed to the release.
<csr-id-aea89c3ad52f1a800abb620e9a4701bdf904ff7d/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
e1aae19)e78a92b)4454c9d)aea89c3)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
55d386a)2b1c60a)d3dcbe5)5a0d93e)bb3224c)c0e72fb)b65a80b)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
68e5432)1347a54)
</details>4 commits contributed to the release over the course of 3 calendar days.
<csr-id-a8b227ebe7dd140361de9bd7f0d88debfc2416d0/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
a8b227e)7891fb1)8a60d5b)b009db0)
</details>use dyn trait where possible. This reduces compile time due to avoiding duplication.
dyn trait where possible.
This reduces compile time due to avoiding duplication.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
8bd0456)375db06)dynification (f658fcc)dyn trait where possible. (072ee32)363ee77)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
30b2761)6672d8e)f23ea88)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
107a64e)8451aac)16295b5)c4cc5f2)5cb3589)13a497f)2fc66b5)9064ea3)
</details>allow re-release of gix-tempfile with latest dependencies
gix-tempfile with latest dependencies<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
6 commits contributed to the release over the course of 10 calendar days.
<csr-id-bcad5c22049d56a25ef69d6c7a3344e78f9a1d4d/>
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ea9f942)18b0a37)aa16c8c)4f635fc)fe59956)clippy::redundant-closure-for-method-calls lint (bcad5c2)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
9a9fa96)8f15cec)420553a)2578e57)
</details>A maintenance release without user-facing changes.
A maintenance release without user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
91134a1)30a1a71)8dbd0a6)5d2b5d0)gix-fs crate to consolidate all filesystem utilities (f8cc33c)
</details>A maintenance release without any user-facing changes.
A maintenance release without any user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
5dc1f9f)3016a28)typos tool. (2321eb9)
</details>A maintenance release without any user-facing changes.
A maintenance release without any user-facing changes.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
c1f1bfb)c66e298)3836cc0)01277a6)
</details>…to give cargo an escape hatch and let it use the vulnerable version for a little longer.
<csr-id-304b0c1ffdfc90bbfaad1bf30162070a5ce4b8c0/> Upgrade tempfile to 3.4, fixing a security issue.
This is not really a breaking change, but a tactical major version increment
to give cargo an escape hatch and let it use the vulnerable version for a little
longer.
This means this gix up until v0.40 can be used to pull in tempfile 3.3, and
all future versions will use tempfile 3.4 (or 3.X) for that matter.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
29a0870)e06f5f5)tempfile to 3.4, fixing a security issue. (304b0c1)
</details>switch tempfile to ~3.3.0 to help with cargo build. gix-tempfile is now used in cargo, and tempfile seems to cause trouble in at least one tier (see h
<csr-id-6778c5f6874ec2a44859de25428e6603dd4e9e8a/> switch tempfile to ~3.3.0 to help with cargo build.
gix-tempfile is now used in cargo, and tempfile seems to cause trouble
in at least one tier (see https://github.com/rust-lang/rust/pull/108665#issuecomment-1457677883).
This change pins tempfile to a working version until this is sorted out together with
the tempfile maintainers.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
add hp-hashmap feature toggle (enabled by default). This allows avoiding the dashmap dependency, and to optimize load for different applications. It s
hp-hashmap feature toggle (enabled by default).
This allows avoiding the dashmap dependency, and to optimize load
for different applications. It seems that this simple implementation
has performance benefits in some situations at least even though it
may leave all tempfiles in place if a signal handler tries to cleanup
while a lock is held.<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
ea9fd1d)94c99c7)d686d94)hp-hashmap feature toggle (enabled by default). (1ff1342)d635fb7)
</details>gate all signal handling behind the signals feature toggle. This change also consolidates all signal handling into its own module called signal to pro
<csr-id-441f5ac4dd2f0636ec07065f8095e8bae5ce6985/> gate all signal handling behind the signals feature toggle.
This change also consolidates all signal handling into its own module called
signal to provide reusable handlers and as well as well as signal initialization.
Note that the functions to cleanup tempfiles don't interact with the signal registry,
hence they still can be called without the signals feature enabled.
Note that this change sneakily fixes a bug that could have caused a write_all()
on a tempfile that was removed by a signal to enter an infinite loop.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
Upgrade dashmap to 5.1.0 (with security fix) (`2520945`)
<csr-id-f7f136dbe4f86e7dee1d54835c420ec07c96cd78/> <csr-id-533e887e80c5f7ede8392884562e1c5ba56fb9a8/> <csr-id-25209454d3f7e27e12e8ddca92e43b1ff01d58aa/>
<csr-id-c863ea5b34fa9ee3dac21c1f85587da16045f8d8/> do not install signal handlers by default The previous behaviour is meant to be convenient for the casual user even though it ends up being surprising when used in applications that install their own signal handlers and need more control over how the program shuts down.
This is now fixed by requiring an explicit setup() call before
the first tempfile is created, which makes it a breaking change.
<csr-id-3d8fa8fef9800b1576beab8a5bc39b821157a5ed/> upgrade edition to 2021 in most crates. MSRV for this is 1.56, and we are now at 1.60 so should be compatible. This isn't more than a patch release as it should break nobody who is adhering to the MSRV, but let's be careful and mark it breaking.
Note that git-features and git-pack are still on edition 2018
as they make use of a workaround to support (safe) mutable access
to non-overlapping entries in a slice which doesn't work anymore
in edition 2021.
<csr-id-81ed5f5e7a3634f0fab681ca59e40099f0118f75/> Assure interrupt based tempfile cleanup can't deadlock
We do this by using the try_entry() API provided by the most recent
dashmap, at the cost of potentially trying to access a lot of indices
that don't exist in the map anymore. The cost of this are expected
to be low though especially since interrupts are the uncommmon case.
A side-effect of this is that tempfiles that are currently being removed for writing to them, for example, won't be cleaned up.
It will be up to the code running after the interrupt, if the case at all, to deal with the tempfile, which is what it does anyway.
<csr-id-d9451e8d7fc39c252042f9d2447061262c16ae7a/> downgrade dashmap to 4.0 to avoid unsoundness. See https://github.com/xacrimon/dashmap/issues/167 for tracking progress on resolving the issue.
<csr-read-only-do-not-edit/>
<csr-read-only-do-not-edit/>
Clippy helped 8 times to make code idiomatic.
<csr-read-only-do-not-edit/>
<details><summary>view details</summary>
04b9ca0)0f5f47d)e695eda)0c81769)a517e39)145103d)4a9a05f)f536bad)a0bc98c)2f75db2)52d4fe5)746a676)910fa06)caa7a1b)rust-version to 1.64 (55066ce)e313112)6efd0d3)6ccc88a)c9275b9)git-testtools to gix-testtools (b65c33d)git-pack to gix-pack (1ee81ad)git-odb to gix-odb (476e2ad)git-index to gix-index (86db5e0)git-diff to gix-diff (49a163e)git-commitgraph to gix-commitgraph (f1dd0a3)git-mailmap to gix-mailmap (2e28c56)git-discover to gix-discover (53adfe1)git-chunk to gix-chunk (59194e3)git-bitmap to gix-bitmap (75f2a07)git-protocol to gix-protocol (823795a)git-refspec to gix-refspec (c958802)git-revision to gix-revision (ee0ee84)git-transport to gix-transport (b2ccf71)git-credentials to gix-credentials (6b18abc)git-prompt to gix-prompt (6a4654e)git-command to gix-command (d26b8e0)git-packetline to gix-packetline (5cbd22c)git-worktree to gix-worktree (73a1282)git-worktree to gix-worktree (108bb1a)git-url to gix-url (b50817a)git-date to gix-date (9a79ff2)git-attributes to gix-attributes (4a8b3b8)git-quote to gix-quote (648025b)git-config to gix-config (3a861c8)git-ref to gix-ref (1f5f695)git-lock to gix-lock (2028e78)git-tempfile to gix-tempfile (b6cc3eb)git-tempfile to gix-tempfile (192ed5d)git-object to gix-object (fc86a1e)git-actor to gix-actor (4dc9b44)git-validate to gix-validate (5e40ad0)git-hash to gix-hash (4a9d025)git-features to gix-features (e2dd68a)git-glob to gix-glob (35b2a3a)git-sec to gix-sec (eabbb92)git-path to gix-path (d3bbcfc)git-config-value to gix-config-value (622b3e1)6461c3d)git-repository to gix (7bed2a9)c196d20)7c846d2)1e544e8)39ed9ed)bac57dd)5b5b380)93bef97)b93f0c4)9e04685)bcd9654)b2c301e)e4648f8)0e4462d)3d8fa8f)d071583)423af90)5406630)04cfa63)25a7726)29a043b)5c05198)bc64b96)cfa1440)4974eca)95f2f4f)f90d772)e2ee3de)31c2351)f7f136d)533e887)bd5f3e8)c96473d)c06ae1c)ce885ad)9b9ea02)6da8250)7b61506)4e7b343)e9fcb70)4737b1e)3c50625)085e76b)89ea12b)daa71c3)e1003d5)e58dc30)7cf3545)5849d5b)90b1c42)bd3f8ee)2520945)d811154)d9451e8)1b76119)8f57c29)d78aab7)373cbc8)674ec73)8900d69)59ffbd9)a474395)01f7b72)21541b3)310ea73)d57d279)78cfe0a)295eb37)d9e71ac)4701296)1238535)3a1cf4d)01278fe)eda952f)5e0edba)d58f37e)1dec1c4)0e11e98)59d03d6)a77a71c)e1964e4)3d2456e)b2217e7)d8b2d66)a261b82)80a6e0e)6025aa0)caf6495)aa96ed1)4512798)813c46b)956e69f)3706b26)9fb13d2)3c34194)6af84c9)17942c7)f0e1427)92f3a83)f3144a8)450db66)3bafa7b)d4bb61d)4788222)3cd6712)db9bb11)8a0ce64)3b424b1)913f301)9384617)f4a1d33)7c2eb36)d311b08)a0f9803)3a0f1ad)9b8abd0)0ef85a2)3e45e5f)ba41a15)bf48913)9226dbe)730b733)1da35ce)e665a5f)71acede)6ad4946)972113f)c7a35ca)273d722)e110b97)1319b90)aa6b6d1)3bd5cee)d441312)156c021)5a14ab6)7415141)ae0c97a)7c7658d)c9073bf)28fee55)584b4b7)1536c7a)fa7b8e9)dc0afbd)b01faa9)7b59392)9e4834d)314693c)e6bc87d)2d1efd4)d0c5e6b)e0b7f69)d43f514)3192a47)6c1df66)4a45df0)c0f7fde)f325e69)d334dc0)9f91dd8)611056f)8cb0bbc)954b760)6164719)915f14c)b0e0cee)edc74f0)take() method (d377397)a692950)0cc5b33)9dffc2b)1b04c39)
</details>Your coding agent can read these notes before it upgrades. Set up the MCP server →