今週からあまり頑張りすぎないようにしてるんだが働いてる時間を平均するとそんなにかわってないかも……。まあ疲れすぎなければなんでもいいんだが。
最近更新の激しい1irpackですが0.2.5を出しました。
変更点は
の二点。
Microsoft.Scripting.Metadata.dllはこれが嫌らしいことに埋め込まなくても動いたりするんで気付かずにいた。結局何のアセンブリなんだかよくわかってないんだが、CLRのクラスといろいろ連携するのに必要なのかな?という気がする。
実行時オプションは主に-I
とか-r
を指定できるやつ。exe作る時に-I
とか-r
を指定しておくとexe起動時にそいつらを指定してくれます。-I
に相対パスを渡すとカレントディレクトリでなくてexeが置いてあるディレクトリを起点にするので注意な。注意ってかカレントディレクトリでも困るだろうけど。
他の実行時オプションもir.exeに渡せるのとなるべく同じにしたんでそんなにわからんものはないと思う。
-trace
や-profile
が--trace
と--profile
になってたりするがこれはOptionParser
でハイフン一つのオプションを指定すると必ず一文字の短いオプションだとされてしまうので仕方なくハイフン二つの長いオプション化。同様に-X:~
のオプションも長いオプション化した。
ir.exeと同じといってもir.exeのオプションからしてよくわからないのが多いので解説するか。
--trace
(ir.exeでは-trace
)Kernel.#set_trace_func
はパフォーマンスの問題か何かで標準で使えなくなってるが、こいつを指定すると使えるようになる。--profile
(ir.exeでは-profile
)IronRuby::Clr.profile
メソッドが使えるようになる。pi = IronRuby::Clr.profile { block_to_profile }
のように使うらしい。戻り値はメソッドとその実行時間のHash?詳しくはよくわからない。--exception-detail
(ir.exeでは-X:ExceptionDetail
)--show-clr-exceptions
(後述)の方が詳しく出る。--no-adaptive-compilation
(ir.exeでは-X:NoAdaptiveCompilation
)--compilation-threshold THRESHOLD
(ir.exeでは-X:CompilationThreshold
)--no-adaptive-compilation
と同じ。コンパイルしない指定は無いけどとてもでかい値を指定しておけばOK。--pass-exceptions
(ir.exeでは-X:PassExceptions
)-D
もつけとくと落ちたところでデバッガのアタッチができるようだ。--private-binding
(ir.exeでは-X:PrivateBinding
)--show-clr-exceptions
(ir.exeでは-X:ShowClrExceptions
)--exception-detail
との違いがわかりづらいが、--exception-detail
はRuby形式でRubyレベルのバックトレースが詳しく出る。両方指定すると両方出るので安心だが少々うっとうしい。オプション解説終了。
そういや-K
とかは作ってないんだった。IronRuby 1.1.3とは文字コード関係の動作が変わってるので注意な。1.1.3では-K
もなんとなく生き残ってたり、locale
エンコーディングがコンソールのエンコーディング(日本語設定ではコードページ932)になったりしてるんでirpackもそうしてやろうかと思ったが、どうも最新のソースではそんなことをやっていなくてlocale
がUTF-8に初期化されてるだけなのでそれに合わせるようにした。どっちがいいのかよくわからんけど、なんでIronRubyではデフォルトエンコーディング指定をやらなくなったんだろう。今度確認しておこう。
今後の予定。なんだかirpackづいてるのでしばらく機能強化続けそう。
当社比 ↩