Mono x referencesource updates

最近ほとんど告知とまとまったネタしか書いていなかったので、ひさびさにmonoの細々としたアップデートを、主にreferencesource絡みでいろいろ書いてみようと思います。

最近monoの中で主に行われているのは、Microsoftから公開されたreferencesourceの取り込み作業で、大部分はわたしを含む3人くらいでやっています。他の2人がmscorlib.dllとSystem.dllの内容を適宜置き換えている間に、わたしも適当に参戦しつつ(EncodingとかSystem.Diagnostics.Traceとかを置き換えました)、この前ようやくSystem.Xml.dllの大部分(XmlSerializer以外)とSystem.Xml.Linq.dllの全てを置き換えました。つまりわたしのコードはもうSystem.Xmlにはほとんどありません(!)

XmlSerializerが古いままなのは、先日GoAzureでもしゃべりましたが、referencesourceのXmlSerializerが動的コード生成に依存していてiOSで使えなくなる、という問題のせいです。これは誰かがreferencesourceの実装に沿ったインタープリターを書けば取り込めるかもしれません(!) なんか、個人的に「オマエでもいいんだけどカネ払ってもいいからやってくれる人いないか?」とか頼まれたりしているので、誰かやりたい人がいたら繋ぎます。(わたしは一応フルタイムで仕事しているしそんなのやる気は…w)

mscorlib.dllやSystem.dllについては、ソースコードのどの部分がreferencesourceに置き換えられているか、ビルドのレスポンスファイルのソースを見てみると、大まかな状況が掴めてくるのではないかと思います。collectionsとかcomponentmodelとかは置き換えられていますね。

わたしはそれに続いてWCFの取り込みにも目を向けているのですが、当初われわれ(主にMiguelとわたし)が「マネージドコードだし簡単なんじゃね?」と言っていたSystem.Runtime.Serializationがガチガチの動的コード生成仕様だったので、これはどうにかせんとなあという感じです。コレが取り込めないとSystem.ServiceModel.dllも取り込めないので、困っちゃいますね。あといろいろ足りない部分があって、ビルド出来るところまで持っていくのがひと苦労です。まあこれは11日にreferencesourceにSMDiagnosticsが追加されて、少し緩和されたかもしれませんが。

ただ、個人的には先にSystem.Data.dllを片付けたいという気もしなくはないところです。アレはメンテナーがほぼ壊滅状態なので…まあそれを言ったらWCFも(ry

あと最近referencesourceにWorkflow Foundationも追加されたので、これも取り込みたいところですが、こいつはWCFに依存している部分がある程度あるので、それもどうにかすべきところですね。WFにはSystem.Xaml.HostingとかXamlBuildTasksとかあるくせに、System.Xamlのソースはまだ公開されていないという…(アレが置き換えられるとわたしの成果がまたひとつ消せるのですがw)

ちなみにもう1人は新しいTLS実装に取り組んでいるみたい。この辺はreferencesourceがWindows に依存していて役に立たない部分であるわけです。

SocketとかHTTPSの実装まわりは、いろいろバグが出てくることが多いので、この辺はうまく置き換えられるようになると良いなあとは思います(Socketは難しいかな)。

とりあえず現在進行形の作業はこんなところでしょうか。ちなみにreferencesource統合作業については、パブリックなtrelloボードがあって、ここに計画や(部分的に)進捗なども記録されているので、興味がある人は見てみるといいと思います。referencesourceだけでなく、coreclrからGCのコードを引っ張ってくる、みたいな野望もリストアップされていたりして、割と面白いかもしれません。

https://trello.com/b/vRPTMfdz/net-framework-integration-into-mono

あと、先日Google Summer of Code 2015が発表されたのですが、referencesourceを取り込む作業もこの一部として含まれています。これももし興味のある人がいたらぜひどうぞ…まあGSoCって日本の大学の夏休みと合わないんですけどね…

http://monosoc.blogspot.tw/2015/03/mono-summer-of-code-2015.html

とまあ、ざっとこんなところでしょうか。本当はこういう話はこの辺のイベントに顔を出していろいろしゃべると良いのでしょうけど、たまたま裏番組でしゃべることになってしまったので、泣く泣くこうして落書きにして出した次第です。

この辺の作業については、またしばらくしてまとまった進捗が得られたら && 気が向いたら書こうと思います。