1.12.1 — Till It's Over
This release is named after Tristam's timeless glitch hop classic Till It's Over, which is always a favourite of mine when I want to be pumped up while programming — or doing anything else, really.
This end-of-the year release mostly fixes bugs and warnings, but also delivers a few small improvements to the library and its tooling that were ready and unlikely to cause issues. Notably sorters and adapters should now be able to handle some iterators even when they define a difference_type
smaller than int
.
Bug fixes
counting_sorter
::iterator_category
andcounting_sorter::is_always_stable
were accidentally unavailable since version 1.9.0 unless__cpp_lib_ranges
was defined. They are now unconditionally available again.- Due to a missing
using
declaration,slab_sort
only compiled for iterators with an ADL-founditer_swap
. - Fix compile time error in
quick_sort
when the passed iterators have adifference_type
smaller thanint
.
Improvements
slab_sort
now works with bidirectional iterators.drop_merge_sort
does not need to compute the size of the collection anymore, which saves a full pass over the collection to sort when with bidirectional iterators.- Reduce the number of memory allocations performed by
spin_sort
. utility::size
now also works with collections that only provide non-const
begin()
andend()
functions.- Fix warnings in the following sorters due to integer promotion issues when the passed iterators have a
difference_type
smaller thanint
:
Tooling
- Rollback changes to the patterns benchmark accidentally committed in version 1.12.0.
- Rewrite large parts of the bubble sort tutorial.
- Test sorters and adapters with an iterator type for which
difference_type = std::int8_t
.
Known bugs
I didn't manage to fix every bug I could find since the previous release, so you might want to check the list of known bugs.