All Versions
114
Latest Version
Avg Release Cycle
47 days
Latest Release
40 days ago
Changelog History
Page 1
Changelog History
Page 1
-
v1.5.0 Changes
July 06, 2022Language
- (breaking-change) Warn on positional parameter mismatches for abstract def implementations (#11915, #12167, thanks @HertzDevil)
- ๐ Fix
\{{...}}
syntax in macro inside comments (#12175, thanks @asterite) - Let constant tuple indexers work with constants (#12012, thanks @asterite)
- ๐จ Refactor restriction mechanism for autocasting (#12014, thanks @HertzDevil)
- ๐ Support unions in
Crystal::Macros::ASTNode#is_a?
(#12086, thanks @HertzDevil) - Experimental: restriction augmenter (#12103, #12136, #12143, #12130, thanks @asterite)
- ๐ Method/macro parameter annotation support (#12044, thanks @Blacksmoke16)
Standard Library
- ๐ Support
Path
forchdir
arg inProcess
methods (#11932, thanks @caspiano) - โ Add docs for
Enum#value
(#11947, thanks @lbguilherme) - ๐ Fix positional parameter warnings in specs (#12158, thanks @straight-shoota)
- ๐ Use more specific expectations in specs (#11951, thanks @HertzDevil)
- ๐ Use
contain
expectations in more specs (#11950, thanks @HertzDevil)
Collection
- ๐ Fix
Hash#reject!
for non-equality key (#10511, thanks @straight-shoota) - Introduce
Tuple.element_type
andNamedTuple.element_type
(#12011, thanks @HertzDevil) - ๐ Rename "take" to "first" (#11988, thanks @jmdyck)
- โ Add spec for
Array#-
with different generic type arguments (#12049, thanks @straight-shoota)
Concurrency
- Windows: Always use
GC_set_stackbottom
on Windows (#12186, thanks @HertzDevil) - ๐ Windows: Event loop based on IOCP (#12149, thanks @straight-shoota, @wonderix, @yxhuvud, @HertzDevil)
- ๐ Use enum instead of symbol for
Atomic
primitives (#11583, thanks @HertzDevil) - Allow
Enumerable(Channel)
parameter forChannel.send_first
,.receive_first
(#12101, thanks @carlhoerberg)
Crypto
- ๐ (performance) Add faster
Digest#hexfinal
(#9292, thanks @didactic-drunk) - ๐ Handle OpenSSL 3.0 KTLS ctrl calls (#12034, thanks @1player)
Files
- ๐ Fix
Path#join(Enumerable)
(#12032, thanks @straight-shoota) - ๐ Fix
Path#join
to convert argument path to base kind (#12033, thanks @straight-shoota) - ๐ Fix
Dir.glob
with multi components after recursive wildcard (#12057, thanks @straight-shoota) - โ Add
File#delete?
andDir#delete?
(#11887, thanks @didactic-drunk) - Accept
Path
arguments inCompress::Zip
(#11925, thanks @didactic-drunk) - โก๏ธ Update file.cr (#12024, thanks @rdp)
- โ Add
File#chown
and#chmod
(#11886, thanks @didactic-drunk)
๐ฒ Log
- ๐ Change
Log
emitters to not emit event when block output isnil
(#12000, thanks @robacarp)
Networking
- ๐ Enable more networking specs on Windows (#12176, thanks @HertzDevil)
- โ Add specs for Windows directory separators in
StaticFileHandler
paths (#11884, thanks @straight-shoota) - โ Add property
HTTP::Server::Response#status_message
(#10416, thanks @straight-shoota)
Numeric
- ๐ Fix
Complex.multiplicative_identity
(#12051, thanks @I3oris) - โ Add docs for
Float
,BigFloat
rounding methods (#12004, thanks @marksiemers) - Implement rt builtins
__ashlti3
,__ashrti3
and__lshrti3
for wasm32 (#11948, thanks @lbguilherme)
Specs
- Align
Spec::Be
,BeClose
failure message to other messages (#11946, thanks @jgaskins)
System
- ๐ (security) Fix check for null byte in
File#tempfile
args (#12076, thanks @straight-shoota) - โ Add missing
SC_PAGESIZE
constant foraarch64-darwin
(#12037, thanks @carlhoerberg) - ๐ Docs: Add more prominent note about path traversal in
File.tempfile
(#12077, thanks @straight-shoota) - ๐ Support
Enumerable
as argument toFile.join
(#12102, thanks @caspiano)
โ Runtime
- Mention
#value
explicitly inPointer
overview. (#12184, thanks @elebow)
Text
- Add specs for
String#char_bytesize_at
(#11872, thanks @straight-shoota) - Flush shift state for
String#encode
(#11993, thanks @HertzDevil) - ๐ Handle invalid bytes in single-byte optimizable
String
s correctly (#12108, thanks @HertzDevil) - ๐ Fix: Don't stop on null byte in
String#%
(#12125, thanks @asterite) - โ Add
UUID.parse?
(#11998, thanks @jgaskins)
Time
- ๐ Fix: Better error message for
Time.parse!
when end of input is reached (#12124, thanks @asterite)
Compiler
- โ Clean up compiler warning specs (#11916, thanks @HertzDevil)
- โ Add support for
NO_COLOR
toColorize
(#11984, thanks @didactic-drunk) - ๐ (performance) Use LLVM's new pass manager when possible (#12116, thanks @asterite)
Macros
- Document
Crystal::Macros::Self
andUnderscore
(#12085, thanks @HertzDevil)
Generics
- ๐ Allow the empty instantiation
NamedTuple()
(#12009, thanks @HertzDevil)
Interpreter
- โ Add missing
EXPORT
in interpreter spec (#12201, thanks @HertzDevil) - ๐ Handle escaping exceptions in pry (#12211, thanks @asterite)
- ๐ Allow some options, and colorize whereami (#12198, thanks @asterite)
- ๐ Fix instance var offset of virtual struct (#12189, thanks @asterite)
- ๐ Handle explicit return when method type is Nil (#12179, thanks @asterite)
Crystal::Loader
: don't check if file exists, leave that to dlopen (#12207, thanks @asterite)- ๐ Fix call receiver by value from VirtualType struct (#12194, thanks @asterite)
- Clear finished hooks after intepreting (#12174, thanks @asterite)
- ๐ Fix FFI bindings for libffi >= 3.4 (#12192, thanks @straight-shoota)
- ๐ Fix
.class
for modules and unions (#12205, thanks @asterite) - Implement
Crystal::Loader
for MSVC (#12140, thanks @HertzDevil) - ๐ Fix: cast from virtual metaclass to union (#12163, thanks @asterite)
- ๐ Allow inspect vars when inside a block (#12165, thanks @asterite)
- ๐ Let pry see closured vars (#12169, thanks @asterite)
- ๐ Fix caller (#12182, thanks @asterite)
- Apply shell expansion in ldflags (#12094, thanks @mdwagner)
- ๐ Fix expression value of constant assignment in interpreter (#12016, thanks @beta-ziliani)
- ๐ Fix: Don't link
librt
andlibdl
on GNU systems (#12038, thanks @1player)
๐ Parser
- (breaking-change) Disallow empty parameter and argument names (#11971, thanks @HertzDevil)
- ๐ Disallow duplicate free variables in defs (#11965, thanks @HertzDevil)
- Disallow duplicate
fun
parameter names (#11967, thanks @HertzDevil) - โ Remove redundant check for EOF on
Crystal::Parser
(#12067, thanks @lbguilherme)
Semantic
- Compiler: don't check ivar read forms a closure in
[email protected]
(#12183, thanks @asterite) - Compiler: raise when allocating an abstract virtual type (#12141, thanks @asterite)
- Compiler: don't use
with_scope
if Call has a receiver (#12138, thanks @asterite) - Compiler: fix proc return type restriction for
Proc(...)
(#12129, thanks @asterite) - Compiler: simpler way to compute
Def#raises?
(#12121, thanks @asterite) - โ Remove unused
ASTNode#unbind_all
(#12120, thanks @asterite)
Debugger
- ๐ Improve the LLDB spec driver script (#12119, thanks @HertzDevil)
Tools
๐ Docs-generator
- ๐ [Docs] Adjust method sort order to sort all operators first (#12104, thanks @straight-shoota)
Formatter
- ๐ Fix formatter lib-fun declaration with newlines (#12071, thanks @ftarulla)
- ๐ Fix formatter alias-def with no-space before equals (#12073, thanks @ftarulla)
- ๐ Fix formatter for parenthesized arg after space (#11972, thanks @straight-shoota)
Playground
- Playground: fix
modalContenDom
typo (#12188, thanks @HertzDevil) - ๐ Fix: Unset executable bit from js/css files in playground (#12053, thanks @carlhoerberg)
Other
- ๐ [CI] Add build compiler step to smoke tests (#11814, thanks @straight-shoota)
- โ Add Makefile for Windows (#11773, thanks @HertzDevil)
- โก๏ธ [CI] Update distribution-scripts (#12155, thanks @straight-shoota)
- โก๏ธ [CI] Add
update-distributions-scripts.sh
(#12156, thanks @straight-shoota) - [CI] Ignore
pax_global_header
on Windows CI (#12173, thanks @HertzDevil) - ๐ [CI] Invalidate cached libraries on new MSVC release (#12064, thanks @HertzDevil)
- ๐ Fix spelling (#12040, thanks @jsoref)
- ๐ Update previous Crystal release - 1.4.1 (#12029, thanks @straight-shoota)
- ๐ [CI] Pin version of ubuntu base image for circleci jobs (#12030, thanks @straight-shoota)
- Samples: avoid
Symbol
variables (#11923, thanks @HertzDevil)
-
v1.4.1 Changes
April 22, 2022Standard Library
Collection
- Avoid compile-time error on empty
NamedTuple
s. (#12007, thanks @I3oris)
Files
- โ Add missing fun def for
__xstat
(#11985, thanks @straight-shoota)
โ Runtime
- โ Add
pthread
link annotations in lib bindings (#12013, thanks @straight-shoota) - ๐ Fix GC typedefs on Windows (#11963, thanks @HertzDevil)
Compiler
Semantic
- ๐ Compiler: remove duplicate instance vars once we know them all (#11995, thanks @asterite)
- Avoid compile-time error on empty
-
v1.4.0 Changes
April 06, 2022Language
- โ Add support for
Int128
in codegen and macros (#11576, thanks @BlobCodes) - ๐ Support
ProcPointer
s with global path and top-level method references (#11777, thanks @HertzDevil) - ๐ Fix documentation for macros
system
andrun
(#11740, thanks @lbguilherme) - ๐ Experimental: better type inference for ivars/cvars (#11812, thanks @asterite)
- ๐ Support
@[Deprecated]
on constants (#11680, thanks @HertzDevil)
Standard Library
- ๐ Fix compiler flags with optional arg eating following flags (#11201, thanks @yb66)
- ๐ Support GNU style optional arguments in
OptionParser
(#11546, thanks @HertzDevil) - โ Remove some unnecessary link annotations (#11563, thanks @straight-shoota)
- โ Remove useless assignments (#11774, thanks @IgorPolyakov)
- ๐ Use "truthy" and "falsey" in more places in the documentation (#11784, thanks @HertzDevil)
- โ Add missing code blocks for
self
in documentation (#11718, thanks @HertzDevil) - โ Add support for LLVM 14.0 (#11905, thanks @HertzDevil)
- ๐ Fix code examples in doc comments (2022-03) (#11927, thanks @maiha)
Collection
- โ Remove
Iterator.of(Iterator.stop)
from implementations (#11613, thanks @asterite) - โ Add allow
Enumerable
arguments forHash#select
and#reject
(#11750, thanks @mamantoha) - โ Add docs for
Hash#reject!
(#11691, thanks @wontruefree) - โ Add raising method variants
Enumerable#find!
and#index!
(#11566, thanks @yxhuvud) - ๐ (performance) Optimize block-less overloads of
BitArray#fill
(#11450, thanks @HertzDevil) - โ Adds docs for
Array#replace
(#11682, thanks @wontruefree) - ๐ (performance) Optimize
BitArray
's counting methods (#11591, thanks @HertzDevil) - โ Add some return types to Array, Hash, Set and String (#11822, thanks @asterite)
- โ Add
Hash#update
(#11881, thanks @ftarulla) - ๐ Allow
Bytes[]
to construct an emptyBytes
(#11897, thanks @HertzDevil) - ๐ Improve
BitArray
's constructors (#11898, thanks @HertzDevil) - โ Add overload to
Enumerable#tally
and#tally_by
accepting a hash (#11815, thanks @mamantoha)
Crypto
- โ Add support for Bcrypt algorithm version
2b
(#11595, thanks @docelic)
Files
- ๐ Fix race condition in
chown
(#11885, thanks @didactic-drunk) - โ Add docs for
Dir#each_child
(#11688, thanks @wontruefree) - โ Add docs for
Dir#path
(#11689, thanks @wontruefree) - ๐ Support read-write + binary file modes in
File.open
(#11817, thanks @HertzDevil) - โ Add docs for
Dir#entries
(#11701, thanks @wontruefree) - Add
IO#getb_to_end
(#11830, thanks @HertzDevil) - ๐ Fix
IO::FileDescriptor#pos
giving incorrect position after write (#10865, thanks @didactic-drunk) - โ Remove reference to binary file mode in
File.open
(#11824, thanks @HertzDevil)
Macros
- โ Add
#parse_type
(#11126, thanks @Blacksmoke16)
Networking
- ๐ (performance) Optimize
URI.decode
(#11741, thanks @asterite) - ๐ Fix
address_spec
expectation for Windows Server 2022 (#11794, thanks @straight-shoota) - Add
space_to_plus
option inURI::Params
everywhere (#11821, thanks @asterite) - ๐ Improve
URI::Params#inspect
to use hash-like literal (#11880, thanks @straight-shoota) - ๐ Use enums instead of symbols for
MIME::Multipart
andHTTP::FormData
(#11617, thanks @HertzDevil)
Numeric
- (breaking-change) Fix: Hide
BigDecimal::ZERO
andBigDecimal::TEN
(#11820, thanks @lbguilherme) - (breaking-change) Add support for scientific notation in
BigFloat#to_s
(#10632, thanks @HertzDevil) - ๐ Fix: Inspect string in error message for number parsing (#11883, thanks @straight-shoota)
- โ Add docs for
Complex#zero?
(#11697, thanks @wontruefree) - ๐ Fix E notation parsing in
BigDecimal
(#9577, thanks @stevegeek) - ๐ (performance) Optimize Integer decoding from bytes (#11796, thanks @carlhoerberg)
โ Runtime
- ๐ Fix interpreter when shared library
pthread
is missing (#11807, thanks @straight-shoota) - ๐ (performance) Implement
Intrinsics.pause
for aarch64 (#11742, thanks @lbguilherme, @jgaskins) - โ Add crash handler on Windows (#11570, thanks @HertzDevil)
- โ Add specs for
NamedTuple#from
(#11816, thanks @straight-shoota) - ๐ Improve error for incompatible generic arguments for
WeakRef
(#11911, thanks @straight-shoota) - โ Add the wasm entrypoint defined in Crystal (#11936, thanks @lbguilherme)
Serialization
- ๐ Allow passing instance method or conditional expressions to option
ignore_serialize
onJSON::Field
(#11804, thanks @cyangle) - Implement
Iterator.from_json
and#to_json
(#10437, thanks @wonderix)
Specs
- โ Add
file
andline
arguments toit_iterates
(#11628, thanks @straight-shoota) - โ Remove duplicate word in documentation (#11797, thanks @samueleaton)
System
- (breaking-change) (security) Fix character mappings for Windows path conversions (#11847, thanks @straight-shoota)
- โ Add fallback for
Path.home
on Unix (#11544, thanks @HertzDevil) - ๐ Relax
ENV.fetch(key, &)
's block restriction (#11779, thanks @HertzDevil) - ๐จ Refactor target clauses for system implementations (#11813, thanks @straight-shoota)
- ๐ Fix
Path
support for UNC shares (#11827, thanks @straight-shoota) - ๐ Fix regression for Linux older than 3.17: properly check that
getrandom
is available (#11953, thanks @lbguilherme)
Text
- ๐ Fix ensure PCRE JIT mode is available before running spec (#11533, thanks @Blacksmoke16)
- โ Add more
Colorize
overloads and fix docs (#11832, thanks @asterite) - ๐จ Refactor
Colorize::Mode
enum (#11663, thanks @straight-shoota) - โ Add some docs for
UUID
(#11683, thanks @wontruefree) - โ Add docs for
UUID#urn
(#11693, thanks @wontruefree) - โ Add docs for
String#[]
(#11690, thanks @wontruefree) - ๐ Allow explicit usage of
libiconv
(#11876, thanks @luislavena) - (breaking-change) Fix: Honour encoding in
IO::Memory#to_s
(#11875, thanks @straight-shoota) - โ Add
self
return type toUUID
constructor methods (#10539, thanks @straight-shoota) - ๐ Fix infinite loop for certain
StringPool
initial capacities (#11929, thanks @HertzDevil)
Time
- โ Add examples to
Time::Format
methods (#11713, thanks @ThunderKey) - ๐ Support day of year (
%j
) inTime
parsers (#11791, thanks @HertzDevil)
Compiler
- Hello WebAssembly! (MVP implementation) (#10870, thanks @lbguilherme)
- ๐ Fix compiler specs git integration for configurable default branch (#11754, thanks @yxhuvud)
- ๐
Crystal::ToSVisitor
: Removedecorate_*
methods (#11724, thanks @HertzDevil) - ๐ Use fewer symbols in the compiler source (#11625, thanks @HertzDevil)
- โ Add support for
--m*
flags tocrystal spec
andcrystal eval
(#11767, thanks @yxhuvud) - โ Add local compiler wrapper script for Windows (#11524, thanks @HertzDevil)
- โ Add
Crystal::Program#check_deprecation
(#11684, thanks @HertzDevil) - ๐จ Refactor symbols for primitive number kinds to enums (#11621, thanks @HertzDevil)
- โ Remove useless assignments II (#11843, thanks @IgorPolyakov)
- Limit the number of rendered overloads on signature mismatch (#10890, thanks @caspiano)
- ๐ Support "can't infer type parameter" error for uninstantiated generic modules (#11904, thanks @HertzDevil)
- ๐ Fix: Accept only option flags in
CRYSTAL_OPTS
for build commands (#11922, thanks @HertzDevil, @beta-ziliani) - Evaluate
LibLLVM::IS_LT_*
during macro expansion time (#11913, thanks @HertzDevil) - ๐ Fix incorrect var type inside nested exception handler (#11928, thanks @asterite)
- ๐ Fix: Look up return type in defining type (#11962, thanks @asterite)
Codegen
- ๐ (performance) Codegen: Do not always request value for
Proc#call
(#11675, thanks @HertzDevil)
Debugger
- ๐ Fix debug location of inlined
Proc#call
body (#11676, thanks @HertzDevil)
Generics
- ๐ Resolve non-type free variables in return type restrictions (#11861, thanks @HertzDevil)
- ๐ Fix recursive
pointerof
detection with generic splat type variables (#11811, thanks @HertzDevil)
Interpreter
- ๐ Fix for Crystal interpreter crash (#11717, thanks @wmoxam)
- ๐ Interpreter: support
Tuple#[]
with range literals (#11783, thanks @HertzDevil) - Interpreter: Promote arguments of variadic function calls (#11795, thanks @straight-shoota)
- Check if libraries are present using
dlopen
(#11852, thanks @FnControlOption) - ๐ Use
Crystal::Loader
in the interpreter (#11579, thanks @straight-shoota) - ๐ Improve
Crystal::Loader
errors (#11860, thanks @straight-shoota) - Enable interpreter integration specs for
YAML
(#11801, thanks @straight-shoota)
๐ Parser
- ๐ Fix parser error with semicolon + newline in parenthesized
Expressions
(#11769, thanks @straight-shoota) - ๐ Fix comment indentation in
ASTNode#to_s
(#11851, thanks @FnControlOption) - โ Add locations for
else
,ensure
,end
keywords (#11476, thanks @FnControlOption) - โ Add parser support to handle CRLF the same as LF (#11810, thanks @asterite)
- Lexer: use
Crystal::Token::Kind
enum instead of symbols (#11616, thanks @HertzDevil) - ๐ Support
Generic
nodes with no type variables (#11906, thanks @HertzDevil)
Semantic
- (breaking-change) Drop
skip_abstract_def_check
flag support (#9217, thanks @makenowjust) - โ Add error when instance variable is inherited from module and supertype (#11768, thanks @straight-shoota)
- Check file-private types for abstract defs and recursive structs (#11838, thanks @HertzDevil)
- ๐ Fix: Prevent eager
instance_sizeof
on structs (#11856, thanks @mattrberry) - ๐ Fix: Do not consider global
Path
in def parameter restriction as free variable (#11862, thanks @HertzDevil)
Tools
- Do not inherit from
Hash
in the compiler (#11707, thanks @HertzDevil) - ๐ Use
OptionParser
incrystal env
(#11720, thanks @HertzDevil)
Playground
- โก๏ธ Replace PNG icon with optimized SVG for playground (#7616, thanks @straight-shoota)
Other
- ๐ Update previous Crystal release - 1.3.2 (#11715, thanks @straight-shoota)
- โ Add
scripts/release-update.sh
(#11716, thanks @straight-shoota) - [Makefile] Honour
$CC
inEXPORT_CC
(#11548, thanks @straight-shoota) - ๐ Fix typo in GHA aarch64 config (#11793, thanks @straight-shoota)
- โ [CI] Test against LLVM 13 (#11343, thanks @straight-shoota)
- [CI] Use parameters in circleci config (#11714, thanks @straight-shoota)
- ๐จ Refactor
etc/completion.bash
(#11719, thanks @HertzDevil) - ๐ [CI] Renaming jobs to be
arch-os-job
orarch-build-job
(#11207, thanks @beta-ziliani) - ๐ Improve documentation for review and merge processes (#11800, thanks @straight-shoota)
- ๐ Improve section ordering in
scripts/github-changelog.cr
(#11770, thanks @straight-shoota) - ๐ Upload build artifacts to S3 bucket (#11902, thanks @matiasgarciaisaia, @straight-shoota)
- ๐ Fix
make install
for BSD (#11758, thanks @straight-shoota) - ๐ Fix typo (#11939, thanks @taupiqueur)
- โก๏ธ [CI] Update to shards 0.17.0 (#11930, thanks @straight-shoota)
- ๐ Use
be_empty
expectations in more specs (#11937, thanks @HertzDevil) - โก๏ธ [CI] Update distribution-scripts (#11969, thanks @straight-shoota)
- โ Add support for
-
v1.3.2 Changes
January 18, 2022Standard Library
Text
- ๐ Fix buffer overflow in
String#index
(#11747, thanks @asterite, @straight-shoota)
- ๐ Fix buffer overflow in
-
v1.3.1 Changes
January 13, 2022Standard Library
- โ Remove useless variable declarations in trailing position (#11704, thanks @HertzDevil)
Crypto
- ๐ Fix for missing
BIO_*
functions in OpenSSL < 1.1.0 (#11736, thanks @daliborfilus)
โ Runtime
- Remove string allocation from
GC_set_warn_proc
(#11729, thanks @straight-shoota)
Tools
- Doc generator: Fix escape HTML in code span (#11686, thanks @straight-shoota)
- ๐ Fix formatter error for
ProcLiteral
s withUnion
return type (#11709, thanks @HertzDevil)
Other
- ๐ Fix typos (#11725, thanks @kianmeng)
-
v1.3.0 Changes
January 06, 2022Compiler
- Refer to
T.class
as "metaclass" in error messages, not "class" (#11378, thanks @HertzDevil) - Create
Reason
enum for exhaustive case in nil-reason check (#11449, thanks @rymiel) - ๐ Improve cache directory behaviour on Windows (#11436, thanks @HertzDevil)
- ๐ Automatically detect MSVC tools on Windows via
vswhere
(#11496, thanks @HertzDevil) - Clean up .pdb files for temporary executables on MSVC (#11553, thanks @HertzDevil)
- Disable incremental linking on MSVC (#11552, thanks @HertzDevil)
- ๐ Allow multiple
--emit
compiler options to stack (#11556, thanks @HertzDevil) - ๐จ Refactor some type restrictions in the compiler (#11531, thanks @straight-shoota)
- Detect
cl.exe
's path for compiler specs requiring a C compiler (#11560, thanks @HertzDevil) - 0๏ธโฃ Increase default stack size on MSVC to 8 MB (#11569, thanks @HertzDevil)
- Resolve compiler wildcard require (#11562, thanks @straight-shoota)
- Compiler: use enums instead of symbols in various places (#11607, thanks @HertzDevil)
Codegen
- Disable specs for
StaticArray#sort_by
on broken targets (#11359, thanks @straight-shoota) - ๐ Fix link flag behaviour on Windows MSVC (#11424, thanks @HertzDevil)
- Attach debug locations to splat expansions inside array-like literals (#11655, thanks @HertzDevil)
- ๐ Use full name for private types' class variables during codegen (#11651, thanks @HertzDevil)
- ๐ Fix codegen when instantiating class methods of typedefs (#11636, thanks @HertzDevil)
- โ Add minimal load-time DLL support on Windows, support
dllimport
storage class (#11573, thanks @HertzDevil)
Debugger
- Attach debug locations to auto-generated
initialize
methods (#11313, thanks @HertzDevil) - Fix debug location for
~check_proc_is_not_closure
(#11311, thanks @HertzDevil)
Interpreter
crystal i
, a Crystal interpreter (#11159, thanks @asterite)- Implement FFI bindings (#11475, thanks @straight-shoota)
- โ Add
Crystal::Loader
(#11434, #11662, thanks @straight-shoota, @HertzDevil) - Mark
bswap32
instrinsic with interpreter primitive annotation (#11582, thanks @rymiel) - Split interpreter specs into separate files (#11578, thanks @straight-shoota)
- โช Workaround for GC issues in interpreter specs (#11634, thanks @straight-shoota)
๐ Parser
- ๐ Parser: allow keyword as named argument inside macros (#10377, thanks @asterite)
- ๐ Parser: add missing end location to
IsA
node (#11351, thanks @FnControlOption) - ๐ Fix node locations for
ProcLiteral
s with parameters (#11365, thanks @HertzDevil) - ๐ Fix parser error with named argument
end
in macro body (#11463, thanks @straight-shoota) - Report syntax error for too-long bin/hex/oct integer literals (#11447, thanks @oprypin)
- [lexer] Correctly increase nesting for escaped macro
unless
(#11440, thanks @rymiel) - ๐ Show proper syntax errors in some edge cases in the parser (#11446, thanks @oprypin)
- ๐ Fix parse
yield
with parenthesis (#11469, thanks @straight-shoota) - ๐จ Lexer number parsing refactor (#11211, thanks @BlobCodes)
- ๐ Allow underscores after a leading zero in
String#to_i
(regression fix) (#11672, thanks @BlobCodes) - ๐ Fix no comma before short block in
ToSVisitor
(#11677, thanks @homonoidian) - Unify format of "unexpected token" error (#11473, thanks @straight-shoota)
- ๐ Implement lexer int128 support (#11571, thanks @BlobCodes)
Semantic
- ๐ Show proper owner for
Class
's methods in error messages (#10590, thanks @HertzDevil) - Be more strict about
ProcNotation
variable declarations (#11372, thanks @HertzDevil) - ๐ Allow metaclass parameters in
Proc
literals and pointers (#11367, thanks @HertzDevil) - ๐ Fix top-level multi-assign splat variable not working in macros (#11600, thanks @HertzDevil)
- Replace
semantic
withassert_no_errors
in compiler specs whenever possible (#11288, thanks @HertzDevil) - 0๏ธโฃ Make
inject_primitives = false
default for semantic specs (#11297, thanks @HertzDevil) - โ Add spec for #8428 (#10073, thanks @docelic)
- โ Remove and resolve spurious cast and its associated FIXME (#11455, thanks @rymiel)
- โ Add pending spec for recursive abstract struct (#11470, thanks @HertzDevil)
Language
- (breaking-change) Require elements in 1-to-n assignments to match targets exactly (#11145, thanks @HertzDevil)
- (breaking-change) Require right-hand side of one-to-many assignments to be
Indexable
(#11545, thanks @HertzDevil) - ๐ Support splats on left-hand sides of multiple assignment expressions (#10410, thanks @HertzDevil)
- ๐ Make all AST nodes immutable through container-returning methods (#11397, thanks @HertzDevil)
- โ Add auto upcast for integer and float values (#11431, #11529, thanks @asterite, @beta-ziliani)
Standard Library
- ๐ Fix
Process::INITIAL_PWD
for non-existent path (#10525, thanks @straight-shoota) - Resolve some TODOs (#11369, thanks @straight-shoota)
- ๐จ Refactor some target flag uses (#11466, thanks @straight-shoota)
- ๐ Use
Slice(UInt8)#fill
in the standard library (#11468, thanks @HertzDevil) - Update
spec/win32_std_spec.cr
(#11432, #11637, thanks @HertzDevil) - ๐ Use strings instead of symbols in
#finalize
specs (#11619, thanks @HertzDevil) - ๐ Fix
Enum.parse
to handle case-sensitive member names (#11659, thanks @straight-shoota) - ๐ Improve docs for
Object#not_nil!
(#11661, thanks @straight-shoota)
Collection
- (breaking-change) Always use
start
as parameter in subrange-accepting methods (#11350, thanks @HertzDevil) - (breaking-change) Refactor
Indexable::Mutable#fill
's overloads (#11368, thanks @HertzDevil) - โ Add sorting methods to
StaticArray
(#10889, thanks @HertzDevil) - โ Add spaceship operator to
StaticArray
(#11364, thanks @henrikac) - ๐ (performance) Optimize
BitArray#reverse!
(#11363, thanks @HertzDevil) - ๐ (performance) Grow large arrays more slowly (#11482, thanks @mgomes)
- ๐ Fix docs for
Indexable::Mutable#map!
(#11349, thanks @HertzDevil) - Add
Slice#unsafe_slice_of
,#to_unsafe_bytes
(#11379, thanks @HertzDevil) - ๐ (performance) Avoid reallocation in
Enumerable#each_cons
andIterator#cons
's default reused array (#10384, thanks @HertzDevil) - ๐ Fix
Array#unshift
for large arrays (#11656, thanks @HertzDevil)
Crypto
- ๐ Support OpenSSL on Windows (#11477, thanks @HertzDevil)
- ๐ Encode OpenSSL version on Windows (#11516, thanks @HertzDevil)
- โ Add docs to
Crypto::Bcrypt
(#9647, thanks @j8r) - ๐ Fix
getrandom
for interpreter (#11624, thanks @straight-shoota) - ๐ (performance) Use more efficient method to split
UInt32
to bytes inCrypto::Blowfish
(#11594, thanks @BlobCodes)
Files
- Add bindings to
__xstat
,__fxstat
and__lxstat
for x86_64-linux-gnu (#11361, #11536, thanks @straight-shoota) - ๐ Fix
IO::Memory#to_s
appending to itself (#11643, thanks @straight-shoota)
LLVM
- ๐ Fix
LLVMExtDIBuilderCreateArrayType
argumentalignInBits
should beUInt64
(#11644, thanks @lbguilherme)
๐ฒ Log
- โ Add
Log.with_context
with kwargs (#11517, thanks @caspiano) - ๐จ Refactor
Log::BroadcastBackend#single_backend?
(#11530, thanks @straight-shoota)
Macros
- โ Add macro methods for
Return
,Break
,Next
,Yield
, and exception handlers (#10822, thanks @HertzDevil) - โ Add
Crystal::Macros::ProcNotation#resolve
and#resolve?
(#11373, thanks @HertzDevil) - ๐ Support explicit return types in
ProcLiteral
s (#11402, thanks @HertzDevil) - โ Add several missing
ASTNode
macro methods (#10811, thanks @HertzDevil) - ๐ Allow incomplete range arguments for
#[](Range)
macro methods (#11380, thanks @HertzDevil) - โ Add macro methods for
Metaclass
nodes (#11375, thanks @HertzDevil)
Networking
- ๐ Datagram support for
UNIXServer
(#11426, thanks @carlhoerberg) - ๐ Fix
WebSocket#stream
flushing for not exactly buffer size, add specs (#11299, thanks @will) - ๐ Fix flag for UNIX-like OS (#11382, thanks @straight-shoota)
- โ Add more
check_headers
toHTTP::Server::Response
(#11253, thanks @straight-shoota) - Enable
LogHandler
address for win32 (#11465, thanks @straight-shoota) - Enable two specs to run on all platforms (#11467, thanks @straight-shoota)
TCPServer
: explain how to get an ephermal port (#11407, thanks @rdp)- ๐ Fix
HTTP::Server::Response#close
when replaced output syncs close (#11631, thanks @straight-shoota)
Numeric
- (breaking-change) Fix
Random.rand(max : Float32)
returnFloat32
(#9946, thanks @j8r) - ๐ Fix
Math
linking errors on Windows MSVC (#11435, thanks @HertzDevil) - Implement compiler-rt
__multi3
for arm (#11499, thanks @straight-shoota) - ๐ Use MPIR for
Big*
numbers on Windows (#11412, thanks @HertzDevil) - Add
BigRational#to_big_r
(#11462, thanks @HertzDevil) - ๐ Move specs for arithmetic primitives to
primitives_spec
(#11298, thanks @HertzDevil) - Implement compiler-rt's 128-bit integer conversions to/from floats (#11437, thanks @HertzDevil)
- ๐ Fix
Number.significant
to return0
as is, not asFloat64
(#11321, thanks @Sija) - ๐ Fix inequality for floating-point NaNs (#11229, thanks @HertzDevil)
- โ Add workaround for 128-bit integer division/modulo on Windows (#11551, thanks @HertzDevil)
- Reject near-boundary and NaN values for
Float
-to-Int
conversions (#11230, thanks @HertzDevil)
โ Runtime
- โ GC/Boehm: Silence GC warnings about big allocations. (#11289, thanks @yxhuvud)
- Disable impossible spec on win32, previously marked as pending (#11451, thanks @straight-shoota)
- ๐ Support call stacks on Windows (#11461, thanks @HertzDevil)
- ๐ Make Windows PDB lookup relative to running executable (#11493, thanks @HertzDevil)
Serialization
- ๐ Parses JSON
UInt64
numbers. (#11395, thanks @hugopl) - ๐ Fix
YAML::Any
deserialize with alias (#11532, thanks @straight-shoota)
Specs
- ๐ Use enums instead of symbols for
Spec
-related types (#11585, thanks @HertzDevil)
System
- โ Add native Linux syscall interface (#10777, thanks @lbguilherme)
- ๐ Implement
Path.home
on Windows (#11503, thanks @HertzDevil) - ๐ Support
~\
for Windows paths inPath#expand
andFile.expand_path
(#11559, thanks @HertzDevil) - ๐ Support non-ASCII command-line arguments on Windows (#11564, thanks @HertzDevil)
- ๐ Enable
kernel_spec.cr
on Windows CI (#11554, thanks @HertzDevil) - ๐ Fix
getrandom
syscall was blocking and didn't had proper error checking (#11460, thanks @lbguilherme)
Text
- Regex: use
PCRE_UCP
(#11265, thanks @asterite) - โ Add missing
it
inUUID
spec (#11353, thanks @darkstego) - โ Add
Char#unicode_escape
and fix#dump
and#inspect
format (#11421, thanks @straight-shoota) - ๐ Fix
Char#letter?
to include all letter categories (#11474, thanks @straight-shoota) - Pass JIT Compile flag to
study
(#11325, thanks @Blacksmoke16) - โ Add Comparison operator to UUID (#11352, thanks @darkstego)
- โ Add
Char#printable?
(#11429, thanks @straight-shoota) - ๐ Fix
String#inspect
andChar#inspect
escape all non-printable characters (#11452, #11626, thanks @straight-shoota) - ๐ Support custom encodings on Windows through GNU libiconv (#11480, thanks @HertzDevil)
- (breaking-change) Change
Regex#name_table
to returnHash(Int32, String)
(#11539, thanks @straight-shoota) - ๐ Fix skip surrogates in
Char#succ
and#pred
(#11506, thanks @straight-shoota) - ๐ (performance) Improve Base64 decoding performance (#11094, thanks @BlobCodes)
- ๐จ Refactor syntax highlighter and add ANSI escape code highlighter for console (#11366, thanks @straight-shoota)
- ๐ Fix UTF-8 console input/output on Windows (#11557, thanks @HertzDevil)
- Implement Unicode grapheme clusters (#11472, #11611, thanks @straight-shoota)
- (breaking-change) Fix
Char#ascii_control?
restrict to ASCII characters (#11510, thanks @straight-shoota) - ๐ (performance) Performance: specify string sizes in advance (#11592, thanks @BlobCodes)
- ๐ (performance) Improve performance of
Char#to_s
(#11593, thanks @BlobCodes) - โ Add docs to
Colorize
(#11664, thanks @straight-shoota) - ๐ Support ANSI escape sequence output on more Windows consoles (#11622, thanks @HertzDevil)
Tools
- ๐ [docs] Fix ditto with additional lines (#11336, thanks @straight-shoota)
- ๐ [docs] Compact some JSON fields for search (#11438, thanks @rymiel)
- ๐ [docs] Add 404.html page (#11428, thanks @straight-shoota)
- ๐ [docs] Improve search input a11y for generated docs (#11604, thanks @chances)
- ๐ [docs] use
shard.yml
version when no git tag present (#11232, thanks @superhawk610) - [formatter] Fix weird interactions with comments near indentation (#11441, thanks @rymiel)
- [formatter] fix extra newline after comment in case else (#11448, thanks @rymiel)
- [formatter] Fix space between call name and parenthesized arg (#11523, thanks @straight-shoota)
- ๐จ [playground] Refactor
PlaygroundPage
resources list (#11608, thanks @straight-shoota)
Other
- ๐ Update previous Crystal release - 1.2.2 (#11430, thanks @straight-shoota)
- Prepare 1.3.0-dev (#11317, thanks @straight-shoota)
- [CI] Fix
test_dist_linux_on_docker
(#11512, thanks @straight-shoota) - ๐ Improve compiler spec helpers for macro methods (#11139, thanks @HertzDevil)
- โ Add Makefile to build samples (#11419, thanks @straight-shoota)
- ๐ Verify downloads' hashes in Windows CI (#11423, thanks @matiasgarciaisaia)
- ๐ Make the Windows compiler artifact more portable (#11494, thanks @HertzDevil)
- ๐ Allow compiler executable under test to be overridden (#11457, thanks @HertzDevil)
- ๐ Fix CI rules for building libiconv on Windows (#11504, thanks @HertzDevil)
- โก๏ธ Update license template (#11498, thanks @taupiqueur)
- ๐ Pin alpine repo for ssl libs to 3.15 (#11500, thanks @straight-shoota)
- ๐ Don't generate PDB for MPIR on Windows (#11521, thanks @HertzDevil)
- [Makefile] Check for
LLVM_CONFIG
only when LLVM is used (#11519, thanks @straight-shoota) - โก๏ธ Update distribution-scripts (#11514, #11515, thanks @straight-shoota)
- โ Add commit hash to Windows builds (#11538, thanks @HertzDevil)
- ๐ Support BuildTools and other VS variants in vswhere detection (#11534, thanks @neatorobito)
- ๐ Define
LIBXML_STATIC
when building xml2.lib on Windows (#11574, thanks @HertzDevil) - ๐ Improve texts in
README.md
(#11587, thanks @athix) - ๐ Include
shards
with Windows build artifacts (#11543, thanks @neatorobito) - ๐ [CI] Remove
libatomic_ops
(#11598, thanks @straight-shoota) - โก๏ธ Update NOTICE Copyright year to 2022 (#11679, thanks @matiasgarciaisaia)
- Refer to
-
v1.2.2 Changes
November 10, 2021Compiler
- x86_64 ABI: pass structs indirectly if there are no more available registers (#11344, thanks @ggiraldez)
- โ Add parentheses around type name for metaclasses of unions (#11315, thanks @HertzDevil)
- (regression) Restrict virtual metaclasses to themselves against
Class
(#11377, thanks @HertzDevil) - (regression) Add fallback for union debug type if current debug file is not set (#11390, thanks @maxfierke)
- (regression) Add missing debug locations to constant / class variable read calls (#11417, thanks @HertzDevil)
Standard Library
Collection
- ๐ Fix
BitArray#toggle
when toggling empty subrange (#11381, thanks @HertzDevil)
Crypto
- โก๏ธ Update for OpenSSL 3.0.0 (#11360, thanks @straight-shoota)
- ๐ท Restore libressl support and add CI for that (#11400, thanks @straight-shoota)
- Replace lib version comparisons by functional feature checks (#11374, thanks @straight-shoota)
โ Runtime
- โ Add support for DWARF 5 (#11399, thanks @straight-shoota)
- Retrieve filename of shared libs, use in stacktraces (#11408, thanks @rdp)
Other
-
v1.2.1 Changes
October 21, 2021Compiler
- โ Adding location to the Path returned by the literal expander for regex (#11334, thanks @beta-ziliani)
Standard Library
- โ Add support for LLVM 13 (#11302, thanks @maxfierke)
โ Runtime
- Move the
:nodoc:
flags to the right place to hide the__mul*
functions. (#11326, thanks @wyhaines)
Tools
- โก๏ธ Update markd subtree to v0.4.2 (#11338, thanks @straight-shoota)
-
v1.2.0 Changes
October 13, 2021Compiler
- ๐ Fix variance checks between generic instances for
Proc#call
and abstract defs. (#10899, thanks @HertzDevil) - ๐ Fix
proc_spec
forcing normal compilation instead of JIT (#10964, thanks @straight-shoota) - ๐ Fix
ProcNotation#to_s
remove whitespace for nil output type (#10935, thanks @straight-shoota) - Compiler: carry FileModule information inside Block (#11039, thanks @asterite)
- Splat values correctly inside return/break/next statements (#10193, thanks @HertzDevil)
- ๐ Handle already stripped column numbers in compiler exceptions (#11008, thanks @pyrsmk)
- Substitute unbound type parameters in virtual metaclass types (#11067, thanks @HertzDevil)
- ๐ Improve detection of instance variables in extended modules (#10554, thanks @HertzDevil)
- Don't compute instance variable initializers on unbound generic instances (#11000, thanks @HertzDevil)
- Syntax errors for invalid 128-bit integer literals (#10975, thanks @rymiel)
- ๐ Support auto-splatting in captured block literals (#10251, thanks @HertzDevil)
- Detect cyclic includes between generic modules (#10529, thanks @HertzDevil)
- โ Add stricter checks for arguments to macro methods on AST nodes (#10498, thanks @HertzDevil)
- Compiler: fix
is_a?
for virtual metaclass types (#11121, thanks @asterite) - ๐ Fix edge cases with unicode method names (#10978, thanks @HertzDevil)
- Don't emit debug info for unused variable declarations (#10957, thanks @HertzDevil)
- Fix
Call.def_full_name
print full block parameter (#10915, thanks @straight-shoota) - ๐ Allow union types to be unbound (#11166, thanks @HertzDevil)
- ๐ Make
typeof
start a nested lexical scope (#10796, thanks @HertzDevil) - ๐ Fix edge case for intersection between virtual metaclasses (#11185, thanks @HertzDevil)
- Compiler: don't trigger "already had enclosing call" for same object (#11202, thanks @asterite)
- Properly handle indirect arguments for external C functions (#11189, thanks @ggiraldez)
- ๐ Fix resolve generic argument in block output type restriction mismatch (#11186, thanks @straight-shoota)
- Secure array slicing when expanding macro for stack trace (#11109, thanks @pyrsmk)
- ๐ Fix debug locations for
Proc
pointers (#11243, thanks @HertzDevil) - ๐ Allow assignments from generic instance metaclasses to virtual metaclasses (#11250, thanks @HertzDevil)
- Refactor
CrystalPath#find_in_path_relative_to_dir
for readability (#10876, #10990, #10988, thanks @straight-shoota) - ๐ Allow constants and instance / class variables as receivers for setter proc pointers (#10741, thanks @HertzDevil)
- Do not use globals for regex (#10951, thanks @asterite)
- Define type filtering through an intersection operation (#10781, thanks @HertzDevil)
- ๐ Fix no overflow check when primitive int converts to same type (#11003, thanks @HertzDevil)
- Attach debug locations to generated internal LLVM functions (#10934, thanks @HertzDevil)
- โ Add helpful error message for invalid number literal like '.42' (#4665, thanks @MakeNowJust)
- โ Add
CrystalPath.expand_paths
, expand relative to compiler path (#11030, thanks @straight-shoota) - Clarify usage of "arguments" and "parameters" in error messages (#10378, thanks @HertzDevil)
- ๐ (performance) Don't generate type IDs for formal generic instances (#11167, thanks @HertzDevil)
- ๐ (performance) Don't generate unique type IDs for virtual metaclasses (#11188, thanks @HertzDevil)
- โ Add an environment variable for dumping type IDs (#11168, thanks @HertzDevil)
- ๐ Allow underscores in macro
for
's loop variables (#11141, thanks @HertzDevil) - ๐ (performance) Compiler: cache cleanup transformer (#11197, thanks @asterite)
- Avoid needless union in
LLVM::ABI::AArch64#homogeneous_aggregate?
(#11199, thanks @asterite) - ๐ Removing ThinLTO support (#11194, thanks @beta-ziliani)
- Error if abstract def implementation is inherited from supertype (#11056, thanks @straight-shoota)
- ๐ (performance) Add
inject_primitives: false
to macro_spec (#11269, thanks @straight-shoota) - Primitive annotations for interpreter (#11147, thanks @asterite)
- ๐ Support generic module instances in
TypeNode#includers
(#11116, thanks @HertzDevil) - Reject hash literals with mixed syntax (#11154, thanks @MakeNowJust)
Language
- ๐ Make
.as?(NoReturn)
always returnnil
(#10896, thanks @HertzDevil) - Compiler: make
is_a?(union)
work correctly for virtual types (#11176, thanks @asterite) - ๐ท Adjust docs for
Crystal::Macros::HashLiteral#[]
(#10930, thanks @kevinsjoberg) - ๐ Fix path lookup when ancestor finds type with same name as current scope (#10901, thanks @HertzDevil)
- ๐ Fix several compile-time operations on generic instance metaclasses (#11101, thanks @HertzDevil)
- ๐ Make
#is_a?
in macros respect the AST node hierarchy (#11062, thanks @HertzDevil) - โ Add docs to string methods in
SymbolLiteral
andMacroId
(#9298, thanks @MakeNowJust) - โ Add clarification about when
instance_vars
can be called (#11171, thanks @willhbr) - โ Add
file_exists?
macro method (#10540, thanks @Sija)
Standard Library
- (breaking-change) Change nonsense return types to Nil: uncategorized (#10625, thanks @oprypin)
- (breaking-change) Change nonsense return types to Nil in formatter classes (#10623, thanks @oprypin)
- โ Add base64 to prelude (#11050, thanks @straight-shoota)
- โ Remove calls to deprecated
SystemError.from_winerror
(#11220, thanks @straight-shoota) - โ Add support for LLVM 12 (#10873, #11178, thanks @maxfierke, @Blacksmoke16)
- Examples: fix (2021-09) (#11234, thanks @maiha)
- Don't use
:nodoc:
when overriding public methods (#11096, thanks @HertzDevil) - โ Add internal registry implementation for win32 (#11137, thanks @straight-shoota)
Collection
- (breaking-change) Move
Array#product
toIndexable#cartesian_product
(#10013, thanks @HertzDevil) - Disallow
Slice(T).new(Int)
whereT
is a union of primitive number types (#10982, thanks @HertzDevil) - ๐ Make
Array#transpose
,Enumerable#reject
,Enumerable#to_h
work with tuples (#10445, thanks @HertzDevil) - ๐ Fix
Enumerable#each
block return type (#10928, thanks @straight-shoota) - ๐ Fix key type for empty
NamedTuple
beSymbol
(#10942, thanks @caspiano) - ๐ Fix overflow in
BitArray#[](Int, Int)
for sizes between 33 and 64 (#10809, thanks @HertzDevil) - ๐ Fix
Range#step
for non-integerSteppable
types (#11130, thanks @straight-shoota) - ๐ (performance) Construct an array literal in
NamedTuple#map
(#10950, thanks @caspiano) - โ Add
Slice#fill
(#10924, thanks @HertzDevil) - โ Add range overloads for
BitArray#toggle
(#10743, thanks @HertzDevil) - โ Add stable sort implementation to
Slice
,Array
andIndexable::Mutable
(#10163, #11029, #11254, thanks @MakeNowJust, thanks @straight-shoota) - ๐ Allow
Enumerable(T)#reduce
's return type to differ fromT
(#11065, thanks @HertzDevil) - Implement
Enumerable#tally_by
(#10922, thanks @caspiano) - โ Add the
Indexable::Mutable(T)
module (#11059, thanks @HertzDevil) - โ Remove restriction of bsearch block output type (#11212, thanks @straight-shoota)
- โ Add and improve type restrictions of block arguments (#10467, #11246, #11267
- ๐ (performance) Optimize
#rotate!
(#11198, thanks @HertzDevil)
Concurrency
- ๐ Fix Documentation of
Fiber.timeout
(#11271, thanks @toddsundsted) - ๐ (performance)
Scheduler#reschedule
: Shortcut lookup for current fiber. (#11156, thanks @yxhuvud) - โ Add sleep support to win32 event loop (#10605, thanks @straight-shoota)
Files
- (breaking-change) Change nonsense return types to Nil in IO-related methods (#10621, thanks @oprypin)
- ๐ Fix
File.match?
to acceptPath
type aspath
argument (#11075, thanks @fishnibble) - โ Add
FileUtils
method specs withString
andPath
arguments (#10987, thanks @straight-shoota) - 0๏ธโฃ Make
IO#read_char
's default behaviour UTF-8-strict (#10446, thanks @HertzDevil) - ๐ Fix glob with multiple recurse patterns (#10813, thanks @straight-shoota)
- IO: fix bug in
gets
without peek involving\r
and limit (#11241, thanks @asterite) - ๐ Make
FileUtils.mv
work across filesystems (#10783, thanks @naqvis) - ๐ (performance) Improve performance of
Path#dirname
andPath#extension
(#11001, thanks @BlobCodes)
Networking
- (breaking-change) Change nonsense return types to
Nil
in HTTP-related methods andLog
(#10624, thanks @oprypin) - ๐ Fix trailing
rescue
syntax (#11083, thanks @straight-shoota) - ๐ Fix spec for
HTTP::Params
can't run on its own (#11128, thanks @asterite) - ๐ Fix parsing cookie
Domain
attribute with leading dot (#11098, thanks @mamantoha) - Rescue
OpenSSL::SSL::Error
inHTTP::Server#handle_client
(#11146, thanks @straight-shoota) - ๐ Fix
TCPSocket
constructors (#11049, thanks @straight-shoota) - ๐ Support basic auth from
URI
in websockets (#10854, thanks @willhbr) - ๐ท Tag std specs that need network access (#11048, thanks @toshokan)
- Proper handling of
max-age
andexpires
for cookies (#10564, thanks @straight-shoota, @watzon) - Retry
HTTP::Client
requests once if io is closed (#11088, thanks @carlhoerberg) - Implement
Socket
for win32 (#10784, thanks @straight-shoota) - โ Add
URI.encode_path
and deprecateURI.encode
(#11248, thanks @straight-shoota)
Numeric
- (breaking-change) Refine type restriction of
Math.frexp(BigFloat)
(#10998, thanks @straight-shoota) - ๐ Fix
BigInt#to_s
emitting null bytes for certain values (#11063, thanks @HertzDevil) - ๐ Fix
Float#humanize
for values outside1e-4...1e15
(#10881, thanks @straight-shoota) - โ Add type restrictions and fix return types of
BigFloat#to_x
methods (#10996, thanks @straight-shoota) - โ Add integer square root (#10549, thanks @kimburgess)
- โ Add negative exponential support to BigDecimal (#10892, thanks @stakach)
- Add
#next_float
and#prev_float
toFloat32
andFloat64
(#10908, thanks @HertzDevil) - โ Add precision parameter to
Int#to_s
(#10926, thanks @HertzDevil) - ๐ (performance) Improve Int parsing performance (#11093, thanks @BlobCodes)
- Implement
Int128
compiler-rt methods (#11206, thanks @BlobCodes) - ๐ Fix
BigDecimal
operations with floats (#10874, thanks @stakach) - โ Add
String#to_(u/i)128(?)
methods (#11245, thanks @BlobCodes)
โ Runtime
- Extract
libunwind
from callstack (#11205, thanks @straight-shoota)
Serialization
- (breaking-change) Change nonsense return types to
Nil
: JSON and YAML (#10622, thanks @oprypin) - (breaking-change) Add type restriction and conversion to
YAML::PullParser#location
(#10997, thanks @straight-shoota) - ๐ Allow EOF IO passed to
JSON::PullParser.new
(#10864, thanks @Blacksmoke16) - Quote the named tuple's keys on deserialization (#10919, thanks @Blacksmoke16)
- ๐จ Refactor
JSON::PullParser#consume_number
to use stdlib number parsing (#10447, thanks @straight-shoota) - XML Namespace improvements (#11072, thanks @Blacksmoke16)
- โ Add JSON/YAML serialization to
URI
(#10404, thanks @straight-shoota)
Specs
- โ Add missing require in
iterator_spec
(#11148, thanks @asterite) - โ Add missing requires to run a couple of specs standalone (#11152, thanks @asterite)
- ๐ Allow
describe
without requiring an argument (#10974, thanks @straight-shoota)
System
- SystemError: Fix inconsistent signature. (#11002, thanks @yxhuvud)
Text
- (breaking-change) Deprecate
String#unsafe_byte_at
(#10559, thanks @straight-shoota) - (breaking-change) Rename
IO#write_utf8
to#write_string
. (#11051, thanks @straight-shoota) - ๐ Use
#write_string
instead of#write
whenever writing strings to unknownIO
s (#11011, thanks @HertzDevil) - Don't use
#write_byte
whenever writing ASCII characters to unknownIO
s (#11124, thanks @HertzDevil) - ๐ Make
Int#chr
reject surrogate halves (#10451, thanks @HertzDevil) - CSV: don't eagerly check next char after newline (#11174, thanks @asterite)
- ๐ Fix link on regex.cr (#11204, thanks @gemmaro)
- ๐ Disallow non-UTF-8 encoding settings for
String::Builder
(#11025, thanks @HertzDevil) - โก๏ธ Unicode: update to version 14.0.0 (#11215, thanks @Blacksmoke16)
Tools
- Formatter: Handle
(-> )
correctly (#10945, thanks @HertzDevil) - ๐ Use markd for markdown rendering in the compiler (#11040, thanks @straight-shoota)
- Formatter: Handle leading tuple literals in multi-expression
return
/break
/next
properly (#10597, thanks @HertzDevil) - Include parent headings in anchor links (#9839, thanks @Blacksmoke16)
- ๐ Fix formatting nested multiline array and tuple (#11153, thanks @MakeNowJust)
crystal init
: Improve transformation of project name with hyphens (#11170, thanks @Kanezoh)- ๐ Fix formatting generic types with suffix (#11187, thanks @MakeNowJust)
- โ Make
WARNING
an admonition keyword (#10898, thanks @HertzDevil) - ๐จ Refactor hierarchy printers (#10791, thanks @HertzDevil)
Other
- ๐ Fix typos (#11045, #11163, #11138, hanks @toshokan, thanks @MakeNowJust, thanks @schmijos)
- โก๏ธ Update readme to point to IRC channel on libera.chat (#11024, thanks @jhass)
- โก๏ธ [CI] Update ruby-install (#11276, thanks @straight-shoota)
- ๐ง [CI] Remove
test_linux_32
and add smoke test for 32-bit gnu (#11127, thanks @straight-shoota) - ๐ฆ [CI] Remove obsolete
package_build
workflow (#11240, thanks @straight-shoota) - ๐ [CI] Add build matrix with 1.0.0 and 1.1.1 (#11278, thanks @straight-shoota)
- โก๏ธ [CI] Update aarch64.yml (#11160, thanks @beta-ziliani)
- โก๏ธ [CI] Update distribution-scripts (universal darwin & demote alpine to 3.12) (#11228, thanks @bcardiff)
- โก๏ธ Update shards 0.16.0 (#11292, thanks @straight-shoota)
- ๐ Update previous release Crystal 1.1.0 (#10955, thanks @straight-shoota)
- ๐ Merge changelog entry for 1.1.1 (#11028, thanks @straight-shoota)
- ๐ Update previous release Crystal 1.1.1 (#11053, thanks @straight-shoota)
- PR template (#10894, thanks @beta-ziliani)
- โ Add github-changelog script (#11155, thanks @straight-shoota)
- โ Add
make install
(#10878, thanks @straight-shoota) - [CI] Sanitize version from branch name (#11294, thanks @straight-shoota)
- โก๏ธ Update libgc to 8.2.0 (#11293, thanks @straight-shoota)
- ๐ [CI] Unify
maintenance_release
andtagged_release
workflows (#11273, thanks @straight-shoota) - โก๏ธ [CI] Update distribution-scripts (make install) (#11307, thanks @straight-shoota)
- ๐ [CI] Enable publish docker images on tagged release (#11309, thanks @straight-shoota)
- โก๏ธ [CI] Update distribution-scripts (fix for libgc in alpine Docker image) (#11310, thanks @straight-shoota)
- ๐ [CI] Pin macOS runner to 10.15 (#11282, thanks @straight-shoota)
- [CI] Fix
push_obs_nightly
(#11301, thanks @straight-shoota) - โก๏ธ [CI] Update distribution-scripts (#11285, thanks @straight-shoota)
- ๐ [CI] Remove i386 builds (#11287, thanks @straight-shoota)
- ๐ Fix variance checks between generic instances for
-
v1.1.1 Changes
July 26, 2021Language changes
- โช Revert name of top-level module to
main
(#10993, thanks @beta-ziliani)
Standard Library
- ๐ Fix missing required args for
Socket::Addrinfo::Error.new
(#10960, thanks @straight-shoota) - ๐ Fix disable unnecessary spec on win32 (#10971, thanks @straight-shoota)
- โ Remove incorrect type restrictions on index methods with offset (#10972, thanks @straight-shoota)
- ๐ Fix: documentation of
#step
inNumber
andChar
(#10966, #11006, thanks @beta-ziliani and @straight-shoota)
Compiler
- ๐ Fix parsing macro body with escaped backslash in literal (#10995, thanks @straight-shoota)
Other
- โก๏ธ Updating aarch64 actions to use 1.0.0 images (#10976, thanks @beta-ziliani)
- โช Revert name of top-level module to