Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

evaluator: implement new evaluator as the basis for performance and other improvements #2884

Open
myitcv opened this issue Feb 29, 2024 · 1 comment
Assignees
Labels
evaluator FeatureRequest New feature or request

Comments

@myitcv
Copy link
Member

myitcv commented Feb 29, 2024

This is a placeholder issue for the implementation of a new version of the core CUE evaluator, a version that will enable (further) performance improvements referenced in #2850. It will also serve as a better platform for fixing any correctness issues.

The new evaluator will not be enabled by default.

The top of stack for this change is currently https://review.gerrithub.io/c/cue-lang/cue/+/1174341 (there are many changes below it that have already been submitted). We will update the issue description with more details and better links shortly.

@myitcv myitcv added the FeatureRequest New feature or request label Feb 29, 2024
@mpvl mpvl mentioned this issue Feb 29, 2024
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This adds functionality to open a Mermaid graph visualizing
the state in a browser.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I0b59815069bffa4c66eeaac1612f955017ab8e46
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Whether a struct is a definition should be propagated up. Adds tests and logic.

As a consequence, some nodes that were marked as
embedding only before, are now marked as a
embedding as well as definition.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I4d97a4087734719471588f0b39561fbbca8f53b4
cueckoo pushed a commit that referenced this issue Mar 7, 2024
We will first implement the new evaluator without support
for disjunctions. This change excludes such tests by examining
the AST. Some additional tests that indirectly use disjunctions
are explicitly excluded.

Moved todoAlpha to within the test to facilitate editors that
can run a test in place. This allows editing the list and running
the file without having to move the cursor around.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I838745476fa7ba1354772c2fbbe4197ba9af2713
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Functions that are no longer used by the new evaluator are
marked with the unreachableForDev assertion.
This avoids accidentally mixing old and new evaluator, but
also makes it easier to review which parts are called by the
new evaluator and which not.

Note that some functions that are now not marked may
still be only partially used in follow up CLs using the
OpContext.useDevVersion method.

But we wanted to have these changes in before the new
evaluator is added and in a separate CL, so that
1) these changes do not interfere with that CL
2) one can quickly see which parts are not called during the review.

The panic should be uncommented once the new evaluator lands.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ic96098928c7a35a6e02c5929d2ea788a8ceafc85
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Once a counter was decremented to zero, it is no longer
allowed to be incremented.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I82e0883467babd474ae8aaecb729418365181929
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Differentiate between the one-level closedness
of the closed builtin and that of definitions.

Keep track of whether nodes use ellipses or top
values.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I561f813b8384af7eccdfbe2d22900037b13d1229
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Especially if other nodes are still running, it is normal that their
counters will not be zero.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ice2bf915dcf4d30a0c439103caf804c2262c14b7
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This does not yet implement disjunctions.

Much of the specific code from the old evaluator is shared with
the new evaluator. It is mostly the top-level control that is
reimplemented.

The new evaluator is based on the new scheduler and the new
closedness implementation. We will describe the function of each
new file below, with more details in the file itself.

conjuncts.go:
   This file take adt.Expr and adt.Value and either stores
   the corresponding value, if present, in a Vertex directly
   or otherwise schedules a task in the scheduler for later
   evaluation.

tasks.go:
   This file implements the tasks corresponding to the various
   adt.Expr expressions needed to evaluate them. These are
   scheduled by the code in conjuncts.go

states.go:
   This file adds more of the low-level state logic around the
   various properties a CUE node can achieve. These state map
   to the low-level scheduler, which is CUE agnostic.

unify.go:
   This file contains the high-level evaluation code that kicks
   off the evaluation process, including the initialization of
   a scheduler for each node. The analogous file for the old
   evaluator is eval.go.

Tests:
Some of the test results are different between the old and new
evaluator. In this case, the txtar files will contain both
an out/evalalpha file for the new evaluator, the original
out/alpha file for the old evaluator, and a diff file for the
diffed results.

