Udostępnij za pośrednictwem


CLS規則について

Nyaruruさんの日記でCLS規則37や38という文言を見て、改めて最近はCLIの仕様を読んでいないなぁと思った次第です。CLIがECMAで最初に承認されてから、ISOでも承認されて、JIS X3016が発行されてから大分、時間がたったなぁと。これから、ISO標準はどの程度の仕様変更が行われたのかなと思って少し調べてみました。現在の状況は、以下のようなものです。

  • ECMA 335 4th Edtion
  • ISO IEC 23271 2nd Edition

どちらもジェネリックの仕様が追加されたものが最新になっていました。ISOの最初の版は、ECMAの2nd Editionに該当します。この時に定義されていた CLS規則は、41個ありました。このCLS規則が、どのように変更されているかを以下に示します。

  • CLS規則7:enumのフィールドが「value__」であり、RTSpecialNameで印付けされるという説明が追加。
  • CLS規則11、12:ジェネリックに関する記述が追加される。CLS11は、シグネチャに出現する型がCLS準拠である規定です。CLS12は、メンバの可視性とアクセス可能性に関する規定です。
  • CLS規則25:プロパティに関するアクセッサのアクセス可能性に関する規定は、利用されていないという理由により削除されました。
  • CLS規則42から47:ジェネリック型の追加に伴う追加された既定です。

ご存じだと思いますがCLSとは、共通言語仕様のことで言語間の連携に置いて守らなければならない規則を定めたものです。この改定では、当たり前ですけどジェネリックに関する追加が中心となっています。じゃあ匿名メソッドや匿名型、型のイニシャライザは何に当たるかと云えば、シンタックス シュガーでコンパイラの仕事であるというのが、この使用からも推測することができます。もちろんILDASMで確認すれば、はっきりしますけど。

補足:IronPython 2.0 Beta2でDLR Beta2が提供されていますが、IronRuby Rev111ではDLRがまだBeta2に同期していません。IronRubyプロジェクトでは、先週・今週にかけて何度もRevが更新されています。その過程を見ていると、DLR Beta2への同期させるための準備も始まっているようです。101から見るとScripting.CoreのHostingがかなり変更されているを確認することができるからです。