XEmacs and APEL

Katsumi Yamaoka yamaoka @ jpl.org
2002年 7月 23日 (火) 08:38:53 JST


>>>>> In [apel-ja : No.00698]
>>>>>	Shuhei KOBAYASHI <shuhei @ aqua.ocn.ne.jp> wrote:

山岡>   *-maybe が compile-time に既に存在しているものに対して何も
山岡>   しないのは良いのだろうか?

小林さん> 私としては今になって山岡さんからこのような疑問が出てくるのが
小林さん> 驚きです.

たぶんぼくが *-maybe の仕様を正しく把握したのは pym.el に注意書
きを追加 (主に自分用に ^^;;) した 2002年3月です。しかしそれから
も、この仕様で本当にいいの? という疑問はくすぶり続けていました。

小林さん> そもそも *-maybe は, 定義しようとするものが compile-time に
小林さん> 既に存在していた場合には何もしないことを目的として設計されて
小林さん> います. *-maybe propertyを付けなければいけない理由もまさにそ
小林さん> れで, compile-time に存在しているものが自分自身であった場合
小林さん> を検出するためです.
小林さん> ;; APEL になる以前の emu の時代からそうなっていたはずです.

そんなに前からそうだったんですか。^^;;
ぼくの疑念は自分の頑迷さに由来しています。例えば run-time に存在
しないことが多い w3 は、結構たくさんの emulating functions を持っ
ていて、compile-time に単に warning を無くすだけの目的で load す
ることがあります。そういう場合に

(defun-maybe md5 (args) ....)

のような微妙なものを書いてしまうと失敗するので、それは問題ではな
いかと思っていたのです。しかし、たいていの環境には存在している、
でもそうでない場合も確かにあるから何とかしようという場合は、例え
ば XEmacs にある

(macroexpand '(defun-when-void FOO (BAR) BODY))
 => (if (fboundp 'FOO)
	nil
      (defun FOO (BAR)
	BODY))

のようなものを使えばよかったのですよね。

;; ちなみに、現在の APEL には障害の原因になる可能性がある、そう
;; いった微妙なものは、かろうじて無いはずです。でも、ぼくが仕込
;; んだ string-to-char-list (poem-xm.el) は要注意ですね。

山岡> これほど重要な仕様なのだから、何かの決まりがあったんじゃないか

小林さん> 重要というより非常に基本的な仕様ですが, 導入に際して別に何も
小林さん> ありませんでしたね.

小林さん> 山岡さんがこれを重要と思われるのは, これが APEL による障害の
小林さん> 原因と思われているからではないですか?

はい、あきらかに inlining の問題とごっちゃになっていました。それ
と、誤った使い方をした場合の *-maybe は、compile した Emacs とは
別の近隣の版の Emacs を使ったときに問題が起きていましたので。

;; XEmacs with/without Mule の件は、ちょっと話が違いますが。

小林さん> 最初に書いたように, APEL による障害の原因はAPEL の *.elc が
小林さん> compile 時の環境によって変化することではなく, その変化が他の
小林さん> package の *.elc にも含まれてしまうことの方だと私は思ってい
小林さん> ます.

小林さん> この辺の問題に関しては最初に XEmacs Packages で問題が報告さ
小林さん> れた頃から私が指摘していますが([Elips:0002861] な
小林さん> ど. [apel-ja:00036] もたぶんそう?),ほとんど反応はありません
小林さん> でしたね. ちなみに以下は [Elips:0002861] から.

>>>>> In <by90am7681.fsf @ bolzano.math.ethz.ch>,
>>>>> Jan Vroonhof <vroonhof @ math.ethz.ch> wrote:
> The problem seems to be that mime-charset-to-coding-system is a
> defsubst which means that bytecompiling will inline it. However that
> is wrong in compatibility code.

>>>>> In <87wvy6icj4.fsf @ pc-hrvoje.srce.hr>,
>>>>> Hrvoje Niksic <hniksic @ srce.hr> wrote:
> Bad bad bad.  defsubst'ing a function is almost always wrong.  It
> should be done _only_ when you know there's a non-negligible impact
> on performance.  mime-charset-to-coding-system doesn't sound like
> such a case at all.

うーむ、ずいぶん前のことなんですねえ。こういった重要な情報を出し
ていただいても、理解できる頭が無いと何にもならないのだなあ。

いや、特にぼくの場合は毎度のことで、先達のみなさんにはご迷惑のか
けっぱなしですが、お付き合い下さって本当にありがとうございました。

XEmacs の方には後で一筆書きます。
-- 
Katsumi Yamaoka <yamaoka @ jpl.org>




More information about the APEL-ja mailing list