Scala 2.8.0 RC1 released
scala-lang.org
scala-lang.org
If you've struggled with asynchronous I/O in the past, libraries implemented using delimited continuations might seem like a breath of fresh air. They make it possible to write functionally asynchronous code in a traditional blocking style. Further, continuations can be serialized, introspected, and passed around from machine to machine.
Every time I code up a new project, for instance, I swear I encounter a new compiler or library bug. I've had jcl libraries spin in infinite loops, I've had the persistent immutable Set consistently crash during a filter, I've had the compiler both die at compile time and generate bad code that failed at runtime when trying to shield me from the ugly details of jvm arrays, and I've had actor libraries deadlock, forcing me to switch to using java executors. Buildr's Scala support is very immature and buggy. The Eclipse plugin is also unstable and I've at least twice had to rebuild my workspace from scratch. It also degrades heavily in performance over time so that I am frequently restarting Eclipse.
I think that the above problems are partially because the language is new, but partially because Scala as a project is so ambitious. They are trying to cover up all the warts of the JVM and create a powerful OO-functional language hybrid on top of it. They are trying to reify generics, implement C++-style templates for primitives to avoid the high costs of autoboxing, and implement arrays efficiently in a way that they play nicely with generics and the rest of the language, just to name a few things that really the JVM should have taken care of a long time ago. And, of course, Scala as a language is much richer and more complex than Java ever will be.
Again, I hope Scala eventually succeeds in all of its ambitious goals and begins being adopted for mainstream use, and I will continue to follow it and hopefully find time to contribute to it. And, if you don't mind slogging through a few bugs and flaky tools yourself, I highly recommend learning Scala and consider it the best language on the JVM so far.
I converted a bunch of code that was using jcl wrappers in 2.7 and with JavaConversions in scope, standard Java collections just work now as if they're Scala (e.g. map, foreach, etc aclls). That alone is a HUGE step for me as i'm doing interoperability work.