You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
EXT:SOCKET-START-TLS upgrades a connected TCP socket stream to TLS in place: OpenSSL 1.1.1/3.x on the host (loaded via dlopen, no build dependency), AmiSSL v5 on AmigaOS/MorphOS.
Companions: TLS-AVAILABLE-P, TLS-VERSION, SOCKET-TLS-P, TLS-PEER-CERTIFICATE.
A bundled cl+ssl facade (in lib/shims, auto-registered on ASDF's central registry — no installation step) gives drakma and hunchentoot HTTPS out of the box. CLAMIGA_NO_SHIMS=1 (host)
/ SetEnv CLAMIGA_NO_SHIMS 1 (Amiga) opts out.
The AmiSSL SDK headers are vendored in-repo — a plain checkout cross-compiles with TLS, no setup script.
Verified end-to-end on real hardware: drakma HTTPS via AmiSSL on a Vampire V4 (68k) and natively on MorphOS.
ARexx development port
(require "amiga/arexx") + (amiga.arexx:start) opens a public CLAMIGA ARexx port: drive a running clamiga from any ARexx-capable Amiga editor — LOAD, COMPILE-FILE, EVAL, IN-PACKAGE, LASTRESULT, PING, VERSION. A failing load answers with every diagnostic in the file (with line numbers), and the return-code ladder (0/5/10/20) is FAILAT-friendly. The
on-Amiga counterpart to the SLY setup — no Emacs, no TCP, no host machine.
Lisp can also send ARexx commands to any application's port.
Unicode / wide strings
The MorphOS build now ships full Unicode (CHAR-CODE-LIMIT > 65533) with an adaptive representation — 8-bit strings stay 8-bit, UTF-32 only for strings that actually contain characters above
Unblocks flexi-streams/drakma, which hard-require it.
New WIDE=1 cross-build knob for a wide-string 68k AmigaOS variant (composes with FPU=1). Released 68k binaries stay narrow to keep the 68020/8MB baseline lean.
Condition reports survive non-ASCII text — (error "…ü…") now prints the message instead of failing.
Floats: exact, FPU-independent printing and reading
Float↔text conversion no longer goes through libc's %g/strtod: shortest round-trip digits (Steele-White/Burger-Dybvig) and correctly rounded parsing, in core, with integer arithmetic only.
Every printed float reads back bit-identically — on softfloat, real 68881/68882, and FPGA FPUs (Vampire/Apollo) alike.
New hard-float FPU=1 build variant (68881/68882): per-task/thread FPCR setup, excess-precision-safe FLOOR/CEILING/ROUND/TRUNCATE. Binary releases ship bin/aos3 (soft-float, any
68020+) plus bin/aos3-fpu.
Debugger & backtraces
:bt N / :bt all — full backtraces on demand. The hard 20-frame window and the invisible 2KB formatting buffer are gone; expressions typed at the Debug> prompt evaluate on top of the
error-time frames instead of destroying them.
Backtraces now show real names where they used to show <anonymous>: FLET/LABELS locals and CLOS method bodies carry their names, and a nested lambda no longer steals its enclosing function's
name.
Loader & threading correctness
LOAD/COMPILE-FILE bind *PACKAGE*/*READTABLE* as true dynamic bindings (CLHS 23.2.7/24.2.2) — an error thrown out of a load no longer leaves the caller in a switched package. (This single
fix eliminated 156 cascading failures in one real-hardware suite run.)
LOAD's per-form error recovery now survives an enclosing UNWIND-PROTECT, and a THROW out of a cleanup running an error unwind correctly abandons the original transfer (CLHS 5.2).
*PACKAGE* is per-thread at the C level — one thread binding it (e.g. Sly's control thread) no longer poisons readers/compiles running in other threads.
MP:MAKE-THREAD takes :stack-size, :vm-stack-size, :vm-frames, :nlx-frames (enlarge-only); Amiga worker threads inherit the launching console — or can open their own CON: window and
run a REPL in it.
Amiga API additions
AMIGA.INTUITION:QUERY-OVERSCAN / DISPLAY-MODE-HEIGHT — ask the display database how tall a mode really is (PAL 256 vs NTSC 200 vs RTG), so programs can open correctly sized screens. Also
fixes the underlying register order — the call had never once succeeded.
MSG-RAW-KEY — the qualifier-blind raw keycode behind a VANILLAKEY message, immune to wedged-modifier keymap lies.
Fixes
FORMAT ~F without a d parameter now prints true free-format fixed-point per CLHS 22.3.3.1: the decimal point is always present (87.0, not 87) and large/small magnitudes expand instead of
switching to exponent notation (150000000.0, 0.00001).
COMPILE-FILE no longer writes stray output to stderr — the buffered bytes froze detached MorphOS processes at exit.
Source-compiling boot.lisp/clos.lisp at boot (stale-FASL fallback) now produces the same CLOS as the shipped FASLs — 47 internal helper names were missing from the pre-intern list, silently
dropping dispatch self-heal, accessor ICs, and defstruct MOP registration.
MorphOS build fixes: ARexx SDK type differences; the stray-stderr exit freeze above.
Compatibility notes
FASL version 25 → 29 — stale FASL caches are rejected and rebuild transparently (the cache re-keys to cl-amiga-0.7-fasl29).
The cl+ssl/swank shims moved from contrib/shims (quicklisp symlink scheme) to lib/shims (auto-registered); make install-shims now just removes the old symlinks.