Crystal... impressive!
What if someone created an AOT language that had a heavy emphasis on OOP expressiveness, instead of fast compile times. I think the result would be something like Crystal. A very Ruby like, implicitly typed, compiled language with sane single binary deployment as an added bonus. Too good to be true, almost. I’m nearly hooked already even though they haven’t released a 1.0 yet. Implicit typing and union types are enticing. Check out the following:
Union(Int32 | String) # => (Int32 | String)
Union(Int32) # => Int32
Union(Int32, Int32, Int32) # => Int32
(Int32 | String).nilable? # => false
(Int32 | Nil).nilable? # => true(so simple you’d think it’s something that should be ubiquitous)
There’s a trade off when it comes to compile times, and the garbage collector is not meant to concern itself with latency or consistency. It’s using the Boehm GC. Still, wow! It’s already impressive for being so Ruby-like, and performant. We have an abundance of general purpose turing complete languages these days; built on nearly every hypothesis ever devised. As exciting as it that may be, isn’t it time to branch out a bit more and build on this foundation with more domain specific languages? A geologist, or chemist shouldn’t need to waste time context switching to take advantage of the computational power that’s afforded to them. I think this has some serious potential to be a foundation for DSLs to serve exactly that sort of scenario. If that’s the case, and it finds it’s niche here, it wouldn’t have to try and compete with the myriad of languages already available. This is definitely something new.