This is a maintenance release: several bugs have been fixed, and
other improvements introduced. The new release is intended to be
fully binary compatible with the existing version 2.9.0.1.
Please help us testing this new release candidate, and let us know
of any issues you may detect, or of any binary incompatibility
issue that you may encounter. A description of the improvements in
Scala 2.9.1 is available below.
The Scala 2.9.1 distribution
==============================
This Release Candidate is made available for testing purposes only
and is not intended for production environments. We will wait at
least two weeks before issuing a final release, in order to
allow developers and testers to send us their feedback.
What is new?
============
The 2.9.1 release of Scala includes many bug fixes and
improvements, in particular to the interpreter: most of the
interpreter changes available in the development mainline have been
ported to the 2.9.x release branch.
In addition, the following changes (bug fixes and improvements)
have also been ported:
24909, 24919, 24941, 24961, 24963, 24965, 24981, 24984, 24986,
24987, 24992, 24993, 24999, 25000, 25001, 25002, 25003, 25004,
25005, 25006, 25007, 25008, 25009, 25010, 25015, 25028, 25029,
25030, 25031, 25033, 25038, 25039, 25040, 25041, 25044, 25045,
25046, 25048, 25050, 25051, 25052, 25053, 25054, 25055, 25057,
25058, 25059, 25061, 25062, 25063, 25065, 25066, 25069, 25070,
25071, 25072, 25074, 25075, 25076, 25080, 25081, 25082, 25083,
25085, 25087, 25088, 25090, 25091, 25092, 25093, 25094, 25095,
25096, 25097, 25099, 25100, 25101, 25110, 25111, 25112, 25113,
25114, 25117, 25119, 25122, 25124, 25125, 25126, 25127, 25128,
25130, 25132, 25133, 25134, 25135, 25136, 25137, 25138, 25138,
25139, 25140, 25141, 25142, 25144, 25145, 25146, 25148, 25149,
25152, 25153, 25158, 25160, 25161, 25162, 25164, 25167, 25169,
25170, 25171, 25172, 25202, 25204, 25207, 25208, 25209, 25252.
(see https://codereview.scala-lang.org/fisheye/changelog/scala-svn?cs=XXXXX)
Among the bug fixed in this release are:
https://issues.scala-lang.org/browse/SI-4237
https://issues.scala-lang.org/browse/SI-4547
https://issues.scala-lang.org/browse/SI-4556
https://issues.scala-lang.org/browse/SI-4593
https://issues.scala-lang.org/browse/SI-4614
https://issues.scala-lang.org/browse/SI-4659
https://issues.scala-lang.org/browse/SI-4660
https://issues.scala-lang.org/browse/SI-4678
https://issues.scala-lang.org/browse/SI-4692
https://issues.scala-lang.org/browse/SI-4712
https://issues.scala-lang.org/browse/SI-4748
https://issues.scala-lang.org/browse/SI-4759
A few more for consideration:
https://issues.scala-lang.org/browse/SI-4752
Hash code for None changes across JVM invocations
Fixed (r25215)
https://issues.scala-lang.org/browse/SI-4782
scalac ignores empty classpath argument
Open, Regression
-jason
sbt 0.7.7 isn't working with 2.9.1.RC1 probably because 25068 is missing.
--
Johannes
-----------------------------------------------
Johannes Rudolph
http://virtual-void.net
Here's the error message:
[info] == console ==
[info] 'compiler-interface' not yet compiled for Scala 2.9.1.RC1. Compiling...
/tmp/sbt_17e60b52/LoggerReporter.scala:27: error: not found: value
countElementsAsString
log.warn(Message(countElementsAsString(WARNING.count, "warning") + " found"))
^
/tmp/sbt_17e60b52/LoggerReporter.scala:29: error: not found: value
countElementsAsString
log.error(Message(countElementsAsString(ERROR.count, "error") + " found"))
^
two errors found
Ah. Been pretty focused on the binary compatibility of the library jar;
we make no such guarantees for compiler. Obviously that's not good
enough -- at the last, "compiler-interface" needs to retain binary
compatibility. This provides further motivation to establish better
boundaries in the compiler jar. I think this will take a bit of time.
(Fixing the error shown above is easy, but the question of what needs to
retain compatibility and the verification that it is indeed compatible
is more uncertain.)
There are lots of implicit objects/conversions within sbt which handle
compatibility issues within the compiler. I think this is fine for now
and we can do the same for the above error.
hubert
https://issues.scala-lang.org/browse/SI-4757
Nonexisting symbol error with separate compilation
If fixes for these three could be included, I believe sbt would move to 2.9.1 now that the performance issues have been resolved.
-Mark
Have you had a chance to test SBT with 2.9.1 RC1 to verify that
performance is as good or better than 2.8.1?
Best,
Ismael
sbt '++2.9.0-1 test-compile' 284.73s user 4.06s system 293% cpu 1:38.25 total
sbt '++2.9.0-1 test-compile' 283.97s user 4.65s system 285% cpu 1:41.25 total
sbt '++2.9.1.RC1 test-compile' 237.86s user 2.89s system 299% cpu 1:20.27 total
sbt '++2.9.1.RC1 test-compile' 234.71s user 2.70s system 293% cpu 1:21.00 total
So it's 100 seconds for 2.9.0 vs 80 seconds in 2.9.1.RC1.
--
These are all backported to 2.9.x (and the not-yet-fixed one fixed in
trunk.) After I reverify tests/binary-compat we'll roll an RC2.
Great to see such quick turnaround. By the way, I've tested RC1 and
all of our tests passed.
Best,
Ismael
I realize jira makes it comically difficult to tell whether an issue is
open, which itself is a ticket:
https://issues.scala-lang.org/browse/INF-3
But SI-4705 has been reopened since jun 18th. I'm not overlooking it, I
just don't yet know what is the cause.
Yes. It is about the same as 2.8.1, perhaps a bit faster in some cases.
-Mark
Excellent.
Ismael
It seems that since the great getClass fix, the getClass method leaks
into type signatures resulting in things like:
scala> List(1) ++ List('a')
res0: List[AnyVal{def getClass(): java.lang.Class[_>: Int with Char<: AnyVal]}] = List(1, a)
Thanks and bye!
Simon