Swiftのコンパイラは複数のフェーズにわけて実行され、そのうちもっとも大きなものが SILの最適化です。SIL Optimizer はSwift特有のすべての最適化を担うので、SwiftのエンジニアがSILを理解しておくことは極めて重要だと考えます。このトークでは、SILの基礎を簡単な例を用いて説明します。
SIL入門

Swift中間言語SILの話です
メルカリです

Swiftコンパイラを学ぶビギナーです
共有すると初学者に役に立つと思いました

なぜSILを学ぶのか
Typeシステムの仕組みを学ぶのに良いです
たくさんの最適化がこのフェーズで走っているので最適化に興味があれば良いスターティングポイントです
そして単に楽しいです

言語固有の表現になります

コンパイラがあり、パイプラインが

ソースファイルからASTを作り、SIL、IR、成果物に鳴っていく
SILGen

サンプルから

アウトプットします

見慣れないものがあるかもしれませんが全部理解しなくて良いです

構造だけで

どのような最適化がみていきます


オリジナルからいくつか変わりました

こうでも良いですよね

これがSILの中で起きていることです

最適化フラグによる差分です


これが最適化のマジックです


様々な最適化が走っています
まとめです
みなさんの中にはSILが何か理解できないと思っている人もいるかもしれませんが、理解できるものです。
そして私の考えでは、コンパイラの動きを理解するのは重要です
更に深いコンパイラの知識は有益です

参照情報


今日はありがとうございました。メルカリブースに居るのでどうぞお声掛け下さい
SILを知るといいよという話
— 荒木敦 (@applideveloper) 2018年3月1日
#tryswiftconf
SILを知るといいよという話
— 荒木敦 (@applideveloper) 2018年3月1日
#tryswiftconf
SILを知るといいよという話
— 荒木敦 (@applideveloper) 2018年3月1日
#tryswiftconf
