News & Release Notes

1.3.4 (2026/02/28)

  • Software Engineering:

    • -DUSE_LIBFMT=CMAKE added to CMake options to find {fmt} through CMake’s find_package.

    • Pre-built HTML docs now hosted at GitHub Pages.

    • Compression of FASTA and FASTQ output using gzip/bgzip supported using HTSLib. The following flags for each format are added (using FASTQ for example):

      • --o-fastq-compression

      • --o-fastq-compression_level

      • --o-fastq-buffer_size

      • --o-fastq-num_threads

    • Added utility am_compress to compress files using gzip/bgzip. This utility can be used to assess the performance of those compressors on your own system to find optimized parameters.

  • Miscellaneous bug fixes.

1.3.3 (2026/01/08)

  • Software Engineering:

    • EXPERIMENTAL Added NCBI SRA support to art_profile_builder. Not enabled by default; Add -DWITH_NCBI_NGS=ON to CMake options to enable this feature.

    • Added CRAM support to art_profile_builder.

    • string_dup in bundled HTSLib renamed to htslib_string_dup to avoid symbol conflicts with NCBI NGS library.

    • Bumped bundled BS::thread_pool to v5.1.0.

  • Implementation:

    • art_profile_builder: Added --first_n_reads to control the number of reads to be processed.

    • art_profile_builder: Added --i-format to control the input format.

    • art_modern: Added --o-sam-without_tag_MD, --o-sam-without_tag_NM, --o-hl_sam-without_tag_OA, and --o-sam-no_qual, to control tags of (Headless) SAM/BAM output.

  • Miscellaneous bug fixes.

1.3.2 (2025/12/23)

  • Bug fixes:

    • The bugs affecting 1.3.0 and 1.3.1 should be fixed.

    • Bug involved in parsing CMake option -DREPRODUCIBLE_BUILDS fixed.

    • A severe bug that prevents art_modern from loading custom error profiles has been fixed.

  • Software Engineering:

    • Bumped bundled HTSLib to 1.23.

  • Implementation:

    • The speed of art_profile_builder improved by using a single-producer-multi-consumer queue. The improvement will be more obvious to SAM/BAM files and would reduce computational burden when parsing FASTQ files.

    • Queue size parameters added to art_modern and art_profile_builder to control the size of internal queues. Users may tune these parameters to achieve better performance or reduce memory usage.

    • The performance of art_modern under Intel OneMKL random generator further improved by generating more random numbers in bulk.

    • A seed allocation algorithm is implemented; Flag --i-seed added to set a fixed seed for reproduction.

  • Miscellaneous bug fixes.

1.3.1 (2025/12/15)

  • KNOWN BUGS

    • Non-reproducible stucks, with no clear reason. Currently seen in both MPI and non-MPI mode. Seen in LLVM and Intel C++/DPC++ compilers. Currently, only seen in pbsim3_transcripts, template mode with unequal read1/read2 lengths specified. The author is working on fixing this issue.

  • Software Engineering:

    • Update bundled {fmt} to 12.1.0.

    • A possibly unidentified bug in the CMake build system when trying to compile a static version of testing C source code while the project is being configured is fixed.

    • The minimal test code for libdeflate, zlib, libbz2, and liblzma is reimplemented in a unified style. The new behavior is more robust, as it would generate random strings, compress them, decompress them, and check whether the decompressed strings are identical to the original ones.

    • Bundled LibCEU routines can recognize more compilers & architectures & libraries.

  • Implementation:

    • A possibly unidentified bug that would emerge when generating quality below 10 (for N bases) using Intel OneMKL random generator is fixed.

    • Several changes were made to the reporting system, increasing CPU utilization rate.

  • Miscellaneous bug fixes.

1.3.0 (2025/11/14)

  • BREAKING CHANGE

    • If a 2-column (unstranded) coverage file is provided to template mode, the coverage will be interpreted as positive coverage. Prior versions would divide the coverage by 2 for each strand.

  • KNOWN BUGS

    • The MPI mode may suffer from non-reproducible stucks, with no clear reason. This issue is not seen in non-MPI mode. The author is working on fixing this issue.

  • Algorithm:

    • Introduced https://github.com/Wunkolo/qreverse to accelerate array reversing. Use -DAM_NO_Q_REVERSE=ON in CMake options to disable this feature.

    • STL quality generation algorithm deprecated and removed. Also deprecated CMake option USE_QUAL_GEN. Now WALKER is the only quality generation algorithm available.

    • Several low-level C++ features re-done in C to improve compilation speed.

    • PCG random generator: CMake option -DUSE_RANDOM_GENERATOR=PCG now uses a minimal PCG random generator while -DUSE_RANDOM_GENERATOR=SYSTEM_PCG uses an external header-only PCG random generator in C++.

  • Interface:

    • EXPERIMENTAL art_modern and art_profile_builder now support different lengths of read 1 and 2 in paired-end simulation using --read_len_1 and --read_len_2 options.

      • NOTE For art_modern: Currently, different read length works for PE Template mode only. Using such on SE/MP or other modes will generate an error message when you use it.

    • art_modern: Some defaults added to options. --builtin_qual_file now default to HiSeq2500_150bp; --lc now default to se; --mode now default to wgs.

  • Packing:

    • EXPERIMENTAL -DFIND_RANDOM_MKL_THROUGH_PKGCONF added to CMake options to find Intel OneMKL through pkg-config.

    • libtcmalloc and libtcmalloc_minimal supported as an alternative malloc/free implementation.

    • Google Abseil removed from dependencies. Also deprecated CMake option USE_ABSL.

    • --help, --version and ctest minitests removed from debug/release Makefile quick build targets and their MPI-enabled variant. Use make testsmall/variants instead.

  • Miscellaneous bug fixes.

