[clean-list] Re: Next Release

rinus plasmeijer rinus@cs.kun.nl
Mon, 10 Sep 2001 17:40:52 +0100


> ----------------------------------------------------------------------------
> Dear Clean Team,
>
> Where can I get information on the upcoming release of the clean Compiler?
> If I start with the latest version 1.3.3, would I have a problem migrating
> to the upcoming release?

Clean 2.0 is NOT upwards compatible with Clean 1.3.

The main problems are the following:

1. The import statements are different. In Clean there are different name
spaces. For instance, a type may have same name as a function. Suppose that you
export a type named T as well as a function named T.
When you use an explicite import (from modulename import T) in Clean 1.3, you
cannot make a distinction whether you want to import the type T or the function
T.
In Clean 2.0 you can. So we had to change the import statement in Clean 2.0 to
be able to express the differences.
If you want to be upwards compatible, better use implicte imports (import
modulename).

2. Arrays types in Clean 1.3 are rather hacked into the system due to the lack
of multiparameter type classes.
Clean 2.0 has multi parameter type classes so we could do a more decent job.
The consequence is that the type of overloaded use of an array is changed ( ...
| Array a & ArrayElem e becomes in Clean 2.0:  ... | Array a e).
All the strange 1.3 array utility classes have vanished (_uselectf,
_createArray_u etcetera).

3. There is a severe bug in Clean 1.3.x : data types can have existentially
quantified variables, whose uniqueness attribute do NOT propagate while they
should.
Clean 2.0 does not have this bug. Although there was no harm done (side effects
are theoretically possible due to this bug), we had to rewrite some parts of the
object IO library because it was correctly not approved by the Clean 2.0
compiler.
With the distribution of the Clean 2.0 compiler, also the changed IO library
will be distributed.

4. There are some tiny changes which will be documented in the Clean 2.0 manual,
but nothing which should prevent you from writing 1.3 programs.


> Will it contain information on (foreign function interface) FFI,

There are no new facilities. You can use the HtoClean library, also available
for Clean 1.3.
see
http://www.cs.kun.nl/~clean/Download/Download_Libraries/download_libraries.html.



> and ability
> to call DLLs?

You can. This is also possible in Clean 1.3.

> I would like to use some of the advance features of the
> upcoming release, but I feel reluctant to use version 1.3.3 due to possible
> migration problems if any. Any advice?

Upgrading will involve some work, but in general it will be not too much work.

Greetings,

Rinus