github crystal-lang/crystal 1.20.0

15 hours ago

Security

stdlib

  • (networking) Fix HTTP::Server is no longer vulnerable to request smuggling (GHSA-wqh5-7w63-pm68)

Features

lang

  • (macros) Add #select and #reject to HashLiteral and NamedTupleLiteral (#16558, thanks @Blacksmoke16)
  • (macros) Refine error message for unsupported named arguments in macros (#16576, thanks @hahwul)

stdlib

compiler

tools

Bugfixes

stdlib

compiler

  • (codegen) Emit unreachable for inlined NoReturn returns (#16690, thanks @kojix2)
  • (codegen) Fix alignment for fields in packed structs for x86_64 ABI (#16667, thanks @kojix2)
  • (codegen) Fix declare_fun attribute copy (#16708, thanks @kojix2)
  • (parser) [breaking] Ensure that heredoc lexing allows only valid identifiers (#16548, thanks @Sija)
  • (parser) [regression] Fix lexing percent literals with | delimiter in macro context (#16672, #16716, thanks @toddsundsted, @straight-shoota)
  • (parser) Escape quotes in the filename within the location pragmas (#16549, thanks @Sija)
  • (semantic) Fix constant lookup in ivar initializer blocks (#16678, thanks @nobodywasishere)
  • (semantic) Fix ICE on alias generic instance namespace lookup (#16700, thanks @nobodywasishere)
  • (semantic) Fix tuple splat validation (#16787, thanks @kojix2)
  • (semantic) Add arithmetic error reporting for MathInterpreter (#16809, thanks @kojix2)

tools

Chores

stdlib

Performance

stdlib

Refactor

stdlib

  • (crypto) dust off OpenSSL::BIO (#16640, thanks @ysbaddaden)
  • (crypto) Refactor initialization of custom OpenSSL BIO (#16651, thanks @ysbaddaden)
  • (numeric) [experimental] Use Slice.literal for fast_float when supported, part 2 (#16261, thanks @HertzDevil)
  • (runtime) [deprecation] Soft deprecate Mutex in favor to Sync::Mutex (#16737, #16759, #16802, thanks @ysbaddaden)
  • (runtime) Protect Crystal::System::Env with Sync::RWLock (UNIX) (#16591, thanks @ysbaddaden)
  • (runtime) Refactor System::Process.make_env_block into System::Env (win32) (#16605, thanks @ysbaddaden)
  • (runtime) Use System.wstr_literal for env names on Win32 (#16669, thanks @kojix2)
  • (runtime) Add adaptive scaling to ExecutionContext::Parallel (#16719, thanks @ysbaddaden)
  • (runtime) Handle events in EventLoop::IOCP instead of System::IOCP (#16765, thanks @ysbaddaden)
  • (runtime) Add internal state to Fiber::ExecutionContext::Parallel::Scheduler (#16732, thanks @ysbaddaden)
  • (runtime) Replace Mutex use cases with Sync::Mutex (#16783, thanks @ysbaddaden)
  • (specs) Prefer with_env helper over mutating ENV in specs (#16608, thanks @ysbaddaden)
  • (specs) Remove unnecessary shell: true from Process.run calls (#16781, thanks @ysbaddaden)
  • (system) Avoid deprecated Pointer.new(Int) in dlfcn (#16691, thanks @kojix2)
  • (system) Refactor code duplication in Process.new overloads (#16782, thanks @straight-shoota)

compiler

tools

Documentation

stdlib

Specs

stdlib

  • (concurrency) Fix: modernize channel specs to avoid parallelism issues (#16704, thanks @ysbaddaden)
  • (runtime) Fix: increase timeout of execution context stress test helper (#16639, thanks @ysbaddaden)
  • (runtime) Fix: Fiber#resumable? spec must run in concurrent context (#16731, thanks @ysbaddaden)
  • (system) Add specs for Process.run(shell: true) with PATH (#16617, thanks @straight-shoota)

compiler

tools

Infrastructure

Don't miss a new crystal release

NewReleases is sending notifications on new releases.