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)
Version v0.14.4 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
Today we have a small rollup of fixes and improvements.
Didier Willis overhauled the counters packages as well as fixed up bugs in several other packages.
The default center of rotation has been changed to give a more expected result.
Text casing functions are accessible again from the Lua side of things, changing masters during a page output doesn't break page breaking, and using the twoside package doesn't force the use of mirroring.
Olivier Nicole also stepped in to fixup some math bugs.
Also thanks to Jeremy Steward and Sandra Snan for pointing out and fixing small issues in our documentation.
Features
- packages: Add boolean noleadingzeros option to counter formatter (e4f8133)
- packages: Add new command \set-multilevel-counter (11578a8)
Bug Fixes
- classes: Always break out of hmode before processing \chapter headings (0c44d8e)
- core: A typo in a variable prevents using -u with a class (b8f5c40), closes #1569
- languages: Make 'und' an exception to language name canonicalization (52e9b79)
- math: Fix insertion order of MathML children (738e9e6)
- packages: Account for depth when calculating rotation center (289dd2a)
- packages: Avoid forcing mirrored masters in twoside package (#1562) (8cdf6ed)
- packages: Combine
\unichar
'ed chars with same font only (91a8d40)
- packages: Correct rotation origin calculation back to pre v0.10.0 (3521936)
- packages: Don't inhibit page breaking after switching masters mid-page (6b20f73)
- packages: Make sure PDF initialized before rotate package directly calls it (449b2a6)
- packages: Rework simple and multilevel counters (1e6e91a)
- packages: Textcase package name typo preventing using methods from code (7f68766), closes #1568
Reverts
Version v0.14.3 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 addresses a few pain points discovered using the v0.14 series in production.
For 3rd party package developers, it's now easier to find non-Lua resources you installed along with your package.
Among several contributions from Didier Willis, the output backend now returns useful information about images it embeds directly.
The same work also allows specific pages of PDFs to to be emdeded as images, not just the first page.
He also helped refactor existing interfaces to make them easier to extend, such as the table of contents package.
A long standing issue with Turkish hyphenation has been addressed, eliminating the need for preprocessing or other workarounds.
More long standing issues with the book class and chapter opening spreads have been addressed.
Some priority and interactions between new CLI flags has been worked out.
A few more misc bugs were also squished and relevant tests added.
Features
- languages: Handle hyphenation of inter-word apostrophes in Turkish (50ae936)
- packages: Add \open-spread function with more features than \open-double-page (c2ba579)
- packages: Add ability to select a page in PDF images (a477d94)
- packages: Allow for customized content on otherwise blank filler pages (5ae97bf)
- packages: Provide base directory to packages (#1529) (f9ae994)
- utilities: Return image resolution with libtexpdf backend (a9c11d3)
Bug Fixes
- cli: Actually apply cli provided class options (505919e)
- cli: Allow CLI option to override document specified class (5232ce8)
- nodes: Correct calculating width of postbreak discretionaries (ea7912c)
- nodes: Work around discressionaries being output when not wanted (c7dc439)
- packages: Fix over-aggressive eject in \open-double-page (5620556)
- packages: Homogenize image width and height as measurements (b91cfbb), closes #1506
- packages: Make sure PDF initialized before PDF package does anything (#1550) (ebc3748)
- packages: Resolve src= relative to document for SVG images (b55fc98), closes #1532
Reverts