diff -ruN clpython/app/CVS/Entries work/lisp/clpython.jdn/app/CVS/Entries
--- clpython/app/CVS/Entries	2008-05-14 15:36:53.000000000 -0400
+++ work/lisp/clpython.jdn/app/CVS/Entries	2008-05-14 15:38:40.000000000 -0400
@@ -1 +1,2 @@
-D
+D/profiler////
+D/repl////
diff -ruN clpython/app/CVS/Entries.Log work/lisp/clpython.jdn/app/CVS/Entries.Log
--- clpython/app/CVS/Entries.Log	2008-05-14 15:36:54.000000000 -0400
+++ work/lisp/clpython.jdn/app/CVS/Entries.Log	1969-12-31 19:00:00.000000000 -0500
@@ -1,2 +0,0 @@
-A D/profiler////
-A D/repl////
diff -ruN clpython/core/classes.lisp work/lisp/clpython.jdn/core/classes.lisp
--- clpython/core/classes.lisp	2008-05-13 16:01:55.000000000 -0400
+++ work/lisp/clpython.jdn/core/classes.lisp	2008-05-14 15:38:40.000000000 -0400
@@ -453,9 +453,10 @@
 
 (defun classp (x)
   #+allegro (excl::classp x)
-  #+lispworks (clos::classp x)
   #+cmu (pcl::classp x)
-  #-(or allegro lispworks cmu) (typep x 'class))
+  #+lispworks (clos::classp x)
+  #+sbcl (sb-pcl::classp x)
+  #-(or allegro cmu lispworks sbcl) (typep x 'class))
   
 (def-py-method py-class-method.__get__ (x inst class)
   (let ((arg (if (classp inst) inst (py-class-of inst))))
@@ -3592,9 +3593,10 @@
 
 (defun py-id (x)
   #+allegro (excl:lispval-to-address x)
-  #+lispworks (system:object-address x)
   #+cmu (kernel:get-lisp-obj-address x)
-  #-(or allegro lispworks cmu) (error "TODO: id() not implemented for this Lisp implementation"))
+  #+lispworks (system:object-address x)
+  #+sbcl (sb-kernel:get-lisp-obj-address x)
+  #-(or allegro cmu lispworks sbcl) (error "TODO: id() not implemented for this Lisp implementation"))
 
 (defgeneric py-cmp (x y)
   (:documentation
@@ -3865,8 +3867,10 @@
 
 (defvar *circle-detection-mechanism*
     #+allegro :hash-table
+    #+cmu :level
     #+lispworks :level
-    #-(or allegro lispworks) :level)
+    #+sbcl :level
+    #-(or allegro cmu lispworks sbcl) :level)
 
 (defvar *circle-print-abbrev* "...")
 
@@ -4108,6 +4112,15 @@
 ;; At this point, we have redefined the functions PY-== and PY-HASH.
 ;; Therefore we need to rehash all dicts.
 
+#+(or cmu sbcl)
+(defun sweep-all-objects (fun)
+  (dolist (space '(:static :dynamic :read-only))
+    (sb-vm::map-allocated-objects
+     (lambda (obj type size)
+       (declare (ignore type size))
+       (funcall fun obj))
+     space)))
+
 (defun rehash-py-dicts ()
   (flet ((get-py-hts ()
            #+allegro
@@ -4116,15 +4129,22 @@
                when (and (hash-table-p d)
                          (eq (hash-table-test d) 'py-==->lisp-val))
                collect d)
-           #+lispworks
+	   #+(or cmu lispworks sbcl)
            (let (res)
+	     #+(or cmu sbcl)
+	     (sweep-all-objects
+	      (lambda (x)
+		(when (and (hash-table-p x)
+			   (eq (hash-table-test x) 'py-==->lisp-val))
+		  (push x res))))
+	     #+lispworks
              (hcl:sweep-all-objects 
               (lambda (x)
                 (when (and (hash-table-p x)
                            (eq (hash-table-test x) 'py-==->lisp-val))
                   (push x res))))
              res)
-           #-(or allegro lispworks)
+           #-(or allegro cmu lispworks sbcl)
            (error "Required rehashing of dicts not possible in this implementation."))
                                   
          (fix-ht (ht)
diff -ruN clpython/core/csetup.lisp work/lisp/clpython.jdn/core/csetup.lisp
--- clpython/core/csetup.lisp	2008-04-22 18:31:57.000000000 -0400
+++ work/lisp/clpython.jdn/core/csetup.lisp	2008-05-14 15:38:40.000000000 -0400
@@ -14,9 +14,10 @@
 (eval-when (:compile-toplevel :load-toplevel :execute)
 (defparameter *exceptions-are-python-objects*
     #+allegro t
+    #+cmu nil
     #+lispworks t
-    #+cmu nil    ;; CMUCL does not allow arbitrary meta/superclasses in conditions
-    #-(or allegro lispworks cmu) nil)
+    #+sbcl nil
+    #-(or allegro cmu lispworks sbcl) nil)
 
 (if *exceptions-are-python-objects*
     (pushnew :clpython-exceptions-are-python-objects *features*)
diff -ruN clpython/core/import.lisp work/lisp/clpython.jdn/core/import.lisp
--- clpython/core/import.lisp	2008-05-13 16:01:55.000000000 -0400
+++ work/lisp/clpython.jdn/core/import.lisp	2008-05-14 15:38:40.000000000 -0400
@@ -308,7 +308,11 @@
 (defun path-kind (path)
   "The file kind, which is either :FILE, :DIRECTORY or NIL"
   (assert (stringp path))
-  (cond ((not (probe-file path))                       nil)
-        #+allegro   ((excl:file-directory-p path)      :directory)
-        #+lispworks ((lispworks:file-directory-p path) :directory)
-        (t                                             :file)))
+  (cond ((not (probe-file path))                                  nil)
+        #+allegro   ((excl:file-directory-p path)                 :directory)
+        #+lispworks ((lispworks:file-directory-p path)            :directory)
+	#+(or cmu sbcl) ((let ((pathname (probe-file path)))
+			   (and pathname
+				(null (pathname-name pathname))
+				(null (pathname-type pathname)))) :directory)
+	(t                                                        :file)))
diff -ruN clpython/CVS/Entries work/lisp/clpython.jdn/CVS/Entries
--- clpython/CVS/Entries	2008-05-14 15:36:53.000000000 -0400
+++ work/lisp/clpython.jdn/CVS/Entries	2008-05-14 15:38:40.000000000 -0400
@@ -2,4 +2,17 @@
 /clpython-test.asd/1.10/Mon Apr 14 18:51:17 2008//
 /clpython.asd/1.32/Mon Apr 14 18:51:17 2008//
 /license.txt/1.1/Thu Jun 29 19:31:44 2006//
-D
+D/app////
+D/ast////
+D/core////
+D/depend////
+D/doc////
+D/experiment////
+D/lib////
+D/old////
+D/package////
+D/parrotbench////
+D/parser////
+D/releases////
+D/test////
+D/tests////
diff -ruN clpython/CVS/Entries.Log work/lisp/clpython.jdn/CVS/Entries.Log
--- clpython/CVS/Entries.Log	2008-05-14 15:37:00.000000000 -0400
+++ work/lisp/clpython.jdn/CVS/Entries.Log	1969-12-31 19:00:00.000000000 -0500
@@ -1,14 +0,0 @@
-A D/app////
-A D/ast////
-A D/core////
-A D/depend////
-A D/doc////
-A D/experiment////
-A D/lib////
-A D/old////
-A D/package////
-A D/parrotbench////
-A D/parser////
-A D/releases////
-A D/test////
-A D/tests////
diff -ruN clpython/depend/CVS/Entries work/lisp/clpython.jdn/depend/CVS/Entries
--- clpython/depend/CVS/Entries	2008-05-14 15:36:57.000000000 -0400
+++ work/lisp/clpython.jdn/depend/CVS/Entries	2008-05-14 15:38:40.000000000 -0400
@@ -1 +1 @@
-D
+D/cl-yacc////
diff -ruN clpython/depend/CVS/Entries.Log work/lisp/clpython.jdn/depend/CVS/Entries.Log
--- clpython/depend/CVS/Entries.Log	2008-05-14 15:36:57.000000000 -0400
+++ work/lisp/clpython.jdn/depend/CVS/Entries.Log	1969-12-31 19:00:00.000000000 -0500
@@ -1 +0,0 @@
-A D/cl-yacc////
diff -ruN clpython/lib/CVS/Entries work/lisp/clpython.jdn/lib/CVS/Entries
--- clpython/lib/CVS/Entries	2008-05-14 15:36:58.000000000 -0400
+++ work/lisp/clpython.jdn/lib/CVS/Entries	2008-05-14 15:38:40.000000000 -0400
@@ -7,4 +7,4 @@
 /string.lisp/1.2/Tue May 13 20:56:10 2008//
 /sys.lisp/1.9/Fri Aug 24 21:11:38 2007//
 /time.lisp/1.5/Thu Mar 27 22:04:42 2008//
-D
+D/parrotbench////
diff -ruN clpython/lib/CVS/Entries.Log work/lisp/clpython.jdn/lib/CVS/Entries.Log
--- clpython/lib/CVS/Entries.Log	2008-05-14 15:36:58.000000000 -0400
+++ work/lisp/clpython.jdn/lib/CVS/Entries.Log	1969-12-31 19:00:00.000000000 -0500
@@ -1 +0,0 @@
-A D/parrotbench////
diff -ruN clpython/package/readtable.lisp work/lisp/clpython.jdn/package/readtable.lisp
--- clpython/package/readtable.lisp	2008-04-14 14:56:12.000000000 -0400
+++ work/lisp/clpython.jdn/package/readtable.lisp	2008-05-14 15:38:40.000000000 -0400
@@ -30,9 +30,10 @@
 
 (defconstant +reader-error-has-format+
     #+allegro t
-    #+lispworks nil
     #+cmu t
-    #-(or allegro lispworks cmu) nil)
+    #+lispworks nil
+    #+sbcl nil
+    #-(or allegro cmu lispworks sbcl) nil)
 
 (defun read-package-symbol-func (package start-char end-char &key intern)
   "Create a reader function that reads from start-char until endchar,
diff -ruN clpython/releases/CVS/Entries work/lisp/clpython.jdn/releases/CVS/Entries
--- clpython/releases/CVS/Entries	2008-05-14 15:36:59.000000000 -0400
+++ work/lisp/clpython.jdn/releases/CVS/Entries	2008-05-14 15:38:40.000000000 -0400
@@ -1 +1 @@
-D
+D/20060702////
diff -ruN clpython/releases/CVS/Entries.Log work/lisp/clpython.jdn/releases/CVS/Entries.Log
--- clpython/releases/CVS/Entries.Log	2008-05-14 15:36:59.000000000 -0400
+++ work/lisp/clpython.jdn/releases/CVS/Entries.Log	1969-12-31 19:00:00.000000000 -0500
@@ -1 +0,0 @@
-A D/20060702////
