## [ANN] Scala-2

The Scala language fuses object-oriented and functional programming while staying completely interoperable with Java. It is compiled to JVM class files, subclassing is allowed both ways between Java and Scala classes, and no glue code needs to be written by users.

Scala also adds several important and convenient constructs, such as:

- mixin composition with traits,
- first-class functions,
- case classes and pattern matching,
- XML expressions and patterns,
- virtual types,
- for-comprehensions,
...

The second major version of Scala is now publicly available. This version adds some new constructs to the language and simplifies some idioms (http://scala.epfl.ch/docu/scala2.html).

There are also the following new tools:

- a new scalac' compiler, which is completely written in Scala

- a new scalaint' interpreter shell, which is integrated with the compiler and which drops most restrictions of the previous version.

- a new Eclipse plugin. See http://scala.epfl.ch/docu/eclipse/index.html

- a new tool `sbaz' to manage and distribute Scala packages. See http://scala.epfl.ch/downloads/sbaz.html

This implementation runs on the Java VM, JDK 1.4 or 1.5. An automatic installer is available for Windows, MacOS X, Linux, Solaris, and most other operating systems.

http://scala.epfl.ch

## Comment viewing options

### Previously...

The beta release was mentioned awhile back. Thanks for the announcement!

### Good news

I'm excited to see things are moving forward with Scala! I tried it a while back for XML manipulating code but found that the Eclipse plugin just wasn't quite ready to rock. Hopefully it has improved. One major issue that I was told was unresolvable is that it would be really nice to have free mixing of Java and Scala source in Eclipse. But beyond that, even getting decent API completion facilities and integrated type checking would be amazing. It was the only chink in the armor that sent me back to mainstream Java. It's getting close. Keep at it!

### Re: Scala Eclipse plugin

Nathan, I think you should try the new Eclipse plugin. You still can't mix Java and Scala code in the same project. But the other things you mentioned are there: It has syntax-highlighting, API completion, and integrated type-checking. A Scala-specific debugger is in the works but not yet released.

Your Scala project can easily refer to Java projects and use them. Debugger support is a "sort-of" right now -- you can't set breakpoints yet but you can follow the code through by stepping. The Scala compiler emits debugging information that works just fine.

Scala has a extraordinarily flexible syntax but still manages to bring the full benefits of a strong typing system -- the "do what I mean" factor is quite high with Scala.

### The debugger is real close now

We are working on the ability to set breakpoints in Scala files. We have them working for class files right now but not for objects yet (still trying to figure out whats going on). Hopefully we'll have something ready within 2 weeks.

### Polymorphism?

Last I looked, I got the impression that Scala didn't have really polymorphic functions, just template-like things. Was I right then? Is it (still) true?

### IIUC, it's always had real

IIUC, it's always had real polymorphic functions. From the examples, it looks like the encoding Scala uses is different than the way Haskell or core ML do it, but it is similar to the way that ML functors allow passing types as arguments. (I would need to read the v-Obj paper to be confident about this assertion, though.)