Raymond Toy pushed to branch issue-276-xoroshiro128starstar at cmucl / cmucl

Commits:

8 changed files:

Changes:

  • src/code/loop.lisp
    ... ... @@ -1169,7 +1169,10 @@ collected result will be returned as the value of the LOOP."
    1169 1169
     		;; these type symbols.
    
    1170 1170
     		(let ((type-spec (or (gethash z (loop-universe-type-symbols *loop-universe*))
    
    1171 1171
     				     (gethash (symbol-name z) (loop-universe-type-keywords *loop-universe*)))))
    
    1172
    -		  (when type-spec
    
    1172
    +                  ;; If Z is NIL, we have something like (loop for var nil ...).
    
    1173
    +                  ;; In that case, we need to pop the source to skip over the
    
    1174
    +                  ;; type, just as if we had (loop for var fixnum ...)
    
    1175
    +		  (when (or type-spec (null z))
    
    1173 1176
     		    (loop-pop-source)
    
    1174 1177
     		    type-spec)))
    
    1175 1178
     	       (t 
    

  • src/contrib/asdf/asdf.lisp
    1 1
     ;;; -*- mode: Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp ; Package: CL-USER ; buffer-read-only: t; -*-
    
    2
    -;;; This is ASDF 3.3.6: Another System Definition Facility.
    
    2
    +;;; This is ASDF 3.3.7: Another System Definition Facility.
    
    3 3
     ;;;
    
    4 4
     ;;; Feedback, bug reports, and patches are all welcome:
    
    5 5
     ;;; please mail to <asdf-devel@common-lisp.net>.
    
    ... ... @@ -1848,7 +1848,7 @@ form suitable for testing with #+."
    1848 1848
     (in-package :uiop/version)
    
    1849 1849
     
    
    1850 1850
     (with-upgradability ()
    
    1851
    -  (defparameter *uiop-version* "3.3.6")
    
    1851
    +  (defparameter *uiop-version* "3.3.7")
    
    1852 1852
     
    
    1853 1853
       (defun unparse-version (version-list)
    
    1854 1854
         "From a parsed version (a list of natural numbers), compute the version string"
    
    ... ... @@ -2144,18 +2144,56 @@ use getenvp to return NIL in such a case."
    2144 2144
     
    
    2145 2145
       (defsetf getenv (x) (val)
    
    2146 2146
         "Set an environment variable."
    
    2147
    -    (declare (ignorable x val))
    
    2148
    -    #+allegro `(setf (sys:getenv ,x) ,val)
    
    2149
    -    #+clasp `(ext:setenv ,x ,val)
    
    2150
    -    #+clisp `(system::setenv ,x ,val)
    
    2151
    -    #+clozure `(ccl:setenv ,x ,val)
    
    2152
    -    #+cmucl `(unix:unix-setenv ,x ,val 1)
    
    2153
    -    #+(or ecl clasp) `(ext:setenv ,x ,val)
    
    2154
    -    #+lispworks `(setf (lispworks:environment-variable ,x) ,val)
    
    2155
    -    #+mkcl `(mkcl:setenv ,x ,val)
    
    2156
    -    #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
    
    2157
    -    #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    2158
    -    '(not-implemented-error '(setf getenv)))
    
    2147
    +    (declare (ignorable x val))         ; for the not-implemented cases.
    
    2148
    +    (if (constantp val)
    
    2149
    +        (if val
    
    2150
    +         #+allegro `(setf (sys:getenv ,x) ,val)
    
    2151
    +         #+clasp `(ext:setenv ,x ,val)
    
    2152
    +         #+clisp `(system::setenv ,x ,val)
    
    2153
    +         #+clozure `(ccl:setenv ,x ,val)
    
    2154
    +         #+cmucl `(unix:unix-setenv ,x ,val 1)
    
    2155
    +         #+ecl `(ext:setenv ,x ,val)
    
    2156
    +         #+lispworks `(setf (lispworks:environment-variable ,x) ,val)
    
    2157
    +         #+mkcl `(mkcl:setenv ,x ,val)
    
    2158
    +         #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
    
    2159
    +         #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    2160
    +         '(not-implemented-error '(setf getenv))
    
    2161
    +         ;; VAL is NIL, unset the variable
    
    2162
    +         #+allegro `(symbol-call :excl.osi :unsetenv ,x)
    
    2163
    +         ;; #+clasp `(ext:setenv ,x ,val) ; UNSETENV is not supported.
    
    2164
    +         #+clisp `(system::setenv ,x ,val) ; need fix -- no idea if this works.
    
    2165
    +         #+clozure `(ccl:unsetenv ,x)
    
    2166
    +         #+cmucl `(unix:unix-unsetenv ,x)
    
    2167
    +         #+ecl `(ext:setenv ,x ,val) ; Looked at source, don't see UNSETENV
    
    2168
    +         #+lispworks `(setf (lispworks:environment-variable ,x) ,val) ; according to their docs, this should unset the variable
    
    2169
    +         #+mkcl `(mkcl:setenv ,x ,val) ; like other ECL-family implementations, don't see UNSETENV
    
    2170
    +         #+sbcl `(progn (require :sb-posix) (symbol-call :sb-posix :unsetenv ,x))
    
    2171
    +         #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    2172
    +         '(not-implemented-error 'unsetenv))
    
    2173
    +        `(if ,val
    
    2174
    +             #+allegro (setf (sys:getenv ,x) ,val)
    
    2175
    +             #+clasp (ext:setenv ,x ,val)
    
    2176
    +             #+clisp (system::setenv ,x ,val)
    
    2177
    +             #+clozure (ccl:setenv ,x ,val)
    
    2178
    +             #+cmucl (unix:unix-setenv ,x ,val 1)
    
    2179
    +             #+ecl (ext:setenv ,x ,val)
    
    2180
    +             #+lispworks (setf (lispworks:environment-variable ,x) ,val)
    
    2181
    +             #+mkcl (mkcl:setenv ,x ,val)
    
    2182
    +             #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :setenv ,x ,val 1))
    
    2183
    +             #-(or allegro clasp clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    2184
    +             '(not-implemented-error '(setf getenv))
    
    2185
    +             ;; VAL is NIL, unset the variable
    
    2186
    +             #+allegro (symbol-call :excl.osi :unsetenv ,x)
    
    2187
    +             ;; #+clasp (ext:setenv ,x ,val) ; UNSETENV not supported
    
    2188
    +             #+clisp (system::setenv ,x ,val) ; need fix -- no idea if this works.
    
    2189
    +             #+clozure (ccl:unsetenv ,x)
    
    2190
    +             #+cmucl (unix:unix-unsetenv ,x)
    
    2191
    +             #+ecl (ext:setenv ,x ,val) ; Looked at source, don't see UNSETENV
    
    2192
    +             #+lispworks (setf (lispworks:environment-variable ,x) ,val) ; according to their docs, this should unset the variable
    
    2193
    +             #+mkcl (mkcl:setenv ,x ,val) ; like other ECL-family implementations, don't see UNSETENV
    
    2194
    +             #+sbcl (progn (require :sb-posix) (symbol-call :sb-posix :unsetenv ,x))
    
    2195
    +             #-(or allegro clisp clozure cmucl ecl lispworks mkcl sbcl)
    
    2196
    +             '(not-implemented-error 'unsetenv))))
    
    2159 2197
     
    
    2160 2198
       (defun getenvp (x)
    
    2161 2199
         "Predicate that is true if the named variable is present in the libc environment,
    
    ... ... @@ -2240,7 +2278,7 @@ then returning the non-empty string value of the variable"
    2240 2278
                     ;; Note if not using International ACL
    
    2241 2279
                     ;; see http://www.franz.com/support/documentation/8.1/doc/operators/excl/ics-target-case.htm
    
    2242 2280
                     (excl:ics-target-case (:-ics "8"))
    
    2243
    -                (and (member :smp *features*) "S"))
    
    2281
    +                (and (member :smp *features*) "SBT"))
    
    2244 2282
             #+armedbear (format nil "~a-fasl~a" s system::*fasl-version*)
    
    2245 2283
             #+clisp
    
    2246 2284
             (subseq s 0 (position #\space s)) ; strip build information (date, etc.)
    
    ... ... @@ -2282,7 +2320,8 @@ suitable for use as a directory name to segregate Lisp FASLs, C dynamic librarie
    2282 2320
                  (or (implementation-type) (lisp-implementation-type))
    
    2283 2321
                  (lisp-version-string)
    
    2284 2322
                  (or (operating-system) (software-type))
    
    2285
    -             (or (architecture) (machine-type))))))
    
    2323
    +             (or (architecture) (machine-type))
    
    2324
    +             #+sbcl (if (featurep :sb-thread) "S" "")))))
    
    2286 2325
     
    
    2287 2326
     
    
    2288 2327
     ;;;; Other system information
    
    ... ... @@ -2426,8 +2465,6 @@ the number having BYTES octets (defaulting to 4)."
    2426 2465
             (end-of-file (c)
    
    2427 2466
               (declare (ignore c))
    
    2428 2467
               nil)))))
    
    2429
    -
    
    2430
    -
    
    2431 2468
     ;;;; -------------------------------------------------------------------------
    
    2432 2469
     ;;;; Portability layer around Common Lisp pathnames
    
    2433 2470
     ;; This layer allows for portable manipulation of pathname objects themselves,
    
    ... ... @@ -4554,7 +4591,7 @@ Upon success, the KEEP form is evaluated and the file is is deleted unless it ev
    4554 4591
                            ,@before)))
    
    4555 4592
                   ,@(when after
    
    4556 4593
                       (assert pathnamep)
    
    4557
    -                  `((,afterf (,pathname) ,@after))))
    
    4594
    +                  `((,afterf (,pathname) (declare (ignorable ,pathname)) ,@after))))
    
    4558 4595
              #-gcl (declare (dynamic-extent ,@(when before `(#',beforef)) ,@(when after `(#',afterf))))
    
    4559 4596
              (call-with-temporary-file
    
    4560 4597
               ,(when before `#',beforef)
    
    ... ... @@ -4673,7 +4710,7 @@ when the image is restarted, but before the entry point is called.")
    4673 4710
     before the image dump hooks are called and before the image is dumped.")
    
    4674 4711
     
    
    4675 4712
       (defvar *image-dump-hook* nil
    
    4676
    -    "Functions to call (in order) when before an image is dumped"))
    
    4713
    +    "Functions to call (in order) before an image is dumped"))
    
    4677 4714
     
    
    4678 4715
     (eval-when (#-lispworks :compile-toplevel :load-toplevel :execute)
    
    4679 4716
       (deftype fatal-condition ()
    
    ... ... @@ -4984,9 +5021,17 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    4984 5021
         #-(or clisp clozure (and cmucl executable) lispworks sbcl scl)
    
    4985 5022
         (when executable
    
    4986 5023
           (not-implemented-error 'dump-image "dumping an executable"))
    
    4987
    -    #+allegro
    
    5024
    +    #+allegro ;; revised with help from Franz
    
    4988 5025
         (progn
    
    4989
    -      (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t) ; :new 5000000
    
    5026
    +      #+(and allegro-version>= (version>= 11))
    
    5027
    +      (sys:resize-areas
    
    5028
    +       :old :no-change :old-code :no-change
    
    5029
    +       :global-gc t
    
    5030
    +       :tenure t)
    
    5031
    +      #+(and allegro-version>= (version= 10 1))
    
    5032
    +      (sys:resize-areas :old 10000000 :global-gc t :pack-heap t :sift-old-areas t :tenure t)
    
    5033
    +      #+(and allegro-version>= (not (version>= 10 1)))
    
    5034
    +      (sys:resize-areas :global-gc t :pack-heap t :sift-old-areas t :tenure t)
    
    4990 5035
           (excl:dumplisp :name filename :suppress-allegro-cl-banner t))
    
    4991 5036
         #+clisp
    
    4992 5037
         (apply #'ext:saveinitmem filename
    
    ... ... @@ -5122,7 +5167,8 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    5122 5167
        ;; Variables
    
    5123 5168
        #:*compile-file-warnings-behaviour* #:*compile-file-failure-behaviour*
    
    5124 5169
        #:*output-translation-function*
    
    5125
    -   #:*optimization-settings* #:*previous-optimization-settings*
    
    5170
    +   ;; the following dropped because unnecessary.
    
    5171
    +   ;; #:*optimization-settings* #:*previous-optimization-settings*
    
    5126 5172
        #:*base-build-directory*
    
    5127 5173
        #:compile-condition #:compile-file-error #:compile-warned-error #:compile-failed-error
    
    5128 5174
        #:compile-warned-warning #:compile-failed-warning
    
    ... ... @@ -5132,7 +5178,10 @@ or COMPRESSION on SBCL, and APPLICATION-TYPE on SBCL/Windows."
    5132 5178
        ;; Types
    
    5133 5179
        #+sbcl #:sb-grovel-unknown-constant-condition
    
    5134 5180
        ;; Functions & Macros
    
    5135
    -   #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings
    
    5181
    +   ;; the following three removed from UIOP because they have bugs, it's
    
    5182
    +   ;; easier to remove tham than to fix them, and they could never have been
    
    5183
    +   ;; used successfully in the wild. [2023/12/11:rpg]
    
    5184
    +   ;; #:get-optimization-settings #:proclaim-optimization-settings #:with-optimization-settings
    
    5136 5185
        #:call-with-muffled-compiler-conditions #:with-muffled-compiler-conditions
    
    5137 5186
        #:call-with-muffled-loader-conditions #:with-muffled-loader-conditions
    
    5138 5187
        #:reify-simple-sexp #:unreify-simple-sexp
    
    ... ... @@ -5167,6 +5216,7 @@ what more while the input-file is shortened if possible to ENOUGH-PATHNAME relat
    5167 5216
     This can help you produce more deterministic output for FASLs."))
    
    5168 5217
     
    
    5169 5218
     ;;; Optimization settings
    
    5219
    +#+ignore
    
    5170 5220
     (with-upgradability ()
    
    5171 5221
       (defvar *optimization-settings* nil
    
    5172 5222
         "Optimization settings to be used by PROCLAIM-OPTIMIZATION-SETTINGS")
    
    ... ... @@ -5224,7 +5274,7 @@ This can help you produce more deterministic output for FASLs."))
    5224 5274
                (proclaim `(optimize ,@,reset-settings)))))
    
    5225 5275
         #-(or allegro clasp clisp)
    
    5226 5276
         `(let ,(loop :for v :in +optimization-variables+ :collect `(,v ,v))
    
    5227
    -       ,@(when settings `((proclaim `(optimize ,@,settings))))
    
    5277
    +       ,@(when settings `((proclaim '(optimize ,@settings))))
    
    5228 5278
            ,@body)))
    
    5229 5279
     
    
    5230 5280
     
    
    ... ... @@ -5495,7 +5545,16 @@ Simple means made of symbols, numbers, characters, simple-strings, pathnames, co
    5495 5545
     using READ within a WITH-SAFE-IO-SYNTAX, that represents the warnings currently deferred by
    
    5496 5546
     WITH-COMPILATION-UNIT. One of three functions required for deferred-warnings support in ASDF."
    
    5497 5547
         #+allegro
    
    5498
    -    (list :functions-defined excl::.functions-defined.
    
    5548
    +    (list :functions-defined
    
    5549
    +          #+(and allegro-version>= (version>= 11))
    
    5550
    +          (let (functions-defined)
    
    5551
    +            (maphash #'(lambda (k v)
    
    5552
    +                         (declare (ignore v))
    
    5553
    +                         (push k functions-defined))
    
    5554
    +                     excl::.functions-defined.)
    
    5555
    +            functions-defined)
    
    5556
    +          #+(and allegro-version>= (not (version>= 11)))
    
    5557
    +          excl::.functions-defined.
    
    5499 5558
               :functions-called excl::.functions-called.)
    
    5500 5559
         #+clozure
    
    5501 5560
         (mapcar 'reify-deferred-warning
    
    ... ... @@ -5539,10 +5598,18 @@ One of three functions required for deferred-warnings support in ASDF."
    5539 5598
         #+allegro
    
    5540 5599
         (destructuring-bind (&key functions-defined functions-called)
    
    5541 5600
             reified-deferred-warnings
    
    5542
    -      (setf excl::.functions-defined.
    
    5601
    +      (setf #+(and allegro-version>= (not (version>= 11)))
    
    5602
    +            excl::.functions-defined.
    
    5603
    +            #+(and allegro-version>= (not (version>= 11)))
    
    5543 5604
                 (append functions-defined excl::.functions-defined.)
    
    5544 5605
                 excl::.functions-called.
    
    5545
    -            (append functions-called excl::.functions-called.)))
    
    5606
    +            (append functions-called excl::.functions-called.))
    
    5607
    +      #+(and allegro-version>= (version>= 11))
    
    5608
    +      ;; in ACL >= 11, instead of adding defined functions to a list,
    
    5609
    +      ;; we insert them into a no-values hash-table.
    
    5610
    +      (mapc #'(lambda (fn)
    
    5611
    +                (excl:puthash-key fn excl::.functions-defined.))
    
    5612
    +            functions-defined))
    
    5546 5613
         #+clozure
    
    5547 5614
         (let ((dw (or ccl::*outstanding-deferred-warnings*
    
    5548 5615
                       (setf ccl::*outstanding-deferred-warnings* (ccl::%defer-warnings t)))))
    
    ... ... @@ -5605,7 +5672,11 @@ One of three functions required for deferred-warnings support in ASDF."
    5605 5672
         "Reset the set of deferred warnings to be handled at the end of the current WITH-COMPILATION-UNIT.
    
    5606 5673
     One of three functions required for deferred-warnings support in ASDF."
    
    5607 5674
         #+allegro
    
    5608
    -    (setf excl::.functions-defined. nil
    
    5675
    +    (setf excl::.functions-defined.
    
    5676
    +          #+(and allegro-version>= (not (version>= 11)))
    
    5677
    +          nil
    
    5678
    +          #+(and allegro-version>= (version>= 11))
    
    5679
    +          (make-hash-table :test #'equal :values nil)
    
    5609 5680
               excl::.functions-called. nil)
    
    5610 5681
         #+clozure
    
    5611 5682
         (if-let (dw ccl::*outstanding-deferred-warnings*)
    
    ... ... @@ -7809,7 +7880,8 @@ DEPRECATED."
    7809 7880
        #:*post-upgrade-cleanup-hook* #:cleanup-upgraded-asdf
    
    7810 7881
        ;; There will be no symbol left behind!
    
    7811 7882
        #:with-asdf-deprecation
    
    7812
    -   #:intern*)
    
    7883
    +   #:intern*
    
    7884
    +   #:asdf-install-warning)
    
    7813 7885
       (:import-from :uiop/package #:intern* #:find-symbol*))
    
    7814 7886
     (in-package :asdf/upgrade)
    
    7815 7887
     
    
    ... ... @@ -7894,7 +7966,7 @@ previously-loaded version of ASDF."
    7894 7966
              ;; "3.4.5.67" would be a development version in the official branch, on top of 3.4.5.
    
    7895 7967
              ;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
    
    7896 7968
              ;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
    
    7897
    -         (asdf-version "3.3.6")
    
    7969
    +         (asdf-version "3.3.7")
    
    7898 7970
              (existing-version (asdf-version)))
    
    7899 7971
         (setf *asdf-version* asdf-version)
    
    7900 7972
         (when (and existing-version (not (equal asdf-version existing-version)))
    
    ... ... @@ -7970,6 +8042,19 @@ previously-loaded version of ASDF."
    7970 8042
                 (call-functions (reverse *post-upgrade-cleanup-hook*)))
    
    7971 8043
               t))))
    
    7972 8044
     
    
    8045
    +  (define-condition asdf-install-warning (simple-condition warning)
    
    8046
    +    ((format-control
    
    8047
    +      :initarg :format-control)
    
    8048
    +     (format-arguments
    
    8049
    +      :initarg :format-arguments
    
    8050
    +      :initform nil))
    
    8051
    +    (:documentation "Warning class for issues related to upgrading or loading ASDF.")
    
    8052
    +    (:report (lambda (c s)
    
    8053
    +               (format s "WARNING: ~?"
    
    8054
    +                       (slot-value c 'format-control)
    
    8055
    +                       (slot-value c 'format-arguments)))))
    
    8056
    +
    
    8057
    +
    
    7973 8058
       (defun upgrade-asdf ()
    
    7974 8059
         "Try to upgrade of ASDF. If a different version was used, return T.
    
    7975 8060
        We need do that before we operate on anything that may possibly depend on ASDF."
    
    ... ... @@ -12551,7 +12636,9 @@ into a single file"))
    12551 12636
        #:package-inferred-system #:sysdef-package-inferred-system-search
    
    12552 12637
        #:package-system ;; backward compatibility only. To be removed.
    
    12553 12638
        #:register-system-packages
    
    12554
    -   #:*defpackage-forms* #:*package-inferred-systems* #:package-inferred-system-missing-package-error))
    
    12639
    +   #:*defpackage-forms* #:*package-inferred-systems*
    
    12640
    +   #:package-inferred-system-missing-package-error
    
    12641
    +   #:package-inferred-system-unknown-defpackage-option-error))
    
    12555 12642
     (in-package :asdf/package-inferred-system)
    
    12556 12643
     
    
    12557 12644
     (with-upgradability ()
    
    ... ... @@ -12602,15 +12689,34 @@ every such file"))
    12602 12689
                                          trying to define package-inferred-system ~A from file ~A~>")
    
    12603 12690
                            (error-system c) (error-pathname c)))))
    
    12604 12691
     
    
    12605
    -  (defun package-dependencies (defpackage-form)
    
    12692
    +  (define-condition package-inferred-system-unknown-defpackage-option-error (system-definition-error)
    
    12693
    +    ((system :initarg :system :reader error-system)
    
    12694
    +     (pathname :initarg :pathname :reader error-pathname)
    
    12695
    +     (option :initarg :clause-head :reader error-option)
    
    12696
    +     (arguments :initarg :clause-rest :reader error-arguments))
    
    12697
    +    (:report (lambda (c s)
    
    12698
    +               (format s (compatfmt "~@<Don't know how to infer package dependencies ~
    
    12699
    +                                     for non-standard option ~S ~
    
    12700
    +                                     while trying to define package-inferred-system ~A ~
    
    12701
    +                                     from file ~A~>")
    
    12702
    +                       (cons (error-option c)
    
    12703
    +                             (error-arguments c))
    
    12704
    +                       (error-system c)
    
    12705
    +                       (error-pathname c)))))
    
    12706
    +
    
    12707
    +  (defun package-dependencies (defpackage-form &optional system pathname)
    
    12606 12708
         "Return a list of packages depended on by the package
    
    12607 12709
     defined in DEFPACKAGE-FORM.  A package is depended upon if
    
    12608
    -the DEFPACKAGE-FORM uses it or imports a symbol from it."
    
    12710
    +the DEFPACKAGE-FORM uses it or imports a symbol from it.
    
    12711
    +
    
    12712
    +SYSTEM should be the name of the system being defined, and
    
    12713
    +PATHNAME should be the file which contains the DEFPACKAGE-FORM.
    
    12714
    +These will be used to report errors when encountering an unknown defpackage argument."
    
    12609 12715
         (assert (defpackage-form-p defpackage-form))
    
    12610 12716
         (remove-duplicates
    
    12611 12717
          (while-collecting (dep)
    
    12612 12718
            (loop :for (option . arguments) :in (cddr defpackage-form) :do
    
    12613
    -         (ecase option
    
    12719
    +         (case option
    
    12614 12720
                ((:use :mix :reexport :use-reexport :mix-reexport)
    
    12615 12721
                 (dolist (p arguments) (dep (string p))))
    
    12616 12722
                ((:import-from :shadowing-import-from)
    
    ... ... @@ -12619,7 +12725,37 @@ the DEFPACKAGE-FORM uses it or imports a symbol from it."
    12619 12725
                ((:local-nicknames)
    
    12620 12726
                 (loop :for (nil actual-package-name) :in arguments :do
    
    12621 12727
                   (dep (string actual-package-name))))
    
    12622
    -           ((:nicknames :documentation :shadow :export :intern :unintern :recycle)))))
    
    12728
    +           ((:nicknames :documentation :shadow :export :intern :unintern :recycle))
    
    12729
    +
    
    12730
    +           ;;; SBCL extensions to defpackage relating to package locks.
    
    12731
    +           ;; See https://www.sbcl.org/manual/#Implementation-Packages .
    
    12732
    +           #+(or sbcl ecl) ;; MKCL too?
    
    12733
    +           ((:lock)
    
    12734
    +            ;; A :LOCK clause introduces no dependencies.
    
    12735
    +            nil)
    
    12736
    +           #+sbcl
    
    12737
    +           ((:implement)
    
    12738
    +            ;; A :IMPLEMENT clause introduces dependencies on the listed packages,
    
    12739
    +            ;; as it's not meaningful to :IMPLEMENT a package which hasn't yet been defined.
    
    12740
    +            (dolist (p arguments) (dep (string p))))
    
    12741
    +
    
    12742
    +           #+lispworks
    
    12743
    +           ((:add-use-defaults) nil)
    
    12744
    +
    
    12745
    +           #+allegro
    
    12746
    +           ((:implementation-packages :alternate-name :flat) nil)
    
    12747
    +
    
    12748
    +           ;; When encountering an unknown OPTION, signal a continuable error.
    
    12749
    +           ;; We cannot in general know whether the unknown clause should introduce any dependencies,
    
    12750
    +           ;; so we cannot do anything other than signal an error here,
    
    12751
    +           ;; but users may know that certain extensions do not introduce dependencies,
    
    12752
    +           ;; and may wish to manually continue building.
    
    12753
    +           (otherwise (cerror "Treat the unknown option as introducing no package dependencies"
    
    12754
    +                              'package-inferred-system-unknown-defpackage-option-error
    
    12755
    +                              :system system
    
    12756
    +                              :pathname pathname
    
    12757
    +                              :option option
    
    12758
    +                              :arguments arguments)))))
    
    12623 12759
          :from-end t :test 'equal))
    
    12624 12760
     
    
    12625 12761
       (defun package-designator-name (package)
    
    ... ... @@ -13974,6 +14110,13 @@ system or its dependencies if it has already been loaded."
    13974 14110
       (when (boundp 'excl:*warn-on-nested-reader-conditionals*)
    
    13975 14111
         (setf excl:*warn-on-nested-reader-conditionals* uiop/common-lisp::*acl-warn-save*))
    
    13976 14112
     
    
    14113
    +  #+(and allegro allegro-v10.1) ;; check for patch needed for upgradeability
    
    14114
    +  (unless (assoc "ma040" (cdr (assoc :lisp sys:*patches*)) :test 'equal)
    
    14115
    +    (warn 'asdf-install-warning
    
    14116
    +          :format-control "On Allegro Common Lisp 10.1, patch pma040 is ~
    
    14117
    +needed for correct ASDF upgrading. Please update your Allegro image ~
    
    14118
    +using (SYS:UPDATE-ALLEGRO)."))
    
    14119
    +
    
    13977 14120
       ;; Advertise the features we provide.
    
    13978 14121
       (dolist (f '(:asdf :asdf2 :asdf3 :asdf3.1 :asdf3.2 :asdf3.3)) (pushnew f *features*))
    
    13979 14122
     
    

  • src/contrib/asdf/doc/asdf.html The diff for this file was not included because it is too large.
  • src/contrib/asdf/doc/asdf.info The diff for this file was not included because it is too large.
  • src/contrib/asdf/doc/asdf.pdf
    No preview for this file type
  • src/general-info/release-21f.md
    ... ... @@ -23,6 +23,7 @@ public domain.
    23 23
         * Add support for Gray streams implementation of file-length via
    
    24 24
           `ext:stream-file-length` generic function.
    
    25 25
       * Changes:
    
    26
    +    * Update to ASDF 3.3.7
    
    26 27
         * The RNG has changed from an old version of xoroshiro128+ to
    
    27 28
           xoroshiro128**.  This means sequences of random numbers will be
    
    28 29
           different from before.  See ~~#276~~.
    
    ... ... @@ -41,8 +42,11 @@ public domain.
    41 42
         * ~~#249~~ Replace LEA instruction with simpler shorter instructions in arithmetic vops for x86
    
    42 43
         * ~~#253~~ Block-compile list-to-hashtable and callers
    
    43 44
         * ~~#258~~ Remove `get-page-size` from linux-os.lisp
    
    45
    +    * ~~#256~~ loop for var nil works
    
    44 46
         * ~~#269~~ Add function to get user's home directory
    
    45 47
         * ~~#266~~ Support "~user" in namestrings
    
    48
    +    * ~~#271~~ Update ASDF to 3.3.7
    
    49
    +    * ~~#272~~ Move scavenge code for static vectors to its own function
    
    46 50
         * ~~#276~~ Implement xoroshiro128** generator for x86
    
    47 51
       * Other changes:
    
    48 52
       * Improvements to the PCL implementation of CLOS:
    

  • src/lisp/gencgc.c
    ... ... @@ -2698,6 +2698,43 @@ maybe_static_array_p(lispobj header)
    2698 2698
         return result;
    
    2699 2699
     }
    
    2700 2700
     
    
    2701
    +static int
    
    2702
    +scav_static_vector(lispobj object)
    
    2703
    +{
    
    2704
    +    lispobj *ptr = (lispobj *) PTR(object);
    
    2705
    +    lispobj header = *ptr;
    
    2706
    +
    
    2707
    +    if (debug_static_array_p) {
    
    2708
    +        fprintf(stderr, "Not in Lisp spaces:  object = %p, ptr = %p\n",
    
    2709
    +                (void*)object, ptr);
    
    2710
    +        fprintf(stderr, "  Header value = 0x%lx\n", (unsigned long) header);
    
    2711
    +    }
    
    2712
    +
    
    2713
    +    if (maybe_static_array_p(header)) {
    
    2714
    +        int static_p;
    
    2715
    +
    
    2716
    +        if (debug_static_array_p) {
    
    2717
    +            fprintf(stderr, "Possible static vector at %p.  header = 0x%lx\n",
    
    2718
    +                    ptr, (unsigned long) header);
    
    2719
    +        }
    
    2720
    +
    
    2721
    +        static_p = (HeaderValue(header) & 1) == 1;
    
    2722
    +        if (static_p) {
    
    2723
    +            /*
    
    2724
    +             * We have a static vector.  Mark it as
    
    2725
    +             * reachable by setting the MSB of the header.
    
    2726
    +             */
    
    2727
    +            *ptr = header | 0x80000000;
    
    2728
    +            if (debug_static_array_p) {
    
    2729
    +                fprintf(stderr, "Scavenged static vector @%p, header = 0x%lx\n",
    
    2730
    +                        ptr, (unsigned long) header);
    
    2731
    +            }
    
    2732
    +        }
    
    2733
    +    }
    
    2734
    +
    
    2735
    +    return 1;
    
    2736
    +}
    
    2737
    +
    
    2701 2738
     
    
    2702 2739
     
    
    2703 2740
     /* Scavenging */
    
    ... ... @@ -2756,41 +2793,7 @@ scavenge(void *start_obj, long nwords)
    2756 2793
                            || other_space_p(object)) {
    
    2757 2794
                     words_scavenged = 1;
    
    2758 2795
                 } else {
    
    2759
    -                lispobj *ptr = (lispobj *) PTR(object);
    
    2760
    -                words_scavenged = 1;
    
    2761
    -                if (debug_static_array_p) {
    
    2762
    -                    fprintf(stderr, "Not in Lisp spaces:  object = %p, ptr = %p\n",
    
    2763
    -                            (void*)object, ptr);    
    
    2764
    -                }
    
    2765
    -                
    
    2766
    -                if (1) {
    
    2767
    -                    lispobj header = *ptr;
    
    2768
    -                    if (debug_static_array_p) {
    
    2769
    -                        fprintf(stderr, "  Header value = 0x%lx\n", (unsigned long) header);
    
    2770
    -                    }
    
    2771
    -                    
    
    2772
    -                    if (maybe_static_array_p(header)) {
    
    2773
    -                        int static_p;
    
    2774
    -
    
    2775
    -                        if (debug_static_array_p) {
    
    2776
    -                            fprintf(stderr, "Possible static vector at %p.  header = 0x%lx\n",
    
    2777
    -                                    ptr, (unsigned long) header);
    
    2778
    -                        }
    
    2779
    -                      
    
    2780
    -                        static_p = (HeaderValue(header) & 1) == 1;
    
    2781
    -                        if (static_p) {
    
    2782
    -                            /*
    
    2783
    -                             * We have a static vector.  Mark it as
    
    2784
    -                             * reachable by setting the MSB of the header.
    
    2785
    -                             */
    
    2786
    -                            *ptr = header | 0x80000000;
    
    2787
    -                            if (debug_static_array_p) {
    
    2788
    -                                fprintf(stderr, "Scavenged static vector @%p, header = 0x%lx\n",
    
    2789
    -                                        ptr, (unsigned long) header);
    
    2790
    -                            }
    
    2791
    -                        }
    
    2792
    -                    }
    
    2793
    -                }
    
    2796
    +                words_scavenged = scav_static_vector(object);
    
    2794 2797
                 }
    
    2795 2798
     	} else if ((object & 3) == 0)
    
    2796 2799
     	    words_scavenged = 1;
    

  • tests/loop.lisp
    1
    +;;; Tests from gitlab issues
    
    2
    +
    
    3
    +(defpackage :loop-tests
    
    4
    +  (:use :cl :lisp-unit))
    
    5
    +
    
    6
    +(in-package "LOOP-TESTS")
    
    7
    +
    
    8
    +(define-test loop-var-nil
    
    9
    +    (:tag :issues)
    
    10
    +  ;; Just verify that (loop for var nil ...) works.  Previously it
    
    11
    +  ;; signaled an error.  See Gitlab issue #256.
    
    12
    +  (assert-equal '(1 2)
    
    13
    +                (loop for var nil from 1 to 2 collect var)))
    
    14
    +