Skip to content

v1.0.0-beta

Choose a tag to compare

@thisisamirv thisisamirv released this 19 Apr 23:21
· 364 commits to main since this release

The first beta release of SPRING2, a substantial modernization and rebranding of the original SPRING compressor for FASTQ/FASTA data.

LICENSE RESTRICTION NOTICE

SPRING is not provided under a permissive open-source license. Under the Non-Exclusive Research Use Software and Patent License Agreement, the software and patent rights are licensed only for non-profit research, educational, personal, and individual use. Commercial use, sublicensing, assignment, transfer, or other unlicensed making available to third parties is not authorized, absent a separate license from the University of Illinois. Any use, copying, modification, disclosure, or redistribution must comply with the original license terms, and derivative works must be clearly marked and renamed. Treat this repository as demonstration and reference material unless your intended use is expressly permitted by that license.

Installation

Binaries are available below for Linux, macOS, and Windows. For Linux users, portable AppImages are provided for both x86_64 and ARM64.

If you prefer building from source, see the build guide in docs/BUILDING.md.

Highlights

  • Introduced Archive Integrity Auditing with record-level CRC32 digests for sequence, ID, and quality streams.
  • Added mandatory integrity verification for standard decompression paths, plus explicit audit mode for post-compression and preview validation.
  • Added a public streaming decompression API with SpringReader and sink-based consumption for integration in external tools.
  • Replaced shell-based tar extraction/packing with native libarchive integration for better portability and reliability.
  • Added native Windows memory-mapped I/O support.

New in This Beta

  • Added -a, --audit support in both spring2 and spring2-preview for high-confidence archive verification workflows.
  • Added -V, --version support in both binaries.
  • Expanded SpringReader with digest access (get_digests()) for programmatic integrity checks.
  • Added asynchronous producer-consumer behavior in streaming decompression to improve throughput.
  • Added robust corrupt/truncated stream handling in decompression paths.
  • Added comprehensive unit and smoke testing through unified ctest integration.

Performance and Architecture Improvements

  • Improved decompression reference chunk lookup using binary search.
  • Restored and improved parallel compression behavior across encoder, reorder, and dictionary paths, reducing lock contention and serialized bottlenecks.
  • Parallelized preprocessing N-read classification and reduced preprocessing overhead by emitting metadata and CRCs directly during parsing.
  • Optimized gzip FASTQ writing with thread-local reusable buffers and persistent compressor caching.
  • Optimized preprocessing merge operations and compression-tail file copy paths with larger buffered I/O.
  • Refactored core decompression into a stateful sink-based design while preserving CLI compatibility.
  • Refactored encoder and reorder internals to reduce template bloat and improve build performance.
  • Reworked core dictionary and hot-path memory management to rely on RAII containers and safer ownership patterns.

Developer Experience and Build System

  • Added and improved developer documentation, including clearer build guidance and new unit-testing documentation.
  • Added Docker support for reproducible build and development workflows across environments.
  • Added automatic compiler cache, fast-linker, and precompiled-header support in CMake to speed up local iteration.
  • Improved runtime portability packaging across platforms, including OpenMP/runtime bundling and install-time RPATH handling.
  • Added up-front I/O parameter validation in CLI workflows so invalid paths and mode mismatches fail early with clear diagnostics.

Reliability and Fixes

  • Removed noisy debug diagnostics from normal compression flows.
  • Consolidated duplicated utility routines to reduce maintenance risk and ODR hazards.
  • Hardened temporary-file and filesystem cleanup behavior with safer non-throwing helpers and scoped cleanup primitives.
  • Improved runtime error reporting behavior by separating parameter-validation failures from true pipeline failures.
  • Fixed decompression edge cases around metadata handling and output inference.