Strategy
Keeping pace with upstream
Goal
Produce byte-identical fastqc_data.txt and summary.txt
for the same inputs as
Java FastQC,
so the two can be used interchangeably.
Equivalence testing
UPSTREAM.toml pins the tracked Java FastQC version.
A nightly CI job checks for new releases and opens a GitHub issue when one appears.
Every commit is tested against stored Java reference output across 18 test cases,
covering text files (byte-identical), HTML structure, SVG charts (normalised), and
pixel-level PNG comparison.
See the equivalence report for details.
The only known differences are in chart rendering: Rust bundles Liberation Sans instead of system Arial, and uses resvg + tiny-skia instead of Java2D for PNG output, so antialiasing and text positions differ slightly.
Upstream contributions
Pull requests submitted to s-andrews/FastQC to port improvements upstream:
- #185 — Bundle Liberation Sans font (merged). Eliminates system font dependency and aligns chart text metrics between Java and Rust.
- #186 — Update integration test snapshots for the bundled font.
- #187 — Trim trailing empty rows from Adapter Content when
--min_lengthis used.
Features ported from upstream PRs (not yet merged):
- #161 — HTML report design refresh. Available in the Rust rewrite as the modern template (
--template modern).
Coming soon (code awaiting clean-up and PR creation):
- pditommaso/FastQC — fork by Paolo Di Tommaso. Achieves 2-3x speed gains.