Difference between revisions of "cpp/experimental"
m (updates: libfun3) |
m (→TR/TS specifications) |
||
(44 intermediate revisions by 9 users not shown) | |||
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 | ||
|- | |- | ||
− | !ISO number||Name||Status|| | + | !ISO number||Name||Status||Links, headers |
|- | |- | ||
− | | ISO/IEC TR 18015:2006 | + | |ISO/IEC TR 18015:2006 |
− | | Technical Report on C++ Performance | + | |Technical Report on C++ Performance |
− | | Published 2006 ([https://www.iso.org/standard/43351.html ISO store]). | + | |Published 2006 ([https://www.iso.org/standard/43351.html ISO store]). |
− | Draft: [ | + | Draft: [https://www.open-std.org/jtc1/sc22/wg21/docs/TR18015.pdf TR18015] (2006-02-15). |
− | | <!-- {{tt|std::hardware}} --> | + | |<!--{{tt|std::hardware}}--> |
|- | |- | ||
− | | ISO/IEC TR 19768:2007 | + | |ISO/IEC TR 19768:2007 |
− | | Technical Report on C++ Library Extensions | + | |Technical Report on C++ Library Extensions |
− | | Published 2007-11-15 ([https://www.iso.org/standard/43289.html ISO store]). | + | |Published 2007-11-15 ([https://www.iso.org/standard/43289.html ISO store]). |
− | Draft: | + | Draft: {{stddoc|n1836}} (2005-06-24)<br> |
ISO 29124 split off, the rest merged into C++11. | ISO 29124 split off, the rest merged into C++11. | ||
| | | | ||
|- | |- | ||
− | | ISO/IEC 29124:2010 | + | |ISO/IEC 29124:2010 |
− | | Extensions to the C++ Library to support mathematical special functions | + | |Extensions to the C++ Library to support mathematical special functions |
− | | Published 2010-09-03 ([https://www.iso.org/standard/50511.html ISO Store]). | + | |Published 2010-09-03 ([https://www.iso.org/standard/50511.html ISO Store]). |
− | Final draft: | + | Final draft: {{stddoc|n3060}} (2010-03-06).<br> |
{{mark_ok}}[[cpp/numeric/special_functions|Merged into C++17]]. | {{mark_ok}}[[cpp/numeric/special_functions|Merged into C++17]]. | ||
− | | {{rl|special functions}} | + | |{{rl|special functions|Special functions}} |
|- | |- | ||
− | | ISO/IEC TR 24733:2011 | + | |ISO/IEC TR 24733:2011 |
− | | Extensions for the programming language C++ to support decimal floating-point arithmetic | + | |Extensions for the programming language C++ to support decimal floating-point arithmetic |
− | | Published 2011-10-25 ([https://www.iso.org/standard/38843.html ISO Store]) | + | |Published 2011-10-25 ([https://www.iso.org/standard/38843.html ISO Store]) |
− | Draft: | + | Draft: {{stddoc|n2849}} (2009-03-06).<br> |
− | May be superseded by a future TS or merged into a future revision of C++ (most recent merge proposal was | + | May be superseded by a future TS or merged into a future revision of C++ (most recent merge proposal was {{stddoc|n3871}}). |
− | | <!-- {{tt|decimal32}}<br>{{tt|decimal64}}<br>{{tt|decimal128}} --> | + | |<!--{{tt|decimal32}}<br>{{tt|decimal64}}<br>{{tt|decimal128}}--> |
|- | |- | ||
− | | ISO/IEC TS 18822:2015 | + | |ISO/IEC TS 18822:2015 |
− | | C++ File System Technical Specification | + | |C++ File System Technical Specification |
− | | Published 2015-06-18 ([https://www.iso.org/standard/63483.html ISO store]). Final draft: | + | |Published 2015-06-18 ([https://www.iso.org/standard/63483.html ISO store]). Final draft: {{stddoc|n4100}} (2014-07-04).<br> |
{{mark_ok}}[[cpp/filesystem|Merged into C++17]]. | {{mark_ok}}[[cpp/filesystem|Merged into C++17]]. | ||
− | | {{rl|fs|filesystem}} | + | |{{rl|fs|Filesystem}}, {{header|filesystem}} |
|- | |- | ||
− | | ISO/IEC TS 19570:2015 | + | |ISO/IEC TS 19570:2015 |
− | | C++ Extensions for Parallelism | + | |C++ Extensions for Parallelism |
− | | Published 2015-06-24. ([https://www.iso.org/standard/65241.html ISO Store]). Final draft: | + | |Published 2015-06-24. ([https://www.iso.org/standard/65241.html ISO Store]). Final draft: {{stddoc|n4507}} (2015-05-05).<br> |
{{mark_ok}}Merged into C++17. | {{mark_ok}}Merged into C++17. | ||
− | | {{rl|parallelism}} | + | |{{rl|parallelism|Parallelism}} |
|- | |- | ||
− | | ISO/IEC TS 19841:2015 | + | |ISO/IEC TS 19841:2015 |
− | | Transactional Memory TS | + | |Transactional Memory TS |
− | | Published 2015-09-16, ([https://www.iso.org/standard/66343.html ISO Store]). Final draft: | + | |Published 2015-09-16, ([https://www.iso.org/standard/66343.html ISO Store]). Final draft: {{stddoc|n4514}} (2015-05-08). |
− | | [[cpp/language/transactional_memory| | + | |[[cpp/language/transactional_memory|Transactional memory]] |
|- | |- | ||
− | | ISO/IEC TS 19568:2015 | + | |ISO/IEC TS 19568:2015 |
− | | C++ Extensions for Library Fundamentals | + | |C++ Extensions for Library Fundamentals |
− | | Published 2015-09-30, ([https://www.iso.org/standard/65238.html ISO Store]). Final draft: | + | |Published 2015-09-30, ([https://www.iso.org/standard/65238.html ISO Store]). Final draft: {{stddoc|n4480}} (2015-04-07).<br> |
{{mark_ok}}Merged into C++17 except for invocation traits. | {{mark_ok}}Merged into C++17 except for invocation traits. | ||
− | |{{rl|lib_extensions| | + | |{{rl|lib_extensions|Library extensions}} |
|- | |- | ||
− | | ISO/IEC TS 19217:2015 | + | |ISO/IEC TS 19217:2015 |
− | | C++ Extensions for Concepts | + | |C++ Extensions for Concepts |
− | | Published 2015-11-13 ([https://www.iso.org/standard/64031.html ISO Store]). Final draft: | + | |Published 2015-11-13 ([https://www.iso.org/standard/64031.html ISO Store]). Final draft: {{stddoc|n4553}} (2015-10-02). Current draft: {{stddoc|p0734r0}} (2017-07-14).<br> |
{{mark_ok}}[[cpp/language/constraints|Merged into C++20]] (with modifications). | {{mark_ok}}[[cpp/language/constraints|Merged into C++20]] (with modifications). | ||
− | |{{rl|constraints| | + | |{{rl|constraints|Constraints and concepts}}, {{header|concepts}} |
|- | |- | ||
− | | ISO/IEC TS 19571:2016 | + | |ISO/IEC TS 19571:2016 |
− | | C++ Extensions for Concurrency | + | |C++ Extensions for Concurrency |
− | | Published 2016-01-19 ([https://www.iso.org/standard/65242.html ISO Store]). Final draft: | + | |Published 2016-01-19 ([https://www.iso.org/standard/65242.html ISO Store]). Final draft: {{stddoc|p0159r0}} (2015-10-22).<br> |
{{mark_ok}}Partially merged into C++20. | {{mark_ok}}Partially merged into C++20. | ||
− | | {{rl|concurrency}} | + | |{{rl|concurrency|Concurrency}} |
|- | |- | ||
− | | ISO/IEC TS 19568:2017 | + | |ISO/IEC TS 19568:2017 |
− | | C++ Extensions for Library Fundamentals, Version 2 | + | |C++ Extensions for Library Fundamentals, Version 2 |
− | | Published 2017-03-30 ([https://www.iso.org/standard/70587.html ISO Store]). Draft: | + | |Published 2017-03-30 ([https://www.iso.org/standard/70587.html ISO Store]). Draft: {{stddoc|n4617}} (2016-11-28).<br> |
{{mark_ok}}Partially merged into C++17 and C++20. | {{mark_ok}}Partially merged into C++17 and C++20. | ||
− | | {{rl|lib_extensions_2| | + | |{{rl|lib_extensions_2|Library extensions 2}} |
|- | |- | ||
− | | ISO/IEC TS 21425:2017 | + | |ISO/IEC TS 21425:2017 |
− | | Ranges TS | + | |Ranges TS |
− | | Published 2017-12-05 ([https://www.iso.org/standard/70910.html ISO Store]). Draft: | + | |Published 2017-12-05 ([https://www.iso.org/standard/70910.html ISO Store]). Draft: {{stddoc|n4685}} (2017-07-31).<br> |
{{mark_ok}}[[cpp/ranges|Merged into C++20]]. | {{mark_ok}}[[cpp/ranges|Merged into C++20]]. | ||
− | | {{rl|ranges}} | + | |{{rl|ranges|Ranges}}, {{header|ranges}} |
|- | |- | ||
− | | ISO/IEC TS 22277:2017 | + | |ISO/IEC TS 22277:2017 |
− | | Coroutines TS | + | |Coroutines TS |
− | | Published 2017-12-05 ([https://www.iso.org/standard/73008.html ISO Store]). Draft | + | |Published 2017-12-05 ([https://www.iso.org/standard/73008.html ISO Store]). Draft: {{stddoc|n4736}} (2018-03-31). Latest draft: {{stddoc|n4775}} (2018-10-07).<br> |
{{mark_ok}}[[cpp/coroutine|Merged into C++20]]. | {{mark_ok}}[[cpp/coroutine|Merged into C++20]]. | ||
− | | | + | |{{header|coroutine}} |
|- | |- | ||
− | | ISO/IEC TS 19216:2018 | + | |ISO/IEC TS 19216:2018 |
− | | Networking TS | + | |Networking TS |
− | | Published 2018-04-24 ([https://www.iso.org/standard/64030.html ISO Store]). Draft | + | |Published 2018-04-24 ([https://www.iso.org/standard/64030.html ISO Store]). Draft: {{stddoc|n4734}} (2017-04-04). Latest draft: {{stddoc|n4771}} (2018-10-08). |
− | | {{rl|networking}} | + | {{cot|See also non-TS proposals}} |
+ | * Standard Secure Networking - {{stddoc|P2586R0}} (2022-09-13) | ||
+ | * Sender-Receiver Interface For Networking - {{stddoc|P2762R2}} (2023-10-12) | ||
+ | {{cob}} | ||
+ | |{{rl|networking|Networking}} | ||
|- | |- | ||
− | | ISO/IEC TS 21544:2018 | + | |ISO/IEC TS 21544:2018 |
− | | Modules TS | + | |Modules TS |
− | | Published 2018-05-16 ([https://www.iso.org/standard/71051.html ISO Store]). Final Draft | + | |Published 2018-05-16 ([https://www.iso.org/standard/71051.html ISO Store]). Final Draft: {{stddoc|n4720}} (2018-01-29).<br> |
{{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 | ||
+ | |Parallelism TS Version 2 | ||
+ | |Published 2018-11-15 ([https://www.iso.org/standard/70588.html ISO Store]). Final draft: {{stddoc|n4793}} (2018-11-26). Post-publication draft: {{stddoc|n4808}} (2019-03-11). See also non-TS {{tt|std::simd}} proposals [[#SIMD proposals|below]]. | ||
+ | |{{rl|parallelism 2|Parallelism 2}} | ||
+ | |-id="Reflection TS" | ||
+ | |ISO/IEC TS 23619:2021 | ||
+ | |Reflection TS | ||
+ | |Published 2021-10-11 ([https://www.iso.org/standard/76425.html ISO store]). Draft: {{stddoc|n4856}} (2020-03-02). See also non-TS proposals [[#Reflection proposals|below]]. | ||
+ | |{{rl|reflect|Reflection}} | ||
|- | |- | ||
− | | | + | | |
− | | | + | |Numerics |
− | | | + | |Early development. Draft: {{stddoc|p1889r1}} (2019-12-27). |
− | + | | | |
− | | | + | |
|- | |- | ||
− | | ISO/IEC TS | + | |ISO/IEC TS 9922 |
− | | | + | |Concurrency TS Version 2 |
− | | Published | + | |Published 2024-10-09 ([https://www.iso.org/standard/83630.html ISO Store]). Draft: {{stddoc|n4956}} (2023-07-05). |
− | |{{rl| | + | |{{rl|concurrency 2|Concurrency 2}} |
|- | |- | ||
+ | |ISO/IEC TS 19568:2024 | ||
+ | |C++ Extensions for Library Fundamentals, Version 3 | ||
+ | |Published 2024-08-26 ([https://www.iso.org/standard/86293.html ISO Store]). Draft: {{stddoc|n4948}} (2023-05-08). | ||
+ | |{{rl|lib extensions 3|Library extensions 3}} | ||
+ | |- | ||
+ | |ISO/IEC DTS 12907 | ||
+ | |Transactional Memory TS, Version 2 | ||
+ | |Early development. Draft: {{stddoc|n4923}} (2022-10-14). | ||
| | | | ||
− | |||
− | |||
− | |||
|- | |- | ||
− | | ISO/IEC | + | |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, Headers |
− | | | + | |
− | | | + | |
− | | | + | |
|- | |- | ||
− | | | + | |Linear Algebra |
− | | | + | |{{mark ok}}[[cpp/header/linalg|Merged into C++26]]. Proposal: {{stddoc|P1673R13}} (2023-11-10). |
− | + | {{cot|More proposals:}} | |
− | | | + | * A proposal to add linear algebra support to the C++ standard library - {{stddoc|P1385R7}} (2022-10-15) |
+ | * Evolving a Standard C++ Linear Algebra Library from the {{enwiki|Basic Linear Algebra Subprograms|BLAS}} - {{stddoc|P1674R2}} (2022-05-15) | ||
+ | * Presentation of {{stddoc|P1385R7}} to LEWG at Issaquah 2023 - {{stddoc|P2802R0}} (2023-02-09) | ||
+ | * Fix C++26 by optimizing {{c/core|linalg::conjugated}} for non-complex value types - {{stddoc|P3050R2}} (2024-08-13) | ||
+ | * Fix C++26 by making the {{enwiki|Symmetric matrix|symmetric}} and {{enwiki|Hermitian matrix|Hermitian}} rank-k and rank-2k updates consistent with the {{enwiki|Basic Linear Algebra Subprograms|BLAS}} - {{stddoc|P3371R2}} (2024-10-14) | ||
+ | {{cob}} | ||
+ | |{{header|linalg}} | ||
|- | |- | ||
− | | | + | |{{lc|std::execution}} |
− | | | + | |Forwarded to LWG, wording in progress.<br> |
− | | | + | {{mark ok}}[[cpp/header/execution|Merged into C++26]]. Proposal: {{stddoc|P2300R10}} (2024-06-28). |
+ | {{cot|More proposals:}} | ||
+ | * System execution context - {{stddoc|P2079R5}} (2024-10-16) | ||
+ | * Sender-Receiver Interface for Networking - {{stddoc|P2762R2}} (2023-10-12) | ||
+ | * Member customization points for Senders and Receivers - {{stddoc|P2855R1}} (2024-02-22) | ||
+ | * An Event Model for C++ Executors - {{stddoc|P2882R0}} (2023-05-11) | ||
+ | * Sender Algorithm Customization - {{stddoc|P2999R3}} (2023-12-13) | ||
+ | * {{lc|std::execution}} introduction - {{stddoc|P3090R0}} (2024-02-14) | ||
+ | * A plan for {{lc|std::execution}} for C++26 - {{stddoc|P3109R0}} (2024-02-12) | ||
+ | * Improving diagnostics for Sender expressions - {{stddoc|P3164R0}} (2024-03-01) | ||
+ | * Reconsidering the {{c/core|std::execution::on}} algorithm - {{stddoc|P3175R3}} (2024-06-25) | ||
+ | * {{tt|finally}}, {{tt|write_env}}, and {{tt|unstoppable}} Sender Adaptors - {{stddoc|P3284R1}} (2024-07-16) | ||
+ | * Fixing Lazy Sender Algorithm Customization - {{stddoc|P3303R1}} (2024-06-25) | ||
+ | * A Utility for Creating Execution Environments - {{stddoc|P3325R3}} (2024-07-23) | ||
+ | * When Do You Know {{tt|connect}} Doesn't Throw? - {{stddoc|P3388R0}} (2024-09-10) | ||
+ | * {{c/core|std::execution}} wording fixes - {{stddoc|P3396R0}} (2024-09-16) | ||
+ | * Enabling more efficient stop-token based cancellation of senders - {{stddoc|P3409R0}} (2024-10-16) | ||
+ | * {{tt|system_scheduler}} on Win32, Darwin and Linux - {{stddoc|P3456R0}} (2024-10-15) | ||
+ | * Summarizing {{c/core|std::execution::bulk()}} issues - {{stddoc|P3481R0}} (2024-10-16) | ||
+ | {{cob}} | ||
+ | |{{rl|execution|Execution}}, {{header|execution}} | ||
+ | |- | ||
+ | |{{lc|std::inplace_vector}} | ||
+ | |{{mark ok}}[[cpp/header/inplace_vector|Merged into C++26]]. Proposal: {{stddoc|P0843R14}} (2024-06-26). | ||
+ | {{cot|More proposals:}} | ||
+ | * {{tt|inplace_vector}} - {{stddoc|P0843}}({{stddoc|P0843R7|R7}}) LEWG presentation - {{stddoc|P2925R0}} (2023-06-16) | ||
+ | * A direction for Vector - {{stddoc|P3147R1}} (2024-03-18) | ||
+ | * An allocator-aware {{lc|std::inplace_vector}} - {{stddoc|P3160R2}} (2024-10-15) | ||
+ | {{cob}} | ||
+ | |{{header|inplace_vector}} | ||
+ | |- | ||
+ | |Pattern Matching | ||
+ | |Early development. Draft {{stddoc|P1371R3}} (2020-09-15). | ||
+ | {{cot|More proposals:}} | ||
+ | * Pattern Matching using {{c/core|is}} and {{c/core|as}} - {{stddoc|P2392R3}} (2024-10-16) | ||
+ | * Pattern Matching: {{c/core|match}} expression - {{stddoc|P2688R3}} (2024-10-16) | ||
+ | * {{c/core|switch}} for Pattern Matching - {{stddoc|P2940R0}} (2022-04-18) | ||
+ | * Identifiers for Pattern Matching - {{stddoc|P2941R0}} (2022-02-24) | ||
+ | * A Postcondition ''is'' a Pattern Match - {{stddoc|P3210R2}} (2024-09-10) | ||
+ | * A unified syntax for Pattern Matching and Contracts when introducing a new name - {{stddoc|P3249R0}} (2024-05-22) | ||
+ | * A simpler notation for PM - {{stddoc|P3332R0}} (2024-06-18) | ||
+ | * Slides for P2688R2 - Pattern Matching: {{c/core|match}} Expression - {{stddoc|P3476R0}} (2024-10-16) | ||
+ | {{cob}} | ||
| | | | ||
+ | |-id="Reflection proposals" | ||
+ | |Reflection | ||
+ | |The main document (ISO/IEC TS 23619:2021) is described in {{ls|#Reflection TS}} above. | ||
+ | {{cot|More proposals:}} | ||
+ | * Scalable Reflection in C++ - {{stddoc|P1240R2}} (2022-01-14) | ||
+ | * Expansion statements - {{stddoc|P1306R3}} (2024-10-14) | ||
+ | * Reflection on attributes - {{stddoc|P1887R1}} (2020-01-13) | ||
+ | * Metaprogramming - {{stddoc|P2237R0}} (2020-10-15) | ||
+ | * Python Bindings with Value-Based Reflection - {{stddoc|P2911R1}} (2023-10-13) | ||
+ | * Reflection for C++26 - {{stddoc|P2996R7}} (2024-10-13) | ||
+ | * Using Reflection to Replace a Metalanguage for Generating JS Bindings - {{stddoc|P3010R0}} (2023-10-13) | ||
+ | * ABI comparison with reflection - {{stddoc|P3095R0}} (2024-02-15) | ||
+ | * Function Parameter Reflection in Reflection for C++26 - {{stddoc|P3096R3}} (2024-09-15) | ||
+ | * Generative Extensions for Reflection - {{stddoc|P3157R1}} (2024-05-22) | ||
+ | * Syntax for Reflection - {{stddoc|P3381R0}} (2024-09-17) | ||
+ | * Attributes reflection - {{stddoc|P3385R1}} (2024-10-15) | ||
+ | * Annotations for Reflection - {{stddoc|P3394R0}} (2024-10-14) | ||
+ | * Reflection Syntax Options Summary - {{stddoc|P3419R0}} (2024-10-11) | ||
+ | * Reflection of Templates - {{stddoc|P3420R0}} (2024-10-16) | ||
+ | * Reflection header should minimize standard library dependencies - {{stddoc|P3429R0}} (2024-10-16) | ||
+ | * Reflection and meta-programming - {{stddoc|P3435R0}} (2024-10-14) | ||
+ | * Proposed default principles: Reflect C++, Generate C++ - {{stddoc|P3437R0}} (2024-10-16) | ||
+ | * Reflection on SG21 2024 Process - {{stddoc|P3443R0}} (2024-10-14) | ||
+ | * A Suggestion for Reflection Access Control - {{stddoc|P3451R0}} (2024-10-15) | ||
+ | {{cob}} | ||
+ | | {{rl|reflect|Reflection}} | ||
+ | |-id="SIMD proposals" | ||
+ | |{{rlt|simd|std::simd}} | ||
+ | |The main document (TS ISO/IEC 19570:2018) is described in [[#Parallelism TS Version 2|"C++ Extensions for Parallelism V2"]] above. | ||
+ | {{cot|More proposals:}} | ||
+ | * Expected Feedback from SIMD in Parallelism TS2 - {{stddoc|P1915R0}} (2019-10-07) | ||
+ | * {{rlt|simd|std::simd}} - Merge data-parallel types from the Parallelism TS 2 - {{stddoc|P1928R12}} (2024-10-11) | ||
+ | * Intel's response to {{rlt|simd|std::simd}} - {{stddoc|P2638R0}} (2022-09-22) | ||
+ | * Proposal to support interleaved complex values in {{rlt|simd|std::simd}} - {{stddoc|P2663R5}} (2023-12-08) | ||
+ | * Proposal to extend {{rlt|simd|std::simd}} with permutation API - {{stddoc|P2664R8}} (2024-10-15) | ||
+ | * {{rlt|simd|std::simd}} Intro slides - {{stddoc|P2803R0}} (2023-02-09) | ||
+ | * Issaquah Slides for Intel response to {{rlt|simd|std::simd}} - {{stddoc|P2807R0}} (2023-02-10) | ||
+ | * Proposal to extend {{rlt|simd|std::simd}} with more constructors and accessors - {{stddoc|P2876R1}} (2024-05-22) | ||
+ | * Algorithm-like vs {{rlt|simd|std::simd}} based RNG API - {{stddoc|P2880R0}} (2023-05-18) | ||
+ | * {{rlt|simd|std::simd}} types should be regular - {{stddoc|P2892R0}} (2023-05-19) | ||
+ | * {{rlt|simd|std::simd}} types should be regular - {{stddoc|P2892R0}} LEWG presentation - {{stddoc|P2926R0}} (2023-06-19) | ||
+ | * {{tt|simd_invoke}} - {{stddoc|P2929R0}} (2023-07-19) | ||
+ | * {{rlt|simd|std::simd}} overloads for {{header|bit}} - {{stddoc|P2933R2}} (2024-10-16) | ||
+ | * Add saturating library support to {{rlt|simd|std::simd}} - {{stddoc|P2956R0}} (2023-08-01) | ||
+ | * Allowing user-defined types in {{rlt|simd|std::simd}} - {{stddoc|P2964R1}} (2024-05-22) | ||
+ | * Interface Directions for {{rlt|simd|std::simd}} - {{stddoc|P3024R0}} (2023-11-30) | ||
+ | * Provide predefined {{rlt|simd|std::simd}} permute generator functions for common operations - {{stddoc|P3067R0}} (2024-05-22) | ||
+ | * Replace {{rlt|simd|std::simd}} {{c/core|operator[]}} with getter and setter functions - or not - {{stddoc|P3275R0}} (2024-05-22) | ||
+ | * Exploration of namespaces for {{rlt|simd|std::simd}} - {{stddoc|P3287R1}} (2024-10-15) | ||
+ | * Range constructors for {{rlt|simd|std::simd}} - {{stddoc|P3299R2}} (2024-10-16) | ||
+ | * Add an {{tt|iota}} object for {{rlt|simd|std::simd}} (and more) - {{stddoc|P3319R1}} (2024-06-28) | ||
+ | * {{rlt|simd|std::simd}} issues: explicit, unsequenced, identity-element position, and members of disabled simd - {{stddoc|P3430R0}} (2024-10-15) | ||
+ | * Add {{tt|n_elements}} named constructor to {{rlt|simd|std::simd}} - {{stddoc|P3440R0}} (2024-10-15) | ||
+ | * Rename {{tt|simd_split}} to {{tt|simd_chunk}} - {{stddoc|P3441R0}} (2024-10-15) | ||
+ | * Add utilities for easier type-bit casting in {{rlt|simd|std::simd}} - {{stddoc|P3445R0}} (2024-10-16) | ||
+ | * {{rlt|simd|std::simd}} is a {{lconcept|range}} - {{stddoc|P3480R0}} (2024-10-16) | ||
+ | {{cob}} | ||
+ | |{{rl|simd|Data parallel types}} | ||
|- | |- | ||
− | | | + | |Contracts |
− | + | |Early development. Proposal {{stddoc|P2659R2}} (2022-11-30). Draft {{stddoc|P2660R0}} (2022-10-14). | |
− | | Early development. Draft | + | {{cot|More proposals:}} |
+ | * 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|P2900R10}} (2024-10-13) | ||
+ | * 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 {{stddoc|P2861R0}}: Narrow Contracts and {{c/core|noexcept}} are Inherently Incompatible - {{stddoc|P2949R0}} (2023-07-14) | ||
+ | * Contracts and virtual functions for the Contracts MVP - {{stddoc|P2954R0}} (2023-08-03) | ||
+ | * Contracts and coroutines - {{stddoc|P2957R2}} (2024-10-14) | ||
+ | * 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 {{tt|evaluation_undefined_behavior}} and {{tt|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) | ||
+ | * Contracts for C++: Postcondition captures - {{stddoc|P3098R0}} (2024-10-14) | ||
+ | * Undefined and erroneous behavior are contract violations - {{stddoc|P3100R1}} (2024-10-16) | ||
+ | * Tokyo Technical Fixes to Contracts - {{stddoc|P3119R1}} (2024-05-09) | ||
+ | * Contracts on virtual functions for the Contracts MVP - {{stddoc|P3165R0}} (2024-02-27) | ||
+ | * Inherited contracts - {{stddoc|P3169R0}} (2024-04-14) | ||
+ | * Contract testing support - {{stddoc|P3183R1}} (2024-05-22) | ||
+ | * Slides for LEWG presentation of {{stddoc|P2900R6}}: Contracts for C++ - {{stddoc|P3189R0}} (2024-03-19) | ||
+ | * Slides for LEWG presentation of {{stddoc|P2900R7}}: Contracts for C++ - {{stddoc|P3190R0}} (2024-03-20) | ||
+ | * A response to the Tokyo EWG polls on the Contracts MVP ({{stddoc|P2900R6}}) - {{stddoc|P3197R0}} (2024-04-12) | ||
+ | * A takeaway from the Tokyo LEWG meeting on Contracts MVP - {{stddoc|P3198R0}} (2024-03-29) | ||
+ | * The contract of {{lc|std::sort|sort()}} - {{stddoc|P3212R0}} (2024-07-03) | ||
+ | * Contracts for C++: Naming the ''Louis semantic'' - {{stddoc|P3226R0}} (2024-04-12) | ||
+ | * Contracts for C++: Fixing the contract violation handling API - {{stddoc|P3227R0}} (2024-10-16) | ||
+ | * Contracts for C++: Revisiting contract check elision and duplication - {{stddoc|P3228R1}} (2024-05-21) | ||
+ | * An alternate proposal for naming contract semantics - {{stddoc|P3238R0}} (2024-05-06) | ||
+ | * A unified syntax for Pattern Matching and Contracts when introducing a new name - {{stddoc|P3249R0}} (2024-05-22) | ||
+ | * C++ contracts with regards to function pointers - {{stddoc|P3250R0}} (2024-05-07) | ||
+ | * C++ contracts and coroutines - {{stddoc|P3251R0}} (2024-05-07) | ||
+ | * Make the predicate of {{tt|contract_assert}} more regular - {{stddoc|P3257R0}} (2024-04-26) | ||
+ | * Ship Contracts in a TS - {{stddoc|P3265R3}} (2024-05-28) | ||
+ | * Approaches to C++ Contracts - {{stddoc|P3267R1}} (2024-05-22) | ||
+ | * C++ Contracts Constification Challenges Concerning Current Code - {{stddoc|P3268R0}} (2024-05-07) | ||
+ | * Do Not Ship Contracts as a TS - {{stddoc|P3269R0}} (2024-05-21) | ||
+ | * Repetition, Elision, and Constification w.r.t. {{tt|contract_assert}} - {{stddoc|P3270R0}} (2024-05-22) | ||
+ | * Function Usage Types (Contracts for Function Pointers) - {{stddoc|P3271R1}} (2024-10-15) | ||
+ | * {{stddoc|P2900}} Is Superior to a Contracts TS - {{stddoc|P3276R0}} (2024-05-18) | ||
+ | * Contracts: Protecting The Protector - {{stddoc|P3285R0}} (2024-05-15) | ||
+ | * Integrating Existing Assertions With Contracts - {{stddoc|P3290R2}} (2024-09-06) | ||
+ | * C++26 Needs Contract Checking - {{stddoc|P3297R1}} (2024-06-21) | ||
+ | * An opt-in approach for integration of traditional assert facilities in C++ contracts - {{stddoc|P3311R0}} (2024-05-22) | ||
+ | * Compile time resolved contracts - {{stddoc|P3317R0}} (2024-05-22) | ||
+ | * Contracts Interaction With Tooling - {{stddoc|P3321R0}} (2024-07-12) | ||
+ | * Contract assertions on function pointers - {{stddoc|P3327R0}} (2024-10-16) | ||
+ | * Observable Checkpoints During Contract Evaluation - {{stddoc|P3328R0}} (2024-06-14) | ||
+ | * Usage Experience for Contracts with BDE - {{stddoc|P3336R0}} (2024-06-23) | ||
+ | * Contracts - What are we doing here (EWG Presentation) - {{stddoc|P3343R0}} (2024-06-25) | ||
+ | * Virtual Functions on Contracts (EWG - Presentation for {{stddoc|P3097}}) - {{stddoc|P3344R0}} (2024-06-28) | ||
+ | * Class invariants and contract checking philosophy - {{stddoc|P3361R1}} (2024-07-23) | ||
+ | * Static analysis and “safety” of Contracts, {{stddoc|P2900}} vs {{stddoc|P2680}}/{{stddoc|P3285}} - {{stddoc|P3362R0}} (2024-08-13) | ||
+ | * Contract assertions versus static analysis and “safety” - {{stddoc|P3376R0}} (2024-10-14) | ||
+ | * Static Analysis of Contracts with P2900 - {{stddoc|P3386R0}} (2024-10-15) | ||
+ | * Contract assertions on coroutines - {{stddoc|P3387R0}} (2024-10-09) | ||
+ | * Improving the handling of exceptions thrown from contract predicates - {{stddoc|P3417R0}} (2024-10-16) | ||
+ | * Contracts Implementors Report - {{stddoc|P3460R0}} (2024-10-16) | ||
+ | * Standard library hardening - {{stddoc|P3471R0}} (2024-10-16) | ||
+ | * Constification should not be part of the MVP ('''M'''inimal '''V'''iable '''P'''roduct) - {{stddoc|P3478R0}} (2024-10-16) | ||
+ | {{cob}} | ||
| | | | ||
|- | |- | ||
− | + | |2D Graphics | |
− | | 2D Graphics | + | |Early development. Draft {{stddoc|P0267R10}} (2019-10-07). |
− | | Early development. Draft | + | |
| | | | ||
|- | |- | ||
− | | | + | |Graph Library |
− | | | + | |Early development. |
− | | {{ | + | {{cot|More proposals:}} |
+ | * Graph Library: Overview - {{stddoc|P3126R2}} (2024-08-05) | ||
+ | * Graph Library: Algorithms - {{stddoc|P3128R2}} (2024-09-12) | ||
+ | * Graph Library: Graph Container Interface - {{stddoc|P3130R2}} (2024-08-05) | ||
+ | * Graph Library: Graph Containers - {{stddoc|P3131R2}} (2024-08-05) | ||
+ | {{cob}} | ||
| | | | ||
|} | |} | ||
Line 155: | Line 361: | ||
===See also=== | ===See also=== | ||
{{dsc begin}} | {{dsc begin}} | ||
− | {{dsc see c | c/experimental | Experimental C features | nomono=true}} | + | {{dsc see c|c/experimental|Experimental C features|nomono=true}} |
{{dsc end}} | {{dsc end}} | ||
+ | |||
+ | ===External links=== | ||
+ | {{elink begin}} | ||
+ | {{elink|num=1|[https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2024/sd-1.htm PL22.16/WG21 document list] - All C++ committee documents (TS/proposals) for 2016-{{CURRENTYEAR}}.}} | ||
+ | {{elink|num=2|[https://www.open-std.org/jtc1/sc22/wg21/docs/papers/{{CURRENTYEAR}}/ JTC1/SC22/WG21 Proposals (mailing) for {{CURRENTYEAR}}].}} | ||
+ | {{elink end}} | ||
{{langlinks|de|es|ja|ru|zh}} | {{langlinks|de|es|ja|ru|zh}} |
Latest revision as of 00:18, 6 November 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.
Contents |
[edit] TR/TS specifications
ISO number | Name | Status | Links, headers |
---|---|---|---|
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, <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, <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, <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). |
<coroutine> |
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). See also non-TS std::simd proposals below.
|
Parallelism 2 |
ISO/IEC TS 23619:2021 | Reflection TS | Published 2021-10-11 (ISO store). Draft: N4856 (2020-03-02). See also non-TS proposals below. | Reflection |
Numerics | Early development. Draft: P1889R1 (2019-12-27). | ||
ISO/IEC TS 9922 | Concurrency TS Version 2 | Published 2024-10-09 (ISO Store). Draft: N4956 (2023-07-05). | Concurrency 2 |
ISO/IEC TS 19568:2024 | C++ Extensions for Library Fundamentals, Version 3 | Published 2024-08-26 (ISO Store). Draft: N4948 (2023-05-08). | Library extensions 3 |
ISO/IEC DTS 12907 | Transactional Memory TS, Version 2 | Early development. Draft: N4923 (2022-10-14). | |
ISO/IEC NP 19569 | Array Extensions TS | × Withdrawn. Abandoned draft: N3820 (2013-10-10). |
[edit] Non-TS proposals
Name | Status | Links, Headers | ||
---|---|---|---|---|
Linear Algebra | ✔Merged into C++26. Proposal: P1673R13 (2023-11-10).
|
<linalg> | ||
std::execution | Forwarded to LWG, wording in progress. ✔Merged into C++26. Proposal: P2300R10 (2024-06-28).
|
Execution, <execution> | ||
std::inplace_vector | ✔Merged into C++26. Proposal: P0843R14 (2024-06-26). | <inplace_vector> | ||
Pattern Matching | Early development. Draft P1371R3 (2020-09-15).
|
|||
Reflection | The main document (ISO/IEC TS 23619:2021) is described in Reflection TS above.
|
Reflection | ||
std::simd
|
The main document (TS ISO/IEC 19570:2018) is described in "C++ Extensions for Parallelism V2" above.
|
Data parallel types | ||
Contracts | Early development. Proposal P2659R2 (2022-11-30). Draft P2660R0 (2022-10-14).
|
|||
2D Graphics | Early development. Draft P0267R10 (2019-10-07). | |||
Graph Library | Early development. |
[edit] See also
C documentation for Experimental C features
|
[edit] External links
1. | PL22.16/WG21 document list - All C++ committee documents (TS/proposals) for 2016-2024. |
2. | JTC1/SC22/WG21 Proposals (mailing) for 2024. |