If the changes were an improvement, this is described in the
diff/explanation file. Otherwise, there is a diff/todo/pX, where
X is the priority of the fix, with an explanation of what still
needs to be done.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ia0c5ad71cfdc7777b29f0aafd768da199844b710
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This adds functionality to open a Mermaid graph visualizing
the state in a browser.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I0b59815069bffa4c66eeaac1612f955017ab8e46
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1174002
TryBot-Result: CUEcueckoo <cueckoo@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Whether a struct is a definition should be propagated up. Adds tests and logic.

As a consequence, some nodes that were marked as
embedding only before, are now marked as a
embedding as well as definition.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I4d97a4087734719471588f0b39561fbbca8f53b4
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1174003
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@gmail.com>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Mar 7, 2024
We will first implement the new evaluator without support
for disjunctions. This change excludes such tests by examining
the AST. Some additional tests that indirectly use disjunctions
are explicitly excluded.

Moved todoAlpha to within the test to facilitate editors that
can run a test in place. This allows editing the list and running
the file without having to move the cursor around.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I838745476fa7ba1354772c2fbbe4197ba9af2713
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1174004
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@gmail.com>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Functions that are no longer used by the new evaluator are
marked with the unreachableForDev assertion.
This avoids accidentally mixing old and new evaluator, but
also makes it easier to review which parts are called by the
new evaluator and which not.

Note that some functions that are now not marked may
still be only partially used in follow up CLs using the
OpContext.useDevVersion method.

But we wanted to have these changes in before the new
evaluator is added and in a separate CL, so that
1) these changes do not interfere with that CL
2) one can quickly see which parts are not called during the review.

The panic should be uncommented once the new evaluator lands.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ic96098928c7a35a6e02c5929d2ea788a8ceafc85
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1174006
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@gmail.com>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Once a counter was decremented to zero, it is no longer
allowed to be incremented.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I82e0883467babd474ae8aaecb729418365181929
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1174013
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@gmail.com>
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Differentiate between the one-level closedness
of the closed builtin and that of definitions.

Keep track of whether nodes use ellipses or top
values.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I561f813b8384af7eccdfbe2d22900037b13d1229
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Especially if other nodes are still running, it is normal that their
counters will not be zero.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ice2bf915dcf4d30a0c439103caf804c2262c14b7
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This does not yet implement disjunctions.

Much of the specific code from the old evaluator is shared with
the new evaluator. It is mostly the top-level control that is
reimplemented.

The new evaluator is based on the new scheduler and the new
closedness implementation. We will describe the function of each
new file below, with more details in the file itself.

conjuncts.go:
   This file take adt.Expr and adt.Value and either stores
   the corresponding value, if present, in a Vertex directly
   or otherwise schedules a task in the scheduler for later
   evaluation.

tasks.go:
   This file implements the tasks corresponding to the various
   adt.Expr expressions needed to evaluate them. These are
   scheduled by the code in conjuncts.go

states.go:
   This file adds more of the low-level state logic around the
   various properties a CUE node can achieve. These state map
   to the low-level scheduler, which is CUE agnostic.

unify.go:
   This file contains the high-level evaluation code that kicks
   off the evaluation process, including the initialization of
   a scheduler for each node. The analogous file for the old
   evaluator is eval.go.

Tests:
Some of the test results are different between the old and new
evaluator. In this case, the txtar files will contain both
an out/evalalpha file for the new evaluator, the original
out/alpha file for the old evaluator, and a diff file for the
diffed results.

If the changes were an improvement, this is described in the
diff/explanation file. Otherwise, there is a diff/todo/pX, where
X is the priority of the fix, with an explanation of what still
needs to be done.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ia0c5ad71cfdc7777b29f0aafd768da199844b710
cueckoo pushed a commit that referenced this issue Mar 7, 2024
The conjunct index was previously incorrectly computed.
This was fine, as it was unused. The bug was exposed by the
upcoming implementation of disjunctions. We put the fix in a
separate CL to minimize diffs later. Testing of this fix is done
by adding support to disjunctions.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I027ffae6bc3aba3ce419e179bd21570b159ae789
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This is necessary for the upcoming implementation of
disjunctions. Tasks will selectively need to be copied for
disjunctions. For the ones that are removed, we need to
decrement the counters. This requires us to store the
"completes" bitmask. Rather than storing this as a
separate field, we store it in information of the task.

