# Crystal 1.16.2 is released!

**URL:** <https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013>\
**Category:** Website\
**Created:** [April 29, 2025, 5:07pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013 "2025-04-29T17:07:55Z")\
**Posts on this page:** 12\
**Page:** 1

<div class="post-metadata">

**Author:** ![Crys](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/crys/32/2261_2.png) [@Crys](https://forum.crystal-lang.org/u/Crys)\
**Post date:** [April 29, 2025, 5:07pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/1 "2025-04-29T17:07:55Z")

</div>

We are announcing a new patch release of the Crystal [1.16 series](https://crystal-lang.org/2025/04/09/1.16.0-released/).

* * *
This is a companion discussion topic for the original entry at [https://crystal-lang.org/2025/04/29/1.16.2-released](https://crystal-lang.org/2025/04/29/1.16.2-released)

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [April 29, 2025, 5:32pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/2 "2025-04-29T17:32:59Z")

</div>



---

<div class="post-metadata">

**Author:** ![jzakiya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/jzakiya/32/278_2.png) [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Post date:** [May 8, 2025, 7:58pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/3 "2025-05-08T19:58:39Z")

</div>

Saw recompiling an app with 1.16.2 creates a bigger stripped binary than 1.16.0/1.

With 1.16.0/1: 729,744 bytes  
With 1.16.2 : 832,632 bytes  
A 102,888 byte difference?

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [May 8, 2025, 9:18pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/4 "2025-05-08T21:18:58Z")

</div>

Oh, good catch.

This reproduces even with an empty program:

```console
$ alias drun='docker run --rm -it -v "$(pwd)":/w -w /w'
$ drun crystallang/crystal:1.16.1 crystal build empty.cr -o empty-1.16.1
$ drun crystallang/crystal:1.16.2 crystal build empty.cr -o empty-1.16.2
$ size empty-*
   text data bss dec hex filename
1405644 2976 1132960 2541580 26c80c empty-1.16.1
1493381 2976 1132960 2629317 281ec5 empty-1.16.2

```

---

<div class="post-metadata">

**Author:** ![zw963](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zw963/32/1623_2.png) [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Post date:** [May 17, 2025, 4:40am UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/5 "2025-05-17T04:40:30Z")

</div>

I didn’t test it, because I update(compile) crystal from 1.15 to 1.16.3 directly.

Was this fixed in 1.16.3?

---

<div class="post-metadata">

**Author:** ![jzakiya](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/jzakiya/32/278_2.png) [@jzakiya](https://forum.crystal-lang.org/u/jzakiya)\
**Post date:** [May 17, 2025, 5:16pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/6 "2025-05-17T17:16:51Z")

</div>

No. On my system 1.16.2/3 produce the same size binaries, bigger than 1.16.0/1.

---

<div class="post-metadata">

**Author:** ![zw963](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zw963/32/1623_2.png) [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Post date:** [May 17, 2025, 6:02pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/7 "2025-05-17T18:02:49Z")

</div>

This is not a big deal, (at least for me), as long as more bigger binary size can improve performance.

I tested the latest Crystal release follow following post which wrote by @ralsina

> **[A Tale of Optimization](https://ralsina.me/weblog/posts/a-tale-of-optimization.html)**
>
> How I made software that looked "ok" 30x faster

[here](https://github.com/ralsina/tartrazine/issues/15) is some screenshots which we can see some significant performance improvement on pcre2 and the small performance improvement compared to release 9 months ago.

---

<div class="post-metadata">

**Author:** ![straight-shoota](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/straight-shoota/32/36_2.png) [@straight-shoota](https://forum.crystal-lang.org/u/straight-shoota)\
**Post date:** [May 19, 2025, 10:06am UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/8 "2025-05-19T10:06:08Z")

</div>

This increase in file size is a consequence of [Replace inline type IDs with global constants in LLVM IR by HertzDevil · Pull Request #15485 · crystal-lang/crystal · GitHub](https://github.com/crystal-lang/crystal/pull/15485)  
Now we’re embedding the names of all types into the executable as strings, when previously it were only the names of types that were actually instantiated.  
Unfortunately, there’s no trivial way to avoid this.  
Essentially, we’re trading binary size for compiler performance.

---

<div class="post-metadata">

**Author:** ![ralsina](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/ralsina/32/2139_2.png) [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Post date:** [May 21, 2025, 5:49pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/9 "2025-05-21T17:49:34Z")

</div>

I ran the same benchmark from that post on 1.10 and 1.16.2 and I don’t see any significant changes (less than 1%, which is noise)

---

<div class="post-metadata">

**Author:** ![ralsina](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/ralsina/32/2139_2.png) [@ralsina](https://forum.crystal-lang.org/u/ralsina)\
**Post date:** [May 21, 2025, 5:57pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/10 "2025-05-21T17:57:35Z")

</div>

![image](https://canada1.discourse-cdn.com/flex036/uploads/crystal_lang/original/2X/1/192bde9b7f928e214b1e885f875815b03629b720.png)

---

<div class="post-metadata">

**Author:** ![luislavena](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/luislavena/32/572_2.png) [@luislavena](https://forum.crystal-lang.org/u/luislavena)\
**Post date:** [May 21, 2025, 9:16pm UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/11 "2025-05-21T21:16:18Z")

</div>

I believe the difference is the speedup of the compile process and the compiler itself and not the runtime performance of the compiled executables.

---

<div class="post-metadata">

**Author:** ![zw963](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/zw963/32/1623_2.png) [@zw963](https://forum.crystal-lang.org/u/zw963)\
**Post date:** [May 22, 2025, 7:23am UTC](https://forum.crystal-lang.org/t/crystal-1-16-2-is-released/8013/12 "2025-05-22T07:23:45Z")

</div>

Yes, the reason I get the wrong result is, I’m put the following commands as equal.

```sh
bin/tartrazine ../crycco/src/crycco.cr swapoff > x.html --standalone

```

```sh
bin/tartrazine ../crycco/src/crycco.cr -f html -t swapoff -o x.html --standalone

```

But, the result really different.

 ![image](https://canada1.discourse-cdn.com/flex036/uploads/crystal_lang/original/2X/d/d74beea3fc5ee83539ef6ec33715bd8014bddbc5.png)
