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.
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:
gobencoding here to simplify the stack. However, the downside is that it might make thebinfiles non-deterministic.Approach
Some suggested steps:
gob. This should make life easier. Need to check thatbinfiles remain deterministic.SchemaStack.Clone()and check this works by introducing it into the testing framework. This will ensure encoding is working at all levels.