The Crystal programming-language project has released version 1.22.0, combining language and standard-library changes with broader official platform support. Maintainers counted 251 changes since version 1.21.1, contributed by 33 people, and made prebuilt packages available through the project’s GitHub releases and distribution channels.

One visible language addition is support for type declarations on constants. Developers can now attach an explicit type to a constant in the same general manner used for other declarations, giving the compiler and readers a clearer statement of the intended value category. The release also exposes `Crystal::ALL_FLAGS` and `Crystal::USER_FLAGS` for access to compile-time flags.

Crystal 1.22 changes command-line behavior when output is piped into a program that stops reading. A process now exits immediately if writing to standard output or standard error fails with `EPIPE`, bringing the default closer to conventional `SIGPIPE` behavior. Previously, the failed write generally raised an `IO::Error`, which could produce an unnecessary error message during ordinary shell-pipeline use. Programs that need the older behavior can disable the new default through `STDOUT.exit_on_broken_pipe = false`.

The release removes `Process.fork`, which had been deprecated since before Crystal 1.0. That cleanup may require changes in older applications still relying on the API, so teams upgrading from a much earlier release should review deprecation warnings and the complete changelog rather than treating the update as purely additive.

Platform status also advanced. The `aarch64-linux-gnu` and `aarch64-linux-musl` targets moved from Tier 2 to Tier 1 after official builds became available. Version 1.22 is also the first Crystal release to ship builds for `aarch64-windows-msvc`, extending prebuilt support to Windows systems running on 64-bit Arm processors.

Compiler diagnostics and debugging infrastructure received a substantial internal update. The DWARF parser now scans sections on demand and constructs an index table for lookups, while decoded backtrace lines are retained in an LRU cache. Support was added for the DWARF 5 forms `DW_FORM_addrx<n>` and `DW_FORM_strx<n>`. Together, the changes are intended to reduce parsing work and memory use while accelerating repeated symbol lookups.

Across supported operating systems, Crystal’s native event loop now uses the system selector by default. The project enabled `epoll` on Solaris and `kqueue` on the remaining BSD targets. Libevent remains available only as an opt-in fallback, and maintainers signaled that it may be deprecated in a future version. Kernel TLS support is now enabled by default in the OpenSSL bindings, alongside multiple HTTP fixes and improvements.

The project has also formalized a forward-compatibility requirement: building Crystal 1.22 needs a stage-zero compiler at version 1.14 or newer. Package maintainers and source-build environments should account for that floor before upgrading their build pipelines.