Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package sile for openSUSE:Factory checked in 
at 2023-10-12 23:40:55
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sile (Old)
 and      /work/SRC/openSUSE:Factory/.sile.new.1807 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "sile"

Thu Oct 12 23:40:55 2023 rev:10 rq:1117057 version:0.14.12

Changes:
--------
--- /work/SRC/openSUSE:Factory/sile/sile.changes        2023-08-23 
14:59:45.786220646 +0200
+++ /work/SRC/openSUSE:Factory/.sile.new.1807/sile.changes      2023-10-12 
23:42:13.805160239 +0200
@@ -1,0 +2,14 @@
+Wed Oct 11 18:00:46 UTC 2023 - Gordon Leung <[email protected]>
+
+- Update to 0.14.12
+ * Features
+  - i18n: Add Portuguese localizations for bibtex package
+  - utilities: Add utility function for console messages without trace info
+ * Bug Fixes
+  - build: Make sure vendored luarocks isn't a phony target that runs 
repeatedly
+  - core: Allocate exactly what we use, not a guess with an extra just in case
+  - core: Correct usage of HarfBuzz when passing a filtered list of shapers
+  - core: Fixup class loader so cache is all Lua module specs
+  - packages: Don't warn on TOC content change if not actually used
+
+-------------------------------------------------------------------

Old:
----
  sile-0.14.11.tar.xz

New:
----
  sile-0.14.12.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sile.spec ++++++
--- /var/tmp/diff_new_pack.uyTN1h/_old  2023-10-12 23:42:14.337179497 +0200
+++ /var/tmp/diff_new_pack.uyTN1h/_new  2023-10-12 23:42:14.337179497 +0200
@@ -18,7 +18,7 @@
 
 %bcond_without  tests
 Name:           sile
-Version:        0.14.11
+Version:        0.14.12
 Release:        0
 Summary:        Simon’s Improved Layout Engine
 Group:          Productivity/Publishing

++++++ _service ++++++
--- /var/tmp/diff_new_pack.uyTN1h/_old  2023-10-12 23:42:14.381181089 +0200
+++ /var/tmp/diff_new_pack.uyTN1h/_new  2023-10-12 23:42:14.385181234 +0200
@@ -2,7 +2,7 @@
   <service mode="manual" name="download_url">
     <param name="protocol">https</param>
     <param name="host">github.com</param>
-    <param 
name="path">/sile-typesetter/sile/releases/download/v0.14.11/sile-0.14.11.tar.xz</param>
+    <param 
name="path">/sile-typesetter/sile/releases/download/v0.14.12/sile-0.14.12.tar.xz</param>
   </service>
 </services>
 

++++++ sile-0.14.11.tar.xz -> sile-0.14.12.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/.tarball-version 
new/sile-0.14.12/.tarball-version
--- old/sile-0.14.11/.tarball-version   2023-08-23 05:00:28.716576472 +0200
+++ new/sile-0.14.12/.tarball-version   2023-10-11 18:31:26.600356617 +0200
@@ -1 +1 @@
-0.14.11
\ No newline at end of file
+0.14.12
\ No newline at end of file
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/CHANGELOG.md 
new/sile-0.14.12/CHANGELOG.md
--- old/sile-0.14.11/CHANGELOG.md       2023-08-23 04:56:35.672209836 +0200
+++ new/sile-0.14.12/CHANGELOG.md       2023-10-11 18:27:29.356043345 +0200
@@ -2,6 +2,23 @@
 
 All notable changes to this project will be documented in this file. See 
