1.8.1 — Lavender Town
It's spooky month in Pokémon Go, and as a result I've found myself listening to several remixes of the Lavender Town theme - an all-time favourite of mine - while preparing this release. Consider it project culture now that bugfix releases are named after songs since I can't wait for something specific to happen to me to name those (which is something I tend to do with other releases).
The release itself is mostly a number of bug fixes, documentation fixes and tiny improvements. Most of those were the result on working on several smaller sorting-related projects that share some code with cpp-sort.
Bug fixes
- Change the loop condition in the
minRunLength()
function in thetim_sorter
implementation so that it matches the one in CPython (issue #172, thanks @weeyizhi). - Fix the
iterator_category
ofquick_merge_sorter
. - Fix the complexity of
quick_sorter
andquick_merge_sorter
for forward iterators in the documentation.
Improvements
- Fix the implementation of the Tukey's ninther used for pivot selection by
quick_sorter
andquick_merge_sorter
. A bug in the elements being swapped meant that a value further away from the median was picked sometimes. It is unknown whether this was sufficient to change the complexity of the algorithm, but no significant difference in speed was noticed after the change. - The bidirectional iterators version of
verge_sorter
now returns early if the collection is already sorted. poplar_sorter
was tweaked to ensure that it only ever performs a single memory allocation to track the poplars.
Tooling
- Specifically download Catch2 v2.13.2 when no suitable version of Catch2 is found on the system. This is technically a bugfix since the
master
tag was use so far for the download, and it was recently removed from the repository. - The
conanfile.py
now raises aConanInvalidConfiguration
error when the target compiler does not support C++14. - Update the original research page of the wiki with up-to-date information.
- Add a checklist of tasks to perform when releasing a new version of the library. This should prevent some issues that commonly occur while preparing a release.
- Change the Conan badge in the README to point to the new Conan Center website.
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.