はじめに RustでLLVM IRを出力するcrateとしてLLVM C APIのbindingであるllvm-sys.rsがあります。しかしllvm-sys.rsは非常に薄く、不足する機能は自力で提供してやらなければなりません。またドキュメントやテストもほとんどなく、初見の場合は既存の実装を参照しながら手探りでやっていく必要が出てきます。 同様にLLVM IRを出力するcrateとしてinkwellがあります。inkwellは便利なllvm-sys.rsのラッパーです。llvm-sys.rsで不足していた機能やドキュメントなどが大幅に追加されています。本記事ではそんな素敵なinkwellを紹介したいと思います。 inkwellの良いところ 他にもたくさんあるとは思いますが、個人的に良いなと思ったのは以下です。主に上2つについて簡単に説明できればと思います。私はllvm-sys.rsを用い
![RustでLLVM IRを出力するためのcrate「inkwell」について - Qiita](https://cdn-ak-scissors.b.st-hatena.com/image/square/1d98753c6a2e158aba28003f9120f41314842034/height=288;version=1;width=512/https%3A%2F%2Fqiita-user-contents.imgix.net%2Fhttps%253A%252F%252Fcdn.qiita.com%252Fassets%252Fpublic%252Fadvent-calendar-ogp-background-7940cd1c8db80a7ec40711d90f43539e.jpg%3Fixlib%3Drb-4.0.0%26w%3D1200%26mark64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZ3PTk3MiZoPTM3OCZ0eHQ9UnVzdCVFMyU4MSVBN0xMVk0lMjBJUiVFMyU4MiU5MiVFNSU4NyVCQSVFNSU4QSU5QiVFMyU4MSU5OSVFMyU4MiU4QiVFMyU4MSU5RiVFMyU4MiU4MSVFMyU4MSVBRWNyYXRlJUUzJTgwJThDaW5rd2VsbCVFMyU4MCU4RCVFMyU4MSVBQiVFMyU4MSVBNCVFMyU4MSU4NCVFMyU4MSVBNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZ0eHQtY29sb3I9JTIzM0EzQzNDJnR4dC1mb250PUhpcmFnaW5vJTIwU2FucyUyMFc2JnR4dC1zaXplPTU2JnM9N2RjNzU5NDJmYTEwNTg3MGQ4ZjIxOTM4NTk3MDUxMjk%26mark-x%3D120%26mark-y%3D96%26blend64%3DaHR0cHM6Ly9xaWl0YS11c2VyLWNvbnRlbnRzLmltZ2l4Lm5ldC9-dGV4dD9peGxpYj1yYi00LjAuMCZoPTc2Jnc9OTcyJnR4dD0lNDByY2hhc2VyNTMmdHh0LWNvbG9yPSUyMzNBM0MzQyZ0eHQtZm9udD1IaXJhZ2lubyUyMFNhbnMlMjBXNiZ0eHQtc2l6ZT0zNiZ0eHQtYWxpZ249bGVmdCUyQ3RvcCZzPWQwZjU3NTY3YWNiMzcwOWNkYWNkNDdlMTIxZWI2NDY4%26blend-x%3D120%26blend-y%3D500%26blend-mode%3Dnormal%26s%3D85bc477164d768bbb1ab058900c6ac39)