Compartilhar via


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への移植は、それほど手間がかかりませんので、試される方は試してみてください。

Comments

  • Anonymous
    September 18, 2008
    PingBack from http://www.easycoded.com/dlr-%e3%83%99%e3%83%bc%e3%82%bf5-%e3%81%ab%e3%81%a4%e3%81%84%e3%81%a6/

  • Anonymous
    January 21, 2009
    只今、 Tech Days 2009 の準備に追われています。今回は、T3-403 Dynamic Language Runtime と T3-310 F#入門を担当しています。 F#に関しては、.NET対応の関数型言語ということでご存じの方もいらしゃると思います。私自身は、関数型に精通しているわけでもないのですが、手続き(命令)型に慣れていると関数型の考え方が理解しにくいかも知れません。何と言っても、Immutableという特徴がありますし、この意味に置いては変数という表現方法が無いと言っても過言ではないと思います。つまり状態(値)を保持する値(領域)に対する操作(たとえば、加算、減算など)が無いということです。四則演算した結果を新しい値(領域)として作成するという特徴を持っています。もちろん値を書き換えるために、mutableな変数も作成できるのですが。もちろん、これだけではなく、何と言ってもExpression(式)を定義できるところに特徴があります。式の中には、演算式、ラムダ式などが含まれています