[ANN] Scala 2.7.0-RC1

View: New views
4 Messages — Rating Filter:   Alert me  

[ANN] Scala 2.7.0-RC1

by Stéphane Micheloud :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

We are very pleased to announce version 2.7.0-RC1 of the
Scala distribution:

1) It introduces several language changes:

     http://www.scala-lang.org/docu/changelog.html#v2.7.0

     - Support for Java generic types
     - Support for type annotations
     - Extended case classes
     - etc.

2) It fixes many bugs both in the compiler and the libraries.

     http://scala-lang.org/downloads/changes.html#v2.7.0-RC1

3) It adds new functionalities to the standard library:

     - rewritten package scala.util.parsing.combinator
     - improvements in packages scala.actors and scala.xml
     - additions like classes StringBuilder (100% Scala),
       BigDecimal (wrapper)
     - etc.

4) It also includes changes to the distribution and documentation:

     - splitted installation of tools and documentation (eg. API)
     - corrections and improvements  the reference manual


Other release candidates may follow this version depending
on bugs reported by the Scala community (no changes/additions,
only bug fixes!); the final release (aka. 2.7.0-final) is
planned in 2-3 weeks.


Bye
-- Stephane

Re: [ANN] Scala 2.7.0-RC1

by Alex Boisvert-3 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

On 2/8/08, Stéphane Micheloud <stephane.micheloud@...> wrote:
We are very pleased to announce version 2.7.0-RC1 of the
Scala distribution:

1) It introduces several language changes:

     http://www.scala-lang.org/docu/changelog.html#v2.7.0

     - Support for Java generic types
     - Support for type annotations
     - Extended case classes
     - etc.

Hi Stéphane,

I see no mention of type annotations in the language changelog.   Could you elaborate?

alex


Re: [ANN] Scala 2.7.0-RC1

by bearfeeder :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Scala 2.7.0-RC1 is available on scala-tools.org

On Feb 8, 2008 2:16 AM, Stéphane Micheloud <stephane.micheloud@...> wrote:
We are very pleased to announce version 2.7.0-RC1 of the
Scala distribution:

1) It introduces several language changes:

    http://www.scala-lang.org/docu/changelog.html#v2.7.0

    - Support for Java generic types
    - Support for type annotations
    - Extended case classes
    - etc.

2) It fixes many bugs both in the compiler and the libraries.

    http://scala-lang.org/downloads/changes.html#v2.7.0-RC1

3) It adds new functionalities to the standard library:

    - rewritten package scala.util.parsing.combinator
    - improvements in packages scala.actors and scala.xml
    - additions like classes StringBuilder (100% Scala),
      BigDecimal (wrapper)
    - etc.

4) It also includes changes to the distribution and documentation:

    - splitted installation of tools and documentation (eg. API)
    - corrections and improvements  the reference manual


Other release candidates may follow this version depending
on bugs reported by the Scala community (no changes/additions,
only bug fixes!); the final release (aka. 2.7.0-final) is
planned in 2-3 weeks.


Bye
-- Stephane



--
lift, the secure, simple, powerful web framework http://liftweb.net
Collaborative Task Management http://much4.us

Re: [ANN] Scala 2.7.0-RC1

by Lex Spoon-3 :: Rate this Message:

Reply (Restricted by the Administrator) | Reply to Author | View Threaded | Show Only this Message

Alex Boisvert wrote:
> I see no mention of type annotations in the language changelog.   Could
> you elaborate?

(Followups to gmain.comp.lang.scala)


For several months, I worked on optional support in scalac for
annotations on types.  The support was only turned on if you compiled
with -Xplug-types.  Now, the option is gone and you always get the support.


This is a pretty good foundation, I think, for the pluggable type
systems that Gilad Bracha describes.  The work is supported by the
Hasler Foundation, so hopefully they think it is a pretty good
foundation, too.  :)

There are two interesting parts to it compared to Java annotations.  One
is that you can put arbitrary type-checked expressions in your
annotations, not just constants.  So @dim(Length/Time) is perfectly
valid.  Second, there is sophisticated support for propagating type
annotations through the type inference.  Here is a typical example:

   object Foo {
     val x = 3
     val y: Int @GreaterThan(x) = 10
   }

   val z = Foo.y  // inferred type is Int @GreaterThan(Foo.x)

Notice how the @GreaterThan(x) had to be rewritten as
@GreaterThan(Foo.x).  Let me tell you, that was a long saga to get
implemented!

If you want such rewrites, your annotation must inherit from
ConstrainedTypeAnnotation in addition to the usual StaticAnnotation
class.  Otherwise, the compiler will drop the annotation, and the
inferred type for z would be just "Int" instead of an annotated Int.

Currently these annotations are only visible at compile time, because
they are not reflected in the underlying Java types.  So to process
them, you have to write a tool that links against scalac's code and does
some extra processing.  One way to do this is to write your code as a
compiler plugin.

That's the general idea.  Much much more can be written, and should be
written, but hopefully that gives you the general idea.


Lex