Version v0.15.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
Things got away from me. This release has more features and fixes than we usually let pile up in a patch release. I’ve spent a good deal of time over the last month in the hospital with my son and PR notifications just kept pouring in!
Most of the substantive features and fixes again come from Didier Willis. This release includes a whole bunch of his work on math feature support fleshing out the MathML compatibility and correcting various math layout issues. It also his work updating hyphenation support for a number of languages and adding support for many more, mostly adapted from TeX hyphenation libraries. He also normalized some inconsistencies in the AST generated by the SIL and XML readers and fixed line layout in the verbatim package. His work towards CSL support is still pending my bandwidth to review in the bibliography project.
Additionally this release should be a bit more flexible in working with 3rd party modules. Notably we've accommodated some Lua limitations on macOS and Homebrew installations should be more versatile now. For Docker workflows, the SILE-provided LuaRocks should be visible to the host system as well.
Behind the scenes some minor features provided by vendored Lua libraries have been ported to Rust instead. This shouldn't even be noticeable to end users at this point, but serves as a proof of concept for implementing other internals in Rust while still bridging seamlessly to Lua. Many issues with building static binaries with embedded resources were resolved and build conflicts with ICU 76.1 resolved. Passing the class options via a CLI flag is again parsed correctly. Finally a few error messages and warnings have been cleaned up to be more readable and perspicuous.
New Features
- build: Add --with-vendored-luarocks=dir for use in distros with pseudo-system path handling (e93f072)
- cli: Catch missing required arguments at parse time (84f0d78)
- cli: Mimic Lua VM's
;;
to extend not replace the default package paths (bb47f21) - core: Add px unit as 0.75pt as per CSS3 (59f4bfd)
- core: Add separate crate to enable exporting interfaces to Lua (3a95a48)
- core: Extend SU.collatedSort for complex table sorting (3854be8)
- docker: Splice SILE's vendored rocks tree into system LuaRocks (548f426)
- languages: Add Albanian (sq) basic support (a1eedfc)
- languages: Add Belarusian (be) basic support (084f81d)
- languages: Add bibliography localizations for Swedish (#2125) (17371f3)
- languages: Add bibliography localizations for Turkish (84f15e9)
- languages: Add Church Slavonic (cu) basic support (01bead5)
- languages: Add Coptic (cop) basic support (e25b806)
- languages: Add Friulan (fur) basic support (4b88d91)
- languages: Add Galician (gl) basic support (b5116ed)
- languages: Add Interlingua (ia) basic support (6f920e6)
- languages: Add Kurmanji (kmr) basic support (c700786)
- languages: Add Macedonian (mk) basic support (c4ef9e9)
- languages: Add Occitan (oc) basic support (4610122)
- languages: Add Pāli (pi) basic support (13c2531)
- languages: Add Telugu (te) basic support (237d06d)
- languages: Add Upper Sorbian (hsb) basic support (51ac4f8), closes #1994
- math: Add mathcal, mathbb and similar commands in TeX-like math (c867d60)
- math: Add more TeX-like math commands behaving as big operators (ac9337e)
- math: Support a TeX math like text command (518e497)
- math: Support MathML beveled fractions (567ac54)
- math: Support MathML maction (basic) and mstyle (partial) (0df93b1)
- math: Support MathML movablelimits attribute (92c678a)
- math: Support MathML mpadded and refactor TeX-like phantoms (d579096)
- math: Support MathML mphantom and TeX-like phantom, hphantom, vphantom (46e5954)
- math: Support MathML mroot element (88ebff7)
- math: Support MathML mtext and ms elements (3023b93)
- math: Support mathvariant on special extra greek characters (6f379da)
- math: Support square roots (7efd24d)
- math: Support TeX-like math limits (eb402c5)
- rusile: Enable embedding of Rusile module (693d7d4)
Bug Fixes
-
build: Correct regression in v0.15.5 in generating embedded files list (dae2f7f)
-
build: Smooth out build on ICU 76.1 per Homebrew report (8390534), closes #2152
-
cli: Correct return value handling when process() doesn't lift weight (fb6b866)
-
cli: Fix handling of --option flag in Rust CLI (a77170e)
-
core: Correct module load paths when building in developer mode (4fbb6c0)
-
docker: Setup system locales in containers where it actually counts, not before (55a4ba3)
-
inputters: SIL commands and environments must generate the same syntax tree (4854992)
-
languages: Add missing hyphenation patterns in polytonic Greek (42d14dd)
-
math: Add missing MathML mathvariant mappings (803d699)
-
math: Avoid page breaks before display math equations (19fd61f), closes #2160
-
math: Correct math greek symbols and their var-alternate (6346a2d)
-
math: Correct sub/superscript position for subformulas vs. symbols (6827eb9), closes #2122
-
math: Default table row/column spacing must depend on the math font size (9ce5271)
-
math: Empty mrow's in munderover should not affect the baseline (6f67be5)
-
math: Fractions must have padding to avoid visual confusion (1c009c7)
-
math: Handle LaTeX-like math top accent commands correctly (f4c513a)
-
math: Honor stretchy attribute on MathML mo elements (bde46cd)
-
math: Paired open/close atoms shall be forced in a mrow in TeX-like math (4bbeaa6)
-
math: Stretchy symbols should work on large content (workaround) (589c058)
-
math: Support basic operator stretching along the inline axis (b6e054e)
-
math: Support linethickness attribute on MathML mfrac (e0559e8)
-
math: Top-level math element must behave as an (horizontally stacked) mrow (1f1a1a0), closes #1293
-
math: Wrong condition on moveable limits (workaround) (19906b9)
-
math: Wrong vertical alignment of integral signs (a42181f)
-
packages: Ensure package dependency verbatim is loaded when using autodoc (3a0ef46)
-
packages: Honor margins and base line skips in verbatim mode (58f65d5)
-
shapers: Measure a character should also return its depth (e243b2f)
-
typesetters: Obey blank lines in verbatim-like context (94cfe06)
-
utilities: Fixup AST debugger to handle anonymous content (c50dd07)
-
utilities: Normalize formatting of messages, warnings, and errors (a47b8f3)