Crystal 0.21.0 has been released!
As any release it includes numerous bugfixes, cool features and performance improvements - in 120 commits since 0.20.5.
Exciting Changes
- (breaking-change) The compiler now reuses previous macro run compilations so
{{ run(...) }}
is only re-run if the code changes - (breaking-change) Spec now uses
it { ... }
instead ofassert { ... }
- (breaking-change)
String
can now hold invalid UTF-8 byte sequences, and they produce a unicode replacement character when traversed. Also\xHH
escape sequences are now supported. - (breaking-change)
Zlib
was split intoFlate
,Gzip
andZlib
Slice
can be set toread_only
, that’s the default forString#to_slice
- added
HTTP::Multipart
andHTTP::FormData
- added lots of methods on
String
to strip and chop
Other Breaking Changes
- (breaking-change) Renamed
Set#merge!
toSet#concat
- (breaking-change)
Crypto::MD5
is nowDigest::MD5
- (breaking-change)
String#chop
is nowString#rchop
- (breaking-change)
String#to_slice
now returns a read-only Slice - (breaking-change) Removed
String#lchomp
. UseString#lchop
- (breaking-change) Octal escapes inside strings incorrectly produced a codepoint value instead of a byte value
- (breaking-change) Removed octal escape from char literals
Thanks to everyone who supported this release through contributions, reviews and suggestions.