近況 2022-08-31

今月の活動 (ミローネ言語、最適化コンパイラ、読んだ記事など)

ミローネ言語

https://github.com/vain0x/milone-lang

  • プロジェクトをライブラリとしてビルドするための設定の追加
  • Windowsでの不具合の修正
  • インストールディレクトリの変更:
  • モジュールロード機能の移動:
    • (ModuleLoad.fs の冒頭にも詳しく書いた)
    • ソースファイルの読み込みかたはクライアントによって異なるので、クライアント側でやるようにした
      • 例えばLSPサーバーはファイルではなくテキストエディタの内容を使ったり、パースの結果をキャッシュしたりしている
    • これ以外にもパイプラインがコンパイラ用になってしまっていて、LSPサーバー側は改善の余地がある
      • ワークスペース内に複数のプロジェクトがあるときStdの型検査が行われてしまうところとか

最適化コンパイラ

playground/2022-08-07-optimizing-compiler (F#)

  • ミローネ言語のコンパイラの中間表現がいまいちなので改善したい
  • 適切な中間表現と思われるSSA(静的単一代入)形式の試し書きを行うための処理系を作っている
  • ついでに構文や型検査で試したいことをやっている
    • 構文: スペースの有無を利用してセミコロン自動挿入を行う方式を試している (リンク先に詳細)
    • 型検査: 式の型検査の際にターゲットの型 (その式に期待される型) を伝播する方法を試している
      • エラー報告の仕組みがまだない
  • インライン展開を部分的に実装した

実装面:

  • ミローネ言語の型システムの探索のため、可変なオブジェクトをユニークに使うような実装になっている (というか、そうしようとした)
  • 関数に可変な参照を渡すのが可変性の表現の素直なかたちなので、それができる型システムにしたいと思っている
  • 多数の可変なオブジェクトからなるレコードを渡すと実際にどれが変化するのかよく分からず、可変性の表現になっていない (読み取り専用と読み書き可能の区別がつかない) ことが分かってきた

読んだ記事など

関連記事