Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 1 addition & 5 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,4 @@
# https://github.com/rustsec/rustsec/tree/main/cargo-audit

[advisories]
# custom_derive v0.1.7 — unmaintained crate pulled in transitively by
# rust-htslib v1.0.0. There is no newer rust-htslib release that drops it,
# and this is an "unmaintained" notice, not a vulnerability.
# Re-evaluate when rust-htslib releases a version without custom_derive.
ignore = ["RUSTSEC-2025-0058"]
ignore = []
14 changes: 6 additions & 8 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ permissions:

env:
CARGO_TERM_COLOR: always
CXX: g++

jobs:
test:
Expand All @@ -36,12 +37,11 @@ jobs:
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y cmake zlib1g-dev libbz2-dev liblzma-dev \
libcurl4-openssl-dev libssl-dev libfontconfig1-dev pkg-config clang
sudo apt-get install -y g++ libfontconfig1-dev pkg-config

- name: Install macOS build deps
if: runner.os == 'macOS'
run: brew install bzip2 xz
run: brew install fontconfig

- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # ratchet:Swatinem/rust-cache@v2.9.1

Expand Down Expand Up @@ -87,8 +87,7 @@ jobs:
- name: Install Linux build deps
run: |
sudo apt-get update
sudo apt-get install -y cmake zlib1g-dev libbz2-dev liblzma-dev \
libcurl4-openssl-dev libssl-dev libfontconfig1-dev pkg-config clang
sudo apt-get install -y g++ libfontconfig1-dev pkg-config

- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # ratchet:Swatinem/rust-cache@v2.9.1

Expand All @@ -103,13 +102,12 @@ jobs:
- name: Install Rust MSRV toolchain
uses: dtolnay/rust-toolchain@631a55b12751854ce901bb631d5902ceb48146f7 # ratchet:dtolnay/rust-toolchain@master
with:
toolchain: "1.87"
toolchain: "1.89"

- name: Install Linux build deps
run: |
sudo apt-get update
sudo apt-get install -y cmake zlib1g-dev libbz2-dev liblzma-dev \
libcurl4-openssl-dev libssl-dev libfontconfig1-dev pkg-config clang
sudo apt-get install -y g++ libfontconfig1-dev pkg-config

- uses: Swatinem/rust-cache@c19371144df3bb44fab255c43d04cbc2ab54d1c4 # ratchet:Swatinem/rust-cache@v2.9.1

Expand Down
6 changes: 3 additions & 3 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ permissions:

env:
CARGO_TERM_COLOR: always
CXX: g++
IMAGE_NAME: ${{ github.repository }}

jobs:
Expand Down Expand Up @@ -130,13 +131,12 @@ jobs:
if: runner.os == 'Linux'
run: |
sudo apt-get update
sudo apt-get install -y cmake zlib1g-dev libbz2-dev liblzma-dev \
libcurl4-openssl-dev libssl-dev libfontconfig1-dev pkg-config clang
sudo apt-get install -y g++ libfontconfig1-dev pkg-config

# macOS build dependencies
- name: Install macOS build deps
if: runner.os == 'macOS'
run: brew install bzip2 xz
run: brew install fontconfig

- name: Build
run: >
Expand Down
4 changes: 2 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -244,7 +244,7 @@ To prepare a release:
| Crate | Purpose |
| ---------------------- | ------------------------------------- |
| `clap` v4 | CLI argument parsing (derive) |
| `rust-htslib` | BAM file I/O (statically linked) |
| `noodles` | BAM/SAM/CRAM file I/O (pure Rust) |
| `plotters` | Chart generation (PNG + SVG) |
| `serde` | YAML config deserialization |
| `anyhow` | Error handling |
Expand Down Expand Up @@ -282,7 +282,7 @@ forwarded to `count_reads()` as the `skip_dup_check: bool` parameter).
- Test data is generated by `tests/create_test_data.R` — do not modify `tests/expected/` by hand.
- Float output formatting must match R's behavior (15 significant digits, "NA" for NaN, trailing-zero trimming).
- The pipeline processes BAM files which can be very large — performance matters.
- System dependencies needed for building: cmake, zlib, bz2, lzma, curl, ssl, clang (for `rust-htslib`).
- System dependencies needed for building: a C++ compiler (for the preseq RNG FFI shim), libfontconfig (for plot rendering). noodles handles BAM/SAM/CRAM I/O in pure Rust with no htslib/cmake dependency.
- Benchmark results are produced by the [RustQC-benchmarks](https://github.com/seqeralabs/RustQC-benchmarks)
Nextflow pipeline. When benchmarks are re-run, verify that all results referenced in the docs
and the top-level `README.md` are updated to reflect the new numbers.
Expand Down
8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,13 @@
# RustQC Changelog

## [Unreleased]

### Other changes

- Migrate BAM/SAM/CRAM I/O from rust-htslib to pure-Rust [noodles](https://crates.io/crates/noodles) (#113)
- Simplify build requirements: no cmake or htslib system libraries needed
- Bump MSRV to Rust 1.89 (required by noodles 0.111)

## [Version 0.2.1](https://github.com/seqeralabs/RustQC/releases/tag/v0.2.1) - 2026-04-09

### Bug fixes
Expand Down
12 changes: 3 additions & 9 deletions CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,24 +6,18 @@ Thanks for your interest in contributing to RustQC! This document covers how to

### Prerequisites

You need a working Rust toolchain (stable) and the following system libraries for building `rust-htslib`:

- cmake, clang
- zlib, libbz2, liblzma
- libcurl, libssl
- libfontconfig (for plot rendering)
You need a working Rust toolchain (stable), a C++ compiler (for the preseq RNG FFI shim), and libfontconfig (for plot rendering). BAM/SAM/CRAM I/O is handled by the pure-Rust [noodles](https://crates.io/crates/noodles) crate — no htslib or cmake required.

On Ubuntu/Debian:

```bash
sudo apt-get install cmake clang zlib1g-dev libbz2-dev liblzma-dev \
libcurl4-openssl-dev libssl-dev libfontconfig1-dev
sudo apt-get install g++ libfontconfig1-dev
```

On macOS (with Homebrew):

```bash
brew install cmake xz
brew install fontconfig
```

### Building
Expand Down
Loading