IronPython2.0正式リリース


予定通りやってきました.これは早速Svitchで使ってみよう.

CPython2.5とIronPython2.0のパフォーマンス比較.

IronPython - Performance Comparisons
トータルで+62.7%程度CPythonに比べて遅くなっているだけで十分な性能を示していると思う.例外を投げる(?)TryRaiseExceptだけ飛び抜けて遅い(+4478.9%)のがちょっと不思議.

組み込みモジュール

IronPython 2.0 (2.0.0.0) on .NET 2.0.50727.1434
Type "help", "copyright", "credits" or "license" for more information.
>>> import sys
>>> sys.builtin_module_names
('clr', 'sys', '__builtin__', 'exceptions', 'cmath', 'binascii', 'array', '_codecs', '_weakref', 'collections', '_winreg', '_sre', '_random', '_functools', 'xxsubtype', 'time', 'thread', '_struct', 'socket', '_sha512', '_sha256', '_sha', 'select', 're', 'operator', 'nt', '_md5', 'math', 'marshal', '_locale', 'itertools', 'imp', 'gc', 'errno', 'datetime', 'cStringIO', 'cPickle', 'copy_reg')

ここに載っていないモジュールはCPython2.5のライブラリにパスを通すか,.NETのライブラリを直接使うかしないといけない.Svitchみたいに配布するアプリケーションの中で使う場合は基本的に後者かな.

AddReferenceByPartialNameはやっぱり必要

2.0になったら.NET標準のアセンブリについてはimportだけで済ませられるのかな?と思ってたけどそんなことは無かった.clr.Referencesの中に読み込み済みのアセンブリ一覧が入っていて,importできるのはそこからのみ.起動時の中身を見るとmscorlibとSystemしか入ってない.
AddReferenceByPartialNameをするとSystem.Windows.Formsのアセンブリも追加されるが,ローカルの辞書には追加されないのでさらにimportも必要.ここらへんは1.1系とあまり変わってないような.

>>> import clr
>>> clr.References
(<mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>)

>>> clr.AddReferenceByPartialName("System.Windows.Forms")
>>> clr.References
(<mscorlib, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>, <System.Windows.Forms, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089>)

C#からの動的な利用方法

チュートリアルとかサンプルに入ってないみたい…
見っけた.
IronPython in Action: Download Sources
Chapter15のソースコードアーカイブ内にDynamicObjects(C#版)とDynamicObjectsVB(VB.NET版)が入っていて,その中のProgram.csに次のような基本的なIronPython2.0の使い方が載ってる.これはありがたい.

  • (1 + 2 + 3 + 4)のようなPython式の実行
  • lambdaの生成と呼び出し
  • タプルなどのPython型の使用
  • 独自クラスのインスタンス生成とメンバ関数の呼び出し
  • 組み込み関数の使用
  • 組み込みモジュールの使用

もっと詳しいのはこっちのサイトを見るといいかな.
クックブック→Contents - IronPython Cookbook
関連リンク→IronPython - Home