This changelog contains a top-level entry for each release with sections on new features, API changes and notable bug-fixes (not all bug-fixes will be listed).
Get to know SeqAn3 with our tutorials.
Please see the release announcement: https://www.seqan.de/announcing-seqan3/
See the porting guide for some help on porting: http://docs.seqan.de/seqan/3-master-user/howto_porting.html
See the documentation on API stability to learn about when API changes are allowed.
Note that 3.1.0 will be the first API stable release and interfaces in this release might still change.
seqan3::semialphabet_any
, a semi-alphabet that type erases all other semi-alphabets of the same size (#981).seqan3::dna3bs
, an alphabet that mimics a bisulfite-treated dna4 sequence (#1191).seqan3::align_cfg::result
configuration (#1340).seqan3::align_pairwise
can be parallelised using theseqan3::align_cfg::parallel
configuration (#1379, #1444).seqan3::input_file_validator
and seqan3::output_file_validator
(#863).seqan3::value_list_validator
is now constructible from a range or a parameter pack (#1298).seqan3::argument_parser::add_option
(and add_positional_option) calls allow enum types when using the seqan3::enumeration_names
customisation point (#1196).find_package(SeqAn3)
is now case-insensitive and always populates SEQAN3_*
variables in all upper-case (#1427).seqan3::lzcnt
, seqan3::tzcnt
, and seqan3::popcount
for bit manipulation (#1141).seqan3::type_list
and type packs (#1204, #1214, #1273).seqan3::upcast
and seqan3::upcast_signed
(#1190).seqan3::field::cigar
into a vector over seqan3::cigar
is supported via seqan3::alignment_file_input
(#1192).seqan3::field::cigar
into a vector over seqan3::cigar
is supported via seqan3::alignment_file_output
(#1192).seqan3::view::async_input_buffer
(#1205).seqan3::views::kmer_hash
, a view that computes hash values of an alphabet sequence given a seqan3::shape
(#946).seqan3::views::to
, a view that returns a container created from a range by copying all elements (#1033).seqan3::dynamic_bitset
, a container that stores single bits and has a dynamic size (#1153).seqan3::views::translate_join
, analogue to seqan3::views::translate
but returns a flattened range (#1171).seqan3::views::to_simd
, a view that transforms a range of ranges into chunks of seqan3::simd
vectors (#1190).seqan3::views::as_const
, a view that provides only const &
to elements of the underlying range (#1410).seqan3::views::move
, a view that turns lvalue-references into rvalue-references (#1410).seqan3::views::all
to seqan3::views::type_reduce
(#1410).std::to_chars
overload for floating point data types in our seqan3/std/from_chars
header (#1160).seqan3::custom::
. Please see About Customisation (#1225).snake_case
style (e.g. seqan3::WritableAlphabet
-> seqan3::writable_alphabet
)! This change was motivated by the decision of the ISO C++ committee to also use snake case everywhere (#1235).seqan3::cigar
alphabet is not an seqan3::alphabet
anymore but only a seqan3::semialphabet
(#1285).seqan3::value_list_validator
is not constructible from a std::initialiser_list any more (e.g. seqan3::value_list_validator{{1,2,3}}
does not work, use seqan3::value_list_validator{1,2,3}
instead) (#1298).input_file_validator
to input_file_validator<>
) (#863).validator
can validate has been renamed from value_type
to option_value_type
(#1394).find_package(SEQAN3 3.0.1)
requires at least SeqAn3 with a version of >= 3.0.1
and < 4.0.0
) (#1425).SEQAN3_VERSION_STRING
defined by find_package(SEQAN3)
was renamed to SEQAN3_VERSION
(#1425).type_list
header has moved: If you included <seqan3/core/type_list.hpp>
you need to change the path to <seqan3/core/type_list/type_list.hpp>
(#1204).seqan3::views:zip()
, for input we will implement unzip()
in the future (#1398 #1412).seqan3::field::flag
of SAM/BAM input and output is now an enum instead of an integer, see seqan3::sam_flag
(#1390).seqan3::field
names are deprecated. Use the lower case field names instead. You can easily find and replace all occurrences by the following regex: find field::([A-Z_]+)
replace field::\L$1
(#1421).seqan3::sequence_file_input<traits_t, fields_t, formats_t, char>
to seqan3::sequence_file_input<traits_t, fields_t, formats_t>
. Before this change, setting the char type gave the impression that also streams over wide characters are supported which is not the case yet (#1400).seqan3::concatenated_sequences::data()
function has been deprecated: Use seqan3::concatenated_sequences::raw_data()
instead (#1208).seqan3::to_char
must always return a built-in character type (#1285).seqan3/range/view
has be renamed to seqan3/range/views
(#1251).seqan3::view
has been renamed to seqan3::views
(#1251).seqan3::fm_index
or seqan3::bi_fm_index
you will need to add the alphabet type as first parameter and pass a seqan3::text_layout
instead of a bool
to indicate the text layout (single, collection). For example, fm_index<false> index{text}
where text
is of type dna4_vector
needs to be changed to fm_index<dna4, text_layout::single> index{text}
(#1222).construct()
method of the (bi_)fm_index is now private: Use the constructor seqan3::fm_index::fm_index(text_t && text)
or seqan3::bi_fm_index::bi_fm_index(text_t && text)
instead (#1222).seqan3::fm_index::char_type
member was renamed to seqan3::fm_index::alphabet_type
The same applies for the seqan3::bi_fm_index
(#1433).seqan3::fm_index_cursor::index_char_type
member was renamed to seqan3::fm_index_cursor::index_alphabet_type
The same applies for the seqan3::bi_fm_index_cursor
(#1433).seqan3::gap_decorator
does not cause assert anymore (#1109).seqan3::argument_parser
is restricted to alpha-numeric characters and _
and -
(#1133).seqan3::fm_index
and seqan3::bi_fm_index
now work properly (#1144).seqan3::fm_index
and seqan3::bi_fm_index
constructed from a text collection containing a single text now returns the correct result (#1316).seqan3::views::take
is sized if the underlying range is sized (#1146).This is the initial release of SeqAn3. It is an entirely new library so there is no changelog that covers the differences to SeqAn2.
Note that 3.1.0 will be the first API stable release and interfaces in this release might still change.