I've been playing around with Crystal for some toy projects as well as some data cleaning/munging scripts. I had a fairly large CSV dump that was making Ruby choke to death - porting to Crystal was trivial and it ran amazingly fast!
I'm super interested to see where the concurrency story goes in Crystal. Fingers crossed!
It's a "get hooked with the syntax, stay for the features" situation. Elixir leverages the incredible robustness of the erlang virtual machine. So much so, that for me, anyways, it's hard to imagine using anything else without losing sleep anymore.
I replaced a python/uwsgi stateless stack with an elixir stateful system. Flipped it over and it worked flawlessly, and hasn't died once in several months of operation. Latencies are way down, and operation of it is simpler. Full deploy to the head node is one command, not an ansible script.
I guess part of it is that I'm lazy and haven't learned supervisor strategies like kubernetes (the place I work doesn't deploy kubernetes anyways)
It doesn't have battle-tested everything and the kitchen sink like Rails. It has plenty of frameworks though. They just happen to be far more like ExpressJS for node, or Sinatra for Ruby. In this day of microservice/thin JSON API-style apps, Rails might be overkill. I'm not saying it's bad, it just might be a little much.
robbseaton probably has other reasons but I was a huge Ruby fan years ago and have been using Julia for many years now.
For me both languages have similar types of appeal. Ruby is quick to pick up, allows you to write expressive code and is built on the idea of everything being an object. So Ruby is both clean, easy and expressive.
Julia is EXACTLY the same, but for the modern age. It is easy to learn and expressive. Like Ruby the type system is consistent all over. It is not like Java which has primitive types and objects. Numbers in both Julia and Ruby are treated like any other type.
The primary difference is that Ruby came of age in the most object-oriented hyped period of programming language development and that reflects its heavy OOP design.
Julia came around when OOP was no longer considered the silver bullet. So why Julia has elaborate type hierarchies, it is probably closer to a functional language than an object-oriented one.
When Ruby came out it was a language that appealed to programming language geeks like me. It had a bunch of really powerful features we where not used to.
Julia is kind of the same. Multiple-dispatch and Julia macros is something that appeals to all geeks.
I actually never switched to Julia for performance reasons, but because I loved the language.
I dunno. I used to use a lot of Ruby. The lack of types regularly made my life a real pain. I ended up building frameworks tied really tightly to dry-struct to try to work around that, and it wasn't great.
I use TypeScript for everything I used to use Ruby for, save for the occasional file munging inside of `pry`.
Crystal is indeed a very nice language, but the only thing that is holding me from using it greatly, is that it still uses the Boehm GC, which makes it hard to compete with other languages in a production setting.
I understand we might get there one day but I'm afraid this is taking far too long.
Pony's ORCA GC is supposed to be the faster than Erlang's BEAM/HiPE and Azul C4. Ideally, it would be extracted from that language and examples given how to integrate it with the likes of LLVM (it's not compatible OOTB with LLVM's API because of different synchronization primitives).