#:g1: LispWorksにバグレポートを出す

Posted 2015-09-20 14:02:42 GMT

 LispWorksな日々を送っていますが、バグらしきものを発見したので報告してみることにしました。
まず、バグについてですが、

(eq '資料コード '資料コード)
;=> nil

(eq '操作 '操作)
;=> t 

こんな感じのものです。これだとクラスのスロット名を日本語のシンボルにしたりすると、拾ったり拾わなかったりしてしまいます。

ちょっと探ってみると、どうも、base-charの文字列の場合は問題無いようですが、characterだと駄目な様子。
ちなみに、前のバージョンの6であれば、こんなことはありませんでした。
今バージョンの7から、エンコード周りが色々変更になっているので、その辺りの影響かもしれません。

バグ報告の様式

LispWorksのバグの報告には様式があり、下記のページに詳細が解説されています。

IDEのメニューで、 Help > Report Bug と選択すれば、バグレポートの雛形が生成されるので、これに記入してLispWorksのサポートにメールで送付するみたいです。

今回の場合、上記のコードでは、不確定な要素がありそうなので、できるだけ初期状態で再現できるよう記述してみました。

$ LANG=C /usr/local/lib64/LispWorks/lispworks-7-0-0-amd64-linux -init - -siteinit -

CL-USER 1 > (let ((ja-sym-name0 (map 'string #'code-char '(36039 26009 12467 12540 12489))) (ja-sym-name1 (map 'string #'code-char '(25805 20316)))) (list (eq (intern ja-sym-name0) (intern ja-sym-name0)) (eq (intern ja-sym-name1) (intern ja-sym-name1))))

Error: #\資 (of type CHARACTER) is not of type BASE-CHAR. 1 (abort) Return to level 0. 2 Return to top loop level 0.

Type :b for backtrace or :c <option number> to proceed. Type :bug-form "<subject>" for a bug report template or :? for other options.

CL-USER 2 : 1 > :a

CL-USER 3 > (lw:set-default-character-element-type 'cl:character) CHARACTER

CL-USER 4 > (let ((ja-sym-name0 (map 'string #'code-char '(36039 26009 12467 12540 12489))) (ja-sym-name1 (map 'string #'code-char '(25805 20316)))) (list (eq (intern ja-sym-name0) (intern ja-sym-name0)) (eq (intern ja-sym-name1) (intern ja-sym-name1)))) (NIL T) <== ???

LANG=Cを指定し、base-charcharacterの切り換えをし、日本語の文字も直には入力しないようにします。

まとめ

LispWorks 6系はPersonal Editionしか使ったことはないですが、日本語周りの扱いについてはどうも6の方が調子が良かったような印象です。
返事が来たらまたブログに書こうかなと思っています。
今バージョン中にパッチで改善されることを期待。


HTML generated by 3bmd in LispWorks 7.0.0

comments powered by Disqus