Skip to content

Commit

Permalink
Release Notes 1.15.0
Browse files Browse the repository at this point in the history
  • Loading branch information
straight-shoota committed Dec 17, 2024
1 parent 72b6bee commit 4ad6a3a
Showing 1 changed file with 139 additions and 0 deletions.
139 changes: 139 additions & 0 deletions _releases/2025-01-09-1.15.0-released.md
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/

0 comments on commit 4ad6a3a

Please sign in to comment.