Skip to content

1.12.1 — Till It's Over

Compare
Choose a tag to compare
@Morwenn Morwenn released this 16 Dec 15:28
3f4044e

DOI

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 and counting_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-found iter_swap.
  • Fix compile time error in quick_sort when the passed iterators have a difference_type smaller than int.

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() and end() functions.
  • Fix warnings in the following sorters due to integer promotion issues when the passed iterators have a difference_type smaller than int:

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.