Releases: biocpp/biocpp-core
Releases · biocpp/biocpp-core
0.7.1
Summary: fix some ranges by using our own tuple.
Added
bio::meta::tuplewhich behaves like C++23'sstd::tuple.
Fixed
bio::views::zipusesbio::meta::tupleand now also modelsstd::ranges::output_range.bio::views::pairwise_combineusesbio::meta::tupleand now also modelsstd::ranges::output_range.bio::ranges::dictionaryusesbio::meta::tuple. Nowbio::ranges::dictionary<> constworks correctly.
API
- This release is not yet API-stable.
- This release is mostly backwards compatible with 0.7.0 (see changes above).
0.7.0
Summary: we now support LLVM/clang as a compiler; CIGARs have been much improved and there is a new container.
Added
- 🐉 Full support for Clang-16 as a compiler. This is a big milestone for 1.0.0!
- A new associative container:
bio::ranges::dictionary. It has features ofstd::vectorandstd::unordered_mapat the cost of extra size. - New implementation for
bio::alphabet::cigar. This is now 32bits in size (instead of 64bit) and ABI-compatible to BAM/htslib. bio::views::to_char,bio::views::char_to<>andbio::views::char_strictly_to<>now work forbio::alphabet::cigar(even though CIGARs are not full alphabets).
Fixed
bio::views::to_char,bio::views::char_to<>andbio::views::char_strictly_to<>are now "no-op" views if no transformation needs to happen (e.g. when input and output alphabet would bechar).- When using
find_package(biocpp COMPONENTS core io), the version strings were not set correctly.
Maintained
bio::ranges::small_stringnow satisfies the std::ranges::view-concept for capacities <= 30.bio::views::interleavehas been redefined in terms ofbio::views::transform_by_pos(much less code); should also be a bit faster now.- Clang-tidy is automatically run as part of the CI.
- Concepts are now properly supported and integrated into the documentation; doxygen-1.9.6 is recommended.
Renamed
bio::alphabet::nucleotide_alphabet→bio::alphabet::nucleotide(same foraminoacid_alphabet,quality_alphabetandwritable_quality_alphabet).
Removed
bio::views::as_consthas been removed, use C++23'sstd::views::as_constinstead.bio::views::movehas been removed, use C++23'sstd::views::as_rvalueinstead.
API
- This release is not yet API-stable.
- This release is mostly backwards compatible with 0.6.0 (see changes above).
0.6.0
Summary: The alphabet module is almost API-stable. Several things in meta and ranges were cleaned up.
Added
bio::meta::one_of,bio::meta::decays_toandbio::meta::different_fromconcepts.bio::meta::vtag,bio::meta::ttagandbio::meta::priority_tag.bio::ranges::back_insertableandbio::ranges::back_insertable_withas light-weight "container" concepts.bio::views::char_strictly_toandbio::views::validate_char_for; as well asbio::views::char_conversion_view_t.bio::views::transform_by_pos, a more flexible version ofstd::views::transform.bio::views::add_reverse_complementwhich turns a range of sequences into a range of sequences with their reverse complements interleaved as every second element.
Fixed
- Some edge-cases with composite alphabets were fixed.
- Many potential bugs and missed optimisations found by clang-tidy (and fixed).
bio::ranges::dynamic_bitsetwas not anoutput_range<bool>because of incomplete proxy types.
Maintained
bio::views::translate*have been redefined in terms ofbio::views::transform_by_pos(much less code);bio::views::translate_singleis now ininclude/bio/ranges/views/translate_single.hpp.- Cleaned up most of the concept mess in composite alphabets.
- All alphabet literals (e.g. 'C'_dna4, "GATTACA"_dna4) are now strict and validated at compile-time. Character literals are
consteval. This prevents bugs early on.
Renamed
bio::alphabet::alphabet_*tobio::alphabet::*, e.g.bio::alphabet::alphabet_varianttobio::alphabet::variant.bio::alphabet::cpo::tobio::alphabet::custom::; renamebio/alphabet/adaptationtobio/alphabet/customand move customisation tags to that folder.bio::ranges::views::to()has been renamed tobio::ranges::to()to be in line with C++23.
Removed
bio::alphabet::*_vectoraliases were removed; just usestd::vector<alphabet>instead.bio::meta::*several unused traits were removed.bio::ranges::pseudo_random_access_iteratorandbio::ranges::pseudo_random_access_rangehave been removed (because they are not used).bio::ranges::sequenceconcept has been removed (because it is not used).bio::views::gethas been removed. Usestd::views::elementsinstead (same functionality).
API
- This release is not yet API-stable.
- This release is mostly backwards compatible with 0.5.0 (see changes above).
0.5.0 – "less is more"
Features
- This release is a fork of SeqAn-3.0.2.
- The feature set is stripped to contain the important "core" aspects: Alphabets and Ranges, as well as metaprogramming support utilities.
- It has no dependencies.
Some notable changes for users coming from SeqAn3
- 🧹 Huge code cleanup and countless bug-fixes.
- ✂ Removal of all dependencies… and… most of the code :)
- 📦 Separate namespaces for each module.
- 🏷 Much simpler customisation points by using
tag_invoke(). - 🖨 Replaced the
debug_streamwith {fmt}. - 🛸 More Modern C++ goodness: use of the spaceship operator,
consteval, … - 📉 Compile-time down.
- 📈 Performance up (for a few things).
API stability
- This release is not yet API-stable.
- This release is not backwards compatible with any BioC++ or SeqAn version.