github crystal-lang/crystal 1.14.0

14 hours ago

Features

lang

stdlib

compiler

  • (cli) Adds initial support for external commands (#14953, thanks @bcardiff)
  • (interpreter) Add Crystal::Repl::Value#runtime_type (#14156, thanks @bcardiff)
  • (interpreter) Implement Reference.pre_initialize in the interpreter (#14968, thanks @HertzDevil)
  • (interpreter) Enable the interpreter on Windows (#14964, thanks @HertzDevil)

Bugfixes

lang

stdlib

  • (collection) Fix Range#size return type to Int32 (#14588, thanks @straight-shoota)
  • (concurrency) Update DeallocationStack for Windows context switch (#15032, thanks @HertzDevil)
  • (concurrency) Fix race condition in pthread_create handle initialization (#15043, thanks @HertzDevil)
  • (files) [regression] Fix File#truncate and #lock for Win32 append-mode files (#14706, thanks @HertzDevil)
  • (files) [breaking] Avoid flush in finalizers for Socket and IO::FileDescriptor (#14882, thanks @straight-shoota)
  • (files) Make IO::Buffered#buffer_size= idempotent (#14855, thanks @jgaskins)
  • (macros) Implement #sort_by inside macros using Enumerable#sort_by (#14895, thanks @HertzDevil)
  • (macros) Fix internal error when calling #is_a? on External nodes (#14918, thanks @HertzDevil)
  • (networking) Use correct timeout for Socket#connect on Windows (#14961, thanks @HertzDevil)
  • (numeric) Fix handle empty string in String#to_f(whitespace: false) (#14902, thanks @Blacksmoke16)
  • (numeric) Fix exponent wrapping in Math.frexp(BigFloat) for very large values (#14971, thanks @HertzDevil)
  • (numeric) Fix exponent overflow in BigFloat#to_s for very large values (#14982, thanks @HertzDevil)
  • (numeric) Add missing @[Link(dll:)] annotation to MPIR (#15003, thanks @HertzDevil)
  • (runtime) Add missing return type of LibC.VirtualQuery (#15036, thanks @HertzDevil)
  • (runtime) Fix main stack top detection on musl-libc (#15047, thanks @HertzDevil)
  • (serialization) [breaking] Remove XML::Error.errors (#14936, thanks @straight-shoota)
  • (specs) [regression] Fix Expectations::Be for module type (#14926, thanks @straight-shoota)
  • (system) Fix return type restriction for ENV.fetch (#14919, thanks @straight-shoota)
  • (system) #file_descriptor_close should set @closed (UNIX) (#14973, thanks @ysbaddaden)
  • (system) reinit event loop first after fork (UNIX) (#14975, thanks @ysbaddaden)
  • (text) Fix avoid linking libpcre when unused (#14891, thanks @kojix2)
  • (text) Add type restriction to String#byte_index offset parameter (#14981, thanks @straight-shoota)

compiler

  • (cli) Add error handling for linker flag sub commands (#14932, thanks @straight-shoota)
  • (codegen) Allow returning Procs from top-level funs (#14917, thanks @HertzDevil)
  • (codegen) Fix CRT static-dynamic linking conflict in specs with C sources (#14970, thanks @HertzDevil)
  • (interpreter) Fix Linux getrandom failure in interpreted code (#15035, thanks @HertzDevil)
  • (interpreter) Fix undefined behavior in interpreter mixed union upcast (#15042, thanks @HertzDevil)
  • (semantic) Fix TopLevelVisitor adding existing ClassDef type to current scope (#15067, thanks @straight-shoota)

tools

Chores

stdlib

compiler

Performance

stdlib

  • (collection) Always use unstable sort for simple types (#14825, thanks @HertzDevil)
  • (collection) Optimize Hash#transform_{keys,values} (#14502, thanks @jgaskins)
  • (numeric) Optimize arithmetic between BigFloat and integers (#14944, thanks @HertzDevil)
  • (runtime) [regression] Cache Exception::CallStack.empty to avoid repeat Array allocation (#15025, thanks @straight-shoota)

compiler

  • Avoid unwinding the stack on hot path in method call lookups (#15002, thanks @ggiraldez)
  • (codegen) Reduce calls to Crystal::Type#remove_indirection in module dispatch (#14992, thanks @HertzDevil)
  • (codegen) Compiler: enable parallel codegen with MT (#14748, thanks @ysbaddaden)

Refactor

stdlib

compiler

Documentation

stdlib

Specs

stdlib

compiler

  • (codegen) Support return types in codegen specs (#14888, thanks @HertzDevil)
  • (codegen) Fix codegen spec for ProcPointer of virtual type (#14903, thanks @HertzDevil)
  • (codegen) Support LLVM OrcV2 codegen specs (#14886, thanks @HertzDevil)
  • (codegen) Don't spawn subprocess if codegen spec uses flags but not the prelude (#14904, thanks @HertzDevil)

Infrastructure

Don't miss a new crystal release

NewReleases is sending notifications on new releases.