NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #3580 most downloaded on crates.io
A generic framework for on-demand, incrementalized computation (experimental)
Last release 14 days ago
24 Sep 2026
Release timing varies
gaps range from 9 days to 3 months
Some releases are documented
notes for 21 of 56 stable releases
3 versions withdrawn
withdrawn after publishing
8 years old
66 releases · first in 2018
This release addresses GHSA-xc3w-55vh-cw3w , a use-after-free vulnerability in interned values and cached function results. Depending on the consuming…
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.
restore builds with optional interning features
One column per quarter.
adopt newer Rust language and library features
Add conditional SalsaValue derive proofs
avoid table lookups when interning 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)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)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)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)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
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
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 →