This is the mail archive of the
mailing list for the Kawa project.
- To: firstname.lastname@example.org
- Subject: recent check-ins
- From: Per Bothner <email@example.com>
- Date: 08 Sep 1999 23:54:22 -0700
I've checked into the cvs repository some important improvements to
Kawa. They are summarized below (actually going back a while).
The new functions invoke-static and class-methods allow you
to call an arbitary Java method. They both take a class
specification and a method name. The result of class-methods
is a generic procedure consisting of those methods whose names
match. (Instance methods are also matched; they are treated
the asme as class methods with an extra initial argument.)
The invoke-static function also takes extra arguments, and
actually calls the "best"-matching method. An example:
(invoke-static <java.lang.Thread> 'sleep 100)
Many fewer classes are now generated when compiling a Scheme file.
It used to be that each top-level procedure got cmpiled to its
own class; that is no longer the case. The change should
lead to faster startup and less resource use, but procedure
application will probably be noticably slower (though not so much
slower as when reflection is used). The reason for the slowdown
is that we in the general case now do an extra method call, plus
a not-yetoptimized switch statement. This change is part of the
new Kawa module system. That will allow the compiler to
substitute direct methods calls in more cases, which I hope will
more than make up for the slowdown.
Many changes to the "Emacs-emulation" library in gnu.jemacs.buffer:
* Implemented commands to read and save files.
* We ask for file and buffer names using a dialog pop-up window.
* Split windows correctly, so that the windows that are not split
keep their sizes, the windows being split gets split as specified,
and the frame does not change size. Now also handles horizonal splits.
* Fairly good support for buffer-local keymaps and Emacs-style keymap
search order. A new class BufferKeymap manages the active keymaps of
a buffer. Multi-key key-sequences are handled. Pending prefix keys
are remembered on a per-buffer basis (whereas Emacs does it globally).
There is now some low-level support for generic procedures.
The R5RS primitives let-syntax and letrec-syntax for defining local
syntax extensions (macros) should now work. Also define-syntax works
as an internal definition. All of these should now be properly
"hygienic". (There is one known exception: symbols listed among the
literals lists are matched as raw symbols, rather that checking that
the symbol has the same binding, if any, as at the defining site.)
The plan is to support general functions as hygienic rewriters, as in
the Chez Scheme "syntax-case" system; as one part of that plan, the
syntax-case primitive is available, but so far without any of the
supporting machinary to support hygiene.
The read-line procedure was added. This allows you to efficiently
read a line from an input port. The interface is the same as scsh
define-alias now works both top-level and inside a function.
Optimized eqv? so if one of the arguments is constant and
not Char or Numeric, inline it the same way eq? is.
(This helps case when the labels are symbols,
which help the "lattice" benchmark.) ???
The Emacs-related packages are now grouped under a new gnu.jemacs package.
Improved framework for catching errors. This means improved error
messages when passing a parameter of the wrong type. Many standard
procedures have been improved.
Simplified, documented, and tested (!) procedure for building Kawa
from source under Windows (95/98/NT).
New macros trace and untrace for tracing procedures.
After executing (trace PROCEDURE), debugging output will
be written (to the standard error port) every time PROCEDURE
is called, with the parameters and return value. Use
(untrace PROCEDURE) to turn tracing off.
New utility functions (system-tmpdir) and (make-temporary-file [format]).
A new (unfinished) framework supports multiple languages. The
command-line option --elisp selects Emacs Lisp, while --scheme
(the default) selects Scheme. (The only difference so far is the
reader syntax; that will change.)
The `format' function now provides fairly complete functionality
for CommonLisp-style formatting. (See the Comon Lisp hyperspec at
The floating point formatters (~F, ~E, ~G, ~$) now pass the formatst.scm
test (from Slib, but with some "fixes"; in the testsuite directory). Also,
output ports now track column numbers, so ~T and ~& also work correctly
firstname.lastname@example.org email@example.com http://www.bothner.com/~per/