【VRChat/Udon】世界最速のC#コンパイラを開発した話
BRANK
はじめに今回、Rustを用いて世界最速のC#コンパイラを開発してみました。C#公式のコンパイラであるRoslynよりも最大11倍程度高速にコンパイルすることが可能です。ただし、.NETバックエンドは現在実装できておらず、UdonAssembly出力にのみ対応しています。!先に種明かしをしておくと、Roslynコンパイラはそもそも最速を目指しているというより、インクリメンタルなコンパイルや解析結果を利用したりすることに重きを置いているのでこの結果は必然寄りだったりします。なので、今回は最速を目指すために採用したコンパイラ自体の最適化手法について話していければと思います。コンパイラの名前(プロジェクト名)はMenSharpです。 try/catch等も含まれます。ただし、「ほぼ」と言ったのはUdonVMの制約上、unsafeやFileIO等の機能が実装できないからです。以下のように普通にUnity + C#のような書き心地で開発を進めることが出来ます。public class Test : MenSharpBehaviour { [UdonSynced] private int value; public async void Interact() { var list = new List<string> { "Hello", "world!" }; // async/await and try/catch are supported…