A year ago in January I presented
My 2022 Crystal WishList, and gave 10 wishes.
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
@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…
Let’s see what came true.
At least one more full time (paid)dev: Done!
Faster|Incremental Compiling: Not yet.
Better Multi-threading: Not really.
Smaller Binaries: Somewhat.
More|Better Documentation: Definitely more, needs to be better.
Marketing Strategy: No.
Another Crystal Conference: No.
Google Summer of Code (GSoC): No.
Web Assembly (WASM): Better.
Kille App: Not yet.
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!
Give the people what they want.
Most of the last couple of hours was just compiling LLVM
Now it outputs this when I try to compile any crystal code…
crystal: /llvm-project/llvm/include/llvm/IR/Type.h:389: llvm::Type* llvm::Type::getNonOpaquePointerElementType() const: Assertion `NumContainedTys && "Attempting to get element type of opaque pointer"' failed.
That’s after building LLVM with:
cmake -DCMAKE_BUILD_TYPE:STRING=Debug ./llvm
True Parallel Processing
I definitely need this to create true parallel threaded application. This is one area Rust shines in.
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.
Has anyone had success doing this?
> crystal build sum.cr -o sum.wasm --target wasm32-emscripten
1 | require "c/stdlib"
Error: can't find file 'c/stdlib'
I tried to changing the target, but get…
This needs to be a separate focus done by people with these particular skills.
See urgency of doing this as expressed here.
Same reasons as last year.
Do more Rosetta Code examples.
This is good for learning tools, tutorials, marketing, etc.
There are a lot of code categories on Rosetta code with no Crystal examples.
An easy way to increase Crystal’s profile on the site, and in the coding world overall, is for people to provide the missing examples. The easiest way to do this is to just translate the Ruby version in each category, as a start.
Doing this would not only up Crystal’s profile, it would also be a good exercise for people (newbies, et al) looking to…
Crystal Programmers Name, and a Mascot
Why should Go, Ruby, Rust, Python, etc have all the fun. Need before we can sell some swag!
Thinking ahead to when the use of Crystal explodes, there needs to be an agreed upon name to call its users (think swag, article references, etc). Can’t have Crystal conferences, meetups, etc without a name people in the community use to refer to themselves as.
So if you use Ruby you’re a Rubyist.
And when you use Crystal you’re a ???
OK, my humble suggestions to get the ball rolling.
Crystalnistas (like for Python)
Maybe make it…
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.
But would that work on normal windows?
NOTE: This thread was written on the phone by a non-native English user, with love for Crystal.
I consider this is a discuss we have to faceing, but i found no one discuss on this.
All following content is just a guess, no evdience, but, i hope this can be the start point.
All begin from i am watching a video from Manas Technology Solution in Youtube, name: Crystal Language Hangout, recorded about six years ago.
three core-member answer question about community.
The first discussed question…
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.
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!
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