WebAssemblyがずっと気になる、しかしC言語は書きたくない。お?それ以外の方法があるって…?で調べた記事。
概要
高速かつ安全な低級言語Rustは中間表現LLVM IRにコンパイルされる。
LLVM IRはWebAssembly (WASM) へ変換でき (つなわちWASM backendをもち)、Rust2LLVM2WASMが実現できる。
Rustのコンパイル
Rust言語自体は各自ググってくれ。
Rustのコンパイルは次の過程を経る。
Rust -> HIR -> MIR -> LLVM IR
High-level overview of the compiler source - Guide to Rustc Development
All of the previous chapters deal with rustc's frontend.
rustc uses LLVM for code generation. ref
rustc's backend is LLVM
Code Generation - Guide to Rustc Development
The end result of all this is (at long last) something executable (e.g. an ELF object or wasm).
LLVM
frontend - 共通IR optimization - Backend 型のコンパイラsuite
共通IRはLLVM IRという。
...ほかにもいくつものsub projectがある
eternal projectが山のようにLLVM frontendとしてコンパイラを用意している。しゅごい
上記の通り、RustもLLVMをコンパイラに組み込んでいる言語