Skip to content

feat: support field-specific binary constraint files #1480

@DavePearce

Description

@DavePearce

Summary

The move to small fields is placing greater pressure on the compilation pipeline, due to the amount of work being done optimising larger numbers of constraints arising from small fields (e.g. in the branch table optimiser). This in turn is impacting the time needed for testing, especially when every test requires a full compilation step (e.g. as currently done on the tracer). One obvious solution to this would be to support field-specific binary constraint files, such that the majority of compilation work is done during the initial build.

Challenges

There are quite a few challenges in supporting field specific constraint files. Some notes:

  • (Encoding/Decoding). Currently, constraints are encoded / decoded using a manual process. It would probably better to switch over to full gob encoding here to simplify the stack. However, the downside is that it might make the bin files non-deterministic.
  • (Trace Propagation). Currently, trace propagation operates before trace splitting arises. However, in a field-specific setting, this would need to happen after splitting.

Approach

Some suggested steps:

  • [] Switch encoding over to gob. This should make life easier. Need to check that bin files remain deterministic.
  • [] Support SchemaStack.Clone() and check this works by introducing it into the testing framework. This will ensure encoding is working at all levels.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions