Gripes with Crystal
Up: Crystal
-
Whole-program compilation: The entire source code is compiled every single time. This makes compilation consistently slow for large projects. Crystal doesn’t really have a module system that would allow for good incremental compilation,1 and that might just be a fundamental flaw of the language itself.
-
Lack of covariance: Crystal doesn’t really have covariance. For example, if a
Textclass has a subclassNovel, then an array ofNovels is not an array ofTexts. In mathematical terms:A <: Bunfortunately does not implyA[] <: B[]. This has gotten in my way many times before.
Initially documented in Weeknotes 2025 W05: Best performance.