Hasty Briefsbeta

Bilingual

Crystal 1.20.0 Is Released

8 hours ago
  • #Programming
  • #Release
  • #Crystal
  • Introduction of @[TargetFeature] annotation for specifying CPU features or models for individual functions, enhancing runtime adaptability for optimized code execution.
  • Preview of the new Process API for spawning sub-processes, featuring an array of strings for command line arguments and methods like Process.capture for easier output handling.
  • Addition of an experimental io_uring-based event loop for Linux, selectable via -Devloop=io_uring, with potential performance considerations and behavior changes.
  • Support for Kernel TLS on Linux and FreeBSD by default, requiring system and OpenSSL compatibility for secure TLS connections.
  • Inclusion of M:N scheduling in execution contexts, plus adaptive scaling in parallel contexts, as part of multi-threading improvements.
  • Security fix in HTTP::Server to reject requests with both Content-Length and Transfer-Encoding headers, addressing HTTP request smuggling vulnerabilities.
  • Updates to the standard library, including OptionParser with option bundling, HTTP::WebSocket sub-protocol negotiation, and various enhancements to StringScanner.
  • Compiler now defaults to modern linkers like mold or lld when available, and support for newer LLVM versions such as LLVM 22.1 and 23.0.
  • Deprecation of Mutex in favor of Sync::Mutex, starting with a soft deprecation via documentation warnings.