Changelog¶
v1.1.0 (Current)¶
ReSeq2 --- maintained continuation of the original ReSeq with modernized infrastructure. The core simulation algorithms are unchanged; the surrounding build system, tests, and tooling have been overhauled across eight phases of work.
Phase 1: Build System Modernization¶
- Migrated to CMake 3.16+ with modern target-based configuration
- Adopted C++20 as the language standard (GCC 10+, Clang 12+)
- External dependencies (SeqAn 2.5.2, GoogleTest, NLopt) managed via
FetchContentwithfind_package()fallback - Removed vendored copies of SeqAn and GoogleTest
Phase 2: Golden-File Regression Tests¶
- Added golden-file tests that capture known-good output for the
illuminaPEpipeline - Established regression testing baseline to protect against behavioral drift during refactoring
Phase 3: Safety Stabilization¶
- Converted raw pointers to smart pointers (
std::unique_ptr,std::shared_ptr) - Replaced
NULLwithnullptrthroughout the codebase - Migrated mutex usage to
std::scoped_lockfor exception-safe locking
Phase 4: Concurrency Modernization¶
- Replaced manual thread management with
std::jthreadfor automatic join-on-destruct - Introduced atomic verbosity flag for thread-safe logging control
Phase 5: God Object Decomposition¶
- Decomposed monolithic
main.cppinto focused command modules - Extracted
DataStatssub-components into independently testable units
Phase 6: DRY and Interface Cleanup¶
- Extracted magic numbers into named constants
- Introduced type aliases for common complex types
- Removed
FRIEND_TESTmacros in favor of proper test interfaces
Phase 7: Test Coverage and CI¶
- Added clang-tidy static analysis to the build pipeline
- Enabled ASan (AddressSanitizer) and UBSan (UndefinedBehaviorSanitizer) in CI
- Added automated code coverage reporting
- GitHub Actions CI with GCC 13 and Clang 17 on Ubuntu 24.04
Phase 8: Polish and Packaging¶
- C++20 cleanup: removed compatibility shims, adopted standard library features
- Extracted
types.hppfromutilities.hppfor cleaner dependency structure - Added
convertProfilecommand for binary/text profile format conversion - Restructured Python plotting tools as an installable package with type checking and tests
- Pre-commit hooks enforcing clang-format, ruff, and conventional commits
v1.1 (Original)¶
Last upstream release by Stephan Schmeing (schmeing/ReSeq).
- Full Illumina paired-end simulation pipeline
- Iterative Proportional Fitting for multi-dimensional probability estimation
- Support for adapter detection, GC bias, fragment length distributions
seqToIllumina,queryProfile, andreplaceNcommands