tectonic_engine_xetex 0.4.4

The [XeTeX](http://xetex.sourceforge.net/) engine as a reusable crate.
Documentation
# tectonic_engine_xetex 0.4.4 (2024-02-05)

- 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`.


# 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 `<div class="tdux-p">`
  instead of `<p>` (#941, @pkgw). This might seem wrong, but matches TeX's
  semantics better to the HTML specification, which is quite explicit that the
  `<p>` element does not have any special semantic meaning, and in fact
  recommends grouping semantic paragraphs with `<div>`s. You can't nest an
  `<ol>` inside a `<p>`, 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.