Commit graph

1563 commits

Author SHA1 Message Date
Niko Matsakis
2c7cda5a8d
Merge pull request #499 from camelid/input-mut
Some checks are pending
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Test / Test (false, beta) (push) Waiting to run
Test / Test (false, stable) (push) Waiting to run
Test / Test (true, nightly) (push) Waiting to run
Test / Miri (push) Waiting to run
book: Creating inputs no longer requires `&mut dyn Db`
2024-06-18 10:52:14 +00:00
Matthijs Brobbel
d0e9b79e6a
Remove references to old selection example 2024-06-18 10:39:26 +02:00
Matthijs Brobbel
a0d7b0ee55
Fix book deployment 2024-06-18 10:35:36 +02:00
Matthijs Brobbel
0f2d5a516c
More book updates and a compile fail test fix 2024-06-18 10:03:53 +02:00
Matthijs Brobbel
b3838b1ca7
Update book 2024-06-18 09:59:17 +02:00
Matthijs Brobbel
5ba40cf36c
Fix CI and examples 2024-06-18 09:52:37 +02:00
Matthijs Brobbel
c7851112a5
Rename salsa-2022 to salsa 2024-06-18 09:40:21 +02:00
Matthijs Brobbel
db75ae00a2
Remove old salsa 2024-06-18 09:25:26 +02:00
Niko Matsakis
56eb9c21e1
Merge pull request #500 from camelid/syn-feature
Some checks are pending
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Test / Test (false, beta) (push) Waiting to run
Test / Test (false, stable) (push) Waiting to run
Test / Test (true, nightly) (push) Waiting to run
Test / Miri (push) Waiting to run
Add missing `syn` feature requirement
2024-06-17 21:33:10 +00:00
Noah Lev
19b40c377f Add missing syn feature requirement
With the latest commit (283ccda), any project that uses Salsa hits tons
of internal errors within Salsa. That's because Salsa needs syn's `full`
feature, which was removed from the Cargo.toml as part of the Salsa 3.0
mega-PR. Because Salsa 1.0 still has the `full` feature in its
Cargo.toml, Cargo implicitly still enables `full` for Salsa 2022, and
thus the Salsa 2022 example projects compile fine -- even though any
external code using Salsa does not.
2024-06-17 13:36:37 -07:00
Noah Lev
5b99535837 book: Creating inputs no longer requires &mut dyn Db
This was changed in #404.
2024-06-17 13:09:19 -07:00
Niko Matsakis
283ccda940
Merge pull request #490 from nikomatsakis/salsa-30-new-update-regime
Some checks are pending
Book / Book (push) Waiting to run
Book / Deploy (push) Blocked by required conditions
Test / Test (false, beta) (push) Waiting to run
Test / Test (false, stable) (push) Waiting to run
Test / Test (true, nightly) (push) Waiting to run
Test / Miri (push) Waiting to run
salsa 3.0
2024-06-17 12:30:42 +00:00
Niko Matsakis
1544ee97ce
Apply suggestions from code review
Co-authored-by: Micha Reiser <micha@reiser.io>
Co-authored-by: Ryan Cumming <etaoins@gmail.com>
Co-authored-by: David Barsky <me@davidbarsky.com>
2024-06-15 06:09:10 -04:00
Niko Matsakis
ab9aa3ac08 WIP: start writing a safety chapter
Still debating the best structure, so the contents
are rather scattershot.

I may have found a hole, but it's...obscure
and I'm comfortable with it for the time being,
though I think we want to close it eventually.
2024-06-13 08:05:16 -04:00
Niko Matsakis
bcad24c7f1 add a safety comment on Update
This was not obvious to me initially.
2024-06-13 08:05:00 -04:00
Niko Matsakis
af2c9737a9 rework tutorial a bit to be more up to date 2024-06-11 05:36:45 -04:00
Niko Matsakis
c02f30a4d6 remove dead code from interned structs 2024-06-11 05:24:47 -04:00
Niko Matsakis
f91eeb931d remove dead code
tracked structs only support `'db` lifetimes
2024-06-11 05:20:04 -04:00
Niko Matsakis
53266837af remove "setter" function altogether
This...seems dated. We have `specify` which is
a more correct and principled version. Not sure
what `set` was meant to be but I don't see any
tests for it so...kill it.
2024-05-30 09:46:20 -04:00
Niko Matsakis
ce750dadf5 allow elided lifetimes in tracked fn return values 2024-05-30 09:40:47 -04:00
Niko Matsakis
b9ab8fcebd rustfmt has opinions 2024-05-30 08:46:15 -04:00
Niko Matsakis
0ad0be8095 pacify the merciless clippy 2024-05-30 08:40:18 -04:00
Niko Matsakis
88b964d18d use const _: () to disable clippy lints 2024-05-30 08:40:18 -04:00
Niko Matsakis
07d0ead9f4 return a NonNull instead of a &'db
In old code, we converted to a `&'db` when
creating a new tracked struct or interning,
but this value in fact persisted beyond the end
of `'db` (i.e., into the new revision).

