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.
The 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.
Features
- build: Allow easy skip of font checks with FCMATCH=true (5c0cef6)
Bug Fixes
-
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)
Version v0.14.6 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
This release has tons of fixes and even a few features, but perhaps the most interesting bit to end users might just be the documentation.
Thanks to Jonny Heggheim, official SILE packages are in the works for Fedora.
The procedure for installing them via COPR is documented and will be updated when they land in default repositories.
Also Fredrick Brennan added some useful notes about installing 3rd-party packages.
This is really important because very useful actions like typesetting Markdown are best accomplished with external packages.
Anyone working with the source code for SILE itself should note the build system has been split so only run time dependencies are checked at configure time by default.
This means no-change is needed for distro packagers and end users that are just wishing to install and move on.
However checking for dependencies needed in order to develop SILE itself (including running tests) now requires different configuration.
Using --enable-developer
should be added as a go-to configure option for anyone hacking or wishing to contribute the to SILE sources.
Also of interest to developers, using nix develop
should now be a lot more seamless as far as providing a ready-to-use environment.
Didier Willis has rebuilt the formatNumber()
utility function using ICU.
This increases language support from a handful of manually implemented ones to almost complete CLDR coverage.
In the process a new utility function collatedSort()
was added to sort Lua data with locale aware collation.
He also fixed a number of little typsetter bugs and overhauled some more documentation.
First-time contributer raphCode submitted a fix for calling citation keys in the bibtex package.
Debug output is now both faster and more robust since it can't crass the typesetter.
When errors are encountered, location reports for where in the document an error was triggered are more accurate.
Bundled in this release are also a batch of other small bug fixes to the typesetter, page builder, and shaper.
Features
- build: Add ./configure --enable-developer to ease setup for SILE developers (e8a56ae)
- core: Add SU.collatedSort for language-dependent table sorting with collation (ea7446d)
- core: SU.formatNumber has more options and language support (ed0db29)
- packages: Add package loaded that can later be used to track package dependencies (d48633a)
- packages: Code block environment and raw handler for autodoc (7661330)
Bug Fixes
-
classes: Apply page/framebreak in hmode but warn the user (809cbba)
-
cli: Deduplicate Lua module loading paths when adding segments (e0f75b1)
-
cli: Escape possible path character in replacement (0161f9a)
-
cli: Make user system root not added to resource search path (4305850)
-
debug: Correct filename in debug info after includes (#1652) (4990ecc)
-
debug: Fix pagebuilder debug functions in absence of luastd (ab46bf7)
-
debug: Fix typesetter:debugState() in absence of luastd (42f6b0b)
-
inputters: Correct Lua inputter AST expectations to match others (6177b0b)
-
inputters: Work around SIL parser returning tags as part of content (ef4efb7)
-
languages: Replace custom EN/TR ordinals with ICU (82b6709)
-
nodes: Ignore empty node properties when debugging breaks (f034e05)
-
packages: Correct content position reporting in inputfilter (bb53d77)
-
packages: Don't discard grid makup vboxes at top of new pages (22b899c)
-
packages: Fix \cite{key} in bibtex package (#1655) (648bb5d)
-
packages: Use casting to restore shaper state after fallbacks (351fc68)
-
shapers: Apply tracking settings even in font-fallback shaper (55f0c9c)
-
tooling: Exempt LuaJIT from external bit32 library requirement (#1654) (d094f1b)
-
typesetter: Ensure being in horizontal mode after pushback (a82b604)
-
utilities: Correct logic in AST debugging output, also protect (97c82f0)
-
utilities: Protect debug functions so they can't crash SILE (319b96a)
Version v0.14.5 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
We're just squishing bugs today and making the manual a little neater.
Working with STDIN streams should be a bit more robust now as the content type detection isn't so picky about whitespace and isn't so prone to false positive detections.
Document file restrictions have been relaxed a little too allowing comments and whitespace before the leading document tag.
Package developers should have a little bit easier time with in the event their package is loaded twice.
Also a number of small typesetting issues in the user manual were cleaned up by Didier Willis.
Bug Fixes
-
inputters: Correct false positive detection of STDIN as Lua content (d54946b)
-
inputters: Don't duplicate passthrough content in AST (07c8e87)
-
inputters: Permit content outside of the document note, e.g. comments or blanks (#1596) (f1a508a)
-
inputters: Relax SIL format sniffing to allow valid syntax (43fc4bc)
-
languages: Remove superfluous line (848b91f)
-
languages: Tidy up variable scope in languages/unicode.lua (78b453d), closes #699
-
measurements: Allow redefinition of existing units (#1608) (8d81018)
-
packages: Ensure a page switch does not break boustrophedon (#1615) (64abaf9)