Skip to content

VC++ バージョン表記の表の構成#542

Merged
faithandbrave merged 18 commits into
masterfrom
update-vc-version-table
May 22, 2018
Merged

VC++ バージョン表記の表の構成#542
faithandbrave merged 18 commits into
masterfrom
update-vc-version-table

Conversation

@akinomyoga

@akinomyoga akinomyoga commented May 10, 2018

Copy link
Copy Markdown
Member

Resolve #528

取り敢えず作りました。

Preview site/implementation.md at update-vc-version-table · cpprefjp/site

Comment thread article/platform/locales.md Outdated


## Windows 8 / Visual C++ 2012 Update 1 無印
## Windows 8 / 2012 Update 1 無印

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「Windows 8 / 2012」と並んでしまうとWindows Server 2012と誤解してVisual C++のバージョンを指しているとは読み辛い気がします。それと元からあったものですが「Visual C++ 2012 Update 1 無印」ってなんでしょうね?

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます。Visual C++ を戻しますね。

無印はよく分かりません。最初から無印と書いてあったようですね https://github.com/cpprefjp/site/blame/3308a73e97dbaf8c2d3b5ab809af8b4e11a4404d/article/msvc-locales.md#L20

@akinomyoga akinomyoga May 10, 2018

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

無印で調べてみますと、どうやら 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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

別で議論すべきかもしれませんが「2012, 2013」となっていると2015以降はどうなのかが気になってしまいます。バージョンの記載方針が欲しい気がします。下の方には「2010, 2012, 2013, 2015, 2017」と並んでいるのも見かけますし…。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

情報が最新でないのか・後のバージョンでは対応されていないのかの区別がしたいということですね。恐らく、これはサイト全体にわたる問題なので別で議論した方が良さそうです。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

スタイルページにあるように、そこに記載しているのは、作業者が動作確認できたバージョンです。作業者が全てのバージョンのコンパイラを用意することは現実的ではないため、「サポートが開始されたバージョン」とはしていません。
https://cpprefjp.github.io/working_style.html

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Comment thread implementation.md Outdated

## <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++を採用する。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

製品が統合されたのはVisual Studio 97からです。Visual Studio登場以降もVisual C++ .net Standard Edition 2003までは単体販売が継続されています。単体販売終了以降もVisual C++ 2010 Expressまで無償公開されています。Visual C++単体が完全になくなったのはVisual Studio 2012からです。これらをひっくるめて「Visual Studio .NET 2003 以降」とするのは事実と異なります。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ありがとうございます。そのように更新します。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

取り敢えずミニマルに修正してみました ca9a28e
Visual C++ Standard (2003)/Express (2005-2010) 情報の追記 d38a481

Comment thread implementation.md Outdated
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++ツールセットを選択できるようになった。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

新しい順に並べられている表中の注釈で「2017 Update 5から」と以降を表すのは読み辛く感じました。これについては注釈でなく表外に記載した方がよく感じました。ちょうど #540 で表外に記載したい内容もあったりします。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK。取り敢えず表の前か後に文章として記すことにします。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@yumetodo

Copy link
Copy Markdown
Member

fdf0a5d はこの件と関係がないように思うのでmasterにcherry-pickしました( e7156f9 )。

@akinomyoga

akinomyoga commented May 10, 2018

Copy link
Copy Markdown
Member Author

OK。rebase & push -f します。

@akinomyoga akinomyoga force-pushed the update-vc-version-table branch from fdf0a5d to 4e0d832 Compare May 10, 2018 12:43

@yumetodo yumetodo left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

注釈記法について

Comment thread implementation.md Outdated
以下に当サイトにおけるバージョン表記と、製品・バージョン等の対応を示す。

