New Upstream Release - cl-esrap

Ready changes

Summary

Merged new upstream version: 20230422.gitd806138 (was: 20211008.gitc99c33a).

Resulting package

Built on 2023-06-10T21:55 (took 8m50s)

The resulting binary packages can be installed (if you have the apt repository enabled) by running one of:

apt install -t fresh-releases cl-esrap

Diff

diff --git a/debian/changelog b/debian/changelog
index 7ec9d8e..0a75155 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,4 +1,4 @@
-cl-esrap (20211008.gitc99c33a-2) UNRELEASED; urgency=medium
+cl-esrap (20230422.gitd806138-1) UNRELEASED; urgency=medium
 
   [ Debian Janitor ]
   * Set upstream metadata fields: Bug-Database, Bug-Submit, Repository-Browse.
@@ -7,7 +7,10 @@ cl-esrap (20211008.gitc99c33a-2) UNRELEASED; urgency=medium
   [ Sébastien Villemot ]
   * Remove myself from Uploaders
 
- -- Debian Janitor <janitor@jelmer.uk>  Wed, 11 Jan 2023 21:20:45 -0000
+  [ Debian Janitor ]
+  * New upstream release.
+
+ -- Debian Janitor <janitor@jelmer.uk>  Sat, 10 Jun 2023 21:46:54 -0000
 
 cl-esrap (20211008.gitc99c33a-1) unstable; urgency=medium
 
diff --git a/debian/patches/doc-asdf-cache.patch b/debian/patches/doc-asdf-cache.patch
index 43f79a2..9997499 100644
--- a/debian/patches/doc-asdf-cache.patch
+++ b/debian/patches/doc-asdf-cache.patch
@@ -5,8 +5,10 @@ Forwarded: not-needed
 Last-Update: 2021-12-20
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/doc/Makefile
-+++ b/doc/Makefile
+Index: cl-esrap.git/doc/Makefile
+===================================================================
+--- cl-esrap.git.orig/doc/Makefile
++++ cl-esrap.git/doc/Makefile
 @@ -6,13 +6,14 @@ clean:
  	rm -rf include
  	rm -f  *.pdf *.html *.info
diff --git a/debian/patches/drop-with-current-source-form.patch b/debian/patches/drop-with-current-source-form.patch
index b8107a3..bf713e2 100644
--- a/debian/patches/drop-with-current-source-form.patch
+++ b/debian/patches/drop-with-current-source-form.patch
@@ -7,8 +7,10 @@ Forwarded: not-needed
 Last-Update: 2021-12-20
 ---
 This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
---- a/esrap.asd
-+++ b/esrap.asd
+Index: cl-esrap.git/esrap.asd
+===================================================================
+--- cl-esrap.git.orig/esrap.asd
++++ cl-esrap.git/esrap.asd
 @@ -42,8 +42,7 @@
    :bug-tracker      "https://github.com/scymtym/esrap/issues"
    :source-control   (:git "https://github.com/scymtym/esrap.git")
