# My 2025 Crystal Wishlist

**URL:** <https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560>\
**Category:** Community\
**Created:** [December 31, 2024, 11:42pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560 "2024-12-31T23:42:29Z")\
**Posts on this page:** 20\
**Page:** 1

<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:** [December 31, 2024, 11:42pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/1 "2024-12-31T23:42:29Z")

</div>

It’s back!!

I missed putting out my 2024 Crystal WishList, but not this year.

Here are my previous 2023 and 2022 lists.

**2023 Crystal Wishlist**

> [@My 2023 Crystal WishList](https://forum.crystal-lang.org/t/my-2023-crystal-wishlist/5227):
>
> A year ago in January I presented My 2022 Crystal WishList, and gave 10 wishes. Let’s see what came true. At least one more full time (paid)dev: Done! +1 Faster|Incremental Compiling: Not yet. -1 Better Multi-threading: Not really. pinching_hand Smaller Binaries: Somewhat. pinching_hand More|Better Documentation: Definitely more, needs to be better. clap Marketing Strategy: No. -1 Another Crystal Conference: No. -1 Google Summer of Code (GSoC): No. -1 …

**2022 Crystal Wisthlist**

> [@My 2022 Crystal Wishlist](https://forum.crystal-lang.org/t/my-2022-crystal-wishlist/4186):
>
> It has been a momentous 2021 for Crystal. Version 1.0 was released in March 2021 followed by the first (virtual) Crystal Conference in July 2021. In the spirit of the Holiday Season, Here’s my 2022 Crystal Wish List, in no particular order. At least one more full time (paid) Dev Adding @straight-shoota as a fulltime dev greatly speeded up Crystal development, and improvement. More fulltime devs will enable more aspects of the language to be focused on simultaneously. More devs means t…

Some 2025 items are previous years holdovers, along with more current ones.

So without further adieu (drum roll) **My 2025 Crystal WishList!** 🎆🎇 🎉

1. **True Parallel Multi-Threading**  
Real progress seems to have been made. Can we get it finished in 2025?

> [@Crystal multithreading support](https://forum.crystal-lang.org/t/crystal-multithreading-support/6622):
>
> Great News, threading and supporting multiple levels of parallelism is critical in writing backend enterprise grade applications that can maximally use the underlying computing hardware. There are numerous examples of programming languages that under the covers use system threads but provide the ergonomics to polish the edges away for developers. I would encourage Crystal lang to research techniques used in Go lang, Rust, Java 21 to develop the threading model that will enable Crystal to pen…

1. **Better, Faster, and Incremental Compilation**  
Here’s a word of encouragement to the compiler Gurus.

2. **More Money, More People, More Resources**  
Rust has a Foundation, Go has Goggle, Swift has Apple, C# has Microshaft.  
Please one of the Devs, take one for the team, and marry a Billionair’s Ex, and funnel some money into Crystal.

3. **Documentation Committee**  
Again, make this a separate focus done by people with these particular skills.

4. **Marketing Strategy**  
Another perennial holdover. Yes it’s not sexy, but it’s still necessary.

5. **Better Docs and Turtorials**  
Another perennial issue that always rears its ugly head.

> [@Need beginner-friendly tutorials](https://forum.crystal-lang.org/t/need-beginner-friendly-tutorials/7471/11):
>
> No, I think they have perhaps made a pr or two. But the majority of the content on Exercism, have I written together with some other contributors. Quite often is the first syllabus exercise named after the creator of the language. Python’s version is: “Guido’s Gorgeous Lasagna”, which is a refrence to Guido van Rossum.

1. **Full Windows Support**  
This isn’t something I’m concerned about, but it seems to be getting better.

> [@Issues with Crimson on Windows](https://forum.crystal-lang.org/t/issues-with-crimson-on-windows/7309):
>
> Probably is an issue, i install Crystal use scoop which following the official guides, after i uninstall Crystal use scoop, but crimson still warn me crystal was not uninstalled.(check following screenshot) [image] And, then, install crystal use crimson failed too. [image] But it install sucessful if run only crimson install without version. I try this on Win10 in VirtualBox, this is a relatively clean system, only install Crystal use scoop several times. Thanks

1. **Killer App**  
I can still dream that Crystal will be confused one day like Ruby on Rails.

2. **Full Web Assembly (WASM) Support**  
Nice strides were made previously, could more happen in 2025, and lead to that Killer App.

> [@Compiling to WASM for JS](https://forum.crystal-lang.org/t/compiling-to-wasm-for-js/5132):
>
> Following a few posts I was able to get Crystal to compile to WASM with wasi. From what I understand, WASI is just the basic WASM without any Javascript stuff added. It sounds like in order to get WASM actually in the web, it needs to target emscripten? Has anyone had success doing this? \> crystal build sum.cr -o sum.wasm --target wasm32-emscripten In /usr/share/crystal/src/string.cr:1:1 1 | require "c/stdlib" ^ Error: can't find file 'c/stdlib' I tried to changing the target, but get…

1. **Start Actual Development of 2.0**  
No significant action in 2024 done on this. Still sitting at 3 open PRs on Github.

Well that’s it for me. Add your own! 🤩

---

<div class="post-metadata">

**Author:** ![nobodywasishere](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nobodywasishere/32/1983_2.png) [@nobodywasishere](https://forum.crystal-lang.org/u/nobodywasishere)\
**Post date:** [January 1, 2025, 12:19am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/2 "2025-01-01T00:19:55Z")

</div>

1. Better language tooling. Me and others have been making a lot of progress on this and the tree sitter sitting at 75% of the stdlib parsing without errors gives hope. A lot of different things fit under here and I’m still trying to figure out the best approaches for them but I intend to give it my all going into next year.
2. Semantic analysis in ameba with corresponding rules. There’s a lot of potential here for making the Crystal development experience so much better, including (some) level of semantic analysis done for methods that aren’t called. [Expand ameba's functionality with semantic information · Issue #513 · crystal-ameba/ameba · GitHub](https://github.com/crystal-ameba/ameba/issues/513)
3. Type-safe equality. This is an issue I run into too much and really think safeguards should be in place.
4. More structured macro system. [Should Programming Languages be Safe or Powerful? | Lambda Land](https://lambdaland.org/posts/2024-11-21_powerful_or_safe_languages/)
5. Rewrite [crystaldoc.info](https://crystaldoc.info) from the ground up to make it faster / more reliable and provide more functionality.
6. Fault-tolerant stdlib parser + semantic passes

---

<div class="post-metadata">

**Author:** ![kojix2](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/kojix2/32/1583_2.png) [@kojix2](https://forum.crystal-lang.org/u/kojix2)\
**Post date:** [January 1, 2025, 3:16am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/3 "2025-01-01T03:16:35Z")

</div>

Happy New Year!

I wish all Crystalists around the world another wonderful year.

---

<div class="post-metadata">

**Author:** ![crimson-knight](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/crimson-knight/32/1643_2.png) [@crimson-knight](https://forum.crystal-lang.org/u/crimson-knight)\
**Post date:** [January 1, 2025, 5:36pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/4 "2025-01-01T17:36:49Z")

</div>

> [@nobodywasishere](#):
>
> Type-safe equality

What does this mean exactly?

---

<div class="post-metadata">

**Author:** ![nobodywasishere](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nobodywasishere/32/1983_2.png) [@nobodywasishere](https://forum.crystal-lang.org/u/nobodywasishere)\
**Post date:** [January 1, 2025, 5:41pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/5 "2025-01-01T17:41:37Z")

</div>

```crystal
def receive(msg : String)
  # this will always be false as String#[] always returns a Char
  if msg[0] == "a"
    puts "message starts with 'a'"
  end
end

```

or

```crystal
case "hello"
when 'h' # this will always be false
end

```

The first example especially bites me all the time.

---

<div class="post-metadata">

**Author:** ![crimson-knight](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/crimson-knight/32/1643_2.png) [@crimson-knight](https://forum.crystal-lang.org/u/crimson-knight)\
**Post date:** [January 1, 2025, 6:01pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/6 "2025-01-01T18:01:33Z")

</div>

Mine is a short list, however I think there’s a lot of impact behind each point.

1. Refine AI training material and the publication process for Crystal’s std lib, let’s keep public models up to date

2. Improve the agent driven application templates & docs.

This oscillates between helping AI models and also helping the developer.

---

<div class="post-metadata">

**Author:** ![MistressRemilia](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mistressremilia/32/2585_2.png) [@MistressRemilia](https://forum.crystal-lang.org/u/MistressRemilia)\
**Post date:** [January 1, 2025, 10:55pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/7 "2025-01-01T22:55:17Z")

</div>

Hmm… mine would be short as well.

1. Something akin to lparallel’s [kernel](https://lparallel.org/kernel/), which I think the upcoming execution contexts will cover?
2. True threads, not just fibers, that you can access outside of kernels/execution contexts/whatever.
3. An equivalent to [cargo-mommy](https://github.com/Gankra/cargo-mommy). I might be able to do this myself…
4. SIMD support as nice as [what I find in SBCL](https://www.sbcl.org/manual/#sb_002dsimd).
5. The ability to build shared libraries written in Crystal.

---

<div class="post-metadata">

**Author:** ![mjblack](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mjblack/32/1878_2.png) [@mjblack](https://forum.crystal-lang.org/u/mjblack)\
**Post date:** [January 2, 2025, 4:45am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/8 "2025-01-02T04:45:20Z")

</div>

my list would be

1. Official supported library creation support. It would be nice to be able to build static, shared, or DLL files.
2. Shard spec expanded to have build parameters for targets.
3. Shards and Shards site that takes age of repo and Crystal version into account. There are many shards that are too old and broken with the current Crystal, and some of these Shards have been abandoned for years.

---

<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:** [January 2, 2025, 4:52am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/9 "2025-01-02T04:52:19Z")

</div>

> [@nobodywasishere](#):
>
> Me and others have been making a lot of progress on this and the tree sitter sitting at 75% of the stdlib parsing without errors gives hope

Hi, how to test that? may i can try it on my editor and give some feedback.

I saw a repo [here](https://github.com/nobodywasishere/crystal-tree-sitter), but I’m not sure if this is what you said.

---

<div class="post-metadata">

**Author:** ![Fijxu](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/fijxu/32/3422_2.png) [@Fijxu](https://forum.crystal-lang.org/u/Fijxu)\
**Post date:** [January 2, 2025, 6:20am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/10 "2025-01-02T06:20:33Z")

</div>

A better LSP with code suggestions. I just want to write without looking at the documentation.

---

<div class="post-metadata">

**Author:** ![nobodywasishere](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nobodywasishere/32/1983_2.png) [@nobodywasishere](https://forum.crystal-lang.org/u/nobodywasishere)\
**Post date:** [January 2, 2025, 2:37pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/11 "2025-01-02T14:37:10Z")

</div>

That is the correct repo, and we’re making rapid progress, including basic support for macros while we figure out how to handle more complex macro parsing. What editor are you using? I think we have some syntax queries setup for nvim, but it’s still WIP. I personally want to get to \>95% before we officially add support to neovim/helix/zed, as the queries could quickly change too.

---

<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:** [January 2, 2025, 2:44pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/12 "2025-01-02T14:44:23Z")

</div>

> [@nobodywasishere](#):
>
> What editor are you using?

Emacs, current only use [emacs-crsytal-mode](https://github.com/crystal-lang-tools/emacs-crystal-mode) and lsp-mode(with crystalline)

---

<div class="post-metadata">

**Author:** ![nobodywasishere](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nobodywasishere/32/1983_2.png) [@nobodywasishere](https://forum.crystal-lang.org/u/nobodywasishere)\
**Post date:** [January 2, 2025, 3:09pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/13 "2025-01-02T15:09:53Z")

</div>

I’m not at all familiar with emacs unfortunately. If you make an issue on the GitHub repo you linked, happy to try figuring out the best way to add support.

---

<div class="post-metadata">

**Author:** ![keidax](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/keidax/32/2729_2.png) [@keidax](https://forum.crystal-lang.org/u/keidax)\
**Post date:** [January 3, 2025, 3:17am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/14 "2025-01-03T03:17:31Z")

</div>

I think [tree-sitter-crystal](https://github.com/crystal-lang-tools/tree-sitter-crystal) is the repo you’re looking for.

---

<div class="post-metadata">

**Author:** ![konovod](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/konovod/32/229_2.png) [@konovod](https://forum.crystal-lang.org/u/konovod)\
**Post date:** [January 3, 2025, 9:02am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/15 "2025-01-03T09:02:39Z")

</div>

When I first came to Crystal, Windows wasn’t supported at all. And I was thinking “well, perhaps it will never be supported, stdlib is fully posix-oriented, i have to use it on Linux”. But after some years - huh, I easily write games on Windows in Crystal. ❤  
Then I thought - “well, it will never be useful on my main work, embedded microcontrollers. Because of GC and big runtime size. Mainly because of GC - mcus may have big ROM, but limited to kilobytes of RAM. This can’t be solved without full remake of language”. But in 2024, from absolutely nowhere, huh - [Embedded Crystal](https://forum.crystal-lang.org/t/embedded-crystal/7408) ❤  
Even though there is still a work needed to develop programs fully in Crystal, i’ve already tried to link crystal code with my existing C projects - it works, so I can actually use it at work (yes, i’m the only programmer in our company for many years so I don’t worry about nobody else understanding a code).

Crystal somehow repeatedly does what i can’t even wish for. BTW I missed two other cases - one when i thought “Ruby is so beautiful, but it is just impossible for such language to be fast” and then clicked on unknown name in yet another language benchmark ❤ and another about multithreading ❤.

So… No wishlist for 2025, I’ll let it surpise me again.

---

<div class="post-metadata">

**Author:** ![ysbaddaden](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/ysbaddaden/32/2252_2.png) [@ysbaddaden](https://forum.crystal-lang.org/u/ysbaddaden)\
**Post date:** [January 6, 2025, 11:40am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/16 "2025-01-06T11:40:41Z")

</div>

No wish list for me. I’m keeping the surprises 😸

@konovod ❤

@nobodywasishere Keep up the good work on the tree sitter parser ❤

@MistressRemilia `ExecutionContext::Isolated` runs a single fiber in its dedicated thread (no concurrency), while being stdlib aware, hence you can do whatever blocking or cpu heavy things you need, yet are able to report progress normally (`Channel`, `WaitGroup`, …) or even do regular IO.

---

<div class="post-metadata">

**Author:** ![MistressRemilia](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/mistressremilia/32/2585_2.png) [@MistressRemilia](https://forum.crystal-lang.org/u/MistressRemilia)\
**Post date:** [January 7, 2025, 1:26am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/17 "2025-01-07T01:26:45Z")

</div>

Hmm… so an `ExecutionContext::Isolated` effectively becomes a “sorta-thread”, where it’s one fiber paired with one native thread? Kinda like bubblewrap around native access to launch a thread?

---

<div class="post-metadata">

**Author:** ![chillfox](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/chillfox/32/1870_2.png) [@chillfox](https://forum.crystal-lang.org/u/chillfox)\
**Post date:** [January 7, 2025, 3:31am UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/18 "2025-01-07T03:31:31Z")

</div>

I am really looking forward to the multithreading work being complete 😁

My wish list:

- Thread safe stdlib with multithreading and/or compiler warnings when doing something that’s not thread safe.
- SIMD.
- HTTP2/3 server in stdlib.
- ACME client in stdlib.
- Better/easier to use cryptography/docs in stdlib.
- Better compiler errors for code generated by macros (bugs in macro code is by far the most difficult to debug).

---

<div class="post-metadata">

**Author:** ![robmullr](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/robmullr/32/1113_2.png) [@robmullr](https://forum.crystal-lang.org/u/robmullr)\
**Post date:** [January 7, 2025, 8:07pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/19 "2025-01-07T20:07:05Z")

</div>

I was going to pass on goals and await the surprise developments but if we are wishing…

- A reliable, cross platform, easy to use, just works library generator for C and other languages libraries
- Update(s) to the Crystal VSCode plugin so the “running context tool” spinning wheel stops on its own.

---

<div class="post-metadata">

**Author:** ![nobodywasishere](https://yyz2.discourse-cdn.com/flex036/user_avatar/forum.crystal-lang.org/nobodywasishere/32/1983_2.png) [@nobodywasishere](https://forum.crystal-lang.org/u/nobodywasishere)\
**Post date:** [January 7, 2025, 9:17pm UTC](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560/20 "2025-01-07T21:17:59Z")

</div>

Hopefully with the recent tree sitter updates I can rip all that old code out of the vscode extension and have something much better out of the box by default 🙂. It is possible to disable the context tool in settings in the meantime (`crystal-lang.hover`).

[Next page](https://forum.crystal-lang.org/t/my-2025-crystal-wishlist/7560.md?page=2)
