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.