Ibraheem Ahmed
1ffb32f54c
Initial persistent caching prototype ( #967 )
...
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz PR (push) Waiting to run
Release-plz / Release-plz release (push) Waiting to run
Test / Test (push) Waiting to run
Test / Miri (push) Waiting to run
Test / Shuttle (push) Waiting to run
Test / Benchmarks (push) Waiting to run
* persistent caching prototype
* move serialization arguments under `persist` attribute
* move `serde` dependency under `persistence` feature
* avoid serializing provisional memos
* use exhaustive checking for manual `Serialize` implementations
* update tests
* remove distinction between ingredient `entries` and `instances`
* avoid enabling `shuttle` feature in CI
* serialize ingredients by index
2025-08-11 19:02:49 +00:00
Micha Reiser
ea38537827
Add heap size support for salsa structs ( #943 )
...
Test / Test (push) Waiting to run
Test / Miri (push) Waiting to run
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz release (push) Waiting to run
Release-plz / Release-plz PR (push) Waiting to run
Test / Shuttle (push) Waiting to run
Test / Benchmarks (push) Waiting to run
* Improve unstable size analysis support
1. Include an option `panic_if_missing` that will panic if there is an ingredient with no `heap_size()` defined, to ensure coverage.
2. Add `heap_size()` to tracked structs, interneds an inputs.
* Make heap size a separate field, remove panic argument
* Remove stale comment
---------
Co-authored-by: Chayim Refael Friedman <chayimfr@gmail.com>
2025-08-06 07:01:18 +00:00
Micha Reiser
c3f86b8d02
Upgrade dependencies ( #956 )
2025-08-03 04:40:21 +00:00
Lukas Wirth
211bc158df
Do manual trait casting ( #922 )
...
* Do manual trait upcasting instead of downcasting
* Remove another dynamic `zalsa` call
* Rename UpCaster back to DownCaster
* Address reviews
2025-07-31 15:56:13 +00:00
Ibraheem Ahmed
0e1df67ec4
Avoid dynamic dispatch to access memo tables ( #941 )
...
* avoid dynamic dispatch to access memo tables
* update comment
2025-07-21 16:09:11 +00:00
Ibraheem Ahmed
dba66f1a37
Use inventory
for static ingredient registration ( #934 )
...
Book / Book (push) Has been cancelled
Release-plz / Release-plz release (push) Has been cancelled
Release-plz / Release-plz PR (push) Has been cancelled
Test / Test (push) Has been cancelled
Test / Miri (push) Has been cancelled
Test / Shuttle (push) Has been cancelled
Test / Benchmarks (push) Has been cancelled
Book / Deploy (push) Has been cancelled
* use `inventory` for static ingredient registration
* remove unnecessary synchronization from memo tables
* use global ingredient caches for database-independent ingredients
* add manual ingredient registration API
* remove static ingredient index optimization when manual registration is in use
* fix atomic imports
* simplify ingredient caches
2025-07-18 04:55:50 +00:00
Lukas Wirth
fc00eba89e
Fix heap_size
option not being preserved in tracked impls ( #930 )
Book / Book (push) Has been cancelled
Release-plz / Release-plz release (push) Has been cancelled
Release-plz / Release-plz PR (push) Has been cancelled
Test / Test (push) Has been cancelled
Test / Shuttle (push) Has been cancelled
Test / Miri (push) Has been cancelled
Test / Benchmarks (push) Has been cancelled
Book / Deploy (push) Has been cancelled
2025-07-02 12:34:02 +00:00
github-actions[bot]
572d144b33
chore: release v0.23.0 ( #877 )
...
Test / Shuttle (push) Waiting to run
Test / Benchmarks (push) Waiting to run
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz release (push) Waiting to run
Release-plz / Release-plz PR (push) Waiting to run
Test / Test (push) Waiting to run
Test / Miri (push) Waiting to run
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-06-27 11:40:54 +02:00
Lukas Wirth
f384ab538e
Emit self ty for query debug name of assoc function queries ( #927 )
2025-06-27 09:23:25 +00:00
Ibraheem Ahmed
0666e2018b
add option to track heap memory usage of memos ( #925 )
Book / Book (push) Has been cancelled
Release-plz / Release-plz release (push) Has been cancelled
Release-plz / Release-plz PR (push) Has been cancelled
Test / Test (push) Has been cancelled
Test / Miri (push) Has been cancelled
Test / Shuttle (push) Has been cancelled
Test / Benchmarks (push) Has been cancelled
Book / Deploy (push) Has been cancelled
2025-06-25 20:26:49 +00:00
Lukas Wirth
8528bab609
feat: Update
derive field overwrite support ( #747 )
...
Release-plz / Release-plz PR (push) Has been cancelled
Book / Book (push) Has been cancelled
Release-plz / Release-plz release (push) Has been cancelled
Test / Test (push) Has been cancelled
Test / Miri (push) Has been cancelled
Test / Shuttle (push) Has been cancelled
Test / Benchmarks (push) Has been cancelled
Book / Deploy (push) Has been cancelled
* `Update` derive field overwrite support
* Allow overwriting tracked struct field update functions
2025-06-13 17:17:39 +00:00
Ibraheem Ahmed
b8cdd300a0
add an option to tune interned garbage collection ( #911 )
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz PR (push) Waiting to run
Release-plz / Release-plz release (push) Waiting to run
Test / Test (push) Waiting to run
Test / Miri (push) Waiting to run
Test / Shuttle (push) Waiting to run
Test / Benchmarks (push) Waiting to run
2025-06-13 06:17:45 +00:00
puuuuh
8924db1441
Preserve attributes on interned/tracked struct fields ( #905 )
...
Release-plz / Release-plz PR (push) Waiting to run
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz release (push) Waiting to run
Test / Test (push) Waiting to run
Test / Benchmarks (push) Waiting to run
Test / Miri (push) Waiting to run
Test / Shuttle (push) Waiting to run
* Preserve attributes on interned/tracked structs
* Pass unknown attributes from fields to getter functions in inputs
2025-06-10 06:34:54 +00:00
Micha Reiser
14318b7266
Update dependencies, remove unused heck
dependency ( #894 )
...
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Release-plz / Release-plz release (push) Waiting to run
Release-plz / Release-plz PR (push) Waiting to run
Test / Test (push) Waiting to run
Test / Miri (push) Waiting to run
Test / Shuttle (push) Waiting to run
Test / Benchmarks (push) Waiting to run
* Store tracked struct ids as Vec on Revisions
* Use reserve
* Discard changes to tests/parallel/cycle_a_t1_b_t2_fallback.rs
* Try boxed slice
* Use thinvec
* Update dependencies, remove unused heck
* Discard changes to src/function/diff_outputs.rs
* Discard changes to src/tracked_struct.rs
* Discard changes to src/zalsa_local.rs
* Discard changes to tests/parallel/cycle_a_t1_b_t2_fallback.rs
2025-06-02 10:00:52 +00:00
Chayim Refael Friedman
2a54667121
Allow lifetimes in arguments in tracked fns with >1 parameters ( #880 )
2025-05-26 04:50:43 +00:00
github-actions[bot]
a12bf313a4
chore: release v0.22.0 ( #840 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-23 12:38:34 +02:00
Vincent Esche
e859218dea
Allow creation of tracked associated functions (without self
) ( #859 )
...
* Rename file "setup_method_body.rs" to "setup_tracked_method_body.rs"
* Rename macro `setup_method_body!` to `setup_tracked_method_body!`
* Add support for tracked associated functions
* Rename struct `MethodArguments` to `AssociatedFunctionArguments`
(since every method is an associated function, but not every associated function is a method)
2025-05-23 10:19:12 +00:00
Lukas Wirth
2d4321e989
Implement an !Update
bound escape hatch for tracked fn ( #867 )
Book / Book (push) Has been cancelled
Release-plz / Release-plz release (push) Has been cancelled
Release-plz / Release-plz PR (push) Has been cancelled
Test / Test (push) Has been cancelled
Test / Miri (push) Has been cancelled
Test / Benchmarks (push) Has been cancelled
Book / Deploy (push) Has been cancelled
2025-05-20 15:36:34 +00:00
Micha Reiser
7edce6e248
Fix returns(deref | as_ref | as_deref) in tracked methods ( #857 )
2025-05-09 09:09:16 +00:00
CheaterCodes
13a2bd7461
Changed return_ref
syntax to returns(as_ref)
and returns(cloned)
( #772 )
...
* Changed `return_ref` syntax to `returns(as_ref)` and `returns(cloned)`
* Implement
* renamed module for return_mode
* Rename macro, fix docs, add tests, validate return modes
* Cargo fmt
---------
Co-authored-by: Micha Reiser <micha@reiser.io>
2025-05-09 07:28:54 +00:00
Lukas Wirth
cfa88e9a4d
Move salsa event system into Zalsa
( #849 )
...
* Move salsa event system into `Zalsa`
* Encode `None` into ShallowUpdate
This shrinks the return value from 16 to 8 bytes
2025-05-07 11:45:49 +00:00
github-actions[bot]
fa8409212d
chore: release v0.21.1 ( #829 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-05-01 07:22:49 +02:00
github-actions[bot]
2a3a871f2a
chore: release v0.21.0 ( #811 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-29 19:13:06 +02:00
Lukas Wirth
f915b0632e
fix: allow unused lifetimes in tracked_struct expansion ( #824 )
2025-04-28 11:50:52 +00:00
Lukas Wirth
9a9fb4e51b
Add a compile-fail test for a 'static
!Update
struct ( #820 )
2025-04-28 07:09:05 +00:00
Andrey Nikolaev
c75b0161ab
squelch most clippy warnings in generated code ( #809 )
2025-04-27 09:57:45 +00:00
Micha Reiser
f7eea9d69b
Use DatabaseKey
for interned events ( #813 )
...
* Use `DatabaseKey` for interned events
* Tame clippy
2025-04-24 10:38:46 +00:00
github-actions[bot]
201a8dd40b
chore: release v0.20.0 ( #753 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-04-22 13:57:53 +02:00
Chayim Refael Friedman
05b4faddb5
Add a third cycle mode, equivalent to old Salsa cycle behavior ( #801 )
...
That is, directly set a value for all queries that have fallbacks, and ignore all other queries in the cycle.
Unlike old Salsa, we still need all cycle heads to be marked, and we still execute the queries to completion, but we throw their result.
2025-04-22 10:35:43 +00:00
Lukas Wirth
a89e3d2357
chore: Normalize imports style ( #779 )
...
* Default impl some ingredient functions
* chore: Normalize imports style
Effectively reformatted everything with
```toml
imports_granularity = "Module"
group_imports = "StdExternalCrate"
reorder_imports = true
```
2025-03-28 05:11:40 +00:00
Wilco Kusee
8fb172b696
Document most safety blocks ( #776 )
...
* Document most safety blocks, allow others with todo
* Remove unused impl
2025-03-23 11:19:52 +00:00
Micha Reiser
1d1523b8b8
bug [salsa-macros]: Improve debug name of tracked methods ( #755 )
2025-03-17 08:57:50 +00:00
Lukas Wirth
1bbf4c2be5
feat: Drop Debug
requirements and flip implementation defaults ( #756 )
2025-03-15 15:14:34 +00:00
Carl Meyer
095d8b2b81
rewrite cycle handling to support fixed-point iteration ( #603 )
2025-03-10 22:25:47 +00:00
github-actions[bot]
9ebc8a3913
chore: release v0.19.0 ( #698 )
...
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-03-10 15:09:26 +01:00
Lukas Wirth
9d2a9786c4
perf: Store view downcaster in function ingredients directly ( #720 )
...
* Store view downcaster in function ingredients directly
* Embed typecheck into the downcaster
* Force inline `db` proc-macro generated functions
* Skip unnecessary type-id check
2025-03-06 10:39:52 +00:00
Carl Meyer
3ffc9a2efe
Option::replace instead of std::mem::replace ( #746 )
2025-03-05 15:58:56 +00:00
Lukas Wirth
7a45da93c2
Cleanup Cargo.toml
s ( #745 )
2025-03-05 15:45:16 +00:00
David Barsky
a1fb5c34de
internal: address review comments
2025-02-25 11:19:01 +01:00
Lukas Wirth
009b7dcae5
Skip memo ingredient index mapping for non enum tracked functions
2025-02-25 09:39:11 +01:00
Lukas Wirth
e47c4fe8e9
Trade off a bit of memory for more speed in MemoIngredientIndices
2025-02-25 09:37:28 +01:00
Chayim Refael Friedman
9c12fce24b
fix enums bug
2025-02-25 09:36:36 +01:00
Chayim Refael Friedman
6134aaf2b5
Introduce Salsa enums
...
They are of the form:
```
enum Enum {
Input(Input),
Interned(Interned),
...
}
```
2025-02-25 09:36:36 +01:00
Micha Reiser
e1884ba2f1
Track revisions for tracked fields only
2025-02-23 18:21:34 +01:00
Lukas Wirth
d9afdc9182
Emit better diagnostic for invalid tracked function return types
2025-02-15 19:09:06 +01:00
Micha Reiser
c48a9df2ec
Improve span of maybe_update dummy implementation for better diagnostics
2025-02-09 16:07:51 +01:00
Micha Reiser
acbee94fbe
Use Fallback
trick for tracked function Update
constraint, implement Update
for smallvec
and compact_str
2025-02-09 15:48:52 +01:00
Ibraheem Ahmed
c710526c3c
only create ingredients for tracked fields
2025-02-03 20:40:12 -05:00
Ibraheem Ahmed
9436f8ff6b
ensure tracked struct ingredients are mapped correctly to tracked fields
2025-02-03 20:29:49 -05:00
Ibraheem Ahmed
c90c2f2e8a
make tracked structs coarse-grained by default
2025-02-03 20:29:48 -05:00