asterite | 5 years ago | on: Crystal 1.0 – What to expect
asterite's comments
asterite | 7 years ago | on: Crystal 0.25.1 released
asterite | 7 years ago | on: Crystal 0.25.1 released
My point of view is that while developing you don't need the `--release` flag, so you can get a more or less fluent experience. The few times where you need to release an app it takes longer, but for me that's acceptable.
asterite | 7 years ago | on: Crystal 0.25.1 released
Not that type-safety is a killer feature, but that's just one difference.
asterite | 7 years ago | on: Crystal 0.25.1 released
asterite | 7 years ago | on: Crystal 0.25.1 released
C#: verbose, magical dependency injection, Microsoft, etc.
Ruby: slow
Go: ugly syntax, verbose, if err != nil, etc.
If a language works for you I see no reason not to use it :-)
asterite | 7 years ago | on: Crystal 0.25
asterite | 9 years ago | on: The Crystal Programming Language
asterite | 9 years ago | on: The Crystal Programming Language
asterite | 9 years ago | on: The Crystal Programming Language
asterite | 9 years ago | on: The Crystal Programming Language
asterite | 9 years ago | on: Crystal: Fast as C, Slick as Ruby
The compiler does some incremental compilation for the generated object files, so compile times are kept relatively small. Other than that, I don't think it makes a big difference for a developer except saving compile times. On the other hand, in this way you can't have a compiled library conflict so you have to "clean and rebuild" when this happens.
For example in Ruby there's no such thing as pre-compiling a gem, and every time you run an app the whole app is "analyzed" (parsed and converted to VM instructions), and so you can think in Crystal it's the same (except that it's compiled to native code)
asterite | 9 years ago | on: Crystal: Fast as C, Slick as Ruby
You can't compile a part of your application in crystal, there are no linked crystal libraries. You compile your whole app, will all class definitions. The compiler then will have all the type information to know if a method is missing in a subclass, when that method is used from a parent class.
asterite | 9 years ago | on: Crystal: Fast as C, Slick as Ruby
asterite | 9 years ago | on: Crystal: Fast as C, Slick as Ruby
asterite | 10 years ago | on: The future of the Crystal language
asterite | 10 years ago | on: Crystal-Lang – Beauty of Ruby, Faster Than Go
Yes, Crystal will definitely need a lot of work. On the other hand, maybe this work is also fun :-)
Also there's the thing that Go has big Google behind it, so of course it's much more advanced (plus they also started earlier).
asterite | 10 years ago | on: Crystal-Lang – Beauty of Ruby, Faster Than Go
https://github.com/kostya/benchmarks
As always, take benchmarks with a graint of salt. We use benchmarks mostly to know how far away we are from C (1x, 10x, 100x, etc.), so any language that has a speed "in the order of" C is good enough for us, small differences don't matter much.
asterite | 10 years ago | on: Crystal-Lang – Beauty of Ruby, Faster Than Go
asterite | 10 years ago | on: Crystal-Lang – Beauty of Ruby, Faster Than Go
http://crystal-lang.org/docs/using_the_compiler/index.html
Crystal is faster than Go in some cases (mostly because we use LLVM and it optimizes really well), but right now Go has faster context switches between goroutines (in our case fibers) and in general faster concurrency (for example it distributes the goroutines across multiple threads, we are using one for now). But improving these is definitely on our roadmap and should be doable.
More good news is that we are using Boehm GC and didn't spend a lot of time optimizing on our side (rather than just relying on LLVM), so a custom GC and more optimizations (like maybe escape analysis) could improve performance even more.