Crystal 1.13.2 is released!

We are announcing a new patch release of the Crystal 1.13 series with a couple of important bug fixes. Crystal 1.13.2 is available now.

This release fixes two compiler bugs which became apparent with the upgrade to LLVM 18. Since LLVM 18 the alignment of some types has changed (e.g. Int128 goes from 8 to 16 byte alignment). The compiler didn’t expect an alignment bigger than 8 bytes in some cases. These misalignments are now fixed (#14906, #14843).

Other bug fixes are atomic allocation for ReferenceStorage(T) if T has no inner pointers (#14845) and explicitly clearing deleted Hash::Entry (#14862).

Pre-built packages are available on GitHub Releases and our official distribution channels. See crystal-lang.org/install for installation instructions.

This is a companion discussion topic for the original entry at https://crystal-lang.org/2024/08/20/crystal-1.13.2-released
12 Likes

I noticed when recompiling some programs with 1.13.2 the (stripped) binaries are twice as large than with 1.13.1.

I one instance it went for 512MB to 1034MB.

I tested on an lucky web project use zig for cross compile, no obvious difference.

Were you using Int128 in the programs that doubled in size? I know you sometimes work with numerical algorithms that produce very large numbers, and I don’t know if these fixes are expected to affect anything other than Bool unions and the interpreter, but more details might help determine if the doubling executable sizes are expected.