1.2.1 (2025/11/06)

  • The GNU Scientific Library (GSL) random generator was removed.

  • For Intel OneMKL random generator: The bit generation routine changed to VSL_BRNG_SFMT19937, which is faster. Also, more random numbers are generated in bulk to reduce overhead.

  • Makefile integration test targets testbuild and testbuild-mpi reimplemented in Python to make them run faster.

  • art_profile_builder would now raise an error if the input SAM/BAM/FASTQ files are malformed.

  • art_modern:

    • Option --reporting_interval-job_executor and --reporting_interval-job_pool added to control the reporting interval of job executor and job pool status.

    • Memory performance of stream FASTA parser largely improved.

  • EXPERIMENTAL Packing: DEB package variant using OpenMPI added.

  • Documentation largely revised.

  • Miscellaneous bug fixes.

1.2.0 (2025/10/21)

  • Main repo slimmed.

  • The GNU Scientific Library (GSL) random generator is marked deprecated due to performance issues. They will be removed in the next release.

  • EXPERIMENTAL Support over MPI added.

    • Currently tested MPI vendors:

      • Debian OpenMPI, ident: 4.1.6, repo rev: v4.1.6, Sep 30, 2023, std. 3.1.

      • Intel(R) MPI Library 2021.16 for Linux* OS, std. 4.1.

    • MPI-related revisions:

      • Seeding of random number generators revised to avoid seed collision across different threads and processes.

      • The number of reads generated from each contig is now calculated using complicated rounding instead of flooring.

      • Makefile quick build targets debug, release have their MPI counterparts: debug-mpi and release-mpi.

      • Makefile integration test targets testsmall, testsmall-release, testbuild have their MPI counterparts: testsmall-mpi, testsmall-release-mpi, and testbuild-mpi.

      • Integration test testbuild revised to make it run faster.

      • CMake option WITH_MPI added to enable MPI support. This option is by default OFF.

    • NOTE The author currently has no access to computing clusters with MPI, so the MPI parallelization on an actual multi-node cluster may be problematic and suboptimal. Users are welcome to report bugs or tell the author how to simulate an MPI-enabled cluster using a laptop to improve the MPI support.

  • Miscellaneous bug fixes.

1.1.10 (2025/10/12)

  • Fixed #7. In details:

    • Some build failures under Mac OS X using Apple Clang 18 have been fixed.

    • More tests added to pure-Clang/LLVM build.

  • Update bundled {fmt} to 12.0.0.

  • Update bundled Abseil to 20250814.1.

  • Debian/Ubuntu/Alpine builder container updated to the latest versions.

1.1.9 (2025/10/11)

  • BAM output routines are largely accelerated by replacing string streams with pre-allocated strings.

  • Implemented art_profile_builder, a C++ tool to build ART/art_modern profiles out of FASTQ or SAM/BAM files with quality scores.

  • Extensively revised installation documentation.

  • The simulator now supports /dev/null or an empty file as input.

  • Static libraries removed from Alpine Linux build to reduce download size.

  • HTSLib lower bound bumped to 1.17.

  • Boost::Thread removed from required dependencies.

  • Miscellaneous bug fixes.

1.1.8 (2025/09/29)

  • Fixed issue #5. In details:

    • On prior versions, the program will crash when trying to create simulated output in the current working directory without the ./ prefix.

    • Duplicated read IDs observed in prior versions.

    • Inconsistencies in read quality between SAM/BAM and FASTQ output were observed in prior versions.

    • Missing /1 and /2 suffixes in read IDs of paired-end reads observed in prior versions.

  • Documentation largely revised.

  • Miscellaneous bug fixes.

1.1.7 (2025/09/18)

  • Support for ccache is deprecated and removed, which also deprecated the CMake option USE_CCACHE.

  • Update bundled Abseil to 20250814.0.

  • Update bundled moodycamel::ConcurrentQueue<T> to the current latest version (c680721).

  • Updated bundled {fmt} to 11.2.0.

  • Some files without a clear license were removed. Unused files from bundled {fmt}, moodycamel::ConcurrentQueue<T>, and HTSLib removed.

  • CMake options to use system shipped dependencies instead of bundled ones are added to comply with Debian policies. Namely, USE_LIBFMT, USE_CONCURRENT_QUEUE, USE_ABSL, and REPRODUCIBLE_BUILDS.

  • Separated CMake flag that controls building of mini benchmarks to BUILD_ART_MODERN_BENCHMARKS.

  • Miscellaneous bug fixes.

