Release highlights
Highlights of previous Crystal releases
1.19.0
- Compiler flags with values compiler
-
Execution contexts in final preview including new
Syncprimitives stdlib/runtime -
Introduce
Time::Instantand adjust behaviour of monotonic clocks stdlib/time - Process spawning refactor and safer exec handling stdlib/process
1.18.0
- Deprecation annotations on types and parameters lang/annotations
- Support for LLVM 22 stdlib/llvm
1.17.0
- Event loop decides blocking mode when creating file descriptors stdlib/system
-
New command:
crystal tool macro_code_coveragecompiler/tools - Support for LLVM 21 stdlib/llvm
1.16.0
-
New algorithm for
File.match?fixes implementation bugs stdlib/system -
Suffixes
?and!for parameter names are deprecated lang - Preview for execution contexts stdlib/runtime
-
:showdoc:primitive for inclusion in API docs compiler/docs - Support for LLVM 20 stdlib/llvm
1.15.0
- Constants can start with any upper- or titlecase letter lang
- Lifetime eventloop integrates directly with system selector stdlib/runtime
- Indirect branch tracking compiler/codegen
- MinGW-W64 and MSYS2 as alternative toolchains on Windows platform/windows
-
Process::Statusmore portable stdlib/system - Pending formatter changes enable by default compiler/formatter
1.14.0
-
XML::Error.errorsfails to compile to prevent error leaks stdlib/xml -
Platform support for
aarch64-windows-msvcplatform/windows - Compiler can execute external programs as subcommands compiler/cli
- Support for LLVM 19.1 stdlib/llvm
1.13.0
- OpenSSL now uses the library default configuration stdlib/crypto
-
rescuesupports module types lang -
Runtime tracing with
-Dtracingstdlib/runtime -
WaitGroupfor waiting on concurrent fibers stdlib/concurrency - Basic support for AVR architecture (Adrduino) platform/arduino
1.12.0
-
Process.on_terminatefor portable handling termination requests stdlib/system -
LLVM 18 and deprecation of
llvm_extstdlib/llvm - Assignment operators can receive multiple parameters and blocks lang
- Preliminary support for Solaris/Illumos platform/solaris
-
New command:
crystal tool flagscompiler/tools -
Experimental support for
ReferenceStorageto control reference allocations lang
1.11.0
- New compiler optimization levels compiler/codegen
-
New alignment primitives
alignofandinstance_alignoflang/primitives -
dllparameter for@[Link]annotations lang/annotations -
Macro call context accessible as
@callerlang/macros -
Support for LLVM 18 allows dropping
llvm_extstdlib/llvm
1.9.0
-
Comparison with
Big*types are now nilable stdlib/numeric -
New command
crystal clear_cachecompiler/tools - Support for LLVM 16 stdlib/llvm
1.8.0
- PCRE2 default regex engine stdlib/text
- Regex literals expect PCRE2 syntax lang/literals
- Support for LLVM 15 with opaque pointers stdlib/llvm
-
x86_64-linux-muslpromoted to tier 1 platform/linux -
New target
aarch64-linux-androidplatform/android - New portable APIs for process-lifecycle events stdlib/system
1.7.0
- Preview for PCRE2 stdlib/text
1.6.0
- Improved overload ordering lang/types
1.5.0
- Types of instance variables propagate to method parameter restrictions lang/types
- Annotations on method parameters lang/annotations
1.4.0
-
Experimental support for WebAssembly (
wasm32-wasi) platform/wasm - Improved type inference for instance and class variables lang/types
- Support for LLVM 14 stdlib/llvm
1.3.0
- Autocasting for primitive numeric values lang/numeric
- 128-bit number literals lang/numeric
- Interpreter preview merged compiler/interpreter
- Windows packages available platform/windows
-
Experimental
SyscallAPI stdlib/system - Splat support in multi-assign lang
1.2.0
-
aarch64-darwinpromotes to tier 2,i386-linux-gnudemoted to tier 2 platform - Dropped disfunct ThinLTO support compiler/linking
-
Render markdown with
markdshard compiler/docs - Support for 128-bit integers stdlib/numeric
-
Indexable::Mutable(T)module stdlib/collections
1.0.0
- Removed deprecated features stdlib
- Type-safe tuple accessors with literal ranges lang/tuples
- New fine-grained rounding modes stdlib/numeric