A modernized, complete, self-contained TeX/LaTeX engine, powered by XeTeX and TeXLive.
This is a bugfix release:
global_str
buffer
(#1055, @CraftSpider, reported in #1054 by @giammirove)This is a big release! This version of the BibTeX engine doesn’t change its behavior or APIs, but major chunks of its internals have been translated into Rust by @CraftSpider in #1032, with a bunch of new tests introduced in #1037 and #1039. This translation replaces about 2,200 lines of C code with clean, well-organized, (mostly) safe Rust. While there aren’t any major changes planned for the behavior of the BibTeX engine, this work demonstrates how the legacy C/C++ code in Tectonic can gradually be replaced with safer, more modern, more maintainable code.
This effort benefited significantly from work by @Mrmaxmeier to revitalize the tectonic-on-arXiv service, which runs Tectonic pull requests on a large corpus of arxiv.org preprints and reports any changes in the outputs.
This release features a significant, but hopefully invisible, change: Tectonic’s BibTeX engine has been partially translated from C to Rust (#1032, #1037, #1039, @CraftSpider). The intention is that the engine’s behavior should be completely unchanged, and there are not plans to make any significant alterations in the near future, but this effort demonstrates how Tectonic’s legacy C/C++ code can be migrated to cleaner, safer, more maintainable Rust over time.
There are also a few new features:
--target
option to tectonic -X build
allowing you to
specify which output to build (#1043, @xinslu).-Z deterministic-mode
, that turns on some
features that help create fully deterministic outputs (#1036, @Mrmaxmeier).
These settings aren’t desirable for day-to-day use, but they help create
byte-for-byte reproducible outputs for automated testing. This option
is part of further work by @Mrmaxmeier to bring the valuable
tectonic-on-arXiv testing service back into regular operation.As well as some developer improvements and bugfixes:
Thanks to our new contributor @xinslu and everyone else contributing to this release!
CoreBridgeLauncher::with_expose_absolute_paths
and
CoreBridgeLauncher::with_mtime_override
(#1036, @Mrmaxmeier). These help
enable the new -Z deterministic-mode
mode.