C++Builder 2010情報解禁

ちょっと出遅れたけど、C++Builderの新バージョン、"C++Builder 2010"についての情報が解禁になったので、個人的な感想とかを晒してみる。
詳しい情報は、本家とかDelphi系ブロガーの皆様に任せるとして(ぉぃ)、いち、C++Builderユーザー視点から。
現時点で、まだRTMが済んでいないのでもしかしたら変更があるかも。

全般的な感想としては、ぶっちゃけた話マイナーチェンジ。だけど、IDEについては全俺が泣いた新機能てんこ盛り。

エディタの検索機能の強化
少し前のデベロッパーキャンプで指摘があった、Shift+F3で逆方向検索が出来るようになりました!!
FirefoxっぽいUIなので今までと比べものにならないくらい使い勝手がアップ。もちろん、正規表現とかマッチ部分のハイライトとかも。

C++クラスエクスプローラーの「復活」
変数とかクラスとかの定義とか、参照情報とかが検索出来るようになったので、いちいち、grepとかを起動して検索する必要が無くなった。
やっぱり、この機能の復活は嬉しい。

IDEインサイト
機能名から、メニューとかコマンドを検索するというちょっと面白い機能。
コンパイルオプションにジャンプしたりとか、コンポーネント名からコンポーネントを検索してそのまま貼ったりと、いろいろ出来る。
IMEを起動しなければならない場合があったりするけど、これは結構使う。てか、FT中に結構使っていたり。

データビジュアライザー
デバッガでstd::stringとかstd::wstringは「文字列」として表示される。これ、本当に欲しかった・・・。
この機能はプラグインなので、OpenToolAPIで拡張可能。ほかにもTDateTimeとかTStrings*1が実装されている。

あとは、[ファイル|開き直す]で表示される項目の管理とか、コードフォーマッターでソースコードが整形出来たりとか、昔のIDEのように、コンポーネントパレットをツールバーに表示できたりとか。
この辺も欲しかった機能なので非常に助かる。

C/C++コンパイラとRTLについてもやっぱり、マイナーチェンジ。Boostのバージョンは、1.39.0に。
バグフィックスが主だけど、細かい部分で気が利いた修正が追加。個人的に気に入ったのは、以下の3点。

メモリマネージャーの変更
メモリマネージャーがFASTMMになったおかげでパフォーマンスアップ。
具体的な数字を挙げるのはまずそうな気がするので、こんな感じの単純なコードをCB2009と2010に喰わせたところ、明らかに動作速度がアップ。

int _tmain(int argc, _TCHAR* argv[]) 
{

  const int count = 50000;
  char* buf[count];
  double rr = 0.0;

  const int rc = 100;
  for (int t = 0; t < rc; ++t) {
    DWORD s = GetTickCount();
    for (int i = 0; i < count; ++i) {
      char* pp = new char[1024];
      memset(pp, 0, 1024);
      buf[i] = pp;
    }
    for (int i = 0; i < count; ++i) {
      delete[]buf[i];
    }
    DWORD e = GetTickCount();
    double d = (e - s) / 1000.0;
    printf("sec = %.8f\n", d);
    //
    rr += d;
  }

  printf("avr = %.8f\n", rr / rc);

  return 0;
}
この辺は、10-90ルールの"10"当たる部分で、STLやBoostなどのパフォーマンスにも影響。これは意外と効いてくるかも。

「セキュア」な標準入出力
昔からバッファオーバーフローの原因となっていた、scanfとかstrcpyとかの「セキュア」な実装が追加。 VisualC++ 2005から導入された、scanf_s、strcpy_s、fopen_sがC++Builderでも実装されたので、こいつを使えば古いCのソースもセキュアになる。もちろん、ソースコードの修正は必要。

#pragma onceの追加
ヘッダファイルのインクルードガードは#ifdef〜#endifでくくっていたのを、#pragma onceでインクルードガードが可能。

ダウンロード版正式リリースは8月25日予定。
あれ?そういえば、[NDAにつき検閲済]はどうなったんだ? 確か、入るはず*2予定で個人的には一番欲しかった機能だけd Zap!! Zap!! Zap!!!

*1:08/26 TStringsはDelphiのみ

*2:おいらの思い違いだと思いたい