@@ -19,8 +21,10 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
    :components       ((:module     "early"
                        :pathname   "src"
                        :serial     t
---- a/src/macros.lisp
-+++ b/src/macros.lisp
+Index: cl-esrap.git/src/macros.lisp
+===================================================================
+--- cl-esrap.git.orig/src/macros.lisp
++++ cl-esrap.git/src/macros.lisp
 @@ -169,7 +169,6 @@ for use with IGNORE."
          (use-cache (singleton-option 'defrule form :use-cache
                                       'cache-policy :default :unless-trivial)))
@@ -71,8 +75,10 @@ This patch header follows DEP-3: http://dep.debian.net/deps/dep3/
      (values transform around (funcall when)
              (funcall error-report) (funcall use-cache))))
  
---- a/src/package.lisp
-+++ b/src/package.lisp
+Index: cl-esrap.git/src/package.lisp
+===================================================================
+--- cl-esrap.git.orig/src/package.lisp
++++ cl-esrap.git/src/package.lisp
 @@ -22,9 +22,6 @@
     #:cl
     #:alexandria)
diff --git a/src/cache/packrat.lisp b/src/cache/packrat.lisp
index 9b01ccf..9e616a1 100644
--- a/src/cache/packrat.lisp
+++ b/src/cache/packrat.lisp
@@ -73,6 +73,17 @@
           (t
            (values (assoc-value (cdr cell) symbol :test #'eq))))))
 
+;;; Like ALEXANDRIA:ALIST-HASH-TABLE but quicker because it assumes
+;;; that there are no duplicate keys (of which alists prefer the
+;;; first) and it allows the call to MAKE-HASH-TABLE to be optimized.
+(defmacro alist-hash-table/no-dups (alist &rest hash-table-initargs)
+  (declare (optimize speed))
+  (with-gensyms (table cons)
+    `(let ((,table (make-hash-table ,@hash-table-initargs)))
+       (dolist (,cons ,alist)
+         (setf (gethash (car ,cons) ,table) (cdr ,cons)))
+       ,table)))
+
 (declaim (ftype (function (t symbol input-position chunk-cache) (values t &optional))
                 (setf cached)))
 (defun (setf cached) (result symbol position cache)
@@ -115,8 +126,10 @@
                ;; entries and we need another one, upgrade to
                ;; HASH-TABLE, then store the new entry.
                ((= count +packrat-hash-table-switch-point+)
-                (let ((table (setf (aref chunk position-2)
-                                   (alist-hash-table entries :test #'eq))))
+                (let ((table (alist-hash-table/no-dups
+                              entries :test #'eq
+                              :size #.(* 2 +packrat-hash-table-switch-point+))))
+                  (setf (aref chunk position-2) table)
                   (setf (gethash symbol table) result)))
                ;; When there are less than
                ;; +PACKRAT-HASH-TABLE-SWITCH-POINT+ entries and we
diff --git a/src/conditions.lisp b/src/conditions.lisp
index e2beede..d0ec31b 100644
--- a/src/conditions.lisp
+++ b/src/conditions.lisp
@@ -1,5 +1,5 @@
 ;;;; Copyright (c) 2007-2013 Nikodemus Siivola <nikodemus@random-state.net>
-;;;; Copyright (c) 2012-2016 Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
+;;;; Copyright (c) 2012-2022 Jan Moringen <jmoringe@techfak.uni-bielefeld.de>
 ;;;;
 ;;;; Permission is hereby granted, free of charge, to any person
 ;;;; obtaining a copy of this software and associated documentation files
@@ -103,7 +103,8 @@ the error occurred."))
              :initform nil))
   (:default-initargs :result (required-argument :result))
   (:documentation
-   "This error is signaled when a parse attempt fails in a way that ."))
+   "This error is signaled when a parse attempt fails because the input
+text does not conform to the grammar."))
 
 (defmethod esrap-error-position ((condition esrap-parse-error))
   (result-position (esrap-parse-error-context condition)))
diff --git a/src/context.lisp b/src/context.lisp
index 46c8cd4..e698b4b 100644
--- a/src/context.lisp
+++ b/src/context.lisp
@@ -116,10 +116,11 @@
              (progn ,@body)
            (setf (context-nonterminal-stack ,context) ,previous))))))
 
-;;; SYMBOL and POSITION must all lexical variables!
+;;; SYMBOL and POSITION must all be lexical variables!
 (defmacro with-cached-result ((symbol position &optional (text nil)) &body forms)
   (with-gensyms (context cache heads result)
     `(flet ((do-it (position) ,@forms))
+       (declare (dynamic-extent #'do-it))
        (let* ((,context *context*)
               (,cache   (context-cache ,context))
               (,heads   (context-heads ,context))

Debdiff

File lists identical (after any substitutions)

No differences were encountered in the control files

More details

Full run details