Open1
neo-c version 1.3.0リリース
ヒープシステムが完成しています。boehmGCのように適当にヒープを生成しても全然バグがないです。
むしろ変なアルゴリズムを弾いてくれます。
freeはあるサイズ以下はサイズごとの配列を用意して単方向リストでリンクして、同じサイズのメモリのallocでO(1)で生成できるようにしています。セルフホスト9秒が7秒になりました。
正直C++よりも、モダンなCコンパイラです。コンパイラというよりトランスパイラですが。トランスパイラなので標準Cライブラリがあるシステムなら、どこでも動きます。Rustに勝ったとは言いませんが、C++とGoには勝ったかなと思ってます。問題はgenericsでポインタのgenericsが全て型ごとに生成される点です。そのせいで生成コードが膨れ上がってます。Rustはその点その問題は解決しているそうなので、ちょっと改良するかもしれません。諦めるか知りませんが。型ごとにgenericsのコードを生成する利点はnew Tができる点です。昔のJavaはTはvoid*のため、new Tができない問題がありました。また気が向けばTのサイズを格納したvoid*をTとして出力するgenericsを入れるかもしれません。new Tができるかできないかだけの問題ですが。現在のneo-cはnew Tできます。ただ、出力コードにかなりの無駄があります。今後の課題です。
C++より上だと豪語するコンパイラneo-cをよかったら試してみてください。