diff --git a/CHANGELOG.md b/CHANGELOG.md index 1927a54fb..bce3fd889 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,8 +1,1481 @@ -# See elsewhere for changelog +# tectonic 0.15.0 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +This release contains a grab-bag of nice improvements: -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases +- The port of Tectonic’s BibTeX engine to a pure-Rust implementation has been + completed by [@CraftSpider] ([#1077], [#1083], [#1127], [#1129])! It continues + to be the case that this change should be invisible to users, but it shows + that large chunks of Tectonic’s legacy C/C++ code can be migrated to cleaner, + safer, more maintainable Rust over time. +- The official Linux builds of Tectonic now link against OpenSSL 3.x, instead of + the old 1.1 series ([#1092], [@pkgw]). This should improve binary + compatibility on mainstream platforms. If you need a build that uses the older + series, you’ll have to compile it yourself. +- The `--web-bundle` flag can now be used in more situations, specifically + `tectonic -X new` and `tectonic -X init` ([#1132], [@bryango]). +- As part of the above work, you can now activate the "V2" interface with the + `-X` flag in more places on the Tectonic command line. +- The `Tectonic.toml` file used by the "V2" interface now supports a + `[metadata]` section for arbitrary structured user metadata ([#1120], + [@rm-dr]). This is useful for custom tools that build on top of Tectonic, + where you might want to have some custom pieces of information about each + document in a group. +- The "V2" interface also now supports external commands ([#1103], [@rm-dr]). If + you have a program named `tectonic-blah` in your search path, running + `tectonic -X blah` will execute it. +- Running `tectonic -Z help` (as opposed to `tectonic -Zhelp`) now actually + works ([#1064], [#1084], [@pkgw]). + +Build changes: + +- You can now cross-compile Tectonic to the `aarch64-unknown-linux-musl` target + ([#1089], [@pkgw]). +- MIPS is no longer supported as a build target ([#1076], [@CraftSpider]). It + dropped to Tier 3 support by the Rust language, which makes it difficult to + support in our continuous integration systems. Sorry, MIPS! + +Documentation fixes: + +- Update the Arch Linux package URL ([#1119], [@felixonmars]) +- Document `shell_escape_cwd` in `Tectonic.toml` ([#1116], [@eljamm]) +- Fix a type in the Unicode section ([#1111], [@goyalyashpal]) +- Various other corrections ([#1065], [#1068], [@ColeFrench]) + +[@CraftSpider]: https://github.com/CraftSpider +[#1064]: https://github.com/tectonic-typesetting/tectonic/pull/1064 +[#1065]: https://github.com/tectonic-typesetting/tectonic/pull/1065 +[#1068]: https://github.com/tectonic-typesetting/tectonic/pull/1068 +[#1076]: https://github.com/tectonic-typesetting/tectonic/pull/1076 +[#1077]: https://github.com/tectonic-typesetting/tectonic/pull/1077 +[#1083]: https://github.com/tectonic-typesetting/tectonic/pull/1083 +[#1084]: https://github.com/tectonic-typesetting/tectonic/pull/1084 +[#1089]: https://github.com/tectonic-typesetting/tectonic/pull/1089 +[#1092]: https://github.com/tectonic-typesetting/tectonic/pull/1092 +[#1103]: https://github.com/tectonic-typesetting/tectonic/pull/1103 +[#1111]: https://github.com/tectonic-typesetting/tectonic/pull/1111 +[#1116]: https://github.com/tectonic-typesetting/tectonic/pull/1116 +[#1119]: https://github.com/tectonic-typesetting/tectonic/pull/1119 +[#1120]: https://github.com/tectonic-typesetting/tectonic/pull/1120 +[#1127]: https://github.com/tectonic-typesetting/tectonic/pull/1127 +[#1129]: https://github.com/tectonic-typesetting/tectonic/pull/1129 +[#1132]: https://github.com/tectonic-typesetting/tectonic/pull/1132 +[@bryango]: https://github.com/bryango +[@rm-dr]: https://github.com/rm-dr +[@pkgw]: https://github.com/pkgw +[@ColeFrench]: https://github.com/ColeFrench +[@goyalyashpal]: https://github.com/goyalyashpal +[@eljamm]: https://github.com/eljamm +[@felixonmars]: https://github.com/felixonmars + + +# tectonic 0.14.1 (2023-06-15) + +This is a bugfix release: + +- [@giammirove] wins the prize for discovering the first bug in the Rust + translation of the BibTeX engine (issue [#1054]) — no small feat since our + test suite includes nearly 8000 ArXiv submissions! Correcting a line of code + that resizes an internal buffer fixes the problem ([#1055], [@CraftSpider]). +- The updated “watch” implementation failed if the path to the Tectonic + executable contained whitespace (issue [#1003], reported by [@m-haug]). + Proper quoting addresses the issue ([#1053], [@xinslu]). + +[#1003]: https://github.com/tectonic-typesetting/tectonic/issues/1003 +[#1053]: https://github.com/tectonic-typesetting/tectonic/pull/1053 +[#1054]: https://github.com/tectonic-typesetting/tectonic/issues/1054 +[#1055]: https://github.com/tectonic-typesetting/tectonic/pull/1055 +[@giammirove]: https://github.com/giammirove +[@CraftSpider]: https://github.com/CraftSpider +[@m-haug]: https://github.com/m-haug +[@xinslu]: https://github.com/xinslu + + +# tectonic 0.14.0 (2023-06-12) + +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: + +- Add a new `--target` option to `tectonic -X build` allowing you to + specify which output to build ([#1043], [@xinslu]). +- Add a new unstable option, `-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: + +- Fix some corner-case bugs in the HTML output ([#1052], [@pkgw]). +- Update the vendored version of Harfbuzz to the latest upstream release, + version 7.3.0 ([#1042], [@pkgw]). + +Thanks to our new contributor [@xinslu] and everyone else contributing to this +release! + +[#1032]: https://github.com/tectonic-typesetting/tectonic/pull/1032 +[#1036]: https://github.com/tectonic-typesetting/tectonic/pull/1036 +[#1037]: https://github.com/tectonic-typesetting/tectonic/pull/1037 +[#1039]: https://github.com/tectonic-typesetting/tectonic/pull/1039 +[#1042]: https://github.com/tectonic-typesetting/tectonic/pull/1042 +[#1043]: https://github.com/tectonic-typesetting/tectonic/pull/1043 +[#1052]: https://github.com/tectonic-typesetting/tectonic/pull/1052 +[@CraftSpider]: https://github.com/CraftSpider +[@Mrmaxmeier]: https://github.com/Mrmaxmeier +[@pkgw]: https://github.com/pkgw +[@xinslu]: https://github.com/xinslu +[tectonic-on-arXiv]: https://github.com/Mrmaxmeier/tectonic-on-arXiv + + +# tectonic 0.13.1 (2023-05-22) + +- Fix a bug introduced in the previous release where custom commands in the + `tectonic -X watch` mode broke (reported by [@LudvigHz] in [#1040], fixed by + [@CraftSpider] in [#1041]). +- Update the version of the vendored Harfbuzz library to the latest, 7.3.0 + ([@pkgw], [#1042]), and a general update of Cargo dependencies + +Big thanks to [@LudvigHz] and [@CraftSpider] for the prompt report and solution! + +[#1040]: https://github.com/tectonic-typesetting/tectonic/issues/1040 +[#1041]: https://github.com/tectonic-typesetting/tectonic/pull/1041 +[#1042]: https://github.com/tectonic-typesetting/tectonic/pull/1042 +[@LudvigHz]: https://github.com/LudvigHz +[@CraftSpider]: https://github.com/CraftSpider +[@pkgw]: https://github.com/pkgw + + + +# tectonic 0.13.0 (2023-05-18) + +This release of Tectonic adds some quality-of-life features and improves the +project's technical infrastructure in several important ways. + +- Add a new V2 command [`tectonic -X init`] that is to [`tectonic -X new`] in the + same way that `cargo init` and `cargo new` are related ([#983], [@caiogeraldes]). + It initializes a new document in the current directory, rather than creating a + new directory. +- Setting the [`shell-escape-cwd`] unstable option now implies activation of the + shell-escape feature (reported by [@mskblackbelt] in [#933], fixed by [@pkgw] in + [#966]). + +[`tectonic -X init`]: https://tectonic-typesetting.github.io/book/latest/v2cli/init.html +[`tectonic -X new`]: https://tectonic-typesetting.github.io/book/latest/v2cli/new.html +[`shell-escape-cwd`]: https://tectonic-typesetting.github.io/book/latest/v2cli/compile.html#unstable-options +[#983]: https://github.com/tectonic-typesetting/tectonic/pull/983 +[#966]: https://github.com/tectonic-typesetting/tectonic/pull/966 +[#933]: https://github.com/tectonic-typesetting/tectonic/issues/933 +[@caiogeraldes]: https://github.com/caiogeraldes +[@pkgw]: https://github.com/pkgw +[@mskblackbelt]: https://github.com/mskblackbelt + +On the infrastructure side: + +- Update many developer dependencies to newer versions ([#1033], [#1038], + [@CraftSpider]). Namely, `md-5` and `sha2` are now at 0.10, `open` is at 4.0, + `quick-xml` is at 0.28, `toml` is at 0.7, `watchexec` is at 2.3, and `zip` is + at 0.6. In the test suite, `hyper` is brought up to 0.14. Many thanks to + [@CraftSpider] for taking on this arduous task! +- Builds on Windows using [`cargo-vcpkg`] to manage [vcpkg]-based dependencies + now default to a custom target triplet named `x64-windows-static-release` that + only builds release executables, significantly speeding up builds ([#961], + [@pkgw]). You may need to set an environment variable `VCPKGRS_TRIPLET` to + this value to satisfy the `cargo-vcpkg` build system. +- Internally, there were massive updates to the `spx2html` engine to improve + Tectonic's still-experimental support for HTML output ([#1016], [@pkgw]). This + support is still not exposed usefully in the main Tectonic program, however. + The current work is in support of the prototype [Tectonopedia] project. Note + that these changes break the current version of the [tt-weave] program, which + will need updates to fix up its behavior. +- There were also many internal code tweaks to satisy the latest versions of + [`cargo clippy`]. + +[`cargo-vcpkg`]: https://crates.io/crates/cargo-vcpkg +[vcpkg]: https://vcpkg.io/ +[Tectonopedia]: https://github.com/tectonic-typesetting/tectonopedia +[`cargo clippy`]: https://github.com/rust-lang/rust-clippy +[tt-weave]: https://github.com/tectonic-typesetting/tt-weave +[#961]: https://github.com/tectonic-typesetting/tectonic/pull/961 +[#1016]: https://github.com/tectonic-typesetting/tectonic/pull/1016 +[#1033]: https://github.com/tectonic-typesetting/tectonic/pull/1033 +[#1038]: https://github.com/tectonic-typesetting/tectonic/pull/1038 +[@CraftSpider]: https://github.com/CraftSpider + +Thank you to our new contributors [@caiogeraldes] and [@CraftSpider]! You will +also note that this release marks Tectonic’s 1000th pull-request-or-issue on +GitHub. Here’s looking to the next thousand! + + +# tectonic 0.12.0 (2022-10-27) + +This release has only a few code updates: + +- Partial support for the `dvipdfmx:config` special has been added (#953, + @vlasakm). This should fix some aspects of PDF generation, including named + anchors created by `hyperref`. Other fixes might help with the `attachfile` + package, although that is awaiting further confirmation. +- A dumb crash was fixed when attempting to create HTML output with an input + that has not been set up for the Tectonic HTML compilation framework (#955, + @pkgw). Note, however, that generic documents will still fail to build in HTML + mode. The program just won't crash now. As of this release, the *only* example + of working HTML output from Tectonic is the [tt-weave] system (see below). + +More noteworthy are several non-code improvements! + +- A preliminary official build for the Apple Metal platform + (`aarch64-apple-darwin`) is now available (#959, @pkgw). Due to lack of + support in the continuous integration system we can't test the build + thoroughly, but it appears to work. +- @KaranAhlawat contributed a [how-to guide for using Tectonic in Emacs AucTeX][auctex]. +- @mnrvwl has done a fantastic job reviewing our GitHub issues, gathering more + information when needed, and closing out ones that have been solved. +- @pkgw has published *[XeTeX: A Pseudoprogram][xap]*, a digital book that + derives from Knuth's *[TeX: The Program][ttp]*. This book is generated from + the reference XeTeX code underlaying Tectonic’s typesetting using a new + processor called [tt-weave]. See [the book’s preface][xap] for more + information. + +Thank you to all of our contributors! + +[auctex]: https://tectonic-typesetting.github.io/book/latest/howto/auctex-setup/ +[tt-weave]: https://github.com/tectonic-typesetting/tt-weave/ +[xap]: https://stacks.fullyjustified.net/xap/2022.0/ +[ttp]: https://www.worldcat.org/title/876762639 + + +# tectonic 0.11.0 (2022-10-04) + +- Many updates to the experimental, unstable `spx2html` engine for creating HTML + output (#941, @pkgw). They will not be documented here because there are a lot + and the aforementioned experimental-ness and instability. This work is in + service of the [tt-weave] demo, which is almost ready for a preliminary + release. +- Add a tweak to the Harfbuzz build script that should hopefully fix builds on + macOS against old SDKs, as seen in conda-forge (#944, @pkgw). + +[tt-weave]: https://github.com/pkgw/tt-weave/ + + +# tectonic 0.10.0 (2022-10-03) + +This release updates Tectonic to support TeXLive 2022.0! There are not many code +changes in the engines, so the primary user-visible changes will stem from the +many package updates incorporated into the new TeXLive 2022.0 bundle. To switch +a preexisting Tectonic document to use the new bundle, update the `doc.bundle` +field in `Tectonic.toml` to +`https://data1.fullyjustified.net/tlextras-2022.0r0.tar`. Newly-created +documents will use this bundle (or subsequent updates) by default. + +This release also adds a new “drop-in” installation method. This adds a way to +quickly install Tectonic in the popular `curl`/`sh` style. On a Unix-like +operating system, run: + +```sh +curl --proto '=https' --tlsv1.2 -fsSL https://drop-sh.fullyjustified.net |sh +``` + +... to drop a system-appropriate `tectonic` binary in the current working directory. +On Windows, run the following in a PowerShell terminal: + +```ps1 +[System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072 +iex ((New-Object System.Net.WebClient).DownloadString('https://drop-ps1.fullyjustified.net')) +``` + +Other changes: + +- Make it so that running `tectonic -Zhelp` works (#929, @pkgw). Before it would + error out because the argument parser wanted an input filename. +- Fix `-Z continue-on-errors` (#917, @vlasakm). This was broken in an earlier + refactoring. +- Add a `-Z shell-escape-cwd=` unstable option (#909, @0x00002a). This can + work around issues in Tectonic's handing of shell-escape processing, which is + very conservative about defaulting to launching programs in a limited + environment. In particular, if you set the directory to the document source + directory, commands like `\inputminted` can work. +- It is possible for one `.tex` file to generate multiple `.aux` files. Even if + more than one of those files should have triggered its own `bibtex` run, + Tectonic only ran `bibtex` once. This is now fixed (#906, #907, @Starrah). +- Give some more context in the error message if an external (shell-escape) tool + tries to open a file that's missing (#899, @matz-e). + +The known issue relating to OpenSSL 3 is believed to still be relevant: + +- The generic prebuilt Tectonic binaries for Linux are built for the version 1.1 + series of OpenSSL. The latest Ubuntu release, 22.04 (Jammy Jellyfish), now + targets OpenSSL 3, with no compatibility fallback, which means that the + prebuilt binaries won’t run. To run Tectonic on these systems, compile it + yourself, use the “semistatic” MUSL Linux builds, or install a package built + specifically for this OS. To be clear, there are no actual issues with OpenSSL + 3 compatibility — we just need to provide an alternative set of builds. See + #892 for updates. + +Thank you to everyone who contributed to this release! + + +# tectonic 0.9.0 (2022-04-27) + +This release updates Tectonic to correspond with TeXLive 2021.3, jumping +forward from the previous sync point of TeXLive 2020.0. + +- The primary user-visible changes will stem from the many package updates + incorporated into the new TeXLive 2021.3 bundle. We don't actually have a + listing of all of the updates, but they are numerous. To switch a preexisting + Tectonic document to use the new bundle, update the `doc.bundle` field in + `Tectonic.toml` to `https://data1.fullyjustified.net/tlextras-2021.3r1.tar`. + Newly-created documents will use this bundle (or subsequent updates) by + default. +- The XeTeX engine has mostly low-level updates, but there was a significant + rework of OpenType math kerning and sub/super-scripting. There is a new + `\tracingstacklevels` integer parameter. See [the changelog for the + `tectonic_engine_xetex` Rust crate][excl] for more details. +- The xdvipdfmx engine has numerous updates including improvements for Japanese + font fallbacks. See [the changelog for the `tectonic_engine_xdvipdfmx` Rust + crate][edcl] for more details. + +[excl]: https://github.com/tectonic-typesetting/tectonic/releases/tag/tectonic_engine_xetex%400.3.0 +[edcl]: https://github.com/tectonic-typesetting/tectonic/releases/tag/tectonic_engine_xdvipdfmx%400.2.0 + +Separately, the “GitHub Discussions” feature for the Tectonic repository has +been activated: + +### + +@pkgw has found himself unable to pay proper attention to the +`tectonic.newton.cx` Discourse service, which has been fairly moribund. The +intention is to sunset it. + +We have one known issue worth highlighting: + +- The generic prebuilt Tectonic binaries for Linux are built for the version 1.1 + series of OpenSSL. The latest Ubuntu release, 22.04 (Jammy Jellyfish), now + targets OpenSSL 3, with no compatibility fallback, which means that the + prebuilt binaries won’t run. To run Tectonic on these systems, compile it + yourself, use the “semistatic” MUSL Linux builds, or install a package built + specifically for this OS. To be clear, there are no actual issues with OpenSSL + 3 compatibility — we just need to provide an alternative set of builds. See + #892 for updates. + +Other improvements include: + +- Some TeX packages attempt to read input from external processed using a “pipe” + syntax. This capability is not currently implemented in Tectonic. Such uses + now trigger a warning (#859, #888, @pkgw). +- The location of the Tectonic cache is now customizable by setting the + `TECTONIC_CACHE_DIR` environment variable (#884, @wischi-chr). People are + encouraged to use the default whenever possible, but flexibility here can be + useful in some circumstances. +- Document the V2 `-X` flag better in the documentation and CLI output (#877, + @clbarnes). +- Some memory leaks during failed builds have been plugged as part of an ongoing + (albeit slow) effort to get it so that Tectonic can be used with modern input + fuzzing tools (@pkgw). +- Allow basic `\openin` of un-closed `\openout` files to succeed (#882, @pkgw). + This should get `hyperxmp` working (#862). + + +# tectonic 0.8.2 (2022-03-02) + +No code changes here. This release uses the newly-released version 0.1.4 of the +[pinot] font parsing crate, which includes what were previously +Tectonic-specific extensions (#870, @pkgw). The "patching" build feature that we +were using turned out to break `cargo install tectonic`. Thanks to [@dfrg] for +prompt follow-up! + +[pinot]: https://crates.io/crates/pinot +[@dfrg]: https://github.com/dfrg + + +# tectonic 0.8.1 (2022-02-28) + +- The most important change in this release is a fix for issue [#844], wherein + due to an implementation oversight Tectonic could obliterate `biber` input + files whose locations were given as absolute paths ([#868], @pkgw). This + should now be solved. +- This release also includes improved (i.e., "not broken") handling of `biber` + inputs in subdirectories ([#843], [#845], @KevoSoftworks) +- A long-standing issue where outputs could vary slightly from one platform to + the next, depending on system-dependent floating-point rounding with PNG images, + was fixed ([#847], @pkgw). + +There are also two big under-the-hood changes that won't make a noticeable difference +for now, but lay the groundwork for future work: + +- The internal parameters and definitions of the Tectonic/XeTeX engine are now + introspectable thanks to a new crate, [`tectonic_xetex_format`][xf]. This + crate is now used to emit the C/C++ headers used to compile the engine. It is + also able to introspect the "format files" that store engine state, adding the + capability to answer questions such as "What are the definitions of all of the + control strings defined by this format?" This should enable some *really* + interesting supporting tools in the future! +- *Very* preliminary support for native HTML output has been added ([#865], + @pkgw). This support isn't yet generally useful since it's undocumented and + requires a suite of support files that's still being developed, but + prototyping indicates that the generated output has promise for very + high-quality mathematical rendering. The new [`tectonic_engine_spx2html`][s2h] + crate provides the main new implementation. Hopefully there will be more to + report soon! + +[#843]: https://github.com/tectonic-typesetting/tectonic/issues/843 +[#844]: https://github.com/tectonic-typesetting/tectonic/issues/844 +[#845]: https://github.com/tectonic-typesetting/tectonic/pull/845 +[#847]: https://github.com/tectonic-typesetting/tectonic/pull/847 +[#865]: https://github.com/tectonic-typesetting/tectonic/pull/865 +[#868]: https://github.com/tectonic-typesetting/tectonic/pull/868 +[s2h]: https://crates.io/crates/tectonic_engine_spx2html +[xf]: https://crates.io/crates/tectonic_xetex_format + +This release also includes the usual updates to internal dependencies, build and +testing infrastructure, and so on. + + +# tectonic 0.8.0 (2021-10-11) + +This release fixes a showstopping issue introduced by recent changes to the +`archive.org` PURL ([persistent URL]) service. All users are advised to upgrade +immediately, although it is possible to continue using older releases in some +limited circumstances. + +[persistent URL]: https://purl.prod.archive.org/help + +By default, Tectonic downloads (La)TeX resource files from the internet as +needed. Before this release, Tectonic would query a PURL in order to know where +to locate the most recent “bundle” of resource files. On Wednesday, +`archive.org` updated the implementation of its service in a way that interacted +catastrophically with the way that Tectonic processes URL redirections. The +result was that Tectonic became unable to download any of its resource files, +breaking essential functionality. Thanks to [@rikhuijzer] for providing early +reporting and diagnosis of the problem. + +[@rikhuijzer]: https://github.com/rikhuijzer + +This release fixes the redirection functionality ([#832], [@pkgw]), but more +importantly it switches from querying `archive.org` to using a new dedicated +webservice hosted on the domain `fullyjustified.net` ([#833], [@pkgw]). The +motivation for this switch is that besides this particular incident, +`archive.org` has had low-level reliability problems in the past, and more +important, it is blocked in China, preventing a potentially large userbase from +trying Tectonic. + +[#832]: https://github.com/tectonic-typesetting/tectonic/pull/832 +[#833]: https://github.com/tectonic-typesetting/tectonic/pull/833 + +The new URL that is queried is: + +https://relay.fullyjustified.net/default_bundle.tar + +The redirection is implemented with a simple nginx server defined in the new +[tectonic-relay-service] repo and hosted on Microsoft Azure cloud infrastructure +defined in Terraform configuration in the [tectonic-cloud-infra] repo. [@pkgw] owns +the domain name and Azure subscription. + +[tectonic-relay-service]: https://github.com/tectonic-typesetting/tectonic-relay-service +[tectonic-cloud-infra]: https://github.com/tectonic-typesetting/tectonic-cloud-infra +[@pkgw]: https://github.com/pkgw + +Along with the above change, this release contains the following improvements: + +- Add the [`tectonic -X dump`] V2 CLI command, which runs a partial document + build and outputs a requested intermediate file. This can help integrate + external tools into a Tectonic-based document processing workflow (#810, + @pkgw) +- Add support for custom support file search directories with the `-Z + search-path=` [unstable option][sp] (#814, @ralismark) +- Fix the `watch` V2 CLI command on Windows (#828, @Sinofine) +- Fix repeated updates in the `watch` V2 CLI command (#807, @jeffa5) +- Fix an incorrect error message when running V2 CLI commands outside of a + workspace (#813, @ralismark) +- Add a more helpful warning if an input produces empty output (#817, + @ralismark) +- Prevent an incorrect warning when reading some kinds of EXIF metadata (#822, + @korrat) +- Reject `-Z shell-escape=false`, which would be parsed as *enabling* + shell-escape (#823, @ratmice) + +[`tectonic -X dump`]: https://tectonic-typesetting.github.io/book/latest/v2cli/dump.html +[sp]: https://tectonic-typesetting.github.io/book/latest/v2cli/compile.html#unstable-options + + +# tectonic 0.7.1 (2021-07-04) + +- Improve launching of `biber` by parsing the `.run.xml` file to find out which + resource files are needed. This should hopefully allow Tectonic to process + many more documents that use `biblatex` ([#796], [#804], [@pkgw]). +- Avoid misplaced newlines in warning output ([#803], [@ralismark]). +- Fix the build on Rust 1.46, which will be helpful for the conda-forge package. + We really ought to define and monitor a Minimum Supported Rust Version (MSRV) + for Tectonic, but we haven't set that up just yet ([#802], [@pkgw]). + +[#796]: https://github.com/tectonic-typesetting/tectonic/issues/796 +[#802]: https://github.com/tectonic-typesetting/tectonic/pull/802 +[#803]: https://github.com/tectonic-typesetting/tectonic/pull/803 +[#804]: https://github.com/tectonic-typesetting/tectonic/pull/804 +[@pkgw]: https://github.com/pkgw +[@ralismark]: https://github.com/ralismark + + +# tectonic 0.7.0 (2021-06-19) + +This release of Tectonic, at long last, adds support for [biber] to enable full +use of [biblatex][biber]! Biber is a complex Perl program, so, unlike the other +Tectonic “engines,” we can’t practically embed it within the Tectonic program. +This means that document builds using biber will have lessened reproducibility +and portability, but it’s better to have that than to fail to build the document +at all. + +[biber]: http://biblatex-biber.sourceforge.net/ + +Here's a sample document that should now get fully processed: + +```tex +% adapted from https://tex.stackexchange.com/a/34136/135094: +\documentclass{article} +\usepackage[autostyle]{csquotes} +\usepackage[ + backend=biber, + style=authoryear-icomp, + sortlocale=de_DE, + natbib=true, + url=false, + doi=true, + eprint=false +]{biblatex} +\addbibresource{biblatex-examples.bib} + +\usepackage[]{hyperref} +\hypersetup{ + colorlinks=true, +} + +\begin{document} + +Lorem ipsum dolor sit amet~\citep{kastenholz}. At vero eos et accusam et justo +duo dolores et ea rebum~\citet{sigfridsson}. + +\printbibliography +\end{document} +``` + +Tectonic’s new support detects a need to run `biber` by checking for the +creation of a file whose name ends in `.bcf`, and executes the `biber` program +inside a temporary directory, slurping any files that it creates into Tectonic’s +virtualized I/O subsystem. We’ll probably need to add a few new “knobs” to allow +users to control how and when biber is run — please file an issue if you run +into any limitations! + +Under the hood, the implementation includes the beginnings of a more generic +subsystem for including external tool programs in document builds. This may turn +out to be more generally useful going forward. + + +# tectonic 0.6.4 (2021-06-17) + +- Yet another new release to try to fix the docs.rs build. I think this one may + get it right. + + +# tectonic 0.6.3 (2021-06-17) + +- Another attempt to fix the docs.rs build. +- Update Cargo dependencies while we're at it. + + +# tectonic 0.6.2 (2021-06-16) + +- Attempt to fix the i686 Arch Linux package specification +- Attempt to fix the docs.rs build, hopefully. We might have to try a few + different approaches here before we find one that works. + + +# tectonic 0.6.1 (2021-06-15) + +- No code changes; the attempt to publish 0.6.0 to Crates.io failed spuriously, + so we're retriggering the release automation. + + +# tectonic 0.6.0 (2021-06-15) + +This release adds some helpful new utilities and internal cleanups, which +involve breaking API changes (see below). + +- New V2 command `tectonic -X show user-cache-dir` to print out the + location of the per-user cache directory. FAQ, answered! (@pkgw, #786) +- New V2 command `tectonic -X bundle search` to print out listings of files + contained in the "bundle" of TeX support files. If run in a workspace + containing a `Tectonic.toml` file, the workspace’s bundle is queried; + otherwise, the default bundle is queried. (@pkgw, #786) +- New V2 command `tectonic -X bundle cat` to print out one of the support files, + with the same general behavior as the `search` command. You could also use + this to ensure that a particular file has been loaded into the local cache. + (@pkgw, #786). +- Improved security model regarding the "shell-escape" feature, which has the + potential to be abused by untrusted inputs. A new `--untrusted` argument to + the V1 CLI and `tectonic -X build` disables the use of shell-escape, and any + other known-insecure features, regardless of the presence of `-Z shell-escape` + or any other options. Therefore, if you're writing a script that processes + untrusted input, if you make sure to run `tectonic --untrusted ...` you can be + confident that further command-line arguments can't undo your sandboxing. + Furthermore, if the environment variable `$TECTONIC_UNTRUSTED_MODE` is set to + a non-empty value, the effect is as if `--untrusted` had been provided. + (@pkgw, #787) +- You know what ... get rid of the "beta" message in the V1 CLI. +- Fix SyncTeX output, we hope (e.g., #720, #744; @hulloanson, @pkgw, #762). + Tectonic's SyncTeX files should now include correct, absolute filesystem paths + when appropriate. +- Fix some broken low-level XeTeX built-ins, reported by @burrbull (@pkgw, #714, + #783) + +A few more more words on the security model: the terminology is a bit slippery +here since we of course never intend to deliver a product that has security +flaws. But features like shell-escape, while providing useful functionality, can +certainly be abused to do malicious things given a hostile input. The default UX +aims to be conservative about these features, but if a user wants to enable +them, we'll allow them -- in the same way that Rust/Cargo will compile and run +`build.rs` scripts that in principle could do just about anything on your +machine. Our main security distinction is therefore whether the input is trusted +by the user running Tectonic. The decision of whether to "trust" an input or not +is something that fundamentally has to be made at a level higher above Tectonic +itself. Therefore the goal of Tectonic in this area is to provide the user with +straightforward and effective tools to express that decision. + +For developers, this release adds two new Cargo crates to the Tectonic +ecosystem: `tectonic_docmodel`, allowing manipulation of `Tectonic.toml` files +and their related data structures; and `tectonic_bundles`, allowing manipulation +of the Tectonic support file bundles. In both cases, third-party tools might +wish to use these formats without having to pull in all of the heavyweight +dependencies of the main `tectonic` crate. And in both cases, the separation has +led to many API improvements and cleanups that greatly improve the overall code +structure. These changes break the API of the `tectonic` crate by removing some +old modules and changing the particular traits and types used to implement these +systems. (@pkgw, #785, #786) + + +# tectonic 0.5.2 (2021-06-08) + +- Update dependencies, including [`watchexec`]. We believe that this should fix + the issues with the official Windows executables that have been reported + ([#780], [#782], [@pkgw]) + +[`watchexec`]: https://github.com/watchexec/watchexec +[#780]: https://github.com/tectonic-typesetting/tectonic/issues/780 +[#782]: https://github.com/tectonic-typesetting/tectonic/pull/782 +[@pkgw]: https://github.com/pkgw + + +# tectonic 0.5.1 (2021-06-07) + +**Note:** we have reports that the official 0.5.0 Windows executables don’t +work, or don’t always work ([#780]). This is under investigation but hasn’t been +addressed yet. + +- No code changes to the main crate +- Update the Arch Linux specification files to comply better with guidelines + ([#779], [@lmartinez-mirror]) + +[#779]: https://github.com/tectonic-typesetting/tectonic/pull/779 +[@lmartinez-mirror]: https://github.com/lmartinez-mirror +[#780]: https://github.com/tectonic-typesetting/tectonic/issues/780 + + +# tectonic 0.5.0 (2021-06-06) + +This is an exciting release! After [literally years of requests][i38], Tectonic +now supports the TeX “shell escape” mechanism required by some packages like the +[minted] code highlighter ([#708]). This is chiefly thanks to [@ralismark] who +put in the work to deliver a solid implementation and track ongoing changes to +the Tectonic backend. Thank you, [@ralismark]! + +[i38]: https://github.com/tectonic-typesetting/tectonic/issues/38 +[minted]: https://ctan.org/pkg/minted +[#708]: https://github.com/tectonic-typesetting/tectonic/pull/708 +[@ralismark]: https://github.com/ralismark + +Shell-escape remains disabled by default because it is, frankly, a hack that +detracts from the reproducibility and portability of document builds. It also +has significant security implications — you should never process untrusted input +with shell-escape enabled. But in those cases where shell-escape is necessary, +you can activate it with an [unstable option] in the [“V1”] command-line +interface: + +[unstable option]: https://tectonic-typesetting.github.io/book/latest/v2cli/compile.html#unstable-options +[“V1”]: https://tectonic-typesetting.github.io/book/latest/ref/v1cli.html + +``` +tectonic -Z shell-escape my-shell-escape-document.tex +``` + +In the [“V2”] model, you can activate shell-escape by adding the following line +to one or more `[output]` sections in your [`Tectonic.toml`] file: + +[“V2”]: https://tectonic-typesetting.github.io/book/latest/ref/v2cli.html +[`Tectonic.toml`]: https://tectonic-typesetting.github.io/book/latest/ref/tectonic-toml.html + +```toml +[output] +name = 'default' +type = 'pdf' +shell_escape = true # <== add this +``` + +The other major change associated with this release is for developers. The +Tectonic implementation has now been split into a number of specialized [Rust +crates][crate], each focusing on a specific piece of the overall Tectonic +functionality. Besides helping clarify and organize the large amount of code +that goes into Tectonic, this will make it easier for developers to create +Tectonic-based tools that use part of the codebase without having to depend on +every piece of it. + +[crate]: https://doc.rust-lang.org/book/ch07-01-packages-and-crates.html + +This change was made possible by adopting a new release automation tool called +[Cranko] that project lead [@pkgw] created last summer. Cranko is based on a +novel [“just-in-time versioning”][jitv] release workflow and extensive use of +Azure Pipelines continuous integration and deployment services — together these +make it feasible to manage versioning and releases of the 20 different crates +that now live within the Tectonic [monorepo]. This may not sound like the most +exciting kind of code to write, but Cranko has made it possible to almost +entirely automate the Tectonic release processes in a way that’s been nothing +short of transformative. + +[Cranko]: https://pkgw.github.io/cranko/ +[@pkgw]: https://github.com/pkgw +[jitv]: https://pkgw.github.io/cranko/book/latest/jit-versioning/index.html +[monorepo]: https://en.wikipedia.org/wiki/Monorepo + +This change comes with a bit of a downside, in that there have been a lot of API +breaks in the `tectonic` crate, as numerous internal APIs have been improved and +rationalized. If you only use the [`tectonic::driver`] module, changes should be +minimal, but lots of support systems have changed. It is likely that there will +be additional breaks in subsequent releases as a few remaining subsystems are +split out. The good news is that the APIs in the new sub-crates should be much +better designed and better documented than many of their former incarnations in +the main crate. + +[`tectonic::driver`]: https://docs.rs/tectonic/*/tectonic/driver/index.html + +There’s the usual collection of smaller improvements as well: + +- If a document referenced a filename that corresponded to a directory that + lived on the filesystem, you could get a hard-to-interpret error. Now, + directories are ignored when looking for files. + ([#754], [#759], [@pkgw]) +- A floating-point precision issue was fixed that broke the reproducibility of + builds on 32-bit versus 64-bit systems + ([#749], [#758], [@pkgw]) +- Fix potential undefined behavior in the `tectonic_xdv` crate reported by + [@sslab-gatech] + ([#752], [#753], [@pkgw]) +- Add the ability to customize the preamble, postamble, and index files in + V2 documents ([#745], [#746], [@jeffa5]) +- Add a V2 `tectonic -X watch` command to auto-rebuild documents when their + source files get updated ([#719], [#734], [@jeffa5]) +- Add an `--open` option to `tectonic -X build` to open the document(s) + after the build finishes ([#109], [#733], [@jeffa5]) +- The usual updates to dependencies, build fixes, and documentation tweaks + +[#109]: https://github.com/tectonic-typesetting/tectonic/issues/109 +[#719]: https://github.com/tectonic-typesetting/tectonic/issues/719 +[#745]: https://github.com/tectonic-typesetting/tectonic/issues/745 +[#749]: https://github.com/tectonic-typesetting/tectonic/issues/749 +[#752]: https://github.com/tectonic-typesetting/tectonic/issues/752 +[#754]: https://github.com/tectonic-typesetting/tectonic/issues/754 +[#733]: https://github.com/tectonic-typesetting/tectonic/pull/733 +[#734]: https://github.com/tectonic-typesetting/tectonic/pull/734 +[#746]: https://github.com/tectonic-typesetting/tectonic/pull/746 +[#753]: https://github.com/tectonic-typesetting/tectonic/pull/753 +[#758]: https://github.com/tectonic-typesetting/tectonic/pull/758 +[#759]: https://github.com/tectonic-typesetting/tectonic/pull/759 +[@sslab-gatech]: https://github.com/sslab-gatech +[@jeffa5]: https://github.com/jeffa5 + + +# tectonic 0.4.1 (2021-01-03) + +- Add support for aarch64-apple-darwin when building with vcpkg +- Prototype release automation infrastructure to update the new + [tectonic-bin](https://aur.archlinux.org/packages/tectonic-bin/) AUR package. + + +# tectonic 0.4.0 (2020-12-28) + +- Introduce a prototype new “V2” command line interface, accessible by running + Tectonic with an initial `-X` argument: `tectonic -X new`. This interface is + oriented around a new document model defined by a `Tectonic.toml` definition + file. Documentation is under development in [the + book](https://tectonic-typesetting.github.io/book/latest/). Eventually, this + new interface will become the default, after a migration period. It is + currently fairly basic, but will be fleshed out in the 0.4.x release series. +- Handle USV 0xFFFF in `print()` (#678, #682, @burrbull, @pkgw) +- Update the Arch Linux `makedepends` definitions (#691, @snowinmars) +- Update various Cargo dependencies. + + +# tectonic 0.3.3 (2020-11-16) + +- When testing whether the engine needs rerunning, compare the new file to the + entire old file, not just the part that was read by the engine. Should fix + unnecessary reruns in some less-common cases. (#679, #681, @pkgw) + + +# tectonic 0.3.2 (2020-11-14) + +- Slightly alter how some filenames are looked up. Before, if the TeX code + requested a file whose name contained an extension, e.g. `foo.bar`, if no such + file was available in the bundle we gave up immediately. Now we also check for + `foo.bar.tex` and friends. This fixes the `lipsum` package in TeXLive 2020.0 + (#669, #680, @pkgw), and quite possibly some other miscellaneous packages as + well. + + +# tectonic 0.3.1 (2020-11-02) + +- Fix compilation on Windows/MSVC (`sys/time.h` is not available) +- Don't print an empty `error:` line in the CLI (#665, #670) + + +# tectonic 0.3.0 (2020-11-01) + +The 0.3 series updates the core Tectonic engines to align with the code in +[TeXLive 2020.0][tl2020.0]. The default “bundle” of support files will soon be +updated to match TeXLive 2020.0 as well. Standard usages should work if you use +an older version of Tectonic with the new bundle, and vice versa, but we +recommend that you update your installations to the 0.3 promptly if you can. + +[tl2020.0]: https://www.tug.org/texlive/ + +This release introduces a straightforward but **breaking change** to the API of +the `tectonic` Rust crate, documented below. + +For context, Tectonic’s core TeX implementation is forked from the [XeTeX] +engine. Accumulated changes to XeTeX are periodically reviewed and imported into +Tectonic, a process that must be done manually because Tectonic’s modernized +developer and user experiences demand a huge amount of customization. (The +scripts to support the first stage of this process may be found in the +[tectonic-staging] repository.) It has been a while since the last +synchronization, but this release incorporates the new changes introduced +between the last update and the release of TeXLive 2020.0. + +[XeTeX]: https://tug.org/xetex/ +[tectonic-staging]: https://github.com/tectonic-typesetting/tectonic-staging + +The changes for TeXLive 2020.0 include: + +- New low-level primitives including `\filemoddate`, `\filedump`, + `\uniformvariate`, `\elapsedtime`, and a few others. +- Tweaks to how font design sizes are mapped to TeX values +- New magic numbers used in PDF last x/y position accounting, + instead of `cur_[hv]_offset`. +- Don't `print_raw_char` in `show_context` with `trick_buf` +- Back up `cur_cs` in `scan_keyword` and `compare_strings`. +- Handle `XETEX_MATH_GIVEN` in `scan_something_internal` +- If encountering an unexpandable primitive in `scan_something_internal`, + try to deal with it. Ditto for `scan_int`. +- Do something different with active characters in `str_toks_cat` +- Rework how file names are scanned. +- Defend against undefined eTeX registers in `main_control` +- Some `uc_hyph` tweak deep in the linebreaking algorithm + +There are also numerous changes in Tectonic’s included `xdvipdfmx`. + +The implementation of the `\filemoddate` API required a **breaking change** to +the API of the `tectonic` Rust crate: + +- We needed to add more data to the data structures of the `MemoryIo` provider. + Migration should be pretty easy: instead of `files` containing a bunch of + `Vec`s, it now contains a bunch of `MemoryFileInfo` structs that contain a + `Vec` field named `data`. So you just need to add some `.data` field + accessors to existing code. This API clearly needs some polish to allow + greater stability going forward. + +Other changes: + +- Issue a warning if `xdvipdfmx` needs to translate a VF font to PK format, + which is unimplemented in Tectonic (it relies on `mktexpk`) and so causes + failures on certain documents that work with XeTeX. +- The Windows [vcpkg]-based build is temporarily disabled, as vcpkg currently has + [a debilitating issue][vcpkg-issue] relating to SSL on Windows. +- There is a new `-Z continue-on-errors` unstable option that tells the engine + to emulate the classic TeX style of plunging on ahead even in the face of + severe errors. This is a nice example of the possibilities unlocked by the new + `-Z` infrastructure introduced in 0.2! + +[vcpkg]: https://github.com/microsoft/vcpkg +[vcpkg-issue]: https://github.com/tectonic-typesetting/tectonic/issues/668 + + +# tectonic 0.2.0 (2020-10-21) + +The 0.2 series finally adds "unstable" `-Z` flags! These allow you to configure +engine options that are relatively low-level. The hope is to eventually set +these kinds of things in a `Tectonic.toml` file, so their use is mildly +discouraged, and long-term availability is not guaranteed. But there are plenty +of times when such flags can be helpful. The currently supported options are: + +- `-Z min-crossrefs=` controls the `-min-crossrefs` option of standalone `bibtex` +- `-Z paper-size=` lets you control the output paper size, rather than + hardcoding it to be US Letter. + +Enormous thanks to @ralismark for finally implementing this! (#657) Now that the +infrastructure is in place, suggestions for additional flags are more than +welcome. + + +# tectonic 0.1.17 (2020-10-13) + +- Fix source-based installation by updating to cbindgen 0.15, after later + releases in the 0.14 series were yanked (@qtfkwk, #656) +- Fix unreachable code in the CID/Type0 code (@burrbull, @pkgw, #639, #646) +- Update the `cargo vcpkg` build process to use a newer version of `vcpkg`, fixing + Windows builds when msys2.org is unreliable (@pkgw). + + +# tectonic 0.1.16 (2020-10-02) + +- Add a "plain" backend for reporting status, used when the program is not + attached to a TTY. It will print out reports with colorization. (#636, + @ralismark) +- Start adding infrastructure to automate the creation of bindings from the + C/C++ code to the Rust code, using `cbindgen`. (#643, @ralismark) +- Update the code-coverage infrastructure to gather coverage information + from invocations of the CLI executable inside the test suite (@pkgw) +- Fully automated deployment should really actually totally work this time. + + +# tectonic 0.1.15 (2020-09-10) + +- Building on the work done in 0.1.13, we now capture and report diagnostics + nearly everywhere! Great work contributed by @ralismark (#635). +- Yet more revisions to the automated deployment system. Maybe *this* will be + the time that it all works (@pkgw, #637). + + +# tectonic 0.1.14 (2020-09-08) + +- No code changes from 0.1.13. Just trying to iron out some of the automated + deployment systems. Is this the time that the Arch Linux auto-deployment + finally works?? + + +# tectonic 0.1.13 (2020-09-07) + +It has once more been a long time since the last release. But this new release +features a move to a new release automation framework, [Cranko], which is +intended to promote a more aggressive release policy going forward. Cranko is +the result of a *lot* of careful thinking and design — resulting in a scheme +called [just-in-time versioning][jitv] — and it should offer a tractable and +low-friction framework for making releases even when there are many crates in +one repository. + +[Cranko]: https://github.com/pkgw/cranko +[jitv]: https://pkgw.github.io/cranko/book/latest/jit-versioning/ + +User-facing improvements: + +- Select core TeX warnings — notably, over/underfull boxes — are now surfaced as + Tectonic warnings, and not just reported in the detailed log files! The + infrastructure is now available to capture many more such warnings as needed. + (#625; @ralismark, @pkgw) +- Fix a few algorithmic mistakes introduced in manual editing of the C code. + Great catches by @burrbull! (#617, #624) +- Improve log formatting with backticks around filenames and human-friendly file + sizes (#539; @as-f) +- Fix segfaults (!) upon errors (#579, #606; @fmgoncalves) +- Default bibtex's `min_crossrefs` to 2, not 0 (#534; @jneem) +- Help debug "lost characters" with their detailed hex codes (#600; @pkgw) + +Developer-facing improvements: + +- CI system has been completely revamped to use [Cranko] and route entirely + through Azure Pipelines. Maintainability should be massively improved (@pkgw) +- Releases should now include pre-built binaries for a variety of architectures + (@pkgw). +- Switched to `app_dirs2`, since `app_dirs` is unmaintained (#620; @kornelski) +- Enable reproducible-ish builds through `cargo vcpkg` (#593; @mcgoo) +- Update to the 0.9 series of the `rust-crypto` packages (#596; @pkgw) +- Attempt to fix automated Arch Linux build (#587; @thomaseizinger) +- Fix a memory leak (#536; @elliott-wen) +- The usual large number of dependency updates with DependaBot. + + +# 0.1.12 (2019 Dec 6) + +It has been just more than a year since the last Tectonic release, mainly +because I (@pkgw) +[started a new job](https://newton.cx/~peter/2018/operation-innovation/) that +has massively restructured how I spend my time. But that is not to say that +things have been quiet for Tectonic! I count 81 pull requests merged since +0.1.11. (Ignoring automated ones issued by Dependabot.) + +User-facing improvements: + +- Thanks to @efx we now have the beginnings of + [a Tectonic book](https://tectonic-typesetting.github.io/book/)! It is + currently very sparse, but we hope to gradually flesh it out. The book is + updated automatically upon merges to `master` and with tagged releases as + well (if @pkgw wired up the infrastructure correctly). (#427, #444, #445, + #447, #505; @efx @PHPirates @pkgw) +- Tectonic’s caching scheme is now much smarter, saving a local copy of the + table-of-contents file associated with each online bundle. This means that + Tectonic doesn’t need to hit the network at all if a new file is referenced + that is not present in the bundle, and saves a large download if a new + needed file *is* present in the bundle. (#431; @rekka) +- Performance has been improved by avoiding the computation of SHA256 hashes + for read-only files. Since these files are known not to change, we don’t + have to monitor their contents. (#453; @rekka) +- Warnings are only flagged if they occur on the final pass of the TeX engine, + since sometimes ones that occur in the first pass get fixed by subsequent + reruns. (#458; @rekka) + +There have been a *ton* of developer-facing improvements: + +- Tectonic is now built using the Rust 2018 edition! (#388; @Mrmaxmeier) +- @Mrmaxmeier built an amazing system to start doing + [crater](https://github.com/rust-lang/crater)-like runs of Tectonic on the + [arxiv.org](https://arxiv.org) corpus, yielding bug fixes across the + codebase including issues with obscure PNG formats. (#401; @Mrmaxmeier) +- It is now possible to build various statically-linked versions of Tectonic. + One way to accomplish this is to turn off the new `serialization` Cargo + feature. This eliminates the use of Rust “procedural macros” in the build + process which in turn allows Tectonic to be built on statically-linked + platforms. (Note, however, that it is possible to build Tectonic for + statically-linked platforms *with* the serialization feature by + cross-compiling it from a dynamically-linked platform. This is the tactic + used by the Tectonic CI build system.) @efx also + [wrote instructions for how to accomplish a mostly-static build on macOS using vcpkg](https://tectonic-typesetting.github.io/book/latest/cookbook/vcpkg.html) + as well as + [how to do it on Linux/musl using Docker](https://github.com/tectonic-typesetting/tectonic/tree/master/dist/docker/x86_64-alpine-linux-musl) + (#260, #261, #325, #425, #451; @efx, @malbarbo, @pkgw) +- Tectonic now distributes a continuous-deployment + [AppImage](https://appimage.org/) build. (#283, #285; @pkgw, @probonopd, + @xtaniguchimasaya) +- The size of the binary has decreased somewhat by using a smaller collection + of compression libraries; avoiding the use of exceptions and RTTI in the + compiled C++ code; avoiding the use of the `aho_corasick` crate; and making + the `toml` crate optional. (#428, #439, #440, #491; @malbarbo) +- Tectonic now uses the + [reqwest](https://docs.rs/reqwest/0.10.0-alpha.2/reqwest/) crate as its HTTP + backend instead of direct use of [hyper](https://hyper.rs/). Reqwest offers + a simpler interface and adds better support for things like HTTP proxies and + cookie handling. These new features do increase the binary + size somewhat. (#330, @spl) +- Tectonic can now be built on `x86_64-pc-windows-msvc` by using + [vcpkg](https://github.com/microsoft/vcpkg) to discover dependent libraries. + This can be activated by setting the new environment variable + `TECTONIC_DEP_BACKEND=vcpkg` during the build process. (#420; @mcgoo) +- Potential issues with cross-compilation are fixed by properly respecting + `CARGO_TARGET_*` environment variables rather than using `cfg!()` macros, + which have the wrong values in the `build.rs` script. This support is + provided by a new `tectonic_cfg_support` crate that may be of interest to + other projects. (#477; @pkgw @ratmice) +- Tectonic now comes with beta-level fuzzing support using + [cargo-fuzz](https://github.com/rust-fuzz/cargo-fuzz). It is hoped that + eventually this infrastructure will help identify and close some truly + obscure and gnarly bugs in the Tectonic language implementation. At present, + the usefulness of the fuzzer is limited by memory leaks within multiple + reruns of the Tectonic engine, although in the process of setting up the + fuzzer several egregious leaks were fixed. (#315; @cyplo @pkgw) +- The Rust codebase is now formatted according to + [rustfmt](https://github.com/rust-lang/rustfmt) and generates no + [clippy](https://github.com/rust-lang/rust-clippy) complaints, and the CI + system now checs for these. (#282, #336, #337, #338, #339, #340, #341, #342, + #343, #344, #345, #346, #347, #348, #349, #352, #353; @pkgw @spl) +- A new `profile` feature allows building a debug version of the program + suitable for profiling. (#511; @ratmice) +- The test suite now covers the bibtex tool. (#407; @Mrmaxmeier) +- The test suite also now covers the local cache and tar bundle code. (#441; + @rekka) +- The CLI client now parses arguments using the `structopt` crate. (#465, #474; + @efx @Mrmaxmeier) +- A new `DirBundle` bundle backend provides a simple way for the engine to + access a bunch of files in a directory, although it is not yet wired up + to the CLI interface in a convenient way. (#492; @malbarbo) +- The current date tracked by the TeX engine is now settable from the Rust + level. (#486; @Mrmaxmeier). +- More cleanups and symbolification of the C/C++ code (#317, #327, #350, #398; + @Mrmaxmeier @pkgw @spl) +- C++ compilation on certain versions of g++ was fixed (#265; @pkgw) +- Fix deprecation warnings from the `error_chain` crate (#351; @spl) +- Improvements to the Travis CI infrastructure, output clarity, and + reliability. (#354, #360, #362, #394, #424, #443; @efx @rekka @spl) +- Attempts were made to increase the reliability of the Circle CI build, which + uses QEMU to compile Tectonic for a big-endian architecture. Unfortunately + it still just times out sometimes. (#290, #296; @pkgw) +- The deprecated `tempdir` crate has been replaced with `tempfile`. (#387; + @ratmice) +- Usage of `app_dirs` directories is now encapsulated better. (#429, #432; + @malbarbo @rekka) +- Bugs in reading unusual PDF files were fixed. (#396; @pkgw) +- A missing space in bibtex error messages is now back. (#485; @jneem) +- A memory corruption issue in the bibtex engine was fixed. (#493; @jneem) + + +# 0.1.11 (2018 Nov 5) + +This release is mainly about the following change: + +- The URL embedded in the code that points to the default bundle has been + changed to point to the archive.org domain. Hopefully this will result in + more reliable service — there have been problems with SSL certificate + updates on purl.org in the past + ([#253](https://github.com/tectonic-typesetting/tectonic/pull/253)). + +Developer-facing improvements: + +- The main crate now provides an all-in-one function, + `tectonic::latex_to_pdf()`, that does what it says, using “sensible” + defaults. Run a full TeX processing session, end-to-end, in a single + function call! + ([#252](https://github.com/tectonic-typesetting/tectonic/pull/252)) +- In support of the previous change, the behavior of the Rust code was changed + to use a static global + [mutex](https://doc.rust-lang.org/std/sync/struct.Mutex.html) to serialize + invocations of the C/C++ engine implementations, which currently include + massive amounts of global state and thus cannot be run in a multithreaded + fashion. The recommended approach used to be for users of the library to + provide such a mutex themselves. [@pkgw](https://github.com/pkgw) was + initially reluctant to include such a mutex at the crate level since he + feared the possibility of weird surprising behavior … but the *real* weird + surprising behavior is when you try to run the engine in a multithreaded + program and it blows up on you! +- *Also* in support of the previous change, the framework for running the test + suite has been revamped and improved. We can now run doctests that invoke + the full engine, and the tests of the executable artifacts now activate a + special debug mode that prevents accesses of the network and/or the calling + user’s personal resource file cache. +- The usual work on tidying the C/C++ code, and also more work towards the + planned HTML output mode. Activating the experimental “semantic pagination” + mode now alters the engine behavior in two key ways: it disables the + linebreaker and custom output routines. This breaks processing of all extant + documents, but [@pkgw](https://github.com/pkgw) believes that these changes + are important steps toward reliable generation of HTML output. + ([#237](https://github.com/tectonic-typesetting/tectonic/pull/237), + [#239](https://github.com/tectonic-typesetting/tectonic/pull/239), + [#245](https://github.com/tectonic-typesetting/tectonic/pull/245), + [#250](https://github.com/tectonic-typesetting/tectonic/pull/250)) + + +# 0.1.10 (2018 Sep 28) + +This release is mainly about upgrading a dependency related to SSL/TLS to +increase the range of systems on which Tectonic can be compiled. + +User-facing improvements: + +- Tectonic now correctly handles Unicode filenames — even ones containing + emoji! — without crashing + ([#165](https://github.com/tectonic-typesetting/tectonic/pull/165)). + +Developer/packager-facing improvements: + +- Tectonic now depends on the 0.3.x series of + [hyper-native-tls](https://crates.io/crates/hyper-native-tls), which can + build against the 1.1.x series of [OpenSSL](https://www.openssl.org/). + + +# 0.1.9 (2018 Sep 15) + +User-facing improvements: + +- Tectonic is now available on Windows! + ([#210](https://github.com/tectonic-typesetting/tectonic/pull/210), + [#231](https://github.com/tectonic-typesetting/tectonic/pull/231)). There + are likely to be rough edges to both the developer and user experience, but + the test suite passes and Windows is now included in the CI infrastructure. + Big thanks to new contributor [@crlf0710](https://github.com/crlf0710) who + really got the ball rolling on this important milestone. +- Fully offline operation is now much improved: + - There is a new `--only-cached` (AKA `-C`) option that will avoid all + Internet connections + ([#203](https://github.com/tectonic-typesetting/tectonic/pull/203)). While + Tectonic takes pains to avoid needing an Internet connection when compiling + documents, there are still times when you can get more done by explicitly + preventing it from even trying to talk to the network. + - The `--bundle` and `--web-bundle` options finally work again. The switch + to on-the-fly generation of format files broke them due to an internal + implementation problem; this has now been fixed + ([[#181](https://github.com/tectonic-typesetting/tectonic/pull/181)). + - If you put a `file://` URL into your Tectonic configuration file as your + default bundle, Tectonic will now load it correctly + ([#211](https://github.com/tectonic-typesetting/tectonic/pull/211)). + +Internal improvements: + +- Tectonic now avoids panicking from Rust into C code, which is not supported + behavior ([#91](https://github.com/tectonic-typesetting/tectonic/pull/91)). + Thanks to [@rekka](https://github.com/rekka) for persistence in getting this + one across the finish line. +- Tectonic now avoids crashing when trying to open empty filenames + ([#212](https://github.com/tectonic-typesetting/tectonic/pull/212)). + +Developer-facing improvements: + +- Tectonic is now more up-front about the fact that it requires Harfbuzz + version 1.4 or higher. +- Much of the code that drives compilation for the CLI tool has been moved + into the Tectonic library and has been made (more) reusable + ([#184](https://github.com/tectonic-typesetting/tectonic/pull/184)). Thanks + to new contributor [@jneem](https://github.com/jneem) for doing this! + + +# 0.1.8 (2018 Jun 17) + +This release contains a variety of bugfixes and features-in-development. + +User-facing improvements: + +- A prominent warning is now emitted when missing characters are encountered + in a font. The hope is that this will help un-confuse users who include + Unicode characters in their input files without loading a Unicode-capable + font. Before this change, such characters would just not appear in the + output document. +- Fix the implementation of the DVI “POP” operator, which was broken due to a + typo. This should fix various corner-case failures to generate output. +- The `.toc` and `.snm` output files emitted by Beamer are now treated as + intermediate files, and therefore not saved to disk by default (contributed + by Norbert Pozar). +- Various hardcoded `bibtex` buffer sizes are increased, allowing larger + bibliographies to be handled. +- Format files are now stored uncompressed. The compression did not save a ton + of disk space, but it did slow down debug builds significantly (contributed + by @Mrmaxmeier). +- The C code has been synchronized with XeTeX as of its Subversion + revision 46289. The chief difference from before is the use of newer + [Harfbuzz](https://www.freedesktop.org/wiki/Software/HarfBuzz/) features for + rendering OpenType math fonts, which should substantially improve “Unicode + math” output. + +Work towards HTML output: + +- The first steps have been taken! In particular, the engine now has an + internal flag to enable output to a new “SPX” format instead of XDV. SPX + stands for Semantically Paginated XDV — based on my (PKGW’s) research, to + achieve the best HTML output, the engine will have to emit intermediate data + that are incompatible with XDV. At the moment, SPX is the same as XDV except + with different identifying bytes, but this will change as the work towards + excellent HTML output continues. The command-line tool does **not** provide + access to this output format yet, so this work is currently purely internal. +- In addition, there is a stub engine called `spx2html` that will translate + SPX to HTML. At the moment it is a barely-functional proof-of-concept hook, + and it is not exposed to users. +- A new internal crate, `tectonic_xdv`, is added. It can parse XDV and SPX + files, and is used by the `spx2html` engine. + +Test suite improvements: + +- The test suite now supports reliable byte-for-byte validation of PDF output + files, through the following improvements: + - It is now possible for the engine to disable PDF compression (contributed + by @Mrmaxmeier). + - `xdvipdfmx` gained a mode to reproducibly generate the “unique tags” + associated with fonts. +- The testing support code is now centralized in a single crate (contributed + by @Mrmaxmeier). +- Continuous integration (CI) coverage now includes Linux and a big-endian + platform. +- The CI coverage now includes code coverage monitoring. + +Internal improvements: + +- Much of the command-line rebuild code has been moved inside the `tectonic` + crate so that it can be reused in a library context (contributed by @jneem). + +Improvements to the C code. As usual, there has been a great deal of tidying +that aims to make the code more readable and hackable without altering the +semantics. Many such changes are omitted below. + +- Tectonic’s synchronization with XeTeX is now tracked in version control + formally, by referencing the + [tectonic_staging](https://github.com/tectonic-typesetting/tectonic-staging) + repository as a Git submodule. It is not actually necessary to check out + this submodule to build Tectonic, however. +- The C code now requires, and takes advantage of, features in the + [C11](https://en.wikipedia.org/wiki/C11_(C_standard_revision)) revision of + the language standard. +- All remaining pieces of C code that needed porting to the Rust I/O backend + have been ported or removed. +- Virtually all hardcoded strings in the string pool have been removed + (contributed by @Mrmaxmeier). +- The C code has been split into a few more files. Some subsystems, like the + “shipout” code, use a lot of global variables that have been made static + thanks to the splitting. +- A big effort to clarify the pervasive and unintuitive `memory_word` + structure. +- Effort to tidy the `line_break()` function and significantly increase its + readability. This is in support of the goal of producing HTML output, for + which I believe it is going to be necessary to essentially defuse this + function. + + +# 0.1.7 (2017 Nov 15) + +(Copy-pasted from [the relevant forum post](https://tectonic.newton.cx/t/announcing-tectonic-0-1-7/76)). + +This is a fairly modest release — things have been very quiet lately as real +life and the day job have dominated my time. + +The most visible change is that I just figured out how to fix +[issue #58](https://github.com/tectonic-typesetting/tectonic/issues/58) — +Tectonic would fail to parse certain PDF images if one tried to include them +in a document. There was a bit of a silly bug in the Rust I/O layer that was +not getting exposed except in fairly specialized circumstances. It’s squashed +now! So certain documents that used to fail to compile should work now. + +There’s also been yet more nice work behind the scenes by some of our +indefatigable contributors: + +- @Mrmaxmeier contributed a whole bunch of cleanups to the C code as well as + fixes that should allow you to generate multiple PDFs inside a single + process. +- Ronny Chevalier updated the compilation infrastructure to work in parallel + and in the end contributed some features to Rust’s upstream [gcc] crate! + +There have been intermittent problems lately with the SSL certificate to the +purl.org domain which we use to seed the default “bundle” of LaTeX files. It’s +working for me at the moment, so it’s not totally busted, but the problem +seems to have come and gone over the past few weeks. See +[this thread](https://tectonic.newton.cx/t/problems-caused-by-expired-ssl-certificate-for-purl-org/75/1) +for more information and a workaround. + + +# 0.1.6 (2017 Jul 9) + +(Copy-pasted from +[the relevant forum post](https://tectonic.newton.cx/t/announcing-tectonic-0-1-6/45)). + +The version increment may be small but the project has seen an enormous amount +of work since the previous release, thanks to an awesome group of new +contributors. Here are some of the highlights: + +- Tectonic is now available for installation on Arch Linux as + [an AUR package](https://aur.archlinux.org/packages/tectonic/) and on macOS + as [a Homebrew formula](http://brewformulas.org/Tectonic), thanks to the + hard work of Alexander Bauer, Alexander Regueiro, Jan Tojnar, Kevin Yap, and + @ilovezfs. +- The web fetching is more robust and safer, using HTTPS by default + ([#69](https://github.com/tectonic-typesetting/tectonic/pull/69), Ronny + Chevalier) and more properly handling CDN redirections + ([#114](https://github.com/tectonic-typesetting/tectonic/pull/114), + @Mrmaxmeier) +- Input and output filenames with spaces and non-local paths are now handled + much better all around + ([#44](https://github.com/tectonic-typesetting/tectonic/pull/44), Alexander + Bauer; [#89](https://github.com/tectonic-typesetting/tectonic/pull/89), + Norbert Pozar; + [#94](https://github.com/tectonic-typesetting/tectonic/pull/94), Peter + Williams) +- SyncTeX output is now fully supported, activated with the new `--synctex` + option ([#55](https://github.com/tectonic-typesetting/tectonic/pull/55), + [#73](https://github.com/tectonic-typesetting/tectonic/pull/73), Norbert + Pozar) +- The output files can be placed in a directory other than the input directory + if the new `--outdir` or `-o` option is specified + ([#104](https://github.com/tectonic-typesetting/tectonic/pull/104), Felix + Döring) +- Tectonic will cleanly process TeX code provided on standard input if the + input path argument is `-` + ([#94](https://github.com/tectonic-typesetting/tectonic/pull/94), Peter + Williams) +- Tectonic's first new primitive, + [\TectonicCodaTokens](https://tectonic.newton.cx/t/engine-extension-tectoniccodatokens/16), + has been added to allow + [boilerplate-free document processing](https://tectonic.newton.cx/t/boilerplate-free-latex-documents/29) + (Peter Williams). +- The API docs can be, and are, built on [docs.rs](https://docs.rs/tectonic) + as of this release. + +Furthermore, I've launched a +[Tectonic forum site](https://tectonic.newton.cx/) (running an instance of the +[Discourse.org](https://www.discourse.org/) software). This is a bit of an +experiment since the project is so young and there are of course other venues, +like [GitHub issues](https://github.com/tectonic-typesetting/tectonic/issues) +and the [TeX StackExchange](https://tex.stackexchange.com/), for having +relevant discussions. But, by launching the Discourse site, we gain a venue +for project news (like this announcement!), more open-ended technical +discussions, Tectonic-specific tips and tricks that may not fit the +StackExchange model, and a knowledge base of answers to the roadblocks that +are so common in the TeX/LaTeX ecosystem. We hope that the forums will become +a valuable complement to the other community areas that are already out there. + +Here are some more improvements since the 0.1.5 release: + +- Some early work has occurred to make it possible to build Tectonic on + Android ([#105](https://github.com/tectonic-typesetting/tectonic/pull/105), + Marco Barbosa) +- The project’s build infrastructure is now more efficient + ([#60](https://github.com/tectonic-typesetting/tectonic/pull/60), Norbert + Pozar; [#116](https://github.com/tectonic-typesetting/tectonic/pull/116), + Ronny Chevalier) +- The style of the translated C code has been improved enormously thanks to + both manual interventions and the use of the neat tool + [Coccinelle](http://coccinelle.lip6.fr/), reducing warnings and increasing + cleanliness and portability + ([#66](https://github.com/tectonic-typesetting/tectonic/pull/66), + [#76](https://github.com/tectonic-typesetting/tectonic/pull/76), + [#83](https://github.com/tectonic-typesetting/tectonic/pull/83), + [#92](https://github.com/tectonic-typesetting/tectonic/pull/92), + [#107](https://github.com/tectonic-typesetting/tectonic/pull/107), + [#112](https://github.com/tectonic-typesetting/tectonic/pull/112), Ronny + Chevalier; + [#105](https://github.com/tectonic-typesetting/tectonic/pull/105), Norbert + Pozar; [#94](https://github.com/tectonic-typesetting/tectonic/pull/94), + [#98](https://github.com/tectonic-typesetting/tectonic/pull/98), Peter + Williams ) +- The test suite now covers behaviors of the Tectonic command-line program + itself ([#84](https://github.com/tectonic-typesetting/tectonic/pull/84), + Alexander Bauer) +- We now correctly run `bibtex` when using the `amsrefs` package + ([#48](https://github.com/tectonic-typesetting/tectonic/pull/48), Norbert + Pozar) +- Tectonic will correctly try a wider variety of file extensions when trying + to open resources + ([#93](https://github.com/tectonic-typesetting/tectonic/pull/93), Marek + Šuppa; [#100](https://github.com/tectonic-typesetting/tectonic/pull/100), + Norbert Pozar) +- Cached bundle files are now made read-only + ([#55](https://github.com/tectonic-typesetting/tectonic/pull/55), Alexander + Bauer) +- We’ve fixed a subtle path handling issue that was harming generation of the + standard LaTeX format + ([#77](https://github.com/tectonic-typesetting/tectonic/pull/77), Norbert + Pozar) +- Very large bibliographies are now better supported + ([#87](https://github.com/tectonic-typesetting/tectonic/pull/87), Marek + Šuppa) +- The UI now makes it clearer that network failures are not likely Tectonic’s + fault ([#88](https://github.com/tectonic-typesetting/tectonic/pull/88), + Marek Šuppa) +- It is now theoretically possible to load Omega font metrics files + ([#97](https://github.com/tectonic-typesetting/tectonic/pull/97), Peter + Williams) +- Output log files are now produced if `--keep-logs` is specified and an error + occurs ([#103](https://github.com/tectonic-typesetting/tectonic/pull/103), + Norbert Pozar) + +There are a few known problems with this release: + +- Tectonic doesn’t support HTTP proxies, and in some parts of the world you + can’t access the [purl.org](https://purl.org/) website that Tectonic checks + for its bundle. You can work around this by + [creating a custom configuration file](https://tectonic.newton.cx/t/how-to-use-tectonic-if-you-can-t-access-purl-org/44). +- Tectonic doesn’t have a mechanism to invoke the + [biber](http://biblatex-biber.sourceforge.net/) tool, so it cannot easily + work for anyone that uses + [biblatex](http://mirrors.rit.edu/CTAN/help/Catalogue/entries/biblatex.html). + This is a common complaint so it would be great to see a workaround be + devised + ([relevant issue](https://github.com/tectonic-typesetting/tectonic/issues/35))! + +Enormous thanks are in order to everyone who’s started contributing to the +project. + + +# Previous releases + +Are not documented here. Consult the Git history. diff --git a/Cargo.lock b/Cargo.lock index 2d5e5de82..db7977838 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2324,7 +2324,7 @@ dependencies = [ [[package]] name = "tectonic" -version = "0.0.0-dev.0" +version = "0.15.0" dependencies = [ "atty", "byte-unit", @@ -2370,7 +2370,7 @@ dependencies = [ [[package]] name = "tectonic_bridge_core" -version = "0.0.0-dev.0" +version = "0.4.1" dependencies = [ "cc", "flate2", @@ -2384,7 +2384,7 @@ dependencies = [ [[package]] name = "tectonic_bridge_flate" -version = "0.0.0-dev.0" +version = "0.1.7" dependencies = [ "flate2", "libc", @@ -2392,21 +2392,21 @@ dependencies = [ [[package]] name = "tectonic_bridge_freetype2" -version = "0.0.0-dev.0" +version = "0.2.0" dependencies = [ "tectonic_dep_support", ] [[package]] name = "tectonic_bridge_graphite2" -version = "0.0.0-dev.0" +version = "0.2.2" dependencies = [ "tectonic_dep_support", ] [[package]] name = "tectonic_bridge_harfbuzz" -version = "0.0.0-dev.0" +version = "0.2.9" dependencies = [ "cc", "tectonic_bridge_graphite2", @@ -2415,14 +2415,14 @@ dependencies = [ [[package]] name = "tectonic_bridge_icu" -version = "0.0.0-dev.0" +version = "0.2.1" dependencies = [ "tectonic_dep_support", ] [[package]] name = "tectonic_bundles" -version = "0.0.0-dev.0" +version = "0.3.1" dependencies = [ "flate2", "fs2", @@ -2435,14 +2435,14 @@ dependencies = [ [[package]] name = "tectonic_cfg_support" -version = "0.0.0-dev.0" +version = "0.1.4" dependencies = [ "lazy_static", ] [[package]] name = "tectonic_dep_support" -version = "0.0.0-dev.0" +version = "0.1.1" dependencies = [ "pkg-config", "vcpkg", @@ -2450,7 +2450,7 @@ dependencies = [ [[package]] name = "tectonic_docmodel" -version = "0.0.0-dev.0" +version = "0.2.2" dependencies = [ "serde", "tectonic_errors", @@ -2459,7 +2459,7 @@ dependencies = [ [[package]] name = "tectonic_engine_bibtex" -version = "0.0.0-dev.0" +version = "0.2.2" dependencies = [ "libc", "tectonic_bridge_core", @@ -2469,7 +2469,7 @@ dependencies = [ [[package]] name = "tectonic_engine_spx2html" -version = "0.0.0-dev.0" +version = "0.3.2" dependencies = [ "byteorder", "html-escape", @@ -2488,7 +2488,7 @@ dependencies = [ [[package]] name = "tectonic_engine_xdvipdfmx" -version = "0.0.0-dev.0" +version = "0.4.1" dependencies = [ "cc", "libc", @@ -2499,7 +2499,7 @@ dependencies = [ [[package]] name = "tectonic_engine_xetex" -version = "0.0.0-dev.0" +version = "0.4.4" dependencies = [ "cc", "libc", @@ -2515,14 +2515,14 @@ dependencies = [ [[package]] name = "tectonic_errors" -version = "0.0.0-dev.0" +version = "0.2.1" dependencies = [ "anyhow", ] [[package]] name = "tectonic_geturl" -version = "0.0.0-dev.0" +version = "0.3.2" dependencies = [ "cfg-if", "curl", @@ -2533,7 +2533,7 @@ dependencies = [ [[package]] name = "tectonic_io_base" -version = "0.0.0-dev.0" +version = "0.4.3" dependencies = [ "app_dirs2", "flate2", @@ -2546,7 +2546,7 @@ dependencies = [ [[package]] name = "tectonic_pdf_io" -version = "0.0.0-dev.0" +version = "0.4.1" dependencies = [ "cc", "tectonic_bridge_core", @@ -2557,14 +2557,14 @@ dependencies = [ [[package]] name = "tectonic_status_base" -version = "0.0.0-dev.0" +version = "0.2.1" dependencies = [ "tectonic_errors", ] [[package]] name = "tectonic_xdv" -version = "0.0.0-dev.0" +version = "0.2.2" dependencies = [ "byteorder", "clap", @@ -2572,7 +2572,7 @@ dependencies = [ [[package]] name = "tectonic_xetex_format" -version = "0.0.0-dev.0" +version = "0.3.2" dependencies = [ "byteorder", "nom", @@ -2582,7 +2582,7 @@ dependencies = [ [[package]] name = "tectonic_xetex_layout" -version = "0.0.0-dev.0" +version = "0.2.4" dependencies = [ "cc", "tectonic_bridge_core", diff --git a/Cargo.toml b/Cargo.toml index b6aaed42b..2bfb0c115 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,7 @@ [package] name = "tectonic" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.15.0" authors = ["Peter Williams "] description = """ A modernized, complete, embeddable TeX/LaTeX engine. Tectonic is forked from the XeTeX @@ -75,19 +75,19 @@ quick-xml = "^0.28" serde = { version = "^1.0", features = ["derive"], optional = true } sha2 = "^0.10" structopt = "0.3" -tectonic_bridge_core = { path = "crates/bridge_core", version = "0.0.0-dev.0" } -tectonic_bundles = { path = "crates/bundles", version = "0.0.0-dev.0", default-features = false } -tectonic_docmodel = { path = "crates/docmodel", version = "0.0.0-dev.0", optional = true } -tectonic_engine_bibtex = { path = "crates/engine_bibtex", version = "0.0.0-dev.0" } -tectonic_engine_spx2html = { path = "crates/engine_spx2html", version = "0.0.0-dev.0" } -tectonic_engine_xdvipdfmx = { path = "crates/engine_xdvipdfmx", version = "0.0.0-dev.0" } -tectonic_engine_xetex = { path = "crates/engine_xetex", version = "0.0.0-dev.0" } -tectonic_errors = { path = "crates/errors", version = "0.0.0-dev.0" } -tectonic_geturl = { path = "crates/geturl", version = "0.0.0-dev.0", default-features = false } -tectonic_io_base = { path = "crates/io_base", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "crates/status_base", version = "0.0.0-dev.0" } -tectonic_xdv = { path = "crates/xdv", version = "0.0.0-dev.0" } -tectonic_xetex_layout = { path = "crates/xetex_layout", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "crates/bridge_core", version =">=0.4.0,<1"} +tectonic_bundles = { path = "crates/bundles", version =">=0.3.0,<1", default-features = false } +tectonic_docmodel = { path = "crates/docmodel", version =">=0.2.0,<1", optional = true } +tectonic_engine_bibtex = { path = "crates/engine_bibtex", version =">=0.1.0,<1"} +tectonic_engine_spx2html = { path = "crates/engine_spx2html", version =">=0.3.0,<1"} +tectonic_engine_xdvipdfmx = { path = "crates/engine_xdvipdfmx", version =">=0.3.0,<1"} +tectonic_engine_xetex = { path = "crates/engine_xetex", version =">=0.4.0,<1"} +tectonic_errors = { path = "crates/errors", version =">=0.1.0,<1"} +tectonic_geturl = { path = "crates/geturl", version =">=0.3.0,<1", default-features = false } +tectonic_io_base = { path = "crates/io_base", version =">=0.3.0,<1"} +tectonic_status_base = { path = "crates/status_base", version =">=0.1.0,<1"} +tectonic_xdv = { path = "crates/xdv", version =">=0.1.9,<1"} +tectonic_xetex_layout = { path = "crates/xetex_layout", version =">=0.1.0,<1"} tempfile = "^3.1" termcolor = "^1.1" tokio = "^1.0" diff --git a/crates/bridge_core/CHANGELOG.md b/crates/bridge_core/CHANGELOG.md index 8cd1ec515..ae03d6359 100644 --- a/crates/bridge_core/CHANGELOG.md +++ b/crates/bridge_core/CHANGELOG.md @@ -1,8 +1,68 @@ -# See elsewhere for changelog +# tectonic_bridge_core 0.4.1 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Add a safety comment and fix some new Clippy complaints (#1076, @CraftSpider) -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_core/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bridge_core 0.4.0 (2023-06-12) + +- Add new APIs, `CoreBridgeLauncher::with_expose_absolute_paths` and + `CoreBridgeLauncher::with_mtime_override` (#1036, @Mrmaxmeier). These help + enable the new `-Z deterministic-mode` mode. + + +# tectonic_bridge_core 0.3.2 (2023-05-18) + +- Bump the `md-5` dep to the 0.10 series (#1038, @CraftSpider) +- Tidy up recent Clippy warnings. + + +# tectonic_bridge_core 0.3.1 (2022-10-03) + +- Remove C's `time_t` from internal FFI APIs to avoid portability issues. This + should avoid issues with Linux Musl builds. + + +# tectonic_bridge_core 0.3.0 (2021-10-11) + +- Add `SecuritySettings::allow_extra_search_paths()` (#814, @ralismark). + + +# tectonic_bridge_core 0.2.2 (2021-06-17) + +- Switch from running [cbindgen] at build time to having the developer run it + manually. This really ought to fix the crate builds on docs.rs ([#788]), and + should speed builds too. + +[cbindgen]: https://github.com/eqrion/cbindgen +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 + + +# tectonic_bridge_core 0.2.1 (2021-06-17) + +- Attempt to fix crate builds on docs.rs — see [#788]. This works around an + issue in Tectonic’s usage of [cbindgen] by configuring Cargo to operate in + offline mode when building on docs.rs, which builds crates with network access + turned off. + +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 +[cbindgen]: https://github.com/eqrion/cbindgen + + +# tectonic_bridge_core 0.2.0 (2021-06-15) + +- Add a security infrastructure that gives a systematic way to control whether + features that can be abused by untrusted inputs, like shell-escape, are + enabled. The default is to disable all such features. Callers can request to + allow their use, but we use a centralized approach that ensures that such + requests will always be denied if the environment variable + `$TECTONIC_UNTRUSTED_MODE` is set to a nonempty value (@pkgw, #787). +- Add a C API allowing us to expose the filesystem paths for just-opened + inputs. This is needed for correct SyncTeX support (@hullanson, @pkgw, #762). + + +# tectonic_bridge_core 0.1.0 (2021-06-03) + +This is the first release of the "core" bridge crate. It provides a baseline of +APIs for C/C++ code to interact with an underlying "driver" implemented in Rust. +Those APIs mainly revolve around basic I/O and diagnostics, although we do have +a specialized "system request" to implement the TeX shell-escape feature. diff --git a/crates/bridge_core/Cargo.toml b/crates/bridge_core/Cargo.toml index 67543b307..2fa9609a1 100644 --- a/crates/bridge_core/Cargo.toml +++ b/crates/bridge_core/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_core" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.4.1" authors = ["Peter Williams "] description = """ Exposing core backend APIs to the Tectonic C/C++ code. @@ -23,9 +23,9 @@ flate2 = { version = "^1.0", default-features = false, features = ["zlib"] } lazy_static = "^1.4" libc = "^0.2" md-5 = "^0.10" -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_io_base = { path = "../io_base", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "../status_base", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.2.0,<1"} +tectonic_io_base = { path = "../io_base", version =">=0.3.0,<1"} +tectonic_status_base = { path = "../status_base", version =">=0.1.0,<1"} [build-dependencies] cc = "^1.0.66" diff --git a/crates/bridge_flate/CHANGELOG.md b/crates/bridge_flate/CHANGELOG.md index 2e679ddbf..027dd3bf9 100644 --- a/crates/bridge_flate/CHANGELOG.md +++ b/crates/bridge_flate/CHANGELOG.md @@ -1,8 +1,56 @@ -# See elsewhere for changelog +# tectonic_bridge_flate 0.1.7 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_flate/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bridge_flate 0.1.6 (2022-10-03) + +No code changes, but some internal documentation improvements about managing FFI +APIs. + + +# tectonic_bridge_flate 0.1.5 (2021-06-17) + +- Switch from running [cbindgen] at build time to having the developer run it + manually. This really ought to fix the crate builds on docs.rs ([#788]), and + should speed builds too. + +[cbindgen]: https://github.com/eqrion/cbindgen +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 + + +# tectonic_bridge_flate 0.1.4 (2021-06-17) + +- Attempt to fix crate builds on docs.rs — see [#788]. This works around an + issue in Tectonic’s usage of [cbindgen] by configuring Cargo to operate in + offline mode when building on docs.rs, which builds crates with network access + turned off. + +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 +[cbindgen]: https://github.com/eqrion/cbindgen + + +# tectonic_bridge_flate 0.1.3 (2021-06-16) + +- Try again with our docs.rs workarounds. Looks like we need + `CARGO_NET_OFFLINE=true`, not `CARGO_NET_OFFLINE=1`. + + +# tectonic_bridge_flate 0.1.2 (2021-06-16) + +- Try some workarounds to get docs building on docs.rs, both for this crate on + its own and for the toplevel `tectonic` crate. + + +# tectonic_bridge_flate 0.1.1 (2021-01-16) + +- Fix a Clippy complaint + + +# tectonic_bridge_flate 0.1.0 (2021-01-03) + +Initial release of the `tectonic_bridge_flate` crate. This crate provides a +simple C API to the flate2 crate — even though flate2 often wraps zlib, which +has its own C API. This is the first step towards segmenting Tectonic's +native-library dependencies and starting to be able to vendor them. This new +crate doesn't change anything dramatic yet, but starts that process. diff --git a/crates/bridge_flate/Cargo.toml b/crates/bridge_flate/Cargo.toml index b5c1971e3..3a1e08835 100644 --- a/crates/bridge_flate/Cargo.toml +++ b/crates/bridge_flate/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_flate" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.1.7" authors = ["Peter Williams "] description = """ Exposing flate compression to the Tectonic C code. diff --git a/crates/bridge_freetype2/CHANGELOG.md b/crates/bridge_freetype2/CHANGELOG.md index 941573090..fa1a0069b 100644 --- a/crates/bridge_freetype2/CHANGELOG.md +++ b/crates/bridge_freetype2/CHANGELOG.md @@ -1,8 +1,9 @@ -# See elsewhere for changelog +# tectonic_bridge_freetype2 0.2.0 (2021-06-03) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +Fix up handling of how C/C++ header file paths are exported to dependent crates. +This is a breaking change: we've moved from a single include directory to a list +of them. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_freetype2/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases +# tectonic_bridge_freetype2 0.1.0 (2021-01-15) + +Initial release of FreeType "bridge" crate for Tectonic. diff --git a/crates/bridge_freetype2/Cargo.toml b/crates/bridge_freetype2/Cargo.toml index ba50d1176..82f6fb6e7 100644 --- a/crates/bridge_freetype2/Cargo.toml +++ b/crates/bridge_freetype2/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_freetype2" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.0" authors = ["Peter Williams "] description = """ Expose the FreeType2 library C APIs to Rust/Cargo. @@ -19,7 +19,7 @@ edition = "2018" links = "freetype2" [build-dependencies] -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_dep_support = "5faf4205bdd3d31101b749fc32857dd746f9e5bc" diff --git a/crates/bridge_graphite2/CHANGELOG.md b/crates/bridge_graphite2/CHANGELOG.md index 144b3099a..520f0c741 100644 --- a/crates/bridge_graphite2/CHANGELOG.md +++ b/crates/bridge_graphite2/CHANGELOG.md @@ -1,8 +1,26 @@ -# See elsewhere for changelog +# tectonic_bridge_graphite2 0.2.2 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_graphite2/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bridge_graphite2 0.2.1 (2021-10-11) + +- Fix the build script for Rust >=1.55 (#820, @pkgw) + + +# tectonic_bridge_graphite2 0.2.0 (2021-06-03) + +- Fix up handling of how C/C++ header file paths are exported to dependent + crates. This is a breaking change: we've moved from a single include directory + to a list of them. +- Some improvements to the documentation + +# tectonic_bridge_graphite2 0.1.1 (2021-01-16) + +- Export information about the `GRAPHITE2_STATIC` C preprocessor define that is + sometimes needed. + +# tectonic_bridge_graphite2 0.1.0 (2021-01-04) + +A new crate to encapsulate the location and use of the `graphite2` library used +by Tectonic. diff --git a/crates/bridge_graphite2/Cargo.toml b/crates/bridge_graphite2/Cargo.toml index fa305f5a4..083e9ba67 100644 --- a/crates/bridge_graphite2/Cargo.toml +++ b/crates/bridge_graphite2/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_graphite2" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.2" authors = ["Peter Williams "] description = """ Expose the graphite2 library to Rust/Cargo. @@ -19,7 +19,7 @@ edition = "2018" links = "graphite2" [build-dependencies] -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_dep_support = "5faf4205bdd3d31101b749fc32857dd746f9e5bc" diff --git a/crates/bridge_harfbuzz/CHANGELOG.md b/crates/bridge_harfbuzz/CHANGELOG.md index 6f2a8d51e..a9e633ad3 100644 --- a/crates/bridge_harfbuzz/CHANGELOG.md +++ b/crates/bridge_harfbuzz/CHANGELOG.md @@ -1,8 +1,72 @@ -# See elsewhere for changelog +# tectonic_bridge_harfbuzz 0.2.9 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Update the vendored Harfbuzz to 8.3.0. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_harfbuzz/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bridge_harfbuzz 0.2.8 (2023-05-22) + +- Update the vendored Harfbuzz to 7.3.0. + + +# tectonic_bridge_harfbuzz 0.2.7 (2022-10-04) + +- On macOS, build with the preprocessor directive + `__ASSERT_MACROS_DEFINE_VERSIONS_WITHOUT_UNDERSCORES=0`, which should + hopefully fix compile failures with old SDKs (#944, @pkgw). + + +# tectonic_bridge_harfbuzz 0.2.6 (2022-10-03) + +- Update the vendored harfbuzz to 5.2.0. + + +# tectonic_bridge_harfbuzz 0.2.5 (2022-04-26) + +- Update the vendored harfbuzz to 4.1.0. + + +# tectonic_bridge_harfbuzz 0.2.4 (2022-02-28) + +- Update the vendored Harfbuzz to 3.0.0. + + +# tectonic_bridge_harfbuzz 0.2.3 (2021-10-11) + +- Update the vendored Harfbuzz source to +- Fixes for Clippy 1.53.0 + + +# tectonic_bridge_harfbuzz 0.2.2 (2021-06-07) + +- Still no code changes +- 0.2.1 didn't publish to Crates.io because our package file was too big for it; + we've eliminated some of the Harfbuzz support files that should fix this + ([#781], [@pkgw]) + +[#781]: https://github.com/tectonic-typesetting/tectonic/pull/781 +[@pkgw]: https://github.com/pkgw + + +# tectonic_bridge_harfbuzz 0.2.1 (2021-06-07) + +- No code changes +- The 0.2.0 package didn't actually contain the vendored Harfbuzz source files, + breaking `cargo` builds. We’ve modified the CI scripts to attempt to fix this + ([#777], [@pkgw]) + +[#777]: https://github.com/tectonic-typesetting/tectonic/pull/777 +[@pkgw]: https://github.com/pkgw + + +# tectonic_bridge_harfbuzz 0.2.0 (2021-06-03) + +- Update the vendored Harfbuzz to 2.8.1. +- Fix up handling of how C/C++ header file paths are exported to dependent + crates. This is a breaking change: we've moved from a single include directory + to a list of them. + + +# tectonic_bridge_harfbuzz 0.1.0 (2021-01-15) + +Initial release of Harfbuzz "bridge" crate for Tectonic. Includes the ability to +vendor Harfbuzz. diff --git a/crates/bridge_harfbuzz/Cargo.toml b/crates/bridge_harfbuzz/Cargo.toml index 0bf7d5bc9..d64cdad8c 100644 --- a/crates/bridge_harfbuzz/Cargo.toml +++ b/crates/bridge_harfbuzz/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_harfbuzz" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.9" authors = ["Peter Williams "] description = """ Expose the Harfbuzz C/C++ APIs to Rust/Cargo. @@ -20,11 +20,11 @@ links = "harfbuzz" exclude = ["/harfbuzz/docs/", "/harfbuzz/perf/", "/harfbuzz/test/"] [dependencies] -tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version = "0.0.0-dev.0" } +tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version =">=0.2.1,<1"} [build-dependencies] cc = "^1.0.66" -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [features] external-harfbuzz = [] diff --git a/crates/bridge_icu/CHANGELOG.md b/crates/bridge_icu/CHANGELOG.md index fb50df869..99942cdd1 100644 --- a/crates/bridge_icu/CHANGELOG.md +++ b/crates/bridge_icu/CHANGELOG.md @@ -1,8 +1,16 @@ -# See elsewhere for changelog +# tectonic_bridge_icu 0.2.1 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Adjust the build script to try to get proper link ordering with libicudata + (#1092, @pkgw). -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bridge_icu/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bridge_icu 0.2.0 (2021-06-03) + +Fix up handling of how C/C++ header file paths are exported to dependent crates. +This is a breaking change: we've moved from a single include directory to a list +of them. + + +# tectonic_bridge_icu 0.1.0 (2021-01-15) + +Initial release of ICU "bridge" crate for Tectonic. diff --git a/crates/bridge_icu/Cargo.toml b/crates/bridge_icu/Cargo.toml index 17b0ed976..110b13943 100644 --- a/crates/bridge_icu/Cargo.toml +++ b/crates/bridge_icu/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bridge_icu" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.1" authors = ["Peter Williams "] description = """ Expose a subset of the ICU Unicode APIs to Rust/Cargo. @@ -19,7 +19,7 @@ edition = "2018" links = "icuuc" [build-dependencies] -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_dep_support = "5faf4205bdd3d31101b749fc32857dd746f9e5bc" diff --git a/crates/bundles/CHANGELOG.md b/crates/bundles/CHANGELOG.md index 008638b0b..53be8094f 100644 --- a/crates/bundles/CHANGELOG.md +++ b/crates/bundles/CHANGELOG.md @@ -1,8 +1,62 @@ -# See elsewhere for changelog +# tectonic_bundles 0.3.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Bump the `zip` dependency to the 0.6 series (#1038, @CraftSpider) +- Tidy up formatting and recent Clippy warnings -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/bundles/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_bundles 0.3.0 (2022-04-26) + +This minor bump contains a breaking change! + +- The default bundle URL is now parametrized with the "format version", which + captures the internal capabilities of the XeTeX engine. Since the bundle and + the engine are fairly tightly coupled, this allows us to provide bundles that + track the capabilities of newer engine versions, while preserving the behavior + of older engine versions. Anyway, instead of exporting a `FALLBACK_BUNDLE_URL` + const, we now export a `get_fallback_bundle_url()` method that takes the + format version as an argument. This argument should be the value of + `tectonic_engine_xetex::FORMAT_SERIAL` if you have a module that actually + links to the XeTeX engine. +- Make the cache location customizable with the environment variable + `TECTONIC_CACHE_DIR` (#880, #884, @wischi-chr). +- Fix "fetching" of zero-size files to succeed without attempting any I/O (#888, + @pkgw). + + +# tectonic_bundles 0.2.0 (2021-10-11) + +This release contains a major configuration change, updating the URL of the +default bundle to refer to a new, dedicated web service rather than using +`archive.org` (#833, @pkgw). The new default URL is: + +https://relay.fullyjustified.net/default_bundle.tar + +This switch was motivated by the recent breakage caused by a change in +archive.org's internal implementation, even though that breakage has been fixed +in the most recent release of the `tectonic_geturl` crate. The `archive.org` +redirection service has always had low-level reliability issues and, more +importantly, is blocked in China, which is a fatal issue for a potentially large +number of users. + +The new webservice is a very simple nginx server set up in a Docker container +defined in the [tectonic-relay-service] repo. The associated web infrastructure +runs on Microsoft Azure and is configured using Terraform files in the +[tectonic-cloud-infra] repo. + +[tectonic-relay-service]: https://github.com/tectonic-typesetting/tectonic-relay-service +[tectonic-cloud-infra]: https://github.com/tectonic-typesetting/tectonic-cloud-infra + +@pkgw owns the `fullyjustified.net` domain name and the Azure subscription into +which the services are deployed. + + +# tectonic_bundles 0.1.0 (2021-06-15) + +Add the `tectonic_bundles` crate! This separates out the implementation of the +various Tectonic file “bundles” into a standalone crate, so that you can use +them without having to link to harfbuzz and everything else pulled in by the +main crate. + +As usual, separating out this crate led to some good API clarifications and +improvements. The API offered here includes some nontrivial breakage compared to +the old APIs in `tectonic::io::*`, but it's much more rationalized. diff --git a/crates/bundles/Cargo.toml b/crates/bundles/Cargo.toml index 11eb48e1d..cc1be708e 100644 --- a/crates/bundles/Cargo.toml +++ b/crates/bundles/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_bundles" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.3.1" authors = ["Peter Williams "] description = """ Tectonic "bundle" (support file collection) implementations. @@ -20,10 +20,10 @@ edition = "2018" [dependencies] flate2 = { version = "^1.0.19", default-features = false, features = ["zlib"] } fs2 = "^0.4" -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_geturl = { path = "../geturl", version = "0.0.0-dev.0", default-features = false } -tectonic_io_base = { path = "../io_base", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "../status_base", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.2.0,<1"} +tectonic_geturl = { path = "../geturl", version =">=0.3.0,<1", default-features = false } +tectonic_io_base = { path = "../io_base", version =">=0.3.0,<1"} +tectonic_status_base = { path = "../status_base", version =">=0.1.0,<1"} zip = { version = "^0.6", default-features = false, features = ["deflate"] } [features] diff --git a/crates/cfg_support/CHANGELOG.md b/crates/cfg_support/CHANGELOG.md index 150bb6354..4c446ce34 100644 --- a/crates/cfg_support/CHANGELOG.md +++ b/crates/cfg_support/CHANGELOG.md @@ -1,8 +1,25 @@ -# See elsewhere for changelog +# tectonic_cfg_support 0.1.4 (2022-02-28) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Fix trailing semicolons in macro expressions -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/cfg_support/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases +# tectonic_cfg_support 0.1.3 (2021-06-03) + +- No code changes, just issuing a new release to make Cranko happy. + +# tectonic_cfg_support 0.1.2 (2021-01-16) + +- No code changes, just updating metadata + +# tectonic_cfg_support 0.1.1 (2020-10-21) + +- No code changes; just issuing a new release to update deps and silence + Cranko's change detection. + +# tectonic_cfg_support 0.1.0 (2020-09-07) + +- No code changes; new release to exercise Cranko release workflow and mollify + Cargo versioning + +# tectonic_cfg_support 0.0.3 (2020-09-07) + +- No code changes; testing new Cranko-powered release workflow. diff --git a/crates/cfg_support/Cargo.toml b/crates/cfg_support/Cargo.toml index 2c71e3519..e4c12f883 100644 --- a/crates/cfg_support/Cargo.toml +++ b/crates/cfg_support/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_cfg_support" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.1.4" authors = [ "Matt Rice ", "Peter Williams " diff --git a/crates/dep_support/CHANGELOG.md b/crates/dep_support/CHANGELOG.md index 12d192fcb..df90b4492 100644 --- a/crates/dep_support/CHANGELOG.md +++ b/crates/dep_support/CHANGELOG.md @@ -1,8 +1,14 @@ -# See elsewhere for changelog +# tectonic_dep_support 0.1.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Default the Windows vcpkg build to use a custom triplet that doesn't + do debug builds (#961, @pkgw). This significantly speeds up the + Tectonic Windows CI runs. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/dep_support/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_dep_support 0.1.0 (2021-01-04) + +A new crate to support Tectonic's searching for external libraries +("dependencies"). Notably, this crate supports finding deps using either +pkg-config or vcpkg. It does *not* (yet?) handle the question of deciding +whether to find a dependency externally or vendor it (build it locally). diff --git a/crates/dep_support/Cargo.toml b/crates/dep_support/Cargo.toml index f85aa98ea..8934887d1 100644 --- a/crates/dep_support/Cargo.toml +++ b/crates/dep_support/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_dep_support" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.1.1" authors = ["Peter Williams "] description = """ Support for finding third-party libraries using either pkg-config or vcpkg. diff --git a/crates/docmodel/CHANGELOG.md b/crates/docmodel/CHANGELOG.md index 2b2ba1a3b..6c0fbbf39 100644 --- a/crates/docmodel/CHANGELOG.md +++ b/crates/docmodel/CHANGELOG.md @@ -1,8 +1,40 @@ -# See elsewhere for changelog +# tectonic_docmodel 0.2.2 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Add a `metadata` field to the Tectonic.toml file specification, allowing + open-ended, user-defined metadata (#1120, @rm-dr). This is useful for custom + tools that build on top of Tectonic, where you might want to have some custom + piece of information about each document in a group. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/docmodel/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_docmodel 0.2.1 (2023-05-18) + +- Update the `toml` dependency to the 0.7 series (#1038, @CraftSpider) +- Have `shell_escape_cwd` imply `shell_escape = true` (#966, @pkgw) + + +# tectonic_docmodel 0.2.0 (2022-10-03) + +- Define a new TOML item, `shell_escape_cwd`, that can be used to specify the + directory in which shell-escape state should be managed. The main expected use + case is to set it to the TeX source directory, to make it possible to work + around limitations in Tectonic’s encapsulated shell-escape support. + + +# tectonic_docmodel 0.1.2 (2022-02-28) + +- Define HTML options for build output (#865, @pkgw) +- Fixes for newer versions of Clippy + + +# tectonic_docmodel 0.1.1 (2021-10-11) + +- Fix the error message given when a "V2" command is run outside of a Tectonic + document workspace (#813, @ralismark) +- Fixes for Clippy >=1.53.0 (@pkgw) + + +# tectonic_docmodel 0.1.0 (2021-06-15) + +This crate isolates the file formats used by the Tectonic “document model”, +primarily `Tectonic.toml`. This makes it possible to interact with these data +formats without needing to link in with the full Tectonic dependency stack. diff --git a/crates/docmodel/Cargo.toml b/crates/docmodel/Cargo.toml index 73a722c4e..d3b04dced 100644 --- a/crates/docmodel/Cargo.toml +++ b/crates/docmodel/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_docmodel" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.2" authors = ["Peter Williams "] description = """ The Tectonic document model and its serialization into `Tectonic.toml`. @@ -19,7 +19,7 @@ edition = "2018" [dependencies] serde = { version = "^1.0", features = ["derive"] } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.2.0,<1"} toml = { version = "^0.7" } [package.metadata.internal_dep_versions] diff --git a/crates/engine_bibtex/CHANGELOG.md b/crates/engine_bibtex/CHANGELOG.md index 659dbb91e..54fdb358b 100644 --- a/crates/engine_bibtex/CHANGELOG.md +++ b/crates/engine_bibtex/CHANGELOG.md @@ -1,8 +1,79 @@ -# See elsewhere for changelog +# tectonic_engine_bibtex 0.2.2 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Complete the port of BibTeX to pure Rust (#1077, #1083, @CraftSpider)! -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/engine_bibtex/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_engine_bibtex 0.2.1 (2023-06-15) + +- Fix a translation bug in the growth of the `global_str` buffer + (#1055, @CraftSpider, reported in #1054 by @giammirove) + + +# tectonic_engine_bibtex 0.2.0 (2023-06-12) + +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. + +[@CraftSpider]: https://github.com/CraftSpider +[#1032]: https://github.com/tectonic-typesetting/tectonic/pull/1032 +[#1037]: https://github.com/tectonic-typesetting/tectonic/pull/1037 +[#1039]: https://github.com/tectonic-typesetting/tectonic/pull/1039 + +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. + +[@Mrmaxmeier]: https://github.com/Mrmaxmeier +[tectonic-on-arXiv]: https://github.com/mrmaxmeier/tectonic-on-arXiv +[arxiv.org]: https://arxiv.org/ + + +# tectonic_engine_bibtex 0.1.5 (2023-05-18) + +- Treat `\r\n` sequences as a single unit (#1037, @CraftSpider). This leads to + more uniform behavior on Windows and non-Windows platforms. + + +# tectonic_engine_bibtex 0.1.4 (2022-10-03) + +No code changes, but some internal documentation improvements about managing FFI +APIs. + + +# tectonic_engine_bibtex 0.1.3 (2021-06-17) + +- Switch from running [cbindgen] at build time to having the developer run it + manually. This really ought to fix the crate builds on docs.rs ([#788]), and + should speed builds too. + +[cbindgen]: https://github.com/eqrion/cbindgen +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 + + +# tectonic_engine_bibtex 0.1.2 (2021-06-17) + +- Attempt to fix crate builds on docs.rs — see [#788]. This works around an + issue in Tectonic’s usage of [cbindgen] by configuring Cargo to operate in + offline mode when building on docs.rs, which builds crates with network access + turned off. + +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 +[cbindgen]: https://github.com/eqrion/cbindgen + + +# tectonic_engine_bibtex 0.1.1 (2021-06-04) + +No code changes; the Cargo package didn't publish because I hit the crates.io +rate limit in the previous batch of updates! + + +# tectonic_engine_bibtex 0.1.0 (2021-06-03) + +This crate introduces the `bibtex` engine as a standalone crate, building on +the new "core bridge" functionality. diff --git a/crates/engine_bibtex/Cargo.toml b/crates/engine_bibtex/Cargo.toml index 33a581fb5..bdf90a4cb 100644 --- a/crates/engine_bibtex/Cargo.toml +++ b/crates/engine_bibtex/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_engine_bibtex" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.2" authors = ["Peter Williams "] description = """ The `bibtex` program as a reusable crate. @@ -19,9 +19,9 @@ edition = "2018" [dependencies] libc = "^0.2" -tectonic_io_base = { path = "../io_base", version = '0.0.0-dev.0' } -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } +tectonic_io_base = { path = "../io_base", version =">=0.4.2,<1"} +tectonic_bridge_core = { path = "../bridge_core", version =">=0.1.0,<1"} +tectonic_errors = { path = "../errors", version =">=0.2.0,<1"} [package.metadata.internal_dep_versions] tectonic_bridge_core = "thiscommit:2021-01-17:fohCh1sh" diff --git a/crates/engine_spx2html/CHANGELOG.md b/crates/engine_spx2html/CHANGELOG.md index efc7c8992..9d0888047 100644 --- a/crates/engine_spx2html/CHANGELOG.md +++ b/crates/engine_spx2html/CHANGELOG.md @@ -1,8 +1,54 @@ -# See elsewhere for changelog +# tectonic_engine_spx2html 0.3.2 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Fix (well, suppress) a new Clippy complaint (#1137, @pkgw). -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/engine_spx2html/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_engine_spx2html 0.3.1 (2023-06-12) + +- Avoid emitting negative padding values, which are illegal (#1052, @pkgw) +- Close automatic tags when starting certain automatic tags (#1052, @pkgw) + + +# tectonic_engine_spx2html 0.3.0 (2023-05-18) + +- A massive rework to support more sophisticated HTML output for the + [Tectonopedia] project (#1016, @pkgw). This crate is still highly unstable so + we're not going to document them. + +[Tectonopedia]: https://github.com/tectonic-typesetting/tectonopedia + + +# tectonic_engine_spx2html 0.2.1 (2022-10-27) + +- Avoid a dumb crash when attempting to compile documents that have not been + set up for the Tectonic HTML compilation framework (#955, @pkgw). Note, + however, that generic documents will still fail to build in HTML mode. + + +# tectonic_engine_spx2html 0.2.0 (2022-10-04) + +- Many updates for [tt-weave] (#941, @pkgw). This crate is still highly unstable + so we're not going to document them. + +[tt-weave]: https://github.com/pkgw/tt-weave/ + + +# tectonic_engine_spx2html 0.1.1 (2022-03-02) + +- Use the new pinot 0.1.4, which adds the new APIs needed by Tectonic (#870, + @pkgw). This should fix `cargo install tectonic`, which didn't work because + Git repositories can't be used as Crates.io dependencies. + + +# tectonic_engine_spx2html 0.1.0 (2022-02-28) + +Introduce this crate, which starts implementing Tectonic's HTML output. It uses +[tera] for templating and a hacked version of [pinot] for parsing font files, +which turns out to be important for precise typography. + +The implementation is still very much preliminary, and the associated HTML and +CSS templates haven't yet been published anywhere, so it's not very useful as +yet, but hopefully that will all be changing soon. + +[tera]: https://crates.io/crates/tera +[pinot]: https://crates.io/crates/pinot diff --git a/crates/engine_spx2html/Cargo.toml b/crates/engine_spx2html/Cargo.toml index 4e38b1c3b..4cbe54b63 100644 --- a/crates/engine_spx2html/Cargo.toml +++ b/crates/engine_spx2html/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_engine_spx2html" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.3.2" authors = ["Peter Williams "] description = """ The Tectonic engine that converts SPX output to HTML. @@ -23,11 +23,11 @@ html-escape = "^0.2" percent-encoding = "^2.1" pinot = "^0.1.4" serde = { version = "^1.0", features = ["derive"] } -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_io_base = { path = "../io_base", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "../status_base", version = "0.0.0-dev.0" } -tectonic_xdv = { path = "../xdv", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "../bridge_core", version =">=0.2.0,<1"} +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} +tectonic_io_base = { path = "../io_base", version =">=0.4.0,<1"} +tectonic_status_base = { path = "../status_base", version =">=0.1.0,<1"} +tectonic_xdv = { path = "../xdv", version =">=0.1.9,<1"} tempfile = "^3.1" tera = "^1.13" serde_json = "^1.0" diff --git a/crates/engine_xdvipdfmx/CHANGELOG.md b/crates/engine_xdvipdfmx/CHANGELOG.md index 751913d85..12056e284 100644 --- a/crates/engine_xdvipdfmx/CHANGELOG.md +++ b/crates/engine_xdvipdfmx/CHANGELOG.md @@ -1,8 +1,76 @@ -# See elsewhere for changelog +# tectonic_engine_xdvipdfmx 0.4.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/engine_xdvipdfmx/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_engine_xdvipdfmx 0.4.0 (2022-10-27) + +- Use new support in the `pdf_io` backend to handle the `dvipdfmx:config` + special (#904, #953, @vlasakm). This should fix some aspects of PDF generation, + including named anchors created by `hyperref`. + + +# tectonic_engine_xdvipdfmx 0.3.0 (2022-10-03) + +- Synchronize with TeXLive 2022.0 (#936, @pkgw). There are no changes in this + crate related to the update, but some in `tectonic_pdf_io`. +- Remove C's `time_t` from internal FFI APIs to avoid portability issues. This + should avoid issues with Linux Musl builds. + + +# tectonic_engine_xdvipdfmx 0.2.0 (2022-04-26) + +Update xdvipdfmx for TeXLive 2021 (#882, @pkgw). A brief summary of changes +based on the TeXLive 2021 release notes: + +- Not applicable to Tectonic: GhostScript safety improvements. +- If an image file is not found, exit with bad status. +- Extended special syntax for color support. +- Specials for manipulating ExtGState. +- Compatibility specials `pdfcolorstack` and `pdffontattr`. +- Experimental support for dviluatex’s extended `fnt_def`. +- Support new feature of virtual font to fallback Japanese font definition. + +There are other internal changes; see [the low-level ChangeLog][xdvcl]. Note +that most of these changes are actually found in the `tectonic_pdf_io` crate, +which contains most of the actual exported xdvipdfmx code. + +[xdvcl]: https://github.com/TeX-Live/texlive-source/blob/404d2e476949c1e225e6b94ff92e3a113ab6b413/texk/dvipdfm-x/ChangeLog#L107-L557 + + +# tectonic_engine_xdvipdfmx 0.1.3 (2021-06-19) + +- Fix a `build.rs` typo causing nonstop rebuilds +- Fixes for Clippy 1.53.0 + + +# tectonic_engine_xdvipdfmx 0.1.2 (2021-06-17) + +- Switch from running [cbindgen] at build time to having the developer run it + manually. This really ought to fix the crate builds on docs.rs ([#788]), and + should speed builds too. + +[cbindgen]: https://github.com/eqrion/cbindgen +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 + + +# tectonic_engine_xdvipdfmx 0.1.1 (2021-06-17) + +- Attempt to fix crate builds on docs.rs — see [#788]. This works around an + issue in Tectonic’s usage of [cbindgen] by configuring Cargo to operate in + offline mode when building on docs.rs, which builds crates with network access + turned off. + +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 +[cbindgen]: https://github.com/eqrion/cbindgen + + +# tectonic_engine_xdvipdfmx 0.1.0 (2021-06-03) + +This crate introduces the `xdvipdfmx` engine as a standalone crate, building on +the new "core bridge" functionality. The API is iterated somewhat from the one +that was previously provided in the main `tectonic` crate. + +Note that the vast majority of the `xdvipdfmx` C/C++ code is found in the new +`tectonic_pdf_io` crate, because both this crate and the XeTeX engine need to +share library routines to do I/O on PDF files. diff --git a/crates/engine_xdvipdfmx/Cargo.toml b/crates/engine_xdvipdfmx/Cargo.toml index 77c9995d1..988593222 100644 --- a/crates/engine_xdvipdfmx/Cargo.toml +++ b/crates/engine_xdvipdfmx/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_engine_xdvipdfmx" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.4.1" authors = ["Peter Williams "] description = """ The `xdvipdfmx` program as a reusable crate. @@ -20,9 +20,9 @@ links = "tectonic_engine_xdvipdfmx" [dependencies] libc = "^0.2" -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_pdf_io = { path = "../pdf_io", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "../bridge_core", version =">=0.1.0,<1"} +tectonic_errors = { path = "../errors", version =">=0.2.0,<1"} +tectonic_pdf_io = { path = "../pdf_io", version =">=0.4.0,<1"} [build-dependencies] cc = "^1.0.66" diff --git a/crates/engine_xetex/CHANGELOG.md b/crates/engine_xetex/CHANGELOG.md index 024a6e876..acfbffdbf 100644 --- a/crates/engine_xetex/CHANGELOG.md +++ b/crates/engine_xetex/CHANGELOG.md @@ -1,8 +1,153 @@ -# See elsewhere for changelog +# tectonic_engine_xetex 0.4.4 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Support aarch64-unknown-linux-musl as a cross-buildable architecture (#1089, + @pkgw). This includes one of the gnarliest build hacks I've ever had to + perpetrate, as documented in `xetex/xetex-engine-interface.c`. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/engine_xetex/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_engine_xetex 0.4.3 (2023-06-12) + +- Address a C compiler warning (#1050, @pkgw). + + +# tectonic_engine_xetex 0.4.2 (2023-05-18) + +- Remove the automatic insertion of paragraph tags in HTML mode (#1016, @pkgw). + It turns out that in TeX's internals, the starts and ends of "paragraphs" + occur much more frequently than is apparent in the document source. And + TeXLive 2022 introduces new LaTeX-level hooks for paragraph starts and ends + that align much better with linguistic paragraphs. (This is not a coincidence, + since the LaTeX core team is being funded to add support for creating properly + semantically tagged PDFs.) So, for HTML output going forward, we'll use those + hooks, and then there's no need for paragraph tagging support to be built into + the engine here. + + +# tectonic_engine_xetex 0.4.1 (2022-10-04) + +- When emitting in HTML mode, express paragraphs with `
` + instead of `

