crystal v0.20.1 Release Notes

Release Date: 2016-12-05 // over 7 years ago
    • (breaking change) Set#merge as renamed to Set#merge!
    • (breaking change) Slice.new(size) no longer works with non primitive integers and floats
    • (breaking change) The macro method argify was renamed to splat
    • ➕ Added pretty printing. The methods p and pp now use it. To get the old behaviour use puts obj.inspect
    • ➕ Added ArrayLiteral#[]=, TypeNode#constant, TypeNode#overrides? and HashLiteral#double_splat in macros
    • ➕ Added a finished macro hook that runs at the end of the program
    • ➕ Added support for declaring the type of a local variable
    • ➕ Added Slice.empty
    • Flags enums now have a none? method
    • IO::ByteFormat has now methods to encode/decode to/from a Slice
    • Spec: the line number passed to run a specific it block can now be inside any line of that block
    • The CallConvention attribute can now also be applied to a lib declaration, and all funs inside it will inherit it
    • The method_missing hook can now define a method, useful for specifying block arguments
    • 👌 Support double splat in macros ({{**...}})
    • 🛠 Some bug fixes