googlefonts / googlefonts/fontc
backend feature compile can be a long pole
- Dominant language
- Rust
- Stars
- 193
- Forks
- 21
- Avg merge
- 1d 20h
- Merged PRs (30d)
- 60
Description
#443 reveals features can be the long pole. There are two non-exclusive options to improve this:
1. Make it faster
* We write fea for content (and soon marks) for fea-rs to parse; we could build some other form, e.g. the AST, directly
1. Make it parallel
* The more cores you have the more fea-rs pops out as long pole (ref #443)
* Could we break up the compile, for example process GSUB and GPOS separately?
* Requires splitting up things like `feature foo { pos a b -5; sub x by y; }` (courtesy of @cmyr)
* Some parts, e.g. classes, are common
We should start by profiling. flamegraphs of the overall build are fairly noisy, perhaps we can rig fea-rs to be run on just the debug feature file?
```shell
$ rm -rf build/ && cargo run -p fontc -- --source ../OswaldFont/sources/Oswald.glyphs --emit-debug
# produces build/debug/features.fea which is the complete combined feature file
```
Contributor guide
No contributing guide indexed for this repository
Assessment
This issue has not been assessed yet.