My 2023 Crystal WishList

A year ago in January I presented My 2022 Crystal WishList, and gave 10 wishes.

Let’s see what came true.

  1. At least one more full time (paid)dev: Done! :+1:

  2. Faster|Incremental Compiling: Not yet. :-1:

  3. Better Multi-threading: Not really. :pinching_hand:

  4. Smaller Binaries: Somewhat. :pinching_hand:

  5. More|Better Documentation: Definitely more, needs to be better. :clap:

  6. Marketing Strategy: No. :-1:

  7. Another Crystal Conference: No. :-1:

  8. Google Summer of Code (GSoC): No. :-1:

  9. Web Assembly (WASM): Better. :clap:

  10. Kille App: Not yet. :-1:

So we saw significant progress in some areas, with the opportunity for much more in others.

Following in the spirit of last year (drum roll), I now present My 2023 Crystal WishList! :fireworks: :sparkler: :tada:

  1. Faster|Incremental Compilation
    Give the people what they want.
  1. True Parallel Processing
    I definitely need this to create true parallel threaded application. This is one area Rust shines in.

  2. Full Web Assembly (WASM) Support
    Nice strides were made last year. Let’s take a Big Leap this year. Could lead to that Killer App.

  1. Documentation Committee
    This needs to be a separate focus done by people with these particular skills.
    See urgency of doing this as expressed here.

  1. Marketing Strategy
    Same reasons as last year.

  2. Do more Rosetta Code examples.
    This is good for learning tools, tutorials, marketing, etc.

  1. Crystal Programmers Name, and a Mascot
    Why should Go, Ruby, Rust, Python, etc have all the fun. Need before we can sell some swag!
  1. Full Windows Support
    This isn’t something I’m concerned about, but it’s been brought up enough to make this the year it’s finally done.
  1. Killer App
    Same a last year. Like Rails for Ruby, we need an app people need|want to use, and when they learn it was done in Crystal, will want to learn it too.

  2. Start Actual Development of 2.0
    Let’s start tangible development to create the language we know we want more of.

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


Parallel Processing is the only thing that I would love to see.

Matz famously regrets adding threads to Ruby “I regret adding Threads.” - Matz
Ruby has implemented Ractors as a replacement, which seem reasonably good (threads are lightweight processes, so provide similar isolation semantics as regular processes by default)

I think raw threads are a bad idea too, would love to see a good abstraction that leverages nurseries - possibly something like:

  • spawn only spawns fibers
  • nurseries spawn on new threads (applied to a particular threads reactor)
  • communicate with a nursery vi a channel

My wishlist is:

  1. Parallel Processing

  2. SIMD

  3. HTTP::Server request buffering
    So that I can put Crystal directly on the internet and not hide every small app I make behind envoy, plus this envoy yaml config is just horrible to work with basic envoy config · GitHub

  4. http2/http3 in the standard library

  5. acme in the standard library

  6. faster specs

  7. I guess finishing Windows support, I am just getting tired of seeing it all the time. Windows support is good enough as is to compile and run the small app I made over Christmas

  8. Better cross-compile (give me a binary instead of a command to run), maybe the ability to make a portable binary using cosmopolitan libc