NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3602 most downloaded on crates.io
Procedural macros for the salsa crate
Last release 13 days ago
24 Sep 2026
Release timing varies
gaps range from 9 days to 3 months
Most releases are documented
notes for 21 of 34 stable releases
1 version withdrawn
withdrawn after publishing
8 years old
41 releases · first in 2019
adopt newer Rust language and library features
This release addresses GHSA-xc3w-55vh-cw3w, a use-after-free vulnerability in interned values and cached function results. Depending on the consuming application, attacker-controlled input may expose process memory or permit arbitrary code execution. Dependent applications should update Salsa and rebuild.
One column per quarter.
adopt newer Rust language and library features
adopt newer Rust language and library features
Add conditional SalsaValue derive proofs
Require immortal storage for lifetime-free interned values
replace Update with SalsaValue and PartialEq
Update with SalsaValue and PartialEq (#1217)propagate cycle heads through specify
Update Rust crate hashlink to 0.12
MemoHeader to reduce monomorphization (#1142)Update derive helpers (#1168)maybe_changed_since (#1145)QueryRevisionExtra (#1112)QueryRevisionsExtra into QueryOrigin (#1101)QueryOrigin (#1103)annotate return type in closure
fix tracked impl db lifetime for as_deref return mode
Don't panic if a query branched on an untracked state
Allow opt-ing out of LRU at compile time
tracked_struct Values when updating (#741)boxcar::Vec (#1072)cycle_fallback with cycle_result in the docs (#1071)FallbackImmediate and Fixpoint code paths (#1063)CancellationToken for cancelling specific computations (#1007)ValueWithMetadata (#1057)QueryOriginKind::FixpointInitial (#1062)Lookup and HashEqLike for Cow (#1054)DidFinalizeCycle event, add more tests for cyclic nested queries (#1052)execute_maybe_iterate (#1046)salsa::Update trait bounds to generics when deriving salsa::Update (#1041)### Other - Revert #958
Fix a remainder that was forgotten in #1036
Require interned structs' fields to be Update
Update (#1036)ordermap an optional feature (#1034)Update for OrderMap and OrderSet (#1033)Cycle to the cycle recovery function (#1028)cycle_fn for every iteration (#1021)SyncTable::peek_claim fast path for function::Ingredient::wait_for (#1011)WaitGroup implementation (#958)Cleanup provisional cycle head memos when query panics
Debug on fields for interned structs (#951)expect call (#998)entries API (#987)lookup_ingredient (#984)Id::hash (#974)thin-vec/serde dependency dependent on persistence feature (#973)maybe_changed_after runnaway for fixpoint queries (#961)fetch and maybe_changed_after (#955)maybe_changed_after (#954)CycleHeadSet in maybe_update_after (#953)ZalsaLocal (#939)ActiveQuery::input_outputs in ActiveQuery::seed_iteration (#948)IngredientCache (#937)inventory for static ingredient registration (#934)heap_size option not being preserved in tracked impls (#930)inventory for static ingredient registration (#934)heap_size option not being preserved in tracked impls (#930)Update derive field overwrite support
Update derive field overwrite support (#747)#[doc(hidden)] (#917)Slot trait as unsafe (#915)QueryOriginKind for better comparisons (#913)Value (#901)Revision and Durability directly in input Value (#902)UnexpectedCycle (#883)heck dependency (#894)validate_final in execute after removing the last cycle head (#890)QueryEdge memory layout (#886)QueryOrigin memory layout (#885)new_revision and evict_lru (#881)IdentityMap before storing it (#816)#[doc(hidden)] auto-generated tracked-fn structs (#917)Update derive field overwrite support (#747)heck dependency (#894)fix memo table growth condition
self) (#859)block-on if same thread (#862)!Update bound escape hatch for tracked fn (#867)boxcar/loom when loom feature is enabled (#869)PartialOrd and Ord derives for salsa-structs (#868)return_ref syntax to returns(as_ref) and returns(cloned) (#772)maybe_changed_after (#854)maybe_changed_after (#852)Zalsa (#849)self) (#859)!Update bound escape hatch for tracked fn (#867)return_ref syntax to returns(as_ref) and returns(cloned) (#772)Zalsa (#849)better debug name for interned query arguments
Access to tracked-struct that was freed during fixpoint
values_equal signature (#825)Backtrace analog (#827)Array abstraction (#821)'static !Update struct (#820)fetch_hot (#818)DatabaseKey for interned events (#813)fetch_hot simplification (#793)Drop Debug requirements and flip implementation defaults
Debug requirements and flip implementation defaults (#756)#[doc(hidden)] plumbing module (#781)changed_at revision when updating fields (#778)last_interned_at equal Revision::MAX if they are interned outside a query (#804)Update for ThinVec (#807)deep_verify_memo (#806)#[inline] some things (#799)parallel_scope API (#797)fetch_hot (#792)validate_same_iteration (#791)validate_maybe_provisional instead of validate_provisional (#789)ThinVec for CycleHeads (#787)Arc (#773)Lookup/HashEqLike for Arc (#784)par_map a bit (#742)verified_final from Memo into QueryRevisions (#769)ThinVec for MemoTable, halving its size (#770)block_on (#771)Table (#710)ActiveQuerys in the query stack (#629)deep_verify_memo (#759)Vec for CycleHeads (#760)half version to prevent CI failure (#757)Have salsa not depend on salsa-macros
portable-atomic in IngredientCache to compile on powerpc-unknown-linux-gnu (#749)Cargo.tomls (#745)Update trait for IndexMap, and IndexSetSend and Sync implementation DeletedEntriesarc-swap with manual AtomicPtrcurrent_revision call from setup_interned_structDatabase::event callsDashMap with RwLock as writing is rare for itMemoIngredientIndicesUpdate trait for hashbrown::HashMapunwind_if_revision_cancelled from ZalsaLocal to Zalsaunsafe_op_in_unsafe_fnZalsaDatabase::zalsa callsIngredientCache lock with atomic primitiveIngredient::reset_for_new_revision setupzalsa_mut accesshashbrown (0.15) and hashlink (0.10)Cargo.tomls (#745)MemoIngredientIndicesNothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Nothing published for this version
Your coding agent can read these notes before it upgrades. Set up the MCP server →