| > 3. Obscure error messages (macros are to blame here) I feel like this is a bit strongly influenced by the macro experience.
Macros are an advanced and powerful feature and naturally more complex to debug.
In general, Crystal's error messages are often praised for their clarity and helpfulness (especially compared to dynamically typed languages, of course). > 4. Weak HTTP server implementation -- making things such as a fetching POST params or uploads incredibly frustrating. Once read the request body cannot be read again. The stdlib implementation of `HTTP::Server` is intentionally very bare-bones (many programming languages don't even have such a practically usable feature in stdlib).
Specialized web server implementations are available as shards (https://shardbox.org/categories/Web_Frameworks). They're based on the foundation in stdlib and provide more advanced features. > 5. Weak/non-existent Windows support Windows support is pretty stable and almost complete by now. > 6. No multicore support Crystal has supported multi-threading as opt-in via the `-Dpreview_mt` flag. It's considered a preview, because it's to be used with care when dealing with data structures that are not thread-safe. But it has proven to work well in production use. > 8. Nil handling takes a bit getting used to (coming from Ruby) But once you're used to it, it's sooo much helpful. It just helps to avoid a lot of potential bugs which you would have to take extra care for in Ruby. |
This isn't really a genuine statement. Currently Crystal Requires a full installation of Visual Studio on Windows:
https://github.com/crystal-lang/crystal/issues/6170