Clover2開発日誌

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

まだだ、まだ終わらんよ

現在更なるJITの高速化を目指してコーディング中です。

コンパイル時にLLVMのbitcodeにClover2のバイトコードコンパイルしてしまおうという考え方です。

 

作業中のコードはgithubでブランチを作っています。bit-compilerがそのコードです。ただバグが出ていて正しく動きません。bitcodeを作ることは出来ましたが、正しくロードすることが出来ません。LLVMのバージョンの問題が怪しいので、明日以降LLVMをソースからビルドしてみます。

JITの高速化完成。

ついにJITが動きました。

--with-jit指定を付けるとJITが有効になります。まだ処理速度がどれくらい速くなったか試してませんが、とりあえず完成です。

あと--with-optimizeでセグメンテーション違反が出てましたが修正しています。

JIT付きの準現代風、コンパイラ仮想マシンです。ぜひ、試してください。準現代風と書いたのはすでに出ているSwiftやKotlinの方がかなり便利さで進んでいるためです。型推論やnull代入安全性など、オブジェクト指向の使い勝手がSwiftやKotlinの方がだいぶ上です。

これからはClover2をSwiftやKotlinの使い勝手に近づけてノラプログラマーとしての余生を過ごしたいと思います。

たまにパソコンのしすぎで怒られてましたが、僕を支えてくれた妻に感謝したいと思います。

それでは、enjoy programing!

JIT高速化の続き

現在./configure --with-jitは動きません。

 

とりあえず、b.clのテストは全部通ってます。後はmake testを全てJITで通せば、終わりです。

クロージャーのJIT化には苦労しました。バグにバグを重ねなんとか動くところまで辿り着きました。

一応b.clはmake testでも前回JIT化するときに通らなかったコードを選んでテストしているので、それが通ったってことはmake testのテストを通すのもそんなに苦労しないと思います。

でも、まだバグはあると思います。なんとか無事make testを通して完成させたいと思います。

すんなりいけば明日にはテストが通るかもしれません。そんなに甘くはない予感がしてますが、、、、。

今日は夜更かししてしまいました。夜更かしのコーディングは進捗が良いですが、次の日の進捗が悪いので、あまり良いことだとは思いません。皆さんもよく寝て、日中に進捗を出すことに集中してくださいね。それでは。

JIT高速化の続き

現在./configure --with-jitは動きません。

 

だいぶ大物バグを修正できました。一つのバグに2,3日はかかった気がします。かなりの数のバグが有りました。バグの修正にまたバグが有ったりして、かなり苦労しました。やっぱり調子が悪いときにはコーディングしないに限ります。バグが出て余計に時間が取られます。ぼちぼち調子がいいときに書いていくのが一番ですね。みなさんも、無理しないようにしてください。

何かどうでも良い話ですがお腹が減っているときに進捗がいいですね。デバッグに集中できます。

まあ、介護の仕事でもお腹が減っているときはよく動いて良い介護ができるので、お昼とかあまり食べないようにしています。

その割にはお腹は出てますが。

代わりに夜はたくさん食べます。

でも、若い頃はこんなことはなかったんですけどね。よく食べても動けました。歳のせいですかね。

 

まあ、とりあえず、8/31日でJITが動くようになったらversion 2.0としてリリースできるように頑張ります。

私事ですが、9/1に職場を変えるので、それまでにはリリースしたいですね。JITが完成したら、SwiftやらKotlinとか現代風の言語に改良していって余生を過ごしたいと思います。

型推論ですかね。ほしいのはあとはNullの代入の安全性とか、SwiftとKotlinを研究して、同じような機能を入れたいと思います。ただ残念ですがThreadは入れる予定はありません。Thread好きじゃないんですよ。入れるとデバッグに凄く時間が取られそうなので、そんな時間を過ごすくらいなら型推論とか入れたいと思います。

お楽しみに。

JITのデバッグ

現在./configure --with-jitは動きません。

 

だいぶデバッグも進んできました。今日やった分では概ね動く様子です。

基礎ライブラリを動かすにはいくつかバグがありそうですが、そんなに大物バグが無いような気がします。

とりあえず、命令個別のテストが全部終わったら基礎ライブラリをJITで動かしてみます。

たぶん、いくつかバグが見つかると思いますが、ぼちぼちやっていきます。

今月末には完成しているかもしれません。すんなり行けば。

夜にももう少しやってみます。では。

JITのデバッグ

現在./configure --with-jitは動きません。

 

デバッグもだいぶ進んできました。キャストは問題なく動いている様子です。

あとは基礎ライブラリをJITで動かしていきます。

すんなり行かないと思いますが、まあ、ぼちぼちやっていきます。

あと、2,3個大物バグがありそうですが、めげずにやっていきたいと思います。

JITのデバッグの続き

現在./configure --with-jitは動きません。

 

手強い例外処理のバグを修正しました。ネストするtryはできなくなりましたが、とりあえずバグを修正できました。

tryのネストができないのは仕様にするかもしれません。

 

後は、キャスト関連で変数を全部64bitで扱っていたせいで、いい加減な処理でも動いてましたが、ちゃんと型をもたせるように修正したため、それをきちんと処理するようにすれば、概ねバグは修正できると思います。たぶん、、、

 

まだ大物バグがあるかもしれませんが、ぼちぼち修正していきたいと思います。