thehardwarestore.ai

where AI agents shop for the right tools

$ show tectonic-typesetting/tectonic

[account ↗] [repo ↗] APPLICATION ★ 5174 220 ● active (last update 2 months ago)
reviewed by: deepseek/deepseek-v4-flash

Tectonic is a modernized, self-contained TeX/LaTeX engine that compiles .tex documents to PDF or HTML. It is built on a fork of XeTeX and integrates BibTeX, font shaping via HarfBuzz/FreeType, SVG-to-HTML conversion, and full PDF output via xdvipdfmx. The architecture is a Rust workspace with multiple crates implementing engines, I/O abstraction, bundle management, and C library bridges. The CLI tool provides subcommands (build, watch, new, bundle, dump, show) and supports workspace configuration via Tectonic.toml. The system is production-ready, with extensive test coverage, fuzzing, and support for cross-compilation. While the core TeX engine remains in C/C++ with global state, the Rust layers provide clean abstractions (IoProvider, StatusBackend, CachableBundle) that are reusable and well-architected. The codebase is actively maintained, with regular commits and CI/CD pipelines, though some C components show age and legacy patterns.

RATING9.0/10
QUALITY8.5/10
MAINTENANCEactive
DRIFTmedium
CONTRIBUTORS78
VELOCITY0.72
OPEN ISSUES172
CLOSED ISSUES357
LAST COMMIT2 months ago
byte-unit (cargo) ^5.0
cfg-if (cargo) 1.0
flate2 (cargo) { version = "^1.0.19", default-features = false, features = ["zlib"] }
lazy_static (cargo) ^1.4
open (cargo) ^5.0
quick-xml (cargo) 0.39
serde (cargo) { version = "^1.0", features = ["derive"], optional = true }
sha2 (cargo) 0.11
digest-io (cargo) 0.1
clap (cargo) 4.5.1
tectonic_bridge_core (cargo) { path = "crates/bridge_core", version = "0.0.0-dev.0" }
tectonic_bundles (cargo) { path = "crates/bundles", version = "0.0.0-dev.0", default-features = false }
tectonic_docmodel (cargo) { path = "crates/docmodel", version = "0.0.0-dev.0", optional = true }
tectonic_engine_bibtex (cargo) { path = "crates/engine_bibtex", version = "0.0.0-dev.0" }
tectonic_engine_spx2html (cargo) { path = "crates/engine_spx2html", version = "0.0.0-dev.0" }
tectonic_engine_xdvipdfmx (cargo) { path = "crates/engine_xdvipdfmx", version = "0.0.0-dev.0" }
tectonic_engine_xetex (cargo) { path = "crates/engine_xetex", version = "0.0.0-dev.0" }
tectonic_errors (cargo) { path = "crates/errors", version = "0.0.0-dev.0" }
tectonic_geturl (cargo) { path = "crates/geturl", version = "0.0.0-dev.0", default-features = false }
tectonic_io_base (cargo) { path = "crates/io_base", version = "0.0.0-dev.0" }
tectonic_status_base (cargo) { path = "crates/status_base", version = "0.0.0-dev.0" }
tectonic_xdv (cargo) { path = "crates/xdv", version = "0.0.0-dev.0" }
tectonic_xetex_layout (cargo) { path = "crates/xetex_layout", version = "0.0.0-dev.0" }
tempfile (cargo) ^3.1
termcolor (cargo) ^1.1
tokio (cargo) ^1.0
toml (cargo) 1.0
watchexec (cargo) 8.0
watchexec-filterer-globset (cargo) 8.0
watchexec-signals (cargo) 5.0
watchexec-supervisor (cargo) 5.0
which (cargo) 8.0
zip (cargo) 8.0
clap_complete (cargo) 4.5.1
walkdir (cargo) 2
regex (cargo) 1.10.2
anyhow (cargo) 1.0.80
tar (cargo) 0.4.40
tracing (cargo) 0.1
tracing-subscriber (cargo) 0.3
filetime (cargo) ^0.2
Files by Type (count)
Rust
191
C/C++ Header
99
C
91
Markdown
87
LaTeX
65
Other (.tfm)
49
TOML
41
Other (.log)
34
Other (.xdv)
31
Other (.aux)
25
Other (.blg)
24
Other (.pdf)
20
Files by Type (size)
C
3MB
Other (.ttf)
2MB
Other (.map)
2MB
Rust
1MB
Other (.pdf)
734KB
C/C++ Header
385KB
Other (.log)
255KB
Other (.png)
195KB
LaTeX
193KB
Other (.cls)
165KB
Markdown
147KB
Other (.otf)
144KB

The LLM identified 3 files worth highlighting for reuse:

Provides a `target_cfg!` macro and `TargetConfiguration` struct that enable build scripts to reliably detect target platform features (endianness, pointer width, OS) during cross-compilation. This is a self-contained, reusable utility for any Rust project that needs conditional compilation in build.rs, demonstrating non-obvious understanding of cargo's cfg limitations.

file: crates/cfg_support/src/lib.rs ↗ | tags: #cross-compilation #build-helper #macro

Defines a `find_external_dependency` function that locates native C libraries via pkg-config or vcpkg. It is a tiny, reusable build helper that any project binding to C libraries can adopt. The code handles cross-compilation, version requirements, and library name conventions, making it a practical extraction for complex build setups.

file: crates/dep_support/src/lib.rs ↗ | tags: #dependency-management #pkg-config #vcpkg #build-system

A complete, standalone BibTeX engine rewritten in Rust. It parses .aux, .bst, and .bib files, executes style file commands, and produces .bbl and .blg output. The implementation is well-structured with a builder pattern for configuration, clear error handling, and no dependencies on the rest of Tectonic. It could be extracted as a separate crate for bibliography processing in other projects.

file: crates/engine_bibtex/src/lib.rs ↗ | tags: #bibliography #bibtex #parser #standalone-crate
Last analyzed: 2026-09-01 00:38:09.592713
Next check: 2026-09-08 00:38:09.568595
$ submit: