XEmacs and APEL
Katsumi Yamaoka
yamaoka @ jpl.org
2002年 7月 17日 (水) 18:09:22 JST
こんにちは山岡です。
ぼくが XEmacs の関係者に対して発言したことが APEL としての公式見
解だと見なされてしまうのは本意ではないので、改めて変な英語ではな
く、それよりはかなりマシな日本語で書かせていただきます。間違いが
あればご指摘をお願いします。
XEmacs には cvs.m17n.org で開発されている本編の APEL とは内容が
異なる package が存在しており、現在の最新は
ftp://ftp.xemacs.org/packages/apel-1.23-pkg.tar.gz
です。これには大雑把に言って二つの問題があります。
1. XEmacs with Mule で byte-compile されているので、XEmacs
without Mule で使われた場合に齟齬を生じる。
2. 古い std11.el と std11-parse.el が含まれていて、現在は FLIM
に移設かつ一本化された std11.el と互換性が無い。
1. は、例えば pccl.elc を使う emacs-w3m が apel-1.22-pkg 以前の
版では XEmacs without Mule には無い ccl の機能を要求するので、
(XEmacs with Mule で byte-compile したものでも) 単に Mule 機能が
無かったら要求 (require) しないように対策が行なわれました。
またつい最近では、mcs-xm.elc において defsubst で定義されている
関数 encode-mime-charset-string が、XEmacs without Mule で byte-
compile した liece などの他のプログラムに埋め込まれてしまうため
に害を及ぼす問題の対策が行なわれました。
2. については FLIM や SEMI を使う Wanderlust や T-gnus などのユー
ザの皆さんには半ば常識になっているように、XEmacs の APEL パッケー
ジは消して、新たに本編の APEL をインストールすることが必須になっ
ています。
2. は std11 という独立したモジュールをただ入れ替えるだけで基本的
には解決できる問題だと思っているのですが、1. は少々深刻です。
ぼくは現在では 1. と根が同じだと思っている別の問題をここで発言し
たことがあります。それは、defvar-maybe や defun-maybe で定義した
変数や関数が byte-compile を行なう時点ですでに存在していた場合は、
それらのコードが .elc ファイルの中に生成されないということでした。
(後半に例)
以前はそういうことをバグ、またはやっかいな問題だと思っていたもの
ですが、実はそれこそが static.el に代表される APEL の方針なので
はないかと考えが変わりつつあります。以下は最近 XEmacs with Mule
で compile された APEL が、XEmacs without Mule で引き起こすバグ
の指摘に対して発言した内容です。これは反論と言うよりは、確信犯的
なほのめかしを目的としています。
この問題は APEL の開発者の志向と XEmacs パッケージの管理方針の
違いに起因している。私の理解するところでは、すべての APEL の関
数は原則として特定の版の Emacs 用に提供される。例えば Emacs
18.59 専用、XEmacs 21.5-b7 専用、というふうに。その目的は高い
性能を実現することで、可搬性ではない。それゆえに APEL の開発者
はユーザに、それぞれの Emacs の版ごとに APEL をコンパイルして
インストールすることを求める。例えば APEL が XEmacs 21.4 以前
にだけ存在する string-to-char-list という関数を以下のように提
供するとしよう:
(defun-maybe string-to-char-list (str)
(mapcar #'identity str))
XEmacs の APEL パッケージが XEmacs 21.4 でコンパイルされると、
この関数の byte-code は生成されない。XEmacs 21.5 のユーザはど
うしたら良いのか?
将来の XEmacs には三つの選択肢があるのではないだろうか:
1. APEL をそれぞれの版の XEmacs に含める。
2. APEL を XEmacs パッケージから外す。APEL が必要なユーザは、
自分でインストールしなければならない。
3. 可搬性を持たせるために、性能を犠牲にしてすべての APEL のモ
ジュールを書き直す。
関連記事:
http://list-archive.xemacs.org/xemacs-beta/200207/msg00259.html
http://list-archive.xemacs.org/xemacs-patches/200207/msg00127.html
http://list-archive.xemacs.org/xemacs-patches/200207/msg00128.html
http://list-archive.xemacs.org/xemacs-patches/200207/msg00137.html
(apel-en @ m17n.org: 00016)
http://list-archive.xemacs.org/xemacs-beta/200207/msg00310.html
http://list-archive.xemacs.org/xemacs-beta/200207/msg00315.html
http://list-archive.xemacs.org/xemacs-beta/200207/msg00316.html
http://list-archive.xemacs.org/xemacs-beta/200207/msg00318.html
http://list-archive.xemacs.org/xemacs-beta/200207/msg00319.html
http://list-archive.xemacs.org/xemacs-beta/200207/msg00320.html
--
Katsumi Yamaoka <yamaoka @ jpl.org>
More information about the APEL-ja
mailing list