oaklisp - An implementation of the Oaklisp object-oriented Scheme dialect
Contents
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 can be filed on the github issue tracker ⟨https://github.com/barak/oaklisp⟩.
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.
Distribution
The Oaklisp copyright belongs to its authors. It is distributed under the GNUGeneralPublicLicense, 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.
Environment
The environment variable OAKWORLD will override the default compiled into the executable, but itself can
be overridden on the command line.
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----localescheme-locale--compilemyfileFiles
/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.
Name
oaklisp - An implementation of the Oaklisp object-oriented Scheme dialect
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.
EMULATOROPTIONS--help Show summary of emulator options and exit
--version
Print version of emulator and exit
--worldfile
file is world to load
--dumpfile
dump world to file upon exit
--dfile
synonym for --dump
--dump-baseb
0=ascii, 2=binary; default=2
--predump-gcb
0=no, 1=yes; default=1
--size-heapn
n is in kilo-refs, default 128
--size-val-stkn
value stack buffer, n is in refs
--size-cxt-stkn
context stack buffer, n is in refs
--size-seg-maxn
maximum flushed segment len, n is in refs
--trace-gcv
0=quiet, 3=very detailed; default=0
--verbose-gcv
synonym for --trace-gc
--trace-traps--trace-files
trace filesystem operations
UNOPTIMIZEDEMULATOROPTIONS--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
OAKLISPOPTIONS--help Show summary of Oaklisp options
--evalexpr
Evaluate Oaklisp expression, which is one arg so be sure to quote for shell.
--loadfile
Load a file.
--compilefile
Compile file.oak yielding file.oa
--localex
Switch to locale x, eg system-locale (default), compiler-locale, scheme-locale (for RnRS
compatibility).
--exit Exit upon processing this option.
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 ⟨http://barak.pearlmutter.net/oaklisp/⟩ to github ⟨https://
github.com/barak/oaklisp⟩.
TheImplementationofOaklisp is a chapter in TopicsinAdvancedLanguageImplementation edited by Peter
Lee, pp 189-215, MIT Press, 1991.
Oaklisp:anObject-OrientedDialectofScheme appears in the journal LispandSymbolicComputation1(1):39-51, published by Klewer Associates, May 1988.
Oaklisp:anObject-OrientedSchemewithFirstClassTypes appeared in proceedings of the ACM conference
OOPSLA-86, pp30-37, published as a special issue of SIGPLANNotices.Garbagecollectionwithpointerstosinglecells, an article on the Oaklisp garbage collector, appeared
in CommunicationsoftheACM,39(12):202-206 (online edition), December 1996.
TheRevised^nReportonScheme is a useful piece of documentation, and is widely available online.
Synopsis
oaklisp [ emulator-options ... [ -- oaklisp-options ... ]]
