News for hackers. Stuff that matters.
Re:Crystal Programming Language by sph on Friday September 02, 2022 @04:25AM (#32688145)
What do you mean by great concurrency? Last I checked multithreading was still hidden behind an experimental compiler flag, which turns me off a bit...
Re:Crystal Programming Language by samuell on Friday September 02, 2022 @07:24AM (#32689329)
I did a small comparison of implementing pipeline concurrency in Go and Crystal:

https://rillabs.com/posts/crystal-concurrency-easier-syntax-...

Crystal pretty much provides the same (great) concurrency functionality with light-weight threads and channels etc, but with a cleaner syntax and in my experience less gotchas around closing channels in the wrong place and order etc.

The main downsides compared to Go I've seen is:

- (As mentioned) Compile times

- Far less compelling cross-compilation story

Re:Crystal Programming Language by kitd on Friday September 02, 2022 @06:31AM (#32689021)
Not OP, but the concurrency model is similar to Go with its use of channels. At the moment the runtime is single-core, but the chosen model should permit multi-core (when they enable it by default) with little to no changes to user source.

Tbh, I prefer it that way round than try to retrofit multi-core onto a model that wasn't designed for it. But yes, single-core feels a bit behind the curve in 2022.

Re:Crystal Programming Language by straight-shoota on Friday September 02, 2022 @06:36AM (#32689038)
concurrency != multi-threading.

Crystal's concurrency is based on fibers (green threads) which works very well even on a single thread (it scales to multiple threads, as well)

And for many use cases with high parallelization and little shared state (including web applications such as a search engine), multi-threading isn't necessary. Synchronization overhead is a serious performance killer. You can get much more performance out of running N processes with a single thread instead of a single process running N threads.

Re:Crystal Programming Language by zw963 on Friday September 02, 2022 @11:57AM (#32692319)
Hope a lot of people can see this, detailed explanation come from Crystal core developers.

because a lot of beginners complain that Crystal's fiber doesn't work on multiple cores/multiple threads and then give up using it, it's probably not as important as people think.

Even many beginners mistakenly believe that the Crystal language does not support the creation of operating system native Thread, this is a huge misunderstanding for Crystal.