MicrosoftのCoreRTは、C#をクロスプラットフォームのC ++に変えます

Microsoftは、.Netツールチェーンを徐々に変更して、.Netツールチェーンがないプラットフォーム上のアプリケーションの事前コンパイルを可能にしています。

オープンソースのCoreRTプロジェクトでは、.Netの標準コマンドラインランタイム(CLR)を使用してアプリケーションを実行する必要がありません。代わりに、特定の.Net C#アプリのコードからC ++コードを生成します。このコードは、C ++をサポートする任意のターゲットプラットフォームでコンパイルおよびリンクできます。

MicrosoftのAlphaGeek開発ブログへの投稿で、Microsoftは、CoreRTがどのように機能するかについての計画と、それを作成する理由を簡単に説明しました。

「本当にC#コードを記述して、新しいIoTデバイスで「正常に動作させる」場合は、RyuJITがそのプロセッサで動作するマシンコードを生成できるようになるまで、オプションはありません。オペレーティング・システム。" C#をC ++にクロスコンパイルすることで、.Net開発者は、特定のプラットフォームに.Netがデプロイされるのを待たずに、アプリケーションを配信できるとMicrosoftは言います。

マイクロソフトは、このタスクは口で言うほど簡単ではないことを認めたものの、年間を通じてこの目標に向けていくつかの重要なプロセスを行ったと述べました。最も顕著な問題は、ある言語を別の言語にトランスパイルするプロジェクトに共通しています。 C ++と.Netには、構文、データ構造、言語ロジックなどの機能が1対1で対応していません。したがって、CoreRTは特定の.Net機能をC ++にエレガントにマップする必要があります。

言語をC ++に変換して実行を高速化するもう1つの主要なプロジェクトは、PythonプログラムをC ++に変換するNuitkaです。 Nuitkaは、CoreRTと同じ問題の多くに直面している進行中のプロジェクトであり、おそらくそれらを調整するのにさらに困難な時間があります。 Pythonの動的な性質により、言語のすべての構造が高度に変更可能なプロパティを持つオブジェクトである可能性があるため、事前コンパイル型言語への変換が困難になります。 C#は、変数に静的型付けを使用するため、その観点からはそれほど問題にはなりませんが、前述のように、それでも多くの問題が発生します。

CoreRTには、オープンソースと人気のあるMicrosoft以外のテクノロジを中心としたMicrosoftの継続的な再編成から直接派生したものがたくさんあります。しかし、Microsoftはこれを行う理由について常に実用的であり、ここでの実用主義は、以前はサポートしていなかったプラットフォームやエコシステムで.Netアプリケーションを実行する方法を確認することです。

CoreRTは、Microsoftが過度の努力をすることなく、理論的に.Netエコシステムの範囲を広げることができます。他の任意の数のターゲットプラットフォーム用のランタイムを作成するよりも、C#からC ++へのワンタイムトランスパイルシステムを作成する方が簡単です。確かに、.Netがオープンソースの関心事になっているおかげで、サードパーティはそのようなランタイムを作成できます。しかし、Microsoftの計画は、問題を解決する1つの方法を見つけることです。