As far as the language itself goes, I have tried Rust, Nim, Go, and D, and I find crystal vastly preferable to all of them, probably because I have a ruby and C/C++ background. I just wish windows support and parallelism would get finished already as I have some cross-platform desktop app aspirations that I would love to fulfill in crystal rather than something horrible and ugly like Electron/node.
I am also working on a crystal-like language (with a crystal-based LALR(1) compiler) called Nojs (or just No) that compiles to javascript and has restrictions that make static analysis easy enough that you can include exactly the code needed and nothing more (e.g. don't include unreachable code) for whatever web page you are on, instead of importing entire libraries everywhere. This is really great because the dynamic nature of js normally makes this impossible as it is impossible to tell whether you are about to eval something into existence, etc, or call a method based directly off the value of a string... I am also using crystal-style require statements as I am not a fan of Node.js's module setup -- I'd rather have a global namespace to pollute and monkey-patch when I want to, with the option of using modules like in crystal/ruby, and the ability to require anywhere and have it literally import the required code at that point in the file. I don't have it on a public github yet but stay tuned.
Do you use any frameworks with Crystal or has it mostly been vanilla stuff? How would you gauge the maturity of the dev environment?
The language does change now and again, but upgrading has been fairly straightforward thus far, and I manage a number of open source crystal projects in addition to my closed source production code. You always have the option of not upgrading until you are ready, which is more than enough at least for me.
Debugging represents a unique challenge. I plan to eventually write an adapter for sentry.io for error tracking, but I haven't gotten around to this. Amber has very informative crash logs, so thus far I've been OK just looking through my Google App Engine logs when I need to track down an error. Cloud function debugging is a particular pain in the ass because of https://github.com/sam0x17/gcf.cr/issues/1, but I have a feeling the new 0.27.0 release resolves this, I just haven't had a moment to check.