DanのSqueak on Java

実はしばらく前から知っていましたが、DanはSqueak VMJavaで書くというSqueakOnJavaというプロジェクトをこっそりやっていました。バイナリコンパチブルな.imageファイルがJavaで書かれたSqueak VM上で動くというものです。

http://weather-dimensions.com/Dan/sSqueakOnJava.jar
にあるjarファイルをダウンロードして、JREかなにかで動かしてみてください。

http://weather-dimensions.com/Dan/ForwardToThePast.jnlp
でも動くようですが。

Ianに聞いたところによれば、aClass allInstancesとかが動くようにするために、すべてのオブジェクトがそれぞれのクラス用のWeakArrayに入っているという噂です。

x86上だと、本来のSqueakの実行形体であるSqueakOnCに比べて50分の1とか20分の1とかの速度しか出ないのですが、PowerPCだと1/10くらいまでその差は縮まります。さすがDan。

動かして終わり、というものではないのでさらなる展開があるはずですが、今後に期待しましょう。

Croquet VM

CroquetのHedgeHog版リリースに向けて皆頑張っています。Croquetでは分散した異機種環境でも同じ演算結果にならないとならないので、浮動小数点演算は互換性ライブラリを提供してやることになります。IanはGlendaleに来ていますが、彼がいろいろな機械でテストするのをちまちま手伝ったりしています。

ForwardToThePast

言うまでもないことですが、上のファイル名にある"ForwardToThePast"というのはOOPSLA '97でDan達が発表した"Back to the Future
The Story of Squeak, A Practical Smalltalk Written in Itself "という論文をもじったものですね。元論文は、上から下までダイナミックなオブジェクト環境を作る、という昔の先進的なアイディアに戻るというものだったわけなので、今度のはその反対というわけです。

SqueakOnJava

Squeak(2.2というのはもう8年くらい前ですが)の基本的な使い方は梅澤さんによる
http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak/squeak.html

http://www.ogis-ri.co.jp/otc/hiroba/technical/Squeak/S3_1_1.html
辺りからが役に立つと思います。ただ、この.jarに入っているイメージは本来の2.2からとりあえずの動作に必要なものそぎ落とされていますので、書かれていることの多くのことは実行できないかもしれません。

少なくとも、0 tinyBenchmarksと書かれた行にカーソルを置き、Windowsなら右クリックをして出てきたメニューからprint itを選んで式を評価したりすると、ごくごく簡単なインタープリタの性能評価をすることができますし、Display restoreAfter: [Pen new web]を同様に評価して、画面に落書きをすることができます。お試しください。