Clover2開発日誌

Clover2というJavaのように静的な型を持つRubyのようなコンパイラ+仮想マシンの開発日誌です。LLVMでJITもします。https://github.com/ab25cqにて開発しています。

JITのルーチンの書き直し中

現在JITは有効ではありません。--with-jitは./configureに付けないでください。

 

LLVM用のスタックを用意してLLVMの最適化がかかるように改造中です。今のところ、メソッドコールと一部の演算子、throwなどは動いてます。

一度書いたルーチンを流用してでの書き直しなので、そんなに時間はかからないと思います。のんびりと動かしていっています。

問題は速くなるかですが、なんとかして速度を出したいと思います。

 

最近Swiftの言語仕様をwikipediaで読みました。高機能で僕が自分の言語でしたいことは大抵してある感じです。インタラクティブにも動きますし。僕の言語の利点はmixin-layersですかね。後は正規表現ファーストクラスオブジェクトな点もちょっと違います。

速度的にはネイティコードを作るSwiftには絶対敵うわけもなく、僕の言語は多分RubyPythonより遅いと思います。GCかなぁ。mark&sweepでしかもコンパクションまでしているので、遅いと思います。原始的なGCのルーチンなので。また気が向いたらGCのルーチンも改良したいと思います。

速度さえJITで速くなれば、それなりに良い言語だと思います。JITが完成して速度が出るようになればSwiftを参考に幾つか改良点を施したいと思います。nullを代入するために型名の後に?を入れなければならないようにしたり、クラス外の関数を作れるようにしたり。そんなに難しくない変更なので、是非したいと思います。