Skip to content

Performance: incremental Evaluation #2855

@myitcv

Description

@myitcv

Normally, a CUE program is evaluated in its entirety. Some applications, however, such as tools/flow can benefit from incremental evaluation.

The tools/flow package provides a low-level workflow manager based on a CUE configurations. It forms the basis of cue cmd, which provides a cmd/cue-based mechanism for declaring and executing such workflows.

Currently, CUE needs to reevaluate the entire configuration when a cue cmd or tools/flow task returns some new data to the workflow, despite the new data only affecting a (small) specific part of the configuration.

With incremental evaluation, we instead cycle through evaluating the tasks in a configuration, augmenting it with the data returned, but only re-evaluating the bits that have changed.

A similar situation exists for the CUE LSP implementation when the user is making changes to a file as part of a wider configuration: the LSP server needs to minimally re-evaluate to configuration to ensure that diagnostics are responses for code completions are timely.

This performance sub-issue captures details and narrative specific to incremental evaluation-related performance issues. We will post updates and commentary related to this topic below.

The umbrella performance issue captures higher-level performance updates.

Existing closedness-related bug reports/issues

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions