oaklisp1
An implementation of the oaklisp object-oriented scheme dialect
Usage
oaklisp [emulator-options ...
[--
oaklisp-options ...]]
Overview
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 and exit
-
--version -
Print version of emulator and exit
-
--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/x86_64-linux-gnu/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.
References
The programs are documented more fully in the language and implementation manuals lang.pdf and lim.pdf, along with OaklispSummary.pdf, whose source is included with the distribution, and installed in /usr/share/doc/oaklisp/.
The Oaklisp home page is old location ⟨URL: http://barak.pearlmutter.net/oaklisp/ ⟩ to github ⟨URL: https://github.com/barak/oaklisp ⟩.
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.
Releases
8 releases since Debian 3.1 (Sarge); the text changed 3 times.
--compile since Debian 9 (Stretch);
--d since Debian 9 (Stretch);
--dump since Debian 9 (Stretch);
--dump-base since Debian 9 (Stretch);
--eval since Debian 9 (Stretch);
--exit since Debian 9 (Stretch);
--help since Debian 9 (Stretch);
--load since Debian 9 (Stretch);
--locale since Debian 9 (Stretch);
--predump-gc since Debian 9 (Stretch);
--size-cxt-stk since Debian 9 (Stretch);
--size-heap since Debian 9 (Stretch);
--size-seg-max since Debian 9 (Stretch);
--size-val-stk since Debian 9 (Stretch);
--trace-cxtcon since Debian 9 (Stretch);
--trace-files since Debian 9 (Stretch);
--trace-gc since Debian 9 (Stretch);
--trace-instructions since Debian 9 (Stretch);
--trace-mcache since Debian 9 (Stretch);
--trace-methods since Debian 9 (Stretch);
--trace-segs since Debian 9 (Stretch);
--trace-stks since Debian 9 (Stretch);
--trace-traps since Debian 9 (Stretch);
--trace-valcon since Debian 9 (Stretch);
--verbose-gc since Debian 9 (Stretch);
--version since Debian 9 (Stretch);
--world since Debian 9 (Stretch).
-compile until Debian 8 (Jessie);
-d until Debian 8 (Jessie);
-dump until Debian 8 (Jessie);
-dump-base until Debian 8 (Jessie);
-eval until Debian 8 (Jessie);
-exit until Debian 8 (Jessie);
-help until Debian 8 (Jessie);
-load until Debian 8 (Jessie);
-locale until Debian 8 (Jessie);
-predump-gc until Debian 8 (Jessie);
-size-cxt-stk until Debian 8 (Jessie);
-size-heap until Debian 8 (Jessie);
-size-seg-max until Debian 8 (Jessie);
-size-val-stk until Debian 8 (Jessie);
-trace-cxtcon until Debian 8 (Jessie);
-trace-files until Debian 8 (Jessie);
-trace-gc until Debian 8 (Jessie);
-trace-instructions until Debian 8 (Jessie);
-trace-mcache until Debian 8 (Jessie);
-trace-methods until Debian 8 (Jessie);
-trace-segs until Debian 8 (Jessie);
-trace-stks until Debian 8 (Jessie);
-trace-traps until Debian 8 (Jessie);
-trace-valcon until Debian 8 (Jessie);
-verbose-gc until Debian 8 (Jessie);
-world until Debian 8 (Jessie).