| 表記 | 製品名 [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` |

@yumetodo yumetodo May 10, 2018

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akinomyoga

4e0d832
editors_doc/cite_note_ref.md に従った注釈

と言う割に全く無視しているように思います。「節ごとの注釈・出典記法」「表に対する注釈記法」の項を読み返してください。多分なにか読み飛ばしています。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません。なにかって何ですか。

a. note-t番号-1 にするべきということですか。
b. それともそもそも表注にするべきではないということですか。

@akinomyoga akinomyoga May 10, 2018

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

あー。了解しました。visual_cpp_ver って何だろうと思っていたら、これは節の id なんですね。t1 に変えます。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • 2caa24e fixup しました。もし節の注釈として保持する方が良ければ drop します。

@yumetodo

Copy link
Copy Markdown
Member

注釈記法以外については異論はありません。

@akinomyoga akinomyoga force-pushed the update-vc-version-table branch from 4e0d832 to 2caa24e Compare May 10, 2018 12:56

@sayurin sayurin left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

レビュー機能を使ってみました。

Comment thread implementation.md Outdated
|---------------|----------------------------------------|-----------------|------------|-----------------|
| 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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Visual Studio 2017 バージョン 15.5.6 とされるべきかと。結局マイナーバージョンも記載する方針なのでしょうか? そうであれば15.6.xについては #528 コメントで報告しましたので、記載していただきたいです。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

マイナーバージョンに関しては、未だ細かい合意に至ったのかよく分かりません。

私の気分としては、積極的に収集はしないが、既にあるものや情報提供を受けたものを棄却するほどではないというものでした。記載することにします。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

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

@yumetodo yumetodo May 10, 2018

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

マイナーバージョンについては私も積極的に情報を集めないが、集まってしまったものは反映するという消極的な方針でいいと思います。積極的に集めないのは単にメンテコストの問題なので。

Comment thread implementation.md Outdated
| | 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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「表記」カラムという意味では6.0以前についても記載されてもいいように思います。出番は少ないでしょうが。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

調べてみると コンパイラの実装状況 - cpprefjp C++日本語リファレンス の extern template で 6.0 が参照されているのですね。

表記を定めるとしたらどのような形が良いでしょうか。上記ページに倣って 6.0 のような形にするか、それとも #483 に従って 1997 等の形に統一するか。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

  • ae2ee74 暫定的に 6.0 などの形式で埋めてみました (たぶん、その方が分かりやすいので)。西暦に変更の要望があれば変更します

Comment thread implementation.md Outdated

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++バージョンが一致しなくなった。

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

「Visual C++ 2017」「Visual C++ 2015」という表現はしない方針では? 20172015でしょうか。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません。これは f1c77e5 の変更漏れです。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@akinomyoga akinomyoga force-pushed the update-vc-version-table branch from 1adc02b to 6000f48 Compare May 10, 2018 15:26
@sayurin

sayurin commented May 10, 2018

Copy link
Copy Markdown
Contributor

#528@faithandbrave さんのコメント

メンテナンスコストを考えて、15.6(.0)で止めておきましょう。

_MSC_FULL_VERは以前書いたように、本サイトのその表の目的からは外れるのでoptionalです。
労力に見合わない可能性はあります。2015のみ表の外に書いておくのでもよいかと思います。

から私は15.xまでしか記載されない方針と理解していました。ですが、現時点の記載ですと

| 2017 Update 5 | Visual Studio 2017 バージョン 15.5.6-15.5.7 | 14.12      | 1912       | 191225835       |
|               | Visual Studio 2017 バージョン 15.5.3-15.5.4 | 14.12      | 1912       | 191225834       |

と15.x.yまで記載され_MSC_FULL_VERがoptionalどころかunique keyになっていて、primary keyたる表記カラムに空欄が生じたり、製品名カラムでは複数バージョンがグループ化されています。認識に齟齬がないでしょうか?

  • 15.xまでしか記載しない方針であれば、_MSC_FULL_VERは15.x.0の値だけが書かれるか既知の値がグループ化される
  • 15.x.yまで記載する方針であれば、今まで通り15.x.yごとに行を分け、製品名欄に複数バージョンを含めず、_MSC_FULL_VERの不明なものは空欄(optionalなので)になる

というイメージでいました。私個人としては後者は「労力に見合わない」に賛成します。

@akinomyoga

Copy link
Copy Markdown
Member Author

マイナーバージョンの細かい取り扱いについては、やはり全然詰めていなかったので改めて確認したほうが良さそうです。確認・議論させていただいてから commit します。

  • _MSC_FULL_VER が同じものまとめたのは特に unique key として用いるため (など) ではなく、単に殆ど同じ (Visual Studio minor version y のみが異なる) 行を幾つも並べると冗長で全体としてのバージョンの関係を読み取りにくいと感じたからでした。例えば、単体の Visual Studio に対して情報を読み取るだけの目的などを考えて、各 Visual Studio y 毎に行を分けた方が良いという意見があれば、そうすることに吝かではありません。

  • 表記欄を全て埋めるかどうかに関しては 処理系/VC++: バージョン表記の表の構成を見直す #528 (comment) で初めに案を出したときに迷ったところです 処理系/VC++: バージョン表記の表の構成を見直す #528 (comment)

    • (a) 一つの案は現状の全ての行に unique な表記を定めるというもの。しかし、実際のサイト内から参照することはないと思われるので全てに割り当てるのは、割り当て規則を決める必要がある・サイト内の表記から表の該当行を探しにくい、などの理由から非現実的かなというところです。
    • (b) もう一つの案は、重複しても良いので全て埋めるというものです。例えば 2017 Update 6 の下の minor version が複数行あれば、その全ての行に同じ 2017 Update 6 を入れる。この場合、一つの表記に対する製品バージョンが複数あるのはユーザにとって混乱の元かもしれませんが、「同じ表記のものはコンパイラの機能としては (殆ど) 違いがない」の旨を表外に注記すると良いかもしれません。
    • (c) 或いは、実際のサイト内から直接参照されない行は (minor version も含めて) 全て削除する。この場合 Windows DDK や古い C++ の行も削除するのかどうか Visual C++ 製品名を修正、及びRC除去 #525 (comment) Visual C++ 製品名を修正、及びRC除去 #525 (comment) Visual C++ 製品名を修正、及びRC除去 #525 (comment) 、残すとしたら全てに表記を割り当てるのか、例外として表記が空欄であることを認めるか。ということの確認をしたく思います。
    • (d) 現在の案は、サイト内から実際に参照されるものについてのみ表記を定めて記入し、それ以外は空欄にしておくという考えに基づくものです。ただし、複数の minor version がある場合にサイト内の記述がどの version を指すものとするのかを定める必要があります。今は、何となく見やすいという別の理由で、該当する minor version 群の一番上の行 (最新 minor version) の行になってしまっています。この方法だと、厳密な論理的整合性と見やすさを両立するのは難しそうです。

    本当は Markdown でセルの結合が使えると、考えるのがもっと楽なのでしょうが… (しかしスクレイピング Visual C++ 製品名を修正、及びRC除去 #525 (comment) には向かない?)。

  • 15.x.y に関してもやはり複数のレベルの取扱があって、

    メンテナンスコストの問題と考えれば (b) も (c) もさして変わりません。その上で既存の情報を削除するかどうか・どこまで削除するのかということになりましょう。私自身はそこまで厳密な整合性に拘らなくても、見やすければ・使いやすければ良いという立場から、また既にある情報や来る情報提供に対してそこまで酷にならなくてもという気持ちから、現状では (b) を何となく支持していました。ただ、それほど強い意見ではないので他の人が (c) で合意するならば、そのように書き換えます。

取り敢えずこんな感じです。意見や他の良い案や見落としの指摘などなど、お願いいたします。

@sayurin

sayurin commented May 11, 2018

Copy link
Copy Markdown
Contributor

Webスクレイピングしやすい形式というコメントを忘れていました。その場合、「表記」カラムは空にすべきではないですし、_MSC_FULL_VERが同一だからと言って複数バージョンをグループ化すべきでもないと思います。

既に 15.1 や 15.2 が抜け落ちてしまっている問題

掘り返しました。C++17 Features And STL Fixes In VS 2017 15.3

After VS 2017 RTM, the 15.1 and 15.2 updates improved the IDE. The 15.3 update improves both the IDE and the toolset.

と言及されていました。バグ修正等で_MSC_FULL_VERの更新はあるかもしれませんが、機能追加はなかったとみていいかと。

@yumetodo

Copy link
Copy Markdown
Member

各 Visual Studio y 毎に行を分けた方が良いという意見があれば、そうすることに吝かではありません。

分けたほうがスクレイピングを考えるといいと思います。


表記欄を全て埋めるかどうか

上記のとおりなので

(b) もう一つの案は、重複しても良いので全て埋める

かなと


15.x.y

すでに表明の通り、

(b) 積極的に情報収集はしない。既にあるものは保持する・外部からの情報提供があれば追加で記載しても良い

@akinomyoga

Copy link
Copy Markdown
Member Author

既に 15.1 や 15.2 が抜け落ちてしまっている問題

掘り返しました。C++17 Features And STL Fixes In VS 2017 15.3に

機能追加がなかったという情報ありがとうございます! と思って行を追加しようと思ったのですが、機能追加がなかったという情報だけだと、結局 "予想" しかできないので行に書ける内容は情報が全くなかったときとさして変わらないですね…。

と思って検索してみた所、以下のページに 2017 Update 1 と 2017 Update 2 の情報が載っているのを見つけました。_MSC_FULL_VER は 2017 の時と同じのようです。以下のページに従うことにします (信頼性は不明ですが、それを言い出すとこれまでの情報提供も微妙なので気にしないことにします。また、このページでは他のバージョンに関しては一致しています)。

Guide to predefined macros in C++ compilers (gcc, clang, msvc etc.)


特に具体的な意見が他に来なければ @yumetodo さんに従って、15.x.y: それぞれ独立した行に / 表記欄: (b) / 15.x.y: (b) になります。

@akinomyoga akinomyoga force-pushed the update-vc-version-table branch from f73eee7 to d2050b3 Compare May 12, 2018 04:48
@akinomyoga

Copy link
Copy Markdown
Member Author
  • 9fe4b48 行は独立させました。表記も割り当てました。ただし、Windows DDK や Microsoft C/C++ 7.0, Microsoft C 6.0 に対する表記の割り当ては、少し苦しい感じの表記になってしまいました。何か良い案があればそれに従います。
  • d2050b3 15.1, 15.2 の情報を追加しました

@sayurin

sayurin commented May 12, 2018

Copy link
Copy Markdown
Contributor

Windows DDK や Microsoft C/C++ 7.0, Microsoft C 6.0 に対する表記の割り当ては、少し苦しい感じの表記になってしまいました。何か良い案があればそれに従います。

2017 Update 6等が「同上」の意味で空欄になるのは適切ではないと思いますが、ここに挙げられたものについては、当サイトで取り扱わない参考情報でしかないので、「表記なし」の意味で空欄でも問題ないと思います。

†3ですが、Visual C++バージョンが上がらなかったことについて言及しているので、「VC++ バージョン」列の「14.10」に対する注とした方がよいように思いました。今までは最左列(≒主キー)に注が付けられていましたが、製品名は従属列と変更されたのでそのままでは引き継げないかなと思います。

†4も同様の理由で、今度は「表記」列が適切に感じます。加えて「2017 Update 1」「2017 Update 2」にも適用できる内容かと思います。

@akinomyoga akinomyoga force-pushed the update-vc-version-table branch from 7e88c31 to 4a8943a Compare May 12, 2018 14:45
@akinomyoga

Copy link
Copy Markdown
Member Author

ありがとうございます。更新しました。

  • 38d2690 注釈のアンカー位置の移動と、15.1, 15.2 への適用と、Refs. 追加
  • 4a8943a 使わない "表記" の削除

Comment thread implementation.md Outdated
| 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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

9fe4b48Visual C++ 6.0 SP6Visual 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 SP66.0 SP5 とすべきか検討の余地がありますし、6.0 SP6 には「コンパイラ、ヘッダー、ライブラリ等は変更されなかった」注が付けられるべきかもしれません。

@akinomyoga akinomyoga May 13, 2018

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

ミスが多くてすみません…。

6.0 SP6 には「コンパイラ、ヘッダー、ライブラリ等は変更されなかった」注が付けられるべきかもしれません。

これは先の変更で付けるかどうか迷ったのですが、本当に「コンパイラ・ヘッダー・ライブラリ等に変更がなかった」のかについて検証できないので、取り敢えず付けないことにしました。一応コンパイラに関しては、以前 SP5 と SP6 をそれぞれダウンロードして中に入っているコンパイラを確認しました。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

直しました 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

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

バイナリレベルで違うというのはbinary diffした時にめちゃくちゃ書き換わっているような状況ですか?

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

cl.exeのみ更新されなかったために_MSC_FULL_VERも更新されなかったものの、toolsetとしては差分があるというのはそれはそれで厄介な、そしてとても重要な情報ですね。
そんな状況でなんでVisual C++ 6.0 SP5が最終版であるかのように記載されるようになったのか気になるところですが。
とは言え、今現在はVisual Stuidio 6.0 Service Pack 5は入手できませんので、6.0 SP5の情報は特に必要ないのでは、と思います。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

正直 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 を持っているということが余り意識されていない状況で、この表でそのことを残しておく意義はあるように感じます。

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

リソースが差し替わっているだけという可能性

FavBinEdit みたいな適当な binary editorで比較すればリソースだけなのかわかるかなと思ったまでです。実行コードはその記事の通り逆アセンブルしないと比較できないので多分どっかのLicenseに違反する行為でしょう。

DLLの差分が大きいですね・・・。


公式で入手できないからという理由で削除するのかどうかは微妙なところです。もっと古いものや Windows DDK や――或いは 15.x.y にも今や確認できないものがある訳ですが――それらを載せていることを考えれば、情報として残しておいても良いように思います。

私も残しておいてもいいかなと思います。

Comment thread implementation.md Outdated
| 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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

†4†3を追い越してしまっています。順番入れ替えを。新しい順に並ぶ表の宿命ですね。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK.

この注釈記法、書き換え辛いですね…。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

この注釈記法、書き換え辛いですね…。

自動付番がないとそうなってしまいますね・・・・

Comment thread implementation.md Outdated
| 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 |

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

細かいですが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]でいいのではと。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

すみません。これもミスです。(2002) の方にしようかと思っていましたが、そちらに合わせます。

Windows Server 2003 もそうなのですね。Wikipedia に色々と名前の変遷が載っていました。発売直前に Windows Server 2003 に突然なったのですね…。

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@faithandbrave

Copy link
Copy Markdown
Member

影響範囲が広いので、古くなる前にマージしちゃいますね。
方針は決まったので、あとは追々細かいところを修正していただければ。

@faithandbrave faithandbrave merged commit f23863e into master May 22, 2018
@akinomyoga akinomyoga deleted the update-vc-version-table branch May 22, 2018 07:21
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants