Bugs
Outstanding
8th August 2017 (Aeneas) - uLisp 1.9
(eq NIL nil)
gives Error: 'nil' undefined
6th August 2017 (Aeneas) - uLisp 1.9
(read-from-string "")
hangs the interpreter.
Fixed in uLisp 2.0
14th November 2017 (Harry) - uLisp 1.9a SAM/SAMD
with-serial doesn't work with Serial1 to Serial3.
Fixed in uLisp 1.9b
2nd September 2017 - uLisp 1.9
When using with-serial, baud rates above 19200 can't be selected.
6th August 2017 (Aeneas) - uLisp 1.9
(defun fillroom () (cond ((> 100 (room)) nil) (t (cons nil (fillroom)))))
Evaluating (fillroom) gives a Stack overflow error, and then nothing further works.
16th May 2017 (Kaef) - uLisp 1.9
After an error the tracing depth can be incorrect:
(defun fac (n) (if (< n 1) 1 (* n (fac (- n 1))))) (trace fac) (fac 10) (fac 5)
Fixed in uLisp 1.9a
6th August 2017 (Aeneas) - uLisp 1.9
(cons 'A .)
hangs the interpreter.
6th August 2017 (Aeneas) - uLisp 1.9
(mapcar 'car nil)
hangs the interpreter.
Fixed in uLisp 1.9
13th May 2017 - uLisp 1.8 MSP430
Autorunning saved images doesn't work reliably.
13th May 2017 - uLisp 1.8 MSP430
(defun dis (x) (if x (print x)) x)
Crashes with (dis nil).
Diagnosis: Optional third parameter causes problems. Workaround: Use when in this situation.
10th May 2017 - uLisp 1.8
(defun commas (n string) (dotimes (x (length string)) (when (eq (char string x) #\,) (decf n) (when (zerop n) (return (subseq string (1+ x)))))))
Should return from the nth comma to the end of the string:
> (commas 2 "cat,dog,mouse")
gives nil, should give "mouse".
Diagnosis: return doesn't work in a dotimes loop. Workaround: use a loop loop.
10th May 2017 - uLisp 1.8
Evaluating a dotted pair gives an error/crash.
5th May 2017 - uLisp 1.8
Reading in a long list causes a stack overflow; for example:
(defvar cod '(#x0 #x6 #x220 #x12CE #x12ED #xC24 #x235D #x400 #x2400 #x900 #x3FC0 #x12C0
#x800 #xC0 #x0 #xC00 #xC3F #x6 #xDB #x8F #xE6 #x2069 #xFD #x7 #xFF #xEF #x1200 #xA00
#x2400 #xC8 #x900 #x1083 #x2BB #xF7 #x128F #x39 #x120F #xF9 #x71 #xBD #xF6 #x1200 #x1E))
Workaround: Read shorter lists and append them.
18th April 2017 (Kaef) - uLisp 1.8
Evaluating:
(defun tst () (let ((a '()) (b (gc))) (print a))) (tst)
Gives the error: 'a' undefined.
Diagnosis: let not gc safe.
Fixed in uLisp 1.8
Fixed in uLisp 1.7
27th March 2017 - uLisp 1.6
Defining:
(defun pa (n) (princ n) (when (> n 0) (pb (- n 1)))) (defun pb (n) (princ n) (when (> n 0) (pa (- n 1))))
and then evaluating (pa 4) gives 43322110. It should be 43210.