2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【報告】やっとIRのMVPできた...

2
Last updated at Posted at 2026-10-12

純粋関数型システム言語 Cargry を開発しています


CargryのIR

Cargryには CrIR というIRがあります

役割としては

  • CargryとCranelift IRの中間表現
  • メモリ管理等のルールのチェック
  • Cranelift IRへ変換

などが挙げられます

MVPの完成

2026年10月11日のコミット9bec33c2afにて、crantzeのMVPが完成しました!

crantzeとは

crantze(読み: クランツェ)はCrIRそのものと言えます

crantzeは

  • CrIRの構築
  • メモリ管理ルールに基づいたチェック
  • Cranelift IRへのビルド

を行います

今できること

今は、「CrIRの構築」及び「Cranelift IRへのビルド」のみで、メモリ管理ルールのチェックについてはまだ実装できていません

今使えるもの

今は

  • 32ビット整数型
  • 単純な変数
  • 値の返却

だけ使えます

小話

「独自の中間表現を持つ言語って、最初は中間表現の実装から始まる説」

まぁ、「中間表現」という土台の上に、「作りたい言語」を建てるので、自然ですね

Cargryは

というフローなので、CrIRがある限り、CargryはCrIRに依存し、CrIRを作らないといけないのです

終わりに

字句解析のlewekk(読み: レヴェック)と構文解析のpopdack(読み: ポップダック)より実装が大変だった...

でも、CraneliftはLLVMと違ってファイ関数より優しい「ブロック引数」だし、MLIRよりスッキリ書けるから、Craneliftを選んで良かった...

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?