Hey Peeps!
First up, I wish to apologise for not jumping on this when it first
happened (I think the changes that are the root cause happened quite a
while ago).
OK, so here's the problem... elisp that has been byte-compiled with
XEmacs 21.5 cannot be loaded with XEmacs 21.4, or SXEmacs.
Why? Because...
XEmacs 21.5: (special-form-p 'throw) => t
XEmacs 21.4: (special-form-p 'throw) => nil
SXEmacs: (special-form-p 'throw) => nil
It would seem that somebody thought it was a good idea to make Fthrow()
take "possibly unevalled" arguments. I don't understand the reasoning
behind that and I'd certainly love to know.
However, that by itself, isn't the whole reason. XEmacs 21.5 has a
#'byte-compile-throw in bytecomp.el (which 21.4 and SXEmacs don't have)
that injects a test into the top of ELCs...
(or (and (featurep 'xemacs) (null (function-max-args 'throw)))
(error "Loading this file requires xemacs, (null (function-max-args
'throw))"))
That test fails for 21.4 and SXEmacs because our Fthrow() doesn't use
UNEVALLED args.
May I ask, what is the thinking behind this test? If it is to ensure
that only certain versions of (S)XEmacs can load the lib wouldn't it be
far easier (and give finer control) to inject something like this...
(or (and (featurep 'xemacs)
(emacs-version>= 21 5 35))
(error "Loading this file requires XEmacs >= 21.5.35"))
It just seems really odd (and annoying for me) that XEmacs would rely on
the definition of a function as a means of restricting where a elisp can
be loaded.
Explain it to me guys so that I can decide what, if anything, SXEmacs
needs to do.
For further reading see:
http://issues.sxemacs.org/show_bug.cgi?id=171
though I don't think that there's anything there that I haven't covered
here.
Thanks!
--
|---<Steve Youngs>---------------<GnuPG KeyID: A94B3003>---|
| SXEmacs - The only _______ you'll ever need. |
| Fill in the blank, yes, it's THAT good! |
|------------------------------------<steve(a)sxemacs.org>---|
_______________________________________________
XEmacs-Beta mailing list
XEmacs-Beta(a)xemacs.org
http://lists.xemacs.org/mailman/listinfo/xemacs-beta