The SILE Typesetter
  • Home
  • What is SILE?
  • Examples
    • Global Scripts
    • Packages
  • Manual (PDF)
  • Download
GitHub

SILE v0.10.12 Is Released

10 Oct 2020 — Caleb Maclennan

Version v0.10.12 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 fixes just two bugs. The simpler of the stops custom styles in verbatim blocks. Much more urgently, a backend fix correctly accounts for offsets calculated during the shaping process and stops resetting the PDF cursor position. This issue primarily broke Arabic, but typesetting any fonts with cursive positioning or mark placement rules were affected.

Bug Fixes

  • backends: _drawString should take an offset (#1079) (594ae03), closes #1078

  • packages: \verbatim:font can process text (#1076) (eb4fb1a)

SILE v0.10.11 Is Released

25 Sep 2020 — Caleb Maclennan

Version v0.10.11 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 supports versions of Lua Penlight newer than 1.8.0. Previous releases of Penlight have contained a long-standing bug in the class inheritance system that we were side-stepping with our own workaround. In one case our workaround was actually relying on a side-effect of said Penlight bug and never should have worked. With a proper fix finally implemented in Penlight, our workaround started to fail. This release includes an emergency patch so that SILE can be made to work on systems with the latest Penlight release. Future releases will likely remove our workarounds entirely and require a recent version of Penlight with the fixed class inheritance system.

Additionally, this is the first release that officially supports running SILE as a GitHub Action. You can now call SILE directly in CI workflows on your own projects.

Other cleanup work now allows classes to specify their own framesets without inheriting the default ones. This has no visible effect for most documents but it does make debugging framesets a lot easier because there aren’t a bunch of empty frames behind the scenes inherited from other classes.

With special thanks to contributions from Fredrick Brennan, SVG support is much improved in this release. Specifically, shapes with holes now actually render as holes. Also, thanks to Johannes Maibaum’s contributions and careful eye, many examples from the manual which had fallen behind or had typos now actually work as documented.

Features

  • actions: Add configuration file to run as GitHub Action (ee2d509)
  • backends: Modify setCursor() to handle relative movements (7caa9c8)
  • classes: Make it possible to not use parent class framesets (99b9f50)
  • cli: Add Lua interpreter info to --version (bf5210d)

Bug Fixes

  • backends: Properly switch between normal and debug fonts (b53896e)
  • classes: Identify triglot class as triglot not diglot (495654a)
  • classes: Make declareFrames() workable by passing ids (27b6b4a)
  • classes: Move class setup code into deferred class:init() (6f470d7)
  • core: Patch Penlight 1.9.0 compatibility issue (1eb4290)
  • packages: Allow Hanmen frame creation to use optional ID arg (7853d5a)
  • packages: Fix hole drawing from svg in PDF (6521fd0)
  • packages: Remove extra space in \code in url (b90cd37), closes #1056
  • tooling: Expand variables so fonts are known dependencies of tests (88ac888)

Performance Improvements

  • backends: Reuse variables instead of recalculating values (02cce40)

SILE v0.10.10 Is Released

14 Aug 2020 — Caleb Maclennan

Version v0.10.10 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 is the first to fully support LuaJIT. For systems with a LuaJIT interpreter available this brings a full 2× speed improvement to rendering your documents over standard Lua interpreters. This speed increase is not without downsides though. Most available JIT versions do not have full Lua debugging functionality built in, limiting the usefulness of some of SILE’s warning messages and especially the trace functionality. A LuaJIT build is probably what you want to use when working on content and re-rendering your documents over and over, but it may not be the best choice for doing development work, coding up your classes and functions, and so forth. To make the switch, add the configuration flag ./configure --with-luajit, then compile and install as usual. In the event you want to keep both versions around, it is actually possible to install both. SILE fully supports GNU Automake’s program name transformations, you can specify a prefix, suffix, or complete alternate name to install under. See ./configure --help for details, but --program-suffix=-luajit is one way to get a sile-luajit executable that could be used alongside sile.

A few functions have been renamed and their old versions deprecated. If any of your code calls outputter functions directly these calls will need to be modified to be uniformly serf-referential method calls (i.e. :method() instead of .method()). This makes the outputter API consistent between backends, but may be a breaking change for some. Several other functions have been renamed and their old names deprecated. For these warning messages will be thrown for now, and the next version series (0.11.x) will deprecate them entirely. The most notable rename is \include-svg-file is now just \svg. In addition to the rename you can now specify a desired size by width instead of only by height.

In smaller news a large number of small fixes now draw frame debugging lines in exactly the right place instead of next to the right place, mark PDF bookmark locations at the top of the current line instead of the bottom, draw rules in the correct writing and advance directions for RTL and BTT frames. Other fixes include keeping Japanese language and tate functions from taking over documents. The \center command now disables line indentation so content is centered as expected, and attempting to set indentation after the start of a paragraph will throw a useful warning.

Features

  • build: Detect and use luajit first (601dfc4)
  • build: Detect LuaJIT if explicitly configured to want it (c3e8089)
  • classes: Add warning to \noindent if called after input (f29b9d9)
  • packages: Allow scaling SVGs by width or height (44588b5)
  • settings: Add a way to reset single setting to defaults (f318cdf)
  • settings: Bring Lua settings.set to parity with \set (d73b08c)

Bug Fixes

  • classes: Reset parindent's inside \center command (7b62f74)

  • core: Always compare like-types so LuaJIT can run (c608090)

  • core: Don't read zero-length name table entries (bcd9a9e), closes #1015

  • examples: Properly center title in showoff document (55717fb)

  • frames: Discard content (usually whitespace) inside \pagetemplate (3b7085b)

  • frames: Draw frame debug lines exactly on frame lines (db92edc)

  • languages: Stop Japanese resetting global chapter post macro (836f199)

  • packages: Align pullquote ending mark with outside margin (8b808db)

  • packages: Draw rules in the writing direction (18bca68)

  • packages: Error if asked to add bogus dependencies (59e2b56)

  • packages: Fix indentation of second paragraph in pullquotes (a8525e5)

  • packages: List \include files in makedeps (bf670ab)

  • packages: Orient rules for all 8 directions (bc4a33a)

  • packages: Place PDF bookmarks at top of current line (ce30d83)

  • utilities: Use deterministic sort for sorted pairs (99e2b59)

SILE v0.10.9 Is Released

24 Jul 2020 — Caleb Maclennan

Version v0.10.9 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 is the first version of SILE to officially support Lua 5.4! If your OS or distro is migrating to the latest Lua, this release is for you. The changes in this Lua release are not very significant in relation to SILE, but it took a bit of time and effort for all the modules we use to be compatible. Additionally in this release how we handle bundling LuaRocks modules has changed. We no longer include the full source and prebuilt rocks in the source packages. For most platforms and installations this will not change anything at all, using --with-system-luarocks still skips anything to do with bundling and just requires the dependencies be available on the host system. This is used by all platforms to date that have SILE packages. For people building from source using the default configuration of --without-system-luarocks the bundling still happens using Luarocks to download and build all the required dependencies when you run make. Previously it copied the sources for your version of Lua out of the source package, but with 4 supported versions of Lua and many variation in how different platforms build them this was getting too cumbersome. LuaRocks does this job already, we just leverage it.

Still on the topic of packaging, a minor change is that make install will not install the PDF manual and examples by default, but if you add --with-manual and/or --with-examples it will not only install them, but it will install them to your platform’s default location for PDF documentation (previously they were just stuffed in alongside the SILE code, wherever that was). The PDF documentation directory is the same as for other documentation on most platforms, but it does go to the right place for those system that have special handling for PDF documentation.

As for the typesetter itself, if you ever used inputfilter() functions and your content randomly came out in the wrong order, we fixed that non-determinism. Additionally Unicode combining diacritic marks can be now be added with \unichar{}. If you’re trying to figure out what is what on a page, --debug hboxes also works again after being broken some time back.

For developers, adding multiple debug flags from the CLI is easier than ever, and fewer things need to be rebuilt from scratch every time you touch something in SILE’s source code.

Features

  • build: Install manual to $(pdfdir) if configure --with-manual (ee33ff7)
  • core: Allow adding --debug flag multiple times (9ac2838)

Bug Fixes

  • build: Correct typo in dependencies for building docs (ad548a5)

  • build: Ship blank lua_modules install list in source packages (7939970)

  • build: Touch Makefile.in to avoid automake errors (e7f4627)

  • build: Work around src/libtexpdf subdirs using side-effects (26d6769)

  • core: Iterate on sequential data with ipairs() or SU.sortedpairs() (9db0a28)

  • debug: Fix math in hbox debugging (6c0029d)

  • packages: Combine unichar output with existing unshaped node (712bc92)

  • packages: Use sortedpairs to avoid non-determinism (a28ef06)

  • utilities: Add sorted pairs function (5aad397)

SILE v0.10.8 Is Released

19 Jul 2020 — Caleb Maclennan

Version v0.10.8 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 the Docker builds which came out broken in the previous release. Some Lua modules shuffled to make way for Lua 5.4 support (which is almost ready, just waiting on one more upstream dependency). Additionally some build issues on BSD have been smoothed over.

Note I accidentally pushed this release tag along with a bad commit that was never supposed to be released. Hence the v0.10.8 tag was briefly attached to a different commit (but with no packages attached). I apologize for any inconvenience for any inconvenience this caused.

Features

  • build: Output hints about how to compile from repo snapshots (596cd9f)

Bug Fixes

  • build: Avoid possible race condition on first bulid (b937c95)
  • build: Use BSD compatible find syntax (c96683e)
  • build: Use BSD compatible touch syntax (25eb6fd)
  • docker: Make sure Lua modules installation works on the first pass (f0c3e26)

Performance Improvements

  • build: Save a ./configure cycle by bootstraping the version (2997d05)

Reverts

  • Revert "chore(build): Save a double-configure on first download/build" (ef56de4)

« Prev 1 2 3 4 5 6 7 8 9 10 Next »