Skip to content

Latest commit

 

History

History
371 lines (308 loc) · 26.2 KB

File metadata and controls

371 lines (308 loc) · 26.2 KB

Changelog

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.

[Unreleased]

0.26.1 - 2026-03-20

Other

  • Bump the edition to 2024 (#1073)
  • Don't panic if a query branched on an untracked state (#1075)

0.26.0 - 2026-02-02

Added

  • Allow opt-ing out of LRU at compile time (#1051)
  • Allow tracked function cycle attributes to take closures (#1048)

Fixed

  • Do not alias fields of tracked_struct Values when updating (#741)

Other

  • Remove unnecessary boxcar::Vec (#1072)
  • replace remaining instances of cycle_fallback with cycle_result in the docs (#1071)
  • Fix out-of-order verification of cycle head dependencies (#1061)
  • Update compile fail tests (#1070)
  • Merge FallbackImmediate and Fixpoint code paths (#1063)
  • Introduce a CancellationToken for cancelling specific computations (#1007)
  • Remove unnecessary backdate field macros (#1069)
  • Remove ValueWithMetadata (#1057)
  • Fix stale tracked struct values in later iterations (#1068)
  • Skip book deployment on forks (#1066)
  • Remove QueryOriginKind::FixpointInitial (#1062)
  • Document cycle_fallback in the book (#1056)
  • Fix book build with newer mdbook versions (#1055)
  • Implement Lookup and HashEqLike for Cow (#1054)
  • Add DidFinalizeCycle event, add more tests for cyclic nested queries (#1052)
  • Collect cycle heads transitively (#1050)
  • Remove unused database forking (#1049)
  • Reduce monomorphized code in maybe_changed_after (#1047)
  • Reduce monomorphized code in execute_maybe_iterate (#1046)
  • Add salsa::Update trait bounds to generics when deriving salsa::Update (#1041)

0.25.2 - 2025-12-17

Other

0.25.1 - 2025-12-16

Other

  • Fix a remainder that was forgotten in #1036 (#1037)

0.25.0 - 2025-12-16

Other

  • Require interned structs' fields to be Update (#1036)
  • Make ordermap an optional feature (#1034)
  • implement Update for OrderMap and OrderSet (#1033)
  • Fully qualify std Result type (#1025)
  • pass Cycle to the cycle recovery function (#1028)
  • Fix cycle head durability (#1024)
  • Call cycle_fn for every iteration (#1021)
  • Track cycle function dependencies as part of the cyclic query (#1018)
  • Always increment iteration count (#1017)
  • Update compile fail snapshots to match new rust stable output (#1020)
  • Only use provisional values from the same revision (#1019)
  • Explain the motivation for breaking API changes made in #1012 and #1015 (#1016)
  • Expose the Input query Id with cycle_initial (#1015)
  • Add SyncTable::peek_claim fast path for function::Ingredient::wait_for (#1011)
  • Fix cache invalidation when cycle head becomes non-head (#1014)
  • Expose the query ID and the last provisional value to the cycle recovery function (#1012)
  • Fix hangs in multithreaded fixpoint iteration (#1010)
  • Remove experimental parallel feature (#1013)
  • Simplify WaitGroup implementation (#958)
  • Fix missing license files in published macros/macro-rules crates (#1009)
  • Run fixpoint per strongly connected component (#999)
  • Add benchmark for a fixpoint iteration with nested cycles (#1001)

0.24.0 - 2025-09-30

Fixed

  • Cleanup provisional cycle head memos when query panics (#993)
  • Runaway for unchanged queries participating in cycle (#981)
  • Delete not re-created tracked structs after fixpoint iteration (#979)
  • fix assertion during interned deserialization (#978)
  • Do not unnecessarily require Debug on fields for interned structs (#951)
  • Fix phantom data usage in salsa structs affecting auto traits (#932)

Other

  • Replace unsafe unwrap with expect call (#998)
  • Push active query in execute (#996)
  • Update codspeed action (#997)
  • Add implementations for Lookup and HashEqLike for CompactString (#988)
  • Provide a method to attach a database even if it's different from the current attached one (#992)
  • Allow fallback to take longer than one iteration to converge (#991)
  • refactor entries API (#987)
  • Persistent caching fixes (#982)
  • outline cold path of lookup_ingredient (#984)
  • Update snapshot to fix nightly type rendering (#983)
  • avoid cycles during serialization (#977)
  • Flatten unserializable query dependencies (#975)
  • optimize Id::hash (#974)
  • Make thin-vec/serde dependency dependent on persistence feature (#973)
  • Remove tracked structs from query outputs (#969)
  • Remove jemalloc (#972)
  • Initial persistent caching prototype (#967)
  • Fix maybe_changed_after runnaway for fixpoint queries (#961)
  • add parallel maybe changed after test (#963)
  • Update tests for Rust 1.89 (#966)
  • remove allocation lock (#962)
  • consolidate memory usage information API (#964)
  • Add heap size support for salsa structs (#943)
  • Extract the cycle branches from fetch and maybe_changed_after (#955)
  • allow reuse of cached provisional memos within the same cycle iteration during maybe_changed_after (#954)
  • Expose API to manually trigger cancellation (#959)
  • Upgrade dependencies (#956)
  • Use CycleHeadSet in maybe_update_after (#953)
  • Gate accumulator feature behind a feature flag (#946)
  • optimize allocation fast-path (#949)
  • remove borrow checks from ZalsaLocal (#939)
  • Do manual trait casting (#922)
  • Retain backing allocation of ActiveQuery::input_outputs in ActiveQuery::seed_iteration (#948)
  • remove extra bounds checks from memo table hot-paths (#938)
  • Outline all tracing events (#942)
  • remove bounds and type checks from IngredientCache (#937)
  • Avoid dynamic dispatch to access memo tables (#941)
  • optimize page access (#940)
  • Use inventory for static ingredient registration (#934)
  • Fix heap_size option not being preserved in tracked impls (#930)
  • update papaya (#928)

0.23.0 - 2025-06-27

Added

  • Update derive field overwrite support (#747)

Fixed

  • fix race in MemoTableTypes (#912)
  • multithreaded nested fixpoint iteration (#882)

Other

  • Emit self ty for query debug name of assoc function queries (#927)
  • Replace ingredient cache with faster ingredient map (#921)
  • add option to track heap memory usage of memos (#925)
  • Hide generated structs of tracked functions from docs via #[doc(hidden)] (#917)
  • Add API to dump memory usage (#916)
  • Revert "Assert size for interned Value" & Mark Slot trait as unsafe (#915)
  • add an option to tune interned garbage collection (#911)
  • Use explicit discriminants for QueryOriginKind for better comparisons (#913)
  • update boxcar (#910)
  • use latest revision for dependencies on interned values (#908)
  • remove high-durability values from interned LRU (#907)
  • Preserve attributes on interned/tracked struct fields (#905)
  • Assert size for interned Value (#901)
  • reduce size of interned value metadata (#903)
  • panic with string message again for cycle panics (#898)
  • Use Revision and Durability directly in input Value (#902)
  • Fix flaky parallel_join test (#900)
  • Bump MSRV to 1.85 (#899)
  • Simple LRU garbage collection for interned values (#839)
  • Capture execution backtrace when throwing UnexpectedCycle (#883)
  • Store tracked struct ids as ThinVec on Revisions (#892)
  • Update dependencies, remove unused heck dependency (#894)
  • Set validate_final in execute after removing the last cycle head (#890)
  • Pack QueryEdge memory layout (#886)
  • Lazily allocate extra memo state (#888)
  • Pack QueryOrigin memory layout (#885)
  • Restrict memo size assertion to 64bit platforms (#884)
  • Don't report stale outputs if there is newer generation in new_outputs (#879)
  • Fix hang in nested fixpoint iteration (#871)
  • Add debug spans for new_revision and evict_lru (#881)
  • Add fetch span (#875)
  • shrink_to_fit IdentityMap before storing it (#816)
  • Allow lifetimes in arguments in tracked fns with >1 parameters (#880)
  • Replace loom with shuttle (#876)
  • Use generational identifiers for tracked structs (#864)

Fixed

  • #[doc(hidden)] auto-generated tracked-fn structs (#917)

0.22.0 - 2025-05-23

Fixed

  • fix memo table growth condition (#850)
  • incorrect caching for queries participating in fixpoint (#843)
  • change detection for fixpoint queries (#836)

Other

  • Allow creation of tracked associated functions (without self) (#859)
  • Short-circuit block-on if same thread (#862)
  • Skip release-plz jobs on forks (#873)
  • Unwind with specific type when encountering an unexpected cycle (#856)
  • Remove jar mentions from book (#775)
  • Implement an !Update bound escape hatch for tracked fn (#867)
  • Only enable boxcar/loom when loom feature is enabled (#869)
  • Remove default PartialOrd and Ord derives for salsa-structs (#868)
  • update boxcar (#865)
  • speed-up cycle-retry logic (#861)
  • Fix returns(deref | as_ref | as_deref) in tracked methods (#857)
  • Changed return_ref syntax to returns(as_ref) and returns(cloned) (#772)
  • Work around a rust-analyzer bug (#855)
  • Lazy finalization of cycle participants in maybe_changed_after (#854)
  • Do not re-verify already verified memoized value in cycle verification (#851)
  • Pass cycle heads as out parameter for maybe_changed_after (#852)
  • Move salsa event system into Zalsa (#849)
  • gate loom dependency under feature flag (#844)
  • Add loom support (#842)
  • Clean up some unsafety (#830)

0.21.1 - 2025-04-30

Added

  • Make attach pub (#832)

Other

  • better debug name for interned query arguments (#837)
  • Avoid panic in Backtrace::capture if query_stack is already borrowed (#835)
  • Clean up function::execute (#833)
  • Change an assert! to assert_eq! (#828)

0.21.0 - 2025-04-29

Fixed

  • Access to tracked-struct that was freed during fixpoint (#817)
  • correct debug output for tracked fields (#826)
  • Fix incorrect values_equal signature (#825)
  • allow unused lifetimes in tracked_struct expansion (#824)

Other

  • Implement a query stack Backtrace analog (#827)
  • Simplify ID conversions (#822)
  • Attempt to fix codspeed (#823)
  • Remove unnecessary Array abstraction (#821)
  • Add a compile-fail test for a 'static !Update struct (#820)
  • squelch most clippy warnings in generated code (#809)
  • Include struct name in formatted input-field index (#819)
  • Force inline fetch_hot (#818)
  • Per ingredient sync table (#650)
  • Use DatabaseKey for interned events (#813)
  • [refactor] More fetch_hot simplification (#793)
  • Don't store the fields in the interned map (#812)
  • Fix ci not always running (#810)

0.20.0 - 2025-04-22

Added

  • Drop Debug requirements and flip implementation defaults (#756)

Fixed

  • Dereferencing freed memos when verifying provisional memos (#788)
  • #[doc(hidden)] plumbing module (#781)
  • Use changed_at revision when updating fields (#778)

Other

  • Reduce memory usage by deduplicating type information (#803)
  • Make interned's last_interned_at equal Revision::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 for ThinVec (#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 of validate_provisional (#789)
  • Use ThinVec for CycleHeads (#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 for Arc (#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 from Memo into QueryRevisions (#769)
  • Use ThinVec for MemoTable, 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 for CycleHeads (#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

Fixed

  • fix typo
  • fix enums bug

Other

  • Have salsa not depend on salsa-macros (#750)
  • Group versions of packages together for releases (#751)
  • use portable-atomic in IngredientCache to compile on powerpc-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.tomls (#745)
  • Drop clone requirement for accumulated values
  • implement Update trait for IndexMap, and IndexSet
  • more correct bounds on Send and Sync implementation DeletedEntries
  • replace arc-swap with manual AtomicPtr
  • Remove unnecessary current_revision call from setup_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 with RwLock 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 for hashbrown::HashMap
  • Move unwind_if_revision_cancelled from ZalsaLocal to Zalsa
  • 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) and hashlink (0.10)