- (let* ((dot1 (position #\. (lisp-implementation-version)))
- (dot2 (position #\. (lisp-implementation-version) :start (1+ dot1))))
- (values
- (parse-integer (lisp-implementation-version) :end dot1)
- (parse-integer (lisp-implementation-version) :start (1+ dot1) :end dot2)
- (if dot2
- (parse-integer (lisp-implementation-version) :start (1+ dot2) :junk-allowed t)
- 0))))
- (defun sbcl>= (req-major req-minor req-micro)
- (multiple-value-bind (major minor micro) (sbcl-version)
+ (values-list
+ (loop
+ repeat 4
+ for part in (split-string (lisp-implementation-version) :delimiter #\.)
+ while (every #'digit-char-p part)
+ collect (parse-integer part))))
+ (defun sbcl>= (major minor micro &optional patch)
+ (multiple-value-bind (%major %minor %micro %patch) (sbcl-version)