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 26 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 — plus deliberate bug fixes
documented in the changelog,
such as always using Phred+33 for BAM/SAM input, even with --phred64
(#6).
Upstream contributions
Improvements found or prototyped here go back to s-andrews/FastQC as pull requests. See upstream contributions for the full list, including what shipped in FastQC v0.13.0.