Clover2開発日誌

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

クロージャーのバグ修正

クロージャーで親の変数が間違った値に変更されるバグを修正しました。make testで検出できてませんでした。一応テストを追加しておきました。

これで、めぼしいバグは大体修正できました。

僕が見つけているバグはもう無いです。

 

Clover2の開発にiclover2を使い始めてますけど、いくつか不満が出てます。

まず、CTRL-Zでプログラムをサスペンドしたときにやっぱりfgだけで復帰させたいですね。いちいち、Clover.jobs.items(0).forground()と打つのは面倒くさいです。これは特に構文をいじらなくても、Commandクラスにfgというメソッドを作ればいいと思います。

次に、make && make install && make testなどと外部コマンドに&&と||が欲しいですね。これは糖衣構文を作らないと無理です。

(今でも一応、make("--contorolling-terminal").toBool() && make("--controlling-terminal", "install").toBool() && make("--controlling-terminal", "test"で同じことは可能ですがタイプが面倒くさいです)

後は、./configure などとカレントプログラムの実行ができないのも不満ですね。これも糖衣構文が必要になります。今のところyashと実行してシェルで実行しています。

 

とりあえず、デバッグが済んだので、インタプリタを使いやすいように改良していきます。