cpprefjp / site

cpprefjpサイトのMarkdownソース
https://cpprefjp.github.io/
382 stars 157 forks source link

[C++23] mailing 2021-10をまとめる #912

Closed faithandbrave closed 1 year ago

faithandbrave commented 3 years ago

N4902 Editors’ Report – Programming Languages – C++

yohhoy commented 2 years ago

C++20対応状況Wikiにバックポートされる機能を記載

上記に該当する判定基準が良く分からなかったので、いったん「C++20に対するDefect Report」となっていた下記リストは C++23 Wikiページ に記載しています。

yumetodo commented 2 years ago

(C++20に対するバックポートが多すぎる・・・)

faithandbrave commented 2 years ago

時期的にも、C++20にバックポートされるかどうか判断がむずかしいですね…。コンパイラのC++20実装もリリースされてきてますし…。

h-sao commented 2 years ago

ちょっと外した質問だったらすみません

Wikiの「C++23の対応状況」のページのリスト元って、 例えばGCCのC++23 Language Features( https://gcc.gnu.org/projects/cxx-status.html#cxx23 )や cpprefrence.comのC++23 core language features ( https://en.cppreference.com/w/cpp/23 )と 一致するものですよね? Wikiの内容と、上記のC++23 Language Featuresの内容が微妙に異なっているので、ちょっと気になりました これらと合わせていいのであれば、私のようでも追記してみますが、どういうステイタスになってるかよくわかっておらず 書いちゃっていいものかどうか。。。と思っています

yohhoy commented 2 years ago

Wikiの内容と、上記のC++23 Language Featuresの内容が微妙に異なっているので、ちょっと気になりました

追記タイミングの問題でずれることはあると思いますが、そういうレベルではなく記載範囲が異なるという意味でしょうか? 最終的には等価な情報が記載される認識でいたため、本指摘のニュアンスが気になりました。

個人的には「Editors' Report」に記載された確定機能だけが記載されているイメージでした。 これ以外の情報源では cplusplus/papersレポジトリのIssue や reddit/Twitter/個人ブログなどが考えられます。善し悪しはさておき、cppreference.comは先行気味にリストアップしているように思えます。

h-sao commented 2 years ago

わたし自身がこのWikiページ使い方をあまり理解していないんだと思います 疑問に思ったきっかけは、 c++23の言語機能を知りたい →cpprefjpサイトに記載されているものが少ない様な気がする (例えばGCCのものと見比べるとちょっと少ないし異なる) →このWikiに記載されているものと、cpprefjpサイトに記載されているものとも異なる →いまどうなってるんですかね?やれることあるんですかね? というのが質問に至った流れです

記載途中かつ確定機能を順次記載、 なので内容がGCCなどのものと違っていて当然、 であれば、質問してすみませんでした…という気持ちと そういったステイタスがもう少し分かりやすくなるといいかなと思いました

なので記載範囲が異なる、という もう少し突っ込んだ意図の質問ではないです

h-sao commented 2 years ago

「Editors' Report」に記載された確定機能を記載している

という一文を、コンパイラの実装状況ページか、c++23のWikiページかにでも 追記しておくのはどうでしょうか

yohhoy commented 2 years ago

個人的には「Editors' Report」に記載された確定機能だけが記載されているイメージでした。

当該Wikiページは事実上 @faithandbrave さんがメンテされていた認識で(お疲れ様です!)、上記の解釈もあくまで自分がそう読み取ったという推測にすぎません。

「Editors' Report」に記載された確定機能を記載している という一文を、コンパイラの実装状況ページか、c++23のWikiページかにでも追記しておくのはどうでしょうか

第三者も編集参加しやすくなるため、上記のようなガイドライン明示には同意です。

→いまどうなってるんですかね?やれることあるんですかね? というのが質問に至った流れです

今回自分も初めて言語機能Wikiページに追記編集してみましたが、過去ページをみながら「たぶんこんな感じかな?」と探り探りでした。

yumetodo commented 2 years ago

「Editors' Report」に記載された確定機能を記載している という一文を、コンパイラの実装状況ページか、c++23のWikiページかにでも追記しておくのはどうでしょうか

これが正しいならという前提がもちろん付きますが、このくらいの取り決めは明文化されていていいのではないでしょうか。 https://github.com/cpprefjp/site/issues/481#issuecomment-349029606 の方針ともすれ違いませんし(この方針自体の是非は話の巻き返しになって無意味なので避けてください)

もちろん一度取り決めてもより積極的/消極的なな方針への転換はどのときアクティブな編集者が適宜合意形成して変えられますし

faithandbrave commented 2 years ago

本Wikiページには、Editor's Reportに記載され、仕様 (草案) に取り込まれた機能の一覧および、それらへの本サイトの対応状況を記載する。 Defect Report (issue) については、過去の言語バージョンに遡って適用されることがある。これは、仕様の欠陥が判明したらコンパイラは次の言語バージョンを待たずに早期に対応するためである。次期言語のFDIS (Final Draft International Standard) が発行されたあとから、各機能がコンパイラから正式リリースされるまでに判明した欠陥への対応は、本サイトでは過去バージョンに遡って適用されると考える。

こんな感じでどうでしょう。今後の言語の策定体制によって方針は変わるかもしれないので、ひとまず各言語バージョンのWikiに個別に上記文章を書いておくのでどうでしょうか。

faithandbrave commented 2 years ago

最近 (C++23 → C++20) の過去バージョンに遡って適用する動きについては @onihusube さんの方がくわしいかと思いますので、補足や指摘などあればお願いしたいです。

onihusube commented 2 years ago

Core/LiblaryのIssueのまとめ(P2462R0, P2450R0)とP2036R3のDRとしての扱いは今まで通りの運用だと思うんですが、それ以外のもの、特にC++20に対してDRとされているライブラリ機能の提案については、コンパイラの実装状況とかに関係なくC++20に対して適用することを意図しているように思います(私はよくこれを歴史修正と呼んでいます)。

なので、そうしたもの(多分<ranges>, <format>周りがメイン?)に関してはC++20のページに記載しておくのがいいかと思います。DRであることを明示しておくのはいいと思います。

onihusube commented 2 years ago

判別基準を明確にするなら、「C++20で導入された機能に対するDRとされている提案」が(多分全部)それにあたると思います。

ほとんどがライブラリ機能に対するものですが、多分今後P2468が言語機能としてそこに加わります。

faithandbrave commented 2 years ago

だいぶ返信が滞ってしまっていますが、どうまとめようか長いこと悩み中です。

onihusube commented 2 years ago

なんか余計なことを言ってしまったかもしれません・・・

よく見てみると一部には機能テストマクロをバンプアップしてるものもあったりするので、私が思ってるほど強く過去を無かったことにするものではないかもしれません。

ここでの対応としてはC++20に対するDRとしてまとめてC++23wikiページに書いておく、でも良いかと思いました。

というかDRごとにその経緯を考慮して書き分けるのは無理というか継続不可能なので、DRはそれがWDに取り込まれたバージョンのページにDRであることを明記して置いておく、今の形が良いのではと思い始めています。適用されるバージョンすらもDR毎に異なるので、それを明記しようとするのも負担が大きくなりそうです・・・

faithandbrave commented 2 years ago

そうですね。 DRはもう、基本はC++23の機能ということにしておいて、「過去の言語バージョン対応のコンパイラですでに実装されている可能性がある」としておくのがいいかもしれません。 formatとか以外は。formatとかは例外事項として項目を作ってC++20扱いとする、というのをC++23 Wikiに書いておいていい気がします。

h-sao commented 2 years ago

C++23 wikiページに 2022/3 の Editor's Report (N4911) の記載が無かったので、リンクを追記しておきました https://www.open-std.org/jtc1/sc22/wg21/docs/papers/2022/n4911.html (変更点はまだ更新してないです)

acd1034 commented 2 years ago

上で報告のありましたN4911の内容をC++23 wikiページに反映させました。また9月のメーリスにありましたN4918についても、内容を反映させました。

CWGに対するDefect Reportについては、C++23のページに記載しています(LWGへのDRはありませんでした)。C++20ページに記載した方が良い等あればご指摘ください。

faithandbrave commented 2 years ago

ありがとうございます!助かります。

faithandbrave commented 1 year ago

だいぶ間が空いてしまいましたが、C++23の変更内容をまとめていきます…。

faithandbrave commented 1 year ago

C++23 Wikiのライブラリについて、提案文書の番号がちらほらずれているのを修正する。

| P0288R9 | move_only_function |  |
| P0798R8 | Monadic operations for std::optional |  |
| P0849R8 | move_only_function | |

...

| P1147R1 | Printing volatile Pointers |  |
| P1272R4 | Byteswapping for fun&&nuf | 完了 |
| P1675R2 | Printing volatile Pointers |  |
| P1147R1 | rethrow_exception must be allowed to copy |
faithandbrave commented 1 year ago

完了しました。