patch for allegro8 (was: Re: [asdf-devel] Ready to release?)

Dave Cooper david.cooper at genworks.com
Sat Oct 19 15:06:27 UTC 2013


On Fri, Oct 18, 2013 at 6:11 PM, Faré <fahree at gmail.com> wrote:

>
> I'm curious about what happens to string with non-latin1 characters in
> them:
> do they cause the loading to abort, or are they interned as string
> with different lengths
> depending on the unicode support? (Similarly for latin1 strings that
> are malformed as utf-8.)



For attached file unicode.lisp:

on Linux:

In mlisp:
=======
cl-user> (excl:locale-external-format excl:*locale*)
#<external-format :utf8 [(crlf-base-ef :utf8)] @ #x2013f322>
cl-user> (load (compile-file "/tmp/unicode.lisp"))
;;; Compiling file /tmp/unicode.lisp
;;; Writing fasl file /tmp/unicode.fasl
;;; Fasl write complete
; Fast loading /tmp/unicode.fasl
t
cl-user> *ch-string*
"选项"
cl-user> (aref *ch-string* 0)
#\选
cl-user> (aref *ch-string* 1)
#\项
cl-user> (char-code (aref *ch-string* 0))
36873
cl-user> (char-code (aref *ch-string* 1))
39033
cl-user>



then in alisp8:
============
CL-USER> (excl:locale-external-format excl:*locale*)
#<EXTERNAL-FORMAT :LATIN1 [(CRLF-BASE-EF :LATIN1)] @ #x20094152>
CL-USER> (load "/tmp/unicode.fasl")
; Fast loading /tmp/unicode.fasl
T
CL-USER> *ch-string*
"??"
CL-USER> (aref *ch-string* 0)
#\?
CL-USER> (aref *ch-string* 1)
#\?
CL-USER> (char-code (aref *ch-string* 0))
63
CL-USER> (char-code (aref *ch-string* 1))
63
CL-USER> (char-code (aref *ch-string* 2))
; Evaluation aborted on #<TYPE-ERROR @ #x224ad05a>.
CL-USER> (load (compile-file "/tmp/unicode.lisp"))
;;; Compiling file /tmp/unicode.lisp
;;; Writing fasl file /tmp/unicode.fasl
;;; Fasl write complete
; Fast loading /tmp/unicode.fasl
T
CL-USER> *ch-string*
"选项"
CL-USER> (aref *ch-string* 0)
#\é
CL-USER> (aref *ch-string* 1)
#\%null
CL-USER> (aref *ch-string* 2)
#\%tab
CL-USER> (aref *ch-string* 3)
#\é
CL-USER> (aref *ch-string* 4)
#\¡
CL-USER> (aref *ch-string* 5)
#\¹
CL-USER> (aref *ch-string* 6)
; Evaluation aborted on #<TYPE-ERROR @ #x220d29f2>.
CL-USER> (char-code (aref *ch-string* 0))
233
CL-USER> (char-code (aref *ch-string* 1))
128
CL-USER> (char-code (aref *ch-string* 2))
137
CL-USER> (char-code (aref *ch-string* 3))
233
CL-USER> (char-code (aref *ch-string* 4))
161
CL-USER> (char-code (aref *ch-string* 5))
185


On Windows:

in mlisp:
=======

cl-user> (excl:locale-external-format excl:*locale*)
#<external-format :|1252| ['(:e-crlf :1252-base)] @ #x202bda2a>
cl-user> (load (compile-file "~/genworks/tmp/unicode.lisp" :external-format
:utf-8))
;;; Compiling file C:\Users\dcooper8\genworks\tmp\unicode.lisp
;;; Writing fasl file C:\Users\dcooper8\genworks\tmp\unicode.fasl
;;; Fasl write complete
; Fast loading C:\Users\dcooper8\genworks\tmp\unicode.fasl
t


;;;
;;;
;;;
;;  The rest is the same as Linux -- but note that on Windows you have to
;;  say (compile-file ... :external-format :utf-8), because the default
;;  external-format is '(:e-crlf :1252-base) while on Linux it's already
;; (crlf-base-ef :utf8)  (at least in my locale).
;;



I'm not sure how to make a latin1 string which is malformed as utf-8.



-- 
My Best,

Dave Cooper, Genworks Support
david.cooper at genworks.com, dave.genworks.com(skype)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20131019/cc89893b/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: unicode.lisp
Type: application/octet-stream
Size: 89 bytes
Desc: not available
URL: <https://mailman.common-lisp.net/pipermail/asdf-devel/attachments/20131019/cc89893b/attachment.obj>


More information about the asdf-devel mailing list