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.