Crystal Macros: Compile-Time Metaprogramming Without the Runtime Bill
Crystal replaces Ruby's runtime metaprogramming with compile-time macros. Here's how JSON::Serializable and a small getter-generating macro work, what they cost, and how to verify expansions.