.NETのコアは、Microsoftの新しいプラットフォームを推進している、より多くの影響力を持っているようです。最近出てから、独自のプログラミング言語コンパイラの、この業界のトレンドのために準備されるためには、.NETの移植.NETのコアのクロスプラットフォーム達成するために、Linuxの上で実行することではなく、失敗しました。
その理由は、ということである.NETのコアでライブラリのAppDomain、AssemblyBuilder、ModuleBuilder、ILGeneratorので、それが不可能にコンパイルすること、メソッドまたはタイプのいくつかの非常にコアが含まれていません。
これらのコアは正常にコンパイルすることはできませんがなければ、最終バイナリファイルを生成することはできません。あるように使用されるもの.NET CLR上で実行されているオープンソース言語の.NETのコア彼らのためには何の魅力、フォローアップの欠如がありません.NETのコア上に、そのオープンソースプロジェクトからの助けを得るための方法はありません。例えば、ClojureのCLRは、私はその最新のコンパイラのソースコードをダウンロードし、それがであるSystem.Reflection.Emitを生成するために、名前空間ILの命令を。
マイクロソフトに.NETのコアは、上放棄さSystem.Reflection.Emit物事のそのセットを。私は、生成された一連の研究しようとしたILの無効とする知識を。これは、のことを思い出すSliverlight、XNA、Windowsの携帯電話の運命。私は知識のこの部分を掘り下げするために懸命に働いてきたゼロ、ゼロカードのことを思い出す(サーカシヴィリのニックネーム)。
私は今、Microsoftは今だと思うRoslynのコンパイルC#のが、Roslynのは、オープンソースです。私は、ダウンロードしたロザリンソースを、と分析しました。出会うソースコードPEAssemblyBuilderいくつかの.NETのコア欠けている方法が、それはその内部の密閉された使用に誰にでも利用可能で、開いていない、クラスではありません。
マイクロソフトだけでなく、.NETのコアは、以前に破壊さSystem.Reflection.Emit、新しい代替機能を提供していない、それが他の人を除外しているようです、単独でのビルドに.NETのエコロジー、.NETを超えたJavaはまたの可能性ありおおまかに決定。あまりにも少し感じます。
私は外国人が中にあきらめなければならないことを感じた.NET賢明であるの開発言語。Javaプラットフォームは、が行われているのGroovy、Scalaの、Kotlinをというように言語がに表示されます.NETの持っていることは不可能。マイクロソフト.NETではないように、すぐに破棄破棄したい、支配に固有のJavaののJCPの投票に適合している組織、依頼する必要はありません.NETのプログラマービュー、高効率を。
次のようにメソッドまたは不足しているタイプは次のとおりです。
AppDomainの
この方法の欠如
DefineDynamicAssembly(のAssemblyName名、AssemblyBuilderAccessアクセス)。
AssemblyBuilder
この方法の欠如
DefineDynamicModule(文字列名、文字列ファイル名、BOOL emitSymbolInfo)。
SetEntryPoint(METHODINFO entryMethod、PEFileKinds fileKind)。
保存(文字列assemblyFileName)。
ModuleBuilder
この方法の欠如
DefineDocument(文字列のURL、のGuid言語、のGuid languageVendor、のGUIDのDocumentType)。
ILGenerator
この方法の欠如
MarkSequencePoint(ISymbolDocumentWriter文書、INT STARTLINE、INT STARTCOLUMN、INT終了行、INT ENDCOLUMN)。
LocalBuilder
この方法の欠如
SetLocalSymInfo(文字列名)。
列挙型の欠如PEFileKinds
AssemblyBuilderAccess
列挙値の欠如
保存する、
RunAndSave、
ReflectionOnly