-
-
Notifications
You must be signed in to change notification settings - Fork 77
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
72b6bee
commit 4ad6a3a
Showing
1 changed file
with
139 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -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 [[email protected]](mailto:[email protected]) | ||
> 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/ |