Releases
0.27.0
Language changes
(breaking-change) Disallow comma after newline in argument list. (#6514 , thanks @asterite )
Macros
Add Generic#resolve
and Generic#resolve?
macro methods. (#6617 , thanks @asterite )
Standard library
Fixed v1
, v2
, v3
, v4
, v5
methods of UUID
. (#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?
to String
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
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#//
and Float#//
. (#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 document ColorRGB
, Color256
. (#6427 , thanks @r00ster91 )
Add String::Formatter
support for c
flag and improve docs. (#6758 , thanks @r00ster91 )
Collections
(breaking-change) Replace Indexable#at
with #fetch
. Remove Hash#fetch(key)
as alias of Hash#[]
. (#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
and parse_all
. (#6790 , thanks @r00ster91 )
Fixed order of xmlns
and prefix in XML::Builder#namespace
. (#6743 , thanks @yeeunmariakim)
Fixed CSV.build
quoting of Char
and Symbol
. (#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
and YAML::Serializable
. (#6539 , thanks @r00ster91 )
Time
(breaking-change) Rename Time#epoch
to Time#to_unix
. Also #epoch_ms
to #unix_ms
, and #epoch_f
to #to_unix_f
. (#6662 , thanks @straight-shoota )
Fixed spec for Time::Location.load_local
with TZ=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 private UNIX_SECONDS
constant. (#6908 , thanks @j8r )
Change Time::DayOfWeek
to ISO ordinal numbering based on Monday = 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
. Use File.tempfile
or File.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 improve File
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
and Flate::Reader
by including IO::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 use check_open
. (#6958 , thanks @Sija )
Networking
(breaking-change) Remove deprecated alias HTTP::Server#bind_ssl
. Use HTTP::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?
if SO_REUSEPORT
is not supported. (#6706 , thanks @straight-shoota )
Fixed TCPServer
handling of reuse_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
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
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
and break
. (#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
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
You can’t perform that action at this time.