From 4ad6a3abce28bcc5d608c3ecf0aa7fdd0e5f6d42 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Johannes=20M=C3=BCller?= Date: Tue, 17 Dec 2024 21:35:02 +0100 Subject: [PATCH] Release Notes 1.15.0 --- _releases/2025-01-09-1.15.0-released.md | 139 ++++++++++++++++++++++++ 1 file changed, 139 insertions(+) create mode 100644 _releases/2025-01-09-1.15.0-released.md diff --git a/_releases/2025-01-09-1.15.0-released.md b/_releases/2025-01-09-1.15.0-released.md new file mode 100644 index 00000000..97de981a --- /dev/null +++ b/_releases/2025-01-09-1.15.0-released.md @@ -0,0 +1,139 @@ +--- +title: Crystal 1.15.0 is released! +version: 1.15.0 +date: 2025-01-09 +author: straight-shoota +--- + +We are announcing a new Crystal release 1.15.0 with several new features and bug fixes. + +Pre-built packages are available on [GitHub Releases](https://github.com/crystal-lang/crystal/releases/tag/1.15.0) +and our official distribution channels. +See [crystal-lang.org/install](https://crystal-lang.org/install/) for +installation instructions. + +## Stats + +This release includes [XXX changes since 1.14.0](https://github.com/crystal-lang/crystal/pulls?q=is%3Apr+milestone%3A1.15.0) +by XX contributors. We thank all the contributors for all the effort put into +improving the language! ❤️ + +## Changes + +Below we list the most remarkable changes in the language, compiler and stdlib. +For more details, visit the [full changelog](https://github.com/crystal-lang/crystal/releases/tag/1.14.0). + +### Language features + +- *(parser)* Allow constants to start with non-ascii uppercase and titlecase ([#15148], thanks @nanobowers) + +### Standard library + +- *(collection)* Add `Iterator(T).empty` ([#15039], thanks @spuun) +- *(collection)* Add `Enumerable#find_value` ([#14893], thanks @jgaskins) +- *(log)* Add `Log` overloads for logging exceptions without giving a block ([#15257], thanks @lachlan) +- *(log)* **[regression]** Fix `Log` to emit with `exception` even if block outputs `nil` ([#15253], thanks @lachlan) +- *(networking)* Add `HTTP::Cookie#expire` ([#14819], thanks @a-alhusaini) +- *(networking)* Add stringification for `HTTP::Cookie` ([#15240], thanks @straight-shoota) +- *(networking)* Add stringification for `HTTP::Cookies` ([#15246], thanks @straight-shoota) +- *(text)* Add `Regex::CompileOptions::MULTILINE_ONLY` ([#14870], thanks @ralsina) +- *(text)* Add `String#byte_index(Regex)` ([#15248], thanks @Zeljko-Predjeskovic) + +#### Lifetime EventLoop + +https://crystal-lang.org/2024/11/05/lifetime-event-loop/ + +Refactor Lifetime Event Loop ([#14996], [#15205], [#15206], [#15215]) + +In the process we also refactored the `Crystal::EventLoop` namespace ([#15226]), +and some details of the `libevent` ([#15243]) and IOCP event loop drivers ([#15238]). + +This effort is part of the ongoing [project to improve multi-threading support](/2024/02/09/84codes-manas-mt) +with the help of [84codes]. +Next we'll incorporate execution contexts from [`ysbaddaden/execution_context`](https://github.com/ysbaddaden/execution_context) +into the standard library, implementing [RFC 2](https://github.com/crystal-lang/rfcs/pull/2). + +*Thanks [@ysbaddaden]* + +#### Stabilized platform support + +In the process of testing the event loop implementations we updated specs and +fixed some smaller issues with platform support on operating systems without +automated continuous testing (OpenBSD, FreeBSD, Dragonfly BSD and NetBSD). + +*Thanks [@ysbaddaden]* + +#### `Process::Status` + +- *(system)* Add `Process::Status#exit_code?` ([#15247], thanks @straight-shoota) +- *(system)* Add `Process::Status#abnormal_exit?` ([#15266], thanks @straight-shoota) +- *(system)* Fix `Process::Status` for unknown signals ([#15280], thanks @straight-shoota) +- *(system)* Raise on abnormal exit in `Procss::Status#exit_code` ([#15241], thanks @straight-shoota) +- *(system)* Redefine `Process::Status#normal_exit?` on Windows ([#15255], [#15267], thanks @straight-shoota) +- *(system)* Adjust definition of `ExitReason::Aborted` ([#15256], thanks @straight-shoota) + +*Thanks [@straight-shoota]* + +### Windows + +- *(concurrency)* Implement the ARM64 Windows context switch ([#15155], thanks @HertzDevil) + +- *(networking)* Support OpenSSL on MSYS2 ([#15111], thanks @HertzDevil) +- *(runtime)* Support call stacks for MinGW-w64 builds ([#15117], thanks @HertzDevil) +- *(runtime)* Support MSYS2's CLANGARM64 environment on ARM64 Windows ([#15159], thanks @HertzDevil) +- *(interpreter)* Basic MinGW-w64-based interpreter support ([#15140], thanks @HertzDevil) + +- Basic MinGW-w64 cross-compilation support ([#15070], [#15219], thanks @HertzDevil, @BlobCodes) +- *(cli)* Support building from a MinGW-w64-based compiler ([#15077], thanks @HertzDevil) +- *(interpreter)* Support "long format" DLL import libraries ([#15119], thanks @HertzDevil) +- *(runtime)* **[regression]** Protect constant initializers with mutex on Windows ([#15134], thanks @HertzDevil) +- *(concurrency)* Do not over-commit fiber stacks on Windows ([#15037], thanks @HertzDevil) +- Make `bin/crystal` work on MSYS2 ([#15094], thanks @HertzDevil) +- Make `Makefile` work on MSYS2 ([#15102], thanks @HertzDevil) +- Support `.exe` file extension in `Makefile` on MSYS2 ([#15123], thanks @HertzDevil) +- *(ci)* Run interpreter specs on Windows CI ([#15141], thanks @HertzDevil) + +*Thanks [@HertzDevil]* + +### Compiler + +- *(codegen)* Add indirect branch tracking ([#15122], thanks @ysbaddaden) + OpenBSD +- *(parser)* ECR syntax error raises exception that includes line/column information ([#15222], thanks @nobodywasishere) +- *(codegen)* Emit position dependent code for embedded targets ([#15174], thanks @RX14) + +### Compiler tools + +- *(formatter)* Enable pending formatter features ([#14718], thanks @Blacksmoke16) +- *(unreachable)* Implement `codecov` format for `unreachable` tool ([#15059], thanks @Blacksmoke16) + +[#14718]: https://github.com/crystal-lang/crystal/pull/14718 +[#15059]: https://github.com/crystal-lang/crystal/pull/15059 + +### Dependency Updates + +- *(crypto)* Enable bindings for functions in LibreSSL ([#15177], thanks @straight-shoota) + +--- + +> **THANKS:** +> We have been able to do all of this thanks to the continued support of [84codes](https://www.84codes.com/) and every other [sponsor](/sponsors). +> To maintain and increase the development pace, donations and sponsorships are +> essential. [OpenCollective](https://opencollective.com/crystal-lang) is +> available for that. +> +> Reach out to [crystal@manas.tech](mailto:crystal@manas.tech) +> if you’d like to become a direct sponsor or find other ways to support Crystal. +> We thank you in advance! + +[@bcardiff]: https://github.com/bcardiff +[@Blacksmoke16]: https://github.com/Blacksmoke16 +[@ggiraldez]: https://github.com/ggiraldez +[@HertzDevil]: https://github.com/HertzDevil +[@jgaskins]: https://github.com/jgaskins +[@kamil-gwozdz]: https://github.com/kamil-gwozdz +[@kojix2]: https://github.com/kojix2 +[@nobodywasishere]: https://github.com/nobodywasishere +[@straight-shoota]: https://github.com/straight-shoota +[@ysbaddaden]: https://github.com/ysbaddaden +[84codes]: https://www.84codes.com/