DLR ベータ5 について

IronPython 2.0ベータ5がリリースされてから、DLRにどのような変更が行われているかを調べてみました。一番、大きな変更はネームスペースの変更なのですが、ベータ4に対して以下のようになっています。

  • System.Scripting-> Microsoft.Scripting

Systemというネームスペースが廃止されて、元のMicrosoftというネームスペースに戻っています。それからScriptRuntimeクラスからCreateメソッドが廃止されて、コンストラクタがScriptRuntimeSetupクラスの引数を取るようになっています。この関係でWell Known Languageを指定するScriptRuntimeSetupクラスのコンストラクタからbool引数が廃止されています。この代わりにReadConfigurationメソッドが追加されています。この変更に伴ってScriptRuntimeクラスにもCreateFromConfigurationメソッドが追加されています。この追加されたメソッドを使用するには、app.configに以下の記述を行います。

 <configuration>
  <configSections>
    <section name="microsoft.scripting"
        type="Microsoft.Scripting.Hosting.Configuration.Section,
              Microsoft.Scripting, Version=1.0.0.5000,
              Culture=neutral, PublicKeyToken=null"
              requirePermission="false" />
  </configSections>

  <microsoft.scripting>
    <languages>
      <language names="IronPython;Python;py"
                   extensions=".py"
                   displayName="IronPython 2.0 Beta"
                   type="IronPython.Runtime.PythonContext,
                   IronPython, Version=2.0.0.5000,
                   Culture=neutral, PublicKeyToken=null" />
    </languages>

    <options/>
  </microsoft.scripting>
</configuration>

languageタグに仕様使用する言語を記述しておくことで、ReadConfigurationやCreateFromConfigurationメソッドでScriptRuntimeSetupクラスをWell Known Languageで初期化することができます。IronRuby svn 148のソースツリーは、既にこの対応が行われていて、Python、Ruby、JScript、VB、ToyScriptが記述されています(VBのリリース状況がどうかは不明です)。

それからObjectOperartions.GetMemberNamesメソッドは正常に動作するようにバグ対応が行われていました。また、Expressions.ExpressionクラスからCodeContextメソッドが削除され、Microsoft.Scripting.Ast.UtilsクラスにCodeContextメソッドが追加されています。細かな変更は他にもありますが、ホスティングする上では上記の内容程度で対応することができます。TechEdの独自言語サンプルなどのベータ5への移植は、それほど手間がかかりませんので、試される方は試してみてください。