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