Clover2開発日誌

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

2017-12-01から1ヶ月間の記事一覧

JIT

JITのテストやっぱり全部通ってません。 あと、JIT時自動コンパイル機能がなんかおかしいんですかね。 しばらく、JITの安定化に向けて頑張ります。

version 3.3.1

version 3.3.1 メソッドの引数でboxingやunboxingが起こるようになりました。Rangeクラスを作っています。StringクラスやBufferクラス、Listクラスなどで範囲を示す引数のメソッドを追加。同一クラス内のフィールドがコマンド名より優先されない問題を修正。…

verion 3.3.0

JITでバグが見つかりました。修正。JITでテストコードを全てネイティブで動かしました。JITは安定したと思います。 とりあえず、JIT爆速です。コンパイルはやや遅いですが、動いてしまえばネイティブコードで実行時にはコンパイルしていないので、凄まじい速…

JITのネイティブコードでテストが全部動きました。

JITのネイティブコードでテストが全部動きました。 version 3.3.0

version 3.2.9

version 3.2.9 例外の起こったメソッドのソースコードと行番号が分かりやすくなりました。

version 3.2.9

version 3.2.9 クラスフィールドやクラスメソッドの検索ルーチンにバグが有りました。かなり致命的なバグでした。ダウンロードお願いします。

クラスの検索ルーチン

version 3.2.9 クラスファイルの検索ルーチンにバグがありました。かなり致命的なバグでした。ダウンロードお願いします。ほとんど正常にコンパイルできない状態でした。ダメダメですね。しばらくJITをまともに動かせるようにする作業に入ります。今でも十分…

version 3.2.9リリース

version 3.2.9 オブジェクトに型情報が入りました。new Array<String>().className().equals("Array<String>")は真です。 しばらく、JITの安定化に力を入れます。テストコードがほとんどネイティブコードでは動いていなかったためJITに幾つかバグが見つかってます。とりあえ</string></string>…

version 3.2.8リリース

version 3.2.8 数値のラッパークラスのオブジェクト表現を入れました。 a:Integer = 5I; b:UInteger = 5UI; c:Byte = 5Y d:UByte = 5UY; e:Short = 5S; f:UShort = 5US; g:Long = 5L; h:ULong = 5UL; i:Float = 5.5F; j:Double = 5.5D;

version 3.2.7リリース。パターンマッチングを実装していってます。

version 3.2.7 whenの仕様が変わってます whenにwildcardを入れました。 > vim PaternMatching.clcl class PatternMatchingTest { value1: int; value2: String; def initialize(value1:int, value2:String) { self.value1 = value1; self.value2 = value2; …

version 3.2.6

if文のバグを修正しました。

version 3.2.5

version 3.2.5 例外が起こったときに起こったソースコード名とソースコード番号のスタックトレースが表示されるようになりました。

version 3.2.4

version 3.2.4 例外が起こったときに起こった場所が出力されるようになりました。

when式を入れました。

version 3.2.3 リリース 2017/12/4 when式が入りました。 a := 123; when(a) { 1 { println("1"); } 2,3 { println("2,3"); } 123 { prinntln("123"); } else { println("else"); } } a := "ABC"; when(a) { "ABC" { println("ABC"); } "DEF","GHI" { printl…

バグフィックス

version 3.2.2b リリース 2017/12/1 '{'や"...{..."などがあると正しくコンパイルできないバグを修正。なんで、こんなバグが残っていたんだろうroz 最近は僕もClover2ユーザーとなっています。バグに遭遇したら修正していきます。とりあえず、パーサコンビネ…

フィールドのselfの省略

version 3.2.2a リリース 2017/12/1 フィールドのselfの省略にバグが有りました。修正。 version 3.2.2 リリース 2017/12/1 同一クラスのフィールドのself省略 > vim InternalFieldTest.clcl class InternalFieldTest { field:int; def initialize(value:int…

version 3.2.1リリース

同一クラスのメソッドのself省略 > vim InternalMethodTest.clcl class InternalMethodTest { def initialize() {} def method():int { return method2(); # return self.method2()と書いても良い } def method2():int { return 123 } } > vim a.cl a := new…