[flexi-streams-devel] flexi-streams 1.0.3 and CMUCL 19e
Eugene Ossintsev
eugoss at gmail.com
Wed Jul 16 03:00:31 UTC 2008
Hi,
I was trying to compile flexi-streams 1.0.3 with CMUCL 19e and it stopped with
the following message in ascii.lisp :
--------------------------------------------------------
Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
65533 is not of type (UNSIGNED-BYTE 8)
[Condition of type TYPE-ERROR]
--------------------------------------------------------
As I see, in MAKE-DECODING-TABLE the function MAKE-ARRAY has
:element-type 'char-code-integer.
And CHAR-CODE-INTEGER is defined as
--------------------------------------------------------
(deftype char-code-integer ()
"The subtype of integers which can be returned by the function CHAR-CODE."
'(integer 0 #.(1- char-code-limit)))
--------------------------------------------------------
But in CMUCL CHAR-CODE-LIMIT is 256, that is not enough to hold 65533.
If I modify mapping.lisp the following way (see also the attached patch):
--------------------------------------------------------
(deftype char-code-integer ()
"The subtype of integers which can be returned by the function CHAR-CODE."
- '(integer 0 #.(1- char-code-limit)))
+ #-:cmu '(integer 0 #.(1- char-code-limit))
+ #+:cmu '(integer 0 65533))
--------------------------------------------------------
it's compiled with CMUCL successfully and a simple Hunchentoot web application
of mine runs without any problem.
But if I try to perform the tests from flexi-streams/test I get a bunch of
successful results
--------------------------------------------------------
FLEXI-STREAMS-TEST> (run-tests)
Test (using COPY-STREAM) "kafka_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [INPUT]
--> (:UTF-8 :EOL-STYLE :LF) [OUTPUT].
Test (using COPY-STREAM) "kafka_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [IO]
--> (:UTF-8 :EOL-STYLE :LF) [OUTPUT].
Test (using COPY-STREAM) "kafka_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [INPUT]
--> (:UTF-8 :EOL-STYLE :LF) [IO].
[[ skipped; too many to put them all here ]]
--------------------------------------------------------
followed by some failures (all with the hebrew* files):
--------------------------------------------------------
Test (using COPY-STREAM) "hebrew_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [INPUT]
--> (:UTF-8 :EOL-STYLE :LF) [OUTPUT].
Test failed!!!
[[ skipped ]]
Test (using COPY-STREAM) "hebrew_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [IO]
--> (:UTF-8 :EOL-STYLE :CRLF) [IO].
Test failed!!!
Test (using COPY-STREAM) "hebrew_utf8_lf.txt" (:UTF-8 :EOL-STYLE :LF) [INPUT]
--> (:ISO-8859-8 :EOL-STYLE :LF) [OUTPUT].
--------------------------------------------------------
and eventually, hello the debugger!
--------------------------------------------------------
#\å (code NIL) is not in this encoding.
[Condition of type EXTERNAL-FORMAT-ENCODING-ERROR]
Restarts:
0: [ABORT] Return to SLIME's top level.
1: [ABORT] Return to Top-Level.
Backtrace:
0: (FLEXI-STREAMS::SIGNAL-ENCODING-ERROR #<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT
(:ISO-8859-8 :EOL-STYLE :LF) {5A537DA5}> "~S (code ~A) is not in this encoding."
#\å NIL)
1: (FLEXI-STREAMS::WRITE-SEQUENCE* #<#1=unavailable-arg> #<#1#> #<#1#> #<#1#>
...)
2: (TRIVIAL-GRAY-STREAMS:STREAM-WRITE-SEQUENCE #<#1=unavailable-arg> #<#1#>
#<#1#> #<#1#> ...)
3: (LISP::WRITE-LINE* ":åèÐÔ êÐÕ ÝÙÞéÔ êÐ ÝÙÔÜÐ ÐèÑ êÙéÐèÑ Ð 1"
#<FLEXI-OUTPUT-STREAM {59392C6D}> 0 41)
4: (COPY-STREAM #<Stream for file
"/home/eugene/lisp/flexi-streams-1.0.3/test/hebrew_utf8_lf.txt">
#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) {5A537D75}> #<Stream
for file "/tmp/odd-streams-test/hebrew_latin8_lf.txt">
#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :LF) {5A537DA5}>)
5: (COPY-FILE
#P"/home/eugene/lisp/flexi-streams-1.0.3/test/hebrew_utf8_lf.txt"
#<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT (:UTF-8 :EOL-STYLE :LF) {5A537D75}>
#P"/tmp/odd-streams-test/hebrew_latin8_lf.txt"
#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :LF) {5A537DA5}> ...)
6: (COMPARE-FILES "hebrew_utf8_lf.txt" #<FLEXI-STREAMS::FLEXI-UTF-8-FORMAT
(:UTF-8 :EOL-STYLE :LF) {5A537D75}> "hebrew_latin8_lf.txt"
#<FLEXI-STREAMS::FLEXI-8-BIT-FORMAT (:ISO-8859-8 :EOL-STYLE :LF) {5A537DA5}>)
7: (RUN-TESTS)
--more--
--------------------------------------------------------
I don't know if it's the same or similar for the other Common Lisp
implementations, but that patch allows flexi-streams at least to be compiled
with CMUCL.
I know it's far from being perfect. I hope there are much more experienced
people here, who know how to fix it.
- Eugene
-------------- next part --------------
A non-text attachment was scrubbed...
Name: mapping.lisp.diff
Type: text/x-diff
Size: 453 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/flexi-streams-devel/attachments/20080715/401d428c/attachment.diff>
More information about the Flexi-streams-devel
mailing list