xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Categories:

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
Tags: macros, scala
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 32 comments