diff --git a/libcxx/docs/OneRangesProposalStatus.csv b/libcxx/docs/OneRangesProposalStatus.csv new file mode 100644 --- /dev/null +++ b/libcxx/docs/OneRangesProposalStatus.csv @@ -0,0 +1,61 @@ +Section,Description,Dependencies,Asignee,Patch,Complete +[concepts],"Normally this would be more fine-grained, but it’s already been implemented.",,Christopher Di Bella,,✅ +[tuple.helper],Update includes.,,,, +[function.objects],"Comparison functions: equal_to, less, etc.",[concepts],Zoe Carver,D100429, +[memory.syn],Add specializations for uninitialized_* and destroy_*. ,"[concepts], [readable.traits]: iter_value_t",,, +[readable.traits]: indirectly_readable_traits,indirectly_readable_traits only. ,[concepts],Christopher Di Bella,D99461, +[iterator.traits],Mainly updates to iterator_traits.,"[readable.traits]: indirectly_readable_traits, [concepts]",Christopher Di Bella,"D99854, D99855", +[readable.traits]: iter_value_t,Finish implementing readable.traits.,"[readable.traits]: indirectly_readable_traits, [concepts], [iterator.traits]",Christopher Di Bella,D99863, +[specialized.algorithms],NOT FINISHED,NOT FINISHED,,, +[strings],Adds begin/end and updates const_iterator.,[iterator.concepts],,, +[views.span],Same as [strings],[iterator.concepts],,, +[incrementable.traits],,[concepts],Christopher Di Bella,"D99141, D99863",1/2 +[iterator.cust.move],Implement iter_move.,,Christopher Di Bella,D99873, +[iterator.cust.swap],Implement iter_swap.,"[concepts], [readable.traits]: iter_value_t",,, +[iterator.concepts],"indirectly_­readable, indirectly_writable, weakly_incrementable, incrementable, input_or_output_iterator, sentinel_for, sized_sentinel_for, input_iterator, output_iterator, forward_iterator, bidirectional_iterator, random_access_iterator, and contiguous_iterator.","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",Christopher Di Bella,"indirectly_readable: D100073 +indirectly_wriatable: D100078 weakly_incrementable, incrementable: D100080 input_or_output_iterator, sentinel_for: D100160 +input_iterator: D100271 +forward_iterator: D100275 +bidirectional_iterator: D100278", +[indirectcallable.indirectinvocable],"indirectly_unary_invocable, indirectly_regular_unary_invocable, indirectly_unary_predicate, indirectly_binary_predicate, indirectly_equivalence_relation, and indirectly_strict_weak_order.","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",,, +[projected],,[iterator.concepts],,, +[common.alg.req]: pt. 1,"indirectly_movable, indirectly_movable_sorable, indirectly_copyable, and indirectly_copyable_storable.",[iterator.concepts],,, +[common.alg.req]: pt. 2,indirectly_swappable,"[iterator.concepts], [iterator.cust.swap]",,, +[common.alg.req]: pt. 3,indirectly_comparable,[projected],,, +[common.alg.req]: pt. 4,"Note: could be done with pt. 1. … permutable, mergeable, and sortable",[iterator.concepts],,, +[std.iterator.tags],,[iterator.traits],,, +[range.iterator.opearations.advance],ranges::advance,[iterator.concepts],,, +[range.iterator.opearations.distance],ranges::distance,"[iterator.concepts], [range.range]",,, +[range.iterator.opearations.next],ranges::next,[iterator.concepts],,, +[range.iterator.opearations.prev],ranges::prev,[iterator.concepts],,, +[predef.iterators],Updates to predefined iterators.,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move]",,, +[move.sentinel],,[concepts] … Note: for testing it may be beneficial to have completed [predef.iterators]. ,,, +[common.iterator],,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move]",,, +[default.sentinels],The empty std::default_sentinel_t.,,,, +[counted.iterator],,"[iterator.concepts], [iterator.cust.swap], [iterator.cust.move], [default.sentinels]",,, +[stream.iterators],,[default.sentinels],,, +[ranges.syn]: pt. 1,All the stuff not specified elsewhere. ,"[range.access], [iterator.concepts], [range.all], [range.subrange], unreachable, [range.empty]",,, +[ranges.syn]: pt. 2,"iterator_t, sentinel_t, and safe_iterator_t",[range.access],Christopher Di Bella,"D100255, D100269", +[range.access],"ranges::begin, end, cbegin, cend, rbegin, rend, crbegin, and crend",[iterator.concepts],Christopher Di Bella,D100255, +[ranges.primitives],"size, empty, data, and cdata",[iterator.concepts],,, +[range.range],,[range.access],,, +[range.sized],,"[range.primitives], [range.range]",,, +[range.view],View and enable_view,[range.range],,, +[range.refinements],"OutputRange, InputRange, ForwardRange, BidirectionalRange, RandomAccessRange, ContiguousRange, CommonRange, ViewableRange","[ranges.syn]: pt. 2, [range.range]",Christopher Di Bella,"input_range: D100271 +forward_range: D100275 +bidirectional_range: D100278", +[view.interface],[range.utility.helpers] and view_interface,"[ranges.syn]: pt. 2, [range.view], [range.iterator.opearations.prev], [range.refinements]",,, +[range.subrange],,[view.interface],,, +[range.all],view::all,"[range.subrange], [range.view.ref]",,, +[range.view.ref],ref-view,[view.interface],,, +[range.filter],filter_view,[range.all],,, +[range.transform],transform_view,[range.all],,, +[range.iota],iota_view,[range.all],,, +[range.take],take_view,[range.all],,, +[range.join],join_view,[range.all],,, +[range.empty],empty_view,[view.interface],,, +[range.single],single_view,[view.interface],,, +[range.split],split_view,[range.all],,, +[range.counted],view::counted,[range.subrange],,, +[range.common],common_view,[range.all],,, +[range.reverse],reverse_view,[range.all],,, \ No newline at end of file diff --git a/libcxx/docs/RangesIssuePaperStatus.csv b/libcxx/docs/RangesIssuePaperStatus.csv new file mode 100644 --- /dev/null +++ b/libcxx/docs/RangesIssuePaperStatus.csv @@ -0,0 +1,59 @@ +"Number","Name","Status","Assignee" +`P0896R4 `__,,, +`P1035R7 `__,Input Range Adaptors,, +`P1207R4 `__,Movability Of Single-Pass Iterators,, +`P1243R4 `__,Rangify New Algorithms,, +`P1248R1 `__,Fixing Relations,, +`P1252R2 `__,Ranges Design Cleanup,, +`P1391R4 `__,Range Constructor For string_view,, +`P1456R1 `__,Move-Only Views,, +`P1474R1 `__,Helpful Pointers For contiguous_iterator,, +`P1522R1 `__,Iterator Difference Type And Integer Overflow,, +`P1523R1 `__,Views And Size Types,, +`P1638R1 `__,basic_istream_view::iterator Should Not Be Copyable,, +`P1716R3 `__,Range Comparison Algorithms Are Over-Constrained,, +`P1739R4 `__,Avoiding Template Bloat For Ranges,, +`P1862R1 `__,Range Adaptors For Non-Copyable Iterators,, +`P1870R1 `__,safe_range,, +`P1871R1 `__,disable_sized_sentinel_for,, +`P1878R1 `__,Constraining Readable Types,, +`P1970R2 `__,ranges::ssize,, +`P1983R0 `__,Fixing Minor Ranges Issues,, +`P1994R1 `__,elements_view Needs Its Own sentinel,, +`P2091R0 `__,Fixing Issues With Range Access CPOs,, +`P2106R0 `__,Range Algorithm Result Types,, +`LWG-3169 `__, ranges permutation generators discard useful information,, +`LWG-3173 `__, Enable CTAD for ref-view,, +`LWG-3179 `__, subrange should always model Range,, +`LWG-3180 `__, Inconsistently named return type for ranges::minmax_element,, +`LWG-3183 `__, Normative permission to specialize Ranges variable templates,, +`LWG-3186 `__," ranges removal, partition, and partial_sort_copy algorithms discard useful information",, +`LWG-3191 `__, std::ranges::shuffle synopsis does not match algorithm definition,, +`LWG-3276 `__, Class split_view::outer_iterator::value_type should inherit from view_interface,, +`LWG-3280 `__, View converting constructors can cause constraint recursion and are unneeded,, +`LWG-3281 `__, Conversion from pair-like types to subrange is a silent semantic promotion,, +`LWG-3282 `__, subrange converting constructor should disallow derived to base conversions,, +`LWG-3286 `__, ranges::size is not required to be valid after a call to ranges::begin on an input range,, +`LWG-3291 `__, iota_view::iterator has the wrong iterator_category,, +`LWG-3292 `__, iota_view is under-constrained,, +`LWG-3299 `__, Pointers don't need customized iterator behavior,, +`LWG-3301 `__, transform_view::iterator has incorrect iterator_category,, +`LWG-3302 `__, Range adaptor objects keys and values are unspecified,, +`LWG-3313 `__, join_view::iterator::operator-- is incorrectly constrained,, +`LWG-3323 `__, has-tuple-element helper concept needs convertible_to,, +`LWG-3325 `__, Constrain return type of transformation function for transform_view,, +`LWG-3335 `__, range_size_t and views::all_t,, +`LWG-3355 `__, The memory algorithms should support move-only input iterators introduced by P1207,, +`LWG-3363 `__, drop_while_view should opt-out of sized_range,, +`LWG-3364 `__, Initialize data members of ranges and their iterators,, +`LWG-3381 `__, begin and data must agree for contiguous_range,, +`LWG-3384 `__, transform_view::sentinel has an incorrect operator-,, +`LWG-3385 `__, common_iterator is not sufficiently constrained for non-copyable iterators,, +`LWG-3387 `__, [range.reverse.view] reverse_view unintentionally requires range,, +`LWG-3388 `__, view iterator types have ill-formed <=> operators,, +`LWG-3389 `__, A move-only iterator still does not have a counted_iterator,, +`LWG-3397 `__, ranges::basic_istream_view::iterator should not provide iterator_category,, +`LWG-3398 `__, tuple_element_t is also wrong for const subrange,, +`LWG-3474 `__, Nesting join_views is broken because of CTAD,, +`LWG-3500 `__, join_view::iterator::operator->() is bogus,, +`LWG-3505 `__, split_view::outer-iterator::operator++ misspecified,, diff --git a/libcxx/docs/RangesStatus.rst b/libcxx/docs/RangesStatus.rst new file mode 100644 --- /dev/null +++ b/libcxx/docs/RangesStatus.rst @@ -0,0 +1,51 @@ +.. ranges-status: + +================================ +libc++ Ranges Status +================================ + +.. include:: Helpers/Styles.rst + +.. contents:: + :local: + + +Overview +================================ + +This document contains the status of the C++20 Ranges library in libc++. It is used to +track both the status of the sub-projects of the ranges library and who is assigned to +these sub-projects. This is imperative to effective implementation so that work is not +duplicated and implementors are not blocked by each other. + +If you are interested in contributing to the libc++ Ranges library, please send a message +to the #libcxx channel in the LLVM discord. Please *do not* start working on any of the +assigned items below. + + +Sub-Projects in the One Ranges Proposal +======================================= + +.. csv-table:: + :file: OneRangesProposalStatus.csv + :header-rows: 1 + :widths: auto + + +Misc. Items and TODOs +==================================== + +(Note: files with required updates will contain the TODO at the begining of the list item +so they can be easily found via global search.) + + * TODO(XX_SPACESHIP_CONCEPTS): when spaceship support is added to various STL types, we need to update some concept tests. + +Paper and Issue Status +==================================== + +(Note: stolen from MSVC `here `_.) + +.. csv-table:: + :file: RangesIssuePaperStatus.csv + :header-rows: 1 + :widths: auto \ No newline at end of file diff --git a/libcxx/docs/index.rst b/libcxx/docs/index.rst --- a/libcxx/docs/index.rst +++ b/libcxx/docs/index.rst @@ -43,6 +43,7 @@ Cxx1zStatus Cxx2aStatus Cxx2bStatus + RangesStatus .. toctree::