This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project. See the Kawa home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

new Kawa snapshot



Kawa 1.6.55 is now available from
ftp://ftp.cygnus.com/pub/bothner/kawa-1.6.55.tar.gz.

There are a few new features, but the major changes this time are internal,
and improving performance.  I think Kawa should be a lot faster in
many applications.  However, note that Kawa now calls many standard
functions directly, so you cannot redefine them.  I will add some
flag to control inlining later, but there is none yet.

Note also that the new optimizations are tricky, and there could well
remain bugs, so please test it well ...

My plan is to shoot for a more widely-publicised 1.7 release
around the time-time of the November Lisp User's conference (where
I will be presenting a paper on Kawa).  We'll see what I get done
by then!

News:

New --debug-dump-zip option writes out a .zip file for compilation.
(Useful for debugging Kawa.)

You can now declare parameter types.

Lot of work on more efficient procedure representation and calling
convention:  Inlining, directly callable statics method, plus some
procedures no longer generate a separate Class.

Local functions that are only called from one locations, except for
tail-recursion, are now inlined.  This inlines do loops, and most
"named let" loops.

New representation of closures (closures with captured local variables).
We no longer use an array for the closure.  Instead we store the captured
variables in the Procedure itself.  This should be faster (since
we can use field accesses rather than array indexing, which requires
bounds checking), and avoids a separate environment object.

If the compiler sees a function call whose (non-lexically-bound) name
matches an existing (globally-defined) procedure, and that procedure
instance has a static method named either "apply" or the mangled
procedure name, them the compiler emits a direct call to that method.
This can make a very noticable speed difference, though it may
violate strict Scheme sementics, and some code may break.

Partial support for first-class "location" variables.

	--Per Bothner
Cygnus Solutions     bothner@cygnus.com     http://www.cygnus.com/~bothner