某掲示板を眺めていると、IronPython 1.0.1が出ているらしいですね。
早速DLしてみました。
どこが変わったんだろう?と思って、ぐぐってみたんですが、日本語で関心もってらっしゃる方は、あまり居られない模様。
ぱっと見た所、↓石坂さんという方だけっぽい。うーむ。
- OPC Diary: IronPython 1.0.1リリース
http://www.isisaka.com/blog/archives/2006/10/ironpython_101.html
変更点はBug Fixと.NETアセンブリのDLLを起動時にロードするための機構の追加のようです。
しょうがないので、1.0と1.0.1のドキュメントをdiffって見るテスト。
FAQでは、以下の違いがありますね。
- Q: How do I create a .NET array?が記述追加。
多次元配列の作り方の説明が盛り込まれています。
なお、1.0でも使用可能なやり方です。(試してみた) - Q: How does IronPython's threading model relate to CPython's with respect to object operations?が新規追加。
要するに、CPythonとIronPythonのスレッドモデルの違いについての言及かな?
CPythonはグローバルロックを使っているけど、IronPythonは別の手法を使っているというように読み取れるなぁ。 - Q: Why does ipy.exe appear to access the internet sometimes?が新規追加。
要するに、ipy.exeがネットにアクセスしているように見えるのは何故か?という話題の模様。答えは、えーと、.NETの署名が影響している。かな?
Libの下に、site.pyがあるんですが、1.0では空だったんですが、1.0.1ではコードが追加されています。
コードを読み取る限り、以下の挙動が追加になったのかな?
- ipy.exeの下に、DLLsフォルダがあれば、"sys.path.append("DLLs")"する。
- DLLsの下位フォルダを探索し、.dllファイルが見つかれば、"clr.AddReference(file)"する。
なお、チュートリアルは変化無しですが、別に用意されている IronPython-1.0.1-Samples-All.zip の方の中身が変化あります。
以下のサンプルが追加されています。
- Direct3D
DirectXを使うサンプル - IPPowerShell
PowerShellを使うサンプル
(わんくま同盟の方で、PowerShellerな方が居られたようなので、興味を引いてもらえるかな?) - Pyc
EXEやDLLにコンパイルするサンプル
Pycは、いわゆる py2exe のようなものだと思えば良いです。
$ ipy pyc.py pyc: The Command Line Python Compiler Usage: ipy.exe pyc.py [options] file [file ...] Options: /res:rfile.resource[,(public|private)] Include public or private resource file /main:main_file.py Main file of the project (module t o be executed first) /out:output_file Output file name (default is main_ file.<extenstion>) /target:dll Compile into dll /target:exe Compile into console executable /target:winexe Compile into windows executable /platform:x86 Compile for x86 only /platform:x64 Compile for x64 only /platform:Itanium Compile for Itanium /r: or /reference: Add referenced assembly /? /h This message Example: ipy.exe pyc.py /main:Program.py Form.py /target:winexe /r:System.Drawing /r: System.Windows.Forms $ ipy pyc.py /main:console_hw.py Input Files: console_hw.py Resource Files: Output: console_hw.exe Target: ConsoleApplication
実行にあたっては、EXE単体でなく、アセンブリモジュールが必要となりますので、ご注意を。
(最低、IronMath.dllとIronPython.dllが必要。ところで、console_hw.pyをコンパイルしたら、EXEは7kバイト程度でした。すご)
余談ですが、このコンパイラ。ソースがたったの169行で出来てます。(中身は、引数の処理ばっか)
で、どうやって実現しているかと言うと、IronPythonのアセンブリモジュール内に、IronPython.Hosting.PythonCompilerクラスがあり、これがEXEを作ったり、DLLを作ったりといった処理を行ってくれてます。わーお。