Процедурные макросы — одна из наиболее ожидаемых фич Rust. На данный момент процедурные макросы возможно писать только под нестабильную версию компилятора, хотя есть несколько контейнеров, вроде [syntex][1], позволяющие делать ограниченную кодогенерацию в рамках стабильного компилятора. Однако ситуацию это особо не облегчает, поскольку интерфейс к AST остаётся нестабильным, и, хотя авторы syntex стараются идти в ногу с ночными сборками, иногда случаются фейлы из-за изменений в структуре AST. В этом блог посте один из участников core team — Nick Cameron — поделился своим видением будущего процедурных макросов. Хотя пост полон технических подробностей по внутренностям компилятора, мне показалось, что хабрасообществу может быть интересно заглянуть немного за кулисы разработки Rust.
В этом посте я расскажу, как, по моему мнению, должны выглядеть процедурные макросы. Я уже рассказывал про синтаксис [в другом посте][2], а когда мы опубликуем API для процедурных макросов, то напишу пост и про него. Я уже описывал [целый ряд изменений][3] в системе макросов, так что здесь я в чём-то повторюсь (отчасти противореча прошлому посту), но раскрою больше подробностей. [Читать дальше →][4]
[1]:
https://crates.io/crates/syntex/
[2]:
http://ncameron.org/blog/macro-plans-syntax/
[3]:
http://ncameron.org/blog/macro-plans-overview/
[4]:
http://habrahabr.ru/post/274225/#habracut