theleagueof / fontship

A font development toolkit and collaborative work flow.
GNU General Public License v3.0
98 stars 7 forks source link

Move more tooling to Rust #111

Closed alerque closed 4 years ago

alerque commented 4 years ago

Using Make to do boilerplate runtime checks is really inefficient. Doing the same work in Rust and setting environment variables instead is two orders of magnitude faster. Part of that has to do with GNU Make parsing the input files 3 times before it even starts to do work, so all the runtime setup gets run multiple times when the values have no chance to change.

alerque commented 4 years ago

Make's job manager is great once it starts actually building things, but the outlandish gibberish I have it doing before it gets there just trying to detect the stage its working on is horribly inefficient. Just moving a few things out of make into the Rust CLI dropped instantiation time for Libertinus from 5 seconds fo 0.7, and Raleway from 12 seconds to 5.

This is just a start. The next step is all the $(shell ...) calls that call Python to do junk. Since this seems to be a stopping point where everything works I think I'll merge before I get into interfacing with Python.