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.
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