
Lead software engineer at @47deg. Previously @OVOTechTeam, @gdndevelopers, M3 and Infoscience. Author of Re-Engineering Legacy Software https://t.co/THeusmA5Pa

Slides for my "A deep dive into scalac" talk / 「scalacの深みへダイブ」の資料はこちらです #ScalaMatsuri slides.com/cb372/scalac-s…
2016-01-30 11:56:43
始まっております #ScalaMatsuri #sm_b pic.twitter.com/KnUvZ68IFR
2016-01-30 11:04:11


String interpolation による quasiquote 例。昔はこれがなくて苦労したものよ(おじいちゃん) #ScalaMatsuri #sm_b
2016-01-30 11:05:15
parser -> namer -> typer -> tree transformations #ScalaMatsuri #sm_b
2016-01-30 11:07:35
この辺のフェーズの詳細については scalac -Xshow-phases で知ることができます #ScalaMatsuri #sm_b
2016-01-30 11:08:59
typed AST - (icode) -> IR -(jvm)-> class file #ScalaMatsuri #sm_b
2016-01-30 11:10:03
ぶっちゃけ Typer が常に遅い。わかる。これ詳細もっと知りたいけど内部実装の都合でフェーズをもっと細かくするのは難しいです #ScalaMatsuri #sm_b
2016-01-30 11:12:51
scalac -Xshow-phasesで確認できるコンパイルフェーズで何処が一番おそいか? => typer phase ww #ScalaMatsuri #sm_b
2016-01-30 11:13:04
scalac に -Xprint:(フェーズ名) をつけてコンパイルするとその変換直後のコードを見ることができるっぽい #ScalaMatsuri #sm_b
2016-01-30 11:14:22
patmat phase は pattern expression を label を使った表現に落とし込む。 #ScalaMatsuri #sm_b
2016-01-30 11:14:33
scalacで-Xprint:patmatオプションなどをつけるとコンパイル中のコードが見れるんだ! #ScalaMatsuri #sm_b
2016-01-30 11:14:35
与太話。patmat は scala-virtualized からの移植で、pattern 式も for 式のように拡張可能にしようという目論見があったのですが、闇に葬られて高速化のためということになったっぽい。 #ScalaMatsuri #sm_b
2016-01-30 11:16:37