Compiler Internals
A guided map of the `souc` compiler: frontend, type checking, IRs, and backends.
Compiler Internals
compiler docs は今も有用ですが、現在は実際に検証できる artifact に結びついた implementation map として提示されます。
本日時点で確認済み
- compiler docs は、実装の地図と進行中の設計作業として読むのが最適です。
- チェックイン済みの公開 artifact では Cranelift JIT が有効と報告されます。
- 理想的な文章やディレクトリ名よりも、tests と gate artifact を強い根拠として扱ってください。
現在の注意点
- LLVM、GPU、LSP などの backend は、ソース配置ではなく artifact ごとに確認する必要があります。
- 言語仕様は、現在の公開 artifact が実際に強制する内容より先行している場合があります。
トラブルシューティング
- スタックオーバーフロー (Madaros コンパイラ): 再帰式コンパイラは、深くネストされた場合に非常に大きなスタックフレーム (フレームあたり約 4.85 MB など) を生成する可能性があります。これは最近、動的なフレームサイズをレジスタカウントに合わせる (
align16((*func).reg_count*8)) ことで修正されました。ただし、ネストされたブール演算を含む大きな関数をコンパイルする際にSIGSEGVやセグメンテーション違反が発生した場合は、スタックサイズ制限を増やすようにしてください:ulimit -s unlimited。