Crystal 1.18.0 is released!
We are announcing a new Crystal release 1.18.0 with several new features and bug fixes.

Crystal 1.18.0 is now available, bringing a host of new features and bug fixes to the popular programming language. This release, the result of collaboration between 31 contributors, includes 172 changes since the previous version, 1.17.1. The team is grateful to all contributors for their efforts in enhancing the language, and they encourage users to explore the full changelog for detailed information on the updates.
One of the most significant additions in Crystal 1.18.0 is the continued development of execution contexts, initially introduced in RFC 0002. These execution contexts are now available as a preview feature with opt-in via the compiler flags -Dpreview_mt -Dexecution_context. The team is considering moving this feature out of the preview stage in the next release, reflecting its growing maturity and stability.
A notable change in this release is the default execution context now being parallel with a maximum of 1 thread. This means that it starts with a single thread but can scale up using the Fiber::ExecutionContext::Parallel#resize method, as outlined in issue #15956. Additionally, performance improvements have been made to schedulers and event loops, addressing issues #15961 and #16063. The custom implementation of Fiber::ExecutionContext::Concurrent has been deprecated in favor of the parallel implementation, as noted in issue #16135.
Furthermore, the Fiber::ExecutionContext.default_workers_count has been enhanced to respect the effective CPU count available to the process, as per issues #16148 and #16149. This update ensures that the language leverages system resources more efficiently. The preview of synchronization primitives in ysbaddaden/sync has also seen improvements, with ongoing collaboration between the Crystal team and 84codes to enhance multi-threading support.
Another important feature added in Crystal 1.18.0 is the introduction of deprecation warnings for types, aliases, and individual method parameters. This change, documented in issues #15962 and #15999, helps developers identify and address outdated code more effectively. Deprecated types will now trigger warnings when they are actually used, ensuring that users are aware of potential issues in their codebases.
Pre-built packages for Crystal 1.18.0 are available on GitHub Releases and the official distribution channels. Users can find detailed installation instructions on the Crystal website at crystal-lang.org/install. The team is committed to providing a smooth and efficient update process for all users.
In conclusion, Crystal 1.18.0 represents a significant milestone in the development of the language, with improvements in execution contexts, deprecation warnings, and multi-threading support. The team's dedication to continuous enhancement and collaboration with the community is evident in this release. Developers are encouraged to explore the new features and bug fixes, and to report any unexpected issues in the issue tracker or forum.










