xeno_by (xeno_by) wrote,
xeno_by
xeno_by

Новый релиз macro paradise: теперь есть макро аннотации и можно использовать с 2.10

Всем привет! Сегодня хочу рассказать о том, что на днях выпустил новую версию macro paradise: http://scalamacros.org/news/2013/08/05/macro-paradise-2.0.0-snapshot.html. По ссылке есть детали, а здесь я просто вкратце остановлюсь на главных моментах:

1) Теперь paradise это плагин к компилятору Скалы, поддерживающий квазицитаты и макро аннотации для серии 2.10.x. Народ из Spire уже подтянулся использовать его для переписывания существующих макросов на квазицитаты. Остальной народ ждет ближайших выходных :)

2) Как обычно, в плане того, что касается макросов, можно рассчитывать на мою личную поддержку. После публикации Скалы 2.11 будет выпущен плагин для 2.11 и возможности из парадайза, которые не войдут в Скалу 2.11 (например, макро аннотации, если мы не успеем реализовать соответствующий Scala improvement process до заморозки кода), я буду поддерживать в 2.11.

3) Появились правильные макро аннотации, в которых можно: а) аннотировать любые определения, б) раскрываться в список определений, в) изменять объекты-компаньоны при раскрытии классов. Народ пока приценивается (хотя Simon Ochsenreither уже воплощает свою мечту о нормальных енумах), и, я уверен, мы придумаем интересные способы использования, но вот сразу один из несложных и одновременно полезных сценариев - реализация тайп-провайдеров для генерации статически типизированных оберток для внешних источников данных.

4) Продолжая традицию макросов приносить в мир добро, макро аннотации позволяют значительно упростить внутренние детали реализации компилятора и дать пользователям возможности для конфигурации стандартных возможностей языка. Похоже на то, что удастся объединить разрозненные куски кода, отвечающие на синтетические мемберы (кейс классы, геттеры/сеттеры для валов, и так далее) в единый механизм. Например, удалось практически полностью реализовать @kase классы на макросах. Будущие выпуски парадайза позволят полностью покрыть спецификацию, даже в самых ее крайних случаях.
Tags: macros, scala
Subscribe
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 10 comments