This has the additional benefits that all bit dependencies
are now visible in one place. It also helps with debugging,
as the "run" pointer now contains enough information to
identify the type of task. Similarly, we can now print the type
of task in the debugging output.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I8c316c7ee717b870ed648c2c8e52f1fd0ea8fcad
cueckoo pushed a commit that referenced this issue Mar 7, 2024
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I38d07c96f0120e09f2b0673d7247b2b39a03a22e
cueckoo pushed a commit that referenced this issue Mar 7, 2024
This reflects the original code.
See composite.go:GetArc for comparisson.

Without this, cycle/self will crash. We will soon
enable this test as part of the disjunction
implementation.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I5bf9dbf29c3acfe59d536b276d3955b2952f19b0
cueckoo pushed a commit that referenced this issue Apr 30, 2024
It used to be that a "NotPresent" arc was indicative
of a cyclic evaluation. Now it is just not present.

Adjust the error message accordingly.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: If9207745dc8daced4bc01818a88ce5a21d049eab
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194078
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Apr 30, 2024
The new evaluator computes closedness quite
differently from the old one. This CL adapts the API to
use the new data.

Note that the data the new evaluator generates is
considerably more convenient. That is why the logic
is quite a bit simpler. The logic could probably be simplified
more.

Also note that HasEllipsis seems to be not computed
correclty entirely. Although it seems that many tests
improve if we add the check to isClosed or
IsClosedStruct, there are some cases where this causes
errors. This seems to be the case with one of the tests
in TestAllows. As this only manifests itself when structure
sharing is disabled, we just mark this test as todo and
leave the investigation for later.

Issue #3060
Issue #543
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I98e8c25e0680674e2aaa9f743a49b39920d7b266
cueckoo pushed a commit that referenced this issue Apr 30, 2024
Now we have structure sharing, we need to ensure that
Vertex values are dereferenced properly.

Issue #3060
Issue #2884
Issue #2854

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ied35aa7f7f08205bbdb54415d78e78f1b83c8b62
cueckoo pushed a commit that referenced this issue Apr 30, 2024
This fixes a bug in the API, where dereferencing caused
Value.Dereference to be too eager.

This changes test in elimination.txtar. The results are a bit
better, but still wrong, so it seems. So no changes in the
todos.

The main change is that Vertex.lookup no longer
fully dereferences. Dereferencing is now done in a bespoke
manner at the call sites of lookup.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I59f791e78213c3cdacdb8ad3b6ba829a73d2d6ca
cueckoo pushed a commit that referenced this issue Apr 30, 2024
The new evaluator computes closedness quite
differently from the old one. This CL adapts the API to
use the new data.

Note that the data the new evaluator generates is
considerably more convenient. That is why the logic
is quite a bit simpler. The logic could probably be simplified
more.

Also note that HasEllipsis seems to be not computed
correclty entirely. Although it seems that many tests
improve if we add the check to isClosed or
IsClosedStruct, there are some cases where this causes
errors. This seems to be the case with one of the tests
in TestAllows. As this only manifests itself when structure
sharing is disabled, we just mark this test as todo and
leave the investigation for later.

Issue #3060
Issue #543
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I98e8c25e0680674e2aaa9f743a49b39920d7b266
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194080
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue Apr 30, 2024
Now we have structure sharing, we need to ensure that
Vertex values are dereferenced properly.

Issue #3060
Issue #2884
Issue #2854

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Ied35aa7f7f08205bbdb54415d78e78f1b83c8b62
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194081
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
cueckoo pushed a commit that referenced this issue May 1, 2024
Recent changes were dereferencing was introduced elsewhere
make this use unnecessary.

