July 5th, 2014

glider

scala.meta: новая платформа для метапрограммирования Скалы

scala.reflect - наш публичный API, появившийся в Скале версии 2.10 - оказался весьма полезным на практике. Благодаря макросам, основанным на новом API, стало возможным реализовать такие библиотеки как async (DSL для упрощения работы с асинхронностью), pickling (статически генерируемые сериализаторы с отличным перфомансом), scala-blitz (ускорялка стандартных коллекций), а также улучшить ряд уже существующих решений в scalatest, Play!, parboiled и других популярных библиотеках.

Однако у scala.reflect есть и ряд недостатков, связанных с тем, что он был реализован на скорую руку на основе уже существующих абстракций компилятора Скалы. Время благодаря этом мы, конечно, сэкономили, но результат получился переусложненным, требующим знаний внутренней кухни компилятора и полностью привязанным к платформе scalac.

Основываясь на нашем опыте с scala.reflect и на отзывах пользователей макросов, мы спроектировали scala.meta - новую платформу для метапрограммирования Скалы, главной целью которой является легкость в использовании и портабельность относительно существующих (Scala 2, Intellij) и планирующихся (Scala 3) реализаций языка. Первый technology preview релиз scala.meta намечен на эту осень, а пока что предлагаю посмотреть видео нашей презентации с ScalaDays и обсудить дальнейшие планы в каментах.

Слайды: Easy Metaprogramming For Everyone!
Видео: Запись презентации на parleys.com