CL-Amiga 0.11.0 - Common Lisp for AmigaOS 3 and MorphOS
=======================================================
A Common Lisp built for the Amiga: a compact bytecode VM in portable C
with an optional native m68k JIT, CLOS with the MOP, Gray streams,
threads, sockets with TLS (AmiSSL), an FFI with Lisp callbacks, and
bindings for Intuition, Graphics, GadTools, ReAction, MUI, BOOPSI,
audio.device, AHI, iffparse and DOS packets, plus generated 1:1 bindings
for every library of the NDK 3.2 and the MorphOS SDK. ASDF and
Quicklisp are included. Small programs run in 1 MB of RAM, and the
same compiled FASLs run unchanged on 68k and PowerPC.
Getting started
---------------
1. Unpack anywhere - no installer, no assigns:
lha x clamiga.lha Work:
2. Pick your binary:
bin/aos3/clamiga AmigaOS 3.x, any 68020+ (floats in software)
bin/aos3-fpu/clamiga AmigaOS 3.x with an FPU (68881/882, 040/060,
Vampire, PiStorm) - crashes without one
bin/mos/clamiga MorphOS (PowerPC, native)
3. Start it from a Shell with a 128K stack:
stack 131072
cd Work:clamiga-0.11.0
bin/aos3/clamiga
4. At the prompt:
(format t "Hello, Amiga!~%")
(require "amiga/intuition") ; the OS bindings load on demand
(load "examples/amiga/gfx/bouncing-lines.lisp")
(quit)
5. Going further:
bin/aos3/clamiga --heap 16M ; more heap for bigger programs
bin/aos3/clamiga --load examples/amiga/reaction/listbrowser.lisp
examples/ holds ready-to-run programs (ReAction and MUI GUIs,
graphics, audio, IFF, ARexx). The documentation is AmigaGuide with
icons: README-FIRST.guide (the binaries, the heap image, the
libraries, and how Clamacs connects to clamiga's ARexx port),
cl-amiga.guide (the manual), clamacs.guide (the editor), and
docs/README.guide, the package reference (EXT, MP, FFI, GRAY, MOP and
the AMIGA.* bindings).
Changes in 0.11.0
-----------------
CL-Amiga 0.11 - Clamacs rewritten in Common Lisp: the editor/IDE is a clamiga
instance of its own, shipped as a clamacs.img heap image beside every binary
plus lib/clamacs/ FASLs, with the MUI frontend on the Amiga and a native host
frontend (Clamacs.app on macOS, Linux) over the new TCP development port;
EXT.DEV grew DEFINE-RAW-COMMAND, COMPLETE's contains fallback, ASDF load/test
of a system by its .asd, MP:*THREAD-DEATH-HOOKS* and a respawned REPL;
standalone executables - (ext:save-image f :executable t :toplevel ... :quit
t) writes one file that is the program, from a Shell or a Workbench icon, and
a SAVE-IMAGE refusal names the worker threads in the way; JIT - an AArch64
backend for arm64 hosts, and on m68k direct native-to-native calls through
call-site cells, &key/&optional/&rest prologues, arity up to 255, tail calls,
native frames with line numbers, lazy compilation when a function turns hot
(FASL v39), GC/interrupt polls in native loops; heap images reopen Amiga
library bases after a restore, store source-file names once (image v5) and
hand memory back on a failed start; GC compaction forwards through a
live-granule bitmap (the low-end 68020 stall), fresh keywords and the
reader's line table survive moves; MP shutdown reaps and stops workers with
clock-bounded waits; a startup CPU store self-test and the probes that pinned
the Vampire 68080 lost store; compiler fixes (DEFVAR init-once v38, &optional
supplied-p vs &rest, MACROLET in the exit analysis, literal identity through
COMPILE-FILE v36, struct-layout checked FASLs v35); AmigaDOS "/" as the
parent, ~F/~$ justification, CELL-ERRORs for undefined functions and unbound
variables, FOREIGN-TO-STRING to the NUL, :WINDOWS; the binary release packs
all three builds behind six Workbench launcher icons (CLAmiga/Clamacs, -FPU,
-MOS) in a 3 x 3 root grid, with --snapshot [--with-mos] builds; Amiga suite
in FS-UAE: 5274/5274 restored-boot (soft-float and FPU; fresh boot 5283/5284,
the FS-UAE-only audio-short-sample flake), test-extra 18/18 scripts, 13290/0.
License: Apache 2.0. Source code, documentation and issue tracker:
https://github.com/mdbergmann/cl-amiga
|