Re: [O] (Emacs 23/24 binary compatibility): defstruct, setf

2013-09-05 Thread Jambunathan K
Stefan Monnier monn...@iro.umontreal.ca writes:

 I think existing *.elc files compiled against Emacs-23.2.1 should load
 fine on new Emacs versions.

 It's indeed an incompatibility I introduced when we switched from CL's
 setf to gv.el's setf, because the two work in a very different way.

In simple terms, the problem seems to be a 24.x style `setf' on a 23.x
defstruct.

NEWS has entries on gv.el and setf-s.  I am not sure which of those
entries amount to the above incompatibility.

If we could report on incompatibiliy that would be awesome.  Can the
FIRST EVER setf call make (additional) version checks and report errors.



 Stefan



Re: [O] (Emacs 23/24 binary compatibility): defstruct, setf

2013-09-04 Thread Stefan Monnier
 Does the patch below work for you?
 Yes.  Please install.

Done,


Stefan



Re: [O] (Emacs 23/24 binary compatibility): defstruct, setf

2013-09-03 Thread Stefan Monnier
 I think existing *.elc files compiled against Emacs-23.2.1 should load
 fine on new Emacs versions.

It's indeed an incompatibility I introduced when we switched from CL's
setf to gv.el's setf, because the two work in a very different way.


Stefan



Re: [O] (Emacs 23/24 binary compatibility): defstruct, setf

2013-09-03 Thread Stefan Monnier
 I think existing *.elc files compiled against Emacs-23.2.1 should load
 fine on new Emacs versions.
 It's indeed an incompatibility I introduced when we switched from CL's
 setf to gv.el's setf, because the two work in a very different way.
 In simple terms, the problem seems to be a 24.x style `setf' on a 23.x
 defstruct.

More specifically, the setf and the defstruct need to be compiled with
the same version (either both cl.el, or both gv.el).

 If we could report on incompatibiliy that would be awesome.  Can the
 FIRST EVER setf call make (additional) version checks and report errors.

Does the patch below work for you?


Stefan


=== modified file 'lisp/emacs-lisp/gv.el'
--- lisp/emacs-lisp/gv.el   2013-08-13 02:30:52 +
+++ lisp/emacs-lisp/gv.el   2013-09-04 02:56:26 +
@@ -102,7 +102,11 @@
   ;; Follow aliases.
   (setq me (cons (symbol-function head) (cdr place
   (if (eq me place)
-  (error %S is not a valid place expression place)
+  (error
+   (if (and (symbolp head) (get head 'setf-method))
+   Incompatible place expression needs recompilation: %S
+ %S is not a valid place expression)
+   place)
 (gv-get me do)))
 
 ;;;###autoload