Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 1.9.0 #181

Merged
merged 90 commits into from
Jan 30, 2021
Merged

Release 1.9.0 #181

merged 90 commits into from
Jan 30, 2021

Commits on Oct 29, 2020

  1. Configuration menu
    Copy the full SHA
    ae7f166 View commit details
    Browse the repository at this point in the history

Commits on Nov 1, 2020

  1. Configuration menu
    Copy the full SHA
    b445ec4 View commit details
    Browse the repository at this point in the history
  2. Reduce use of cppsort::[stable_]sort even more

    This also fixes an issue in the "writing a sorter" tutorial that used
    the pre-1.0.0 arguments order for cppsort::sort.
    Morwenn committed Nov 1, 2020
    Configuration menu
    Copy the full SHA
    65d43bc View commit details
    Browse the repository at this point in the history

Commits on Nov 7, 2020

  1. std::identity support when available (#130)

    Wherever the library implements special handling of utility::identity,
    provide the same level of support for std::identity when it is
    available.
    Morwenn committed Nov 7, 2020
    Configuration menu
    Copy the full SHA
    6b00048 View commit details
    Browse the repository at this point in the history

Commits on Nov 9, 2020

  1. Configuration menu
    Copy the full SHA
    3428fb4 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    25c361a View commit details
    Browse the repository at this point in the history
  3. Update Changelog.md

    Add new C++20 category to describe the new support for std::identity,
    std::ranges::less and std::ranges::greater.
    
    Remove the section about how bitmap_allocator might be used and the text
    about the relevance of the page across old versions. The embedding of
    the documentation into the main repository made that text useless
    (issue #157).
    
    [ci skip]
    Morwenn committed Nov 9, 2020
    Configuration menu
    Copy the full SHA
    f60a70c View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    24ad404 View commit details
    Browse the repository at this point in the history

Commits on Nov 10, 2020

  1. Small tweaks

    Mostly small things that I noticed one working on the 2.0.0 branch,
    which will undoubtly result in merge issues later, but these ought to be
    fixed in 1.x.y anyway.
    Morwenn committed Nov 10, 2020
    Configuration menu
    Copy the full SHA
    7926130 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    478909f View commit details
    Browse the repository at this point in the history

Commits on Nov 22, 2020

  1. Revamp the bidirectional version of vergesort

    The bidirectional version of vergesort was modified as follows:
    - It now uses the same k-way merge as the random-access version.
    - It creates fewer partitions with one element, generally being smarter
      about which run an element should belong to.
    - It spends less time recomputing runs sizes, leading to a lower impact
      on the running time overall.
    
    The k-way merge algorithm is now shared between both versions and has
    been tweaked to handle 1-element runs better. The in-code documentation
    was also reworked to be more comprehensible and comprehensive. Some
    variable names were changed to make the logic more obvious.
    Morwenn committed Nov 22, 2020
    Configuration menu
    Copy the full SHA
    8a71b8d View commit details
    Browse the repository at this point in the history

Commits on Nov 23, 2020

  1. Improvements to inplace_merge overloads that don't take the sizes

    - The forward iterator version used utility::as_function without
    properly qualifying it, which was a bug.
    - The bidirectional version was updated with the "shrink on the left"
    trick, which can both decrease the cost of the size computation and
    reduce the number of elements to allocate.
    Morwenn committed Nov 23, 2020
    Configuration menu
    Copy the full SHA
    0b634cc View commit details
    Browse the repository at this point in the history
  2. QuickMergeSort -> QuickMergesort

    [ci skip]
    Morwenn committed Nov 23, 2020
    Configuration menu
    Copy the full SHA
    a9c55e9 View commit details
    Browse the repository at this point in the history
  3. Move code coverage to GitHub Actions (#176)

    First step to move the build to GitHub Actions: move the coverage
    generation from Travis to Actions. It doesn't generate additional
    information with lcov anymore, and now always runs on the latest
    available Ubuntu.
    
    [ci skip]
    Morwenn committed Nov 23, 2020
    Configuration menu
    Copy the full SHA
    a030e31 View commit details
    Browse the repository at this point in the history

Commits on Nov 24, 2020

  1. errorbar-plot: fix MatplotlibDeprecationWarning

    [ci skip]
    Morwenn committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    f1f34de View commit details
    Browse the repository at this point in the history
  2. Unwrap nested stable_adapter

    It is totally possible for nested wrapping of stable_adapter to happen,
    this commit makes stable_adapter<stable_adapter<Sorter>> equivalent to
    stable_adapter<Sorter>.
    Morwenn committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    fdcd231 View commit details
    Browse the repository at this point in the history
  3. Try to make Codecov find the project's codecov.yml

    [ci skip]
    Morwenn committed Nov 24, 2020
    Configuration menu
    Copy the full SHA
    9970afe View commit details
    Browse the repository at this point in the history

Commits on Nov 26, 2020

  1. Specialize is_probably_branchless_projection for std::mem_fn (#177)

    Declare that the result of std::mem_fn is branchless when it wraps a
    pointer to data member. This is part of a wide library audit to make
    pdqsort use its branchless partitioning algorithm more often. This
    specific change uses standard library implementation-specific class
    names, but it is quite important since as_function currently uses
    std::mem_fn where it makes sense.
    Morwenn committed Nov 26, 2020
    Configuration menu
    Copy the full SHA
    33be439 View commit details
    Browse the repository at this point in the history
  2. Get the new Codecov GitHub Actions workflow to work (#176)

    The following modifications were needed:
    - Use the GitHub Action codecov/codecov-action
    - Rename the workflow from codecov.yml to code-coverage.yml, otherwise
      the Codecov Action things it is the Codecov configuration file
    - Change codecov.yml to ensure that the test files are not covered
    
    [ci skip]
    Morwenn committed Nov 26, 2020
    Configuration menu
    Copy the full SHA
    286ac28 View commit details
    Browse the repository at this point in the history

Commits on Nov 28, 2020

  1. Configuration menu
    Copy the full SHA
    b3522dd View commit details
    Browse the repository at this point in the history

Commits on Nov 30, 2020

  1. Configuration menu
    Copy the full SHA
    c4dace8 View commit details
    Browse the repository at this point in the history

Commits on Dec 3, 2020

  1. Remove occurrences of the word "functor"

    [ci skip]
    Morwenn committed Dec 3, 2020
    Configuration menu
    Copy the full SHA
    307ad96 View commit details
    Browse the repository at this point in the history
  2. Update the documentation's changelog page

    Cleanup the links and add information:
    - Mention the 128-bit integers support for counting_sorter
    - Mention the conditional std::mem_fn extended support
    - Mention the condition improvements brought by assumptions
    
    [ci skip]
    Morwenn committed Dec 3, 2020
    Configuration menu
    Copy the full SHA
    983e081 View commit details
    Browse the repository at this point in the history

Commits on Dec 5, 2020

  1. New feature: cppsort::stable_t

    The type alias stable_t is kind of a better equivalent to
    stable_adapter: it aliases either a sorter directly if it is always
    stable, otherwise stable_adapter<Sorter>::type if it exists, otherwise
    stable_adapter<Sorter> itself. The goal is to alias the "least nested"
    type that is always stable to decrease template instantiation, template
    depth, and somehow bonary size. It also improves the error messages is
    some cases.
    
    Bundled with this feature: stable_adapter specializations now expose a
    member type named 'type' to implement the mechanism described above.
    
    The documentation page about sorters adapters was slightly cleaned up
    and reworked as part of this change.
    Morwenn committed Dec 5, 2020
    Configuration menu
    Copy the full SHA
    8c4c913 View commit details
    Browse the repository at this point in the history

Commits on Dec 6, 2020

  1. Make test suite wrappers back_inserter-compatible

    This change allows to use them with distributions. This commit also
    takes advantage of this to change several parts of the test suite to use
    distribution, and applies some drive-by cleanups.
    Morwenn committed Dec 6, 2020
    Configuration menu
    Copy the full SHA
    ef81d41 View commit details
    Browse the repository at this point in the history

Commits on Dec 11, 2020

  1. Configuration menu
    Copy the full SHA
    682692d View commit details
    Browse the repository at this point in the history

Commits on Dec 15, 2020

  1. Fix link to swappable concept in doc introduction

    Link to cppreference to make the doc more amenable. Also use the
    lowercase concept name, and remove the duplicate "concept" word.
    
    [ci skip]
    Morwenn committed Dec 15, 2020
    Configuration menu
    Copy the full SHA
    b40c626 View commit details
    Browse the repository at this point in the history

Commits on Dec 18, 2020

  1. Configuration menu
    Copy the full SHA
    92593b8 View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2020

  1. typo in comment

    [ci skip]
    Morwenn committed Dec 21, 2020
    Configuration menu
    Copy the full SHA
    8b3bfb6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    237936f View commit details
    Browse the repository at this point in the history
  3. Improvements to benchmarks and tools

    Mostly quality-of-life changes that allow me to change them faster when
    I need to prototype, debug and test components more easily.
    
    [ci skip]
    Morwenn committed Dec 21, 2020
    Configuration menu
    Copy the full SHA
    6f9738d View commit details
    Browse the repository at this point in the history
  4. Add an explicit stable_adapter<verge_sorter> specializations

    An likewise for stable_adapter<verge_adapter>. Instead of simply relying
    on make_stable, the new specializations use a variant of vergesort that
    detects strictly descending runs instead of non-ascending ones, and
    wraps the fallback sorter in stable_t.
    
    The technique of detecting non-descending and strictly descending runs
    is a trick borrowed from timsort in order to preserve stability in
    natural mergesort algorithms: descending runs are reversed in-place, so
    equivalent elements wouldn't retain their original order when reversed
    in such runs.
    
    While verge_adapter does not handle bidirectional iterators, the
    underlying code was changed so that it will be easier to do in the
    future, but currently this involves some dirty tricks with a stripped
    down implementation of a sized iterator. This will make the transition
    to C++20 ranges and standard sized iterators and sentinels easier in the
    long term. Meanwhile it is just an implementation detail.
    
    This commit addresses external issue Morwenn/vergesort#11 and somehow
    Morwenn/vergesort#7 too. cpp-sort is a better recipient for those
    variations on vergesort than the standalone project, but some
    cross-project documentation will be needed anyway.
    Morwenn committed Dec 21, 2020
    Configuration menu
    Copy the full SHA
    affe28b View commit details
    Browse the repository at this point in the history

Commits on Dec 22, 2020

  1. Renanme Codecov GitHub workflow to code-coverage.yml

    The previous named caused the file to be found by the Codecov bash
    uploader, which isn't exactly what we want...
    
    [ci skip]
    Morwenn committed Dec 22, 2020
    Configuration menu
    Copy the full SHA
    23672d1 View commit details
    Browse the repository at this point in the history
  2. Add version info in relevant places in the doc

    [ci skip]
    Morwenn committed Dec 22, 2020
    Configuration menu
    Copy the full SHA
    1eea82d View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    49ffe76 View commit details
    Browse the repository at this point in the history
  4. Fix stable_adapter(verge_adapter(...)) constructor

    Also add a test, which doesn't actually test that the failing
    constructor works, but will do in the 2.0.0-develop branch.
    Morwenn committed Dec 22, 2020
    Configuration menu
    Copy the full SHA
    bd0ca58 View commit details
    Browse the repository at this point in the history

Commits on Dec 23, 2020

  1. Add a median_of_3_killer distribution to the test suite

    This specific distribution is implement after the paper A Killer
    Adversary for Quicksort, by M. D. McIlroy. The goal is to force some
    pivot-based algorithms to use their fallback algorithm that ensure that
    they won't turn quadratic.
    Morwenn committed Dec 23, 2020
    Configuration menu
    Copy the full SHA
    5278270 View commit details
    Browse the repository at this point in the history

Commits on Dec 24, 2020

  1. Tweak merge_insertion_sorter documentation

    [ci skip]
    Morwenn committed Dec 24, 2020
    Configuration menu
    Copy the full SHA
    eb5874d View commit details
    Browse the repository at this point in the history

Commits on Jan 2, 2021

  1. Add a GitHub Action workflow for MacOS builds (#176)

    This commit also comments the Travis CI MacOS configurations, because
    they there too slow to run to completion anyway.
    
    [ci skip]
    Morwenn committed Jan 2, 2021
    Configuration menu
    Copy the full SHA
    d38cb80 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    cca02f7 View commit details
    Browse the repository at this point in the history
  3. MacOS builds: more work

    [ci skip]
    Morwenn committed Jan 2, 2021
    Configuration menu
    Copy the full SHA
    6d2976e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    a4de2d0 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    4e69cdd View commit details
    Browse the repository at this point in the history
  6. Update MacOS build action to download Ninja

    [ci skip]
    Morwenn committed Jan 2, 2021
    Configuration menu
    Copy the full SHA
    8446c70 View commit details
    Browse the repository at this point in the history
  7. Add missing item to the release checklist

    [ci skip]
    Morwenn committed Jan 2, 2021
    Configuration menu
    Copy the full SHA
    acd4bb6 View commit details
    Browse the repository at this point in the history
  8. Configuration menu
    Copy the full SHA
    8f3f5d3 View commit details
    Browse the repository at this point in the history
  9. Try to fix MacOS builds

    [ci skip]
    Morwenn committed Jan 2, 2021
    Configuration menu
    Copy the full SHA
    40ebd2e View commit details
    Browse the repository at this point in the history

Commits on Jan 3, 2021

  1. Configuration menu
    Copy the full SHA
    9e25366 View commit details
    Browse the repository at this point in the history
  2. Yet another attempt to fix MacOS builds

    [ci skip]
    Morwenn committed Jan 3, 2021
    Configuration menu
    Copy the full SHA
    8a34ca5 View commit details
    Browse the repository at this point in the history
  3. Fix MacOS builds, disable fail-fast behaviour

    [ci skip]
    Morwenn committed Jan 3, 2021
    Configuration menu
    Copy the full SHA
    f45a90a View commit details
    Browse the repository at this point in the history
  4. Fix MacOS builds in GitHub Actions once more (#176)

    This commit is hopefully the last to get things to work with MacOS
    builds. Compared to the old Travis CI builds, we don't have Valgrind
    builds, but we have g++, ubsan and asan ones, which is more coverage
    than what we used to have.
    
    [ci skip]
    Morwenn committed Jan 3, 2021
    Configuration menu
    Copy the full SHA
    f28431e View commit details
    Browse the repository at this point in the history

Commits on Jan 4, 2021

  1. Run tests sequentially for better diagnostics

    [ci skip]
    Morwenn committed Jan 4, 2021
    Configuration menu
    Copy the full SHA
    81bde27 View commit details
    Browse the repository at this point in the history
  2. Add a GitHub Action for Ubuntu builds

    The actions tests both g++ 5.5 and clang++ 6, with ubsan, asan and
    Valgrind memcheck.
    
    [ci skip]
    Morwenn committed Jan 4, 2021
    Configuration menu
    Copy the full SHA
    1de7526 View commit details
    Browse the repository at this point in the history
  3. CMake: find_program(valgrind REQUIRED)

    [ci skip]
    Morwenn committed Jan 4, 2021
    Configuration menu
    Copy the full SHA
    57545cb View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    86a86cc View commit details
    Browse the repository at this point in the history

Commits on Jan 5, 2021

  1. Fix thinko in Ubuntu builds

    [ci skip]
    Morwenn committed Jan 5, 2021
    Configuration menu
    Copy the full SHA
    c863ccf View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    f3ec0a5 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    829cd03 View commit details
    Browse the repository at this point in the history
  4. Cleanup README and its badges (#176)

    - Remove the license badge, redudant with GitHub UI
    - Better text for release and Conan badges
    - Remove the Travis CI badge
    - Add build badges to the compiler support section
    - Update the information about supported compilers
    Morwenn committed Jan 5, 2021
    Configuration menu
    Copy the full SHA
    0ad187d View commit details
    Browse the repository at this point in the history
  5. Simplify MacOS builds

    Morwenn committed Jan 5, 2021
    Configuration menu
    Copy the full SHA
    2cc9016 View commit details
    Browse the repository at this point in the history
  6. Simplify Ubuntu builds

    Morwenn committed Jan 5, 2021
    Configuration menu
    Copy the full SHA
    13157e2 View commit details
    Browse the repository at this point in the history
  7. Configuration menu
    Copy the full SHA
    385d8b9 View commit details
    Browse the repository at this point in the history

Commits on Jan 6, 2021

  1. Make comparison_counter conditionally branchless (#177)

    Drive-by fixes:
    - Remove useless default template parameters
    - std::move a projection in counting_adapter
    Morwenn committed Jan 6, 2021
    Configuration menu
    Copy the full SHA
    2721ec7 View commit details
    Browse the repository at this point in the history
  2. Mark mountain sort internal projection as likely branchless (#177)

    indirect_adaper is implemented with mountain sort for random-access
    iterator. This commits turns internal lambdas used for projections into
    a proper named function object, and marks it as likely branchless when
    the projection it wraps is likely branchless itself.
    Morwenn committed Jan 6, 2021
    Configuration menu
    Copy the full SHA
    78a93e9 View commit details
    Browse the repository at this point in the history

Commits on Jan 10, 2021

  1. Configuration menu
    Copy the full SHA
    3b4dad0 View commit details
    Browse the repository at this point in the history
  2. ska_sort: don't feed a lambda to the pdqsort fallback (#177)

    The lambda was a leftover from when ska_sort still relied on std::sort
    as a fallback. Replacing it with std::less<> + the passed projection
    means that pdqsort might use its branchless partition algorithm when it
    makes sense.
    Morwenn committed Jan 10, 2021
    Configuration menu
    Copy the full SHA
    b37bfbc View commit details
    Browse the repository at this point in the history
  3. ska_sort: fix a bug when sorting signed __int128_t

    Due to a copy-paste error, ska_sort did not work properly with signed
    128-bit integers: it probably sorted signed and unsigned values
    correctly, but not a mix of both.
    
    This commit also uses std::uintptr_t when available instead of
    std::size_t when sorting pointers, making it generally more correct.
    Morwenn committed Jan 10, 2021
    Configuration menu
    Copy the full SHA
    dedda21 View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    b7c207b View commit details
    Browse the repository at this point in the history

Commits on Jan 12, 2021

  1. Configuration menu
    Copy the full SHA
    1f71831 View commit details
    Browse the repository at this point in the history
  2. Make TimSort::gallop* static

    Change originally proposed by @vedgy in timsort/cpp-TimSort#35
    Morwenn committed Jan 12, 2021
    Configuration menu
    Copy the full SHA
    f57d819 View commit details
    Browse the repository at this point in the history

Commits on Jan 17, 2021

  1. Configuration menu
    Copy the full SHA
    ce4d60e View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    5f1d25c View commit details
    Browse the repository at this point in the history

Commits on Jan 19, 2021

  1. Configuration menu
    Copy the full SHA
    bc1cb99 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    0e8c906 View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    d050b2d View commit details
    Browse the repository at this point in the history

Commits on Jan 24, 2021

  1. Change the random-access version to nth_element to QuickSelect (#179)

    This makes quick_merge_sort O(n log n) instead of O(n²) like it used to
    be (the libc++ implementation of std::nth_element used until then was
    quadratic).
    
    The new implementation was taken from Danila Kutenin's miniselect
    library.
    Morwenn committed Jan 24, 2021
    Configuration menu
    Copy the full SHA
    bc76f82 View commit details
    Browse the repository at this point in the history

Commits on Jan 25, 2021

  1. Categorize swap_ranges invocations (#180)

    Split swap_ranges calls into swap_ranges_inner and swap_ranges_overlap,
    where the first has the "no overlap" guarantee and checks to ensure that
    said guarantee holds.
    
    This commit also adds an audit mechanism to cpp-sort for checks that
    are too expensive for CPPSORT_ASSERT, and starts using it in
    swap_ranges_inner to ensure that the "no overlap" guarantee holds.
    Morwenn committed Jan 25, 2021
    Configuration menu
    Copy the full SHA
    64a140d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    dc15d5b View commit details
    Browse the repository at this point in the history
  3. Make projection_compare public

    This includes the following changes:
    - Move it out of detail and in cpp-sort/comparators
    - Get rid of its unused getters
    - Make it conditionally branchless (#177)
    - Make it a transparent comparator
    - Document it
    
    This commit includes a little cleanup of the corresponding documentation
    page.
    Morwenn committed Jan 25, 2021
    Configuration menu
    Copy the full SHA
    17f8f00 View commit details
    Browse the repository at this point in the history
  4. Revert "Document library decisions wrt LWG3031 (#136)"

    This reverts commit 0e8c906.
    Morwenn committed Jan 25, 2021
    Configuration menu
    Copy the full SHA
    b00c645 View commit details
    Browse the repository at this point in the history
  5. Configuration menu
    Copy the full SHA
    803787c View commit details
    Browse the repository at this point in the history

Commits on Jan 27, 2021

  1. Configuration menu
    Copy the full SHA
    9beca15 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    938676f View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    876cae8 View commit details
    Browse the repository at this point in the history

Commits on Jan 28, 2021

  1. Configuration menu
    Copy the full SHA
    57124c9 View commit details
    Browse the repository at this point in the history

Commits on Jan 29, 2021

  1. Configuration menu
    Copy the full SHA
    5a6a2e6 View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    279456c View commit details
    Browse the repository at this point in the history
  3. Configuration menu
    Copy the full SHA
    9c4220e View commit details
    Browse the repository at this point in the history
  4. Configuration menu
    Copy the full SHA
    0a7feaf View commit details
    Browse the repository at this point in the history
  5. Preparing release 1.9.0

    Morwenn committed Jan 29, 2021
    Configuration menu
    Copy the full SHA
    ca633a8 View commit details
    Browse the repository at this point in the history