Version v0.14.7 of SILE has been released and is available for download!
See the included CHANGELOG.md or review the commit history for more explicit details.
Summary of Improvements
Some of the changes that came out in v0.14.6 were … less than optimal.
The build system changes were for a good purpose, but made life a bit difficult for some distro packagers.
I also managed to introduce a parsing regression.
It also came to light that a previous API deprecation didn't come with the usual warning and shim for transitional support.
This release is notable for distribution packagers for two reasons.
First, there is now an easier way to skip the font dependency check at build time.
Second, this release is the first time using LuaJIT is at 100% parity with regular Lua.
If your distro has LuaJIT available there is now little reason not to make the switch.¹
The speed increase is substantial, especially for large documents.²
While I was tinkering with smoothing out the build and fixing regressions a couple other fixes landed.
Khaled Hosny tackled a long standing issue with the font loader.
opsz axis can now be used as expected so fonts with OpentType FeatureVariations are usable in SILE.
raphCode also spotted and fixed some outdated code in the manual.
As far as SILE core and all its Lua dependencies are concerned there is no downside.
Previously some of the debug and tracing features did not give as much useful information when using LuaJIT.
Now the only caveat is related to end users and their documents.
If people write custom Lua code in their projects and/or use other 3rd party Lua libraries they will need to consider interpreter support.
As a rough comparison on my desktop machine, rendering the 115 page SILE manual takes about 48 seconds with Lua 5.4, 22 seconds with LuaJIT, and 17 seconds with OpenResty.
- build: Allow easy skip of font checks with FCMATCH=true (5c0cef6)
build: Only check tooling to bulid manual if really needed (e166e00)
inputters: Rework SIL input to handle both junk outside of document tag and fragments (4c51c55)
outputters: Patch up error message when failing to load font (#1671) (771d87f)
shaper: Correct font-variants using opsz axis (#1666) (a929583)
shaper: Respect variations when shaping (#1265) (#1662) (f50ae77)
tooling: Keep all Lua packages in same env for Nix (8fc8670)
utilities: Tweak breadcrumbs to work under LuaJIT limitations (32f744c)