Clover2開発日誌

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

カレントプログラムの実行をシェルモードに追加。String.clcの見直し。

カレントプログラムの実行をシェルモードに追加しました。

 

> ./configure --prefix=$HOME --with-optmize

 

などがシェルモードで動きます。これで一応僕が普段実行するコマンドは全部動くようになりました。現在はClover2をiclover2上で開発しています。

iclover2上で開発しているためStringクラスのチェックも行えました。

ライブラリの仕様が変わってます。subのブロックの引数の順番が変わってます。subのreplaceのブロックは第二引数でしたが末尾になっています。もし、Clover2でコードを書かれていたら変更お願いします。これから、もし、ライブラリの変更があったらwikiのライブラリの変更の章に書いていきますので、一応そこに目を通しておいてください。変更理由はブロックの糖衣構文のためブロックの引数は末尾にあったほうがいいためです。以下のように書けるようになりました。

 

> "ABC".sub(/A/) { |str:String| return str.append("X"); }

> AXBC

 

のような感じです。group_stringsも省略できるように改良しました。

 

しかし、iclover2の補完の出来はまだまだです。ブロック内の変数など補完できるようにしたいです。今日から暫くその作業に入ります。パーサーはClover2のものを使い型を特定できるようにしてJavaIDEのような補完ができるように改良します。今のところ、独自にパースしているためブロック内などで型が特定できていません。

iclover2が満足できるできになったら、バージョンをあげます。

 

その後、delegateという継承の代わりのようなものを入れたいと思っています。実装付きインターフェースは入れないかもしれません。delegateとmoduleで十分継承の代りになりそうなので。そのあとはSwiftやKotlinを目指して、ぼちぼち本格的なオブジェクト指向言語を目指して開発していきたいと思います。まだ作り始めて1年半くらいですが、4年後にはSwift並のものを作りたいと思っています。Swiftも開発に4年かかったそうなので。

 

下地はできています。JITはClover2のコンパイル時にネイティブコードにコンパイルしてしまっていますし、速度的には十分な物が出ています。あとはコンパイラーの改良なので、意外と簡単に終わってしまうかもしれません。まあ、楽しみにしていてください。これからもClover2をよろしくお願いします。

 

それではenjoy programing!