Here is a short list of improvements that were added in CLAIRE 3.3
(a) global variables that are "local" to a module are implemented in
a more efficient manner. together with other improvements in the
compiler, the overall speed-up is 10% :-) on different OR benchmarks
that I used.
(b) sort(m,l) may be macro-expansed by the compiler, like a (smart)
macro.
(c) a few bugs with the inspect module (e.g., block(n)) were fixed
(d) The compiler produces optimization notes when the -O mode is
turned on, which may be seen by setting the verbosity to 3.
you may try: -O -v 1:
-v 1 => all notes are printed
-O => create notes for poor optimization
(e) new features:
- if <test> requires a boolean test, a warning is issed by the
compiler otherwise
- the compiler issues a warning if a = b is used instead of a := b
- the default range is now void for a method.
WARNING: this may sound like a small change BUT IT IS NOT !!!
(g) the compiler checks the type of while expression more precisely
using return types.
ex:
// a new compilation bug from Naren ... no longer allowed !
[h() : void -> nil]
[k() : list
-> let x := 0
in (while (x >= 0) h()) ]
(h) The compiler detects a few new type errors, including :
[foo(l:list[integer]) : void -> l :add 3.14]
(j) the rules have been tested more throuroughly than before :-)
(k) some of the portability constraints have been taken into account
(l) The examples from the documentation have been made part of the
automated tests :-)
All in all, quite an improvement, but not a revolution :-)
Cheers,
-- Mr ClaireBugs