コンテンツへスキップ
ものがたり
戻る

2011-02-17

Mono 2.10 released

概ね予定通り、3ヶ月ちょいでの新バージョンです。
http://www.mono-project.com/Release_Notes_Mono_2.10

主な変更点…と書いてあるところから引っ張ってきて多少コメント:

今回はわずか3ヶ月でのリリースなので、それ相応の変更となりますが、こう書くと割と多いように見えなくもないですね。monoチームは今年はmonodroidにだいぶリソースを食われているので、monoに関わっている人はそれほど多くないかもしれません。12月は仕事しないというハカーも多いですし(僕もそうw) 個人的には2.10の期間は開発PCが2つ同時に壊れたりなどしてもう散々だったので、作業もSystem.Xamlの実装くらいしかやっていなかったりして…

ちなみに同時にMoonlight 4.0 betaが出ていて、MonoDevelop 2.6もそのうち出る予定です。

mono 2.10以降のmcs/csharpの変更について

先に書いたとおり、mono 2.10ではmcsのコード生成エンジンの実装が大きく変わりました。これまではSystem.Reflection.Emitをコード生成に使用していて、その結果、生成されるコードはそのコンパイラを使用しているmscorlibに依存するという問題があって、それで2.8以前のmcs (1.x)、gmcs (2.0)、dmcs (4.0)、smcs (2.1, monotouch/monodroid含む) という別々のコンパイラが存在する理由だったわけです。

この問題が、IKVM.Reflectionに切り替わったことで無くなったわけです。現在のmcsでは、-sdk 引数によってビルドするプロファイルのバージョンを指定できます。

mono 2.10では、gmcs, dmcs, smcsは従来通りSystem.Reflection.Emitを使用しているようですが、今後のmonoのバージョンでは、全てIKVM.Reflectionベースのmcsとなり、gmcs, dmcs, smcsは単なるエイリアスになるでしょう。

ちなみにREPL環境として改善されたcsharpではSystem.Reflectionが使われているようです。リリースノートに書いてあるのですが、↓のようなスクリプトが実行出来るというのはなかなかいいですね。

$ csharp -e 'Math.Sin(0.1);'  

0.0998334166468282  

$ csharp -e 'from l in System.IO.Directory.GetFiles ("/bin") where l.Length > 18 select l;'  

{ "/bin/dbus-cleanup-sockets", "/bin/showconsolefont" }  

$

この記事を共有:

前の記事
mono 2.10以降のmcs/csharpの変更について
次の記事
Mono 2.10 released