Skip to content

1.12.0

Compare
Choose a tag to compare
@straight-shoota straight-shoota released this 09 Apr 13:12
· 53 commits to master since this release
1.12.0
aee9ab6

1.12.0 (2024-04-09)

Features

lang

  • Allow multiple parameters and blocks for operators ending in = (#14159, thanks @HertzDevil)

stdlib

compiler

  • Add CRYSTAL_CONFIG_CC compiler config (#14318, thanks @straight-shoota)
  • (cli) Respect NO_COLOR in the compiler (#14260, thanks @HertzDevil)
  • (cli) Respect --static on Windows (#14292, thanks @HertzDevil)
  • (cli) Allow --single-module and --threads for eval and spec (#14341, thanks @HertzDevil)
  • (codegen) Add --frame-pointers to control preservation of frame pointers (#13860, thanks @refi64)
  • (codegen) x86-64 Solaris / illumos support (#14343, thanks @HertzDevil)
  • (interpreter) Support @[Link]'s DLL search order in the interpreter on Windows (#14146, thanks @HertzDevil)
  • (interpreter) Automatically detect MSVC tools on Windows interpreter (#14391, thanks @HertzDevil)
  • (parser) Allow calling #[]= with a block using method syntax (#14161, thanks @HertzDevil)
  • (semantic) Change short_reference for top-level macros to ::foo (#14203, thanks @femto)

tools

Bugfixes

lang

  • (macros) Remove extra newline in top-level FunDef's string representation (#14212, thanks @HertzDevil)
  • (macros) Remove T* and T[N] macro interpolation behavior inside libs (#14215, thanks @HertzDevil)

stdlib

  • (collection) Fix Hash#update when default block also adds given key (#14417, thanks @HertzDevil)
  • (collection) Fix Hash#put_if_absent putting duplicate keys (#14427, thanks @HertzDevil)
  • (concurrency) Reserve stack space on non-main threads for crash recovery on Windows (#14187, thanks @HertzDevil)
  • (concurrency) Add memory barrier to Mutex#unlock on aarch64 (#14272, thanks @jgaskins)
  • (concurrency) init schedulers before we spawn fibers (#14339, thanks @ysbaddaden)
  • (files) Make FileUtils.mv work across filesystems on Windows (#14320, thanks @HertzDevil)
  • (llvm) Use correct string size for LLVM::Type#inline_asm (#14265, thanks @HertzDevil)
  • (llvm) Fix System V ABI for packed structs with misaligned fields (#14324, thanks @HertzDevil)
  • (networking) OpenSSL 3.x reports unexpected EOF as SSL error (#14219, thanks @ysbaddaden)
  • (numeric) Make equality between Complex and other numbers exact (#14309, thanks @HertzDevil)
  • (numeric) Fix #hash for the Big* number types (#14308, thanks @HertzDevil)
  • (runtime) Do not allocate memory in the segmentation fault signal handler (#14327, thanks @HertzDevil)
  • (runtime) Fix crash stack trace decoding on macOS (#14335, thanks @HertzDevil)
  • (runtime) Crystal::RWLock should be a struct (#14345, thanks @ysbaddaden)
  • (runtime) Fix min_by? in IOCP event loop #run_once (#14394, thanks @straight-shoota)
  • (serialization) XML::Reader: Disallow attributes containing null bytes (#14193, thanks @HertzDevil)
  • (serialization) Always call LibXML.xmlInitParser when requiring XML libraries (#14191, thanks @HertzDevil)
  • (system) Fix macro Crystal::LIBRARY_PATH.split when cross-compiling (#14330, thanks @HertzDevil)
  • (system) Add SA_RESTART flag to sigaction syscall (#14351, thanks @ysbaddaden)
  • (text) Add Nil return type restriction to String::Formatter#consume_substitution (#14430, thanks @straight-shoota)

compiler

  • (cli) build --no-codegen output file name error (#14239, thanks @apainintheneck)
  • (codegen) Do not handle inline assembly with "intel" flag as AT&T syntax (#14264, thanks @HertzDevil)
  • (codegen) [breaking] Respect alignments above alignof(Void*) inside union values (#14279, thanks @HertzDevil)
  • (codegen) Fix stack corruption in union-to-union casts (#14289, thanks @HertzDevil)
  • (codegen) Don't copy DLL to output directory if file already exists (#14315, thanks @HertzDevil)
  • (codegen) Fix Proc#call that takes and returns large extern structs by value (#14323, thanks @HertzDevil)
  • (codegen) Never discard ivar initializer inside .allocate and .pre_initialize (#14337, thanks @HertzDevil)
  • (codegen) Use separate names for constant and class variable internals (#14445, thanks @HertzDevil)
  • (interpreter) fix fiber's resumable property (#14252, thanks @ysbaddaden)
  • (interpreter) Ensure all constants only have one initializer in the interpreter (#14381, thanks @HertzDevil)
  • (interpreter) Handle NaN comparisons in the interpreter (#14441, thanks @HertzDevil)
  • (interpreter) Check UInt16#to_u8 for overflow in the interpreter (#14436, thanks @HertzDevil)
  • (interpreter) Fix interpreter internal overflow for UInt128#to_f32 and #to_f32! (#14437, thanks @HertzDevil)
  • (parser) Fix name locations of FunDef and External nodes (#14267, thanks @HertzDevil)
  • (parser) Fix end locations of Alias nodes (#14271, thanks @HertzDevil)

tools

Chores

stdlib

compiler

Performance

stdlib

compiler

Refactor

stdlib

compiler

Documentation

stdlib

Specs

stdlib

  • Fix spelling in spec/std/uri/params_spec.cr (#14302, thanks @jbampton)
  • (files) Refactor expectations with SpecChannelStatus to be explicit (#14378, thanks @straight-shoota)
  • (files) Move some IO::FileDescriptor specs to the correct file (#14431, thanks @HertzDevil)
  • (system) Always preserve the environment for specs that modify ENV (#14211, thanks @HertzDevil)
  • (system) Ensure Windows time zone specs request SeTimeZonePrivilege properly (#14297, thanks @HertzDevil)
  • (text) Add single source of UTF-8 test sequences for specs (#14433, thanks @HertzDevil)
  • (time) Fix requires for time/time_spec.cr and time/format_spec.cr (#14385, thanks @HertzDevil)

compiler

Infrastructure