<html lang='en'>
<head>
<meta content='text/html; charset=utf-8' http-equiv='Content-Type'>
<title>
GitLab
</title>
</meta>
</head>
<style>
img {
max-width: 100%;
height: auto;
}
p.details {
font-style:italic;
color:#777
}
.footer p {
font-size:small;
color:#777
}
pre.commit-message {
white-space: pre-wrap;
}
.file-stats a {
text-decoration: none;
}
.file-stats .new-file {
color: #090;
}
.file-stats .deleted-file {
color: #B00;
}
</style>
<body>
<div class='content'>
<h3>Raymond Toy pushed to branch rtoy-mmap-anon-control-and-binding-stacks at <a href="https://gitlab.common-lisp.net/cmucl/cmucl">cmucl / cmucl</a></h3>
<h4>
Commits:
</h4>
<ul>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/f7e92b739fe1311d89924c9a5fc725e5b1b1440e">f7e92b73</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-11-10T21:39:15Z</i>
</div>
<pre class='commit-message'>Rename arguments to RENAME-PACKAGE and update docstring
Can't ever remember the order of arguments for RENAME-PACKAGE so just
rename the variables to make it clearer. And update the docstring to
be a little more verbose.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/5d3a63fa223ea40f8625a47d367d13b8c85c0842">5d3a63fa</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-11-28T16:43:54Z</i>
</div>
<pre class='commit-message'>Support constant shifts for bignum digits.
This gets rid of the load of the shift amount to ecx, saving one
instruction and reducing pressure on the ecx register.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/a613a908988d4651740972f40741785a5fd81b48">a613a908</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-11-28T16:45:41Z</i>
</div>
<pre class='commit-message'>Regenerated (due to docstring change for rename-package).</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/1b8b84be82ebb9fb86ddd5159c7a36067ee27257">1b8b84be</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-01T21:41:49Z</i>
</div>
<pre class='commit-message'>Handle large (fixed) shift amounts for the digit shifters.
Make the vops handle the case when the known constant shift amount is
so large that the result is a known value. Plus, the instructions
have a fixed immediate argument size and the amount is taken mod 32
which would produce the wrong result if the actual shift amount were
used.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/5406768cc69dd57ac8c7192870d7a973ab6cf7b5">5406768c</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-02T20:07:43Z</i>
</div>
<pre class='commit-message'>Linux needs unix-setitimer
Cut and paste error from unix-glibc2.lisp copied unix-getitimer
instead of unix-setitimer which is needed by SAVE-LISP.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/be500bc5ecbfb12a4053c9e24c40ed0a335d5290">be500bc5</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-05T16:10:46Z</i>
</div>
<pre class='commit-message'>Regenerated.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/1d64f63b45cfe030f76132521b03e6b90c9f7e71">1d64f63b</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-05T17:01:22Z</i>
</div>
<pre class='commit-message'>Update from logs.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/7a1457da0f9169bcd0007a7ac8f8028b021c004b">7a1457da</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-11T19:25:30Z</i>
</div>
<pre class='commit-message'>New implementation of the digit shifters.
Define new vops for the digit shifters that take a constant
(unsigned-byte 5) value. The previous version, while correct, still
causes the ecx register to spill because it was a temporary. This
doens't cause the compiler to spill ecx unnecessarily anymore.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/c91ff8298e9007102a71242c88c005a334f6fbfb">c91ff829</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-12T08:51:40Z</i>
</div>
<pre class='commit-message'>Update lisp-unit.</pre>
</li>
<li>
<strong><a href="https://gitlab.common-lisp.net/cmucl/cmucl/commit/275011da14a17167d5c039047861253550279fe5">275011da</a></strong>
<div>
<span>by Raymond Toy</span>
<i>at 2015-12-13T21:35:03Z</i>
</div>
<pre class='commit-message'>Merge branch 'master' into rtoy-mmap-anon-control-and-binding-stacks</pre>
</li>
</ul>
<h4>8 changed files:</h4>
<ul>
<li class='file-stats'>
<a href='#diff-0'>
src/code/package.lisp
</a>
</li>
<li class='file-stats'>
<a href='#diff-1'>
src/code/unix.lisp
</a>
</li>
<li class='file-stats'>
<a href='#diff-2'>
src/compiler/x86/arith.lisp
</a>
</li>
<li class='file-stats'>
<a href='#diff-3'>
src/contrib/lisp-unit/internal-test/example-tests.lisp
</a>
</li>
<li class='file-stats'>
<a href='#diff-4'>
src/contrib/lisp-unit/lisp-unit.lisp
</a>
</li>
<li class='file-stats'>
<a href='#diff-5'>
src/general-info/release-21b.txt
</a>
</li>
<li class='file-stats'>
<a href='#diff-6'>
src/i18n/locale/cmucl-unix.pot
</a>
</li>
<li class='file-stats'>
<a href='#diff-7'>
src/i18n/locale/cmucl.pot
</a>
</li>
</ul>
<h4>Changes:</h4>
<li id='diff-0'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-0'>
<strong>
src/code/package.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/code/package.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/code/package.lisp
</span><span style="color: #aaaaaa">@@ -1204,23 +1204,25 @@
</span> ;;; Change the name if we can, blast any old nicknames and then
;;; add in any new ones.
;;;
<span style="color: #000000;background-color: #ffdddd">-(defun rename-package (package name &optional (nicknames ()))
- "Changes the name and nicknames for a package."
</span><span style="color: #000000;background-color: #ddffdd">+(defun rename-package (package new-name &optional (new-nicknames ()))
+ "Replaces the name and nicknames of Package. The old name and all of
+ the old nicknames of Package are eliminated and are replaced by
+ New-Name and New-Nicknames."
</span> (let* ((package (package-or-lose package))
<span style="color: #000000;background-color: #ffdddd">- (name (string name))
- (found (find-package name)))
</span><span style="color: #000000;background-color: #ddffdd">+ (new-name (string new-name))
+ (found (find-package new-name)))
</span> (unless (or (not found) (eq found package))
(error 'simple-package-error
<span style="color: #000000;background-color: #ffdddd">- :package name
</span><span style="color: #000000;background-color: #ddffdd">+ :package new-name
</span> :format-control (intl:gettext "A package named ~S already exists.")
<span style="color: #000000;background-color: #ffdddd">- :format-arguments (list name)))
</span><span style="color: #000000;background-color: #ddffdd">+ :format-arguments (list new-name)))
</span> (remhash (package-%name package) *package-names*)
(dolist (n (package-%nicknames package))
(remhash n *package-names*))
<span style="color: #000000;background-color: #ffdddd">- (setf (package-%name package) name)
- (setf (gethash name *package-names*) package)
</span><span style="color: #000000;background-color: #ddffdd">+ (setf (package-%name package) new-name)
+ (setf (gethash new-name *package-names*) package)
</span> (setf (package-%nicknames package) ())
<span style="color: #000000;background-color: #ffdddd">- (enter-new-nicknames package nicknames)
</span><span style="color: #000000;background-color: #ddffdd">+ (enter-new-nicknames package new-nicknames)
</span> package))
;;; Delete-Package -- Public
</code></pre>
<br>
</li>
<li id='diff-1'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-1'>
<strong>
src/code/unix.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/code/unix.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/code/unix.lisp
</span><span style="color: #aaaaaa">@@ -2661,12 +2661,18 @@
</span> which (alien-sap (addr itvn))(alien-sap (addr itvo))))))
#+linux
<span style="color: #000000;background-color: #ffdddd">-(defun unix-getitimer (which)
- _N"Unix-getitimer returns the INTERVAL and VALUE slots of one of
- three system timers (:real :virtual or :profile). On success,
- unix-getitimer returns 5 values,
- T, it-interval-secs, it-interval-usec, it-value-secs, it-value-usec."
</span><span style="color: #000000;background-color: #ddffdd">+(defun unix-setitimer (which int-secs int-usec val-secs val-usec)
+ _N" Unix-setitimer sets the INTERVAL and VALUE slots of one of
+ three system timers (:real :virtual or :profile). A SIGALRM signal
+ will be delivered VALUE <seconds+microseconds> from now. INTERVAL,
+ when non-zero, is <seconds+microseconds> to be loaded each time
+ the timer expires. Setting INTERVAL and VALUE to zero disables
+ the timer. See the Unix man page for more details. On success,
+ unix-setitimer returns the old contents of the INTERVAL and VALUE
+ slots as in unix-getitimer."
</span> (declare (type (member :real :virtual :profile) which)
<span style="color: #000000;background-color: #ddffdd">+ (type (unsigned-byte 29) int-secs val-secs)
+ (type (integer 0 (1000000)) int-usec val-usec)
</span> (values t
(unsigned-byte 29)(mod 1000000)
(unsigned-byte 29)(mod 1000000)))
<span style="color: #aaaaaa">@@ -2674,14 +2680,19 @@
</span> (:real ITIMER-REAL)
(:virtual ITIMER-VIRTUAL)
(:profile ITIMER-PROF))))
<span style="color: #000000;background-color: #ffdddd">- (with-alien ((itv (struct itimerval)))
- (syscall* ("getitimer" int (* (struct itimerval)))
</span><span style="color: #000000;background-color: #ddffdd">+ (with-alien ((itvn (struct itimerval))
+ (itvo (struct itimerval)))
+ (setf (slot (slot itvn 'it-interval) 'tv-sec ) int-secs
+ (slot (slot itvn 'it-interval) 'tv-usec) int-usec
+ (slot (slot itvn 'it-value ) 'tv-sec ) val-secs
+ (slot (slot itvn 'it-value ) 'tv-usec) val-usec)
+ (syscall* ("setitimer" int (* (struct timeval))(* (struct timeval)))
</span> (values T
<span style="color: #000000;background-color: #ffdddd">- (slot (slot itv 'it-interval) 'tv-sec)
- (slot (slot itv 'it-interval) 'tv-usec)
- (slot (slot itv 'it-value) 'tv-sec)
- (slot (slot itv 'it-value) 'tv-usec))
- which (alien-sap (addr itv))))))
</span><span style="color: #000000;background-color: #ddffdd">+ (slot (slot itvo 'it-interval) 'tv-sec)
+ (slot (slot itvo 'it-interval) 'tv-usec)
+ (slot (slot itvo 'it-value) 'tv-sec)
+ (slot (slot itvo 'it-value) 'tv-usec))
+ which (alien-sap (addr itvn))(alien-sap (addr itvo))))))
</span>
;;;; User and group database access, POSIX Standard 9.2.2
</code></pre>
<br>
</li>
<li id='diff-2'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-2'>
<strong>
src/compiler/x86/arith.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/compiler/x86/arith.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/compiler/x86/arith.lisp
</span><span style="color: #aaaaaa">@@ -1445,32 +1445,62 @@
</span> (:translate bignum::%ashr)
(:policy :fast-safe)
(:args (digit :scs (unsigned-reg unsigned-stack) :target result)
<span style="color: #000000;background-color: #ffdddd">- (count :scs (unsigned-reg) :target ecx))
</span><span style="color: #000000;background-color: #ddffdd">+ (count :scs (unsigned-reg)))
</span> (:arg-types unsigned-num positive-fixnum)
(:temporary (:sc unsigned-reg :offset ecx-offset :from (:argument 1)) ecx)
(:results (result :scs (unsigned-reg) :from (:argument 0)
:load-if (not (and (sc-is result unsigned-stack)
(location= digit result)))))
(:result-types unsigned-num)
<span style="color: #000000;background-color: #ffdddd">- (:generator 1
</span><span style="color: #000000;background-color: #ddffdd">+ (:generator 2
</span> (move result digit)
(move ecx count)
(inst sar result :cl)))
<span style="color: #000000;background-color: #ddffdd">+(define-vop (digit-ashr-c)
+ (:translate bignum::%ashr)
+ (:policy :fast-safe)
+ (:args (digit :scs (unsigned-reg unsigned-stack) :target result))
+ (:info count)
+ (:arg-types unsigned-num (:constant (unsigned-byte #.(1- (integer-length vm:word-bits)))))
+ (:results (result :scs (unsigned-reg) :from (:argument 0)
+ :load-if (not (and (sc-is result unsigned-stack)
+ (location= digit result)))))
+ (:result-types unsigned-num)
+ (:generator 1
+ (move result digit)
+ ;; If the count is greater than 31, it's the same as
+ ;; shifting by 31, leaving just the sign bit.
+ (inst sar result count)))
+
</span> (define-vop (digit-lshr digit-ashr)
(:translate bignum::%digit-logical-shift-right)
<span style="color: #000000;background-color: #ffdddd">- (:generator 1
</span><span style="color: #000000;background-color: #ddffdd">+ (:generator 2
</span> (move result digit)
(move ecx count)
(inst shr result :cl)))
<span style="color: #000000;background-color: #ddffdd">+(define-vop (digit-lshr-c digit-ashr-c)
+ (:translate bignum::%digit-logical-shift-right)
+ (:generator 1
+ (move result digit)
+ (inst shr result count)))
+
</span> (define-vop (digit-ashl digit-ashr)
(:translate bignum::%ashl)
<span style="color: #000000;background-color: #ffdddd">- (:generator 1
</span><span style="color: #000000;background-color: #ddffdd">+ (:generator 2
</span> (move result digit)
(move ecx count)
(inst shl result :cl)))
<span style="color: #000000;background-color: #ddffdd">+(define-vop (digit-ashl-c digit-ashr-c)
+ (:translate bignum::%ashl)
+ (:generator 1
+ (move result digit)
+ (inst shl result count)))
+
+
+
</span>
;;;; Static functions.
</code></pre>
<br>
</li>
<li id='diff-3'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-3'>
<strong>
src/contrib/lisp-unit/internal-test/example-tests.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/contrib/lisp-unit/internal-test/example-tests.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/contrib/lisp-unit/internal-test/example-tests.lisp
</span><span style="color: #aaaaaa">@@ -57,6 +57,10 @@
</span> (dotimes (i 5)
(assert-equal i (my-sqrt (* i i)) i)))
<span style="color: #000000;background-color: #ddffdd">+(define-test cl-user::my-sqrt
+ (dotimes (i 5)
+ (assert-equal i (my-sqrt (* i i)) i)))
+
</span> ;;; Macro
(defmacro my-macro (arg1 arg2)
</code></pre>
<br>
</li>
<li id='diff-4'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-4'>
<strong>
src/contrib/lisp-unit/lisp-unit.lisp
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/contrib/lisp-unit/lisp-unit.lisp
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/contrib/lisp-unit/lisp-unit.lisp
</span><span style="color: #aaaaaa">@@ -126,8 +126,9 @@ functions or even macros does not require reloading any tests.
</span> "If not NIL, enter the debugger when an error is encountered in an
assertion.")
<span style="color: #000000;background-color: #ffdddd">-(defparameter *signal-results* nil
- "Signal the result if non NIL.")
</span><span style="color: #000000;background-color: #ddffdd">+(defun use-debugger (&optional (flag t))
+ "Use the debugger when testing, or not."
+ (setq *use-debugger* flag))
</span>
(defun use-debugger-p (condition)
"Debug or ignore errors."
<span style="color: #aaaaaa">@@ -136,9 +137,8 @@ assertion.")
</span> (y-or-n-p "~A -- debug?" condition))
(*use-debugger*)))
<span style="color: #000000;background-color: #ffdddd">-(defun use-debugger (&optional (flag t))
- "Use the debugger when testing, or not."
- (setq *use-debugger* flag))
</span><span style="color: #000000;background-color: #ddffdd">+(defparameter *signal-results* nil
+ "Signal the result if non NIL.")
</span>
(defun signal-results (&optional (flag t))
"Signal the results for extensibility."
<span style="color: #aaaaaa">@@ -238,7 +238,7 @@ assertion.")
</span> ((and (stringp item) (not doc) (rest body))
(if tag
(values doc tag (rest body))
<span style="color: #000000;background-color: #ffdddd">- (parse-body (rest body) doc tag)))
</span><span style="color: #000000;background-color: #ddffdd">+ (parse-body (rest body) item tag)))
</span> (t (values doc tag body)))))
(defun test-name-error-report (test-name-error stream)
<span style="color: #aaaaaa">@@ -260,20 +260,31 @@ assertion.")
</span> name
(error 'test-name-error :datum name)))
<span style="color: #000000;background-color: #ddffdd">+(defun test-package (name)
+ "Return the package for storing the test."
+ (multiple-value-bind (symbol status)
+ (find-symbol (symbol-name name))
+ (declare (ignore symbol))
+ (ecase status
+ ((:internal :external nil)
+ (symbol-package name))
+ (:inherited *package*))))
+
</span> (defmacro define-test (name &body body)
"Store the test in the test database."
(let ((qname (gensym "NAME-")))
(multiple-value-bind (doc tag code) (parse-body body)
`(let* ((,qname (valid-test-name ',name))
<span style="color: #000000;background-color: #ffdddd">- (doc (or ,doc (string ,qname))))
</span><span style="color: #000000;background-color: #ddffdd">+ (doc (or ,doc (symbol-name ,qname)))
+ (package (test-package ,qname)))
</span> (setf
;; Unit test
<span style="color: #000000;background-color: #ffdddd">- (gethash ,qname (package-table *package* t))
</span><span style="color: #000000;background-color: #ddffdd">+ (gethash ,qname (package-table package t))
</span> (make-instance 'unit-test :doc doc :code ',code))
;; Tags
<span style="color: #000000;background-color: #ffdddd">- (loop for tag in ',tag do
- (pushnew
- ,qname (gethash tag (package-tags *package* t))))
</span><span style="color: #000000;background-color: #ddffdd">+ (loop
+ for tag in ',tag do
+ (pushnew ,qname (gethash tag (package-tags package t))))
</span> ;; Return the name of the test
,qname))))
</code></pre>
<br>
</li>
<li id='diff-5'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-5'>
<strong>
src/general-info/release-21b.txt
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/general-info/release-21b.txt
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/general-info/release-21b.txt
</span><span style="color: #aaaaaa">@@ -42,10 +42,13 @@ New in this release:
</span> of BYTE and WORD.
* Unix support on Linux has been unified with all other OSes.
Thus, src/code/unix-glibc2.lisp is no longer used.
<span style="color: #000000;background-color: #ddffdd">+ * Micro-optimize modular shifts on x86.
+ * Update lisp-unit to commit e6c259f.
</span>
* ANSI compliance fixes:
* Bugfixes:
<span style="color: #000000;background-color: #ddffdd">+ * Linux was missing unix-setitimer which prevented saving cores.
</span>
* Trac Tickets:
</code></pre>
<br>
</li>
<li id='diff-6'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-6'>
<strong>
src/i18n/locale/cmucl-unix.pot
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/i18n/locale/cmucl-unix.pot
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/i18n/locale/cmucl-unix.pot
</span><span style="color: #aaaaaa">@@ -1298,14 +1298,6 @@ msgstr ""
</span>
#: src/code/unix.lisp
msgid ""
<span style="color: #000000;background-color: #ffdddd">-"Unix-getitimer returns the INTERVAL and VALUE slots of one of\n"
-" three system timers (:real :virtual or :profile). On success,\n"
-" unix-getitimer returns 5 values,\n"
-" T, it-interval-secs, it-interval-usec, it-value-secs, it-value-usec."
-msgstr ""
-
-#: src/code/unix.lisp
-msgid ""
</span> "Return a USER-INFO structure for the user identified by UID, or NIL if not "
"found."
msgstr ""
</code></pre>
<br>
</li>
<li id='diff-7'>
<a href='https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5#diff-7'>
<strong>
src/i18n/locale/cmucl.pot
</strong>
</a>
<hr>
<pre class="highlight"><code><span style="color: #000000;background-color: #ffdddd">--- a/src/i18n/locale/cmucl.pot
</span><span style="color: #000000;background-color: #ddffdd">+++ b/src/i18n/locale/cmucl.pot
</span><span style="color: #aaaaaa">@@ -8120,7 +8120,10 @@ msgid "The package named ~S doesn't exist."
</span> msgstr ""
#: src/code/package.lisp
<span style="color: #000000;background-color: #ffdddd">-msgid "Changes the name and nicknames for a package."
</span><span style="color: #000000;background-color: #ddffdd">+msgid ""
+"Replaces the name and nicknames of Package. The old name and all of\n"
+" the old nicknames of Package are eliminated and are replaced by\n"
+" New-Name and New-Nicknames."
</span> msgstr ""
#: src/code/package.lisp
</code></pre>
<br>
</li>
</div>
<div class='footer' style='margin-top: 10px;'>
<p>
—
<br>
<a href="https://gitlab.common-lisp.net/cmucl/cmucl/compare/70f15c09eb7c4cb656ab38026d92d821979449a7...275011da14a17167d5c039047861253550279fe5">View it on GitLab</a>.
<br>
You're receiving this email because of your account on gitlab.common-lisp.net.
If you'd like to receive fewer emails, you can adjust your notification settings.
</p>
</div>
</body>
</html>