Clover2開発日誌

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

JITのデバッグが終了しました。

JITデバッグが終了しました。バグは多分無いと思います。

デバッグに2週間、作成に2ヶ月半くらいなので、3ヶ月でLLVMでのJITが成功しました。思ったよりは時間がかからなかったですね。

LLVMに関してはまだまだ発展中なので、なかなか使いこなすのが難しかったですが、なんとか、リリースにたどり着けました。

パソコンのしすぎで、奥さんに怒られたりしましたが、なんとかバグもなくなり、ほっとしてます。

しかし、残念なことにJITすると逆に速度がおちます。正直に言っておきますが。最適化のフェーズのうち、一つだけ有効にするとバグが発生するため、外してあるのです。そのせいかなと思います。多分それが重要な最適化で、速度に関係があるのではないかと思っています。

それを有効にしたり、もしくはJITではなく、コンパイルタイムにコンパイルしてしまう方法を考えたりしています。やっぱり実行時にコンパイルするのが遅いと思われるので。

まあ、僕ももうそろそろノラプログラマーとして趣味でコーディングするのも終わらせようと考えているので、速度の問題を解決できたら、ノラプログラマーを引退すると思います。

僕は仕事は介護士をしていて、趣味でプログラミングしています。40歳にも近くなり、結婚もして、だいぶ余暇にプログラミングするのは無理が来ています。仕事してのプログラミングをしたい気もあるのですが、どうしようか、迷っています。介護士としても10年近く仕事をしているので、今更プログラマーになっても使い物になるか分かりませんし。とりあえず、趣味としてのプログラミングはやりきった感じがあります。後はちょくちょくClover2の速度の問題や拡張ライブラリを作成を可能にしたりSocketクラスを作ったりすると思います。やりきった感があるので、もう弱火でちょくちょく改良する程度ですね。しかし、JITを有効にすると遅くなるとは。コンパイルが遅いのかなぁ、、、、モジュールをメソッドごとに何回も登録しているのが遅いんだろうか。はぁ、、、まあ、また解決できればいいなと思います。

 

ではでは。フィナーレのBGMは無音でした。今日もビール2杯飲んで打ち上げします。JITを有効にしたmake testが全部動いたときはほんと嬉しかったです。それでは。

まだまだJITにバグが見つかってます

とりあえず、基礎ライブラリをJIT化していってバグをなくしたいと

思います。

すごくたくさん、バグが出てます。メソッドをjit指定するたびに

バグが出る感じです。

申し訳ないですが、JIT無しでとりあえず、使ってみてください。

JITのバグを修正。

if文とかfor文とかをネストすると落ちるバグを修正。

まだJITにはバグがあると思いますので、ぼちぼちデバッグしていきます。

しばらくはバグが有ることを許してください。

申し訳ないです。JITなしだと、とりあえず安定しているので

JIT無しで使っていただけるとありがたいです。

LLVMによるJITが完成しました。

ついにやりました。全VMの命令をJIT化しています。

処理速度はまだ測ってませんが、だいぶ速くなると思います。

良かったら、試してください。

今日は奥さんの料理で打ち上げします。楽しみです。

贅沢に本物のビール2本飲もうかな。明太子も出してもらおう。

フィナーレのBGMはThe beatlesの「Sgt. Pepper's Lonely Club Band」でした。

 

では。

いよいよJIT化のフィナーレです

LLVMによるJIT化があと少しで終わります。

膨大なキャスト命令をだいぶJIT化しました。

ほとんどvimのコピペとマクロで作ってます。うーむ、vimは便利。

後はアセンブラでキャストする部分だけですね。

終わったら、家族に言って、打ち上げしてもらいます。

まあ、別に家で贅沢に発泡酒2本で飲んででもいいですけど。

楽しみです。