読者です 読者をやめる 読者になる 読者になる

Visual C++ の弱いところと強いところ (Re: ロケール問題)

VC++9.0では、VC++8.0のロケール問題が修正されているようだ

Visual C++ 2005 RTM 直後に見たこの件と同じ問題でしょうかね?

当時の感想は今でも憶えていますが,「やなバグを残したまま RTM を迎えちゃったなー」という思いと,ベータ期間が 1 年近くあったにも関わらず「誰もチェックしていない部分はやっぱり多い」という思いが半々ぐらいでした.
そもそもの問題は,ロケール周りの実装を Visual Studio 2005 で弄ったにも関わらず,変更が正しいことをちゃんと検証できていない Microsoft にあります.しかし,Visual C++ RTM 直後に「手元のコードをコンパイルしてみた」→「バグ発見」というパターンが多いのを見ると,人々の手元にある大量の C++ 資産を活用して有効な動作テストができればもうちょいましになるのになぁというのも率直な感想.ベータ期間を素通ししてしまった結果,みすみす2年とか3年先の次期製品まで修正見送りというのはもったいないよなぁと.
もちろんユーザにとってベータ製品のインストールは非常に高コストなので,Microsoft だけでなく利用者にもメリットが生まれるよう,Microsoft はある程度投資すべきでしょう.今みたいに「無償ダウンロードだから後よろしく」で試してくれる物好きは限られています*1.FOSS コミュニティにビルドサーバを提供してみたり,ショートコーディングのコンテストを開いたり,まあ色々手はあるでしょうということで.なんか巨大な IDE を抜いて,コンパイラ/リンカだけベータを出せばそれで十分という気もしてきましたが.
以上がまあ Visual C++ の弱そうな部分.C#Visual Basic に比べて新しもの好きが少ない分,相対的に RTM が枯れてないという印象がありますねと.
一方次は Visual C++ の強そうな部分.
世間ではあまり意識されていませんが,Visual C++ には「最新 Windows のビルドに使われている」という大きな特徴があります*2.Windows チームは Windows チームで膨大なテストを保持していて,そのテストを失敗させるようなコンパイラバグは最優先で修正されているとのことです.というわけで,Visual C++コンパイラは,「当時の Windows を出荷状態に持って行ける程度には枯れている」と考えて良いでしょう.
となると Windows Vista SP1 のコンパイラが気になるところですが,誰か調べてみた人はいらっしゃいますかね?
(追記) やはり Windows Vista SP1 は Visual C++ 2008 相当のコンパイラでビルドされる模様.

*1:まあ Visual Studio のベータ版は Virtual PC イメージが提供されるようになって飛躍的に評価が楽になりましたが.あれはGood Job.

*2:例えば Windows Vista は Address Space Layout Randomization (ASLR) を使用していますが,この機能が Visual C++ (のリンカ) にお目見えしたのは,Vista リリース後の Visual C++ 2005 SP1 のことでした.