Mihail Mihov
064f26db8f
Change QueryInputs
to QueryEdges
2022-08-13 13:04:19 +03:00
Mihail Mihov
8e54a9bb3e
Report reads in InputFieldIngredient
's fetch
method.
2022-08-13 13:04:19 +03:00
Mihail Mihov
9b7f7fd4ed
Add comments describing InputFieldIngredient
...
Co-authored-by: Niko Matsakis <niko@alum.mit.edu>
2022-08-13 13:04:19 +03:00
Mihail Mihov
11b23c942b
Return old value in input setter methods
2022-08-13 13:04:19 +03:00
Mihail Mihov
ec141aceba
Replace inputs' FunctionIngredients with InputFieldIngredients
2022-08-13 13:04:19 +03:00
Mihail Mihov
da43bd2ba6
Add InputFieldIngredient
2022-08-13 13:04:19 +03:00
Niko Matsakis
d80d5308f1
fix annoying formatting problem
2022-08-13 01:28:01 -04:00
Niko Matsakis
b8643a5f70
distinguish fields from other specified values
...
And make `QueryOrigin` finer grained while we are at it.
2022-08-13 01:21:45 -04:00
Niko Matsakis
e2763aba88
change approach: eagerly verify, don't remove
...
This approach is more compatible with our overall "pull" result,
and it also means we can get more re-use.
2022-08-13 01:21:45 -04:00
Niko Matsakis
2652f66fc9
messy commit: refactor + add mark_validated_output
...
I realized I can do this better:
* require that outputs are DatabaseKeyIndex, fewer unwraps,
more clearly justified
* when we validate result of tracked fn, also validate its outputs
(this is incompletely implemented, would ideally be separated
into its own commit, but I'm short for time)
The last step will allow us to keep the memoized results for
assigned values and means we don't have to eagerly clear them.
If we see an "assigned value" that is not verified in the current
revision, it can simply be considered dirty.
We can still delete them when entities are deleted, but they're
less special.
2022-08-13 01:21:45 -04:00
Niko Matsakis
37e7eeb3fd
delete stale output values
...
This fixes the behavior of `specify_tracked_fn_in_rev_1_but_not_2`,
mostly, though I realize now that it is suboptimal.
2022-08-13 01:21:45 -04:00
Niko Matsakis
a3a0f030f6
track the query that assigned the value
...
We will use this just for asserts, but it seems useful.
2022-08-13 01:21:45 -04:00
Niko Matsakis
af9de5686d
delete some dead code, squash wanings
2022-08-13 01:21:45 -04:00
Niko Matsakis
aa88884b51
move "untracked" into the Origin
enum
...
It's a bit of a stretch for the name, but I think the code is cleaner.
2022-08-13 01:21:45 -04:00
Niko Matsakis
0e96d4c1e7
replace edges with origin
...
We now track whether the value was ASSIGNED or DERIVED.
2022-08-13 01:21:45 -04:00
Niko Matsakis
a58bc82883
create remove_stale_output
method on ingredients
...
but we are not doing anything in it, yet
2022-08-13 01:21:45 -04:00
Niko Matsakis
8accccdbce
diff outputs when replacing a memoized value
...
We don't do anything with this info right now besides log it,
but the logs show we are reporting it at the right times
in the `specify_tracked_fn_in_rev_1_but_not_2` test
(also fix an oversight in the test where it was creating a new input
each time).
2022-08-13 01:21:45 -04:00
Niko Matsakis
c0ac7447c9
track both inputs/outputs for each query
...
Rename QueryInputs to QueryEdges.
Modify its fields to track both inputs and outputs.
The size of the struct doesn't actually change,
as the separator comes out of padding.
2022-08-13 01:21:45 -04:00
Niko Matsakis
604c182d7b
record when specify is called by a user
...
Pre-declared fields do not need to be recorded,
as they are always specified.
2022-08-13 01:21:45 -04:00
Niko Matsakis
6ad632a747
generalize list of "entities created" to "outputs"
...
We will record each thing that gets *output* by the query.
We use a btree-set so that we can get a sorted list.
That will allow us to easily compare what is output between revisions.
We will use that to clear stale values.
2022-08-13 01:21:45 -04:00
Niko Matsakis
97e280ddd2
track outputs for the active record
2022-08-13 01:21:45 -04:00
Niko Matsakis
15ec60613c
Revert "track outputs for the active record"
...
This reverts commit de2fb22a1c
.
2022-08-12 14:28:30 -04:00
Niko Matsakis
8fc38fed48
Revert "generalize list of "entities created" to "outputs""
...
This reverts commit cbe7d371c9
.
2022-08-12 14:28:28 -04:00
Niko Matsakis
5046ba1e6d
Revert "record when specify is called by a user"
...
This reverts commit 787480ffab
.
2022-08-12 14:28:27 -04:00
Niko Matsakis
cb0b53caa7
Revert "track both inputs/outputs for each query"
...
This reverts commit 49ccac5d3d
.
2022-08-12 14:28:26 -04:00
Niko Matsakis
afefcdf335
Revert "diff outputs when replacing a memoized value"
...
This reverts commit 1e3272bc61
.
2022-08-12 14:28:25 -04:00
Niko Matsakis
eabb55632e
Revert "create remove_stale_output
method on ingredients"
...
This reverts commit 8b7324dca8
.
2022-08-12 14:28:20 -04:00
Niko Matsakis
8b7324dca8
create remove_stale_output
method on ingredients
...
but we are not doing anything in it, yet
2022-08-11 12:15:17 -04:00
Niko Matsakis
1e3272bc61
diff outputs when replacing a memoized value
...
We don't do anything with this info right now besides log it,
but you can see that we are reporting it at the right times
in the `specify_tracked_fn_in_rev_1_but_not_2` test
(also fix an oversight in the test where it was creating a new input
each time).
2022-08-11 00:56:15 -04:00
Niko Matsakis
49ccac5d3d
track both inputs/outputs for each query
...
Rename QueryInputs to QueryEdges and modify its fields
to track both inputs and outputs. The size of the struct
doesn't actually change, the separator comes out of padding.
2022-08-11 00:28:34 -04:00
Niko Matsakis
787480ffab
record when specify is called by a user
...
We don't need to record it for pre-declared fields,
as they are always specified.
2022-08-10 03:55:04 -04:00
Niko Matsakis
cbe7d371c9
generalize list of "entities created" to "outputs"
...
We will record each thing that gets *output* by the query.
Use a btree-set so that we can get a sorted list.
That will allow us to easily compare what is output between revisions.
We will use that to clear stale values.
2022-08-10 03:54:04 -04:00
Niko Matsakis
de2fb22a1c
track outputs for the active record
2022-08-10 03:46:27 -04:00
Niko Matsakis
d72803c027
don't mark specified values as volatile
...
This is what we want, but it's not a complete fix.
It does make these tests work, though!
Good enough to commit.
2022-08-10 00:42:32 -04:00
Niko Matsakis
eeb47a065c
add a comment to TrackedStructInDb trait
2022-08-10 00:42:32 -04:00
Niko Matsakis
85d88b8df0
give each function a SalsaStruct assoc type
2022-08-10 00:42:32 -04:00
Niko Matsakis
940ed006cf
add SalsaStructInDb impls for inputs, interned
...
Now all types have them.
2022-08-10 00:42:32 -04:00
Niko Matsakis
25e085fbdc
add a SalsaStructInDb trait
...
Not currently used anywhere,
but will be implemented by all salsa structs.
2022-08-10 00:42:32 -04:00
Niko Matsakis
fc5e05fae0
introduce newtype wrappers for each salsa struct
...
This way they have separate namespaces for their inherent methods.
2022-08-10 00:42:32 -04:00
Niko Matsakis
4400c1b66a
make constructing an Id private to salsa
...
This way we know that all Id instances came from salsa.
Not sure if that matters, but why not?
2022-08-10 00:42:32 -04:00
Niko Matsakis
ac837e2cdc
rename set
method to specify
...
That's the method name we use when exposing this to users.
2022-08-10 00:42:32 -04:00
Niko Matsakis
9229b1a23a
rename Ingredients to Routes
...
The old name makes it sound like it contains the
actual ingredients, but really it just contains
the routes we use to find them at runtime.
2022-08-10 00:42:32 -04:00
Niko Matsakis
00d95436e0
more comments
2022-08-10 00:42:32 -04:00
Niko Matsakis
2547823a5f
do not allow dead code anymore
2022-08-10 00:42:32 -04:00
Niko Matsakis
f513f46380
add comments, remove dead-code lints
2022-08-10 00:42:32 -04:00
Niko Matsakis
323e677182
enable logging of salsa events by default
...
and add logging to tests
2022-08-10 00:42:27 -04:00
Niko Matsakis
395df47016
use DebugWithDb trait for the database key index
2022-08-10 00:42:05 -04:00
XFFXFF
9fb5f7a366
add some comments
2022-08-09 08:43:44 +08:00
XFFXFF
045f5186b3
modify tracked_fn macro to use it
2022-08-08 08:57:29 +08:00
XFFXFF
0f907dd3cd
add recovery_fn option
2022-08-08 07:32:39 +08:00