Thursday, April 5, 2012

2012 Easter Release

I am happy to announce availability of Frege release 3.19.112 which is now ready for download. This has been made possible with the help of our contributors; two of them joined us since the last release. Many thanks to all of you, guys!

Here is a brief overview of what has changed.

Some changes have been made to reduce the generated code in size and number of classes, while at the same time making the compiler a bit faster. The decrease in size is noticeable, for example, the new frege3.19.112.jar is now 7MB, this is 3MB smaller than its predecessor, despite code has been added in the libraries and elsewhere.
The compiler now on request in-lines functions that have been marked as inline candidates, see the Language Reference, Chapter 4 for details. This feature is still considered experimental, in no case should in-lining change anything but memory requirements and running time of the resulting program. Should you observe such misbehavior, I'd love to hear about it.
Note that in-lining is restricted to functions that are "easy" enough. The compiler will give you a warning if you mark a function as inline candidate that it feels is not appropriate. In addition, the effect of "too much" in-lining could well be slower running times, because the JIT may have a harder time to compile larger byte code methods. There is just not enough experience here.

The syntax of the if statement has changed so as to allow the following:

        if condition
        then action1
        else if other condition then other action
        else error "you blew it"

Technically, (one) semicolon is allowed, but not required, before else and then.

Thanks to the many contributions, I cannot enumerate everything that has been changed and added. I can only hope that everything is well documented. Complaints, questions and proposals are best addressed in our discussion group.

The eclipse plugin had enhancements in the outline view and new features: editor actions, mouse-over information and mouse-over navigation. Please consult the tutorial for details.

Future Developments
We are working on an interpreter/REPL.
The library will evolve continuously. For one part, experience shows that porting Haskell source code is straightforward unless unsupported GHC extensions are needed. But also the interface to common Java APIs is on the agenda.
The compiler and type system will evolve further. Enhancements in the field of type classes are envisioned.
And the eclipse plugin will surely see more funky features.