rust-autolisp: AutoLISP Interpreter in Rust/WebAssembly
Hinweis: Die interaktive Demo benötigt JavaScript und WebAssembly. Zur interaktiven Version
Was ist rust-autolisp?
rust-autolisp ist ein AutoLISP Interpreter, der in Rust geschrieben und zu WebAssembly kompiliert wurde. Er ermöglicht das Ausführen von AutoLISP Code direkt im Browser - ohne Installation von AutoCAD.
Die Geschichte: Schaltplan Generator 1991
1991 stand ein kleiner Elektrobetrieb in Unterneukirchen, Bayern vor einer Herausforderung: Jede Maschineninstallation erforderte individuelle Schaltpläne - ein zeitaufwändiger manueller Prozess.
Die Lösung: AutoLISP, die in AutoCAD eingebaute Programmiersprache. Mit einem System aus CSV-Dateien, Templates und LISP-Code wurde die Schaltplanerstellung automatisiert.
LISP als frühe KI
LISP (List Processing) wurde 1958 von John McCarthy entwickelt und war jahrzehntelang die Sprache der Künstlichen Intelligenz Forschung. Was macht LISP besonders?
- Homoikonizität: Code und Daten haben die gleiche Struktur (Listen)
- Selbstmodifikation: Programme können sich selbst schreiben und ändern
- Symbolische Verarbeitung: Manipulation von Symbolen statt nur Zahlen
Im Schaltplan-Generator von 1991 schrieb der Code tatsächlich sich selbst: Das Einfügen eines Bauteils konnte weitere Bauteile auslösen, Templates generierten Templates.
Technische Details
- Sprache: Rust
- Zielplattform: WebAssembly (WASM)
- Ausgabeformate: SVG, DXF (AutoCAD R12/AC1009)
- Unterstützte AutoLISP Funktionen: defun, setq, if, while, cond, +, -, *, /, sin, cos, sqrt, car, cdr, list, nth, command, princ, und mehr
Beispiel Code
; Zeichne ein Rechteck
(defun draw-box (x y w h)
(command "LINE" (list x y) (list (+ x w) y) "")
(command "LINE" (list (+ x w) y) (list (+ x w) (+ y h)) "")
(command "LINE" (list (+ x w) (+ y h)) (list x (+ y h)) "")
(command "LINE" (list x (+ y h)) (list x y) ""))
(draw-box 10 10 100 50)