NAME¶
oaklisp - An implementation of the Oaklisp language
SYNOPSIS¶
oaklisp [ emulator-options ... [ -- oaklisp-options ... ]]
DESCRIPTION¶
Oaklisp is an object-oriented dialect of Scheme. This implementation is
quite portable, compiling to a virtual machine which is emulated by a C
program. Nevertheless, reasonable speed is achieved through a variety of
sophisticated techniques.
OPTIONS¶
Options are all long, and it makes no difference if you start them with one or
two dashes (`-'). All options can be abbreviated to a unique prefix. There are
two sorts of options: for the bytecode emulator, and for the Oaklisp world.
You must use a -- to separate them.
EMULATOR OPTIONS¶
- -help
- Show summary of emulator options
- -world file
- file is world to load
- -dump file
- dump world to file upon exit
- -d file
- synonym for --dump
- -dump-base b
- 0=ascii, 2=binary; default=2
- -predump-gc b
- 0=no, 1=yes; default=1
- -size-heap n
- n is in kilo-refs, default 128
- -size-val-stk n
- value stack buffer, n is in refs
- -size-cxt-stk n
- context stack buffer, n is in refs
- -size-seg-max n
- maximum flushed segment len, n is in refs
- -trace-gc v
- 0=quiet, 3=very detailed; default=0
- -verbose-gc v
- synonym for --trace-gc
- -trace-traps
- -trace-files
- trace filesystem operations
UNOPTIMIZED EMULATOR OPTIONS¶
- -trace-segs
- trace stack segment writes/reads
- -trace-valcon
- print entire value stack at each instr
- -trace-cxtcon
- print entire context stack at each instr
- -trace-stks
- print the size of the stacks at each instr
- -trace-instructions
- trace each bytecode executed
- -trace-methods
- trace each method lookup
- -trace-mcache
- trace method cache
OAKLISP OPTIONS¶
- -help
- Show summary of Oaklisp options
- -eval expr
- Evaluate Oaklisp expression, which is one arg so be sure to quote for
shell.
- -load file
- Load a file.
- -compile file
- Compile file.oak yielding file.oa
- -locale x
- Switch to locale x, eg system-locale (default), compiler-locale,
scheme-locale (for RnRS compatibility).
- -exit
- Exit upon processing this option.
EXAMPLES¶
This will compile the file myfile.oak in the scheme locale and then leave the
user in a read-eval-print loop in the scheme locale.
oaklisp -- -locale scheme-locale -compile myfile
ENVIRONMENT¶
The environment variable OAKWORLD will override the default compiled into the
executable, but itself can be overridden on the command line.
FILES¶
/usr/lib/oaklisp/oakworld.bin holds the world image. It is portable between
machines of the same endianity. The location can vary depending upon
installation-time decisions.
BUGS¶
Floating point numbers are not implemented. Rationals can be used to make up for
this lack because rationals can be told to print in floating point format and
floating point format input can be made to read as rational numbers. (There
are a couple floating point implementations, but they are not merged into the
distributed release.)
In contrast to the error handling system, which is Industrial Strength, the
debugger is virtually nonexistent.
There is no foreign function interface for loading and calling C routines from a
running Oaklisp. (Again, there are a couple implementations of foreign
function interfaces which are not merged in.)
The memory format does not support uninterpreted "blobs".
Porting the system to 64-bit machines has not been done, and would be quite
difficult.
POSIX threads in the emulator never got quite finished.
Bug reports and enhancements should be sent to barak@cs.may.ie.
REFERENCES¶
The programs are documented more fully in the language and implementation
manuals included with the distribution. In binary packages these are probably
in /usr/share/doc/oaklisp/lang.pdf and lim.pdf.
The Oaklisp home page is transitioning from
http://www.bcl.hamilton.ie/~barak/oaklisp/ to
http://oaklisp.alioth.debian.org/.
The Implementation of Oaklisp is a chapter in
Topics in Advanced
Language Implementation edited by Peter Lee, pp 189-215, MIT Press, 1991.
Oaklisp: an Object-Oriented Dialect of Scheme appears in the journal
Lisp and Symbolic Computation 1(1):39-51, published by Klewer
Associates, May 1988.
Oaklisp: an Object-Oriented Scheme with First Class Types appeared in
proceedings of the ACM conference OOPSLA-86, pp30-37, published as a special
issue of
SIGPLAN Notices.
Garbage collection with pointers to single cells, an article on the
Oaklisp garbage collector, appeared in
Communications of the ACM,
39(12):202-206 (online edition), December 1996.
The Revised^n Report on Scheme is a useful piece of documentation, and is
widely available online.
DISTRIBUTION¶
The
Oaklisp copyright belongs to its authors. It is distributed under the
GNU General Public License, a copy of which is included in the source
distribution in the file
COPYING. For further information or to make
alternate arrangements please contact the authors, who are surprisingly
reasonable people.
AUTHOR¶
Oaklisp was originally designed, implemented, and documented by Barak A.
Pearlmutter and Kevin J. Lang.