VC++ バージョン表記の表の構成#542
Conversation
|
|
||
|
|
||
| ## Windows 8 / Visual C++ 2012 Update 1 無印 | ||
| ## Windows 8 / 2012 Update 1 無印 |
There was a problem hiding this comment.
「Windows 8 / 2012」と並んでしまうとWindows Server 2012と誤解してVisual C++のバージョンを指しているとは読み辛い気がします。それと元からあったものですが「Visual C++ 2012 Update 1 無印」ってなんでしょうね?
There was a problem hiding this comment.
ありがとうございます。Visual C++ を戻しますね。
無印はよく分かりません。最初から無印と書いてあったようですね https://github.com/cpprefjp/site/blame/3308a73e97dbaf8c2d3b5ab809af8b4e11a4404d/article/msvc-locales.md#L20
There was a problem hiding this comment.
無印で調べてみますと、どうやら Windows 8 Professional に対する Windows 8 (非Pro版) を "無印" と呼称する隠語があるようですね。ここでの無印が VS の無印を意図したものなのか Win8 の無印を意図したものなのかは依然として分かりませんが。因みに Visual Studio 2012 エディション構成 - Microsoft Visual Studio 2012 - Visual Studio を見ると VS2012 に無印(?) (Edition なし?) はないようです…。
| @@ -63,7 +63,7 @@ int main() | |||
| - [GCC, C++11 mode](/implementation.md#gcc): 4.7.0 | |||
| - [ICC](/implementation.md#icc): ?? | |||
| - [Visual C++](/implementation.md#visual_cpp): 2012, 2013 | |||
There was a problem hiding this comment.
別で議論すべきかもしれませんが「2012, 2013」となっていると2015以降はどうなのかが気になってしまいます。バージョンの記載方針が欲しい気がします。下の方には「2010, 2012, 2013, 2015, 2017」と並んでいるのも見かけますし…。
There was a problem hiding this comment.
情報が最新でないのか・後のバージョンでは対応されていないのかの区別がしたいということですね。恐らく、これはサイト全体にわたる問題なので別で議論した方が良さそうです。
There was a problem hiding this comment.
スタイルページにあるように、そこに記載しているのは、作業者が動作確認できたバージョンです。作業者が全てのバージョンのコンパイラを用意することは現実的ではないため、「サポートが開始されたバージョン」とはしていません。
https://cpprefjp.github.io/working_style.html
There was a problem hiding this comment.
|
|
||
| ## <a id="visual_cpp" href="#visual_cpp">Microsoft Visual C++</a> | ||
| このサイトでは Visual C++ と呼ぶ。 | ||
| このサイトでは Visual C++ と呼ぶ。Visual Studio .NET 2003 以降、Visual C++はVisual Studioに統合され独立した製品ではなくなったが、当サイトでは製品に含まれているコンポーネント名としてのVisual C++を採用する。 |
There was a problem hiding this comment.
製品が統合されたのはVisual Studio 97からです。Visual Studio登場以降もVisual C++ .net Standard Edition 2003までは単体販売が継続されています。単体販売終了以降もVisual C++ 2010 Expressまで無償公開されています。Visual C++単体が完全になくなったのはVisual Studio 2012からです。これらをひっくるめて「Visual Studio .NET 2003 以降」とするのは事実と異なります。
There was a problem hiding this comment.
ありがとうございます。そのように更新します。
| 1. **<a id="note-visual_cpp_ver-1" href="#note_ref-visual_cpp_ver-1">^</a>** Visual C++ 2017はVisual C++ 2015とバイナリ互換が保たれているためメジャーバージョンアップは行われなかった。その結果、製品バージョンとVisual C++バージョンが一致しなくなった。 | ||
| 1. **<a id="note-visual_cpp_ver-1" href="#note_ref-visual_cpp_ver-1">^</a>** 製品名の列にはVisual C++コンパイラを含む実際に入手する製品の名称を示す。製品のエディション (Express/Standard/Professional/Enterprise/Community 他) は省略する。Visual Studioの製品バージョンは、製品名に現れていないときは `[ ~ ]` 内に記す。製品バージョンは、2017以降、メインメニューの [ヘルプ]-[Microsoft Visual Studio のバージョン情報] から確認できるものを指す。 | ||
| 2. **<a id="note-visual_cpp_ver-2" href="#note_ref-visual_cpp_ver-2">^</a>** VC++バージョンの列にはVisual C++ツールセットのバージョンを記述する。この表では特にVisual C++を入れた時に既定で選択されるツールセットのみについて扱う。 | ||
| 3. **<a id="note-visual_cpp_ver-3" href="#note_ref-visual_cpp_ver-3">^</a>** 2017 Update 5からside-by-sideがサポートされ、一つの製品内で同時に複数のVisual C++ツールセットを選択できるようになった。 |
There was a problem hiding this comment.
新しい順に並べられている表中の注釈で「2017 Update 5から」と以降を表すのは読み辛く感じました。これについては注釈でなく表外に記載した方がよく感じました。ちょうど #540 で表外に記載したい内容もあったりします。
There was a problem hiding this comment.
OK。取り敢えず表の前か後に文章として記すことにします。
There was a problem hiding this comment.
- 54bd0af 表の後に箇条書きにしました。
- a6418a6 表の注釈の形式が cpprefjpにおける注釈・出典の貼り方 - cpprefjp C++日本語リファレンス と微妙に違ったので修正しました。
|
OK。rebase & push -f します。 |
fdf0a5d to
4e0d832
Compare
| 以下に当サイトにおけるバージョン表記と、製品・バージョン等の対応を示す。 | ||
|
|
||
| | 表記 | 製品名 [Visual Studio バージョン] <sup><a id="note_ref-visual_cpp_ver-1" href="#note-visual_cpp_ver-1">[§注1]</a></sup> | VC++ バージョン <sup><a id="note_ref-visual_cpp_ver-2" href="#note-visual_cpp_ver-2">[§注2]</a></sup> | `_MSC_VER` | `_MSC_FULL_VER` | | ||
| | 表記 | 製品名 [Visual Studio バージョン] <sup><a id="note_ref-visual_cpp_ver-1" href="#note-visual_cpp_ver-1">†1</a></sup> | VC++ バージョン <sup><a id="note_ref-visual_cpp_ver-2" href="#note-visual_cpp_ver-2">†2</a></sup> | `_MSC_VER` | `_MSC_FULL_VER` | |
There was a problem hiding this comment.
4e0d832
editors_doc/cite_note_ref.md に従った注釈
と言う割に全く無視しているように思います。「節ごとの注釈・出典記法」「表に対する注釈記法」の項を読み返してください。多分なにか読み飛ばしています。
There was a problem hiding this comment.
すみません。なにかって何ですか。
a. note-t番号-1 にするべきということですか。
b. それともそもそも表注にするべきではないということですか。
There was a problem hiding this comment.
あー。了解しました。visual_cpp_ver って何だろうと思っていたら、これは節の id なんですね。t1 に変えます。
There was a problem hiding this comment.
- 2caa24e fixup しました。もし節の注釈として保持する方が良ければ drop します。
|
注釈記法以外については異論はありません。 |
4e0d832 to
2caa24e
Compare
| |---------------|----------------------------------------|-----------------|------------|-----------------| | ||
| | 2017 Update 7 | Visual Studio 2017 バージョン 15.7 | 14.14 | 1914 | 191426428 | | ||
| | 2017 Update 6 | Visual Studio 2017 バージョン 15.6 | 14.13 | 1913 | 191326128 | | ||
| | 2017 Update 5 | Visual Studio 2017 バージョン 15.5.7<br/>Visual Studio 2017 15.5.6 | 14.12 | 1912 | 191225835 | |
There was a problem hiding this comment.
Visual Studio 2017 バージョン 15.5.6 とされるべきかと。結局マイナーバージョンも記載する方針なのでしょうか? そうであれば15.6.xについては #528 コメントで報告しましたので、記載していただきたいです。
There was a problem hiding this comment.
マイナーバージョンに関しては、未だ細かい合意に至ったのかよく分かりません。
私の気分としては、積極的に収集はしないが、既にあるものや情報提供を受けたものを棄却するほどではないというものでした。記載することにします。
There was a problem hiding this comment.
- 74f9d33 修正しました
- 6000f48 処理系/VC++: バージョン表記の表の構成を見直す #528 で情報提供いただいた分と、_MSC_VERと_MSC_FULL_VERをまとめる - Qiita にあった情報提供と、私からの情報提供の分(以下)を追加しました。この commit は表の構成の変更ではないので、もし後で別に取り入れるべきということであれば drop して後で別に push することも可能です。
Visual Studio 2017 version 15.6.6 情報提供
| Toolset | Toolset Directory | cl.exe Version |
|---|---|---|
| VC++ 2017 v141 ツールセット (x86,x64) | Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.13.26128 | 19.13.26131.1 |
| VC++ 2017 バージョン 15.5 v14.12 ツールセット | Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.12.25827 | 19.12.25833.4 |
| Vc++ 2017 バージョン 15.4 v14.11 ツールセット | Microsoft Visual Studio\2017\Community\VC\Tools\MSVC\14.11.25503 | 19.11.25548.2 |
| デスクトップ用の VC++ 2015.3 v140 ツールセット (x86、x64) | Microsoft Visual Studio 14.0\VC | 19.0.24231.0 |
There was a problem hiding this comment.
マイナーバージョンについては私も積極的に情報を集めないが、集まってしまったものは反映するという消極的な方針でいいと思います。積極的に集めないのは単にメンテコストの問題なので。
| | | Windows Server 2003 DDK | | 1310 | 13102179 | | ||
| | 2002 | Visual Studio .NET (2002) [7.0]<br/>Visual C++ .NET 2002 [7.0] | 7.0 | 1300 | 13009466 | | ||
| | | Windows XP SP1 DDK | | 1300 | 13009176 | | ||
| | | Visual Studio 6.0 SP6 <br/>Visual C++ 6.0 SP5 | 6.0 | 1200 | 12008804 | |
There was a problem hiding this comment.
「表記」カラムという意味では6.0以前についても記載されてもいいように思います。出番は少ないでしょうが。
There was a problem hiding this comment.
調べてみると コンパイラの実装状況 - cpprefjp C++日本語リファレンス の extern template で 6.0 が参照されているのですね。
表記を定めるとしたらどのような形が良いでしょうか。上記ページに倣って 6.0 のような形にするか、それとも #483 に従って 1997 等の形に統一するか。
There was a problem hiding this comment.
- ae2ee74 暫定的に 6.0 などの形式で埋めてみました (たぶん、その方が分かりやすいので)。西暦に変更の要望があれば変更します
|
|
||
| 1. **<a id="note-t1-1" href="#note_ref-t1-1">^</a>** 製品名の列にはVisual C++コンパイラを含む実際に入手する製品の名称を示す。製品のエディション (Express/Standard/Professional/Enterprise/Community 他) は省略する。Visual Studioの製品バージョンは、製品名に現れていないときは `[ ~ ]` 内に記す。製品バージョンは、2017以降、メインメニューの [ヘルプ]-[Microsoft Visual Studio のバージョン情報] から確認できるものを指す。 | ||
| 2. **<a id="note-t1-2" href="#note_ref-t1-2">^</a>** VC++バージョンの列にはVisual C++ツールセットのバージョンを記述する。この表では特にVisual C++を入れた時に既定で選択されるツールセットのみについて扱う。 | ||
| 3. **<a id="note-t1-3" href="#note_ref-t1-3">^</a>** Visual C++ 2017はVisual C++ 2015とバイナリ互換が保たれているためメジャーバージョンアップは行われなかった。その結果、製品バージョンとVisual C++バージョンが一致しなくなった。 |
There was a problem hiding this comment.
「Visual C++ 2017」「Visual C++ 2015」という表現はしない方針では? 2017、2015でしょうか。
1adc02b to
6000f48
Compare
|
#528 の @faithandbrave さんのコメント
から私は15.xまでしか記載されない方針と理解していました。ですが、現時点の記載ですと と15.x.yまで記載され
というイメージでいました。私個人としては後者は「労力に見合わない」に賛成します。 |
|
マイナーバージョンの細かい取り扱いについては、やはり全然詰めていなかったので改めて確認したほうが良さそうです。確認・議論させていただいてから commit します。
取り敢えずこんな感じです。意見や他の良い案や見落としの指摘などなど、お願いいたします。 |
|
Webスクレイピングしやすい形式というコメントを忘れていました。その場合、「表記」カラムは空にすべきではないですし、
掘り返しました。C++17 Features And STL Fixes In VS 2017 15.3に
と言及されていました。バグ修正等で |
分けたほうがスクレイピングを考えるといいと思います。
上記のとおりなので
かなと
すでに表明の通り、
|
機能追加がなかったという情報ありがとうございます! と思って行を追加しようと思ったのですが、機能追加がなかったという情報だけだと、結局 "予想" しかできないので行に書ける内容は情報が全くなかったときとさして変わらないですね…。 と思って検索してみた所、以下のページに 2017 Update 1 と 2017 Update 2 の情報が載っているのを見つけました。 Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.) 特に具体的な意見が他に来なければ @yumetodo さんに従って、15.x.y: それぞれ独立した行に / 表記欄: (b) / 15.x.y: (b) になります。 |
f73eee7 to
d2050b3
Compare
|
7e88c31 to
4a8943a
Compare
| | 2002 | Visual Studio .NET (2002) [7.0]<br/>Visual C++ .NET 2002 [7.0] | 7.0 | 1300 | 13009466 | | ||
| | | Windows XP SP1 DDK | | 1300 | 13009176 | | ||
| | 6.0 | Visual Studio 6.0 SP6 | 6.0 | 1200 | 12008804 | | ||
| | 6.0 | Visual Studio 6.0 SP5 | 6.0 | 1200 | 12008804 | |
There was a problem hiding this comment.
9fe4b48 で Visual C++ 6.0 SP6、 Visual C++ 6.0 SP5 が消されていることを見逃していました。逆にVisual Studio 6.0 SP5って必要でしょうか? SP5が2001/02/26、SP6が2004/03/29と相当昔のことなので個人的には消してしまって Visual Studio 6.0 SP6<br/>Visual C++ 6.0 SP6 だけでいいのではと思います。
残すのであれば、表記もそれぞれ 6.0 SP6、6.0 SP5 とすべきか検討の余地がありますし、6.0 SP6 には「コンパイラ、ヘッダー、ライブラリ等は変更されなかった」注が付けられるべきかもしれません。
There was a problem hiding this comment.
ミスが多くてすみません…。
6.0 SP6 には「コンパイラ、ヘッダー、ライブラリ等は変更されなかった」注が付けられるべきかもしれません。
これは先の変更で付けるかどうか迷ったのですが、本当に「コンパイラ・ヘッダー・ライブラリ等に変更がなかった」のかについて検証できないので、取り敢えず付けないことにしました。一応コンパイラに関しては、以前 SP5 と SP6 をそれぞれダウンロードして中に入っているコンパイラを確認しました。
There was a problem hiding this comment.
直しました b5ebba6
Visual Studio 6.0 SP5/SP6 について改めて調べてみたのですが、少なくともヘッダ・ライブラリには変更がありますね。
更にコンパイラもバイナリレベルだと違うみたいです…。改めて _MSC_FULL_VER を見ると、やはりこの値は変わっていないようですが。
# VS6SP5
$ ls -l *
-rwx------+ 1 murase なし 682545 2000-05-16 17:46:36 c1.dll
-rwx------+ 1 murase なし 1206323 2000-08-21 21:36:44 c1xx.dll
-rwx------+ 1 murase なし 51200 2000-03-14 04:54:56 cl.exe
-rwx------+ 1 murase なし 15632 2000-07-15 14:21:50 cvtres.exe
-rwx------+ 1 murase なし 462901 1999-06-02 16:09:44 link.exe
$ sha256sum *
50ad6bd30e7b178e94f1413a7f7ac7be1f84e46ac97575f9e6d06752d8991c72 *c1.dll
fe065201572d39a46c8a74e655669f82a923f5291e58d839deacb8ac3ee94014 *c1xx.dll
f5a21bb5b96afbd97301d0bf49e38b24a75746ada8192caea775206685652d9b *cl.exe
83b602ed8e69e979fc9557f482a4a4c6c9a97b4ad67b879aedeacd2b09e5b20b *cvtres.exe
48817893f8b2f490414e1f81a3bbb64468e04598c6ed04add792c69e2ace1e2b *link.exe
fcbf58e1f92f0dbbb9b0442c71bc5f1def3b46a920e148d3dc02740b8cf5e6da *nmake.exe
$ strings cl.exe | grep _MSC_FULL_VER
-D_MSC_FULL_VER=12008804
# VS6SP6
$ ls -l *
-rwx------+ 1 murase なし 696369 2004-02-27 19:45:04 c1.dll
-rwx------+ 1 murase なし 1220659 2004-02-27 19:45:06 c1xx.dll
-rwx------+ 1 murase なし 51200 2000-03-14 13:20:58 cl.exe
-rwx------+ 1 murase なし 15632 2000-07-15 14:21:50 cvtres.exe
-rwx------+ 1 murase なし 462901 2004-02-27 19:45:08 link.exe
-rwx------+ 1 murase なし 77882 2004-02-27 19:45:08 nmake.exe
$ sha256sum *
0792033fc3d2fec262ff95478c6a9e70a06e836ed55f0a9710200fa06c204754 *c1.dll
f014b3bee650224adf6cb44e51f0eeac5abbf5da666fa299d5250b2f3d1937c6 *c1xx.dll
1bf99f206271ecdbd13da2829192ea2c02e2a44c740b8d72935d5d9cb753b156 *cl.exe
83b602ed8e69e979fc9557f482a4a4c6c9a97b4ad67b879aedeacd2b09e5b20b *cvtres.exe
9672e578fdfaa43bdb8e9c16071682988665cb90bba2904bf02f6a5576d8ffbc *link.exe
$ strings cl.exe | grep _MSC_FULL_VER
-D_MSC_FULL_VER=12008804
There was a problem hiding this comment.
バイナリレベルで違うというのはbinary diffした時にめちゃくちゃ書き換わっているような状況ですか?
There was a problem hiding this comment.
cl.exeのみ更新されなかったために_MSC_FULL_VERも更新されなかったものの、toolsetとしては差分があるというのはそれはそれで厄介な、そしてとても重要な情報ですね。
そんな状況でなんでVisual C++ 6.0 SP5が最終版であるかのように記載されるようになったのか気になるところですが。
とは言え、今現在はVisual Stuidio 6.0 Service Pack 5は入手できませんので、6.0 SP5の情報は特に必要ないのでは、と思います。
There was a problem hiding this comment.
正直 binary の差分をどう可視化したら良いのか普段やらないのでよく分かりませんが…無理矢理テキストファイル (1バイト → 1行) に変換して比較すると以下のような感じです。cl.exe は殆ど変更はないですが、dll は結構変化があるようです。少なくとも埋め込まれたタイムスタンプだとかだけが異なるということはなさそうです。リソースが差し替わっているだけという可能性もあるかもしれませんが。
$ g init
$ for f in ../sp5bin/*.*; do od -v -A n -t x1 -w1 $f > ${f##*/}; done
$ g add *.*
$ g commit -m 'SP5 binaries'
$ for f in ../sp6bin/*.*; do od -v -A n -t x1 -w1 $f > ${f##*/}; done
$ g add -u
$ g commit -m 'SP6 binaries'
$ g diff --stat HEAD~
c1.dll | 849902 ++++++++++++++++++++++++++++++++++++++++++++++++-----------------------------------------------
c1xx.dll | 1674642 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++---------------------------------------------------------------------------------------------
cl.exe | 11546 +-
link.exe | 34370 ++--
4 files changed, 1299310 insertions(+), 1271150 deletions(-)今 binary の diff について検索していた所 Chromeがバイナリ差分で新アルゴリズム実装 - @IT という記事で、実行形式の diff はソースコードがほんの少ししか違わなくても、関数・静的変数のアドレスが全部書き変わるので単純にやると駄目なそうで。
SP5 は、元々は _MSC_FULL_VERマクロ - yohhoyの日記 からの情報です (他にもソースはあったかもしれませんが覚えていません)。SP5 が載っていたのは、別にそれが最新版であるから載っていたという訳ではなくて、単にその情報しかなかったからです。最新版の情報しか載せないなどの制限はかけていません。逆に、そういう制限をかけていないからこそ明示的に SP5 であると書かれていたのではないかと。
公式で入手できないからという理由で削除するのかどうかは微妙なところです。もっと古いものや Windows DDK や――或いは 15.x.y にも今や確認できないものがある訳ですが――それらを載せていることを考えれば、情報として残しておいても良いように思います。あと、他の表で SP5 のみ または SP6 のみ載っていて、両方が同一の _MSC_FULL_VER を持っているということが余り意識されていない状況で、この表でそのことを残しておく意義はあるように感じます。
There was a problem hiding this comment.
リソースが差し替わっているだけという可能性
FavBinEdit みたいな適当な binary editorで比較すればリソースだけなのかわかるかなと思ったまでです。実行コードはその記事の通り逆アセンブルしないと比較できないので多分どっかのLicenseに違反する行為でしょう。
DLLの差分が大きいですね・・・。
公式で入手できないからという理由で削除するのかどうかは微妙なところです。もっと古いものや Windows DDK や――或いは 15.x.y にも今や確認できないものがある訳ですが――それらを載せていることを考えれば、情報として残しておいても良いように思います。
私も残しておいてもいいかなと思います。
| | 2017 Update 4 | Visual Studio 2017 バージョン 15.4.5 | 14.11 | 1911 | 191125547 | | ||
| | 2017 Update 4 | Visual Studio 2017 バージョン 15.4.4 | 14.11 | 1911 | 191125542 | | ||
| | 2017 Update 3 | Visual Studio 2017 バージョン 15.3.3 | 14.11 | 1911 | 191125507 | | ||
| | 2017 Update 2 <sup><a id="note_ref-t1-4-a" href="#note-t1-4">†4</a></sup> | Visual Studio 2017 バージョン 15.2 | 14.10 | 1910 | 191025017 | |
There was a problem hiding this comment.
†4が†3を追い越してしまっています。順番入れ替えを。新しい順に並ぶ表の宿命ですね。
There was a problem hiding this comment.
OK.
この注釈記法、書き換え辛いですね…。
There was a problem hiding this comment.
この注釈記法、書き換え辛いですね…。
自動付番がないとそうなってしまいますね・・・・
| | 2003 | Visual Studio .NET 2003 [7.1]<br/>Visual C++ .NET 2003 [7.1] | 7.1 | 1310 | 13103077 | | ||
| | | Visual Studio Toolkit 2003 [7.1] | 7.1 | 1310 | 13103052 | | ||
| | | Windows Server 2003 DDK | | 1310 | 13102179 | | ||
| | 2002 | Visual Studio .NET (2002) [7.0]<br/>Visual C++ .NET 2002 [7.0] | 7.0 | 1300 | 13009466 | |
There was a problem hiding this comment.
細かいですがVisual Studio .NET (2002)とVisual C++ .NET 2002と名称が一致していないことに気づいてしまいました。リリース当時はVisual Studio .NETで今のWindows Server 2003も当時はWindows .NET Serverと呼ばれていました。
その後Visual Studio .NET 2003との対比でVisual Studio .NET (2002)、Visual Studio .NET 2002等、後付けで年号が添えられるようになったとの記憶があります。Visual Studio .NET 2002 [7.0]<br/>Visual C++ .NET 2002 [7.0]でいいのではと。
There was a problem hiding this comment.
すみません。これもミスです。(2002) の方にしようかと思っていましたが、そちらに合わせます。
Windows Server 2003 もそうなのですね。Wikipedia に色々と名前の変遷が載っていました。発売直前に Windows Server 2003 に突然なったのですね…。
|
影響範囲が広いので、古くなる前にマージしちゃいますね。 |
Resolve #528
取り敢えず作りました。
Preview site/implementation.md at update-vc-version-table · cpprefjp/site