So I was thinking of trying out Crystal, I had tried it multiple times but left it midway. Now that there’s a book on it and it’s version 1.0 (not that pre-1.0 ever stopped me from learning a language), I was thinking of giving another dive.
My previous experience with the language was good, I mean, I never used Ruby but they do have similarities and I like that type of syntax. It’s pretty fast too. The only con for me was the editor support, compared to that, Nim has much better editor support (It has a pleasurable syntax in front of a performant system but I think I like Crystal syntax more).
Does anyone have any shareable views about Crystal? Any advice/suggestions/feelings on it? Anyone planning on learning it?
I would be up for this! Since I know Ruby hopefully it wouldn’t be too hard getting familiar with Crystal too.
One thing I always thought might be good is using it for Elixir/Erlang nifs, but I think @OvermindDL1 said this may not be a good fit.
Other than that, would it be good to use for things like graphical work? Do you know what the Crystal core team are targeting it at?
(Speaking of the core team, I think I spoke to one or two of them via Twitter a few years ago and they always came across as very nice and very much in the spirit of Ruby… which is always a huge plus )
For using a NIF you do not want to use a language that has a GC, because it will conflict with the Erlang BEAM GC unless you are very very very careful about where data is ‘owned’ and that you prevent the GC from running on any of the BEAM threads, but as long as you can verify all that then it’s fine.
On a crystal side I messed with it for a couple small tools, doesn’t seem bad but not really my style. For something C’ish like that I’d go more for Nim or so (though for most things I’d go Rust nowadays anyway). Plus when I last tried it, it still had a GIL, so no parallelization.
Nim is fantastic if you really exceptionally need to work specifically with C code, it’s a better C. Where you can translate C to Rust losslessly, Nim can actually compile C code as C straight, so it’s nice for that. Doesn’t have the safety of Rust, but it’s very good regardless from my testing of it.
Also, Nim does technically have a GC, it just doesn’t get invoked the great majority of the time due to language design.