Andrew W. Nosenko wrote:
: Alex Morozov wrote:
: :
: : Достаточно ли сказать ``xemacs -batch -no-site-file -q -f
: : batch-byte-compile *.el'' и получить наилучший результат? Являются ли
: : полученные .elc переносимыми между [свежим] emacs и [свежим] xemacs (если
^^^^^^ ^^^^^^^
Oops! проглядел, что вопрос был не про XEmacs-21.1 vs XEmacs-21.4,
а про GNU Emacs vs XEmacs.
Прсто на всякий случай уточняю -- я говорил про различные версии XEmacs'а.
Что, скорее всего, совсем не то, хотелось узнать.
: : в пояснениях к пакету не указано обратное)?
:
: Компилированные пакеты с
ftp://ftp.xemacs.org/xemacs/packages/ работают
: на обоих 21.1 и 21.4 (они совместимы по быйт-коду), а все пляски и
: проверки на функциональность и версию XEmacs'а, как и на то XEmacs ли
: это вообще, или GNU Emacs проводятся внутри самого пакета автором этого
: пакета (если он, автор, вообще утруждает себя этими проверками и видит в
: них необходимость.)
:
Что же касаемо совместимости GNU Emacs vs XEmacs, то в (xemacs)Intro
мы имеем:
XEmacs provides many powerful ...[skipped by awn]... and is mostly
upwardly compatible with GNU Emacs from the Free Software Foundation
(referred to as "FSF Emacs" in this manual).
Но где проходит граница этого `mostly'?..
Насторожиться заставляет `(lispref)Character Type', который гласит:
In XEmacs version 19, and in all versions of FSF GNU Emacs, a
"character" in XEmacs Lisp is nothing more than an integer. This is
yet another holdover from XEmacs Lisp's derivation from vintage-1980
Lisps; modern versions of Lisp consider this equivalence a bad idea,
and have separate character types. In XEmacs version 20, the modern
convention is followed, and characters are their own primitive types.
(This change was necessary in order for MULE, i.e. Asian-language,
support to be correctly implemented.)
Even in XEmacs version 20, remnants of the equivalence between
characters and integers still exist; this is termed the "char-int
confoundance disease". In particular, many functions such as `eq',
`equal', and `memq' have equivalent functions (`old-eq', `old-equal',
`old-memq', etc.) that pretend like characters are integers are the
same. Byte code compiled under any version 19 Emacs will have all such
functions mapped to their `old-' equivalents when the byte code is read
into XEmacs 20. This is to preserve compatibility--Emacs 19 converts
all constant characters to the equivalent integer during
byte-compilation, and thus there is no other way to preserve byte-code
compatibility even if the code has specifically been written with the
distinction between characters and integers in mind.
Таки образом шанс, что GNU Emacs НЕ сможет прочесть байт-код XEmacs'а
21.xx есть и довольно высок. Но это в теории. А как оно на практике --
кто знает?
--
Andrew W. Nosenko (awn(a)bcs.zp.ua)
Фамильный призрак (c) Елена Носенко