We now refactor so that we create the `Foo<'db>`
from a `NonNull<T>` instead of a `&'db T`, and
then only create safe references when users
access fields.

This makes miri happy.
2024-05-30 01:59:49 -04:00
Niko Matsakis
8c51f37292 Revert "WIP: temporarily add expanded version of test"
This reverts commit a7b2805b06.
2024-05-27 07:40:40 -04:00
Niko Matsakis
81942f37e5 use Alloc not Box
to avoid uniqueness guarantees
2024-05-27 07:39:46 -04:00
Niko Matsakis
a7b2805b06 WIP: temporarily add expanded version of test 2024-05-26 09:22:32 -04:00
Niko Matsakis
ce88a8f9ca apply cargo fmt 2024-05-25 16:25:06 -04:00
Niko Matsakis
68502ab27f 'db all the things 2024-05-24 07:16:50 -04:00
Niko Matsakis
1560634f96 support methods with 'db lifetimes 2024-05-24 07:16:50 -04:00
Niko Matsakis
b005820494 add a derive for DebugWithDb 2024-05-24 07:16:50 -04:00
Niko Matsakis
4f4d01958f generate a custom std::fmt::Debug impl
This leads less representation information
and in particular avoids serializing pointers.
2024-05-24 07:16:50 -04:00
Niko Matsakis
d98485d3cb add a derive for salsa::Update
And a test for it. This is required if you
want to have structures in your tracked structs.

Looks we need one for salsa::DebugWithDb, too.
2024-05-24 07:16:50 -04:00
Niko Matsakis
2800076857 update to syn 2.0 2024-05-24 07:16:50 -04:00
Niko Matsakis
06b70975e9 impl Update/Send/Sync
and add dedicated tests for that
2024-05-24 07:16:50 -04:00
Niko Matsakis
56030df782 convert a test to use 'db in tracked functions
It works! Huzzah.
2024-05-24 07:16:50 -04:00
Niko Matsakis
b4b49fbd1b split the Id conversion traits
We now have AsId (always present)
and FromId/LookupId (sometimes present).

AsId is no longer part of the
salsa public interface.

Replace the ad-hoc `salsa_id` etc methods with
calls to `AsId::as_id`.
2024-05-24 07:16:50 -04:00
Niko Matsakis
7519c3e2a6 extend IdentityInterner to be based on LookupId 2024-05-24 07:16:50 -04:00
Niko Matsakis
ab70786536 introduce LookupId trait
We are going to need it for tracked functions.
2024-05-24 07:16:50 -04:00
Niko Matsakis
cf2fa671f5 introduce IdLookup trait
We are going to need it for tracked functions.
2024-05-24 07:16:50 -04:00
Niko Matsakis
8d0f8fccbf remove unnecessary uses of AsId 2024-05-24 07:16:50 -04:00
Niko Matsakis
d361e8adfb add a 'db argument to SalsaStruct 2024-05-24 07:16:50 -04:00
Niko Matsakis
9607638d5d permit interned structs with lifetimes 2024-05-24 07:16:50 -04:00
Niko Matsakis
9d8a60b617 parameterize salsa_struct module 2024-05-24 07:16:50 -04:00
Niko Matsakis
0b8c27bc30 rename from TrackedStruct to just Struct
this will let us use different packages
but the same struct name from salsa struct
2024-05-24 07:16:50 -04:00
Niko Matsakis
5095d79d13 return a pointer from interning, not just id 2024-05-24 07:16:50 -04:00
Niko Matsakis
d92f2aa0a5 factor out useful helper fn 2024-05-24 07:16:50 -04:00
Niko Matsakis
af94b253be debug dump for interned struct tokens 2024-05-24 07:16:50 -04:00
Niko Matsakis
d6d522662c have tracked struct intern its own keys
Previously tracked structs relied on an
interned ingredient to intern their keys.
But really it has more complex logic than we
need. Simpler to just remove it and duplicate
the basic concept.
2024-05-24 07:16:50 -04:00
Niko Matsakis
4822013523 permit interned data to take 'db lifetime 2024-05-24 07:16:50 -04:00