Clover2開発日誌

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

JITでtry文、for文、while文など制御構文に対応

とりあえずは書きました。テストやデバッグはまだです。try文は動くか自信がありません。if文は動いているっぽいですがelifなどは動いているか謎です。明日以降テストとデバッグをする予定です。すんなり動けば良いのですが。ただ、try文はかなりいい加減な実装でネストした場合には対応してません。普通のVMの方ではtryがネストしても大丈夫なのですが。そのあたり対応できるかは分かりません。LLVMって難しいです。

 

とりあえずはローカル変数に代入も出来ますし演算子もある程度は対応してますし制御構文も入ったので、LLVM化も順調には進んでいます。対応できたら、version 1.4としてリリースしたいと思います。夏の終わり頃までには仕上げたいと思います。秋までずれ込む可能性もありますが。

 

速度の方は僕のサーバーはかなりの速度が出るサーバーで僕自身にとってはLLVM化しても、さほどメリットは無いのですが、遅いサーバーでは劇的に速くなる可能性はあります。またjitした場合としなかった場合で速度を計測してみます。全部できあがってからですが。

しばらくはLLVM化に集中します。その後webアプリケーション用のライブラリが整備できたらと思います。今だとSocketもクラスになっていないので。Threadは入れるかどうかは分かりません。あまりThread好きじゃないんです。Threadのプログラミングは複雑で、それなら別プロセスでいいじゃんと思っちゃう方なので。

 

乱筆乱文失礼。コーディング後でちょっと頭が混乱してます。