Avatar for the salsa-rs user
salsa-rs
salsa
BlogDocsChangelog

Performance History

Latest Results

fix: restart fixpoint iteration after cancellation
MichaReiser:fix-provisional-cancellation-epoch
12 hours ago
perf: avoid unused zalsa-local lookups
MichaReiser:optimize-memo-lookup
3 days ago
perf: avoid type checks in field access
MichaReiser:optimize-memo-lookup
3 days ago
fix: replace tracked method db-arg index panic with proper compile error (#1228) * fix: replace tracked method db-arg index panic with proper compile error When a #[salsa::tracked] method inside a #[salsa::tracked] impl has only self and no database parameter, the macro panicked with 'index out of bounds: the len is 0 but the index is 1'. Replace the direct indexing with .iter().nth() + ok_or_else() to emit a clear compile-time error instead of a proc-macro panic. Closes #1058 * fix: use .get() instead of .iter().nth() per Veykril review Salsa's tracked method db-arg lookup used .iter().nth(db_input_index) which allocates an iterator when the indexed getter would do the job in one step. Co-authored-by: Veykril <3757771+vefkril@users.noreply.github.com> * test: add compile-fail regression for #1058 (tracked method missing db) Add a trybuild compile-fail test that reproduces the exact macro input from issue #1058: a `#[salsa::tracked]` method inside a `#[salsa::tracked]` impl with only `self` and no database parameter. Before this fix the macro panicked with `index out of bounds`; the trybuild test now locks in the clean compile error from the prior fix so that future refactors of `tracked_impl.rs` cannot regress to a proc-macro panic. The expected stderr captures the two expected errors: - "must also be applied to the impl block for tracked methods" - "tracked methods must have a database parameter after `self`" Refs #1058 * fix(macros): don't panic on zero-arg tracked method MichaReiser asked in PR review whether we also need to protect against zero-argument methods. Confirmed via the index-out-of-bounds site at validity_check's 'inputs[0]' indexing — a tracked method with no args at all panicked there before reaching the .get(db_input_index) guard added by the original fix. Replace direct indexing with first().is_some_and(...) so empty inputs no longer panic. The downstream guards (.get + check_db_argument / check_self_argument) emit clean compile errors in that case: error: tracked functions must have at least a database argument error: tracked methods must have a database parameter after `self` Lock the new behaviour in with a trybuild compile-fail test (tracked_method_zero_args.rs). Refs PR #1228, issue #1058. --------- Co-authored-by: fuleinist <fuleinist@users.noreply.github.com> Co-authored-by: Veykril <3757771+vefkril@users.noreply.github.com>
master
3 days ago
chore: simplify memo cursor internals
MichaReiser:optimize-memo-eviction-cursor
3 days ago
docs: clarify eviction policy configuration
MichaReiser:sieve-eviction-policy
3 days ago
feat: add SIEVE eviction policy
MichaReiser:sieve-eviction-policy
3 days ago

Latest Branches

CodSpeed Performance Gauge
-63%
fix: restart fixpoint iteration after cancellation#1238
13 hours ago
aadce1e
MichaReiser:fix-provisional-cancellation-epoch
CodSpeed Performance Gauge
×3.3
3 days ago
1914bcd
MichaReiser:optimize-memo-lookup
CodSpeed Performance Gauge
-89%
fix: replace tracked method db-arg index panic with proper compile error#1228
3 days ago
0dc0335
fuleinist:fix/tracked-method-inside-tracked-impl
© 2026 CodSpeed Technology
Home Terms Privacy Docs