1.1.6 (2025/09/12)

  • A severe bug in the CMakefile of labw_slim_htslib was fixed.

  • EXPERIMENTAL Debian DEB package built under Linux Mint 22 Wilma.

1.1.5 (2025/09/12)

  • Bumped bundled HTSLib to 1.22.1.

  • Miscellaneous bug fixes.

1.1.4 (2025/08/31)

  • 2 environment variables, ART_NO_LOG_DIR and ART_LOG_DIR, now control the behavior of log directory creation.

  • Some files without a clear license were removed.

  • Add support for cmake --install. NOTE Currently, only built libraries and binaries will be installed. Documentation and header files are not included yet.

  • The package is published on BioConda. See here for details.

  • Miscellaneous bug fixes.

1.1.3 (2025/03/05)

  • A severe bug in built-in profiles has been fixed. Now all built-in profiles should be usable without problems. Also eliminated -Woverlength-strings warning.

  • Built-in profiles no longer being represented in base64. They’re now gzip-compressed instead.

  • EXPERIMENTAL Sphinx-generated documentation added.

  • Compiler flag -Ofast switched back to -O3 for release build.

  • CMake option BOOST_CONFIG_PROVIDED_BY_BOOST added to address newer mechanisms of Boost configuration.

  • Miscellaneous bug fixes.

1.1.2 (2025/02/16)

  • The performance of the core simulation algorithm was improved using Walker’s Algorithm on generating discrete distributions. The implementation was adapted from the C version of GNU Scientific Library.

  • Support for B-Tree was dropped. Its performance was found to be worse than STL map in corrected benchmarks.

  • The performance of moodycamel::ConcurrentQueue<T> was improved using producer and consumer tokens. However, since the queue is sufficiently fast without tokens, this improvement may not be significant.

  • Miscellaneous bug fixes.

1.1.1 (2025/02/02)

  • ~~Possible build acceleration using ccache supported.~~

  • Alternate malloc/free implementations like jemalloc and mi-malloc are supported.

  • Formatting engine of FASTQ changed to {fmt}, which is slightly faster.

  • FASTA output format supported.

  • If the output consists only of FASTA or FASTQ, pairwise alignment will not be computed.

  • The default random generator for the Intel MKL library changed from VSL_BRNG_MT19937 to VSL_BRNG_SFMT19937, which is slightly faster.

  • PCG added as an alternative random number generator. THIS GENERATOR MAY NOT WORK UNDER MAC OS X.

  • ~~C++ B+ Tree added for accelerated map implementation.~~

1.1.0 (2025/01/23)

  • --builtin_qual_file option added back. Python 3 is needed as a build dependency.

  • BS::thread_pool added as an alternate thread pool implementation for Boost less than or equal with 1.65.

  • Tested Ubuntu 18.04 x86_64 with GCC 7.4.0, Clang 5.0.1, and Boost 1.65.1.

  • Tested Mac OS X Sequoia 15.2 with Command Line Tools for Xcode 16.2 (Clang 16.0.0 for target x86_64-apple-darwin24.2.0), CMake 3.31.4, and Boost 1.87.0. Fixed #3.

  • Bumped bundled HTSLib to 1.21.

  • Miscellaneous bug fixes.

1.0.1 (2025/01/17)

Fixed miscellaneous bugs.

  • Further fixed issue #2.

  • More compiler versions tested; The software now supports Clang 10.0.0+, GCC 9.5.0+, and AOCC 3.2.0+.

1.0.0 (2025/01/17)

The first release of art_modern.

NOTE This version does NOT come with MPI support.

Changes in software function:

  • Supports 3 modes: wgs, trans, and templ, similar to pbsim3.

  • Supports 3 FASTA parsers: memory, htslib, and stream.

  • Supports 3 library construction methods: se, pe, and mp.

  • Except for FASTQ, support output in SAM and BAM format through HTSLib.

  • Support for masking detection was temporarily suspended.

  • Support for sequencers except Illumina dropped.

  • Support for the aln output format was dropped.

  • Built-in profiles are no longer supported. Users must specify the path to the existing profile they want to use.

  • Parallelization using Boost::ASIO.

Changes in software implementation:

  • Build systems changed to CMake.

  • All C++ code was re-implemented in C++17 with radical removal of duplicated or unused code.

  • More random number generation libraries were supported.

  • Logging re-implemented using Boost.

  • Multithreading support implemented using Boost.

  • Largely eliminated POSIX-only routines by Boost.

  • Argument parser implemented in Boost.

  • Output writers were made asynchronous using moodycamel::ConcurrentQueue<T>.