Restore fine-grained glyph work dependencies #380
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
#359 changed BE glyph work from depending on only the IR glyphs used to all IR glyphs. This forces the can run check to take a slow path (table scan) due to use of Access::Custom and inhibits concurrent execution of FE and BE glyphs.
This PR late-binds dependencies for BE glyph work. Initially access unknown - never runnable - is used and then, once the corresponding IR glyph is done, a set of the specific dependencies is used. This should be faster to evaluate runnable on and re-enable concurrent FE/BE glyph work executions.
Intended to partially address #369.
#369 doesn't offer complete steps to reproduce but it appears to be roughly
time fontc GS designspace
. My tests and results follow (some noise from cli omitted, measured on an M1 Mac):Oswald 2.415s => 1.302s
Fixes #369 per #380 (comment)