All Versions
118
Latest Version
Avg Release Cycle
46 days
Latest Release
511 days ago
Changelog History
Page 4
Changelog History
Page 4
-
v0.27.2 Changes
February 05, 2019 -
v0.27.1 Changes
January 30, 2019Language changes
- ๐ Allow trailing commas inside tuple types. (#7182, thanks @asterite)
Standard library
- ๐ (performance) Optimize generating
UUID
fromString
. (#7030, thanks @jgaskins) - ๐ (performance) Improve
SemanticVersion
operations. (#7234, thanks @j8r) - ๐ Fixed markdown inline code parsing. (#7090, thanks @MakeNowJust)
- ๐ Fixed inappropriate uses of
Time.now
. (#7155, thanks @straight-shoota) - ๐ Make
Nil#not_nil!
raiseNilAssertionError
. (#7330, thanks @r00ster91) - โ Add SemanticVersion to API docs. (#7003, thanks @Blacksmoke16)
- โ Add docs to discourage the use of
Bool#to_unsafe
other than for C bindings. (#7320, thanks @oprypin) - ๐จ Refactor
#to_s
to be independent of thename
method. (#7295, thanks @asterite)
Macros
- ๐ Fixed docs of
ArrayLiteral#unshift
. (#7127, thanks @Blacksmoke16) - ๐ Fixed
Annotation#[]
to acceptString
andSymbol
as keys. (#7153, thanks @MakeNowJust) - ๐ Fixed
NamedTupleLiteral#[]
to raise a compile error for invalid key type. (#7158, thanks @MakeNowJust) - ๐ Fixed
getter
/property
macros to work properly withBool
types. (#7313, thanks @Sija) - โ Add
read_file
macro method. (#6967, #7094, thanks @Sija, @woodruffw) - โ Add
StringLiteral#count
. (#7239, thanks @Blacksmoke16)
Numeric
- ๐ Fixed scale issues when dividing
BigDecimal
. (#7218, thanks @Sija) - ๐ Allow underscores in the
String
passed toBig*
constructors. (#7107, thanks @Sija) - โ Add conversion methods and docs to
Complex
. (#5440, thanks @Sija) - โ Add specs for
Int128
,UInt128
. (#7173, thanks @bcardiff) - Add unsafe number ops
value.to_X!
/T.new!
/Int#&**
. (#7226, thanks @bcardiff) - โ Add overflow detection with preview opt-in. (#7206, thanks @bcardiff)
Text
- ๐ Fixed
ECR
location error reported. (#7137, thanks @MakeNowJust) - โ Add docs to ECR. (#7121, thanks @KCErb)
- ๐จ Refactor
String#to_i
to avoid future overflow. (#7172, thanks @bcardiff)
Collections
- ๐ Fixed docs example in
Hash#from
. (#7210, thanks @r00ster91) - ๐ Fixed docs links of
Enumerable#chunks
andIterator#chunk
. (#6941, thanks @r00ster91) - โ Remove implicit null skip from
Hash
toJSON
serialization. (#7053, thanks @MakeNowJust) - โ Add
Iterator#slice_after
. (#7146, thanks @asterite) - โ Add
Iterator#slice_before
. (#7152, thanks @asterite) - Add
Iteratory#slice_when
andIterator#chunk_while
. (#7159, thanks @asterite) - โ Add
Enumerable#to_h(&block)
. (#7150, thanks @Sija) - โ Add
Enumerable#one?
. (#7166, thanks @asterite) - โ Add several
Enumerable
,Iterator
andArray
overloads that accept a pattern. (#7174, thanks @asterite) - โ Add docs to hash constructors. (#6923, thanks @KCErb)
Serialization
- โ Add conversion between JSON and YAML. (#7232, thanks @straight-shoota)
- Standardize
#as_T
/#as_T?
methods betweenJSON::Any
/YAML::Any
. (#6556, thanks @j8r) - โ Add
Set#from_yaml
. (#6310, thanks @kostya)
Time
- ๐ Fixed
Time::Span
initializer andsleep
for big seconds. (#7221, thanks @asterite) - ๐ Fixed docs to show proper use of parse. (#7035, thanks @jwoertink)
- โ Add missing
Float#weeks
method similar toInt#weeks
. (#7165, thanks @vlazar)
Files
- ๐ Fix
mkstemps
support on aarch64. (#7300, thanks @silmanduin66) - Validate LibC error codes in specs involving Errno errors. (#7087, thanks @straight-shoota)
- โ Add microsecond precision to
System::File.utime
(Unix). (#7156, thanks @straight-shoota) - โ Add missing tempfile cleanup in specs. (#7250, thanks @bcardiff)
- โ Add docs for file open modes. (#6664, thanks @r00ster91)
Networking
- ๐ Fixed
HTTP::Client
edge case of exception during in TLS initialization. (#7123, thanks @asterite) - ๐ Fixed
OpenSSL::SSL::Error.new
to not raiseErrno
. (#7068, thanks @straight-shoota) - ๐ Fixed
URI
encoding inStaticFileHandler::DirectoryListing
. (#7072, thanks @Sija) - โ Add MIME registry. (#5765, #7079, #7080, thanks @straight-shoota, @Sija)
- โ Add
MIME::MediaType
for parsing mime media types. (#7077, thanks @straight-shoota) - โ Add support for 100-continue in
HTTP::Server::Response
. (#6912, thanks @jreinert) - โ Add support for creating sockets from raw file descriptors. (#6894, thanks @myfreeweb)
- โ Add SNI support for OpenSSL. (#7291, thanks @bararchy)
- ๐ Improve
HTTP::Server
docs. (#7251, thanks @straight-shoota) - ๐จ Refactor
OpenSSL
specs to reduce chances of failing. (#7202, thanks @bcardiff)
Crypto
- โ Add
OpenSSL::Cipher#authenticated?
to see if the cipher supports aead. (#7223, thanks @danielwestendorf)
System
- ๐ Fixed inline ASM when compiling for ARM. (#7041, thanks @omarroth)
- Implement
Crystal::System
for Win32. (#6972, thanks @markrjr) - โ Add
Errno#errno_message
getter. (#6702, thanks @r00ster91)
Spec
- Detect nesting
it
andpending
at run-time. (#7297, thanks @MakeNowJust)
Compiler
- ๐ Fixed how
LLVM::Type.const_int
emitInt128
literals. (#7135, thanks @bcardiff) - ๐ Fixed ICE related to named tuples. (#7163, thanks @asterite)
- ๐ Fixed automatic casting for private top-level methods. (#7310, thanks @asterite)
- Give proper error if defining initialize inside enum, allow
Enum.new
. (#7266, thanks @asterite) - Give proper error when trying to access instance variable of union type. (#7194, thanks @asterite)
- Give proper error when trying to instantiate Module. (#6735, thanks @r00ster91)
- Give proper error related to named arguments. (#7288, thanks @asterite)
- ๐ Parse required comma between block args. (#7343, thanks @asterite)
- ๐ Improve inference in recursion that involves blocks. (#7161, thanks @asterite)
- โ Add locations to all expanded macro arguments. (#7008, thanks @MakeNowJust)
- Turn a not compiler specific error while requiring into ICE. (#7208, thanks @MakeNowJust)
- โ Remove old
nil?
error on pointer types. (#7180, thanks @asterite) - ๐ Improve too big tuple and named tuple error message. (#7131, thanks @r00ster91)
- โช Workaround buggy offset debug info values. (#7335, thanks @bcardiff)
- ๐จ Refactor extract helper methods to emit
Float32
,Float64
values. (#7134, thanks @bcardiff) - ๐จ Refactor filename resolution logic out of
interpret_run
. (#7051, thanks @Sija) - ๐จ Refactor internals regarding overflow. (#7262, thanks @bcardiff)
- ๐จ Refactor
Crystal::Codegen::Target
and consolidate triple handling. (#7282, #7317, thanks @RX14, @bcardiff)
Tools
- โก๏ธ Update README template. (#7118, thanks @mamantoha)
- Capitalise Crystal in CLI output. (#7224, thanks @dwightwatson)
Formatter
- ๐ Fixed formatting of multiline literal elements. (#7048, thanks @MakeNowJust)
- ๐ Fixed formatting of heredoc with interpolations. (#7184, thanks @MakeNowJust)
- ๐ Fixed prevent conflict between nested tuple types and macro expressions. (#7097, thanks @MakeNowJust)
- ๐ Fixed format when
typeof
appears inside generic type. (#7176, thanks @asterite) - ๐ Fixed format of newline after
&.foo
in call. (#7240, thanks @MakeNowJust) - Honor same behaviour for single or multiple file arguments. (#7144, thanks @straight-shoota)
- ๐จ Refactor remove quotes from overflow symbols in formatter spec. (#6968, thanks @r00ster91)
- Major rework of
crystal tool format
command. (#7257, thanks @MakeNowJust)
Doc generator
- ๐ (security) Prevent XSS via args. (#7056, thanks @MakeNowJust)
- ๐ Fixed generation of toplevel. (#7063, thanks @MakeNowJust)
- ๐ Fixed display of double splat and block arg. (#7029, #7031, thanks @MakeNowJust)
- ๐ Fixed keep trailing spaces in macros. (#7099, thanks @MakeNowJust)
- ๐ Fixed avoid showing subtypes of aliased type. (#7124, thanks @asterite)
- ๐ Fixed style of methods when hovering. (#7022, thanks @r00ster91)
- ๐ Fixed duplicate
source_link
field. (#7033, thanks @bcardiff) - ๐ Fixed missing keywords in
Doc::Highlighter
. (#7054, thanks @MakeNowJust) - โ Add
--format
option to docs command. (#6982, thanks @mniak)
Others
- CI improvements and housekeeping. (#7018, #7043, #7133, #7139, #7230, #7227, #7263, thanks @bcardiff)
- CI split formatting check. (#7228, thanks @bcardiff)
- ๐ Depend on standard variable to let the user define the build date. (#7186, thanks @eli-schwartz)
- Reorganize community section in README, add forum. (#7235, thanks @straight-shoota)
- ๐ Fixed docs grammar and typos. (#7034, #7242, #7331, thanks @r00ster91, @girng)
- ๐ Improve samples. (#6454, thanks @r00ster91)
- ๐ Fixed 0.27.0 CHANGELOG. (#7024, thanks @arcage)
- โก๏ธ Update ISSUE_TEMPLATE to include forum. (#7301, thanks @straight-shoota)
- โก๏ธ Update LICENSE's copyright year. (#7246, thanks @matiasgarciaisaia)
-
v0.27.0 Changes
November 01, 2018Language changes
- (breaking-change) Disallow comma after newline in argument list. (#6514, thanks @asterite)
Macros
- โ Add
Generic#resolve
andGeneric#resolve?
macro methods. (#6617, thanks @asterite)
Standard library
- ๐ Fixed
v1
,v2
,v3
,v4
,v5
methods ofUUID
. (#6952, thanks @r00ster91) - ๐ Fixed multiple docs typos and phrasing in multiple places. (#6778, #6963, thanks @r00ster91)
- ๐ Fixes
Pointer
/UInt
subtraction. (#6994, thanks @damaxwell) - โ Add stack overflow detection. (#6928, #6995, thanks @damaxwell)
- โ Add caller file and line to
Nil#not_nil!
. (#6712, thanks @yeeunmariakim) - ๐ Restrict
Enum#parse
/Enum#parse?
toString
arguments. (#6654, thanks @vladfaust) - ๐จ Refactor and unify printing exceptions from within fibers. (#6594, thanks @Sija)
- ๐ Improve docs on properties generated by
property?
. (#6682, thanks @epergo) - โ Add docs to top level namespace constants. (#6971, thanks @r00ster91)
Macros
- ๐ Fix typos in
StringLiteral#gsub
and#tr
errors. (#6925, thanks @r00ster91)
Numeric
- (breaking-change) Disallow
rand
with zero value. (#6686, thanks @oprypin) - (breaking-change) Let
==
and!=
compare the values instead of bits when dealing with signed vs unsigned integers. (#6689, thanks @asterite) - ๐ Fixed
Int#downto
with unsigned int. (#6678, thanks @gmarcais) - โ Add wrapping arithmetics operators
&+
&-
&*
. (#6890, thanks @bcardiff) - โ Add floor divisions operator
Int#//
andFloat#//
. (#6891, thanks @bcardiff) - โ Add random support for
BigInt
. (#6687, thanks @oprypin) - โ Add docs related to
Float::Printer::*
. (#5438, thanks @Sija)
Text
- โ Add
String::Builder#chomp!
returns self. (#6583, thanks @Sija) - โ Add
:default
to colorize and documentColorRGB
,Color256
. (#6427, thanks @r00ster91) - โ Add
String::Formatter
support forc
flag and improve docs. (#6758, thanks @r00ster91)
Collections
- (breaking-change) Replace
Indexable#at
with#fetch
. RemoveHash#fetch(key)
as alias ofHash#[]
. (#6296, thanks @AlexWayfer) - โ Add
Hash/Indexable#dig/dig?
. (#6719, thanks @Sija) - โ Add
Iterator.chain
to chain array of iterators. (#6570, thanks @xqyww123) - โ Add
NamedTuple#to_h
over empty tuples. (#6628, thanks @icyleaf) - โก๏ธ Optimize
Indexable#join
when all elements are strings. (#6635, thanks @asterite) - โก๏ธ Optimize
Array#skip
. (#6946, thanks @asterite)
Serialization
- ๐ Fixed
YAML::Schema::FailSafe.parse
andparse_all
. (#6790, thanks @r00ster91) - ๐ Fixed order of
xmlns
and prefix inXML::Builder#namespace
. (#6743, thanks @yeeunmariakim) - ๐ Fixed
CSV.build
quoting ofChar
andSymbol
. (#6904, thanks @maiha) - ๐ Fixed docs for
JSON::Serializable
. (#6950, thanks @Heaven31415) - โ Add
XML::Attributes#delete
. (#6910, thanks @joenas) - โ Add ability to quote values always in
CSV.build
. (#6723, thanks @maiha) - ๐จ Refactor how empty properties are handled in
JSON::Serializable
andYAML::Serializable
. (#6539, thanks @r00ster91)
Time
- (breaking-change) Rename
Time#epoch
toTime#to_unix
. Also#epoch_ms
to#to_unix_ms
, and#epoch_f
to#to_unix_f
. (#6662, thanks @straight-shoota) - ๐ Fixed spec for
Time::Location.load_local
withTZ=nil
. (#6740, thanks @straight-shoota) - โ Add support for ISO calendar week to
Time
. (#6681, thanks @straight-shoota) - โ Add
Time::Format
support for%G
,%g
,%V
. (#6681, thanks @straight-shoota) - โ Add
Time::Location
loader support for Windows. (#6363, thanks @straight-shoota) - Add
Time#to_local_in
to change time zone while keeping wall clock. (#6572, thanks @straight-shoota) - Add
Time::UNIX_EPOCH
and drop privateUNIX_SECONDS
constant. (#6908, thanks @j8r) - ๐ Change
Time::DayOfWeek
to ISO ordinal numbering based onMonday = 1
. (#6555, thanks @straight-shoota) - ๐จ Refactor time specs. (#6574, thanks @straight-shoota)
- โ Add docs for singular method aliases, add
Int#microsecond
alias. (#6297, thanks @Sija)
Files
- (breaking-change) Remove
Tempfile
. UseFile.tempfile
orFile.tempname
. (#6485, thanks @straight-shoota) - ๐ Fixed missing closed status check of FDs when creating a subprocess. (#6641, thanks @Timbus)
- ๐ Fixed
ChecksumReader.write
error message. (#6889, thanks @r00ster91) - โ Add
File#delete
,Dir#tempdir
and improveFile
docs. (#6485, thanks @straight-shoota) - โ Add
File#fsync
to flush all data written into the file to the disk device. (#6793, thanks @carlhoerberg) - โ Add
DEVNULL
to docs. (#6642, thanks @r00ster91) - ๐ Improve checks for FreeBSD version due to breaking API changes. (#6629, thanks @myfreeweb)
- ๐ Improve performance of
Zlib::Reader
,Gzip::Reader
andFlate::Reader
by includingIO::Buffered
. (#6916, thanks @asterite) - ๐จ Refactor
Crystal::System::FileDescriptor
to use@fd
ivar directly. (#6703, thanks @straight-shoota) - Refactor
{Zlib,Gzip,Flate}::Reader#unbuffered_rewind
to usecheck_open
. (#6958, thanks @Sija)
Networking
- (breaking-change) Remove deprecated alias
HTTP::Server#bind_ssl
. UseHTTP::Server#bind_tls
. (#6699, thanks @straight-shoota) - โ Add
Socket::Address#pretty_print
and#inspect
. (#6704, thanks @straight-shoota) - โ Add
Socket::IPAddress
loopback, unspecified and broadcast methods/constants. (#6710, thanks @straight-shoota) - Fixed
Socket#reuse_port?
ifSO_REUSEPORT
is not supported. (#6706, thanks @straight-shoota) - ๐ Fixed
TCPServer
handling ofreuse_port
. (#6940, thanks @RX14) - โ Add docs to demonstrate parameters for
HTTP::Client
. (#5145, thanks @HCLarsen) - โ Add docs examples to
Socket::Server#accept
. (#6705, thanks @straight-shoota) - ๐จ Refactor
socket_spec.cr
into separate files. (#6700, thanks @straight-shoota) - ๐จ Refactor specs of
HTTP::Client
to remove inheritance for test server. (#6909, thanks @straight-shoota) - ๐ Improve specs for
HTTP::Server#close
. (#5958, thanks @straight-shoota) - ๐ Improve specs for socket. (#6711, thanks @straight-shoota)
Crypto
- ๐ Fixed OpenSSL bindings to work with LibreSSL. (#6917, thanks @LVMBDV)
- โ Add support for OpenSSL 1.1.1. (#6738, thanks @ysbaddaden)
Concurrency
- ๐ Improve POSIX threads integration regarding locking, error and resource management. (#6944, thanks @ysbaddaden)
- โ Remove unintended public methods from
Channel
. (#6714, thanks @asterite) - ๐จ Refactor
Fiber
/Scheduler
to isolate responsibilities. (#6897, thanks @ysbaddaden) - ๐จ Refactor specs that relied on
Fiber.yield
behavior. (#6953, thanks @ysbaddaden)
System
- ๐ Fixed fork and signal child handlers. (#6426, thanks @ysbaddaden)
- ๐ Use blocking
IO
on a TTY if it can't be reopened. (#6660, thanks @Timbus) - ๐จ Refactor
Process
in preparation for Windows support. (#6744, thanks @RX14)
Spec
- ๐ Allow
pending
to be used without blocks. (#6732, thanks @tswicegood) - โ Add
be_empty
expectation. (#6614, thanks @mamantoha) - โ Add specs for expectation methods. (#6512, thanks @rodrigopinto)
Compiler
- ๐ Fixed don't "ambiguous match" if there's an exact match. (#6618, thanks @asterite)
- ๐ Fixed allow annotations inside enums. (#6713, thanks @asterite)
- ๐ Fixed
super
inside macros will honor arguments. (#6638, thanks @asterite) - ๐ Fixed guessed ivar type from splat arguments. (#6648, thanks @MakeNowJust)
- ๐ Fixed
ASTNode#to_s
of non-unary operator call without argument. (#6538, thanks @MakeNowJust) - ๐ Fixed
ASTNode#to_s
for multiline macro expression. (#6666, thanks @MakeNowJust) - ๐ Fixed
ASTNode#to_s
for{% verbatim do %} ... {% end %}
. (#6665, thanks @MakeNowJust) - ๐ Fixed empty case statement normalization. (#6915, thanks @straight-shoota)
- ๐ Fixed codegen of tuple elements with unreachable elements. (#6659, thanks @MakeNowJust)
- ๐ Fixed parsing of
//
corner cases. (#6927, thanks @bcardiff) - ๐ Fixed recursive block expansion check for non
ProcNotation
restriction. (#6932, thanks @MakeNowJust) - ๐ Fixed corner case of expressions not typed on main phase but typed on cleanup phase. (#6720, thanks @MakeNowJust)
- ๐ Improve error traces regarding
return
,next
andbreak
. (#6633, thanks @asterite) - โ Add resolve generics typenodes in macros. (#6617, thanks @asterite)
- โ Add support for multiple output values in inline asm. (#6680, thanks @RX14)
- ๐ Improve parsing of
asm
operands. (#6688, thanks @RX14) - ๐จ Refactor rescue block codegen for Windows. (#6649, thanks @RX14)
Tools
- ๐ Improve installation section in README template. (#6914, #6942, thanks @r00ster91)
- ๐ Improve contributors section in README template. (#7005, thanks @r00ster91)
Formatter
- ๐ Fixed formatting of
{% verbatim do %} ... {% end %}
outside macro. (#6667, thanks @MakeNowJust) - ๐ Fixed formatting of
//
corner cases. (#6927, thanks @bcardiff) - ๐ Improve formatting of
asm
operands. (#6688, thanks @RX14)
Doc generator
- โ Add support for comments after
:nodoc:
marker. (#6627, thanks @Sija) - ๐ Fixed browser performance issue with blur filter. (#6764, thanks @girng)
- Accessibility improvement in search field. (#6926, thanks @jodylecompte)
Others
- CI improvements and housekeeping. (#6658, #6739, #6930, thanks @bcardiff, @RX14)
- โ Add
VERSION
file and support for specifying the build commit. (#6966, thanks @bcardiff) - โ Add support for specifying the build date. (#6788, thanks @peterhoeg)
- โก๏ธ Update Contributing section in
README.md
. (#6911, thanks @r00ster91)
-
v0.26.1 Changes
August 27, 2018Language changes
- (breaking-change) Make
self
to be eager evaluated when including modules. (#6557, thanks @bcardiff)
Macros
- โ Add
accepts_block?
macro method toDef
. (#6604, thanks @willhbr)
Standard library
Macros
- ๐ Fixed
Object#def_hash
can receive symbols. (#6531, thanks @Sija)
Collections
- Add
Hash#transform_keys
andHash#transform_values
. (#4385, thanks @deepj)
Serialization
- ๐ Fixed
JSON::Serializable
andYAML::Serializable
clashing with custom initializers. (#6458, thanks @kostya)
Time
- ๐ Fixed docs for
Time::Format
. (#6578, thanks @straight-shoota)
Files
- ๐ Fixed zlib handling of buffer error. (#6610, thanks @asterite)
Networking
- ๐ (deprecate)
HTTP::Server#bind_ssl
in favor ofHTTP::Server#bind_tls
. (#6551, thanks @bcardiff) - โ Add tls scheme to
HTTP::Server#bind
. (#6533, thanks @straight-shoota) - ๐ Fixed
HTTP::Server
crash with self-signed certificate. (#6590, thanks @bcardiff) - ๐จ Refactor
HTTP::Server
specs to use free ports. (#6530, thanks @straight-shoota)
System
- ๐ Improve
STDIN
/STDOUT
/STDERR
handling to avoid breaking other programs. (#6518, thanks @Timbus)
Spec
- ๐ Fixed
DotFormatter
to flush after every spec. (#6562, thanks @asterite) - โ Add support for Windows. (#6497, thanks @RX14)
Compiler
- ๐ Fixed evaluate yield expressions in macros. (#6587, thanks @asterite)
- ๐ Fixed presence check of named argument via external name. (#6560, thanks @asterite)
- ๐ Fixed parser error on
break when
. (#6509, thanks @asterite) - ๐ Fixed
~
methods are now able to be called asfoo.~
. (#6541, thanks @MakeNowJust) - ๐ Fixed parsing newline after macro control expression. (#6607, thanks @asterite)
- ๐จ Refactor use enum instead of hardcoded string values for emit kinds. (#6515, thanks @bew)
Tools
Formatter
- ๐ Fixed formatting of newline before
&.method
in call. (#6535, thanks @MakeNowJust) - ๐ Fixed formatting of empty heredoc. (#6567, thanks @MakeNowJust)
- ๐ Fixed formatting of string literal in interpolation. (#6568, thanks @MakeNowJust)
- ๐ Fixed formatting of comments in case when. (#6595, thanks @asterite)
Doc generator
- โ Add Menlo font family and fix ordering. (#6602, thanks @slice)
Playground
- ๐ Fixed internal link. (#6596, thanks @omarroth)
Others
- CI improvements and housekeeping. (#6550, #6612, thanks @bcardiff)
- โ Add
pkg-config
as Linux package dependency. (distribution-scripts#16, thanks @bcardiff)
- (breaking-change) Make
-
v0.26.0 Changes
August 09, 2018Language changes
- (breaking-change) Revert do not collapse unions for sibling types. (#6351, thanks @asterite)
- (breaking-change) Constant lookup context in macro is now lexical. (#5354, thanks @MakeNowJust)
- (breaking-change) Evaluate instance var initializers at the metaclass level (ie: disallow using
self
). (#6414, thanks @asterite) - (breaking-change) Add
//
operator parsing. NB: No behaviour is assigned to this operator yet. (#6470, thanks @bcardiff) - Add
&+
&-
&*
&**
operators parsing. NB: No behaviour is assigned to these operators yet. (#6329, thanks @bcardiff) - โ Add support for empty
case
withoutwhen
. (#6367, thanks @straight-shoota)
Macros
Standard library
- ๐ Fix docs for
Pointer
. (#6494, thanks @fxn) - ๐ Fix docs of
UUID
enums. (#6496, thanks @r00ster91)
Numeric
- ๐ Fixed
Random#rand(Range(Float, Float))
to returnFloat
. (#6445, thanks @straight-shoota) - โ Add docs of big module overloads. (#6336, thanks @laginha87)
Text
- (breaking-change)
String#from_utf16(pointer : Pointer(UInt16))
returns now{String, Pointer(UInt16)}
. (#6333, thanks @straight-shoota) - โ Add support for unicode 11.0.0. (#6505, thanks @asterite)
- Add an optional argument to
String#check_no_null_byte
to customize error message. (#6333, thanks @straight-shoota) - โ Add
ECR.render
for rendering directly asString
. (#6371, thanks @straight-shoota) - ๐ Fix docs for
Char
(#6487, thanks @r00ster91)
Collections
- โ Add docs for
StaticArray
. (#6404, #6488, thanks @straight-shoota, @r00ster91, @hinrik) - ๐จ Refactor
Array#concat
. (#6493, thanks @fxn)
Serialization
- (breaking-change) Add a maximum nesting level to prevent stack overflow on
YAML::Builder
andJSON::Builder
. (#6322, thanks @asterite) - ๐ Fixed compatibility for libyaml 0.2.1 regarding document end marker
...
. (#6287, thanks @straight-shoota) - โ Add methods and options for pull parsing or hybrid parsing to
XML::Reader
. (#5740, #6332, thanks @felixbuenemann) - ๐ Fixed docs for
JSON::Any
,JSON::Serialization
andYAML::Serialization
. (#6460, #6491, thanks @delef, @bmulvihill)
Time
- (breaking-change) Make location a required argument for
Time.parse
. (#6369, thanks @straight-shoota) - ๐ Add
Time.parse!
,Time.parse_utc
,Time.parse_local
. (#6369, thanks @straight-shoota) - ๐ Fix docs comment missing (#6387, thanks @faustinoaq)
Files
- (breaking-change) Remove
File.each_line
method that returns an iterator. UseIO#each_line
. (#6301, thanks @asterite) - ๐ Fixed
File.join
when path separator is a component argument. (#6328, thanks @icyleaf) - ๐ Fixed
Dir.glob
can now list broken symlinks. (#6466, thanks @straight-shoota) - โ Add
File
andDir
support for Windows. (#5623, thanks @RX14)
Networking
- (breaking-change) Drop
HTTP::Server#tls
in favor ofHTTP::Server#bind_ssl
. (#5960, thanks @straight-shoota) - (breaking-change) Rename alias
HTTP::Handler::Proc
toHTTP::Handler::HandlerProc
. (#6453, thanks @jwoertink) - ๐ Fixed
Socket#accept?
base implementation. (#6277, thanks @ysbaddaden) - ๐ Fixed performance issue due to unbuffered
IO
read.IO#sync
only affect writes, introduceIO#read_buffering?
. (#6304, #6474, thanks @asterite, @bcardiff) - ๐ Fixed handling of closed state in
HTTP::Server::Response
. (#6477, thanks @straight-shoota) - ๐ Fixed change encoding name comparison to be case insensitive for UTF-8. (#6355, thanks @asterite)
- ๐ Fixed support for quoted charset value in HTTP. (#6354, thanks @asterite)
- ๐ Fixed docs regarding udp example on
Socket::Addrinfo
. (#6388, thanks @faustinoaq) - ๐ Fixed
HTTP::Client
will setconnection: close
header on one-shot requests. (#6410, thanks @asterite) - ๐ Fixed
OpenSSL::Digest
for multibyte strings. (#6471, thanks @RX14) - ๐ Fixed missing
Host
header when usingHTTP::Client#exec
. (#6481, thanks @straight-shoota) - โ Add
HTTP::Server#bind(URI|String)
that infers protocol from scheme. (#6500, thanks @straight-shoota) - โ Add
HTTP::Params.new
andHTTP::Params#empty?
. (#6241, thanks @icyleaf) - โ Add support for multiple Etags in
If-None-Match
header forHTTP::Request
andHTTP::StaticFileHandler
. (#6219, thanks @straight-shoota) - โ Add IDNs normalization to punycode in
OpenSSL::SSL::Socket
. (#6306, thanks @paulkass) - โ Add
application/wasm
to the default MIME types ofHTTP::StaticFileHandler
. (#6377, thanks @MakeNowJust) - โ Add
URI#absolute?
andURI#relative?
. (#6311, thanks @mamantoha)
Crypto
- ๐ Fixed
Crypto::Bcrypt::Password#==
was hidingReference#==(other)
. (#6356, thanks @straight-shoota)
Concurrency
- ๐ Fixed
Atomic#swap
with reference types. (#6428, thanks @Exilor)
System
- ๐ Fixed raise
Errno
ifProcess.new
fails to exec. (#6501, thanks @straight-shoota, @lbguilherme) - โ Add support for
WinError
UTF-16 string messages. (#6442, thanks @straight-shoota) - ๐จ Refactor platform specifics from
ENV
toCrystal::System::Env
and implement for Windows. (#6333, #6499, thanks @straight-shoota)
Spec
Compiler
- ๐ Fixed named arguments expansion from double splat clash with local variable names. (#6378, thanks @asterite)
- ๐ Fixed auto assigned ivars arguments expansions when clash with keywords. (#6379, thanks @asterite)
- ๐ Fixed resulting type of union of tuple metaclasses. (#6342, thanks @asterite)
- ๐ Fixed ICE when using unbound type parameter inside generic type. (#6292, thanks @asterite)
- ๐ Fixed ICE when using unions of metaclasses. (#6307, thanks @asterite)
- ๐ Fixed ICE related to literal type guessing and generic types hierarchy. (#6341, thanks @asterite)
- ๐ Fixed ICE related to
not
and inlinable values. (#6452, thanks @asterite) - ๐ Fixed rebind variables type in while condition after analyzing its body. (#6295, thanks @asterite)
- ๐ Fixed corner cases regarding automatic casts and method instantiation. (#6284, thanks @asterite)
- ๐ Fixed parsing of
\A
(and others) inside%r{...}
inside macros. (#6282, thanks @asterite) - ๐ Fixed parsing of of named tuple inside generic type arguments. (#6413, thanks @asterite)
- ๐ Fixed disallow cast from module class to virtual metaclass. (#6320, thanks @asterite)
- ๐ Fixed disallow
return
inside a constant's value. (#6347, thanks @asterite) - ๐ Fixed debug info for closured self. (#6346, thanks @asterite)
- ๐ Fixed parsing error of newline before closing macro. (#6382, thanks @asterite)
- ๐ Fixed missing error if constant has
NoReturn
type. (#6411, thanks @asterite) - ๐ Fixed give proper error when doing sizeof uninstantiated generic type. (#6418, thanks @asterite)
- ๐ Fixed private aliases at top-level are now considered private. (#6432, thanks @asterite)
- ๐ Fixed setters with multiple arguments as now disallowed. (#6324, thanks @maxfierke)
- ๐ Fixed type var that resolves to number in restriction didn't work. (#6504, thanks @asterite)
- โ Add support for class variables in generic classes. (#6348, thanks @asterite)
- โ Add support for exception handling in Windows (SEH). (#6419, thanks @RX14)
- ๐จ Refactor codegen of binary operators. (#6330, thanks @bcardiff)
- ๐จ Refactor use
JSON::Serializable
instead ofJSON.mapping
. (#6308, thanks @kostya) - ๐จ Refactor
Crystal::Call#check_visibility
and extract type methods. (#6484, thanks @asterite, @bcardiff) - ๐ Change how metaclasses are shown. Use
Foo.class
instead ofFoo:Class
. (#6439, thanks @RX14)
Tools
- Flatten project structure created by
crystal init
. (#6317, thanks @straight-shoota)
Formatter
- ๐ Fixed formatting of
{ {1}.foo, ...}
like expressions. (#6300, thanks @asterite) - ๐ Fixed formatting of
when
with numbers. Use right alignment only if all are number literals. (#6392, thanks @MakeNowJust) - ๐ Fixed formatting of comment in case's else. (#6393, thanks @MakeNowJust)
- ๐ Fixed code fence when language is not crystal will not be formatted. (#6424, thanks @asterite)
Doc generator
- โ Add line numbers at link when there are duplicated filenames in "Defined in:" section. (#6280, #6489, thanks @r00ster91)
- ๐ Fix docs navigator not scrolling into open type on page load. (#6420, thanks @soanvig)
Others
- ๐ Fixed
system_spec
does no longer emit errors messages on BSD platforms. (#6289, thanks @jcs) - ๐ Fixed compilation issue when running spec against compiler and std together. (#6312, thanks @straight-shoota)
- โ Add support for LLVM 6.0. (#6381, #6380, #6383, thanks @felixbuenemann)
- CI improvements and housekeeping. (#6313, #6337, #6407, #6408, #6315, thanks @bcardiff, @MakeNowJust, @r00ster91, @maiha)
-
v0.25.1 Changes
June 27, 2018Standard library
Macros
- ๐ Fixed
Object.delegate
is now able to be used with[]=
methods. (#6178, thanks @straight-shoota) - ๐ Fixed
p!
pp!
are now able to be used with tuples. (#6244, thanks @bcardiff) - โ Add
#copy_with
method to structs generated byrecord
macro. (#5736, thanks @chris-baynes) - โ Add docs for
ArrayLiteral#push
and#unshift
. (#6232, thanks @MakeNowJust)
Collections
- โ Add docs for
Indexable#zip
and#zip?
methods. (#5734, thanks @rodrigopinto)
Serialization
- โ Add
#dup
and#clone
forJSON::Any
andYAML::Any
. (6266, thanks @asterite) - โ Add docs example of nesting mappings to
YAML.builder
. (#6097, thanks @kalinon)
Time
- ๐ Fixed docs regarding formatting and parsing
Time
. (#6208, #6214, thanks @r00ster91 and @straight-shoota) - ๐ Fixed
Time
internals for future Windows support. (#6181, thanks @RX14) - โ Add
Time::Span#microseconds
,Int#microseconds
andFloat#microseconds
. (#6272, thanks @asterite) - โ Add specs. (#6174, thanks @straight-shoota)
Files
- ๐ Fixed
File.extname
edge case. (#6234, thanks @bcardiff) - ๐ Fixed
FileInfo#flags
return value. (#6248, thanks @fgimian)
Networking
- ๐ Fixed
IO#write(slice : Bytes)
won't write information if slice is empty. (#6269, thanks @asterite) - ๐ Fixed docs regarding
HTTP::Server#bind_tcp
method. (#6179, #6233, thanks @straight-shoota and @MakeNowJust) - โ Add Etag support in
HTTP::StaticFileHandler
. (#6145, thanks @emq)
Misc
- ๐ Fixed
mmap
usage on OpenBSD 6.3+. (#6250, thanks @jcs) - Fixed
big/big_int
,big/big_float
, etc are now able to be included directly. (#6267, thanks @asterite) - ๐จ Refactor dependency in
Crystal::Hasher
to avoid load order issues. (#6184, thanks @ysbaddaden)
Compiler
- ๐ Fixed a leakage of unbounded generic type variable and show error. (#6128, thanks @asterite)
- ๐ Fixed error message when lookup of library fails and lib's name contains non-alpha chars. (#6187, thanks @oprypin)
- ๐ Fixed integer kind deduction for very large negative numbers. (#6182, thanks @rGradeStd)
- ๐จ Refactor specs tempfiles and data files usage in favor of portability (#5951, thanks @straight-shoota)
- ๐ Improve formatting and information in some compiler error messages. (#6261, thanks @RX14)
Tools
Formatter
- ๐ Fixed crash when semicolon after block paren were present. (#6192, thanks @MakeNowJust)
- ๐ Fixed invalid code produced when heredoc and comma were present. (#6222, thanks @straight-shoota and @MakeNowJust)
- ๐ Fixed crash when one-liner
begin
/rescue
were present. (#6274, thanks @asterite)
Doc generator
- ๐ Fixed JSON export that prevent jumping to constant. (#6218, thanks @straight-shoota)
- ๐ Fixed crash when virtual types were reached. (#6246, thanks @bcardiff)
Misc
- ๐ Fixed
-
v0.25.0 Changes
June 11, 2018๐ New features and breaking changes
- (breaking-change) Time zones has been added to
Time
. (#5324, #5819, thanks @straight-shoota) - (breaking-change) Drop
HTTP.rfc1123_date
in favor ofHTTP.format_time
and add time format implementations for ISO-8601, RFC-3339, and RFC-2822. (#5123, thanks @straight-shoota) - (breaking-change)
crystal deps
is removed, useshards
. (#5544, thanks @asterite) - (breaking-change)
Hash#key
was renamed asHash#key_for
. (#5444, thanks @marksiemers) - (breaking-change)
JSON::Any
andYAML::Any
have been re-implemented solving some inconsistencies and avoiding the usage of recursive aliases (JSON::Type
andYAML::Type
have been removed). (#5183, thanks @asterite) - (breaking-change) Multiple heredocs can be used as arguments and methods can be invoked writing them in the initial delimiter, also empty heredocs are now supported. (#5578, #5602, #6048, thanks @asterite and @MakeNowJust)
- (breaking-change) Refactor signal handlers and avoid closing pipe at exit. (#5730, thanks @ysbaddaden)
- (breaking-change) Improve behaviour of
File.join
with empty path component. (#5915, thanks @straight-shoota) - (breaking-change) Drop
Colorize#push
in favor ofColorize#surround
and allow nested calls across the stack. (#4196, thanks @MakeNowJust) - (breaking-change)
File.stat
was renamed toFile.info
and a more portable API was implemented. (#5584, #6161, thanks @RX14 and @bcardiff) - (breaking-change) Refactor
HTTP::Server
to bind to multiple addresses. (#5776, #5959, thanks @straight-shoota) - (breaking-change) Remove block argument from
loop
. (#6026, thanks @asterite) - (breaking-change) Do not collapse unions for sibling types. (#6024, thanks @asterite)
- (breaking-change) Disallow
typeof
in type restrictions. (#5192, thanks @asterite) - (breaking-change) Perform unbuffered read when
IO::Buffered#sync = true
. (#5849, thanks @RX14) - (breaking-change) Drop
when _
support. (#6150, thanks @MakeNowJust) - (breaking-change) The
DivisionByZero
exception was renamed toDivisionByZeroError
. (#5395, thanks @sdogruyol) - ๐ A bootstrap Windows port has been added to the standard library. It's not usable for real programs yet. (#5339, #5484, #5448, thanks @RX14)
- โ Add automatic casts on literals arguments for numbers and enums. (#6074, thanks @asterite)
- โ Add user defined annotations. (#6063, #6084, #6106, thanks @asterite)
- โ Add macro verbatim blocks to avoid nested macros. (#6108, thanks @asterite)
- ๐ Allow namespaced expressions to define constants eg:
Foo::Bar = 1
. (#5883, thanks @bew) - ๐ Allow trailing
=
in symbol literals. (#5969, thanks @straight-shoota) - ๐ Allow redefining
None
to0
for@[Flags]
enum. (#6160, thanks @bew) - Suggest possible solutions to failing requires. (#5487, thanks @RX14)
- ๐ Allow pointers of external C library global variables. (#4845, thanks @larubujo)
- ๐จ Decouple pretty-printing (
pp
) and showing the expression (!
):p
,pp
,p!
,pp!
. (#6044, thanks @asterite) - โ Add ivars default value reflection in macros. (#5974, thanks @asterite)
- โ Add argless overload to
Number#round
to rounds to the nearest whole number. (#5397, thanks @Sija) - โ Add
Int#bits_set?
to easily check that certain bits are set. (#5619, thanks @RX14) - โ Add
Float32
andFloat64
constants. (#4787, thanks @konovod) - โ Add allocated bytes per operation in
Benchmark.ips
. (#5522, thanks @asterite) - Add
String#to_utf16
andString.from_utf16
. (#5541, #5579, #5583 thanks @asterite, @RX14 and @straight-shoota) - โ Add
String#starts_with?(re: Regex)
. (#5485, thanks @MakeNowJust) - โ Add
Regex.needs_escape?
. (#5962, thanks @Sija) - Add
Hash#last_key
andHash#last_value
. (#5760, thanks @j8r) - โ Add no-copy iteration to
Indexable
. (#4584, thanks @cjgajard) - Add
Time#at_{beginning,end}_of_second
(#6167, thanks @straight-shoota) - โ Add
IO::Stapled
to combine two unidirectionalIO
s into a single bidirectional one. (#6017, thanks @straight-shoota) - โ Add context to errors in
JSON.mapping
generated code. (#5932, thanks @straight-shoota) - โ Add
JSON::Serializable
andYAML::Serializable
attribute powered mappings. (#6082, thanks @kostya) - โ Add
mode
param toFile.write
. (#5754, thanks @woodruffw) - โ Add Punycode/IDNA support and integrate with DNS lookup. (#2543, thanks @MakeNowJust)
- โ Add
HTTP::Client#options
method. (#5824, thanks @mamantoha) - โ Add support for
Last-Modified
and other cache improvements toHTTP::StaticFileHandler
. (#2470, #5607, thanks @bebac and @straight-shoota) - โ Add operations and improvements related to
BigDecimal
andBigFloat
. (#5437, #5390, #5589, #5582, #5638, #5675, thanks @Sija and @mjago) - โ Add
BigDecimal
andUUID
JSON support. (#5525, #5551, thanks @lukeasrodgers and @lachlan) - โ Add missing
UUID#inspect
. (#5574, thanks @ngsankha) - โ Add
Logger
configuration in initializer. (#5618, thanks @Sija) - โ Add custom separators in
CSV.build
. (#5998, #6008 thanks @Sija) - โ Add
INI.build
to emitINI
files. (#5298, thanks @j8r) - โ Add
Process.chroot
. (#5577, thanks @chris-huxtable) - โ Add
Tempfile.tempname
to create likely nonexisting filenames. (#5360, thanks @woodruffw) - Add
FileUtils#ln
,ln_s
, andln_sf
. (#5421, thanks @woodruffw) - โ Add support 8bit and true color to
Colorize
. (#5902, thanks @MakeNowJust) - โ Add comparison operators between classes. (#5645, thanks @asterite)
- โ Add exception cause in backtrace. (#5833, thanks @RX14)
- โ Add unhandled exception as argument in
at_exit
. (#5906, thanks @MakeNowJust) - โ Add support to target aarch64-linux-musl. (#5861, thanks @jirutka)
- โ Add
#clear
method toArrayLiteral
/HashLiteral
for macros. (#5265, thanks @Sija) - โ Add
Bool#to_unsafe
for C bindings. (#5465, thanks @woodruffw) - Spec: Add expectations
starts_with
,ends_with
. (#5881, thanks @kostya) - Formatter: Add
--include
and--exclude
options to restrict directories. (#4635, thanks @straight-shoota) - ๐ Documentation generator: improved navigation, searching, rendering and SEO. (#5229, #5795, #5990, #5657, #6073, thanks @straight-shoota, @Sija and @j8r)
- Playground: Add button in playground to run formatter. (#3652, thanks @samueleaton)
๐ Standard library bugs fixed
- ๐ Fixed
String#sub
handling of negative indexes. (#5491, thanks @MakeNowJust) - ๐ Fixed
String#gsub
in non-ascii strings. (#5350, thanks @straight-shoota) - ๐ Fixed
String#dump
for UTF-8 characters higher than\uFFFF
. (#5668, thanks @straight-shoota) - ๐ Fixed
String#tr
edge case optimization bug. (#5913, thanks @MakeNowJust) - ๐ Fixed
String#rindex
when called withRegex
. (#5594, thanks @straight-shoota) - ๐ Fixed
Time::Span
precision loss and boundary check. (#5563, #5786, thanks @petoem and @straight-shoota) - 0๏ธโฃ
Array#sample
was fixed to use the provided random number generator (instead of the default) in all cases. (#5419, thanks @c910335) - โ Add short-circuit logic in
Deque#rotate!
for singleton and empty queues. (#5399, thanks @willcosgrove) Slice#reverse!
was optimised to be up to 43% faster. (#5401, thanks @larubujo)- ๐ Fixed
Regex#inspect
when escaping was needed. (#5841, thanks @MakeNowJust) - ๐ Fixed
JSON.mapping
now generates type restriction on getters. (#5935, thanks @Daniel-Worrall) - ๐ Fixed
JSON.mapping
documentation regarding unions. (#5483, thanks @RX14) - ๐ Fixed
JSON.mapping
andYAML.mapping
to allowproperties
property. (#5180, #5352, thanks @maxpowa and @Sija) - ๐ Fixed
YAML
int and float parsing. (#5699, #5774, thanks @straight-shoota) - ๐ Fixed WebSocket handshake validation. (#5327, #6027 thanks @straight-shoota)
- ๐ Fixed
HTTP::Client
is able to use ipv6 addresses. (#6147, thanks @bcardiff) - ๐ Fixed handling some invalid responses in
HTTP::Client
. (#5630, thanks @straight-shoota) - ๐ Fixed
HTTP::ChunkedContent
will raise on unterminated content. (#5928, #5943, thanks @straight-shoota) - 0๏ธโฃ
URI#to_s
now handles default ports for lots of schemes. (#5233, thanks @lachlan) HTTP::Cookies
is able to deal with spaces in cookies. (#5408, thanks @bararchy)- ๐ Fixed MIME type of SVG images in
HTTP::StaticFileHandler
. (#5605, thanks @damianham) - ๐ Fixed URI encoding in
StaticFileHandler#redirect_to
. (#5628, thanks @straight-shoota) - ๐ Fixed
before_request
callbacks to be executed right before writing the request inHTTP::Client
. (#5626, thanks @asterite) - ๐
Dir.glob
was re-implemented with performance improvements and edge cases fixed. (#5179, thanks @straight-shoota) - ๐ Fixed
File.extname
edge case for '.' in path with no extension. (#5790, thanks @codyjb) - ๐ Some ECDHE curves were incorrectly disabled in
OpenSSL
clients, this has been fixed. (#5494, thanks @jhass) - ๐ Fixed allow bcrypt passwords up to 71 bytes. (#5356, thanks @ysbaddaden)
- ๐จ Unhandled exceptions occurring inside
Process.fork
now print their backtrace correctly. (#5431, thanks @RX14) - ๐ Fixed
Zip
no longer modifies deflate signature. (#5376, thanks @luislavena) - ๐ Fixed
INI
parser edge cases and performance improvements. (#5442, #5718 thanks @woodruffw, @j8r) - ๐ Fixed initialization of
LibXML
. (#5587, thanks @lbguilherme) - ๐ฏ Some finalizers were missing for example when the object where cloned. (#5367, thanks @alexbatalov)
- ๐ Fixed sigfault handler initialization regarding
sa_mask
. (#5677 thanks @ysbaddaden) - ๐ Fixed missing reference symbol in ARM. (#5640, thanks @blankoworld)
- ๐ Fixed detect LLVM 5.0 by
llvm-config-5.0
command. (#5531, thanks @Vexatos) - โช Restore STDIN|OUT|ERR blocking state on exit. (#5802, thanks @bew)
- ๐ Fixed multiple
at_exit
handlers chaining. (#5413, thanks @bew) - ๐ Fixed senders were not notified when channels were closed. (#5880, thanks @carlhoerberg)
- ๐ Fixed forward unhandled exception to caller in
parallel
macro. (#5726, thanks @lipanski) - ๐ Fixed Markdown parsing of code fences appearing on the same line. (#5606, thanks @oprypin)
- ๐ Fixed OpenSSL bindings to recognize LibreSSL. (#5676, #6062, #5949, #5973 thanks @LVMBDV and @RX14)
- ๐ Fixed path value in to
UNIXSocket
created byUNIXServer
. (#5869, thanks @straight-shoota) - ๐ Fixed
Object.delegate
over setters. (#5964, thanks @straight-shoota) - ๐ Fixed
pp
will now use the same width on every line. (#5978, thanks @MakeNowJust) - ๐ Fixes missing stdarg.cr for i686-linux-musl. (#6120, thanks @bcardiff)
- ๐ Spec: Fixed junit spec formatter to emit the correct XML. (#5463, thanks @hanneskaeufler)
๐ Compiler bugs fixed
- ๐ Fixed enum generated values when a member has value 0. (#5954, thanks @bew)
- ๐ Fixed compiler issue when previous compilation was interrupted. (#5585, thanks @asterite)
- ๐ Fixed compiler error with an empty
ensure
block. (#5396, thanks @MakeNowJust) - ๐ Fixed parsing regex in default arguments. (#5481, thanks @MakeNowJust)
- ๐ Fixed parsing error of regex literal after open parenthesis. (#5453, thanks @MakeNowJust)
- ๐ Fixed parsing of empty array with blank. (#6107, thanks @asterite)
- Static libraries are now found correctly when using the
--static
compiler flag. (#5385, thanks @jreinert) - ๐ Improve error messages for unterminated literals. (#5409, thanks @straight-shoota)
- ๐ Fixed
ProcNotation
andProcLiteral
introspection in macros. (#5206, thanks @javanut13) - Cross compilation honors
--emit
and avoid generatingbc_flags
in current directory. (#5521, thanks @asterite) - ๐ Fixed compiler error with integer constants as generic arguments. (#5532, thanks @asterite)
- ๐ Fixed compiler error with self as base class. (#5534, thanks @asterite)
- ๐ Fixed macro expansion when mutating the argument. (#5247, thanks @MakeNowJust)
- ๐ Fixed macro expansion edge cases. (#5680, #5842, #6163, thanks @asterite, @MakeNowJust and @splattael)
- ๐ Fixed macro overload on named args. (#5808, thanks @bew)
- ๐ Fixed macro numeric types used in interpreter. (#5972, thanks @straight-shoota)
- ๐ Fixed missing debug locations in several places. (#5597, thanks @asterite)
- ๐ Fixed missing information in AST nodes needed for macro expansion. (#5454, thanks @MakeNowJust)
- ๐ Fixed multiline error messages in emitted by
ASTNode#raise
macro method. (#5670, thanks @asterite) - ๐ Fixed nested delimiters and escaped whitespace in string/symbol array literals. (#5667, thanks @straight-shoota)
- ๐ Fixed custom array/hash-like literals in nested modules. (#5685, thanks @asterite)
- ๐ Fixed usage of static array in C externs. (#5690, thanks @asterite)
- ๐ Fixed
spawn
over expression with receivers. (#5781, thanks @straight-shoota) - ๐ Fixed prevent heredoc inside interpolation. (#5648, thanks @MakeNowJust)
- ๐ Fixed parsing error when a newline follows block arg. (#5737, thanks @bew)
- ๐ Fixed parsing error when macro argument is followed by a newline. (#6046, thanks @asterite)
- ๐ Fixed compiler error messages wording. (#5887, thanks @r00ster91)
- ๐ Fixed recursion issues in
method_added
macro hook. (#5159, thanks @MakeNowJust) - ๐ Fixed avoid using type of updated argument for type inference. (#5166, thanks @MakeNowJust)
- ๐ Fixed parsing error message on unbalanced end brace in macros. (#5420, thanks @MakeNowJust)
- ๐ Fixed parsing error message on keywords are used as arguments. (#5930, #6052, thanks @MakeNowJust and @esse)
- ๐ Fixed parsing error message on missing comma for named tuples. (#5981, thanks @MakeNowJust)
- ๐ Fixed missing handling of
cond
node in visitor. (#6032, thanks @veelenga) - ๐ Fixed cli when
--threads
has invalid value. (#6039, thanks @r00ster91) - ๐ Fixed private methods can now be called with explicit
self
receiver. (#6075, thanks @MakeNowJust) - ๐ Fixed missing some missing rules of initializer in initializers macro methods. (#6077, thanks @asterite)
- ๐ Fixed regression bug related to unreachable code. (#6045, thanks @asterite)
๐ Tools bugs fixed
- Several
crystal init
and template improvements. (#5475, #5355, #4691, #5788, #5644, #6031 thanks @woodruffw, @faustinoaq, @bew, @kostya and @MakeNowJust) - Formatter: improve formatting of method call arguments with trailing comments. (#5492, thanks @MakeNowJust)
- Formatter: fix formatting of multiline statements. (#5234, #5901, #6013 thanks @MakeNowJust)
- Formatter: fix formatting of multi assignment. (#5452, thanks @MakeNowJust)
- Formatter: fix formatting of backslash ending statements. (#5194, thanks @asterite)
- Formatter: fix formatting of
.[]
methods. (#5424, thanks @MakeNowJust) - Formatter: fix formatting of statements with comments. (#5655, #5893, #5909, thanks @MakeNowJust)
- Formatter: fix formatting of nested
begin
/end
. (#5922, thanks @MakeNowJust) - Formatter: fix formatting of trailing comma with block calls. (#5855, thanks @MakeNowJust)
- Formatter: fix formatting of ending expression after heredoc. (#6127, thanks @asterite)
- ๐ Documentation generator: references to nested types in markdown are now correctly parsed. (#5308, thanks @straight-shoota)
- ๐ Documentation generator: fix leftovers regarding default old
doc
directory. (#5406, thanks @GloverDonovan) - ๐ Documentation generator: avoid failing on non git directory. (#3700, thanks @MakeNowJust)
Crystal::Doc::Highlighter
has specs now (#5368, thanks @MakeNowJust)- Playground: can now be run with HTTPS. (#5527, thanks @opiation)
- ๐จ Playground: Pretty-print objects in inspector. (#4601, thanks @jgaskins)
Misc
- ๐ The platform-specific parts of
File
andIO::FileDescriptor
were moved toCrystal::System
, as part of preparation for the Windows port. (#5333, #5553, #5622 thanks @RX14) - ๐ The platform-specific parts of
Dir
were moved toCrystal::System
, as part of preparation for the Windows port. (#5447, thanks @RX14) - ๐ Incremental contributions regarding Windows support. (#5422, #5524, #5533, #5538, #5539, #5580, #5947 thanks @RX14 and @straight-shoota)
- ๐ The build on OpenBSD was fixed. (#5387, thanks @wmoxam)
- โ Add support for FreeBSD 12 (64-bit inodes). (#5199, thanks @myfreeweb)
- Scripts and makefiles now depend on
sh
instead ofbash
for greater portability. (#5468, thanks @j8r) - Honor
LDFLAGS
andEXTRA_FLAGS
inMakefile
. (#5423, #5860, thanks @trofi, @jirutka) - ๐ Improve message on link failure. (#5486, #5603, thanks @RX14 and @waj)
- ๐ Improve
String#to_json
when chars don't need escaping. (#5456, thanks @larubujo) - ๐ Improve
Time#add_span
when arguments are zero. (#5787, thanks @straight-shoota) - ๐ Improve
String#pretty_print
to output by splitting newline. (#5750, thanks @MakeNowJust) - โ Add
\a
escape sequence. (#5864, thanks @r00ster91) - ๐จ Several miscellaneous minor code cleanups and refactors. (#5499, #5502, #5507, #5516, #4915, #5526, #5529, #5535, #5537, #5540, #5435, #5520, #5530, #5547, #5543, #5561, #5599, #5493, #5546, #5624, #5701, #5733, #5646, #5729, #5791, #5859, #5882, #5899, #5918, #5896, #5810, #5575, #5785, #5866, #5816, #5945, #5963, #5968, #5977, #6004, #5794, #5858, #6033, #6036, #6079, #6111, #6118, #6141, #6142, #5380, #6071, thanks @chastell, @lachlan, @bew, @RX14, @sdogruyol, @MakeNowJust, @Sija, @noriyotcp, @asterite, @splattael, @straight-shoota, @r00ster91, @jirutka, @paulcsmith, @rab, @esse, @carlhoerberg, @chris-huxtable, @luislavena)
- ๐ Several documentation fixes and additions. (#5425, #5682, #5779, #5576, #5806, #5817, #5873, #5878, #5637, #5885, #5884, #5728, #5917, #5912, #5894, #5933, #5809, #5936, #5908, #5851, #5378, #5914, #5967, #5993, #3482, #5946, #6095, #6117, #6131, #6162, thanks @MakeNowJust, @straight-shoota, @vendethiel, @bew, @Heaven31415, @marksiemers, @Willamin, @r00ster91, @maiha, @Givralix, @docelic, @CaDs, @esse, @igneus, @masukomi)
- ๐ CI housekeeping and including 32 bits automated builds. (#5796, #5804, #5837, #6015, #6165, thanks @bcardiff, @bew and @Sija)
- ๐ Sync docs in master to https://crystal-lang.org/api/master. (#5941, thanks @bcardiff)
- ๐ง Enable the large heap configuration for libgc. (#5839, thanks @RX14)
- ๐ Improve Ctrl-C handling of spec. (#5719, thanks @MakeNowJust)
- โก๏ธ Playground: Update to codemirror 5.38.0. (#6166, thanks @bcardiff)
- (breaking-change) Time zones has been added to
-
v0.24.2 Changes
March 08, 2018- ๐ Fixed an
Index out of bounds
raised duringat_exit
(#5224, #5565, thanks @ysbaddaden) - Re-add
Dir#each
so it complies withEnumerable
(#5458, thanks @bcardiff) - ๐ Fixed
SSL::Context
bug verifying certificates (#5266, #5601, thanks @waj) - ๐ Fixed UUID documentation that was missing (#5478, #5542, thanks @asterite)
- ๐ Fixed a bug with single expressions in parenthesis (#5482, #5511, #5513, thanks @MakeNowJust)
- ๐ Fixed
skip_file
macro docs (#5488, thanks @straight-shoota) - ๐ Fixed CI
build
script'sLIBRARY_PATH
(#5457, #5461, thanks @bcardiff) - ๐ Fixed formatter bug with upper-cased
fun
names (#5432, #5434, thanks @bew)
- ๐ Fixed an
-
v0.24.1 Changes
December 23, 2017๐ New features
- โ Add ThinLTO support for faster release builds in LLVM 4.0 and above. (#4367, thanks @bcardiff)
- (breaking-change) Add
UUID
type.Random::Secure.uuid
has been replaced withUUID.random
. (#4453, thanks @wontruefree) - โ Add a
BigDecimal
class for arbitrary precision, exact, decimal numbers. (#4876 and #5255, thanks @vegai and @Sija) - ๐ Allow
Set
to work as a case condition, which matches when the case variable is inside the set. (#5269, thanks @MakeNowJust) - (breaking-change) Change
Time::Format
codes to allow more robust options for parsing sub-second precision times. (#5317, thanks @bcardiff) - โ Add
Time.utc
, an alias ofTime.new
which shortens creating UTC times. (#5321, thanks @straight-shoota) - โ Add custom extension support to
Tempfile
. (#5264, thanks @jreinert) - โ Add
reduce
method toTupleLiteral
andArrayLiteral
when using macros. (#5294, thanks @javanut13) - ๐ Export a JSON representation of the documentation in the generated output. (#4746 and #5228, thanks @straight-shoota)
- ๐ Make
gc/none
garbage collection compile again and allow it to be enabled using-Dgc_none
compiler flag. (#5314, thanks @ysbaddaden)
๐ Standard library bugs fixed
- ๐ Make
String#[]
unable to read out-of-bounds when the string ends in a unicode character. (#5257, thanks @Papierkorb) - ๐ Fix incorrect parsing of long JSON floating point values. (#5323, thanks @benoist)
- 0๏ธโฃ Replace the default hash function with one resistant to hash DoS. (#5146, thanks @funny-falcon)
- Ensure equal numbers always have the same hashcode. (#5276, thanks @akzhan)
- ๐ Fix struct equality when two structs descend from the same abstract struct. (#5254, thanks @hinrik)
- ๐ Fix
URI#full_path
not to append a?
unless the query params are nonempty. (#5340, thanks @paulcsmith) - ๐ Fix
HTTP::Params.parse
to parse&&
correctly. (#5274, thanks @akiicat) - Disallow null bytes in
ENV
keys and values. (#5216, thanks @Papierkorb) - Disallow null bytes in
XML::Node
names and content. (#5200, thanks @RX14) - ๐ Fix
IO#blocking=
on OpenBSD. (#5283, thanks @wmoxam) - ๐ Fix linking programs in OpenBSD. (#5282, thanks @wmoxam)
๐ Compiler bugs fixed
- Stop incorrectly finding top-level methods when searching for a
super
method. (#5202, thanks @lbguilherme) - ๐ Fix parsing regex literals starting with a
;
directly after a call (exp /;/
). (#5208, thanks @MakeNowJust) - Correct a case where
Expressions#to_s
could produce invalid output, causing macro expansion to fail. (#5226, thanks @asterite) - Give error instead of crashing when
self
is used at the top level. (#5227, thanks @MakeNowJust) - Give error instead of crashing when using
instance_sizeof
on a generic type without providing it's type arguments. (#5209, thanks @lbguilherme) - ๐ Fix parsing calls when short block syntax (
&.foo
) is followed by a newline. (#5237, thanks @MakeNowJust) - Give error instead of crashing when an unterminated string array literal (
%w()
) sits at the end of a file. (#5241, thanks @asterite) - Give error when attempting to use macro yield (
{{yield}}
) outside a macro. (#5307, thanks @MakeNowJust) - ๐ Fix error related to generic inheritance. (#5284, thanks @MakeNowJust)
- ๐ Fix compiler crash when using recursive alias and generics. (#5330, thanks @MakeNowJust)
- ๐ Fix parsing
foo(+1)
asfoo + 1
instead offoo(1)
wherefoo
was a local variable. (#5336, thanks @MakeNowJust) - ๐ Documentation generator: Keep quoted symbol literals quoted when syntax highlighting code blocks in documentation output. (#5238, thanks @MakeNowJust)
- ๐ Documentation generator: Keep the original delimiter used when syntax highlighting string array literals. (#5297, thanks @MakeNowJust)
- ๐ Documentation generator: Fix XSS vulnerability when syntax highlighting string array literals. (#5259, thanks @MakeNowJust)
- Formatter: fix indentation of the last comment in a
begin
/end
block. (#5198, thanks @MakeNowJust) - Formatter: fix formatting parentheses with multiple lines in. (#5268, thanks @MakeNowJust)
- Formatter: fix formatting
$1?
. (#5313, thanks @MakeNowJust) - Formatter: ensure to insert a space between
{
and%
characters to avoid forming{%
macros. (#5278, thanks @MakeNowJust)
Misc
- ๐ Fix
Makefile
, CI, and gitignore to use the new documentation path after #4937. (#5217, thanks @straight-shoota) - Miscellaneous code cleanups. (#5318, #5341 and #5366, thanks @bew and @mig-hub)
- ๐ Documentation fixes. (#5253, #5296, #5300 and #5322, thanks @arcage, @icyleaf, @straight-shoota and @bew)
- ๐ Fix the in-repository changelog to include 0.24.0. (#5331, thanks @sdogruyol)
-
v0.24.0 Changes
October 30, 2017- (breaking-change) HTTP::Client#post_form is now HTTP::Client.post(form: ...)
- (breaking-change) Array#reject!, Array#compact! and Array#select! now return self (#5154)
- (breaking-change) Remove the possibility to require big_int, big_float or big_rational individually: use require "big" instead (#5121)
- (breaking-change) Spec: remove expect_raises without type argument (#5096)
- (breaking-change) IO is now a class, no longer a module (#4901)
- (breaking-change) Time constructors now have nanosecond and kind as named argument (#5072)
- (breaking-change) Removed XML.escape. Use HTML.escape instead (#5046)
- (breaking-change) Removed macro def (#5040)
- (breaking-change) SecureRandom is now Random::Secure (#4894)
- (breaking-change) HTML.escape now only escapes &<>"' (#5012)
- (breaking-change) To define a custom hash method you must now define hash(hasher) (#4946)
- (breaking-change) Flate::Reader.new(&block) and Flate::Writer.new(&block) now use the name open (#4887)
- (breaking-change) Use an Enum for Process stdio redirections (#4445)
- (breaking-change) Remove '$0' special syntax
- (breaking-change) Remove bare array creation from multi assign (a = 1, 2, 3) (#4824)
- (breaking-change) Rename skip macro method to skip_file (#4709)
- (breaking-change) StaticArray#map and Slice#map now return their same type instead of Array (#5124)
- (breaking-change) Tuple#map_with_index now returns a Tuple. (#5086)
- ๐ฆ Packages built with LLVM 3.9.1. They should (hopefully) fix #4719
- Syntax: Allow flat rescue/ensure/else block in do/end block (#5114)
- Syntax: fun names and lib function calls can now start with Uppercase
- Macros: Using an alias in macros will now automatically resolve it to is aliased type (#4995)
- Macros: The flags bits32 and bits64 are now automatically defined in macros
- ๐ The YAML module has now full support for the 1.1 core schema with additional types, and properly supports aliases and merge keys (#5007)
- โ Add --output option to crystal docs (#4937)
- Add Time#days_in_year: it returns the no of days in a given year (#5163)
- โ Add Time.monotonic to return monotonic clock (#5108)
- โ Add remove_empty option to many String#split overloads
- โ Add Math.sqrt overloads for Bigs (#5113)
- โ Add --stdin-filename to crystal command to compile source from STDIN (#4571)
- โ Add Crystal.main to more easily redefine the main of a program (#4998)
- โ Add Tuple.types that returns a tuple of types (#4962)
- โ Add NamedTuple.types that returns a named tuple of types (#4962)
- โ Add NamedTuple#merge(other : NamedTuple) (#4688)
- โ Add YAML and JSON.mapping presence: true option (#4843)
- โ Add Dir.each_child(&block) (#4811)
- โ Add Dir.children (#4808)
- ๐ HTML.unescape now supports all HTML5 named entities (#5064)
- ๐ Regex now supports duplicated named captures (#5061)
- rand(0) is now valid and returns 0
- ๐ Tuple#[] now supports a negative index (#4735)
- ๐ JSON::Builder#field now accepts non-scalar values (#4706)
- Number#inspect now shows the number type
- Some additions to Big arithmetics (#4653)
- Increase the precision of Time and Time::Span to nanoseconds (#5022)
- โฌ๏ธ Upgrade Unicode to 10.0.0 (#5122)
- ๐ Support LLVM 5.0 (#4821)
- ๐ Lots of bugs fixed