[Arcana] 23 vs 21 .elc

Roland McGrath roland at frob.com
Fri Aug 14 16:09:23 CDT 2009

So I know I'm behind the times for just getting to this now, but I'm
starting to use 23.1 all of a sudden (thanks Fedora 11 "stable" updates!).

In past transitions it's been a while of hacking to get my emacs up without
-q at all, i.e. without an error during startup.  Then usually most of
another day to disable all the new default angry fruit salad that I already
supposedly had disabled but they've differently broken the configuration
for.  Then it takes at least a couple weeks of working normally to stumble
across all the random little bits they have broken and find work-arounds.

This time I got stuck pretty early in the process.  The workstation in
question was previously using 22.3.1, and now has 23.1.  My personal elisp
world is shared between different installations of different versions on
different hosts (I keep it all in cvs).  The other installation that I
still actually about interoperating with is 21.4.1.

What I've started getting is: (invalid-read-syntax "invalid multibyte form")
from loading .elc files.

The first few this bit were .elc files in my repository compiled by 19.34.2,
in 1993.  We're supposed to have backward compatibility of this sort.
But fine, whatever.  16 years was a good run for those compiled files.
I just recompiled those ones in 21.4.1 as if 23 weren't unforgivably broken
because of this utter failure in the moral mandate of .elc compatibility.

But now I'm getting that error in 23.1 for .elc files I just recompiled
today in 21.4.1.  This is some shit up with which I cannot put.

A file in question does have this header:

	;;; This file contains multibyte non-ASCII characters
	;;; and therefore cannot be loaded into Emacs 19.
	(if (and (boundp 'emacs-version)
		 (< (aref emacs-version (1- (length emacs-version))) ?A)
		 (or (and (boundp 'epoch::version) epoch::version)
		     (string-lessp emacs-version "20")))
	    (error "`bbdb-vm.el' was compiled for Emacs 20 or later"))

though hell if I know why.  I'm pretty sure there are no non-ascii
characters in the elisp source.  So, there are at least two wrongnesses.

1. 23 fails to load an .elc file that 22 loads fine.  Wtf?

2. 21 compiles multibyte turds into .elc files for no reason. (?)

Given that 21 is 21 and time has moved on, I'm not so offended by #2.
It might be nice to find a way around that.

#1 is deeply offensive on intrinsic grounds.  Heads must roll.
Which is to say, I hope to find a way to resolve it with defadvice and rude
comments, and then never bother to report it to bug-gnu-emacs, just like
every other past offense worthy of summary execution that the blasphemous
third millenium Emacs maintenance cabal has visited upon the faithful.

It's entirely plausible that one or the other of these issues is provoked
by some hack I've forgotten about.  If so, it's surely one I added to work
around some unforgivable multibyte turd bug of the past.  But how the hell
could I find it if that's so?  The strings "coding-system" and "charset"
do not in any of my sources.



More information about the Arcana mailing list