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 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.