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,55 @@ +Section,Description,Dependencies,Asignee,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],, +[memory.syn],Add specializations for uninitialized_* and destroy_*. ,"[concepts], [readable.traits]: iter_value_t",, +[readable.traits]: readable_traits,readable_traits only. ,[concepts],, +[iterator.traits],Mainly updates to iterator_traits.,"[readable.traits]: readable_traits, [concepts]",, +[readable.traits]: iter_value_t,Finish implementing readable.traits.,"[readable.traits]: readable_traits, [concepts], [iterator.traits]",, +[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],, +[iterator.cust.move],Implement iter_move.,,, +[iterator.cust.swap],Implement iter_swap.,"[concepts], [readable.traits]: iter_value_t",, +[iterator.concepts],"Readable, Writable, WeaklyIncrementable, Incremental, Iterator, Sentinel, SizedSentinel, InputIterator, OutputIterator, ForwardIterator, BidirectionalIterator, RandomAccessIterator, and ContiguousIterator.","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",, +[indirectcallable.indirectinvocable],"IndirectUnaryInvocable, IndirectRegularUnaryInvocable, IndirectUnaryPredicate, IndirectRelation, and IndirectStrictWeakOrder","[concepts], [readable.traits]: iter_value_t, [iterator.traits]",, +[projected],,[iterator.concepts],, +[common.alg.req]: pt. 1,"IndirectlyMovable, IndirectlyMocableStorable, IndirectlyCopyable, and IntirectlyCopyableStorable",[iterator.concepts],, +[common.alg.req]: pt. 2,IndirectlySwappable,"[iterator.concepts], [iterator.cust.swap]",, +[common.alg.req]: pt. 3,IndirectlyComparable,[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],, +[range.access],"ranges::begin, end, cbegin, cend, rbegin, rend, crbegin, and crend",[iterator.concepts],, +[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]",, +[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 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::