ものがたり(旧)

atsushieno.hatenablog.com に続く

Mono 1.1.3

出ました。あ、あと1.0.5も。1.0系列は併存インストールできないのは相変わらずです(っていうかそれやったらminor fixじゃなくなるし…)。個人的には1.1系列の方がおすすめです。まあ、開発者は大抵そう言うわな…

主な変更点は

  • mcs-1.1.3.tar.gzは存在しません。全てmono-1.1.3.tar.gzに入っています
  • SSAPRE (SSA based partial redundancy elimination) mono -O=ssapre
  • C# 2.0: covariance, contravariance, プロパティのアクセシビリティ指定
  • mcs: warningレポート機能の改善, /docサポート
  • mkbundle (monoランタイムと関係アセンブリをひとまとめのバイナリで配布するシステム)
  • Mono.Unix - 新しいMonoPosix (MonoPosixOEE)
  • ASP.NET 2.0: configuration, TreeView, client callback
  • Npgsql: LOBサポート
  • XmlTextReader/XPath/XSLTのパフォーマンス改善

他にもManaged Windows FormsやJScriptVB.NETの開発も進んでまつ。

XmlSchemaValidator

まだmono 1.1.3のパッケージングは終わっていない。というより、昨日終わらなかった。

ということで、今月はXSLT/XPathを最適化しようと思っていたけど、Alpがちょうどユーザーになってくれそうな感じなので、何か意味もなくやる気が出てきて、XmlSchemaValidatorを実装してみる事にした。んで、まずMSDNドキュメントを眺めて「何じゃこの意味不明な設計は?」と思いつつ、publicとprotectedのAPIを再現する。その僕のソース中には、LAMESPECと書かれた項目がたくさんあるわけです。たとえばbaseUriをXmlSchemaValidatorのコンストラクタで渡したらentityから生成されたノードのbase URIはどうすんだよ、とか。そんで、これを追加してgmcsでSystem.Xml.dllをビルドして、同じくgmcsでビルドしたcorcompareを使って、mono/web/webでmakeすると、古いwebサイトのスタイルのclass statusのページ出来上がるわけです(実際には他にもいろいろやんなきゃいけないんだけど)。その中のAPI情報は.NET 2.0のAPIになるわけです(これが僕がsys.xml 2.0のAPIを実装するときに普段やっている作業のひとつ)。

で、出来たページを眺めてみると…ドキュメントされているAPIと実物が全然違う(-_-# 今の実装はbaseUriをコンストラクタで渡したりはしないわけです。もともと内容が空白なのにAPIすら古いdexplore...って何かmonodocの話をしているような気分になってきた。閑話休題APIから作り直し。そして、新しいAPIに置き換えていった時点で、とりあえず3,4件あったLAMESPECは全部消えました。とりあえずXmlSchemaValidator自体は15くらいの未実装APIで足りているのだけど、これを使ったXmlReaderもやっぱ作らないといけないだろう。

ということで、まあもしかしたら今月中に出来るかもしれないです、と彼に伝えたところで気付いた。おれXML Schema検証系を2週間ちょっとで実装しようとか思ってる?