Crystal 0.20.1 has been released!
As any release it includes numerous bugfixes, cool features and performance improvements - in 75 commits since 0.20.0.
Exciting Changes
p
andpp
now use pretty printing.finished
macro hook was added. It places it’s contents at the end of the program when all other types and methods are known.
class MyModel
MAPPING = {
id: Int32
}
macro extra_attributes(**values)
{% for key, value in values %}
{% MAPPING[key] = value %}
{% end %}
end
macro finished
JSON.mapping({{MAPPING}})
end
end
class MyModel
extra_attributes name: String, foo: Bool
end
# JSON mapping will have attribute id, name and foo.
- Local variables can now have type restrictions.
method_missing
hook can now define a method, this allows it to control whether it captures a block (see PR #3610)
class Foo
def add(method, &block : -> U) forall U
puts "added #{method} #{block}"
end
macro method_missing(call)
def {{call.name}}(&block : -> U) forall U
add({{call.name.stringify}}, &block)
end
end
end
Foo.new.foo { 1 } # => added foo #<Proc(Int32):0x1063173a0>
Foo.new.bar { 2 } # => added bar #<Proc(Int32):0x1063173b0>
Other Breaking Changes
- (breaking change)
Set#merge
as renamed toSet#merge!
- (breaking change)
Slice.new(size)
no longer works with non primitive integers and floats - (breaking change) The macro method
argify
was renamed tosplat
Thanks to everyone who supported this release through contributions, reviews and suggestions.
Crystal 0.20.1 has been released!
As any release it includes numerous bugfixes, cool features and performance improvements - in 75 commits since 0.20.0.
Exciting Changes
p
andpp
now use pretty printing.finished
macro hook was added. It places it’s contents at the end of the program when all other types and methods are known.method_missing
hook can now define a method, this allows it to control whether it captures a block (see PR #3610)Other Breaking Changes
Set#merge
as renamed toSet#merge!
Slice.new(size)
no longer works with non primitive integers and floatsargify
was renamed tosplat
Thanks to everyone who supported this release through contributions, reviews and suggestions.