googlefonts/oxidize

Add high performance, correct font compiler requirements document

chrissimpkins opened this issue · 4 comments

Add a Markdown document that outlines what the requirements for a high performance, correct compiler are, why, and what the impact of having or not having a fast compiler are as a starting point.

Address the following in the document:

  • does it need to be developed in Rust?
  • does it need to be developed as a new compiler from scratch, rather than an incremental transition of the existing Py compiler pipeline? If incremental vs from scratch is believed to be key this should be explicit in the document
  • speak to how much impact for how much faster. Whats the smallest speedup that has value and when does the value of speedup diminish in value? - for example, perhaps a 10% speedup doesn't help much, 2x would be very nice, 10x might be about where the value peaks (then we dont' take a coffee break every compile), and maybe 100x is sort of nice but doesnt' matter, 10x was good enough.
  • when do we need it?

"does it need to be developed in Rust?" - I would actually specifically NOT address this or any specific solution.

I suggest initially just focus on what we need (a faster compiler), why (impact of not having it or of having various levels of speedup), and what the current situation is (current toolchain, key limitations, etc). Also perhaps when we need it, or what the impact of having it when would be.

dfrg commented

In addition to these broad requirements, it might be worth adding some concrete detail on the shapes of the desired inputs to the compiler and how these might diverge for subsetting. The focus thus far has been on raw serialization and my suspicion is that such a thing may not be desirable and makes it difficult to nail down a useful API.

@simoncozens provided https://docs.google.com/document/d/1vE91ZyYtJvwYYWCQYrNgB6Zyv7dgHJ0oW5sNIZWqInE/edit as a reference. It suggests a one to two order speedup but doesn't speak to how much speedup is actually needed or why.