Visual Studio “14” で 標準C のサポートがどの様になるか、Microsoft から情報が表れ始めている。C99準拠への改善は最優先である一方、従来から存在する mscorlib
DLL の再設計はその作業を補完することになる。アプリケーションの稼働対象となる多様なプラットフォームへの改善要望に応えるため、Microsoft 所属の James McNellis 氏は Windows の Cランタイム(CRT)を三分割したことをブログで告知した。
本リファクタを実装することで、Microsoft は既存ランタイムのメンテナンスと追加機能実装が容易になった。例として、McNellis 氏は 142 の派生を持つprintfについて述べ、上記のリファクタを行うまでは、コードをサポートするために数百種類の条件コンパイルが必要となっている点を解説した。
- VCRuntime –スタートアップ処理、例外処理、コンパイラとの密結合 注意: 将来に破壊的変更が入る恐れがある。
- AppCRT – 全プラットフォームで利用される機能。後方互換は保守される予定。
- DesktopCRT – デスクトップに特化した機能であり、Windows Phone 等は含まれない。後方互換は保守予定。
Visual Studio “14” では、DLL を vcruntime140.dll
, appcrt140.dll
, desktop140.dll
に分割する方式の導入を開始した。ランタイムを3つのファイルに分割する対応は現在も実施中であり、3ファイル全ては稼働対象とするアプリケーションによらず CTP を必要とする。リファクタの完了後(“14” の公式リリースよりも早い)、AppCRT と DesktopCRT からバージョン番号は削除される。同時に、デスクトップアプリケーションが DesktopCRT を利用できるのと同様に、Windows Store と Windows Phone アプリケーションも VCRuntime と AppCRT を利用できる。
ランタイムの将来的なリリース計画としては、最新バージョンは古いバージョンに対して優先度を高くして置き換えられることになる。 従って、アプリケーションが “VCRuntime16” を必要とした場合、“VCRuntime14” を置き換える予定だ。
ランタイムを3分割する努力を続けながら、McNellis 氏によって C99 の仕様に関する リリース された。McNellis 氏は C99 の仕様に完全に準拠した様に記載しているが、Visual C++コンパイラがサポートしない機能を必要としないものに簡略化された仕様にのみ準拠している。