Releases: crystal-lang/crystal
Releases Β· crystal-lang/crystal
1.7.2
Runtime
- Fix: Add
Nil
return type restrictions toload_debug_info
(#12992, thanks @straight-shoota)
Compiler
Codegen
- Add error handling to compiler when linker is unavailable (#12899, thanks @straight-shoota)
Parser
- Revert "Parser: Fix restrict grammar for name and supertype in type def (#12622)" (#12977, thanks @straight-shoota)
Other
- Update
VERSION
to1.7.2-dev
(#12993, thanks @straight-shoota)
1.7.1
Tools
Playground
- Fix baked-in path in playground to resolve at runtime (#12948, thanks @straight-shoota)
Other
- Update
VERSION
to 1.7.1-dev (#12950, thanks @straight-shoota)
1.7.0
Language
Standard Library
- Improve
Benchmark
docs (#12782, thanks @r00ster91, @straight-shoota) - Improve documentation for
Object#to_s
and#inspect
(#9974, thanks @straight-shoota) - Add methods to manipulate semantic versions (#12834, thanks @gabriel-ss)
- Add types to methods with defaults (#12837, thanks @caspiano)
- examples: fix (2022-10) (#12665, thanks @maiha)
- Fix documentation for
Pointer#move_to
(#12677, thanks @TheEEs) - (performance) Eliminate
nil
from many predicate methods (#12702, thanks @HertzDevil) - examples: fix (2022-12) (#12870, thanks @maiha)
Collection
- Fix missed elements in
Hash#select!(keys : Enumerable)
(#12739, thanks @caspiano) - Add missing docs for
Indexable
combinations methods (#10548, thanks @keidax) - (performance) Optimize
Range#sample(n)
for integers and floats (#12535, thanks @straight-shoota) - Add
Iterable#each_cons_pair
(#12726, thanks @caspiano) - Add links to equivalent
Iterator
methods inIterable
(#12727, thanks @caspiano) - (performance) Optimize
Hash#select(Enumerable)
and#merge!(Hash, &)
(#12737, thanks @HertzDevil) - Add
Indexable#rindex!
method variant (#12759, thanks @Sija) - (performance) Use mutating collection methods (#12644, thanks @caspiano)
- Fix
Enum#to_s
for flag enum containing named and unnamed members (#12895, thanks @straight-shoota)
Concurrency
- Allow the EventLoop implementation to be detected at runtime (#12656, thanks @lbguilherme)
- (performance) Optimize uniqueness filter in
Channel.select_impl
(#12814, thanks @straight-shoota) - Implement multithreading primitives on Windows (#11647, thanks @HertzDevil)
Crypto
- (breaking-change) Implement
Digest
class inDigest::CRC32
andDigest::Adler32
(#11535, thanks @BlobCodes) - Fix
OpenSSL::SSL::Context::Client#alpn_protocol=
(#12724, thanks @jaclarke) - Fix
HTTP::Client
certificate validation error on FQDN (host with trailing dot) (#12778, thanks @compumike) - Enable
arc4random(3)
on all supported BSDs and macOS/Darwin (#12608, thanks @dmgk)
Files
- Fix: Read
UInt
in zip directory header (#12822, thanks @pbrumm) - Add
File.executable?
for Windows (#9677, thanks @nof1000)
Macros
- Fix
TypeNode#nilable?
for root types (#12354, thanks @HertzDevil) - Add argless
#annotations
overload (#9326, thanks @Blacksmoke16) - Add specs for addition between
ArrayLiteral
andTupleLiteral
(#12639, thanks @caspiano) - Add
ArrayLiteral#-(other)
andTupleLiteral#-(other)
(#12646, #12916 thanks @caspiano, @straight-shoota)
Networking
- (breaking-change) Add
HTTP::Headers#serialize
(#12765, thanks @straight-shoota) - Ensure
HTTP::Client
closes response when breaking out of block (#12749, thanks @straight-shoota) - Add
HTTP::Server::Response#redirect
(#12526, thanks @straight-shoota) - (performance) Websocket: write masked data to temporary buffer before sending it (#12613, thanks @asterite)
- Validate cookie name prefixes (#10648, thanks @Blacksmoke16)
IPAddress#loopback?
should consider::ffff:127.0.0.1/104
loopback too (#12783, thanks @carlhoerberg)
Numeric
- Support new SI prefixes in
Number#humanize
(#12761, thanks @HertzDevil) - Fix
BigInt#%
for unsigned integers (#12773, thanks @straight-shoota) - [WASM] Add missing
__powisf2
and__powidf2
compiler-rt functions (#12569, thanks @lbguilherme) - Add docs for
Int#downto
(#12468, thanks @yb66) - Upgrade the Dragonbox algorithm (#12767, thanks @HertzDevil)
- Support scientific notation in
BigDecimal#to_s
(#10805, thanks @HertzDevil) - Add
#bit_reverse
and#byte_swap
for primitive integers (#12865, thanks @HertzDevil) - Fix Number comparison operator docs (#12880, thanks @fdocr)
Runtime
Exception::CallStack
: avoid allocations inLibC.dl_iterate_phdr
(#12625, thanks @dmgk)- Fix explicit type conversion to u64 for
GC::Stats
(#12779, thanks @straight-shoota) - Add custom
message
parameter to#not_nil!
(#12797, thanks @straight-shoota) - Refactor specs for
Enum#to_s
usingassert_prints
(#12882, thanks @straight-shoota)
Serialization
- (performance) Leverage
GC.malloc_atomic
for XML (#12692, thanks @HertzDevil) - Refactor libXML error handling to remove global state (#12663, #12795, thanks @straight-shoota)
- Use qualified type reference
YAML::Any
(#12688, thanks @zw963) - Automatically cast Int to Float for
{JSON,YAML}::Any#as_f
(#12835, thanks @compumike)
Specs
- Print seed info at start and end of spec output (#12755, thanks @straight-shoota)
System
- (breaking) Rename
File.real_path
to.realpath
(#12552, thanks @straight-shoota) - (breaking-change) Drop FreeBSD 11 compatibility code (#12612, thanks @dmgk)
- Trap when trying to raise wasm32 exceptions (#12572, thanks @lbguilherme)
- Use single helper method to pass UTF-16 strings to Windows (#12695, #12747, thanks @HertzDevil, @straight-shoota)
- Implement
flock_*
fiber-aware, without blocking the thread (#12861, #12728, thanks @straight-shoota) - Implement
flock_*
for Win32 (#12766, thanks @straight-shoota) - Add docs to
ENV#has_key?
(#12781, thanks @straight-shoota) - Improve specs by removing absolute path references (#12776, thanks @straight-shoota)
- Update FreeBSD LibC types (#12651, thanks @dmgk)
- Organize
Process
specs (#12889, thanks @straight-shoota) - Add tests for
Process::Status
(#12881, thanks @straight-shoota)
Text
- Raise
IndexError
on unmatched subpattern forMatchData#begin
and#end
(#12810, thanks @straight-shoota) - Swap documentation for
String#split
array and block versions (#12808, thanks @hugopl) - Add
String#index/rindex!
methods (#12730, thanks @Sija) - Re-organize and enhance specs for
Regex
andRegex::MatchData
(#12788, [#12789](https://github.com/crystal-lang/...
1.6.2
Language
- Fix
VirtualMetaclassType#implements?
to ignore base type (#12632, thanks @straight-shoota)
Compiler
- Compiler: handle yield expressions without a type (#12679, thanks @asterite)
- Partial revert "Compiler: refactor and slightly optimize merging two types (#12436)" (#12709, thanks @caspiano)
Semantic
Other
- (security) CI: Update to OpenSSL 3.0.7 for bundled lib on Windows (#12712, thanks @beta-ziliani)
1.6.1
Compiler
Interpreter
- Interpreter (repl): migrate types even if their size remains the same (#12581, thanks @asterite)
- Unbreak the interpreter on FreeBSD (#12600, thanks @dmgk)
- Fix FFI specs on release builds (#12601, thanks @HertzDevil)
- Adding welcome message to the interpreter (#12511, thanks @beta-ziliani)
Semantic
- Treat single splats with same restriction as equivalent (#12584, thanks @HertzDevil)
Tools
Formatter
Playground
- Fix origin validation in playground server for localhost (#12599, thanks @straight-shoota)
Other
- Fix doc typos in
Socket::IPAddress
(#12583, thanks @Blacksmoke16) - Fix building Wasm32 on Crystal 1.6 (Regression) (#12580, thanks @lbguilherme)
- Bump version to 1.6.1-dev (#12588, thanks @straight-shoota)
- Disable failing specs on Windows CI (#12585, thanks @HertzDevil)
- Detect
llvm-configXX
while building compiler (#12602, thanks @HertzDevil)
1.6.0
Language
- Add 'wasm_import_module' option to the
@[Link]
annotation (#11935, thanks @lbguilherme)
Standard Library
- Use
GC.malloc_atomic
withGC.realloc
, notPointer#realloc
(#12391, thanks @HertzDevil) - Improve syntax highlighter (#12409, thanks @I3oris)
- Enable miscellaneous parts of the standard library on Windows (#12281, thanks @HertzDevil)
- Use interpreter to run std spec tests (#12355, thanks @cyangle)
- Remove most uses of
Symbol
variables in standard library specs (#12462, thanks @HertzDevil) - Use
@[::Primitive]
and@[::Flags]
where necessary (#11900, thanks @HertzDevil) - Document how to change base type of an enum (#9803, thanks @Blacksmoke16)
- Spec: bump and document timeouts in interpreted mode (#12430, thanks @asterite)
Collection
- Refactor and improve
NamedTuple
deserialization from JSON and YAML (#12008, thanks @HertzDevil) - (performance) Optimize
BitArray#tally(hash)
(#11909, thanks @HertzDevil) - Use
Slice#unsafe_slice_of
and#to_unsafe_bytes
in the standard library and compiler (#12280, thanks @HertzDevil) - (performance) Optimize block-less overloads of
BitArray#index
and#rindex
(#12087, thanks @HertzDevil) - Support tuple metaclass indexers with non-literal arguments (#11834, thanks @HertzDevil)
- Add
Indexable#index!
overloads withoffset
parameter (#12089, thanks @HertzDevil)
Concurrency
- Fix fiber clean loop on Windows (#12300, thanks @HertzDevil)
- Enable
Mutex
on Windows (#12213, thanks @HertzDevil)
Crypto
- Add support for Bcrypt algorithm version 2y (#12447, thanks @docelic)
- Allow using
U/Int128
inRandom
(#11977, thanks @BlobCodes)
Files
- (breaking-change) Define
#system_echo
and#system_raw
on all systems (#12352, thanks @HertzDevil) - (breaking-change) Do not expose
Crystal::System::FileInfo
throughFile::Info
(#12385, thanks @HertzDevil) - Fix
IO.pipe
spec on FreeBSD (#12324, thanks @dmgk) - Fix docs error for
File.match?
**
globbing pattern. (#12343, thanks @zw963) - Add
Dir#info
(#11991, thanks @didactic-drunk) - Implement
IO::FileDescriptor
's console methods on Windows (#12294, thanks @HertzDevil) - Fix typo:
LibC::DT_LINK
->DT_LNK
(#11954, thanks @HertzDevil) - Document
IO::FileDescriptor#info
(#12384, thanks @HertzDevil) - (performance) Introduce
IO::DEFAULT_BUFFER_SIZE
(#12507, thanks @straight-shoota) - Add support for
IO::FileDescriptor
staying open on finalize (#12367, thanks @refi64)
Macros
- Enhance
record
documentation (#12334, thanks @straight-shoota)
Networking
- Add
Socket::IPAddress.valid?
(#12489, #10492, thanks @straight-shoota) - Fix
HTTP::Client#exec
to abort retry when client was closed (#12465, thanks @straight-shoota) - Fix specs with side effects (#12539, thanks @straight-shoota)
- Fix
HTTP::Client
implicit compression with retry (#12536, thanks @straight-shoota) HTTP::StaticFileHandler
: Reduce max stat calls from 6 to 2 (#12310, thanks @didactic-drunk)- Add warning about concurrent requests in
HTTP::Client
(#12527, thanks @straight-shoota)
Numeric
- Add full integer support to
sprintf
andString#%
(#10973, thanks @HertzDevil) - Make
Float#to_s
ignore NaN sign bit (#12399, thanks @HertzDevil) - Make
sprintf
andString#%
ignore NaN sign bit (#12400, thanks @HertzDevil) - Fix
Complex#to_s
imaginary component sign for certain values (#12244, thanks @HertzDevil) - More accurate definition of
Complex#sign
(#12242, thanks @HertzDevil) - Fix overflow for
rand(Range(Int, Int))
when signed span is too large (#12545, thanks @HertzDevil) - (performance) Add
#rotate_left
and#rotate_right
for primitive integers (#12307, thanks @HertzDevil) - (performance) Optimize
BigDecimal#div
for inexact divisions (#10803, thanks @HertzDevil) - Implement the Dragonbox algorithm for
Float#to_s
(#10913, thanks @HertzDevil) - Add
U/Int128
toisqrt
spec (#11976, thanks @BlobCodes)
Runtime
- Fix: Parse DWARF5 Data16 values (#12497, thanks @stakach)
- macOS: Fix call stack when executable path contains symlinks (#12504, thanks @HertzDevil)
- WASM: Add support for
wasi-sdk 16
: don't rely on__original_main
(#12450, thanks @lbguilherme)
Serialization
- Fix YAML serialization class name ambiguity (#12537, thanks @hugopl)
- Allow non-type converter instances in
ArrayConverter
andHashValueConverter
(#10638, thanks @HertzDevil) - Document
after_initialize
method foryaml
andjson
serializers (#12530, thanks @analogsalad)
System
- Add missing fields to
LibC::Passwd
on FreeBSD (#12315, thanks @dmgk) - Add platform-specific variants of
Process.parse_arguments
(#12278, thanks @HertzDevil) - Make
Dir.current
respect$PWD
(#12471, thanks @straight-shoota)
Text
- Fix
String
shift state specs on FreeBSD (#12339, thanks @dmgk) - Disallow mixing of sequential and named
sprintf
parameters (#12402, thanks @HertzDevil) - Fix
Colorize
doc example (#12492, thanks @zw963) - (performance) Optimize
String#downcase
andString#upcase
for single byte optimizable case (#12389, thanks @asterite) - (performance) Optimize
String#valid_encoding?
(#12145, thanks @HertzDevil) - Implement
String#unicode_normalize
andString#unicode_normalized?
(#11226, thanks @HertzDevil) - Support parameter numbers in
sprintf
(#12448, thanks @HertzDevil) - Use
LibC.malloc
instead ofGC.malloc
for LibPCRE allocations (#12456, thanks @lbguilherme) - Unicode: Update to version 15.0.0 (#12479, thanks @HertzDevil)
- Avoid free call in interpreted mode (#12496, thanks @straight-shoota)
Compiler
- Improve recursive splat expansion detection (#11790, thanks @asterite)
- Compiler: fix
#to_s
for empty parameters of lib funs (#12368, thanks @HertzDevil) - Compiler: transform
Proc(*T, Void)
toProc(*T, Nil)
(#12388, thanks @asterite) - Compiler: indent
begin
Expression
s that are direct node children (#12362, thanks @HertzDevil) - Compiler: add missing location to node on literal expander for array (#12403, thanks @asterite)
- Compiler: a generic class type can also be reference-like ([#12347](https:...
1.5.1
Standard Library
- Fix
Class#nilable?
for recursive unions and root types (#12353, thanks @HertzDevil)
Numeric
- Fix
Float#abs
andNumber#format
for-0.0
(#12424, thanks @straight-shoota)
Text
- Fix null dereference when passing empty slice to
Base64.encode
(#12377, thanks @dscottboggs)
Compiler
- Do not check abstract def parameter names on abstract types and modules (#12434, thanks @HertzDevil)
Codegen
- Compiler/codegen: reset
@needs_value
(#12444, thanks @asterite) - Fix
homogeneous_aggregate?
check for aarch64 types (#12445, thanks @mattrberry)
Semantic
- Compiler: don't eagerly check cast type (#12272, thanks @asterite)
- Fix type restriction augmenter for
Union(*T)
and similar (#12438, thanks @asterite)
Tools
Formatter
- Formatter: Fix assign followed by comment (#12319, thanks @straight-shoota)
- Handle formatting annotated method parameters (#12446, thanks @Blacksmoke16)
Other
- Update distribution-scripts (#12359, thanks @straight-shoota)
- Update distribution-scripts (#12333, thanks @straight-shoota)
- [CI] Bumping xcode to 13.4.1 (#12264, thanks @beta-ziliani)
1.5.0
1.5.0 (2022-07-06)
Language
- (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
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
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
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
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](https://github....
1.4.1
Standard Library
Collection
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
1.4.0
Language
- 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
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::F...