[package]
edition = "2021"
rust-version = "1.85"
name = "salsa"
version = "0.26.0"
authors = ["Salsa developers"]
build = false
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "A generic framework for on-demand, incrementalized computation (experimental)"
readme = "README.md"
license = "Apache-2.0 OR MIT"
repository = "https://github.com/salsa-rs/salsa"
[features]
accumulator = ["salsa-macro-rules/accumulator"]
default = [
"salsa_unstable",
"rayon",
"macros",
"inventory",
"accumulator",
]
inventory = ["dep:inventory"]
macros = ["dep:salsa-macros"]
persistence = [
"dep:serde",
"dep:erased-serde",
"salsa-macros/persistence",
"thin-vec/serde",
]
salsa_unstable = []
shuttle = ["dep:shuttle"]
[lib]
name = "salsa"
path = "src/lib.rs"
[[example]]
name = "calc"
path = "examples/calc/main.rs"
required-features = ["accumulator"]
[[example]]
name = "lazy-input"
path = "examples/lazy-input/main.rs"
required-features = ["accumulator"]
[[test]]
name = "accumulate"
path = "tests/accumulate.rs"
[[test]]
name = "accumulate-chain"
path = "tests/accumulate-chain.rs"
[[test]]
name = "accumulate-custom-debug"
path = "tests/accumulate-custom-debug.rs"
[[test]]
name = "accumulate-dag"
path = "tests/accumulate-dag.rs"
[[test]]
name = "accumulate-execution-order"
path = "tests/accumulate-execution-order.rs"
[[test]]
name = "accumulate-from-tracked-fn"
path = "tests/accumulate-from-tracked-fn.rs"
[[test]]
name = "accumulate-no-duplicates"
path = "tests/accumulate-no-duplicates.rs"
[[test]]
name = "accumulate-reuse"
path = "tests/accumulate-reuse.rs"
[[test]]
name = "accumulate-reuse-workaround"
path = "tests/accumulate-reuse-workaround.rs"
[[test]]
name = "accumulated_backdate"
path = "tests/accumulated_backdate.rs"
[[test]]
name = "backtrace"
path = "tests/backtrace.rs"
[[test]]
name = "cancellation_token"
path = "tests/cancellation_token.rs"
[[test]]
name = "check_auto_traits"
path = "tests/check_auto_traits.rs"
[[test]]
name = "compile_fail"
path = "tests/compile_fail.rs"
[[test]]
name = "compile_pass"
path = "tests/compile_pass.rs"
[[test]]
name = "cycle"
path = "tests/cycle.rs"
[[test]]
name = "cycle_accumulate"
path = "tests/cycle_accumulate.rs"
[[test]]
name = "cycle_dependency_order_different_entry_queries"
path = "tests/cycle_dependency_order_different_entry_queries.rs"
[[test]]
name = "cycle_fallback_immediate"
path = "tests/cycle_fallback_immediate.rs"
[[test]]
name = "cycle_initial_call_back_into_cycle"
path = "tests/cycle_initial_call_back_into_cycle.rs"
[[test]]
name = "cycle_initial_call_query"
path = "tests/cycle_initial_call_query.rs"
[[test]]
name = "cycle_input_different_cycle_head"
path = "tests/cycle_input_different_cycle_head.rs"
[[test]]
name = "cycle_left_recursive_query"
path = "tests/cycle_left_recursive_query.rs"
[[test]]
name = "cycle_maybe_changed_after"
path = "tests/cycle_maybe_changed_after.rs"
[[test]]
name = "cycle_nested_converge_early"
path = "tests/cycle_nested_converge_early.rs"
[[test]]
name = "cycle_nested_converges_never"
path = "tests/cycle_nested_converges_never.rs"
[[test]]
name = "cycle_output"
path = "tests/cycle_output.rs"
[[test]]
name = "cycle_recovery_call_back_into_cycle"
path = "tests/cycle_recovery_call_back_into_cycle.rs"
[[test]]
name = "cycle_recovery_call_query"
path = "tests/cycle_recovery_call_query.rs"
[[test]]
name = "cycle_recovery_dependencies"
path = "tests/cycle_recovery_dependencies.rs"
[[test]]
name = "cycle_regression_455"
path = "tests/cycle_regression_455.rs"
[[test]]
name = "cycle_result_dependencies"
path = "tests/cycle_result_dependencies.rs"
[[test]]
name = "cycle_stale_cycle_heads"
path = "tests/cycle_stale_cycle_heads.rs"
[[test]]
name = "cycle_tracked"
path = "tests/cycle_tracked.rs"
[[test]]
name = "cycle_tracked_own_input"
path = "tests/cycle_tracked_own_input.rs"
[[test]]
name = "dataflow"
path = "tests/dataflow.rs"
[[test]]
name = "debug"
path = "tests/debug.rs"
[[test]]
name = "debug_bounds"
path = "tests/debug_bounds.rs"
[[test]]
name = "debug_db_contents"
path = "tests/debug_db_contents.rs"
[[test]]
name = "deletion"
path = "tests/deletion.rs"
[[test]]
name = "deletion-cascade"
path = "tests/deletion-cascade.rs"
[[test]]
name = "deletion-drops"
path = "tests/deletion-drops.rs"
[[test]]
name = "derive_update"
path = "tests/derive_update.rs"
[[test]]
name = "durability"
path = "tests/durability.rs"
[[test]]
name = "elided-lifetime-in-tracked-fn"
path = "tests/elided-lifetime-in-tracked-fn.rs"
[[test]]
name = "expect_reuse_field_x_of_a_tracked_struct_changes_but_fn_depends_on_field_y"
path = "tests/expect_reuse_field_x_of_a_tracked_struct_changes_but_fn_depends_on_field_y.rs"
[[test]]
name = "expect_reuse_field_x_of_an_input_changes_but_fn_depends_on_field_y"
path = "tests/expect_reuse_field_x_of_an_input_changes_but_fn_depends_on_field_y.rs"
[[test]]
name = "hash_collision"
path = "tests/hash_collision.rs"
[[test]]
name = "hello_world"
path = "tests/hello_world.rs"
[[test]]
name = "input_default"
path = "tests/input_default.rs"
[[test]]
name = "input_field_durability"
path = "tests/input_field_durability.rs"
[[test]]
name = "input_setter_preserves_durability"
path = "tests/input_setter_preserves_durability.rs"
[[test]]
name = "intern_access_in_different_revision"
path = "tests/intern_access_in_different_revision.rs"
[[test]]
name = "interned-revisions"
path = "tests/interned-revisions.rs"
[[test]]
name = "interned-structs"
path = "tests/interned-structs.rs"
[[test]]
name = "interned-structs_self_ref"
path = "tests/interned-structs_self_ref.rs"
[[test]]
name = "lru"
path = "tests/lru.rs"
[[test]]
name = "manual_registration"
path = "tests/manual_registration.rs"
[[test]]
name = "memory-usage"
path = "tests/memory-usage.rs"
[[test]]
name = "mutate_in_place"
path = "tests/mutate_in_place.rs"
[[test]]
name = "override_new_get_set"
path = "tests/override_new_get_set.rs"
[[test]]
name = "panic-when-creating-tracked-struct-outside-of-tracked-fn"
path = "tests/panic-when-creating-tracked-struct-outside-of-tracked-fn.rs"
[[test]]
name = "parallel"
path = "tests/parallel/main.rs"
[[test]]
name = "persistence"
path = "tests/persistence.rs"
[[test]]
name = "preverify-struct-with-leaked-data"
path = "tests/preverify-struct-with-leaked-data.rs"
[[test]]
name = "preverify-struct-with-leaked-data-2"
path = "tests/preverify-struct-with-leaked-data-2.rs"
[[test]]
name = "return_mode"
path = "tests/return_mode.rs"
[[test]]
name = "singleton"
path = "tests/singleton.rs"
[[test]]
name = "specify-only-works-if-the-key-is-created-in-the-current-query"
path = "tests/specify-only-works-if-the-key-is-created-in-the-current-query.rs"
[[test]]
name = "synthetic_write"
path = "tests/synthetic_write.rs"
[[test]]
name = "tracked-struct-id-field-bad-eq"
path = "tests/tracked-struct-id-field-bad-eq.rs"
[[test]]
name = "tracked-struct-id-field-bad-hash"
path = "tests/tracked-struct-id-field-bad-hash.rs"
[[test]]
name = "tracked-struct-unchanged-in-new-rev"
path = "tests/tracked-struct-unchanged-in-new-rev.rs"
[[test]]
name = "tracked-struct-value-field-bad-eq"
path = "tests/tracked-struct-value-field-bad-eq.rs"
[[test]]
name = "tracked-struct-value-field-not-eq"
path = "tests/tracked-struct-value-field-not-eq.rs"
[[test]]
name = "tracked_assoc_fn"
path = "tests/tracked_assoc_fn.rs"
[[test]]
name = "tracked_fn_constant"
path = "tests/tracked_fn_constant.rs"
[[test]]
name = "tracked_fn_high_durability_dependency"
path = "tests/tracked_fn_high_durability_dependency.rs"
[[test]]
name = "tracked_fn_interned_lifetime"
path = "tests/tracked_fn_interned_lifetime.rs"
[[test]]
name = "tracked_fn_multiple_args"
path = "tests/tracked_fn_multiple_args.rs"
[[test]]
name = "tracked_fn_no_eq"
path = "tests/tracked_fn_no_eq.rs"
[[test]]
name = "tracked_fn_on_input"
path = "tests/tracked_fn_on_input.rs"
[[test]]
name = "tracked_fn_on_input_with_high_durability"
path = "tests/tracked_fn_on_input_with_high_durability.rs"
[[test]]
name = "tracked_fn_on_interned"
path = "tests/tracked_fn_on_interned.rs"
[[test]]
name = "tracked_fn_on_interned_enum"
path = "tests/tracked_fn_on_interned_enum.rs"
[[test]]
name = "tracked_fn_on_tracked"
path = "tests/tracked_fn_on_tracked.rs"
[[test]]
name = "tracked_fn_on_tracked_specify"
path = "tests/tracked_fn_on_tracked_specify.rs"
[[test]]
name = "tracked_fn_orphan_escape_hatch"
path = "tests/tracked_fn_orphan_escape_hatch.rs"
[[test]]
name = "tracked_fn_read_own_entity"
path = "tests/tracked_fn_read_own_entity.rs"
[[test]]
name = "tracked_fn_read_own_specify"
path = "tests/tracked_fn_read_own_specify.rs"
[[test]]
name = "tracked_fn_return_ref"
path = "tests/tracked_fn_return_ref.rs"
[[test]]
name = "tracked_method"
path = "tests/tracked_method.rs"
[[test]]
name = "tracked_method_inherent_return_deref"
path = "tests/tracked_method_inherent_return_deref.rs"
[[test]]
name = "tracked_method_inherent_return_ref"
path = "tests/tracked_method_inherent_return_ref.rs"
[[test]]
name = "tracked_method_on_tracked_struct"
path = "tests/tracked_method_on_tracked_struct.rs"
[[test]]
name = "tracked_method_trait_return_ref"
path = "tests/tracked_method_trait_return_ref.rs"
[[test]]
name = "tracked_method_with_self_ty"
path = "tests/tracked_method_with_self_ty.rs"
[[test]]
name = "tracked_struct"
path = "tests/tracked_struct.rs"
[[test]]
name = "tracked_struct_db1_lt"
path = "tests/tracked_struct_db1_lt.rs"
[[test]]
name = "tracked_struct_disambiguates"
path = "tests/tracked_struct_disambiguates.rs"
[[test]]
name = "tracked_struct_durability"
path = "tests/tracked_struct_durability.rs"
[[test]]
name = "tracked_struct_manual_update"
path = "tests/tracked_struct_manual_update.rs"
[[test]]
name = "tracked_struct_mixed_tracked_fields"
path = "tests/tracked_struct_mixed_tracked_fields.rs"
[[test]]
name = "tracked_struct_recreate_new_revision"
path = "tests/tracked_struct_recreate_new_revision.rs"
[[test]]
name = "tracked_struct_with_interned_query"
path = "tests/tracked_struct_with_interned_query.rs"
[[test]]
name = "tracked_with_intern"
path = "tests/tracked_with_intern.rs"
[[test]]
name = "tracked_with_struct_db"
path = "tests/tracked_with_struct_db.rs"
[[test]]
name = "tracked_with_struct_ord"
path = "tests/tracked_with_struct_ord.rs"
[[test]]
name = "warnings"
path = "tests/warnings/main.rs"
[[bench]]
name = "accumulator"
path = "benches/accumulator.rs"
harness = false
required-features = ["accumulator"]
[[bench]]
name = "compare"
path = "benches/compare.rs"
harness = false
[[bench]]
name = "dataflow"
path = "benches/dataflow.rs"
harness = false
[[bench]]
name = "incremental"
path = "benches/incremental.rs"
harness = false
[dependencies.boxcar]
version = "0.2.13"
[dependencies.compact_str]
version = "0.9"
optional = true
[dependencies.crossbeam-queue]
version = "0.3.12"
[dependencies.crossbeam-utils]
version = "0.8.21"
[dependencies.erased-serde]
version = "0.4.6"
optional = true
[dependencies.hashbrown]
version = "0.15"
[dependencies.hashlink]
version = "0.10"
[dependencies.indexmap]
version = "2"
[dependencies.intrusive-collections]
version = "0.9.7"
[dependencies.inventory]
version = "0.3.20"
optional = true
[dependencies.ordermap]
version = "1.0.0"
optional = true
[dependencies.parking_lot]
version = "0.12"
[dependencies.portable-atomic]
version = "1"
[dependencies.rayon]
version = "1.10.0"
optional = true
[dependencies.rustc-hash]
version = "2"
[dependencies.salsa-macro-rules]
version = "0.26.0"
[dependencies.salsa-macros]
version = "0.26.0"
optional = true
[dependencies.serde]
version = "1.0.219"
features = ["derive"]
optional = true
[dependencies.shuttle]
version = "0.8.1"
optional = true
[dependencies.smallvec]
version = "1"
features = ["const_new"]
[dependencies.thin-vec]
version = "0.2.14"
[dependencies.tracing]
version = "0.1"
features = ["std"]
default-features = false
[dev-dependencies.annotate-snippets]
version = "0.11.5"
[dev-dependencies.codspeed-criterion-compat]
version = "3.0.5"
default-features = false
[dev-dependencies.crossbeam-channel]
version = "0.5.15"
[dev-dependencies.dashmap]
version = "6"
features = ["raw-api"]
[dev-dependencies.expect-test]
version = "1.5.1"
[dev-dependencies.eyre]
version = "0.6.12"
[dev-dependencies.notify-debouncer-mini]
version = "0.4.1"
[dev-dependencies.ordered-float]
version = "5.0.0"
[dev-dependencies.rustversion]
version = "1.0"
[dev-dependencies.serde_json]
version = "1.0.140"
[dev-dependencies.test-log]
version = "0.2.18"
features = ["trace"]
[dev-dependencies.trybuild]
version = "1.0"
[target."cfg(any())".dependencies.salsa-macros]
version = "=0.26.0"