Difference between revisions of "cpp/experimental"
(Revert edit to TM and apply to concurrency 2 instead, per suggestions page) |
(1) split the table in to: TS-grade, non-TS proposals. (2) add more associated proposals for "Pattern Matching", `std::executor`, `std::simd`, and "Contracts".) |
||
Line 4: | Line 4: | ||
The C++ standards committee publishes experimental C++ language and library extensions for future standardization. | The C++ standards committee publishes experimental C++ language and library extensions for future standardization. | ||
− | Note: until 2012, these publications used the TR (technical report) format. Since 2012 ISO procedure changed to use the TS (technical specification) format. | + | Note: until 2012, these publications used the '''TR''' (technical report) format. Since 2012 ISO procedure changed to use the '''TS''' (technical specification) format. |
+ | ====TR/TS specifications==== | ||
{|table class=wikitable | {|table class=wikitable | ||
|- | |- | ||
Line 100: | Line 101: | ||
{{mark_ok}}[[cpp/language/modules|Merged into C++20]]. | {{mark_ok}}[[cpp/language/modules|Merged into C++20]]. | ||
| | | | ||
− | |- | + | |-id="Parallelism TS Version 2" |
|ISO/IEC TS 19570:2018 | |ISO/IEC TS 19570:2018 | ||
|Parallelism TS Version 2 | |Parallelism TS Version 2 | ||
Line 132: | Line 133: | ||
| | | | ||
|- | |- | ||
+ | |ISO/IEC NP 19569 | ||
+ | |Array Extensions TS | ||
+ | |{{mark_cancel}} Withdrawn. Abandoned draft: {{stddoc|n3820}} (2013-10-10). | ||
| | | | ||
− | | | + | |} |
− | + | ||
− | | | + | ====Non-TS proposals==== |
+ | {|table class=wikitable | ||
+ | |- | ||
+ | !Name||Status||links | ||
|- | |- | ||
− | |||
|Linear Algebra | |Linear Algebra | ||
|Now targeting mainline standard {{stddoc|p1673r13}} (2023-11-10), {{stddoc|p1674r2}} (2022-05-15), {{stddoc|p1385r7}} (2022-10-15).<br> | |Now targeting mainline standard {{stddoc|p1673r13}} (2023-11-10), {{stddoc|p1674r2}} (2022-05-15), {{stddoc|p1385r7}} (2022-10-15).<br> | ||
Line 143: | Line 149: | ||
| | | | ||
|- | |- | ||
+ | |Pattern Matching | ||
+ | |Early development. Draft {{stddoc|p1371r3}} (2020-09-15). See also: | ||
+ | * Pattern Matching using {{c|is}} and {{c|as}} - {{stddoc|P2392R2}} (2022-09-24), | ||
+ | * Pattern Matching: {{c|match}} expression - {{stddoc|P2688R1}} (2024-02-15). | ||
+ | * {{c|switch}} for Pattern Matching - {{stddoc|P2940R0}} (2022-04-18), | ||
+ | * Identifiers for Pattern Matching - {{stddoc|P2941R0}} (2022-02-24), | ||
| | | | ||
+ | |- | ||
|{{lc|std::execution}} | |{{lc|std::execution}} | ||
− | |Forwarded to LWG, wording in progress. Proposal {{stddoc| | + | |Forwarded to LWG, wording in progress. Proposal {{stddoc|p2300r9}} (2024-04-02). See also: |
+ | * System execution context - {{stddoc|P2079R3}} (2022-07-15), | ||
+ | * {{lc|std::execution}} introduction - {{stddoc|P3090R0}} (2024-02-14), | ||
+ | * A plan for {{lc|std::execution}} for C++26 - {{stddoc|P3109R0}} (2024-02-12), | ||
+ | * Reconsidering the {{c|std::execution::on}} algorithm - {{stddoc|P3175R0}} (2024-03-14). | ||
|{{rl|execution| execution}} | |{{rl|execution| execution}} | ||
|- | |- | ||
− | | | + | |{{ltt|cpp/experimental/simd|std::simd}} |
+ | |The main document (TS ISO/IEC 19570:2018) is described in [[#Parallelism TS Version 2|"C++ Extensions for Parallelism V2"]]. See also: | ||
+ | * Expected Feedback from SIMD in Parallelism TS2 - {{stddoc|P1915R0}} (2019-10-07), | ||
+ | * {{ltt|cpp/experimental/simd|std::simd}} - Merge data-parallel types from the Parallelism TS 2 - {{stddoc|P1928R8}} (2023-11-09), | ||
+ | * Intel's response to {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P2638R0}} (2022-09-22), | ||
+ | * Proposal to support interleaved complex values in {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P2663R5}} (2023-12-08), | ||
+ | * Proposal to extend {{ltt|cpp/experimental/simd|std::simd}} with permutation API - {{stddoc|P2664R6}} (2024-01-16), | ||
+ | * {{ltt|cpp/experimental/simd|std::simd}} Intro slides - {{stddoc|P2803R0}} (2023-02-09), | ||
+ | * Issaquah Slides for Intel response to {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P2807R0}} (2023-02-10), | ||
+ | * Proposal to extend {{ltt|cpp/experimental/simd|std::simd}} with more constructors and accessors - {{stddoc|P2876R0}} (2023-05-18), | ||
+ | * Algorithm-like vs {{ltt|cpp/experimental/simd|std::simd}} based RNG API - {{stddoc|P2880R0}} (2023-05-18), | ||
+ | * {{ltt|cpp/experimental/simd|std::simd}} types should be regular - {{stddoc|P2892R0}} (2023-05-19), | ||
+ | * {{ltt|cpp/experimental/simd|std::simd}} types should be regular - {{stddoc|P2892R0}} LEWG presentation - {{stddoc|P2926R0}} (2023-06-19), | ||
+ | * {{tt|simd_invoke}} - {{stddoc|P2929R0}} (2023-07-19), | ||
+ | * {{ltt|cpp/experimental/simd|std::simd}} overloads for {{header|bit}} - {{stddoc|P2933R1}} (2023-12-08), | ||
+ | * Add saturating library support to {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P2956R0}} (2023-08-01), | ||
+ | * Allowing user-defined types in {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P2964R0}} (2024-02-09), | ||
+ | * Interface Directions for {{ltt|cpp/experimental/simd|std::simd}} - {{stddoc|P3024R0}} (2023-11-30). | ||
+ | |[[cpp/experimental/parallelism 2|Data parallel types]] | ||
+ | |- | ||
|Contracts | |Contracts | ||
− | |Early development. Proposal {{stddoc|p2659r2}} (2022-11-30). Draft {{stddoc|p2660r0}} (2022-10-14). | + | |Early development. Proposal {{stddoc|p2659r2}} (2022-11-30). Draft {{stddoc|p2660r0}} (2022-10-14). See also: |
+ | * A Proposal to Publish a Technical Specification for Contracts - {{stddoc|P2659R2}} (2022-12-05), | ||
+ | * Miscellaneous amendments to the Contracts TS - {{stddoc|P2661R0}} (2022-10-15), | ||
+ | * Contracts for C++: Prioritizing Safety - {{stddoc|P2680R1}} (2022-12-15), | ||
+ | * A proposed plan for contracts in C++ - {{stddoc|P2695R1}} (2023-02-09), | ||
+ | * Proposal of Condition-centric Contracts Syntax - {{stddoc|P2737R0}} (2022-12-30), | ||
+ | * Contracts for C++: Prioritizing Safety - Presentation slides - {{stddoc|P2743R0}} (2022-12-13), | ||
+ | * Evaluation of Checked Contracts - {{stddoc|P2751R1}} (2023-02-14), | ||
+ | * A Bold Plan for a Complete Contracts Facility - {{stddoc|P2755R1}} (2024-04-11), | ||
+ | * The idea behind the contracts MVP - {{stddoc|P2817R0}} (2023-03-05), | ||
+ | * Proposal of Contracts Supporting Const-On-Definition Style - {{stddoc|P2829R0}} (2023-04-13), | ||
+ | * Contract violation handling semantics for the contracts MVP - {{stddoc|P2852R0}} (2023-04-24), | ||
+ | * The Lakos Rule: Narrow Contracts and {{c/core|noexcept}} Are Inherently Incompatible - {{stddoc|P2861R0}} (2023-05-19), | ||
+ | * Requirements for a Contracts syntax - {{stddoc|P2885R3}} (2023-10-05), | ||
+ | * Contracts on lambdas - {{stddoc|P2890R2}} (2023-12-13), | ||
+ | * Constant evaluation of Contracts - {{stddoc|P2894R2}} (2024-01-11), | ||
+ | * Outstanding design questions for the Contracts MVP - {{stddoc|P2896R0}} (2023-08-22), | ||
+ | * Contracts for C++ - {{stddoc|P2900R6}} (2024-02-29), | ||
+ | * A Principled Approach to Open Design Questions for Contracts - {{stddoc|P2932R3}} (2024-01-16), | ||
+ | * An Attribute-Like Syntax for Contracts - {{stddoc|P2935R4}} (2023-11-05), | ||
+ | * Contracts must avoid disclosing sensitive information - {{stddoc|P2947R0}} (2023-07-20), | ||
+ | * Slides for P2861R0: Narrow Contracts and {{c/core|noexcept}} are Inherently Incompatable - {{stddoc|P2949R0}} (2023-07-14), | ||
+ | * Contracts and virtual functions for the Contracts MVP - {{stddoc|P2954R0}} (2023-08-03), | ||
+ | * Contracts and coroutines - {{stddoc|P2957R1}} (2024-01-13), | ||
+ | * A natural syntax for Contracts - {{stddoc|P2961R2}} (2023-11-08), | ||
+ | * An Overview of Syntax Choices for Contracts - {{stddoc|P3028R0}} (2023-11-05), | ||
+ | * Protection against modifications in contracts - {{stddoc|P3071R1}} (2023-12-17), | ||
+ | * Remove evaluation_undefined_behavior and will_continue from the Contracts MVP - {{stddoc|P3073R0}} (2024-01-27), | ||
+ | * Should {{tt|ignore}} and {{tt|observe}} exist for constant evaluation of contracts? - {{stddoc|P3079R0}} (2024-01-11), | ||
+ | * Contracts for C++: Support for virtual functions - {{stddoc|P3097R0}} (2024-04-15), | ||
+ | * Tokyo Technical Fixes to Contracts - {{stddoc|P3119R0}} (2024-04-04), | ||
+ | * Contracts on virtual functions for the Contracts MVP - {{stddoc|P3165R0}} (2024-02-27), | ||
+ | * Inherited contracts - {{stddoc|P3169R0}} (2024-04-14), | ||
+ | * Slides for LEWG presentation of P2900R6: Contracts for C++ - {{stddoc|P3189R0}} (2024-03-19), | ||
+ | * Slides for EWG presentation of D2900R7: Contracts for C++ - {{stddoc|P3190R0}} (2024-03-20), | ||
+ | * A response to the Tokyo EWG polls on the Contracts MVP (P2900R6) - {{stddoc|P3197R0}} (2024-04-12), | ||
+ | * A takeaway from the Tokyo LEWG meeting on Contracts MVP - {{stddoc|P3198R0}} (2024-03-29), | ||
+ | * Contracts for C++: Naming the ''Louis semantic'' - {{stddoc|P3226R0}} (2024-04-12), | ||
+ | * Contracts for C++: Revisiting contract check elision and duplication - {{stddoc|P3228R0}} (2024-04-16). | ||
| | | | ||
|- | |- | ||
− | |||
|2D Graphics | |2D Graphics | ||
|Early development. Draft {{stddoc|p0267r10}} (2019-10-07). | |Early development. Draft {{stddoc|p0267r10}} (2019-10-07). | ||
− | |||
− | |||
− | |||
− | |||
− | |||
| | | | ||
|} | |} |
Revision as of 12:50, 13 May 2024
The C++ standards committee publishes experimental C++ language and library extensions for future standardization.
Note: until 2012, these publications used the TR (technical report) format. Since 2012 ISO procedure changed to use the TS (technical specification) format.
TR/TS specifications
ISO number | Name | Status | links |
---|---|---|---|
ISO/IEC TR 18015:2006 | Technical Report on C++ Performance | Published 2006 (ISO store).
Draft: TR18015 (2006-02-15). |
|
ISO/IEC TR 19768:2007 | Technical Report on C++ Library Extensions | Published 2007-11-15 (ISO store).
Draft: N1836 (2005-06-24) |
|
ISO/IEC 29124:2010 | Extensions to the C++ Library to support mathematical special functions | Published 2010-09-03 (ISO Store).
Final draft: N3060 (2010-03-06). |
special functions |
ISO/IEC TR 24733:2011 | Extensions for the programming language C++ to support decimal floating-point arithmetic | Published 2011-10-25 (ISO Store)
Draft: N2849 (2009-03-06). |
|
ISO/IEC TS 18822:2015 | C++ File System Technical Specification | Published 2015-06-18 (ISO store). Final draft: N4100 (2014-07-04). |
filesystem |
ISO/IEC TS 19570:2015 | C++ Extensions for Parallelism | Published 2015-06-24. (ISO Store). Final draft: N4507 (2015-05-05). ✔Merged into C++17. |
parallelism |
ISO/IEC TS 19841:2015 | Transactional Memory TS | Published 2015-09-16, (ISO Store). Final draft: N4514 (2015-05-08). | transactional memory |
ISO/IEC TS 19568:2015 | C++ Extensions for Library Fundamentals | Published 2015-09-30, (ISO Store). Final draft: N4480 (2015-04-07). ✔Merged into C++17 except for invocation traits. |
library extensions |
ISO/IEC TS 19217:2015 | C++ Extensions for Concepts | Published 2015-11-13 (ISO Store). Final draft: N4553 (2015-10-02). Current draft: P0734R0 (2017-07-14). ✔Merged into C++20 (with modifications). |
constraints and concepts |
ISO/IEC TS 19571:2016 | C++ Extensions for Concurrency | Published 2016-01-19 (ISO Store). Final draft: P0159R0 (2015-10-22). ✔Partially merged into C++20. |
concurrency |
ISO/IEC TS 19568:2017 | C++ Extensions for Library Fundamentals, Version 2 | Published 2017-03-30 (ISO Store). Draft: N4617 (2016-11-28). ✔Partially merged into C++17 and C++20. |
library extensions 2 |
ISO/IEC TS 21425:2017 | Ranges TS | Published 2017-12-05 (ISO Store). Draft: N4685 (2017-07-31). |
ranges |
ISO/IEC TS 22277:2017 | Coroutines TS | Published 2017-12-05 (ISO Store). Draft N4736 (2018-03-31). Latest draft: N4775 (2018-10-07). |
|
ISO/IEC TS 19216:2018 | Networking TS | Published 2018-04-24 (ISO Store). Draft N4734 (2017-04-04). Latest draft: N4771 (2018-10-08). | networking |
ISO/IEC TS 21544:2018 | Modules TS | Published 2018-05-16 (ISO Store). Final Draft N4720 (2018-01-29). |
|
ISO/IEC TS 19570:2018 | Parallelism TS Version 2 | Published 2018-11-15 (ISO Store). Final draft: N4793 (2018-11-26).
Post-publication draft: N4808 (2019-03-11). |
parallelism 2 |
ISO/IEC TS 23619:2021 | Reflection TS | Published 2021-10-11 (ISO store). Draft N4856 (2020-03-02). Alternative draft P1240R2 (2022-01-15). | reflection |
Numerics | Early development. Draft P1889R1 (2019-12-27). | ||
ISO/IEC AWI TS 9922 | Concurrency TS Version 2 | Early development: N4956 (2023-07-05). | concurrency 2 |
ISO/IEC AWI TS 19568 | C++ Extensions for Library Fundamentals, Version 3 | Early development. Draft N4948 (2023-05-08). | library extensions 3 |
ISO/IEC DTS 12907 | Transactional Memory TS, Version 2 | Early development: N4923 (2022-10-14). | |
ISO/IEC NP 19569 | Array Extensions TS | × Withdrawn. Abandoned draft: N3820 (2013-10-10). |
Non-TS proposals
Name | Status | links |
---|---|---|
Linear Algebra | Now targeting mainline standard P1673R13 (2023-11-10), P1674R2 (2022-05-15), P1385R7 (2022-10-15). |
|
Pattern Matching | Early development. Draft P1371R3 (2020-09-15). See also: | |
std::execution | Forwarded to LWG, wording in progress. Proposal P2300R9 (2024-04-02). See also: | execution |
std::simd | The main document (TS ISO/IEC 19570:2018) is described in "C++ Extensions for Parallelism V2". See also:
|
Data parallel types |
Contracts | Early development. Proposal P2659R2 (2022-11-30). Draft P2660R0 (2022-10-14). See also:
|
|
2D Graphics | Early development. Draft P0267R10 (2019-10-07). |
See also
C documentation for Experimental C features
|