` (#941, @pkgw). This might seem wrong, but matches TeX's + semantics better to the HTML specification, which is quite explicit that the + `

` element does not have any special semantic meaning, and in fact + recommends grouping semantic paragraphs with `

`s. You can't nest an + `
    ` inside a `

    `, for instance, which does not align with TeX's view of + things. + + +# tectonic_engine_xetex 0.4.0 (2022-10-03) + +- Synchronize with TeXLive 2022.0 (#936, @pkgw)! Not many changes: + - Update the internal TECKit to 2.5.11, corresponding to + Unicode 14.0.0. + - Update the engine format version to 33, which removes unused + MLTeX `char_sub` parameters and expands the primitives table + because we've passed 500 of them. + - Update the XeTeX revision code to `.999994`. + - Remove some vestigial MLTeX code related to the above. + - Fix cleanup of TECKit in a few places + - Other upstream changes are not relevant to Tectonic. +- Remove C's `time_t` from internal FFI APIs to avoid portability issues. This + should avoid issues with Linux Musl builds. + + +# tectonic_engine_xetex 0.3.0 (2022-04-26) + +Update the XeTeX engine for TeXLive 2021 (#882, @pkgw). + +- Present as XeTeX revision 0.999993 +- Update the XeTeX format specification to the new version 32 +- Import [\Ucharcat update from 2018][ucc] that I seem to have missed before +- Fixes for [TeX bugs][tex82] 430-440 + - 430: not relevant to Tectonic (interactive features) + - 431: not relevant to Tectonic (interactive features) + - 432: skipped (date/time in system variables; no discernable impact on Tectonic) + - 433: "After nine parameters, delete both # and the token that follows" — breaking change! + - 434: Don't accept an implicit left brace after # in macro head + - 435: Keep garbage out of the buffer if a |\read| end unexpectedly + - 436: Zero out nonexistent chars, to prevent rogue TFM files + - 437: Don't classify fraction noads as inner noads + - 438: Properly identify tabskip glue when tracing repeated templates + - 439: not relevant to Tectonic + - 440: Normalize newlinechar when printing the final stats +- Significant rework/improvement of OpenType math kerning and super/sub-scripting +- Honor `PRIM_SIZE` correctly now that we have to change it! +- Implement `\tracingstacklevels` +- Guard against expansion depth overflow +- When reporting "lost characters", provide hex/UCS codes +- TECkit updated to TL21: version 2.5.10, upgrading from 2.5.9 + - This updates Unicode character names and normalization data to 13.0.0 + +[ucc]: https://github.com/TeX-Live/xetex/commit/0b12b29abb4748a9a85cc3e195ad388eba0d674e +[tex82]: https://ctan.math.utah.edu/ctan/tex-archive/systems/knuth/dist/errata/tex82.bug + +Also: + +- Allow `\openin` of `\openout` files to succeed (addresses #862, @pkgw). + + +# tectonic_engine_xetex 0.2.0 (2022-02-28) + +- Use the new `tectonic_xetex_format` crate as part of the build process (#851, + #848, @pkgw). This crate defines all of the metadata about the XeTeX engine + internals, with versioning, and generates the necessary header files and + macros. It also contains code for decoding XeTeX/Tectonic format files, so + that we'll be able to introspect engine data structures such as macro + definitions. +- Plumb in some specials that will be used by the prototype HTML output + mode (#865, @pkgw) +- Tidy up some of the auto-generated C code +- Fix an internal transcription error: `pre_display_direction`, not + `pre_display_correction` +- Fix a long-standing test issue with PNG image dimensions occasionally leading + to not-quite-reproducible output (#847, @pkgw) + + +# tectonic_engine_xetex 0.1.4 (2021-07-04) + +- Avoid misplaced newlines in warning output ([#803], [@ralismark]) +- Fix new warnings reported by Clippy 1.53.0 + +[#803]: https://github.com/tectonic-typesetting/tectonic/pull/803 +[@ralismark]: https://github.com/ralismark + + +# tectonic_engine_xetex 0.1.3 (2021-06-17) + +- Switch from running [cbindgen] at build time to having the developer run it + manually. This really ought to fix the crate builds on docs.rs ([#788]), and + should speed builds too. + +[cbindgen]: https://github.com/eqrion/cbindgen +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 + + +# tectonic_engine_xetex 0.1.2 (2021-06-17) + +- Attempt to fix crate builds on docs.rs — see [#788]. This works around an + issue in Tectonic’s usage of [cbindgen] by configuring Cargo to operate in + offline mode when building on docs.rs, which builds crates with network access + turned off. + +[#788]: https://github.com/tectonic-typesetting/tectonic/issues/788 +[cbindgen]: https://github.com/eqrion/cbindgen + + +# tectonic_engine_xetex 0.1.1 (2021-06-15) + +- Fix SyncTeX output (@hulloanson, @pkgw, #720, #744). We needed to include + absolute paths and properly deal with file renames, etc. The only way to + really do this right is to have the I/O backend provide filesystem paths when + it has them, so we've extended the lower-level crates to make this possible. +- Fix the implementation of some special XeTeX commands, reported by @burrbull + (@pkgw, #714, #783). This requires a bump in the format file serial number. We + believe that this fix includes a fix to an upstream XeTeX bug, which has been + reported. + + +# tectonic_engine_xetex 0.1.0 (2021-06-03) + +This crate introduces the XeTeX engine as a standalone crate, building on the +new "core bridge" functionality. + +Compared to the implementation previously provided in the main `tectonic` crate, +it also adds shell-escape functionality and iterates the Rust API somewhat. diff --git a/crates/engine_xetex/Cargo.toml b/crates/engine_xetex/Cargo.toml index b40bfc791..2ec09d123 100644 --- a/crates/engine_xetex/Cargo.toml +++ b/crates/engine_xetex/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_engine_xetex" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.4.4" authors = ["Peter Williams "] description = """ The [XeTeX](http://xetex.sourceforge.net/) engine as a reusable crate. @@ -20,17 +20,17 @@ links = "tectonic_engine_xetex" [dependencies] libc = "^0.2" -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_bridge_flate = { path = "../bridge_flate", version = "0.0.0-dev.0" } -tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version = "0.0.0-dev.0" } -tectonic_bridge_harfbuzz = { path = "../bridge_harfbuzz", version = "0.0.0-dev.0" } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_pdf_io = { path = "../pdf_io", version = "0.0.0-dev.0" } -tectonic_xetex_layout = { path = "../xetex_layout", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "../bridge_core", version =">=0.2.0,<1"} +tectonic_bridge_flate = { path = "../bridge_flate", version =">=0.1.1,<1"} +tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version =">=0.2.0,<1"} +tectonic_bridge_harfbuzz = { path = "../bridge_harfbuzz", version =">=0.2.0,<1"} +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} +tectonic_pdf_io = { path = "../pdf_io", version =">=0.3.0,<1"} +tectonic_xetex_layout = { path = "../xetex_layout", version =">=0.2.1,<1"} [build-dependencies] cc = "^1.0.66" -tectonic_cfg_support = { path = "../cfg_support", version = "0.0.0-dev.0" } +tectonic_cfg_support = { path = "../cfg_support", version =">=0.1.2,<1"} [features] external-harfbuzz = [ diff --git a/crates/engine_xetex/build.rs b/crates/engine_xetex/build.rs index 992b3511c..1967891c6 100644 --- a/crates/engine_xetex/build.rs +++ b/crates/engine_xetex/build.rs @@ -100,7 +100,13 @@ fn main() { if target.contains("-msvc") { c_cfg.flag("/EHsc"); - cxx_cfg.flag("/EHsc"); + cxx_cfg.flag("/std:c++17"); + // Disable noisy warnings that are enabled by -Wall + cxx_cfg.flag("/wd4514"); // unreferenced inline function has been removed + cxx_cfg.flag("/wd5045"); // Spectre mitigation insertion (informational) + cxx_cfg.flag("/wd4820"); // padding added after data member + cxx_cfg.flag("/wd4244"); // conversion from 'type1' to 'type2', possible loss of data + cxx_cfg.flag("/wd4365"); // conversion from 'type1' to 'type2', signed/unsigned mismatch } // OK, back to generic build rules. diff --git a/crates/errors/CHANGELOG.md b/crates/errors/CHANGELOG.md index 25620a275..e8d09ee8b 100644 --- a/crates/errors/CHANGELOG.md +++ b/crates/errors/CHANGELOG.md @@ -1,8 +1,20 @@ -# See elsewhere for changelog +# tectonic_errors 0.2.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/errors/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_errors 0.2.0 (2021-06-03) + +The only change in this release is to add a helpful `tectonic_errors::prelude` +module, which makes it easy to get all of the names you need without getting +compiler warnings about the ones that you don't end up using. + + +# tectonic_errors 0.1.0 (2021-01-15) + +Initial release. A new crate providing a generic boxed error type for Tectonic. + +We need a boxed error type because we have a bunch of optional dependencies, and +we can't abstract around their errors without boxing them. + +Strongly derived from [Cranko](https://github.com/pkgw/cranko). diff --git a/crates/errors/Cargo.toml b/crates/errors/Cargo.toml index fb3317d2f..1f4756288 100644 --- a/crates/errors/Cargo.toml +++ b/crates/errors/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_errors" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.1" authors = ["Peter Williams "] description = """ A boxed error type for Tectonic, with supporting utilities. diff --git a/crates/geturl/CHANGELOG.md b/crates/geturl/CHANGELOG.md index bc521bde4..d9e35325b 100644 --- a/crates/geturl/CHANGELOG.md +++ b/crates/geturl/CHANGELOG.md @@ -1,8 +1,60 @@ -# See elsewhere for changelog +# tectonic_geturl 0.3.2 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/geturl/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_geturl 0.3.1 (2022-02-28) + +- No meaningful code changes; we're just fixing some new Clippy complaints. + + +# tectonic_geturl 0.3.0 (2021-10-11) + +This release contains an essential fix for what has been the default Tectonic +configuration, which access `archive.org` to look up the default bundle. + +- Update redirection logic to unbreak archive.org resolution (#832, @pkgw). The + Internet Archive PURL service added a new layer of indirection through the URL + `https://purl.prod.archive.org/net/pkgwpub/tectonic-default`, which had an + unfortunate interaction with logic in Tectonic intended avoid pursuing + redirections into S3-type hashed storage services. That logic stopped + resolution when the final element of the URL path (i.e. the filename) did not + contain a period character. This used to be fine when the base archive.org URL + redirected directly to the configured destination URL, but stopped too soon + with the new indirection layer. The logic has been updated to also continue + pursuing the redirection if the filename of the new URL matches the filename + of the original URL, which avoids the issue in this case and seems generally + reasonable. +- Related to the above, the new archive.org redirection used an HTTP status code + of 307, which is a slightly more fully-specified version of the 302 status + code. While the redirection code accepted a final status code of 302 + (indicating that it decided to stop resolving URLs, i.e., it thinks that it + has reached the edge of an S3-type hashed storage service), it did not accept + a 307 result. Now it does (#832, @pkgw). Note that if this behavior had been + in place before, Tectonic would not have broken with the new archive.org + update, but the behavior would have been somewhat incorrect: the URL + resolution would have stopped too soon. But given the semantic similarity of + 302 and 307, if we allow the former, we should allow the latter. + +These fixes are, however, effectively superseded because the release of Tectonic +that contains them will also contain an update of the default URL to a new +dedicated service (`relay.fullyjustified.net`), since `archive.org` is sometimes +unreliable and is blocked in China. + + +# tectonic_geturl 0.2.1 (2021-06-15) + +- Fix a deprecation warning in the latest version of `reqwest`. + + +# tectonic_geturl 0.2.0 (2021-06-03) + +- Expose a new `native-tls-vendored` Cargo feature, to allow people to control + vendoring in the `native-tls` dependency crate. +- Work on the docs a bit. + + +# tectonic_geturl 0.1.0 (2021-01-16) + +Initial release of "get-URL" support crate, with pluggable backends: either curl +or reqwest. Or nothing, if you know that you're not going to need the network. diff --git a/crates/geturl/Cargo.toml b/crates/geturl/Cargo.toml index ee387afaf..fe743e638 100644 --- a/crates/geturl/Cargo.toml +++ b/crates/geturl/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_geturl" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.3.2" authors = ["Peter Williams "] description = """ A generic interface for HTTP GETs and byte-range requests, with pluggable backends. @@ -19,8 +19,8 @@ edition = "2018" cfg-if = "^1.0" curl = { version = "^0.4", optional = true } reqwest = { version = "^0.11", optional = true, features = ["blocking"] } -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "../status_base", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} +tectonic_status_base = { path = "../status_base", version =">=0.1.0,<1"} [features] default = ["reqwest"] diff --git a/crates/io_base/CHANGELOG.md b/crates/io_base/CHANGELOG.md index 06508cf2f..e191021c4 100644 --- a/crates/io_base/CHANGELOG.md +++ b/crates/io_base/CHANGELOG.md @@ -1,8 +1,63 @@ -# See elsewhere for changelog +# tectonic_io_base 0.4.3 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Once again, tidy up recent Clippy warnings (#1076, @CraftSpider). -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/io_base/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_io_base 0.4.2 (2023-05-18) + +- Tidy up recent Clippy warnings. +- Update the `sha2` dependency to the 0.10 series (#1038, @CraftSpider) + + +# tectonic_io_base 0.4.1 (2022-10-03) + +- Print a warning when absolute paths are accessed (#806, #911, @ralismark, + @pkgw). Any such access represents an aspect of the build that won't + necessarily be reproducible on other machines. + + +# tectonic_io_base 0.4.0 (2022-02-28) + +- Implement `Seek` for `InputHandle` (#865, @pkgw) +- Fixes for the latest versions of Clippy + + +# tectonic_io_base 0.3.1 (2021-10-11) + +- No code changes; fixing a couple of docstring typos. + + +# tectonic_io_base 0.3.0 (2021-06-15) + +- Add new "abspath" methods to the IoProvider trait. We need a new API to + generate proper SyncTeX output in the XeTeX engine, and this is the best + approach that we could devise that does a good job of maintaining backwards + compatibility. However, implementors of the IoProvider trait that delegate to + inner implementations will need to make sure to explicitly implement the new + methods in order to provide correct behavior (#762). +- Add a new `app_dirs` module for system-wide knowledge of per-user directories + (@pkgw, #768). It's valuable to put this low in the dependency stack so that + higher-level crates can just "know" where to go for per-user files such as the + bundle cache. +- Correct some broken internal links in the docs. + + +# tectonic_io_base 0.2.0 (2021-06-03) + +- BREAKING: use `&str` for TeX paths rather than `OsStr`. In principle this + prevents users from asking the TeX engine to load up files whose names aren't + expressible in Unicode, but that whole use case really meshes poorly with + Tectonic's goal to provide a portable, uniform user experience. And using + `str` just makes many parts of life much easier. +- Expose a new interface for TeX path normalization. +- If an engine requests to open a file from a filesystem provider, and that name + exists but is a directory, pretend that it's not found. This is sensible behavior + and prevents some hard-to-understand failures (#754) +- Add `FilesystemIo::root()` for users that want to query the root directory of + a filesystem I/O provider. +- Work on the docs a bit + + +# tectonic_io_base 0.1.0 (2021-01-15) + +Initial release: a new crate for basic Tectonic I/O types and traits. diff --git a/crates/io_base/Cargo.toml b/crates/io_base/Cargo.toml index 1de70e220..9b5428e33 100644 --- a/crates/io_base/Cargo.toml +++ b/crates/io_base/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_io_base" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.4.3" authors = ["Peter Williams "] description = """ Basic types for Tectonic's pluggable I/O backend system @@ -21,8 +21,8 @@ flate2 = { version = "^1.0.19", default-features = false, features = ["zlib"] } libc = "^0.2" # for EISDIR :-( sha2 = "^0.10" # for digest computations thiserror = "1.0" -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } -tectonic_status_base = { path = "../status_base", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} +tectonic_status_base = { path = "../status_base", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_errors = "e04798bcd9b1c1d68cc0a318a710bb30230a0300" diff --git a/crates/pdf_io/CHANGELOG.md b/crates/pdf_io/CHANGELOG.md index a41ef0496..4b1368125 100644 --- a/crates/pdf_io/CHANGELOG.md +++ b/crates/pdf_io/CHANGELOG.md @@ -1,8 +1,65 @@ -# See elsewhere for changelog +# tectonic_pdf_io 0.4.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/pdf_io/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_pdf_io 0.4.0 (2022-10-27) + +- Make it possible to semi-properly handle the `dvipdfmx:config` special (#904, + #953, @vlasakm). This should fix some aspects of PDF generation, including + named anchors created by `hyperref`. +- Fix loading of image stream references (#935, #953, @vlasakm). This should + help with the `attachfile` package although we are not sure if it is a + complete fix. + + +# tectonic_pdf_io 0.3.0 (2022-10-03) + +- Update for TeXLive 2022.0 (#936, @pkgw)! Mostly very minor changes, with the + most significant ones involving "base encodings" in the PDF encoding support. +- Fix some size_t/printf warnings on ARM + + +# tectonic_pdf_io 0.2.0 (2022-04-26) + +Update xdvipdfmx for TeXLive 2021 (#882, @pkgw). A brief summary of changes based +on the TeXLive 2021 release notes: + +- Not applicable to Tectonic: GhostScript safety improvements +- If an image file is not found, exit with bad status. +- Extended special syntax for color support. +- Specials for manipulating ExtGState. +- Compatibility specials `pdfcolorstack` and `pdffontattr`. +- Experimental support for dviluatex’s extended `fnt_def`. +- Support new feature of virtual font to fallback Japanese font definition. + +There are other internal changes; see [the low-level ChangeLog][xdvcl]. See also +the `tectonic_xdvipdfmx` crate, which actually contains only a few pieces of +this update. + +[xdvcl]: https://github.com/TeX-Live/texlive-source/blob/404d2e476949c1e225e6b94ff92e3a113ab6b413/texk/dvipdfm-x/ChangeLog#L107-L557 + +Additionally, some new memory leaks have been plugged (@pkgw). + + +# tectonic_pdf_io 0.1.2 (2021-10-11) + +- Fix an incorrect warning issued when reading EXIF data (#822, @korrat) + + +# tectonic_pdf_io 0.1.1 (2021-07-03) + +- Fix the build on Rust 1.46, needed for the conda-forge macOS build (which is + stuck on this version of Rust for the time being) +- Fixes for complaints from Clippy 1.53.0 + + +# tectonic_pdf_io 0.1.0 (2021-06-03) + +This crate contains the vast majority of the C/C++ code from `xdvipdfmx`. It +provides I/O services to both the `tectonic_engine_xdvipdfmx` and +`tectonic_engine_xetex` crates through its C/C++ APIs. It does not provide a +Rust API. + +This crate deals with general graphics I/O, not just PDF files, but the majority +of its code is PDF-centric. diff --git a/crates/pdf_io/Cargo.toml b/crates/pdf_io/Cargo.toml index d22b7aa49..149abd1cb 100644 --- a/crates/pdf_io/Cargo.toml +++ b/crates/pdf_io/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_pdf_io" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.4.1" authors = ["Peter Williams "] description = """ Xdvipdfmx’s PDF, XDV, and image I/O APIs in C, as a Rust crate. @@ -19,13 +19,13 @@ edition = "2018" links = "tectonic_pdf_io" [dependencies] -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_bridge_flate = { path = "../bridge_flate", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "../bridge_core", version =">=0.1.0,<1"} +tectonic_bridge_flate = { path = "../bridge_flate", version =">=0.1.1,<1"} [build-dependencies] cc = "^1.0.66" -tectonic_cfg_support = { path = "../cfg_support", version = "0.0.0-dev.0" } -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_cfg_support = { path = "../cfg_support", version =">=0.1.2,<1"} +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_bridge_core = "925a9a1566aaa4a55d4468d7bf239319828722fb" diff --git a/crates/status_base/CHANGELOG.md b/crates/status_base/CHANGELOG.md index 3e2983c96..d0213a554 100644 --- a/crates/status_base/CHANGELOG.md +++ b/crates/status_base/CHANGELOG.md @@ -1,8 +1,21 @@ -# See elsewhere for changelog +# tectonic_status_base 0.2.1 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/status_base/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_status_base 0.2.0 (2021-06-15) + +- Add `PlainStatusBackend.always_stderr()`, allowing users to specify that + status-reporting output in this backend should always go to standard error + rather than standard output. This is useful in cases where a program's output + to stdout needs to be machine-parseable, since the status-reporting could + potentially interfere with that if not directed elsewhere (@pkgw, #768). + + +# tectonic_status_base 0.1.0 (2021-01-15) + +Initial release: a new crate with basic Tectonic status-reporting traits. + +A lot of this is admittedly close to generic logging infrastructure, but we do +have some custom methods to help support a nice polished Tectonic UX. And that +will likely continue to be the case going forward. diff --git a/crates/status_base/Cargo.toml b/crates/status_base/Cargo.toml index cff192d8f..3773ffed7 100644 --- a/crates/status_base/Cargo.toml +++ b/crates/status_base/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_status_base" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.1" authors = ["Peter Williams "] description = """ Basic types for reporting status messages to a user. @@ -16,7 +16,7 @@ license = "MIT" edition = "2018" [dependencies] -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} [package.metadata.internal_dep_versions] tectonic_errors = "e04798bcd9b1c1d68cc0a318a710bb30230a0300" diff --git a/crates/xdv/CHANGELOG.md b/crates/xdv/CHANGELOG.md index ce7092b08..313a9eb5f 100644 --- a/crates/xdv/CHANGELOG.md +++ b/crates/xdv/CHANGELOG.md @@ -1,8 +1,36 @@ -# See elsewhere for changelog +# tectonic_xdv 0.2.2 (2023-05-18) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Tidy up formatting and recent Clippy warnings. -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/xdv/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_xdv 0.2.1 (2022-10-04) + +- Remove a quasi-debug println (#941, @pkgw). + + +# tectonic_xdv 0.2.0 (2022-02-28) + +- Significant API reworks and extensions to support the forthcoming prototype + HTML output mode (#865, @pkgw) +- Fix some new Clippy complaints + + +# tectonic_xdv 0.1.12 (2021-06-03) + +- Fix a potential source of undefined behavior (#752) + + +# tectonic_xdv 0.1.11 (2021-01-16) + +- Bump `byteorder` dep from 1.3.x series to 1.4.x series + + +# tectonic_xdv 0.1.10 (2020-10-21) + +- No code changes; just issuing a new release to update deps and silence + Cranko's change detection. + + +# tectonic_xdv 0.1.9 (2020-09-07) + +- No code changes; testing new Cranko-powered release workflow. diff --git a/crates/xdv/Cargo.toml b/crates/xdv/Cargo.toml index dad1d5e9f..8002474d6 100644 --- a/crates/xdv/Cargo.toml +++ b/crates/xdv/Cargo.toml @@ -3,7 +3,7 @@ [package] name = "tectonic_xdv" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.2" authors = ["Peter Williams "] description = """ A decoder for the XDV and SPX file formats used by XeTeX and Tectonic. diff --git a/crates/xetex_format/CHANGELOG.md b/crates/xetex_format/CHANGELOG.md index 50660d57f..979082b2e 100644 --- a/crates/xetex_format/CHANGELOG.md +++ b/crates/xetex_format/CHANGELOG.md @@ -1,8 +1,40 @@ -# See elsewhere for changelog +# tectonic_xetex_format 0.3.2 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Update for latest Clippy complaints (#1119, @pkgw). -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/xetex_format/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_xetex_format 0.3.1 (2023-05-18) + +- Tidy up recent Clippy warnings. + + +# tectonic_xetex_format 0.3.0 (2022-10-03) + +- Define version 33 of the format in support of TeXLive 2022.0 (#936, @pkgw) + - Remove CHAR_SUB_CODE_BASE from here on out. It is only needed for MLTeX, + which is disabled in XeTeX. This section of the equivalents table had one + entry for every USV, which is a lot of space. + - Synchronize PRIM_SIZE with TeXLive 2022, and provide PRIM_PRIME + +# tectonic_xetex_format 0.2.0 (2022-04-26) + +Update for TeXLive 2021 (#882, @pkgw): + +- There is one new integer parameter: `\tracingstacklevels` +- Bump `PRIM_SIZE` to 510, since we have passed 500 primitives! + + +# tectonic_xetex_format 0.1.0 (2022-02-28) + +The new `tectonic_xetex_format` crate defines metadata about the Tectonic/XeTeX +engine implementation. It has two major use cases: + +- Generate the C headers used by `tectonic_engine_xetex` for its implementation +- Allow introspection of Tectonic/XeTeX "format files" + +This latter functionality will allow use to answer questions such as "what +control strings are defined in this LaTeX format?" or "what is the built-in +definition of this macro?" + +The elements of the format definition are all versioned, so that as the engine +evolves we should retain the ability to introspect older formats. diff --git a/crates/xetex_format/Cargo.toml b/crates/xetex_format/Cargo.toml index 1d6ec4132..0dc4ad4ae 100644 --- a/crates/xetex_format/Cargo.toml +++ b/crates/xetex_format/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_xetex_format" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.3.2" authors = ["Peter Williams "] description = """ Tectonic/XeTeX engine data structures and their expression in TeX "format" files. @@ -20,7 +20,7 @@ edition = "2018" [dependencies] byteorder = "^1" nom = "^7" -tectonic_errors = { path = "../errors", version = "0.0.0-dev.0" } +tectonic_errors = { path = "../errors", version =">=0.1.0,<1"} [dev-dependencies] structopt = "^0.3" diff --git a/crates/xetex_layout/CHANGELOG.md b/crates/xetex_layout/CHANGELOG.md index 35f43fc96..0a4b18666 100644 --- a/crates/xetex_layout/CHANGELOG.md +++ b/crates/xetex_layout/CHANGELOG.md @@ -1,8 +1,45 @@ -# See elsewhere for changelog +# tectonic_xetex_layout 0.2.4 (2024-02-05) -This project’s release notes are curated from the Git history of its main -branch. You can find them by looking at [the version of this file on the -`release` branch][branch] or the [GitHub release history][gh-releases]. +- Remove a hack related to `libicudata` from the build script; this is now + handled in the proper place, in the `tectonic_bridge_icu` crate (#1092, + @pkgw). -[branch]: https://github.com/tectonic-typesetting/tectonic/blob/release/crates/xetex_layout/CHANGELOG.md -[gh-releases]: https://github.com/tectonic-typesetting/tectonic/releases + +# tectonic_xetex_layout 0.2.3 (2023-06-12) + +- Fix a potential crash on invalid font files (#1035, @Mrmaxmeier). + + +# tectonic_xetex_layout 0.2.2 (2023-05-18) + +- Tidy up recent Clippy warnings. + + +# tectonic_xetex_layout 0.2.1 (2022-10-03) + +- Work around ICU limitations in Alpine 3.16. The latest version of Alpine Linux + seems to provide a static ICU that no longer has the "macintosh" converter + built in. So don't error out if it fails to load; just hope that everything + will be OK. + + +# tectonic_xetex_layout 0.2.0 (2022-04-26) + +Update for TeXLive 2021 (#882, @pkgw). + +- Add new C API needed for TeXLive 2021: `ttxl_font_get_point_size`. + + +# tectonic_xetex_layout 0.1.1 (2021-10-11) + +- Require the latest version of `tectonic_bridge_graphite2`, which contains a + Windows build fix. +- Fixes for Clippy 1.53.0 + + +# tectonic_xetex_layout 0.1.0 (2021-06-03) + +This new crate encapsulates the font selection and layout code used by the +`tectonic_engine_xetex` crate. While it mostly consists of C/C++ code at the +moment and does not expose a Rust API, there is a hope that it can be made more +flexible and that its implementation can be migrated to be more Rust-based. diff --git a/crates/xetex_layout/Cargo.toml b/crates/xetex_layout/Cargo.toml index a6f73d08f..508eb0903 100644 --- a/crates/xetex_layout/Cargo.toml +++ b/crates/xetex_layout/Cargo.toml @@ -5,7 +5,7 @@ [package] name = "tectonic_xetex_layout" -version = "0.0.0-dev.0" # assigned with cranko (see README) +version = "0.2.4" authors = ["Peter Williams "] description = """ XeTeX's font loading and layout interface encapsulation, as a crate. @@ -19,16 +19,16 @@ edition = "2018" links = "tectonic_xetex_layout" [dependencies] -tectonic_bridge_core = { path = "../bridge_core", version = "0.0.0-dev.0" } -tectonic_bridge_freetype2 = { path = "../bridge_freetype2", version = "0.0.0-dev.0" } -tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version = "0.0.0-dev.0" } -tectonic_bridge_harfbuzz = { path = "../bridge_harfbuzz", version = "0.0.0-dev.0" } -tectonic_bridge_icu = { path = "../bridge_icu", version = "0.0.0-dev.0" } +tectonic_bridge_core = { path = "../bridge_core", version =">=0.1.0,<1"} +tectonic_bridge_freetype2 = { path = "../bridge_freetype2", version =">=0.2.0,<1"} +tectonic_bridge_graphite2 = { path = "../bridge_graphite2", version =">=0.2.1,<1"} +tectonic_bridge_harfbuzz = { path = "../bridge_harfbuzz", version =">=0.2.0,<1"} +tectonic_bridge_icu = { path = "../bridge_icu", version =">=0.2.1,<1"} [build-dependencies] cc = "^1.0.66" -tectonic_cfg_support = { path = "../cfg_support", version = "0.0.0-dev.0" } -tectonic_dep_support = { path = "../dep_support", version = "0.0.0-dev.0" } +tectonic_cfg_support = { path = "../cfg_support", version =">=0.1.3,<1"} +tectonic_dep_support = { path = "../dep_support", version =">=0.1.0,<1"} [features] external-harfbuzz = ["tectonic_bridge_harfbuzz/external-harfbuzz"] diff --git a/crates/xetex_layout/build.rs b/crates/xetex_layout/build.rs index bdd0d03fc..b0d3847c7 100644 --- a/crates/xetex_layout/build.rs +++ b/crates/xetex_layout/build.rs @@ -180,6 +180,13 @@ fn main() { if target.contains("-msvc") { cppcfg.flag("/EHsc"); + cppcfg.flag("/std:c++17"); + // Disable noisy warnings that are enabled by -Wall + cppcfg.flag("/wd4514"); // unreferenced inline function has been removed + cppcfg.flag("/wd5045"); // Spectre mitigation insertion (informational) + cppcfg.flag("/wd4820"); // padding added after data member + cppcfg.flag("/wd4244"); // conversion from T1 to T2, possible loss of data + cppcfg.flag("/wd4365"); // signed/unsigned mismatch } // OK, back to generic build rules.