In 1.0.23 (linux x86) and 1.0.19 but not in 1.0.12 nor in 1.0.15, repeatedly triggering some errors generates a substantial amount of persistent simple-character-string garbage . In the newer versions, a bunch of error output is sent to the console.

1. Is the behavior in the newer SBCL versions (accumulating a bunch of persistent string garbage) 'desirable'?

2. If string garbage accumulation in these circumstances is 'desirable', is there a 'right way' to deal with things so garbage doesn't accumulate?

Thanks,

Alan


sbcl 1.0.12
------------
Dynamic space usage is:   24,113,152 bytes.
- breakdown doesn't include simple-char-string objects

* (dotimes (x 10000)
              (handler-case (eval '(setq (list 1 2) 1))
                (error () :ERROR)))

(sb-ext:gc :full t) (room)

Dynamic space usage is:   24,211,600 bytes.
- breakdown doesn't include simple-char-string objects



sbcl 1.0.15
------------
looks like 1.0.12



sbcl 1.0.19
------------
Dynamic space usage is:   23,912,440 bytes.

* (dotimes (x 10000)
              (handler-case (eval '(setq (list 1 2) 1))
                (error () :ERROR)))

...
; caught ERROR:
;   Variable name is not a symbol: (LIST 1 2).
;
; compilation unit finished
;   caught 1 ERROR condition
; in: LAMBDA NIL
;     (SETQ (LIST 1 2) 1)
...

(sb-ext:gc :full t) (room)

Dynamic space usage is:   33,543,152 bytes.
...
3,337,024 bytes for    25,416 simple-character-string objects.



sbcl 1.0.23
------------
looks like 1.0.19