In short, it satisfies my vision for a great language:
- pleasant to use
- compiles to a single binary
- fast performance
- simple and easy to learn
- auto-yielding coroutines
- hybrid OO/functional
Crystal almost meets all my criteria for a perfect language. Crystal would be perfect if it supported parallelism, interfaces, better type inference, and a more functional nature.
Since Crystal is pleasant to use, I’m implementing Able in Crystal. I built a parser combinator - Arborist - in order to implement the Able grammar. Now I need to finalize the initial design of the language, finish the grammar, and then start implementing type inference/unification.