言語設計の方針

  • GCを搭載したモダンな言語にしたい

という事は当初から考えていた訳だけれども、ブートストラップでこれを実現するのは難しい。
高級すぎる言語ではGCなどの低レイヤーの処理を実装できないから。
例えばO'Caml、GHCerlangなどはコンパイラをその言語自身で実装しているが、やっぱり低レイヤ部はC言語で実装している。

さて、rowlは

という縛りがあるのでC言語は使えないから、よく考えないといけない。
いろいろと考えた結果最終的に以下の様な言語に挑戦することにした。

rowl = rowl-core + 型システム + メタプログラミングシステム

ポイントはメタプログラミングシステムでつまりLISPのマクロのような物である。
言語コアは低級にしといて、メタプログラミングにより高級な機能の全てを実装しようという事。
言語機能の大部分がライブラリとして呼び出される事になる。

GC無しのrowl-coreの関数とGCあり部の関数のインタフェースをどうするかなど面倒な問題はあるけれど、作りながら考えていく事にする。