The Crystal Programming Language Forum

My 2022 Crystal Wishlist

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.

  1. 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 the need for more $$$ to pay them. Hopefully that will happen.

  1. Faster|Incremental Compiling

Compiling speed seems to be always raised by people coming from other languages. It’s a known issue, if for no other reason than marketing.

  1. Better Multi-threading

Crystal has a very young multi-threading model|implementation primarily based on fibers, which is geared more for concurrency than parallelism.

I would love to see it become as good as Rust for true parallel processing. Rust has the crate Rayon that provides most of that for applications. I would love for Crystal to provide comparable features and utility.

  1. Smaller Binaries

I consistently see this raised in the Rust forums too.

  1. More|Better Documentation

You never can have enough (good) documentation, especially as the language and features are growing|changing. This has been brought up over and over, so it’s nothing new as a desirable element of the Crystal ecosystem.

I also suggest creating a Crystal Youtube Channel as a single focal point for people to see|submit video tutorials, examples, project showcases, etc.

  1. Marketing Strategy

You can have the best xyz, but if nobody knows about it, or how to use it, and how it can make their lives easier, better, more productive, it doesn’t matter.

This directly ties into the documentation issue too.

  1. Another Crystal Conference

The July conference was great! Thanks to everyone involved in pulling it off. Of course the Ruby world has lots of conferences around the world which its community look forward to. This also fits into marketing and general education.

  1. Google Summer of Code (GSoC)

I’ve seen this discussed before. Maybe it can be done in 2022.

  1. Web Assembly (WASM)

It’s emerging, it’s sexy, it’s useful, it’s part of the future.
Crystal can (should) be a big player in this field.

  1. Killer App

When you’re good at everything, people overlook you. When you’re known for at least one thing, more people pay attention. It just seems that’s the way it is. Allot of people still don’t know there’s a difference|separation between Rails and Ruby.

This is my short list. What’s yours!

12 Likes

Well, in order of most wanted

  1. Full windows support
    and I can guarantee the project will get more funding once it is available on windows
  2. Better documentation
    Just like you said. Personally I prefer written items over videos but a better youtube presence wouldn’t hurt. One thing that that is clearly improvable is to write documentation that does not rely on users knowing ruby at all, and likewise, to expect non-ruby users.
  3. Faster or more tuneable compilation
    once again like you said
6 Likes

RE Documentation: has anyone thought of creating something like rubydoc.info to auto-build/cache the crystal docs for shards given their github/gitlab user/repo name? That way the shard authors wouldn’t have to host their own documentation and it would all be in one place.

2 Likes

Can just use https://pages.github.com/ with a GH Action, e.g. oq/deployment.yml at master · Blacksmoke16/oq · GitHub.

4 Likes
3 Likes

Integrations with popular 3rd party services. So much of modern development is integrating with other applications in the ecosystem.

3 Likes

(in my opinion) the reason why ruby didn’t become what python now is, is sinple windows support and easy gui toolkits. So, thats my number 1 wish.

2 Likes

My only wish in 2022 is for the type system and some core semantics to be formalized and finalized, so that the compiler can be developed against a truly formal specification and compiler non-developers don’t have to guess what happens behind the scenes (in cases like this for example).

4 Likes

Happy new year!

My only wish for Crystal in 2022 is a better compilation time.

Bonus:

  • Better support of Crystal in VScode
  • Better documentation
  • WASM
2 Likes

I can’t agree more, but that’s a wish for 2022-2026 (the time span of a PhD…).

We have a similar list going in Lucky. My Lucky "Wishlist" · Discussion #1629 · luckyframework/lucky · GitHub

Personally, I want to see more experimentation done with DSLs specifically in the web sphere. Most of what has been written was written by people coming from Ruby and mimicking libraries there, but I think there’s so much left unexplored. Athena is a good example where it’s using Crystal’s annotations in a really clean way that no other popular framework has done and that’s because the creator was inspired by PHP rather than Ruby. I think Kotlin is a source of inspiration for me even though I have used it very little. I’m looking at libraries like GitHub - JetBrains/Exposed: Kotlin SQL Framework and wondering if it’s do-able in Crystal.

2 Likes

As you could probably guess, I’d like some improvements/thoughts around macros/annotations:

Having all these would be huge in regards to the power, ease of use, and readability of macros/annotations.

2 Likes

The only thing in my wishlist is to think about Crystal 2.0 as a new language that retains the original spirit of the language but changes enough things to be able to implement modular compilation. I have to sit down and think about what this means, and my wish is for other core team members to also try to think about that.

To achieve modular compilation, all of these would need to happen:

  • Instead of require merely loading files, change it, or introduce an import keyword to specify what you want to import. If you don’t import something, it’s not globally available (unlike the current behavior)
  • Mandatory types in method arguments and return types
  • Disallow reopening types, but allow something similar by having extension methods (similar to C#)
  • Type restrictions in generic type arguments
  • Macros can no longer introspect the entire program. They can still introspect types

At least, the idea is that a file can be looked at and type-checked by looking at itself and its dependencies, but without having to always have a main program.

That said, I’m not sure if all of the above is entirely possible without making the language lose its essence.

10 Likes

In the original list there is a Crystal Workshop 2022, and I’ve been thinking about adding spaces to discuss these kind of topics.

3 Likes