I missed putting out my 2024 Crystal WishList, but not this year.
Here are my previous 2023 and 2022 lists.
2023 Crystal Wishlist
2022 Crystal Wisthlist
Some 2025 items are previous years holdovers, along with more current ones.
So without further adieu (drum roll) My 2025 Crystal WishList!
True Parallel Multi-Threading
Real progress seems to have been made. Can we get it finished in 2025?
Better, Faster, and Incremental Compilation
Here’s a word of encouragement to the compiler Gurus.
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.
Documentation Committee
Again, make this a separate focus done by people with these particular skills.
Marketing Strategy
Another perennial holdover. Yes it’s not sexy, but it’s still necessary.
Better Docs and Turtorials
Another perennial issue that always rears its ugly head.
Full Windows Support
This isn’t something I’m concerned about, but it seems to be getting better.
Killer App
I can still dream that Crystal will be confused one day like Ruby on Rails.
Full Web Assembly (WASM) Support
Nice strides were made previously, could more happen in 2025, and lead to that Killer App.
Start Actual Development of 2.0
No significant action in 2024 done on this. Still sitting at 3 open PRs on Github.
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.
Official supported library creation support. It would be nice to be able to build static, shared, or DLL files.
Shard spec expanded to have build parameters for targets.
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.
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.
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.
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
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.
@nobodywasishere Keep up the good work on the tree sitter parser
@MistressRemiliaExecutionContext::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.
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?
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).