random-state.net

Nikodemus Siivola

<< next | top | previous >>

September 13th 2004 #
random, September 13th 2004

This is proving an exciting month for SBCL: work by Christophe Rhodes and others is progressing on the Unicode branch, Juho Snellman is working on an improved register allocator and loop optimizations, saving cores with foreign code loaded is now supported, Alexey Dejneka has just merged in DYNAMIC-EXTENT improvements, and I just finished work on the new STEP implementation (in 0.8.14.13).

A quick STEP demo:

* (defun foo (a b) 
    (list (+ a b) a b))

FOO
* (defun bar (a b)
    (declare (optimize (debug 3)))
    (+ (* a b) (/ a b)))

BAR
* (step (foo (bar 1 2) (bar 2 3)))
Single stepping. Type ? for help.
; form (FOO (BAR 1 2) (BAR 2 3))
STEP] s
; form (BAR 1 2)
STEP] s
; form (+ (* A B) (/ A B))
STEP] s
; form (* A B)
STEP] s
; A => 1
; B => 2
; (* A B) => 2
; form (/ A B)
STEP] n
; (+ (* A B) (/ A B)) => 5/2
; (BAR 1 2) => 5/2
; form (BAR 2 3)
STEP] n
; form (LIST (+ A B) A B)
STEP] n
; (FOO (BAR 1 2) (BAR 2 3)) => (55/6 5/2 20/3)
(55/6 5/2 20/3)

The interface is a bit rudimentary, however sufficient hooks for building alternative ones exist. Now we just need a Slime-hacker to build an edebug feel-alike on top of this...