2013年7月7日日曜日

ClojureCLR-1.5.0 スナップショット

ClojureCLR 1.5.0のスナップショットをビルドしました。

ClojureCLRをビルドするのにパッケージを用意するのには、libフォルダにDLRを追加するのではなく、nuget経由でパッケージを使うようですが
現時点では、.net4.0(Release版)のみビルド出来ました。


skydriveにファイルを上げましたのでリンクを張っておきます。

更新:Microsoft.Dynamic.dll, Microsoft.Scripting.dll, Microsoft.Scripting.Metadata.dllを追加しました。

2013年7月5日金曜日

Clojure 1.5.1 Java API



1.5.1は1.3.0から変わりが無いように見える。
1.6.0で変更があるようで、clojure-dev MLでは議論されており、
githubのmasterリポジトリで確認できる。

pidigits Clojure #x program | Computer Language Benchmarks Game


Computer Language Benchmarks GameにGMPライブラリを使ったClojure pididitsを投稿してみた。

shootoutの投稿に関しては1ファイルで完結するなど規約が(どこかに)ある。
clojureでJNIを使う場合は、ファイル分けして対応するか3rdパーティライブラリを使うのだが、その制限でJNIを使うのは結構めんどくさい。


そこで、JNIのclassファイルをASMに書き換えて、compile後も動くようにリフレクションで呼び出すようにして対処した。

ASMの部分はこちらを参考にやってみた。
https://gist.github.com/athos/1033052

http://asm.ow2.org/eclipse/

一番不安なところは、元にしたjava版では実行時にエラーが起きているところ。
提出先でうまく動けばいいのだけど・・・。
(ローカルでは動いている)

http://benchmarksgame.alioth.debian.org/u64/program.php?test=pidigits&lang=java&id=2
http://benchmarksgame.alioth.debian.org/u32/program.php?test=pidigits&lang=java&id=2

また、clojure.asmが将来Clojureの公開APIから消える可能性があり、その場合は動作しなくなる予定。