Keep this in a separate CL to allow tracking possible bugs
this introduces.

Issue #2884
Issue #2854

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Iffbbbb3bef513205a0f6a29571bc6c6a37692bb1
cueckoo pushed a commit that referenced this issue May 1, 2024
This fixes a bug in the API, where dereferencing caused
Value.Dereference to be too eager.

This changes test in elimination.txtar. The results are a bit
better, but still wrong, so it seems. So no changes in the
todos.

The main change is that Vertex.lookup no longer
fully dereferences. Dereferencing is now done in a bespoke
manner at the call sites of lookup.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I59f791e78213c3cdacdb8ad3b6ba829a73d2d6ca
cueckoo pushed a commit that referenced this issue May 1, 2024
Recent changes were dereferencing was introduced elsewhere
make this use unnecessary.

Keep this in a separate CL to allow tracking possible bugs
this introduces.

Issue #2884
Issue #2854

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Iffbbbb3bef513205a0f6a29571bc6c6a37692bb1
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194088
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
cueckoo pushed a commit that referenced this issue May 1, 2024
This fixes a bug in the API, where dereferencing caused
Value.Dereference to be too eager.

This changes test in elimination.txtar. The results are a bit
better, but still wrong, so it seems. So no changes in the
todos.

The main change is that Vertex.lookup no longer
fully dereferences. Dereferencing is now done in a bespoke
manner at the call sites of lookup.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I59f791e78213c3cdacdb8ad3b6ba829a73d2d6ca
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194104
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue May 2, 2024
To reduce the otherwise large number of diffs,
we filter the "(and X more errors)" strings from error
messages.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I47c140f04dcbd78a2cd22fc7ca074f4e323dc843
cueckoo pushed a commit that referenced this issue May 3, 2024
To reduce the otherwise large number of diffs,
we filter the "(and X more errors)" strings from error
messages.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I47c140f04dcbd78a2cd22fc7ca074f4e323dc843
cueckoo pushed a commit that referenced this issue May 3, 2024
To reduce the otherwise large number of diffs,
we filter the "(and X more errors)" strings from error
messages.

Issue #3060
Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I47c140f04dcbd78a2cd22fc7ca074f4e323dc843
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194196
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
cueckoo pushed a commit that referenced this issue May 7, 2024
Needed to unwrap ConjunctGroup. Although the evaluator would
correctly unwrap the ConjunctGroup, it would reprocess the
Comprehension, resulting in different semantics.

This code ensures the Comprehension is unwrapped before
evaluating the let.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I76c10e38dc9ebe244cb6f067f3b26ad95e0efbbb
cueckoo pushed a commit that referenced this issue May 7, 2024
Needed to unwrap ConjunctGroup. Although the evaluator would
correctly unwrap the ConjunctGroup, it would reprocess the
Comprehension, resulting in different semantics.

This code ensures the Comprehension is unwrapped before
evaluating the let.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I76c10e38dc9ebe244cb6f067f3b26ad95e0efbbb
cueckoo pushed a commit that referenced this issue May 7, 2024
This does not fix any tests, but it seems like a
safe thing to do, as this was the source of
various bugs.

Also, ultimately, we probably want to move back to
a real adt again, in which case all values should
be accessible only through methods.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: If5c0a9d11450b8d4b38c50f9be52edab282ccc95
cueckoo pushed a commit that referenced this issue May 7, 2024
Needed to unwrap ConjunctGroup. Although the evaluator would
correctly unwrap the ConjunctGroup, it would reprocess the
Comprehension, resulting in different semantics.

This code ensures the Comprehension is unwrapped before
evaluating the let.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I76c10e38dc9ebe244cb6f067f3b26ad95e0efbbb
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194415
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
cueckoo pushed a commit that referenced this issue May 8, 2024
This does not fix any tests, but it seems like a
safe thing to do, as this was the source of
various bugs.

