All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.20.0 - 2025-04-22
- Drop
Debug
requirements and flip implementation defaults (#756)
- Dereferencing freed memos when verifying provisional memos (#788)
#[doc(hidden)]
plumbing
module (#781)- Use
changed_at
revision when updating fields (#778)
- Reduce memory usage by deduplicating type information (#803)
- Make interned's
last_interned_at
equalRevision::MAX
if they are interned outside a query (#804) - Add a third cycle mode, equivalent to old Salsa cycle behavior (#801)
- Update compact_str from 0.8 to 0.9 (#794)
- Implement
Update
forThinVec
(#807) - Don't push an unnecessary active query for
deep_verify_memo
(#806) - Inline/Outline more cold and slow paths (#805)
#[inline]
some things (#799)- Discard unnecessary atomic load (#780)
- Print query stack when encountering unexpected cycle (#796)
- Remove incorrect
parallel_scope
API (#797) - [refactor] Simplify
fetch_hot
(#792) - [refactor] Reuse the same stack for all cycles heads in
validate_same_iteration
(#791) - add WillIterateCycle event (#790)
- [fix] Use
validate_maybe_provisional
instead ofvalidate_provisional
(#789) - Use
ThinVec
forCycleHeads
(#787) - Keep edge condvar on stack instead of allocating it in an
Arc
(#773) - allow reuse of cached provisional memos within the same cycle iteration (#786)
- Implement
Lookup
/HashEqLike
forArc
(#784) - Normalize imports style (#779)
- Clean up
par_map
a bit (#742) - Fix typo in comment (#777)
- Document most safety blocks (#776)
- Use html directory for mdbook artifact (#774)
- Move
verified_final
fromMemo
intoQueryRevisions
(#769) - Use
ThinVec
forMemoTable
, halving its size (#770) - Remove unnecessary query stack acess in
block_on
(#771) - Replace memo queue with append-only vector (#767)
- update boxcar (#696)
- Remove extra page indirection in
Table
(#710) - update release steps (#705)
- Remove some unnecessary panicking paths in cycle execution (#765)
- (perf) Pool
ActiveQuerys
in the query stack (#629) - Resolve unwind safety fixme (#761)
- Enable Garbage Collection for Interned Values (#602)
- bug [salsa-macros]: Improve debug name of tracked methods (#755)
- Remove dead code (#764)
- Reduce unnecessary conditional work in
deep_verify_memo
(#759) - Use a
Vec
forCycleHeads
(#760) - Use nextest for miri test runs (#758)
- Pin
half
version to prevent CI failure (#757) - rewrite cycle handling to support fixed-point iteration (#603)
0.19.0 - 2025-03-10
- fix typo
- fix enums bug
- Have salsa not depend on salsa-macros (#750)
- Group versions of packages together for releases (#751)
- use
portable-atomic
inIngredientCache
to compile onpowerpc-unknown-linux-gnu
(#749) - Store view downcaster in function ingredients directly (#720)
- Some small perf things (#744)
- :replace instead of std::mem::replace (#746)
- Cleanup
Cargo.toml
s (#745) - Drop clone requirement for accumulated values
- implement
Update
trait forIndexMap
, andIndexSet
- more correct bounds on
Send
andSync
implementationDeletedEntries
- replace
arc-swap
with manualAtomicPtr
- Remove unnecessary
current_revision
call fromsetup_interned_struct
- Merge pull request #731 from Veykril/veykril/push-nzkwqzxxkxou
- Remove some dynamically dispatched
Database::event
calls - Lazy fetching
- Add small supertype input benchmark
- Replace a
DashMap
withRwLock
as writing is rare for it - address review comments
- Skip memo ingredient index mapping for non enum tracked functions
- Trade off a bit of memory for more speed in
MemoIngredientIndices
- Introduce Salsa enums
- Cancel duplicate test workflow runs
- implement
Update
trait forhashbrown::HashMap
- Move
unwind_if_revision_cancelled
fromZalsaLocal
toZalsa
- Don't clone strings in benchmarks
- Merge pull request #714 from Veykril/veykril/push-synxntlkqqsq
- Merge pull request #711 from Veykril/veykril/push-stmmwmtprovt
- Merge pull request #715 from Veykril/veykril/push-plwpsqknwulq
- Enforce
unsafe_op_in_unsafe_fn
- Remove some
ZalsaDatabase::zalsa
calls - Remove outdated FIXME
- Replace
IngredientCache
lock with atomic primitive - Reduce method delegation duplication
- Automatically clear the cancellation flag when cancellation completes
- Allow trigger LRU eviction without increasing the current revision
- Simplify
Ingredient::reset_for_new_revision
setup - Require mut Zalsa access for setting the lru limit
- Split off revision bumping from
zalsa_mut
access - Update
hashbrown
(0.15) andhashlink
(0.10)