News for hackers. Stuff that matters.
Re:Crystal 1.22.0 by onlyrealcuzzo on Thursday October 22, 2026 @11:06AM (#50196442)
> Crystal is like a typed Ruby with the performance and concurrency flow of Go.

I'm not up to date, but the scheduling engine was far behind Go in terms of parallelism. Crystal was always quite good at concurrency.

But Go is popular because it's so good at parallelism (and relatively safe with a garbage collector).

I know Crystal has been working on this for the last few releases, but I'd be surprised if it's matching Go on parallelism.

Go's runtime is quite the engineering feat.

It can often outperform hand-optimized Rust in worst-case parallel workloads (p99), despite Rust having a number of pretty huge advantages...

Re:Crystal 1.22.0 by goatlover on Thursday October 22, 2026 @12:22PM (#50197528)
Does it outperform Erlang/OTP?
Re:Crystal 1.22.0 by giancarlostoro on Thursday October 22, 2026 @11:42AM (#50196960)
Goroutines are roughly 2kb in memory, and Crystal fibers are roughly 4KB, which is insane in any regard. I think Crystal is really interesting and worth considering, especially if you want something native that has OOP, I really would love to see Crystal used more in general.
Re:Crystal 1.22.0 by ButlerianJihad on Thursday October 22, 2026 @11:52AM (#50197119)
That is especially insane, when we consider that "B" means "bytes" while "b" means "bits", and "kb" means 1,000 bits, while "KB" means 1,024 bytes (8,192 bits)!

Happy International Caps Lock Day!!1

Re:Crystal 1.22.0 by giancarlostoro on Thursday October 22, 2026 @02:45PM (#50199403)
The one time I don't double check my capitalization for bytes vs bits... The sad thing is I usually double check as I type them, must have been in the middle of something and not noticed.
Re:Crystal 1.22.0 by out_of_protocol on Friday October 23, 2026 @04:35AM (#50206036)
KiB means 1,024 bytes, KB is still 1000, if you want to be pedantic.

On other note, who the hell decided kibi, mebi, gibi are good prefix names? that's the reason no one uses them (me too)

Re:Crystal 1.22.0 by ButlerianJihad on Friday October 23, 2026 @05:25AM (#50206390)
No, "KiB" is the IEC abbreviation, while "KB" is the JEDEC abbreviation for the same quantity of 1,024 bytes. "kB" is the SI abbreviation for decimal 1,000 bytes.

https://en.wikipedia.org/wiki/Kilobyte

The metric prefix "kilo" is always lowercase. I don't know how you got a capitalized "K", but that's not how it works.

https://en.wikipedia.org/wiki/Kilo-

Re:Crystal 1.22.0 by DetroitThrow on Thursday October 22, 2026 @11:17AM (#50196596)
>It can often outperform hand-optimized Rust in worst-case parallel workloads (p99), despite Rust having a number of pretty huge advantages...

I will say this comes with the asterisk that it heavily depends on what your concurrent system/problems looks like!

...but more often than not when dealing with web problems and network IO, the shape of concurrency/parallelism I need looks exactly like Goroutines, and even as someone who uses Rust/tokio daily: the Go runtime is an incredibly engineered system that usually beats Rust in my experience for application dev tasks.

Anyways, I love Crystal's syntax around concurrency! I wish we lived in a world where it had tons of Google engineers optimizing the runtime :)

Re:Crystal 1.22.0 by pjmlp on Thursday October 22, 2026 @12:47PM (#50197883)
Go is popular because Docker and Kubernetes made it popular, and it was designed by UNIX idols.

If only it had a few more features from 1970's languages, designed outside Bell Labs, or even those from Limbo that it still doesn't support.

Re:Crystal 1.22.0 by straight-shoota on Thursday October 22, 2026 @02:50PM (#50199448)
Crystal core dev speaking.

In the previous release (1.21) we enabled Execution Contexts as a parallelism engine. https://crystal-lang.org/2026/07/12/releasing-execution-cont...

It's even more flexible than Go because you can tune different contexts for specific workloads. Go still has more advanced optimizations and overall better thread-safety in libraries. But we're working on that...

Re:Crystal 1.22.0 by onlyrealcuzzo on Friday October 23, 2026 @09:58AM (#50209102)
Thanks for the response!

My main critique - which I'm sure you're aware of - is that the hardest part of doing this is predicting what your workload is actually going to be like. That's what Go does so well. It can get almost anything right without you needing to hand-tune it.

While I have you - are y'all planning to implement FSMs and thunks (for recursion) at any time in the near future?

This is something Go is unlikely to ever do unless it becomes a Go2 language.

I don't know enough about your runtime to know if it's remotely feasible given the choices you've made.