My 2025 Crystal Wishlist

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

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! :fireworks: :sparkler: :tada:

  1. True Parallel Multi-Threading
    Real progress seems to have been made. Can we get it finished in 2025?
  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.

  1. Full Windows Support
    This isn’t something I’m concerned about, but it seems to be getting better.
  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.

  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! :star_struck:

9 Likes
  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
  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
  5. Rewrite crystaldoc.info from the ground up to make it faster / more reliable and provide more functionality.
  6. Fault-tolerant stdlib parser + semantic passes
13 Likes

Happy New Year!

I wish all Crystalists around the world another wonderful year.

9 Likes

What does this mean exactly?

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

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

The first example especially bites me all the time.

5 Likes

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.

2 Likes

Hmm… mine would be short as well.

  1. Something akin to lparallel’s 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. I might be able to do this myself…
  4. SIMD support as nice as what I find in SBCL.
  5. The ability to build shared libraries written in Crystal.
6 Likes

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.
2 Likes

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

I saw a repo here, but I’m not sure if this is what you said.

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

4 Likes

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.

Emacs, current only use emacs-crsytal-mode and lsp-mode(with crystalline)

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.

I think tree-sitter-crystal is the repo you’re looking for.

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. :heart:
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 :heart:
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 :heart: and another about multithreading :heart:.

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

15 Likes

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

@konovod :heart:

@nobodywasishere Keep up the good work on the tree sitter parser :heart:

@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.

5 Likes

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?

2 Likes

I am really looking forward to the multithreading work being complete :grin:

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).
4 Likes

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.
4 Likes

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 :slight_smile:. It is possible to disable the context tool in settings in the meantime (crystal-lang.hover).

3 Likes