[standard-version](https://github.com/conventional-changelog/standard-version) 
for commit guidelines.
 
+### 
[0.14.12](https://github.com/sile-typesetter/sile/compare/v0.14.11...v0.14.12) 
(2023-10-11)
+
+
+### Features
+
+* **i18n:** Add Portuguese localizations for bibtex package 
([#1859](https://github.com/sile-typesetter/sile/issues/1859)) 
([f716c35](https://github.com/sile-typesetter/sile/commit/f716c35109d36c7cb2118ab9c7c65227d9941e01))
+* **utilities:** Add utility function for console messages without trace info 
([18526ce](https://github.com/sile-typesetter/sile/commit/18526ce75eeb8deb12e9b232e727993409ed8e06))
+
+
+### Bug Fixes
+
+* **build:** Make sure vendored luarocks isn't a phony target that runs 
repeatedly 
([713434d](https://github.com/sile-typesetter/sile/commit/713434dadbc271299c8548dd2f2d4af57c1eec62))
+* **core:** Allocate exactly what we use, not a guess with an extra just in 
case 
([640ded0](https://github.com/sile-typesetter/sile/commit/640ded0a90e427124f555a2a48d263cde5300d7d))
+* **core:** Correct usage of HarfBuzz when passing a filtered list of shapers 
([f488643](https://github.com/sile-typesetter/sile/commit/f4886437d0ebf229db1c2779a8a324bf441efc1a))
+* **core:** Fixup class loader so cache is all Lua module specs 
([#1863](https://github.com/sile-typesetter/sile/issues/1863)) 
([7efff5b](https://github.com/sile-typesetter/sile/commit/7efff5b7e94f0c4897910c064ef842e6be2e4ab1))
+* **packages:** Don't warn on TOC content change if not actually used 
([87c443d](https://github.com/sile-typesetter/sile/commit/87c443d1571f571b595c3e32febdcb03129f5b9a))
+
 ### 
[0.14.11](https://github.com/sile-typesetter/sile/compare/v0.14.10...v0.14.11) 
(2023-08-23)
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/Makefile-luarocks 
new/sile-0.14.12/Makefile-luarocks
--- old/sile-0.14.11/Makefile-luarocks  2023-08-23 04:56:35.672209836 +0200
+++ new/sile-0.14.12/Makefile-luarocks  2023-10-11 18:27:29.356043345 +0200
@@ -4,16 +4,18 @@
 LUAMODLOCK := sile-dev-1.rockslock
 
 LOCALLUAROCKS := $(LUAROCKS) --tree lua_modules --lua-version $(LUA_VERSION)
-TMPFILE != mktemp
 genrockslock := $(LOCALLUAROCKS) $(LUAROCKSARGS) list --porcelain | $(AWK) 
'{print $$1 " " $$2}'
 rocksmatch := ( T=$$(mktemp); trap 'rm -f "$$T"' EXIT HUP TERM; 
$(genrockslock) > "$$T"; $(CMP) -s $(LUAMODLOCK) "$$T" )
 
-installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || echo lua_modules)
+LUAROCKSMANIFEST := lua_modules/lib/luarocks/rocks-$(LUA_VERSION)/manifest
 
-lua_modules: $(LUAMODSPEC) $(shell $(rocksmatch) || echo force)
+installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || echo $(LUAROCKSMANIFEST))
+
+$(LUAROCKSMANIFEST): $(LUAMODSPEC) $(shell $(rocksmatch) || echo force)
        $(LOCALLUAROCKS) $(LUAROCKSARGS) install --only-deps $<
+       touch $@
 
-$(LUAMODLOCK): lua_modules $(LUAMODSPEC)
+$(LUAMODLOCK): $(LUAROCKSMANIFEST) $(LUAMODSPEC)
        $(genrockslock) > $@
 else
 LUAMODLOCK :=
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/Makefile.am new/sile-0.14.12/Makefile.am
--- old/sile-0.14.11/Makefile.am        2023-08-23 04:56:35.672209836 +0200
+++ new/sile-0.14.12/Makefile.am        2023-10-11 18:27:29.356043345 +0200
@@ -228,14 +228,14 @@
 
 busted: $(SILE) $(addprefix .fonts/,$(TESTFONTFILES)) $(BUSTEDSPECS)
        set -f; IFS=';'
-if SYSTEM_LUAROCKS
-       packagecpath=(./{,core/}?.$(SHARED_LIB_EXT))
        packagepath=(./{,lua-libraries/}?{,/init}.lua)
-else
-       
packagecpath=(./{,core/,lua_modules/lib/lua/$(LUA_VERSION)/}?.$(SHARED_LIB_EXT))
-       
packagepath=(./{,lua_modules/share/lua/$(LUA_VERSION)/,lua-libraries/}?{,/init}.lua)
+       
packagecpath=(./{,core/,{libtexpdf,justenough}/.libs/}?.$(SHARED_LIB_EXT))
+if !SYSTEM_LUAROCKS
+       packagepath+=(./lua_modules/share/lua/$(LUA_VERSION)/?{,/init}.lua)
+       packagecpath+=(./lua_modules/lib/lua/$(LUA_VERSION)/?.$(SHARED_LIB_EXT))
 endif
-       $(LOCALTESTFONTS) $(BUSTED) --cpath="$${packagecpath[*]};;" 
--lpath="$${packagepath[*]};;" $(BUSTEDFLAGS) .
+# Note: use of --lua causes this to be passed back through a shell loosing one 
layer of quoting. Drop single quotes if removing.
+       $(LOCALFONTS) $(BUSTED) --lua=$(LUA) --lpath="'$${packagepath[*]};;'" 
--cpath="'$${packagecpath[*]};;'" $(BUSTEDFLAGS) .
 
 coverage: export SILE_COVERAGE=1
 coverage: BUSTEDFLAGS = -c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/Makefile.in new/sile-0.14.12/Makefile.in
--- old/sile-0.14.11/Makefile.in        2023-08-23 05:00:28.736577456 +0200
+++ new/sile-0.14.12/Makefile.in        2023-10-11 18:31:26.624358762 +0200
@@ -455,6 +455,7 @@
 @SYSTEM_LUAROCKS_FALSE@LOCALLUAROCKS := $(LUAROCKS) --tree lua_modules 
--lua-version $(LUA_VERSION)
 @SYSTEM_LUAROCKS_FALSE@genrockslock := $(LOCALLUAROCKS) $(LUAROCKSARGS) list 
--porcelain | $(AWK) '{print $$1 " " $$2}'
 @SYSTEM_LUAROCKS_FALSE@rocksmatch := ( T=$$(mktemp); trap 'rm -f "$$T"' EXIT 
HUP TERM; $(genrockslock) > "$$T"; $(CMP) -s $(LUAMODLOCK) "$$T" )
+@SYSTEM_LUAROCKS_FALSE@LUAROCKSMANIFEST := 
lua_modules/lib/luarocks/rocks-$(LUA_VERSION)/manifest
 
 # List of font files we _actually need_
 @FONT_DOWNLOAD_TOOLS_TRUE@DEFSFONTFILES = GentiumPlus-R.ttf GentiumPlus-I.ttf
@@ -1247,14 +1248,14 @@
 .SECONDEXPANSION:
 .DELETE_ON_ERROR:
 .PHONY: installrocks
-@SYSTEM_LUAROCKS_FALSE@TMPFILE != mktemp
 
-@SYSTEM_LUAROCKS_FALSE@installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || 
echo lua_modules)
+@SYSTEM_LUAROCKS_FALSE@installrocks: $(LUAMODLOCK) $(shell $(rocksmatch) || 
echo $(LUAROCKSMANIFEST))
 
-@SYSTEM_LUAROCKS_FALSE@lua_modules: $(LUAMODSPEC) $(shell $(rocksmatch) || 
echo force)
+@SYSTEM_LUAROCKS_FALSE@$(LUAROCKSMANIFEST): $(LUAMODSPEC) $(shell 
$(rocksmatch) || echo force)
 @SYSTEM_LUAROCKS_FALSE@        $(LOCALLUAROCKS) $(LUAROCKSARGS) install 
--only-deps $<
+@SYSTEM_LUAROCKS_FALSE@        touch $@
 
-@SYSTEM_LUAROCKS_FALSE@$(LUAMODLOCK): lua_modules $(LUAMODSPEC)
+@SYSTEM_LUAROCKS_FALSE@$(LUAMODLOCK): $(LUAROCKSMANIFEST) $(LUAMODSPEC)
 @SYSTEM_LUAROCKS_FALSE@        $(genrockslock) > $@
 
 @[email protected]: fonttooling
@@ -1510,11 +1511,12 @@
 
 @DEVELOPER_TRUE@busted: $(SILE) $(addprefix .fonts/,$(TESTFONTFILES)) 
$(BUSTEDSPECS)
 @DEVELOPER_TRUE@       set -f; IFS=';'
-@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_TRUE@ 
packagecpath=(./{,core/}?.$(SHARED_LIB_EXT))
-@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_TRUE@ 
packagepath=(./{,lua-libraries/}?{,/init}.lua)
-@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_FALSE@        
packagecpath=(./{,core/,lua_modules/lib/lua/$(LUA_VERSION)/}?.$(SHARED_LIB_EXT))
-@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_FALSE@        
packagepath=(./{,lua_modules/share/lua/$(LUA_VERSION)/,lua-libraries/}?{,/init}.lua)
-@DEVELOPER_TRUE@       $(LOCALTESTFONTS) $(BUSTED) 
--cpath="$${packagecpath[*]};;" --lpath="$${packagepath[*]};;" $(BUSTEDFLAGS) .
+@DEVELOPER_TRUE@       packagepath=(./{,lua-libraries/}?{,/init}.lua)
+@DEVELOPER_TRUE@       
packagecpath=(./{,core/,{libtexpdf,justenough}/.libs/}?.$(SHARED_LIB_EXT))
+@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_FALSE@        
packagepath+=(./lua_modules/share/lua/$(LUA_VERSION)/?{,/init}.lua)
+@DEVELOPER_TRUE@@SYSTEM_LUAROCKS_FALSE@        
packagecpath+=(./lua_modules/lib/lua/$(LUA_VERSION)/?.$(SHARED_LIB_EXT))
+# Note: use of --lua causes this to be passed back through a shell loosing one 
layer of quoting. Drop single quotes if removing.
+@DEVELOPER_TRUE@       $(LOCALFONTS) $(BUSTED) --lua=$(LUA) 
--lpath="'$${packagepath[*]};;'" --cpath="'$${packagecpath[*]};;'" 
$(BUSTEDFLAGS) .
 
 @DEVELOPER_TRUE@coverage: export SILE_COVERAGE=1
 @DEVELOPER_TRUE@coverage: BUSTEDFLAGS = -c
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/README.md new/sile-0.14.12/README.md
--- old/sile-0.14.11/README.md  2023-08-23 04:56:35.672209836 +0200
+++ new/sile-0.14.12/README.md  2023-10-11 18:27:29.356043345 +0200
@@ -65,9 +65,8 @@
 $ pacman -S sile
 ```
 
-The official package uses Lua 5.4.
-Alternatively, a package that uses LuaJIT may be built manually from the [Arch 
User Repository][aur] using [sile-luajit][aur-sile-luajit].
-A VCS package is also available as [sile-git][aur-sile-git] to build from the 
latest Git commit.
+The official package uses LuaJIT.
+If you install LuaRocks for use with SILE via `pacman`, use the `lua51-*` 
variants to match LuaJIT.
 
 #### Fedora
 
@@ -197,7 +196,7 @@
       export PKG_CONFIG_PATH="/usr/local/opt/icu4c/lib/pkgconfig"
 
 Optionally you may install the Lua libraries listed in the [rockspec][] to 
your system (using either your system's package manager or [luarocks][] 
(`luarocks install --only-deps sile-dev-1.rockspec`).
-By default all the required Lua libraries will be downloaded and bundled 
alongside the SILE the instalation.
+By default all the required Lua libraries will be downloaded and bundled 
alongside the SILE the installation.
 If you downloaded a source tarball these dependencies are included, if you are 
using a git clone of the source repository the build system will require 
`luarocks` to fetch them during build.
 Note that OpenSSL development headers will be required for one of the Lua 
modules to compile¹.
 If your system has all the required packages already you may add 
`--with-system-luarocks` to the `./configure` command to avoid bundling them.
@@ -330,8 +329,6 @@
 Please report bugs and send patches and pull requests at the [github 
repository][github].
 For questions and discussion, please join the [mailing list][list-en].
 
-日本語利用者は[メーリングリスト][list-ja]に参加してくだ
さい。
-
 ## License Terms
 
 SILE is distributed under the [MIT licence][license].
@@ -353,15 +350,12 @@
   [libtexpdf]: https://github.com/sile-typesetter/libtexpdf
   [arch-sile]: https://archlinux.org/packages/community/x86_64/sile/
   [aur]: https://wiki.archlinux.org/index.php/Arch_User_Repository
-  [aur-sile-luajit]: https://aur.archlinux.org/packages/sile-luajit/
-  [aur-sile-git]: https://aur.archlinux.org/packages/sile-git/
   [typesetting]: https://en.wikipedia.org/wiki/Typesetting
   [tex]: https://en.wikipedia.org/wiki/TeX
   [indesign]: https://en.wikipedia.org/wiki/Adobe_InDesign
   [brew]: http://brew.sh
   [brewfonts]: https://github.com/Homebrew/homebrew-cask-fonts
   [list-en]: https://groups.google.com/d/forum/sile-users
-  [list-ja]: https://groups.google.com/d/forum/sile-users-ja
   [nix]: https://nixos.org/nix
   [nix-flakes]: https://nixos.wiki/wiki/Flakes#Installing_flakes
   [ports]: http://ports.su/print/sile
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/build-aux/ax_lua.m4 
new/sile-0.14.12/build-aux/ax_lua.m4
--- old/sile-0.14.11/build-aux/ax_lua.m4        2023-08-23 04:56:35.676210015 
+0200
+++ new/sile-0.14.12/build-aux/ax_lua.m4        2023-10-11 18:27:29.356043345 
+0200
@@ -9,8 +9,8 @@
 
   dnl Find a Lua interpreter.
   AM_COND_IF([LUAJIT],
-         [_ax_lua_interpreter_list="luajit luajit-2.1.0-beta3 luajit-2.0.5 
luajit-2.0.4 luajit-2.0.3"],
-         [_ax_lua_interpreter_list="lua lua5.4 lua54 lua5.3 lua53 lua5.2 lua52 
lua5.1 lua51 lua5.0 lua50"])
+    [_ax_lua_interpreter_list="luajit luajit-2.1.0-beta3 luajit-2.0.5 
luajit-2.0.4 luajit-2.0.3"],
+    [_ax_lua_interpreter_list="lua lua5.4 lua54 lua5.3 lua53 lua5.2 lua52 
lua5.1 lua51 lua5.0 lua50"])
 
   m4_if([$1], [],
   [ dnl No version check is needed. Find any Lua interpreter.
@@ -71,21 +71,21 @@
     m4_default([$4], [AC_MSG_ERROR([cannot find suitable Lua interpreter])])
   ],
   [ dnl Query Lua for its version number.
-       AC_CACHE_CHECK([for $ax_display_LUA version], [ax_cv_lua_version],
-               [ ax_cv_lua_version=`$LUA -e 'print(_VERSION:match 
"(%d+%.%d+)")'` ])
-       AS_IF([test "x$ax_cv_lua_version" = 'x'],
-               [AC_MSG_ERROR([invalid Lua version number])])
-       AC_SUBST([LUA_VERSION], [$ax_cv_lua_version])
-       AC_SUBST([LUA_SHORT_VERSION], [`echo "$LUA_VERSION" | $SED 's|\.||'`])
-
-       AM_COND_IF([LUAJIT], [
-               AC_CACHE_CHECK([for $ax_display_LUA jit version], 
[ax_cv_luajit_version],
-                       [ ax_cv_luajit_version=`$LUA -e 'print(jit and 
jit.version:match "(%d+%..+)")'` ])
-               AS_IF([test "x$ax_cv_luajit_version" = 'x'],
-                       [AC_MSG_ERROR([invalid Lua version number])])
-               AC_SUBST([LUAJIT_VERSION], [$ax_cv_luajit_version])
-               AC_SUBST([LUAJIT_SHORT_VERSION], [`echo "$LUAJIT_VERSION" | 
$SED 's|\.|§|;s|\..*||;s|§|.|'`])
-       ])
+    AC_CACHE_CHECK([for $ax_display_LUA version], [ax_cv_lua_version],
+      [ ax_cv_lua_version=`$LUA -e 'print(_VERSION:match "(%d+%.%d+)")'` ])
+    AS_IF([test "x$ax_cv_lua_version" = 'x'],
+      [AC_MSG_ERROR([invalid Lua version number])])
+    AC_SUBST([LUA_VERSION], [$ax_cv_lua_version])
+    AC_SUBST([LUA_SHORT_VERSION], [`echo "$LUA_VERSION" | $SED 's|\.||'`])
+
+    AM_COND_IF([LUAJIT], [
+      AC_CACHE_CHECK([for $ax_display_LUA jit version], [ax_cv_luajit_version],
+        [ ax_cv_luajit_version=`$LUA -e 'print(jit and jit.version:match 
"(%d+%..+)")'` ])
+      AS_IF([test "x$ax_cv_luajit_version" = 'x'],
+        [AC_MSG_ERROR([invalid Lua version number])])
+      AC_SUBST([LUAJIT_VERSION], [$ax_cv_luajit_version])
+      AC_SUBST([LUAJIT_SHORT_VERSION], [`echo "$LUAJIT_VERSION" | $SED 
's|\.|§|;s|\..*||;s|§|.|'`])
+    ])
 
     dnl The following check is not supported:
     dnl At times (like when building shared libraries) you may want to know
@@ -196,12 +196,12 @@
 AC_DEFUN([_AX_LUAJIT_CHK_VER],
 [
   AS_IF([$1 2>/dev/null -e '
-               function norm (v)
-                 i,j=v:match "(%d+)%.(%d+)" if i then return 100 * i + j end
-               end
-               v, toobig=norm (jit.version), norm "$3" or math.huge
-               os.exit ((v >= norm ("$2") and v < toobig) and 0 or 1)'],
-       [$4], [$5])
+    function norm (v)
+    i,j=v:match "(%d+)%.(%d+)" if i then return 100 * i + j end
+    end
+    v, toobig=norm (jit.version), norm "$3" or math.huge
+    os.exit ((v >= norm ("$2") and v < toobig) and 0 or 1)'],
+    [$4], [$5])
 ])
 
 
@@ -246,8 +246,8 @@
 
   dnl  Some default directories to search.
   AM_COND_IF([LUAJIT],
-         [_ax_lua_include_list="/usr/include/luajit-$LUAJIT_VERSION 
/usr/include/luajit-$LUAJIT_SHORT_VERSION 
/usr/local/include/luajit-$LUAJIT_VERSION 
/usr/local/include/luajit-$LUAJIT_SHORT_VERSION"],
-         [_ax_lua_include_list="/usr/include/lua$LUA_VERSION 
/usr/include/lua/$LUA_VERSION /usr/include/lua$LUA_SHORT_VERSION 
/usr/local/include/lua$LUA_VERSION /usr/local/include/lua-$LUA_VERSION 
/usr/local/include/lua/$LUA_VERSION /usr/local/include/lua$LUA_SHORT_VERSION"])
+    [_ax_lua_include_list="/usr/include/luajit-$LUAJIT_VERSION 
/usr/include/luajit-$LUAJIT_SHORT_VERSION 
/usr/local/include/luajit-$LUAJIT_VERSION 
/usr/local/include/luajit-$LUAJIT_SHORT_VERSION"],
+    [_ax_lua_include_list="/usr/include/lua$LUA_VERSION 
/usr/include/lua/$LUA_VERSION /usr/include/lua$LUA_SHORT_VERSION 
/usr/local/include/lua$LUA_VERSION /usr/local/include/lua-$LUA_VERSION 
/usr/local/include/lua/$LUA_VERSION /usr/local/include/lua$LUA_SHORT_VERSION"])
 
   dnl Try to find the headers.
   _ax_lua_saved_cppflags=$CPPFLAGS
@@ -258,12 +258,12 @@
 
   dnl Try some other directories if LUA_INCLUDE was not set.
   AS_IF([test "x$LUA_INCLUDE" = 'x' &&
-                test "x$ac_cv_header_lua_h" != "xyes" ||
-                test "x$with_luajit" = "xyes" &&
-                test "x$ac_cv_header_luajit_h" != 'xyes'],
-    [ dnl Try some common include paths.
-       for _ax_include_path in $_ax_lua_include_list; do
-        test ! -d "$_ax_include_path" && continue
+      test "x$ac_cv_header_lua_h" != "xyes" ||
+      test "x$with_luajit" = "xyes" &&
+      test "x$ac_cv_header_luajit_h" != 'xyes'],
+      [ dnl Try some common include paths.
+      for _ax_include_path in $_ax_lua_include_list; do
+      test ! -d "$_ax_include_path" && continue
 
         AC_MSG_CHECKING([for Lua headers in])
         AC_MSG_RESULT([$_ax_include_path])
@@ -277,7 +277,7 @@
         _ax_lua_saved_cppflags=$CPPFLAGS
         CPPFLAGS="$CPPFLAGS -I$_ax_include_path"
         AC_CHECK_HEADERS([lua.h lualib.h lauxlib.h luaconf.h])
-               AM_COND_IF([LUAJIT], [AC_CHECK_HEADERS([luajit.h])])
+        AM_COND_IF([LUAJIT], [AC_CHECK_HEADERS([luajit.h])])
         CPPFLAGS=$_ax_lua_saved_cppflags
 
         AS_IF([test "x$ac_cv_header_lua_h" = 'xyes'],
@@ -397,18 +397,18 @@
     dnl Try to find the Lua libs.
     _ax_lua_saved_libs=$LIBS
     LIBS="$LIBS $LUA_LIB"
-       AM_COND_IF([LUAJIT],
-                       [AC_SEARCH_LIBS([lua_load],
-                               [luajit$LUA_VERSION luajit$LUA_SHORT_VERSION 
luajit-$LUA_VERSION luajit-$LUA_SHORT_VERSION luajit],
-                               [_ax_found_lua_libs='yes'],
-                               [_ax_found_lua_libs='no'],
-                               [$_ax_lua_extra_libs])],
-                       [AC_SEARCH_LIBS([lua_load],
-                               [lua$LUA_VERSION lua$LUA_SHORT_VERSION 
lua-$LUA_VERSION lua-$LUA_SHORT_VERSION lua],
-                               [_ax_found_lua_libs='yes'],
-                               [_ax_found_lua_libs='no'],
-                               [$_ax_lua_extra_libs])])
-       LIBS=$_ax_lua_saved_libs
+    AM_COND_IF([LUAJIT],
+        [AC_SEARCH_LIBS([lua_load],
+          [luajit$LUA_VERSION luajit$LUA_SHORT_VERSION luajit-$LUA_VERSION 
luajit-$LUA_SHORT_VERSION luajit],
+          [_ax_found_lua_libs='yes'],
+          [_ax_found_lua_libs='no'],
+          [$_ax_lua_extra_libs])],
+        [AC_SEARCH_LIBS([lua_load],
+          [lua$LUA_VERSION lua$LUA_SHORT_VERSION lua-$LUA_VERSION 
lua-$LUA_SHORT_VERSION lua],
+          [_ax_found_lua_libs='yes'],
+          [_ax_found_lua_libs='no'],
+          [$_ax_lua_extra_libs])])
+    LIBS=$_ax_lua_saved_libs
 
     AS_IF([test "x$ac_cv_search_lua_load" != 'xno' &&
            test "x$ac_cv_search_lua_load" != 'xnone required'],
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/classes/base.lua 
new/sile-0.14.12/classes/base.lua
--- old/sile-0.14.11/classes/base.lua   2023-08-23 04:56:35.676210015 +0200
+++ new/sile-0.14.12/classes/base.lua   2023-10-11 18:27:29.356043345 +0200
@@ -575,8 +575,8 @@
   end
   SILE.typesetter:runHooks("pageend") -- normally run by the typesetter
   self:endPage()
-  if SILE.typesetter then
-    assert(SILE.typesetter:isQueueEmpty(), "queues not empty")
+  if SILE.typesetter and not SILE.typesetter:isQueueEmpty() then
+    SU.error("Queues are not empty as expected after ending last page", true)
   end
   SILE.outputter:finish()
   self:runHooks("finish")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/classes/docbook.lua 
new/sile-0.14.12/classes/docbook.lua
--- old/sile-0.14.11/classes/docbook.lua        2023-08-23 04:56:35.676210015 
+0200
+++ new/sile-0.14.12/classes/docbook.lua        2023-10-11 18:27:29.356043345 
+0200
@@ -21,7 +21,7 @@
   self:loadPackage("footnotes")
   -- SILE sensibly does not define a pixels unit because it has no meaning in 
its frame of reference. However the
   -- Docbook standard requires them and even defaults to them for bare 
numbers, even while warning against their use.
-  -- Here we define a px arbitrarily to be the equivilent point unit if output 
was 300 DPI.
+  -- Here we define a px arbitrarily to be the equivalent point unit if output 
was 300 DPI.
   SILE.units.px = {
     definition = "0.24pt"
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/classes/plain.lua 
new/sile-0.14.12/classes/plain.lua
--- old/sile-0.14.11/classes/plain.lua  2023-08-23 04:56:35.676210015 +0200
+++ new/sile-0.14.12/classes/plain.lua  2023-10-11 18:27:29.356043345 +0200
@@ -76,7 +76,7 @@
 
   self:registerCommand("noindent", function (_, content)
     if #SILE.typesetter.state.nodes ~= 0 then
-      SU.warn("\\noindent called after nodes already recieved in a paragraph, 
the setting will have no effect because the parindent (if any) has already been 
output")
+      SU.warn("\\noindent called after nodes already received in a paragraph, 
the setting will have no effect because the parindent (if any) has already been 
output")
     end
     SILE.settings:set("current.parindent", SILE.nodefactory.glue())
     SILE.process(content)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/classes/tplain.lua 
new/sile-0.14.12/classes/tplain.lua
--- old/sile-0.14.11/classes/tplain.lua 2023-08-23 04:56:35.676210015 +0200
+++ new/sile-0.14.12/classes/tplain.lua 2023-10-11 18:27:29.356043345 +0200
@@ -14,7 +14,7 @@
 }
 
 -- The classes tplain and tbook inherit from plain and book respectively but 
also
--- have this bit in common; this makes it accessable
+-- have this bit in common; this makes it accessible
 function class:_t_common ()
   self:loadPackage("font-fallback")
   self:loadPackage("hanmenkyoshi")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/configure new/sile-0.14.12/configure
--- old/sile-0.14.11/configure  2023-08-23 04:57:22.334481118 +0200
+++ new/sile-0.14.12/configure  2023-10-11 18:28:06.437714849 +0200
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.71 for sile 0.14.11.
+# Generated by GNU Autoconf 2.71 for sile 0.14.12.
 #
 # Report bugs to <[email protected]>.
 #
@@ -621,8 +621,8 @@
 # Identity of this package.
 PACKAGE_NAME='sile'
 PACKAGE_TARNAME='sile'
-PACKAGE_VERSION='0.14.11'
-PACKAGE_STRING='sile 0.14.11'
+PACKAGE_VERSION='0.14.12'
+PACKAGE_STRING='sile 0.14.12'
 PACKAGE_BUGREPORT='[email protected]'
 PACKAGE_URL=''
 
@@ -1461,7 +1461,7 @@
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures sile 0.14.11 to adapt to many kinds of systems.
+\`configure' configures sile 0.14.12 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1532,7 +1532,7 @@
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of sile 0.14.11:";;
+     short | recursive ) echo "Configuration of sile 0.14.12:";;
    esac
   cat <<\_ACEOF
 
@@ -1683,7 +1683,7 @@
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-sile configure 0.14.11
+sile configure 0.14.12
 generated by GNU Autoconf 2.71
 
 Copyright (C) 2021 Free Software Foundation, Inc.
@@ -2030,7 +2030,7 @@
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by sile $as_me 0.14.11, which was
+It was created by sile $as_me 0.14.12, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   $ $0$ac_configure_args_raw
@@ -3301,7 +3301,7 @@
 
 # Define the identity of the package.
  PACKAGE='sile'
- VERSION='0.14.11'
+ VERSION='0.14.12'
 
 
 printf "%s\n" "#define PACKAGE \"$PACKAGE\"" >>confdefs.h
@@ -14763,11 +14763,6 @@
 
 fi
 
-    case $host_os in
-        msys)
-            LUA_VERSION=5.3 # By fiat. This is obviously not good.
-            ;;
-        *)
 
 
 
@@ -14908,7 +14903,7 @@
        as_fn_error $? "cannot find suitable Lua interpreter" "$LINENO" 5
 
 else $as_nop
-       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
$ax_display_LUA version" >&5
+       { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
$ax_display_LUA version" >&5
 printf %s "checking for $ax_display_LUA version... " >&6; }
 if test ${ax_cv_lua_version+y}
 then :
@@ -14918,18 +14913,18 @@
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_lua_version" >&5
 printf "%s\n" "$ax_cv_lua_version" >&6; }
-       if test "x$ax_cv_lua_version" = 'x'
+    if test "x$ax_cv_lua_version" = 'x'
 then :
   as_fn_error $? "invalid Lua version number" "$LINENO" 5
 fi
-       LUA_VERSION=$ax_cv_lua_version
+    LUA_VERSION=$ax_cv_lua_version
 
-       LUA_SHORT_VERSION=`echo "$LUA_VERSION" | $SED 's|\.||'`
+    LUA_SHORT_VERSION=`echo "$LUA_VERSION" | $SED 's|\.||'`
 
 
-       if test -z "$LUAJIT_TRUE"; then :
+    if test -z "$LUAJIT_TRUE"; then :
 
-               { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
$ax_display_LUA jit version" >&5
+      { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for 
$ax_display_LUA jit version" >&5
 printf %s "checking for $ax_display_LUA jit version... " >&6; }
 if test ${ax_cv_luajit_version+y}
 then :
@@ -14939,13 +14934,13 @@
 fi
 { printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $ax_cv_luajit_version" 
>&5
 printf "%s\n" "$ax_cv_luajit_version" >&6; }
-               if test "x$ax_cv_luajit_version" = 'x'
+      if test "x$ax_cv_luajit_version" = 'x'
 then :
   as_fn_error $? "invalid Lua version number" "$LINENO" 5
 fi
-               LUAJIT_VERSION=$ax_cv_luajit_version
+      LUAJIT_VERSION=$ax_cv_luajit_version
 
-               LUAJIT_SHORT_VERSION=`echo "$LUAJIT_VERSION" | $SED 
's|\.|§|;s|\..*||;s|§|.|'`
+      LUAJIT_SHORT_VERSION=`echo "$LUAJIT_VERSION" | $SED 
's|\.|§|;s|\..*||;s|§|.|'`
 
 
 fi
@@ -15058,9 +15053,6 @@
 
 fi
 
-            ;;
-    esac
-
 
     { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking if LUA_VERSION is 
defined" >&5
 printf %s "checking if LUA_VERSION is defined... " >&6; }
@@ -15122,12 +15114,12 @@
   CPPFLAGS=$_ax_lua_saved_cppflags
 
     if test "x$LUA_INCLUDE" = 'x' &&
-                test "x$ac_cv_header_lua_h" != "xyes" ||
-                test "x$with_luajit" = "xyes" &&
-                test "x$ac_cv_header_luajit_h" != 'xyes'
+      test "x$ac_cv_header_lua_h" != "xyes" ||
+      test "x$with_luajit" = "xyes" &&
+      test "x$ac_cv_header_luajit_h" != 'xyes'
 then :
-       for _ax_include_path in $_ax_lua_include_list; do
-        test ! -d "$_ax_include_path" && continue
+         for _ax_include_path in $_ax_lua_include_list; do
+      test ! -d "$_ax_include_path" && continue
 
         { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for Lua headers 
in" >&5
 printf %s "checking for Lua headers in... " >&6; }
@@ -15167,7 +15159,7 @@
 
 fi
 
-               if test -z "$LUAJIT_TRUE"; then :
+        if test -z "$LUAJIT_TRUE"; then :
   ac_fn_c_check_header_compile "$LINENO" "luajit.h" "ac_cv_header_luajit_h" 
"$ac_includes_default"
 if test "x$ac_cv_header_luajit_h" = xyes
 then :
@@ -15501,7 +15493,7 @@
 
         _ax_lua_saved_libs=$LIBS
     LIBS="$LIBS $LUA_LIB"
-       if test -z "$LUAJIT_TRUE"; then :
+    if test -z "$LUAJIT_TRUE"; then :
   { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for library 
containing lua_load" >&5
 printf %s "checking for library containing lua_load... " >&6; }
 if test ${ac_cv_search_lua_load+y}
@@ -15626,7 +15618,7 @@
 fi
 
 fi
-       LIBS=$_ax_lua_saved_libs
+    LIBS=$_ax_lua_saved_libs
 
     if test "x$ac_cv_search_lua_load" != 'xno' &&
            test "x$ac_cv_search_lua_load" != 'xnone required'
@@ -17302,7 +17294,7 @@
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by sile $as_me 0.14.11, which was
+This file was extended by sile $as_me 0.14.12, which was
 generated by GNU Autoconf 2.71.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -17361,7 +17353,7 @@
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config='$ac_cs_config_escaped'
 ac_cs_version="\\
-sile config.status 0.14.11
+sile config.status 0.14.12
 configured by $0, generated by GNU Autoconf 2.71,
   with options \\"\$ac_cs_config\\"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/configure.ac 
new/sile-0.14.12/configure.ac
--- old/sile-0.14.11/configure.ac       2023-08-23 04:56:35.676210015 +0200
+++ new/sile-0.14.12/configure.ac       2023-10-11 18:27:29.360043939 +0200
@@ -150,15 +150,7 @@
         fi
     ])
 
-    case $host_os in
-        msys)
-            LUA_VERSION=5.3 # By fiat. This is obviously not good.
-            ;;
-        *)
-            AX_PROG_LUA([5.1])
-            ;;
-    esac
-
+    AX_PROG_LUA([5.1])
     AX_LUA_HEADERS
     AX_LUA_LIBS
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/core/break.lua 
new/sile-0.14.12/core/break.lua
--- old/sile-0.14.11/core/break.lua     2023-08-23 04:56:35.680210194 +0200
+++ new/sile-0.14.12/core/break.lua     2023-10-11 18:27:29.360043939 +0200
@@ -91,7 +91,7 @@
 -- up to the that total. Returning values that don't add up may produce
 -- unexpected results.
 --
--- TeX wizards shall also note that this is slighty different from
+-- TeX wizards shall also note that this is slightly different from
 -- Knuth's definition "nline l1 i1 l2 i2 ... lN iN".
 function lineBreak:parShape(_)
   return 0, self.hsize, 0
@@ -176,7 +176,7 @@
       end
       -- 861
       if self.r.lineNumber > self.old_l then
-        if debugging then SU.debug("break", "Mimimum demerits = " .. 
self.minimumDemerits) end
+        if debugging then SU.debug("break", "Minimum demerits = " .. 
self.minimumDemerits) end
         if self.minimumDemerits < awful_bad and (self.old_l ~= self.easy_line 
or self.r == self.activeListHead) then
           self:createNewActiveNodes(breakType)
         end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/core/nodefactory.lua 
new/sile-0.14.12/core/nodefactory.lua
--- old/sile-0.14.11/core/nodefactory.lua       2023-08-23 04:56:35.680210194 
+0200
+++ new/sile-0.14.12/core/nodefactory.lua       2023-10-11 18:27:29.364044533 
+0200
@@ -255,7 +255,7 @@
 getmetatable(nodefactory.unshaped).__index = function (_, _)
   -- if k == "width" then SU.error("Can't get width of unshaped node", true) 
end
   -- TODO: No idea why porting to proper Penlight classes this ^^^^^^ started
-  -- killing everything. Perhaps becaus this function started working and would
+  -- killing everything. Perhaps because this function started working and 
would
   -- actually need to return rawget(self, k) or something?
 end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/core/sile.lua 
new/sile-0.14.12/core/sile.lua
--- old/sile-0.14.11/core/sile.lua      2023-08-23 04:56:35.680210194 +0200
+++ new/sile-0.14.12/core/sile.lua      2023-10-11 18:27:29.364044533 +0200
@@ -59,8 +59,8 @@
 SILE.rawHandlers = {}
 
 -- User input values, currently from CLI options, potentially all the inuts
--- needed for a user to use a SILE-as-a-library verion to produce documents
--- programatically.
+-- needed for a user to use a SILE-as-a-library version to produce documents
+-- programmatically.
 SILE.input = {
   filenames = {},
   evaluates = {},
@@ -97,7 +97,7 @@
 
 -- NOTE:
 -- See remainaing internal libraries loaded at the end of this file because
--- they run core SILE functions on load istead of waiting to be called (or
+-- they run core SILE functions on load instead of waiting to be called (or
 -- depend on others that do).
 
 local function runEvals (evals, arg)
@@ -200,7 +200,9 @@
   dependency = dependency:gsub(".lua$", "")
   local status, lib
   if pathprefix then
-    status, lib = pcall(require, pl.path.join(pathprefix, dependency))
+    -- Note this is not a *path*, it is a module identifier:
+    -- https://github.com/sile-typesetter/sile/issues/1861
+    status, lib = pcall(require, pl.stringx.join('.', { pathprefix, dependency 
}))
   end
   if not status then
     local prefixederror = lib
@@ -328,10 +330,7 @@
     if SILE.masterDir and SILE.masterDir:len() >= 1 then
       _G.extendSilePath(SILE.masterDir)
     end
-    filename = SILE.resolveFile(filename)
-    if not filename then
-      SU.error("Could not find file")
-    end
+    filename = SILE.resolveFile(filename) or SU.error("Could not find file")
     local mode = lfs.attributes(filename).mode
     if mode ~= "file" and mode ~= "named pipe" then
       SU.error(filename.." isn't a file or named pipe, it's a ".. mode .."!")
@@ -391,8 +390,8 @@
   local resolved, err = package.searchpath(filename, path, "/")
   if resolved then
     if SILE.makeDeps then SILE.makeDeps:add(resolved) end
-  else
-    SU.warn(("Unable to find file '%s': %s"):format(filename, err))
+  elseif SU.debugging("paths") then
+    SU.debug("paths", ("Unable to find file '%s': %s"):format(filename, err))
   end
   return resolved
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/core/utilities-numbers.lua 
new/sile-0.14.12/core/utilities-numbers.lua
--- old/sile-0.14.11/core/utilities-numbers.lua 2023-08-23 04:56:35.680210194 
+0200
+++ new/sile-0.14.12/core/utilities-numbers.lua 2023-10-11 18:27:29.364044533 
+0200
@@ -60,7 +60,7 @@
   -- ICU locale: see  https://unicode-org.github.io/icu/userguide/locale/
   -- Ex. "en", "en-US", "sr-Latn"...
   local iculocale = lang or ""
-  -- ICU keywork for a numbering system specifier: @numbers=xxxx
+  -- ICU keyword for a numbering system specifier: @numbers=xxxx
   -- The specifiers are defined here:
   -- https://github.com/unicode-org/cldr/blob/main/common/bcp47/number.xml
   if options.system then
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/core/utilities.lua 
new/sile-0.14.12/core/utilities.lua
--- old/sile-0.14.11/core/utilities.lua 2023-08-23 04:56:35.680210194 +0200
+++ new/sile-0.14.12/core/utilities.lua 2023-10-11 18:27:29.364044533 +0200
@@ -32,9 +32,9 @@
 
 local _skip_traceback_levels = 2
 
-utilities.error = function(message, bug)
+utilities.error = function (message, isbug)
   _skip_traceback_levels = 3
-  utilities.warn(message, bug)
+  utilities.warn(message, isbug)
   _skip_traceback_levels = 2
   io.stderr:flush()
   SILE.outputter:finish() -- Only really useful from the REPL but no harm in 
trying
@@ -42,10 +42,10 @@
   error(message, 2)
 end
 
-utilities.warn = function(message, bug)
+utilities.warn = function (message, isbug)
   if SILE.quiet then return end
   io.stderr:write("\n! " .. message)
-  if SILE.traceback or bug then
+  if SILE.traceback or isbug then
     io.stderr:write(" at:\n" .. SILE.traceStack:locationTrace())
     if _skip_traceback_levels == 2 then
       io.stderr:write(debug.traceback("", _skip_traceback_levels) or "\t! 
debug.traceback() did not identify code location")
@@ -56,6 +56,11 @@
   io.stderr:write("\n")
 end
 
+utilities.msg = function (message)
+  if SILE.quiet then return end
+  io.stderr:write("\n! " .. message .. "\n")
+end
+
 utilities.debugging = function (category)
   return SILE.debugFlags.all and category ~= "profile" or 
SILE.debugFlags[category]
 end
@@ -96,7 +101,7 @@
   -- runtime but not useful if we encounter deprecated code in core code. Users
   -- will never encounter this failure, but as a developer it’s hard to test 
a
   -- deprecation when core code refactoring is an all-or-nothing proposition.
-  -- Hence we fake it ‘till we make it, all deprecations internally are 
warings.
+  -- Hence we fake it ‘till we make it, all deprecations internally are 
warnings.
   local brackets = old:sub(1,1) == '\\' and "" or "()"
   local _new = new and "Please use " .. (new .. brackets) .. " instead." or 
"Plase don't use it."
   local msg = (old .. brackets) .. " was deprecated in SILE v" .. 
tostring(warnat) .. ". " .. _new ..  (extra and "\n" .. extra .. "\n\n" or "")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c02-gettingstarted.sil 
new/sile-0.14.12/documentation/c02-gettingstarted.sil
--- old/sile-0.14.11/documentation/c02-gettingstarted.sil       2023-08-23 
04:56:35.680210194 +0200
+++ new/sile-0.14.12/documentation/c02-gettingstarted.sil       2023-10-11 
18:27:29.368045127 +0200
@@ -256,7 +256,7 @@
 Now the \code{sile} command will be available from any directory.
 
 \begin{autodoc:note}
-If you wish you, can skip the install step and use the compiled SILE 
executable diretly from the source directory.
+If you wish you, can skip the install step and use the compiled SILE 
executable directly from the source directory.
 As configured above, this will only work from a shell with the CWD set to the 
SILE source.
 To make it usable from anywhere, you can configure it with the source 
directory baked in as the installation location.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c03-input.sil 
new/sile-0.14.12/documentation/c03-input.sil
--- old/sile-0.14.11/documentation/c03-input.sil        2023-08-23 
04:56:35.680210194 +0200
+++ new/sile-0.14.12/documentation/c03-input.sil        2023-10-11 
18:27:29.368045127 +0200
@@ -8,7 +8,7 @@
 
 Hence this chanpter has been renamed.
 The original chapter title was "SILE’s Input Language", as if there was only 
one.
-The truth is there \em{is} an input syntax we call "SIL", but even that is 
perhaps best thought of as a structured data systax rather than a unique 
language.
+The truth is there \em{is} an input syntax we call "SIL", but even that is 
perhaps best thought of as a structured data syntax rather than a unique 
language.
 The input strings \code{\\em\{foo\}} in SIL input syntax is 100\% equivalent 
to \code{<em>foo</em>} in XML input syntax.
 The SIL input syntax is provided as an easier to type alternative than XML 
which can be a bit verbose and tedious to work with by hand.
 On the other hand if you're handling data written by some other program, XML 
might be a much better solution.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c05-packages.sil 
new/sile-0.14.12/documentation/c05-packages.sil
--- old/sile-0.14.11/documentation/c05-packages.sil     2023-08-23 
04:56:35.680210194 +0200
+++ new/sile-0.14.12/documentation/c05-packages.sil     2023-10-11 
18:27:29.368045127 +0200
@@ -98,7 +98,7 @@
 
 \section{Text & Characters}
 
-This section covers a range of diffent topics from initial capitals to text 
transforms, through URL formatting.
+This section covers a range of different topics from initial capitals to text 
transforms, through URL formatting.
 
 \subsection{dropcaps}
 \status:high
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c06-macroscommands.sil 
new/sile-0.14.12/documentation/c06-macroscommands.sil
--- old/sile-0.14.11/documentation/c06-macroscommands.sil       2023-08-23 
04:56:35.680210194 +0200
+++ new/sile-0.14.12/documentation/c06-macroscommands.sil       2023-10-11 
18:27:29.368045127 +0200
@@ -17,7 +17,7 @@
 \define[command=SILE]{\font[family=Gentium Plus]{% Book Basic has no +smcp, 
but readers don't need to know, since we're only using Book Basic as a holdover 
from old SILE which did.
 
S\lower[height=0.5ex]{I}L\kern[width=-.2em]\raise[height=0.6ex]{\font[features=+smcp]{e}}}}
 For instance, let’s suppose that we want to design a nice little
-“bumpy road” logo for SILE. (Afficionados of 
T\kern[width=-.1667em]\lower[height=0.5ex]{E}\kern[width=-.125em]X and friends 
will be familiar with the concept of
+“bumpy road” logo for SILE. (Aficionados of 
T\kern[width=-.1667em]\lower[height=0.5ex]{E}\kern[width=-.125em]X and friends 
will be familiar with the concept of
 bumpy road logos.) Our logo will look like this: \SILE. It’s not a great
 logo, but we’ll use it as \SILE’s logo for the purposes of this section.
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c08-language.sil 
new/sile-0.14.12/documentation/c08-language.sil
--- old/sile-0.14.11/documentation/c08-language.sil     2023-08-23 
04:56:35.684210374 +0200
+++ new/sile-0.14.12/documentation/c08-language.sil     2023-10-11 
18:27:29.368045127 +0200
@@ -25,7 +25,7 @@
 \item{frame advance and writing direction}
 \item{spacing}
 \item{choice of glyphs within a font}
-\item{localization of programatically inserted strings}
+\item{localization of programmatically inserted strings}
 \end{itemize}
 
 For example, Sindhi and Urdu users will expect the Arabic letter \em{heh} 
(\font[family=LateefGR]{ه}) to combine with other letters in different ways to 
standard Arabic shaping.
@@ -95,7 +95,7 @@
 
 \section{Localization}
 
-A small handful of strings may be programatically added to documents depending 
on language, context, and options.
+A small handful of strings may be programmatically added to documents 
depending on language, context, and options.
 For example by default in English the \autodoc:class{book} class will prepend 
“Chapter ” before chapter numbers output by the \autodoc:command{\chapter} 
command.
 These localized strings are managed internally using the Fluent localization 
system.%
 \footnote{See Project Fluent (\url{https://projectfluent.org}) for details on 
the data format and uses.}
@@ -180,7 +180,7 @@
 Breaking rules \em{(kinzoku shori)} and intercharacter spacing is fully 
supported on selecting the Japanese language.
 The easiest way to set up the other elements of Japanese typesetting such as 
the \em{hanmen} grid and optional vertical typesetting support is by using the 
\autodoc:class{jplain} or \autodoc:class{jbook} classes.
 For other languages with similar layout requirements, more generic 
\autodoc:class{tplain} and \autodoc:class{tbook} classes are available that 
setup the layout elements without also setting the default language and font to 
Japanese specific values.
-These are also good condidates to use as base classes and extend for more 
language-specific classes.
+These are also good candidates to use as base classes and extend for more 
language-specific classes.
 
 \package-documentation{hanmenkyoshi}
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c10-classdesign.sil 
new/sile-0.14.12/documentation/c10-classdesign.sil
--- old/sile-0.14.11/documentation/c10-classdesign.sil  2023-08-23 
04:56:35.684210374 +0200
+++ new/sile-0.14.12/documentation/c10-classdesign.sil  2023-10-11 
18:27:29.368045127 +0200
@@ -169,7 +169,7 @@
 
 \subsection{Defining raw handlers}
 
-“Raw handlers” allow packages to register new handlers (or callbacks) for 
use with the \autodoc:environment{raw} environment, which content is read as-is 
by SILE, without being interpretated.
+“Raw handlers” allow packages to register new handlers (or callbacks) for 
use with the \autodoc:environment{raw} environment, which content is read as-is 
by SILE, without being interpreted.
 This is intended for advanced use cases where you may want to provide a way 
for users to embed arbitrary content (likely in another syntax), and you will 
provide the complete parsing and handling for it.\footnote{%
 This may be used to implement a “clever” verbatim environment.
 It is also used, for instance, by the \strong{markdown.sile} 3rd-party 
collection to embed Markdown or Djot content directly in a (SIL or XML) 
document.}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c11-inputoutput.sil 
new/sile-0.14.12/documentation/c11-inputoutput.sil
--- old/sile-0.14.11/documentation/c11-inputoutput.sil  2023-08-23 
04:56:35.684210374 +0200
+++ new/sile-0.14.12/documentation/c11-inputoutput.sil  2023-10-11 
18:27:29.368045127 +0200
@@ -75,7 +75,7 @@
 \subsection{Content appropriation}
 
 What we first need is to tell SILE how to choose our inputter when it is given 
a file in our input format.
-The \code{appropriate()} method of our inputter is reponsible for providing 
the corresponding logic.
+The \code{appropriate()} method of our inputter is responsible for providing 
the corresponding logic.
 It is a static method (so it does not have a \code{self} argument), and it 
takes up to three arguments:
 \begin{itemize}
 \item{the round, an integer between 1 and 3.}
@@ -87,10 +87,10 @@
 Earlier, we said that inputters were checked in their priority order.
 This was not fully complete.
 Let’s add another piece to our puzzle: Inputters are actually checked 
orderly indeed, but three times.
-This allows for quick compatiblitity checks to supercede resource-intensive 
ones.
+This allows for quick compatiblitity checks to supersede resource-intensive 
ones.
 \begin{itemize}
 \item{Round 1 expects the file name to be checked: for instance, we could base 
our decision on recognized file extensions.}
-\item{Round 2 expects some portion of the content string to be checked: for 
instance, we could base our decision on sniffing for some sequence of 
characters expected to occurr early in the document (or any other content 
inspection strategy).}
+\item{Round 2 expects some portion of the content string to be checked: for 
instance, we could base our decision on sniffing for some sequence of 
characters expected to occur early in the document (or any other content 
inspection strategy).}
 \item{Round 3 expects the entire content to be successfully parsed.}
 \end{itemize}
 
@@ -178,7 +178,7 @@
 
 Outputters usually live somewhere in the \code{outputters/} subdirectory of 
either where your first input file is located, your current working directory, 
or your SILE path.
 
-All ouput handlers inherit from a \autodoc:package{base} outputter.
+All output handlers inherit from a \autodoc:package{base} outputter.
 It is an abstract class, providing just one concrete method, and defining a 
bunch of methods that any actual outputter has to override for the specifics of 
its target format.
 
 We first need to declare the name of our new outputter, as well as the default 
file extension for the output file, which will be appended to the base name of 
the main input file if the user does not provide an explicit output file name 
on their command line.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/documentation/c12-xmlproc.sil 
new/sile-0.14.12/documentation/c12-xmlproc.sil
--- old/sile-0.14.11/documentation/c12-xmlproc.sil      2023-08-23 
04:56:35.684210374 +0200
+++ new/sile-0.14.12/documentation/c12-xmlproc.sil      2023-10-11 
18:27:29.368045127 +0200
@@ -10,7 +10,7 @@
 When you use the \code{-c docbook} command line option to SILE, SILE will use 
the \autodoc:class{docbook} class in spite of any document declaration.
 In addition, options such as paper size could be set; for example, \code{-O 
papersize=legal}.
 
-The class initalization for DocBoox isn’t too fancy; it just loads up a 
couple packages that will get used later.
+The class initialization for DocBoox isn’t too fancy; it just loads up a 
couple packages that will get used later.
 
 \begin{autodoc:note}
 Much of the example code in this chapter is in SIL format using macros.
Binary files old/sile-0.14.11/documentation/fig-input-to-output.pdf and 
new/sile-0.14.12/documentation/fig-input-to-output.pdf differ
Binary files old/sile-0.14.11/documentation/fig-input-to-output.pdf.gs and 
new/sile-0.14.12/documentation/fig-input-to-output.pdf.gs differ
Binary files old/sile-0.14.11/documentation/sile.pdf and 
new/sile-0.14.12/documentation/sile.pdf differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/i18n/pt.ftl new/sile-0.14.12/i18n/pt.ftl
--- old/sile-0.14.11/i18n/pt.ftl        2023-08-23 04:56:35.688210553 +0200
+++ new/sile-0.14.12/i18n/pt.ftl        2023-10-11 18:27:29.376046315 +0200
@@ -1,3 +1,11 @@
+bibliography-and = e
+
+bibliography-edited-by = Editado por { $name }
+
+bibliography-et-al = <language main="la">et al</language>.
+
+bibliography-translated-by = Traduzido por { $name }
+
 book-chapter-title = Capítulo { $number }
 
 tableofcontents-title = Conteúdo
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/inputters/base.lua 
new/sile-0.14.12/inputters/base.lua
--- old/sile-0.14.11/inputters/base.lua 2023-08-23 04:56:35.688210553 +0200
+++ new/sile-0.14.12/inputters/base.lua 2023-10-11 18:27:29.376046315 +0200
@@ -23,7 +23,7 @@
     class = constructor._name
   end
   class = SILE.input.class or class or options.class or "plain"
-  options.class = nil -- don't pass already consumed class option to 
contstructor
+  options.class = nil -- don't pass already consumed class option to 
constructor
   constructor = self._docclass or constructor or SILE.require(class, 
"classes", true)
   if constructor.id then
     SU.deprecated("std.object", "pl.class", "0.13.0", "0.14.0", 
string.format(_deprecated, constructor.id))
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/outputters/debug.lua 
new/sile-0.14.12/outputters/debug.lua
--- old/sile-0.14.11/outputters/debug.lua       2023-08-23 04:56:35.720211987 
+0200
+++ new/sile-0.14.12/outputters/debug.lua       2023-10-11 18:27:29.412051660 
+0200
@@ -15,7 +15,7 @@
   -- just enough to fix the bias so our test suite works across interpreters.
   -- Note that even a true rounding function here will fail because the bias is
   -- inherent to the floating point type. Also note we are erroring in favor of
-  -- the *less* common option beacuse the LuaJIT VMS are hopelessly broken
+  -- the *less* common option because the LuaJIT VMS are hopelessly broken
   -- whereas normal LUA VMs can be cooerced.
   if input > 0 then input = input + .00000000000001 end
   if input < 0 then input = input - .00000000000001 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/outputters/libtexpdf.lua 
new/sile-0.14.12/outputters/libtexpdf.lua
--- old/sile-0.14.11/outputters/libtexpdf.lua   2023-08-23 04:56:35.720211987 
+0200
+++ new/sile-0.14.12/outputters/libtexpdf.lua   2023-10-11 18:27:29.412051660 
+0200
@@ -42,7 +42,7 @@
   pdf.beginpage()
 end
 
--- pdf stucture package needs a tie in here
+-- pdf structure package needs a tie in here
 function outputter._endHook (_)
 end
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/package.json 
new/sile-0.14.12/package.json
--- old/sile-0.14.11/package.json       2023-08-23 04:56:35.720211987 +0200
+++ new/sile-0.14.12/package.json       2023-10-11 18:27:29.412051660 +0200
@@ -1,6 +1,6 @@
 {
   "name": "sile",
-  "version": "0.14.11",
+  "version": "0.14.12",
   "description": "The SILE Typesetter",
   "main": "sile",
   "scripts": {
@@ -23,7 +23,7 @@
     "@commitlint/config-conventional": "^17.6",
     "@commitlint/prompt": "^17.6",
     "commitizen": "^4.3",
-    "conventional-changelog-cli": "^3.0",
+    "conventional-changelog-cli": "^4.0",
     "husky": "^8.0",
     "standard-version": "^9.5",
     "yaml": "^2.3"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/autodoc/init.lua 
new/sile-0.14.12/packages/autodoc/init.lua
--- old/sile-0.14.11/packages/autodoc/init.lua  2023-08-23 04:56:35.720211987 
+0200
+++ new/sile-0.14.12/packages/autodoc/init.lua  2023-10-11 18:27:29.412051660 
+0200
@@ -356,7 +356,7 @@
     SILE.call("novbreak")
     SILE.call("fullrule", { thickness = "0.5pt" })
     SILE.call("novbreak")
-  end, "Ouputs a line used for surrounding code blocks (somewhat internal)")
+  end, "Outputs a line used for surrounding code blocks (somewhat internal)")
 
   self:registerCommand("autodoc:example", function(_, content)
     -- Loosely derived from the \examplefont command from the original SILE 
manual...
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/bibtex/init.lua 
new/sile-0.14.12/packages/bibtex/init.lua
--- old/sile-0.14.11/packages/bibtex/init.lua   2023-08-23 04:56:35.720211987 
+0200
+++ new/sile-0.14.12/packages/bibtex/init.lua   2023-10-11 18:27:29.412051660 
+0200
@@ -39,12 +39,12 @@
 ---@diagnostic enable: undefined-global, unused-local, lowercase-global
 
 local parseBibtex = function (fn)
-  fn = SILE.resolveFile(fn)
-  local fh,e = io.open(fn)
-  if e then SU.error("Error reading bibliography file "..e) end
+  fn = SILE.resolveFile(fn) or SU.error("Unable to resolve Bibtex file "..fn)
+  local fh, e = io.open(fn)
+  if e then SU.error("Error reading bibliography file: "..e) end
   local doc = fh:read("*all")
   local t = epnf.parsestring(bibtexparser, doc)
-  if not(t) or not(t[1]) or t.id ~= "document" then
+  if not t or not t[1] or t.id ~= "document" then
     SU.error("Error parsing bibtex")
   end
   local entries = {}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/footnotes/init.lua 
new/sile-0.14.12/packages/footnotes/init.lua
--- old/sile-0.14.11/packages/footnotes/init.lua        2023-08-23 
04:56:35.720211987 +0200
+++ new/sile-0.14.12/packages/footnotes/init.lua        2023-10-11 
18:27:29.412051660 +0200
@@ -73,7 +73,7 @@
     -- Apply the font before boxing, so relative baselineskip applies #1027
     local material
     SILE.call("footnote:font", {}, function ()
-        material = SILE.call("vbox", {}, function ()
+      material = SILE.call("vbox", {}, function ()
         SILE.call("footnote:atstart", options)
         SILE.call("footnote:counter", options)
         SILE.process(content)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/leaders/init.lua 
new/sile-0.14.12/packages/leaders/init.lua
--- old/sile-0.14.11/packages/leaders/init.lua  2023-08-23 04:56:35.724212166 
+0200
+++ new/sile-0.14.12/packages/leaders/init.lua  2023-10-11 18:27:29.416052254 
+0200
@@ -75,7 +75,7 @@
     end
   end
   -- Return to our start (saved) position and move to the full leaders width.
-  -- (So we are sure to safely get the correct width, whathever we did above
+  -- (So we are sure to safely get the correct width, whatever we did above
   -- with the remainder space and the leader repetitions).
   typesetter.frame.state.cursorX = ox
   typesetter.frame.state.cursorY = oy
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/lists/init.lua 
new/sile-0.14.12/packages/lists/init.lua
--- old/sile-0.14.11/packages/lists/init.lua    2023-08-23 04:56:35.724212166 
+0200
+++ new/sile-0.14.12/packages/lists/init.lua    2023-10-11 18:27:29.416052254 
+0200
@@ -102,7 +102,7 @@
 
   local stepback
   if enumStyle.display then
-    -- The positionning is quite tentative... LaTeX would right justify the
+    -- The positioning is quite tentative... LaTeX would right justify the
     -- number (at least for roman numerals), i.e.
     --   i. Text
     --  ii. Text
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/math/base-elements.lua 
new/sile-0.14.12/packages/math/base-elements.lua
--- old/sile-0.14.11/packages/math/base-elements.lua    2023-08-23 
04:56:35.724212166 +0200
+++ new/sile-0.14.12/packages/math/base-elements.lua    2023-10-11 
18:27:29.416052254 +0200
@@ -225,7 +225,7 @@
 -- Typesetting of mbox evolves four steps:
 --   1. Determine the mode for each mbox according to their parent.
 --   2. Shape the mbox hierarchy from leaf to top. Get the shape and relative 
position.
---   3. Convert mbox into _nnode's to put in SILE's typesetting framwork
+--   3. Convert mbox into _nnode's to put in SILE's typesetting framework
 elements.mbox = pl.class(nodefactory.hbox)
 elements.mbox._type = "Mbox"
 
@@ -254,15 +254,15 @@
 end
 
 function elements.mbox.styleChildren (_)
-  SU.error("styleChildren is a virtual function that need to be overriden by 
its child classes")
+  SU.error("styleChildren is a virtual function that need to be overridden by 
its child classes")
 end
 
 function elements.mbox.shape (_, _, _)
-  SU.error("shape is a virtual function that need to be overriden by its child 
classes")
+  SU.error("shape is a virtual function that need to be overridden by its 
child classes")
 end
 
 function elements.mbox.output (_, _, _, _)
-  SU.error("output is a virtual function that need to be overriden by its 
child classes")
+  SU.error("output is a virtual function that need to be overridden by its 
child classes")
 end
 
 function elements.mbox:getMathMetrics ()
@@ -860,7 +860,7 @@
       .vertGlyphConstructions[glyphs[1].gid]
     if constructions then
       local displayVariants = constructions.mathGlyphVariantRecord
-      -- We select the biggest variant. TODO: we shoud probably select the
+      -- We select the biggest variant. TODO: we should probably select the
       -- first variant that is higher than displayOperatorMinHeight.
       local biggest
       local m = 0
@@ -945,7 +945,7 @@
     local closest
     local closestI
     local m = requiredAdvance - (self.depth+self.height):tonumber() * upem/sz
-    SU.debug("math", "strech: m =", m)
+    SU.debug("math", "stretch: m =", m)
     for i,v in ipairs(variants) do
       local diff = math.abs(v.advanceMeasurement - requiredAdvance)
       SU.debug("math", "stretch: diff =", diff)
@@ -1105,7 +1105,7 @@
 function elements.mtr.output (_) end
 
 elements.table = pl.class(elements.mbox)
-elements.table._type = "table" -- TODO why case diference?
+elements.table._type = "table" -- TODO why case difference?
 
 function elements.table:_init (children, options)
   elements.mbox._init(self)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/ruby/init.lua 
new/sile-0.14.12/packages/ruby/init.lua
--- old/sile-0.14.11/packages/ruby/init.lua     2023-08-23 04:56:35.728212345 
+0200
+++ new/sile-0.14.12/packages/ruby/init.lua     2023-10-11 18:27:29.420052848 
+0200
@@ -29,7 +29,7 @@
 
 function package:_init ()
   base._init(self)
-  -- Japaneese language support defines units which are useful here
+  -- Japanese language support defines units which are useful here
   self:loadPackage("font-fallback")
   SILE.call("font:add-fallback", { family = "Noto Sans CJK JP" })
   SILE.languageSupport.loadLanguage("ja")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/simpletable/init.lua 
new/sile-0.14.12/packages/simpletable/init.lua
--- old/sile-0.14.11/packages/simpletable/init.lua      2023-08-23 
04:56:35.728212345 +0200
+++ new/sile-0.14.12/packages/simpletable/init.lua      2023-10-11 
18:27:29.420052848 +0200
@@ -24,7 +24,7 @@
   trTag = SU.required(options, "trTag", "setting up table class")
   tdTag = SU.required(options, "tdTag", "setting up table class")
 
-  -- This is a post init calback instead of the usual early command 
registration
+  -- This is a post init callback instead of the usual early command 
registration
   -- method using our package loader because we don't know what commands to 
register
   -- until we've been instantiated.
   self.class:registerPostinit(function (_)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/packages/tableofcontents/init.lua 
new/sile-0.14.12/packages/tableofcontents/init.lua
--- old/sile-0.14.11/packages/tableofcontents/init.lua  2023-08-23 
04:56:35.728212345 +0200
+++ new/sile-0.14.12/packages/tableofcontents/init.lua  2023-10-11 
18:27:29.420052848 +0200
@@ -7,6 +7,8 @@
   SILE.scratch._tableofcontents = {}
 end
 
+local toc_used = false
+
 function package:moveTocNodes ()
   local node = SILE.scratch.info.thispage.toc
   if node then
@@ -24,8 +26,8 @@
   tocfile:write("return " .. tocdata)
   tocfile:close()
 
-  if not pl.tablex.deepcompare(SILE.scratch.tableofcontents, 
SILE.scratch._tableofcontents) then
-    io.stderr:write("\n! Warning: table of contents has changed, please rerun 
SILE to update it.")
+  if toc_used and not pl.tablex.deepcompare(SILE.scratch.tableofcontents, 
SILE.scratch._tableofcontents) then
+    SU.msg("Notice: the table of contents has changed, please rerun SILE to 
update it.")
   end
 end
 
@@ -115,6 +117,7 @@
   self:registerCommand("tableofcontents", function (options, _)
     local depth = SU.cast("integer", options.depth or 3)
     local linking = SU.boolean(options.linking, true)
+    toc_used = true
     local toc = self:readToc()
     if toc == false then
       SILE.call("tableofcontents:notocmessage")
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/sile.1 new/sile-0.14.12/sile.1
--- old/sile-0.14.11/sile.1     2023-08-23 04:57:28.122768329 +0200
+++ new/sile-0.14.12/sile.1     2023-10-11 18:28:21.399908336 +0200
@@ -1,4 +1,4 @@
-.TH sile 1 "23 March 2023" "version v0.14.11"
+.TH sile 1 "23 March 2023" "version v0.14.12"
 .SH NAME
 sile \- Simon's Improved Layout Engine
 .SH SYNOPSIS
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/src/justenoughharfbuzz.c 
new/sile-0.14.12/src/justenoughharfbuzz.c
--- old/sile-0.14.11/src/justenoughharfbuzz.c   2023-08-23 04:56:35.732212524 
+0200
+++ new/sile-0.14.12/src/justenoughharfbuzz.c   2023-10-11 18:27:29.420052848 
+0200
@@ -145,9 +145,9 @@
     double point_size = luaL_checknumber(L, 6);
     const char * featurestring = luaL_checkstring(L, 7);
     char * shaper_list_string = luaL_checkstring(L, 8);
-    char ** shaper_list = NULL;
+    const char * const* shaper_list = NULL;
     if (strlen(shaper_list_string) > 0) {
-      shaper_list = scan_shaper_list(shaper_list_string);
+      shaper_list = (const char * const*)scan_shaper_list(shaper_list_string);
     }
 
     hb_direction_t direction;
@@ -185,12 +185,12 @@
     }
     glyph_info   = hb_buffer_get_glyph_infos(buf, &glyph_count);
     glyph_pos    = hb_buffer_get_glyph_positions(buf, &glyph_count);
-    lua_checkstack(L, glyph_count*10);
     for (j = 0; j < glyph_count; ++j) {
       char namebuf[255];
       hb_glyph_extents_t extents = {0,0,0,0};
       hb_font_get_glyph_extents(hbFont, glyph_info[j].codepoint, &extents);
 
+      lua_checkstack(L, 3);
       lua_newtable(L);
       lua_pushstring(L, "name");
       hb_font_get_glyph_name( hbFont, glyph_info[j].codepoint, namebuf, 255 );
@@ -206,21 +206,25 @@
       baseline, and we should use that and take out this condition. */
       if (direction != HB_DIRECTION_TTB) {
         if (glyph_pos[j].x_offset) {
+          lua_checkstack(L, 2);
           lua_pushstring(L, "x_offset");
           lua_pushnumber(L, glyph_pos[j].x_offset * point_size / upem);
           lua_settable(L, -3);
         }
 
         if (glyph_pos[j].y_offset) {
+          lua_checkstack(L, 2);
           lua_pushstring(L, "y_offset");
           lua_pushnumber(L, glyph_pos[j].y_offset * point_size / upem);
           lua_settable(L, -3);
         }
       }
 
+      lua_checkstack(L, 2);
       lua_pushstring(L, "gid");
       lua_pushinteger(L, glyph_info[j].codepoint);
       lua_settable(L, -3);
+      lua_checkstack(L, 2);
       lua_pushstring(L, "index");
       lua_pushinteger(L, glyph_info[j].cluster);
       lua_settable(L, -3);
@@ -240,17 +244,21 @@
         width = glyphAdvance;
         glyphAdvance = height;
       }
+      lua_checkstack(L, 2);
       lua_pushstring(L, "glyphAdvance");
       lua_pushnumber(L, glyphAdvance);
       lua_settable(L, -3);
 
+      lua_checkstack(L, 2);
       lua_pushstring(L, "width");
       lua_pushnumber(L, width);
       lua_settable(L, -3);
 
+      lua_checkstack(L, 2);
       lua_pushstring(L, "height");
       lua_pushnumber(L, height);
       lua_settable(L, -3);
+      lua_checkstack(L, 2);
       lua_pushstring(L, "depth");
       lua_pushnumber(L, -tHeight - height);
       lua_settable(L, -3);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/src/justenoughicu.c 
new/sile-0.14.12/src/justenoughicu.c
--- old/sile-0.14.11/src/justenoughicu.c        2023-08-23 04:56:35.732212524 
+0200
+++ new/sile-0.14.12/src/justenoughicu.c        2023-10-11 18:27:29.420052848 
+0200
@@ -311,7 +311,7 @@
   int numericOrdering = UCOL_ON; // N.B. default is UCOL_OFF
   int backwards = UCOL_OFF; // So-called 'french collation', default is 
UCOL_OFF
   // NOT IMPLEMENTED: maxVariable punct / maxVariable space
-  //     This affects 'alternate handling' with espect to spaces and/or 
punctuations
+  //     This affects 'alternate handling' with expect to spaces and/or 
punctuations
   //     I never used it and I'm lazy - assume default is ok...
   int caseFirst = UCOL_OFF; // n.B. default is UCOL_OFF
   int caseLevel = UCOL_OFF; // n.B. default is UCOL_OFF
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/tests/vertical.sil 
new/sile-0.14.12/tests/vertical.sil
--- old/sile-0.14.11/tests/vertical.sil 2023-08-23 04:56:35.756213600 +0200
+++ new/sile-0.14.12/tests/vertical.sil 2023-10-11 18:27:29.448057005 +0200
@@ -1,7 +1,7 @@
 \begin[class=jplain,layout=tate]{document}
 \nofolios
 % Note: differences between Noto font versions make adding more characters to
-% this test brittle. For examle 日本は昔からruns into trouble when the 
height
+% this test brittle. For example 日本は昔からruns into trouble when the 
height
 % of 昔 is different. If the tate layout mechanism is working, it’s going
 % to work at two characters, if a longer string fails, it’s likely some other
 % mechanism or value that actually changed.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sile-0.14.11/typesetters/base.lua 
new/sile-0.14.12/typesetters/base.lua
--- old/sile-0.14.11/typesetters/base.lua       2023-08-23 04:56:35.756213600 
+0200
+++ new/sile-0.14.12/typesetters/base.lua       2023-10-11 18:27:29.448057005 
+0200
@@ -754,7 +754,7 @@
   end
   if linestart < #nodes then
     -- Abnormal, but warn so that one has a chance to check which bits
-    -- are misssing at output.
+    -- are missing at output.
     SU.warn("Internal typesetter error " .. (#nodes - linestart) .. " skipped 
nodes")
   end
   return lines
@@ -779,7 +779,7 @@
       -- zero boxes, so as to reach actual content...
       if slice[n].value ~= "margin" then
         -- ... but any other glue than a margin, at the end of a line, is 
actually
-        -- extraneous. It will however also be accounted for below, so 
substract
+        -- extraneous. It will however also be accounted for below, so subtract
         -- them to cancel their width. Typically, if a line break occurred at
         -- a space, the latter is then at the end of the line now, and must be
         -- ignored.

Reply via email to