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.15.0 #216

Merged
merged 38 commits into from
Aug 12, 2023
Merged

Release 1.15.0 #216

merged 38 commits into from
Aug 12, 2023

Conversation

Morwenn
Copy link
Owner

@Morwenn Morwenn commented Aug 12, 2023

No description provided.

In response to GitHub's brown-out of the platform.
Dive greedily in left nodes when possible. The new algorithm does not
need to track whether we come from a parent or a child to decide what to
do next.
It mostly changes package_info to use the new way of specifying CMake
properties.
Change generate_sorting_network.py to automatically find the best
sorting network from the SorterHunter directory for a given size, and
generate the corresponding code for sorting_network_sorter.
Also smaller depth for the 28-input network.

Once again courtesy of SorterHunter.
- Make sorting_network_sorter<3> stable
- Mark sorter_traits<N> specializations as stable for N in [0,3]
The new abstraction is simpler, more to the point, and just as useful in
the library. Moreover it allows to get rid of a bunch of speciail cases
I never liked.

The precondition check in the constructor is just the cherry on top.
The only reason verge_adapter, unlike verge_sorter, did not work with
bidirectional iterators was the half-baked hacks using sized_iterator
which I couldn't reasonably impose on users, and I certainly did not
want to add more hacks to more sorters. Replacing size_iterator with
sized_range solved that issue.

This change includes a minr refactor to reuse a bit of split_adapter to
compute the iterator category of verge_adapter, which is done the same
way.
The first bug is due calling hybrid_adapter::get with two template
parameters in the constructor while it only accepts one. The second bug
is because stable_adapter<hybrid_adapter<A, B>>::type is not
constructible from hybrid_adapter<A, B>.

These two bugs mean that the specialization probably never worked. A
simple test case was added, which would have exposed both bugs.
Once again thanks to the SorterHunter project by @bertdobbelaere
@Morwenn Morwenn merged commit 31dd8e9 into master Aug 12, 2023
19 checks passed
@Morwenn Morwenn deleted the develop branch August 13, 2023 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant