This is a pseudo-issue to inform about recent problematic evolution of upstream:
http://git.kpe.io/?p=cl-base64.git;a=summary
git clone http://git.kpe.io/cl-base64.git
Recently, upstream introduced incompatible changes:
The encoder and decoder API has been broken:
- functions named
BASE64-STRING-STRING have been renamed to BASE64-STRING-TO-STRING,
- a bug in the creation of the symbols has been introduced by building the symbol name with
FORMAT:
> (defmacro define-base64-decoder (hose sink)
> `(defun ,(intern (format nil "~A-~A-~A-~A" '#:base64 hose '#:to sink))
< (defmacro def-base64-stream-to-* (output-type)
< `(defun ,(intern (concatenate 'string (symbol-name :base64-stream-to-)
< (symbol-name output-type)))
Which creates functions named |base64-string-to-string| instead of
BASE64-STRING-TO-STRING when *print-case* is set to:downcase (and
possibly with other results with other settings of the global
variables).
cl-user> (lspack :cl-base64 t)
CL-BASE64
Symbols: 24 exported, 1098 total.
Nicknames: BASE64
Uses: COMMON-LISP
Exported: *URI-DECODE-TABLE* *URI-ENCODE-TABLE*
+DECODE-TABLE+ +URI-DECODE-TABLE+
BAD-BASE64-CHARACTER BASE64-ERROR
BASE64-STREAM-TO-INTEGER BASE64-STREAM-TO-STREAM
BASE64-STREAM-TO-STRING BASE64-STREAM-TO-USB8-ARRAY
BASE64-STRING-TO-INTEGER BASE64-STRING-TO-STREAM
BASE64-STRING-TO-STRING BASE64-STRING-TO-USB8-ARRAY
INCOMPLETE-BASE64-DATA INTEGER-TO-BASE64-STREAM
INTEGER-TO-BASE64-STRING MAKE-DECODE-TABLE
STREAM-TO-BASE64-STREAM STREAM-TO-BASE64-STRING
STRING-TO-BASE64-STREAM STRING-TO-BASE64-STRING
USB8-ARRAY-TO-BASE64-STREAM
USB8-ARRAY-TO-BASE64-STRING
nil
cl-user> (apropos "BASE64-STRING-TO-STRING")
cl-base64:base64-string-to-string
cl-base64::|base64-string-to-string| F
:base64-string-to-string V :base64-string-to-string
; No value
cl-user>
Furthermore, the current quicklisp release (2021-06-30), contains an intermediate stage where the bug of interning with format is introduced, but the renaming is not yet (despite the last commit on the upstream dated 2020-09-30).
Hunchentoot uses the old API, ie. is compatible with our version, but not with the current one in quicklisp.
Have fun!
This is a pseudo-issue to inform about recent problematic evolution of upstream:
http://git.kpe.io/?p=cl-base64.git;a=summary
Recently, upstream introduced incompatible changes:
The encoder and decoder API has been broken:
BASE64-STRING-STRINGhave been renamed toBASE64-STRING-TO-STRING,FORMAT:Which creates functions named
|base64-string-to-string|instead ofBASE64-STRING-TO-STRINGwhen*print-case*is set to:downcase(andpossibly with other results with other settings of the global
variables).
Furthermore, the current quicklisp release (2021-06-30), contains an intermediate stage where the bug of interning with format is introduced, but the renaming is not yet (despite the last commit on the upstream dated 2020-09-30).
Hunchentoot uses the old API, ie. is compatible with our version, but not with the current one in quicklisp.
Have fun!