Seth Tisue

Seth Tisue (@SethTisue)
Lightbend

Seth Tisue has been active in the Scala community since 2008, in diverse venues such as the Scalawags podcast, the Northeast Scala Symposium, and various online fora. Since 2015, Seth has been a member of the Scala team at Lightbend. Before joining Lightbend, he was using Scala and Java to build the compiler and other tooling for NetLogo, a programming language for students, teachers, and scientists. At Lightbend, Seth has focused on the build and testing infrastructure around Scala (including the Scala community build), and on collaborating with MicroFocus to add Scala support to Fortify SCA, an industry-standard static security analysis tool. Seth’s interests are compilers and interpreters, functional programming, and open-source software.

Abstract

Compiler plugins — mysterious, difficult? Yet intriguing? Dark magic you're frightened, yet tempted, to wield? I'll cover what plugins can do, what existing plugins are popular, and how to write your own, based on one of several simple seed projects I'll present.

Details

popular (?) plugins include: * Scala.js, Scala Native * Zinc * kind-projector * scala-async, scala-continuations * (if this proposal is accepted I'll expand and refine this list, based on further research) what plugins can do: * inspect code at any stage of compilation * introspect on the process of compilation * alter code at any stage of compilation how they do it: * your plugin's skeleton comes from implementing the compiler plugin API. it's easiest to copy an existing plugin; I'll present several simple examples you can use as starting points * you can also use the whole reflection API, the whole compiler API, and anything else you want