Releases: crystal-lang/crystal
Releases Β· crystal-lang/crystal
Release list
1.7.2
Runtime
- Fix: Add
Nilreturn 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
VERSIONto1.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
VERSIONto 1.7.1-dev (#12950, thanks @straight-shoota)
1.7.0
Language
Standard Library
- Improve
Benchmarkdocs (#12782, thanks @r00ster91, @straight-shoota) - Improve documentation for
Object#to_sand#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
nilfrom 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
Indexablecombinations 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
Iteratormethods 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_sfor 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
Digestclass inDigest::CRC32andDigest::Adler32(#11535, thanks @BlobCodes) - Fix
OpenSSL::SSL::Context::Client#alpn_protocol=(#12724, thanks @jaclarke) - Fix
HTTP::Clientcertificate 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
UIntin 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
#annotationsoverload (#9326, thanks @Blacksmoke16) - Add specs for addition between
ArrayLiteralandTupleLiteral(#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::Clientcloses 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/104loopback 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
__powisf2and__powidf2compiler-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_reverseand#byte_swapfor 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
messageparameter to#not_nil!(#12797, thanks @straight-shoota) - Refactor specs for
Enum#to_susingassert_prints(#12882, thanks @straight-shoota)
Serialization
- (performance) Leverage
GC.malloc_atomicfor 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_pathto.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
Processspecs (#12889, thanks @straight-shoota) - Add tests for
Process::Status(#12881, thanks @straight-shoota)
Text
- Raise
IndexErroron unmatched subpattern forMatchData#beginand#end(#12810, thanks @straight-shoota) - Swap documentation for
String#splitarray and block versions (#12808, thanks @hugopl) - Add
String#index/rindex!methods (#12730, thanks @Sija) - Re-organize and enhance specs for
RegexandRegex::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-configXXwhile 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_atomicwithGC.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
Symbolvariables 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
NamedTupledeserialization from JSON and YAML (#12008, thanks @HertzDevil) - (performance) Optimize
BitArray#tally(hash)(#11909, thanks @HertzDevil) - Use
Slice#unsafe_slice_ofand#to_unsafe_bytesin the standard library and compiler (#12280, thanks @HertzDevil) - (performance) Optimize block-less overloads of
BitArray#indexand#rindex(#12087, thanks @HertzDevil) - Support tuple metaclass indexers with non-literal arguments (#11834, thanks @HertzDevil)
- Add
Indexable#index!overloads withoffsetparameter (#12089, thanks @HertzDevil)
Concurrency
- Fix fiber clean loop on Windows (#12300, thanks @HertzDevil)
- Enable
Mutexon Windows (#12213, thanks @HertzDevil)
Crypto
- Add support for Bcrypt algorithm version 2y (#12447, thanks @docelic)
- Allow using
U/Int128inRandom(#11977, thanks @BlobCodes)
Files
- (breaking-change) Define
#system_echoand#system_rawon all systems (#12352, thanks @HertzDevil) - (breaking-change) Do not expose
Crystal::System::FileInfothroughFile::Info(#12385, thanks @HertzDevil) - Fix
IO.pipespec 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::FileDescriptorstaying open on finalize (#12367, thanks @refi64)
Macros
- Enhance
recorddocumentation (#12334, thanks @straight-shoota)
Networking
- Add
Socket::IPAddress.valid?(#12489, #10492, thanks @straight-shoota) - Fix
HTTP::Client#execto abort retry when client was closed (#12465, thanks @straight-shoota) - Fix specs with side effects (#12539, thanks @straight-shoota)
- Fix
HTTP::Clientimplicit 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
sprintfandString#%(#10973, thanks @HertzDevil) - Make
Float#to_signore NaN sign bit (#12399, thanks @HertzDevil) - Make
sprintfandString#%ignore NaN sign bit (#12400, thanks @HertzDevil) - Fix
Complex#to_simaginary 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_leftand#rotate_rightfor primitive integers (#12307, thanks @HertzDevil) - (performance) Optimize
BigDecimal#divfor inexact divisions (#10803, thanks @HertzDevil) - Implement the Dragonbox algorithm for
Float#to_s(#10913, thanks @HertzDevil) - Add
U/Int128toisqrtspec (#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
ArrayConverterandHashValueConverter(#10638, thanks @HertzDevil) - Document
after_initializemethod foryamlandjsonserializers (#12530, thanks @analogsalad)
System
- Add missing fields to
LibC::Passwdon FreeBSD (#12315, thanks @dmgk) - Add platform-specific variants of
Process.parse_arguments(#12278, thanks @HertzDevil) - Make
Dir.currentrespect$PWD(#12471, thanks @straight-shoota)
Text
- Fix
Stringshift state specs on FreeBSD (#12339, thanks @dmgk) - Disallow mixing of sequential and named
sprintfparameters (#12402, thanks @HertzDevil) - Fix
Colorizedoc example (#12492, thanks @zw963) - (performance) Optimize
String#downcaseandString#upcasefor single byte optimizable case (#12389, thanks @asterite) - (performance) Optimize
String#valid_encoding?(#12145, thanks @HertzDevil) - Implement
String#unicode_normalizeandString#unicode_normalized?(#11226, thanks @HertzDevil) - Support parameter numbers in
sprintf(#12448, thanks @HertzDevil) - Use
LibC.mallocinstead ofGC.mallocfor 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_sfor empty parameters of lib funs (#12368, thanks @HertzDevil) - Compiler: transform
Proc(*T, Void)toProc(*T, Nil)(#12388, thanks @asterite) - Compiler: indent
beginExpressions 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#absandNumber#formatfor-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
Pathforchdirarg inProcessmethods (#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
containexpectations in more specs (#11950, thanks @HertzDevil)
Collection
- Fix
Hash#reject!for non-equality key (#10511, thanks @straight-shoota) - Introduce
Tuple.element_typeandNamedTuple.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_stackbottomon Windows (#12186, thanks @HertzDevil) - Windows: Event loop based on IOCP (#12149, thanks @straight-shoota, @wonderix, @yxhuvud, @HertzDevil)
- Use enum instead of symbol for
Atomicprimitives (#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#jointo convert argument path to base kind (#12033, thanks @straight-shoota) - Fix
Dir.globwith multi components after recursive wildcard (#12057, thanks @straight-shoota) - Add
File#delete?andDir#delete?(#11887, thanks @didactic-drunk) - Accept
Patharguments inCompress::Zip(#11925, thanks @didactic-drunk) - Update file.cr (#12024, thanks @rdp)
- Add
File#chownand#chmod(#11886, thanks @didactic-drunk)
Log
Networking
- Enable more networking specs on Windows (#12176, thanks @HertzDevil)
- Add specs for Windows directory separators in
StaticFileHandlerpaths (#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,BigFloatrounding methods (#12004, thanks @marksiemers) - Implement rt builtins
__ashlti3,__ashrti3and__lshrti3for wasm32 (#11948, thanks @lbguilherme)
Specs
System
- (security) Fix check for null byte in
File#tempfileargs (#12076, thanks @straight-shoota) - Add missing
SC_PAGESIZEconstant foraarch64-darwin(#12037, thanks @carlhoerberg) - Docs: Add more prominent note about path traversal in
File.tempfile(#12077, thanks @straight-shoota) - Support
Enumerableas 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
Strings 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_COLORtoColorize(#11984, thanks @didactic-drunk) - (performance) Use LLVM's new pass manager when possible (#12116, thanks @asterite)
Macros
- Document
Crystal::Macros::SelfandUnderscore(#12085, thanks @HertzDevil)
Generics
- Allow the empty instantiation
NamedTuple()(#12009, thanks @HertzDevil)
Interpreter
- Add missing
EXPORTin 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
.classfor modules and unions (#12205, thanks @asterite) - Implement
Crystal::Loaderfor 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
librtandlibdlon GNU systems ([#12038](https://github....
1.4.1
Standard Library
Collection
Files
- Add missing fun def for
__xstat(#11985, thanks @straight-shoota)
Runtime
- Add
pthreadlink 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
Int128in codegen and macros (#11576, thanks @BlobCodes) - Support
ProcPointers with global path and top-level method references (#11777, thanks @HertzDevil) - Fix documentation for macros
systemandrun(#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
selfin 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
Enumerablearguments forHash#selectand#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#tallyand#tally_byaccepting 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#posgiving 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_specexpectation for Windows Server 2022 (#11794, thanks @straight-shoota) - Add
space_to_plusoption inURI::Paramseverywhere (#11821, thanks @asterite) - Improve
URI::Params#inspectto use hash-like literal (#11880, thanks @straight-shoota) - Use enums instead of symbols for
MIME::MultipartandHTTP::FormData(#11617, thanks @HertzDevil)
Numeric
- (breaking-change) Fix: Hide
BigDecimal::ZEROandBigDecimal::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
pthreadis missing (#11807, thanks @straight-shoota) - (performance) Implement
Intrinsics.pausefor 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_serializeonJSON::Field(#11804, thanks @cyangle) - Implement
Iterator.from_jsonand#to_json(#10437, thanks @wonderix)
Specs
- Add
fileandlinearguments 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.homeon 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
Pathsupport for UNC shares (#11827, thanks @straight-shoota) - Fix regression for Linux older than 3.17: properly check that
getrandomis available (#11953, thanks @lbguilherme)
Text
- Fix ensure PCRE JIT mode is available before running spec (#11533, thanks @Blacksmoke16)
- Add more
Colorizeoverloads and fix docs (#11832, thanks @asterite) - Refactor
Colorize::Modeenum (#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
selfreturn type toUUIDconstructor methods (#10539, thanks @straight-shoota) - Fix infinite loop for certain
StringPoolinitial capacities (#11929, thanks @HertzDevil)
Time
- Add examples to `Time::F...