Also, ultimately, we probably want to move back to
a real adt again, in which case all values should
be accessible only through methods.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: If5c0a9d11450b8d4b38c50f9be52edab282ccc95
cueckoo pushed a commit that referenced this issue May 8, 2024
This causes some more ConjunctGroup unwrapping,
which benefits performance.

This also fixes a let-related bug in export.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I36012f66c1f1930d75e552286f0af5fb3aab3523
cueckoo pushed a commit that referenced this issue May 8, 2024
Do some more ConjunctGroup unwrapping.

This benefits performance and also fixes a
let-related bug in export.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I36012f66c1f1930d75e552286f0af5fb3aab3523
cueckoo pushed a commit that referenced this issue May 8, 2024
Do some more ConjunctGroup unwrapping.

This benefits performance and also fixes a
let-related bug in export.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I36012f66c1f1930d75e552286f0af5fb3aab3523
cueckoo pushed a commit that referenced this issue May 8, 2024
This does not seem to change anything, but it seems
that this is strictly a better thing to do and could prevent
bugs down the line.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I3b3673be258fd1d0ddfe7788531fbde9e170cf15
cueckoo pushed a commit that referenced this issue May 8, 2024
This does not fix any tests, but it seems like a
safe thing to do, as this was the source of
various bugs.

Also, ultimately, we probably want to move back to
a real adt again, in which case all values should
be accessible only through methods.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: If5c0a9d11450b8d4b38c50f9be52edab282ccc95
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194418
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue May 8, 2024
Do some more ConjunctGroup unwrapping.

This benefits performance and also fixes a
let-related bug in export.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I36012f66c1f1930d75e552286f0af5fb3aab3523
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194439
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
cueckoo pushed a commit that referenced this issue May 8, 2024
This does not seem to change anything, but it seems
that this is strictly a better thing to do and could prevent
bugs down the line.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I3b3673be258fd1d0ddfe7788531fbde9e170cf15
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194443
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
cueckoo pushed a commit that referenced this issue May 8, 2024
When iterating over arcs, one now has to dereference
the value to use it. The CUE API does this, but since
the test used the low-level API, it now needs to be done
manually.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Idda917c057013619db8cd37a182f41a6f0765571
cueckoo pushed a commit that referenced this issue May 13, 2024
When iterating over arcs, one now has to dereference
the value to use it. The CUE API does this, but since
the test used the low-level API, it now needs to be done
manually.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Idda917c057013619db8cd37a182f41a6f0765571
cueckoo pushed a commit that referenced this issue May 13, 2024
In a previous fix we posponed the dereferencing of
a value, because we needed the non-dereferenced value
of the ArcType.

As it turns out, we also need the non-dereferenced value
for the docs and attributes. This change fixes that.

Note that the test has some modifications for a debug
testing. We leave this in for convenience down the line.
We leave the snippet itself to get an idea of the reducer
that was used to fix the code.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I59c97bfdb53918cd83b88be23a3a4bc5391fdb6f
cueckoo pushed a commit that referenced this issue May 13, 2024
When iterating over arcs, one now has to dereference
the value to use it. The CUE API does this, but since
the test used the low-level API, it now needs to be done
manually.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: Idda917c057013619db8cd37a182f41a6f0765571
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194465
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
cueckoo pushed a commit that referenced this issue May 13, 2024
In a previous fix we posponed the dereferencing of
a value, because we needed the non-dereferenced value
of the ArcType.

As it turns out, we also need the non-dereferenced value
for the docs and attributes. This change fixes that.

Note that the test has some modifications for a debug
testing. We leave this in for convenience down the line.
We leave the snippet itself to get an idea of the reducer
that was used to fix the code.

Issue #2884

Signed-off-by: Marcel van Lohuizen <mpvl@gmail.com>
Change-Id: I59c97bfdb53918cd83b88be23a3a4bc5391fdb6f
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1194651
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
evaluator FeatureRequest New feature or request
Projects
Status: In progress
Development

No branches or pull requests

3 participants