Permalink

Nice 0.9.10 Released

09 MAR 2005

A few days late, but...


This long awaited release adds many improvements to the possible interactions

with Java libraries and tools. It improves some error messages, and fixes a

large number of bugs.


Thanks to the hard work of Luc Perrin and Arjan Boeijink, an important part of

the Nice compiler has been converted from Java to Nice itself!


Changes:

  * Better error messages for wrong constructor calls and method

    implementations with wrong parameter names.

  * Default value of fields can be overriden in subclasses. For instance:

      class A {

        int x = 1;

      }

      class B extends A {

        override x = 5;

      }

    This also works for final fields.

  * Imported methods can be generalized. That is, it is possible to

    define a new method which is more general than an existing one,

    and the existing method will be recognized as a special case of the

    general one. For instance, consider:



      abstract interface Addable { void add(T item); }

      interface java.util.Collection implements Addable;



    Method java.util.Collection.add() is recognized as implementing

    the new add method, which makes Collection a valid Addable class.

  * Java methods and fields with parametric types are given a type with

    UnknownTypes as type parameters instead of being ignored.

  * Number of errors and warning are printed to the console.

  * Improved source information for debuggers.

  * Generated classes are smaller, thanks to smaller debugging information.

  * Niceunit now reports test failures with the source file and line number

    information for the failed assertion.

  * Native compilation with gcj is twice faster.

  * Bug fixes (disallowed redefinition of parameters, execution order of

    initializers in super classes, visibility checking of java classes,

    cyclic custom constructors, methods and fields in classes with less type

    parameters, 'this' in custom constructors, comparison of possibly null

    values with primitive values, ... )