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

P2214 A Plan for C++23 Ranges #928

Closed
brycelelbach opened this issue Oct 27, 2020 · 3 comments
Closed

P2214 A Plan for C++23 Ranges #928

brycelelbach opened this issue Oct 27, 2020 · 3 comments
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e C++23 Targeted at C++23 info Informational paper IS Ship vehicle: IS LEWG Library Evolution ranges std::ranges SG9 Ranges SG
Milestone

Comments

@brycelelbach
Copy link

P2214R0 A Plan for C++23 Ranges (Barry Revzin, Conor Hoekstra, Tim Song)

@brycelelbach brycelelbach added LEWG Library Evolution ranges std::ranges C++23 Targeted at C++23 needs-revision Paper needs changes before it can proceed IS Ship vehicle: IS B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list labels Oct 27, 2020
@brycelelbach
Copy link
Author

brycelelbach commented Oct 27, 2020

P2214R0: A Plan for C++23 Ranges

2020-10-27 Library Evolution Telecon Minutes

Chair: Bryce Adelstein Lelbach

Champion: Barry Revzin

Minute Taker: Ben Craig

Start: 2020-10-27 10:10 Pacific

Does this proposal have:

  • Examples?
    • Yes (in slides).
  • Implementation experience?
    • Yes (Ranges v3).
      • Note: Ranges v3 doesn't have adjacent, adjacent_transform, and filter_map.
  • Usage experience?
    • Yes (Ranges v3).
  • Deployment experience?
    • Yes (Ranges v3).
  • Discussion of prior art?
    • Yes.
  • Wording?
    • Only for some parts.

Naming for "two at a time" zip algorithms needs to be considered:

  • Current: adjacent (we may want to use this for "n at a time").
  • Alternatives: pairwise, zip_with_next.

Naming for "fold" needs to be considered.

Should we have a form of "fold" which does not take an initial value and requires a non-empty range?

How did you determine which features were most fundamental? Can you provide data that backs your categorization up?

Should we expose the ranges pipeline mechanism to users, so that they could write some of these things themselves?

Should we prioritize allowing users to define pipeable things that compose with ranges?

Two key questions:

  • Do we want to prioritize some set of ranges work for C++23?
  • Do we want to prioritize this set (P2214R0 Tier 1) of ranges work for C++23?

POLL: Prioritize exposing a mechanism that allows users to write range adapters that compose with standard range facilities over other ranges work.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
9 12 0 1 0

Attendance: 26

# of Authors: 3

Author Position: 3x WF

Outcome: That has consensus in favor.

WA: I think ranges::to is the most important thing.

POLL: Tier 1 of P2214R0 (A Plan for C++23 Ranges) is a reasonable set of ranges work to prioritize relative to the Tier 2 and Tier 3 ranges work.

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
7 12 1 0 0

Attendance: 26

# of Authors: 3

Author Position: 3x SF

Outcome: That has strong consensus in favor.

POLL: Tier 1 of P2214R0 (A Plan for C++23 Ranges) should be treated as a priority for C++23 (P0592 bucket 1 item), prioritized over other improvements to existing features (P0592 bucket 2 items) and new features (P0592 bucket 3 items).

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
3 2 3 4 2

Attendance: 26

# of Authors: 3

Author Position: SF, WF, N

Outcome: That has consensus against.

POLL: Tier 1 of P2214R0 (A Plan for C++23 Ranges) should be treated as improvements to an existing feature (P0592 bucket 2 item), prioritized over new features (P0592 bucket 3 items).

Strongly Favor Weakly Favor Neutral Weakly Against Strongly Against
8 8 0 1 0

Attendance: 26

# of Authors: 3

Author Position: 2x SF, WF

Outcome: That has consensus in favor.

WA: I think the most important feature is the ability for users to interoperate with what we already have; once this has that, I may feel differently.

We will classify Tier 1 of P2214R0 as a bucket 2 item.

We should consider reactivating the Ranges Study Group.

End: 11:38

Summary

We discussed P2214R0, which describes a variety of ranges work, inspired by Ranges V3, that we should pursue to build on top of C++20 ranges. The paper classifies the work into three tiers; the Tier 1 group is suggested as priorities for C++23. There was some technical discussion about specific features (such as chunk/slice and fold), but primarily we discussed the overall plan and what we should prioritize, relative to both other ranges work and to other Library Evolution work in general. It was mentioned that the proposed range adapters cannot be written by users in C++20. We had consensus that exposing a mechanism that allows users to write range adapters that compose with standard range facilities should be the highest priority ranges work. Once we have such a mechanism, users would be able to provide their own versions of all the proposed features. We discussed whether Tier 1 of P2214R0 should be proposed as an addition to the plenary approved set of C++23 priorities (P0592), however we did not have consensus for this. We did have consensus on the shape Tier 1 group of features in P2214R0, and agreed that they should be treated and prioritized as improvements to an existing feature (P0592 bucket 2 item). Finally, we briefly discussed the idea of reactivating the Ranges Study Group to drive this work, especially given that an informal group has been meeting regularly since the summer to pursue ranges enhancements.

Outcome

Revise P2214R0 (A Plan for C++23 Ranges), adding a mechanism for users to write range adapters as (at least) a Tier 1 item. Work on Tier 1 features will be considered as improvements to an existing feature (P0592 bucket 2 item).

@brycelelbach brycelelbach added ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting and removed ready-for-library-evolution-mailing-list-review This paper needs to be discussed on the Library Evolution mailing list labels Dec 9, 2020
@inbal2l inbal2l added the SG9 Ranges SG label Jun 8, 2021
@wg21bot
Copy link
Collaborator

wg21bot commented Sep 20, 2021

P2214R1 A Plan for C++23 Ranges (Barry Revzin, Conor Hoekstra, Tim Song)

@wg21bot wg21bot removed the needs-revision Paper needs changes before it can proceed label Sep 20, 2021
@wg21bot wg21bot added this to the 2021-telecon milestone Sep 20, 2021
@cor3ntin cor3ntin added info Informational paper and removed ready-for-library-evolution-meeting-review This paper needs to be discussed at a Library Evolution meeting labels Dec 8, 2021
@wg21bot
Copy link
Collaborator

wg21bot commented Feb 22, 2022

P2214R2 A Plan for C++23 Ranges (Barry Revzin, Conor Hoekstra, Tim Song)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
B2 - improvement Bucket 2 as described by P0592: bug fixes, performance improvements, integration fixes for/between e C++23 Targeted at C++23 info Informational paper IS Ship vehicle: IS LEWG Library Evolution ranges std::ranges SG9 Ranges SG
Projects
None yet
Development

No branches or pull requests

4 participants