GNU bug report logs - #22291
25.1.50; REGRESSION: Emacs 24.3 breaks loading cl-macs to get macro `case'

Previous Next

Package: emacs;

Reported by: Drew Adams <drew.adams <at> oracle.com>

Date: Sat, 2 Jan 2016 03:24:01 UTC

Severity: wishlist

Tags: notabug, wontfix

Found in version 25.1.50

Done: Eli Zaretskii <eliz <at> gnu.org>

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 22291 in the body.
You can then email your comments to 22291 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sat, 02 Jan 2016 03:24:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Drew Adams <drew.adams <at> oracle.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 02 Jan 2016 03:24:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 25.1.50; REGRESSION: Emacs 24.3 breaks loading cl-macs to get macro
 `case'
Date: Fri, 1 Jan 2016 19:23:03 -0800 (PST)
This regression was introduced in Emacs 24.3.  Prior to that, code could
use (require 'cl-macs) to have macros such as `case' provided at
runtime.

(eval-when-compile (require 'cl)) still works, of course.  But neither
(eval-when-compile (require 'cl-macs)) nor (require 'cl-macs) defines
macro `case', starting with Emacs 24.3.

This gratuitously breaks any existing code that loads cl-macs expecting
to get the definition of `case'.  This breakage should not be necessary.


In GNU Emacs 25.1.50.1 (i686-pc-mingw32)
 of 2015-12-10
Bzr revision: 6148555ee5a3d0139ae517803718b3e0357933c7
Windowing system distributor `Microsoft Corp.', version 6.1.7601
Configured using:
 `configure --prefix=/c/Devel/emacs/snapshot/trunk --enable-checking=yes
 --enable-check-lisp-object-type --without-compress-install 'CFLAGS=-Og
 -ggdb3' LDFLAGS=-Lc:/Devel/emacs/lib 'CPPFLAGS=-DGC_MCHECK=1
 -Ic:/Devel/emacs/include''




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sat, 02 Jan 2016 08:38:01 GMT) Full text and rfc822 format available.

Message #8 received at 22291 <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Drew Adams <drew.adams <at> oracle.com>
Cc: 22291 <at> debbugs.gnu.org
Subject: Re: bug#22291: 25.1.50;
 REGRESSION: Emacs 24.3 breaks loading cl-macs to get macro `case'
Date: Sat, 02 Jan 2016 10:37:21 +0200
> Date: Fri, 1 Jan 2016 19:23:03 -0800 (PST)
> From: Drew Adams <drew.adams <at> oracle.com>
> 
> This regression was introduced in Emacs 24.3.  Prior to that, code could
> use (require 'cl-macs) to have macros such as `case' provided at
> runtime.
> 
> (eval-when-compile (require 'cl)) still works, of course.  But neither
> (eval-when-compile (require 'cl-macs)) nor (require 'cl-macs) defines
> macro `case', starting with Emacs 24.3.
> 
> This gratuitously breaks any existing code that loads cl-macs expecting
> to get the definition of `case'.  This breakage should not be necessary.

From NEWS.24, under "Changes in Specialized Modes and Packages in
Emacs 24.3":

  *** CL's main entry is now (require 'cl-lib).
  `cl-lib' is like the old `cl' except that it uses the namespace cleanly;
  i.e., all its definitions have the "cl-" prefix (and internal definitions
  use the "cl--" prefix).

  If `cl' provided a feature under the name `foo', then `cl-lib'
  provides it under the name `cl-foo' instead; with the exceptions of the
  few `cl' definitions that had to use `foo*' to avoid conflicts with
  pre-existing Elisp entities.  These have been renamed to `cl-foo'
  rather than `cl-foo*'.

IOW, this was a deliberate change, and you should either use 'cl-case'
with Emacs versions since 24.3, or use 'cl' instead of 'cl-macs'.

OK?




Added indication that bug 22291 blocks19759 Request was from Eli Zaretskii <eliz <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 02 Jan 2016 13:40:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sat, 02 Jan 2016 17:29:02 GMT) Full text and rfc822 format available.

Message #13 received at 22291 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Eli Zaretskii <eliz <at> gnu.org>, Drew Adams <drew.adams <at> oracle.com>
Cc: 22291 <at> debbugs.gnu.org
Subject: RE: bug#22291: 25.1.50; REGRESSION: Emacs 24.3 breaks loading cl-macs
 to get macro `case'
Date: Sat, 2 Jan 2016 09:28:02 -0800 (PST)
> IOW, this was a deliberate change, and you should either use 'cl-case'
> with Emacs versions since 24.3, or use 'cl' instead of 'cl-macs'.

I know all of that.  Just because something was decided does not mean
that that decision was the best decision possible, or even wise.

This is a gratuitous change that breaks backward compatibility.  That's
the point.  Gratuitous - unnecessary.

Personally I tend to require `cl', and at compile-time only, to get
such macros.  But it is entirely reasonable that someone might require
`cl-macs' - at runtime or compile time - to get such a macro definition.

And if some user does not compile the code that requires the library
that provides the macro, then s?he will now get the entire `cl' at
runtime, instead of getting only the much-smaller `cl-macs' at runtime.

> OK?

Not IMHO.




Reply sent to Eli Zaretskii <eliz <at> gnu.org>:
You have taken responsibility. (Sat, 02 Jan 2016 17:46:02 GMT) Full text and rfc822 format available.

Notification sent to Drew Adams <drew.adams <at> oracle.com>:
bug acknowledged by developer. (Sat, 02 Jan 2016 17:46:02 GMT) Full text and rfc822 format available.

Message #18 received at 22291-done <at> debbugs.gnu.org (full text, mbox):

From: Eli Zaretskii <eliz <at> gnu.org>
To: Drew Adams <drew.adams <at> oracle.com>
Cc: 22291-done <at> debbugs.gnu.org
Subject: Re: bug#22291: 25.1.50;
 REGRESSION: Emacs 24.3 breaks loading cl-macs to get macro `case'
Date: Sat, 02 Jan 2016 19:44:44 +0200
> Date: Sat, 2 Jan 2016 09:28:02 -0800 (PST)
> From: Drew Adams <drew.adams <at> oracle.com>
> Cc: 22291 <at> debbugs.gnu.org
> 
> > IOW, this was a deliberate change, and you should either use 'cl-case'
> > with Emacs versions since 24.3, or use 'cl' instead of 'cl-macs'.
> 
> I know all of that.  Just because something was decided does not mean
> that that decision was the best decision possible, or even wise.
> 
> This is a gratuitous change that breaks backward compatibility.  That's
> the point.  Gratuitous - unnecessary.
> 
> Personally I tend to require `cl', and at compile-time only, to get
> such macros.  But it is entirely reasonable that someone might require
> `cl-macs' - at runtime or compile time - to get such a macro definition.
> 
> And if some user does not compile the code that requires the library
> that provides the macro, then s?he will now get the entire `cl' at
> runtime, instead of getting only the much-smaller `cl-macs' at runtime.
> 
> > OK?
> 
> Not IMHO.

So I guess we will have to agree to disagree on this one.

From my POV, this is not a bug, but a deliberate change that is well
documented.

Closing.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sat, 02 Jan 2016 17:51:01 GMT) Full text and rfc822 format available.

Message #21 received at 22291 <at> debbugs.gnu.org (full text, mbox):

From: Glenn Morris <rgm <at> gnu.org>
To: 22291 <at> debbugs.gnu.org
Subject: Re: bug#22291: 25.1.50;
 NOTABUG: Emacs 24.3 breaks loading cl-macs to get macro `case'
Date: Sat, 02 Jan 2016 12:50:35 -0500
The only public entry points to the cl library are cl/cl-lib
(it was always so).
External code should not attempt to load any of the cl-foo submodules
that it happens to be divided into. For case, simply

(eval-when-compile (require 'cl))




Severity set to 'wishlist' from 'normal' Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 02 Jan 2016 17:52:01 GMT) Full text and rfc822 format available.

Added tag(s) wontfix and notabug. Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 02 Jan 2016 17:52:02 GMT) Full text and rfc822 format available.

Removed indication that bug 22291 blocks Request was from Glenn Morris <rgm <at> gnu.org> to control <at> debbugs.gnu.org. (Sat, 02 Jan 2016 17:54:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sat, 02 Jan 2016 18:17:02 GMT) Full text and rfc822 format available.

Message #30 received at 22291 <at> debbugs.gnu.org (full text, mbox):

From: Drew Adams <drew.adams <at> oracle.com>
To: Glenn Morris <rgm <at> gnu.org>, 22291 <at> debbugs.gnu.org
Subject: RE: bug#22291: 25.1.50; NOTABUG: Emacs 24.3 breaks loading cl-macs to
 get macro `case'
Date: Sat, 2 Jan 2016 10:16:19 -0800 (PST)
> The only public entry points to the cl library are cl/cl-lib
> (it was always so).

What does that even mean?  What determines it; IOW, why do you say so?

> External code should not attempt to load any of the cl-foo submodules
> that it happens to be divided into.

Where is that stated, besides your statement of it now?  And what
would be the rationale for such a proscription?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#22291; Package emacs. (Sun, 03 Jan 2016 21:33:02 GMT) Full text and rfc822 format available.

Message #33 received at 22291 <at> debbugs.gnu.org (full text, mbox):

From: John Wiegley <jwiegley <at> gmail.com>
To: 22291 <at> debbugs.gnu.org
Cc: eliz <at> gnu.org, drew.adams <at> oracle.com
Subject: Re: bug#22291: 25.1.50;
 REGRESSION: Emacs 24.3 breaks loading cl-macs to get macro `case'
Date: Sun, 03 Jan 2016 13:31:28 -0800
>>>>> Eli Zaretskii <eliz <at> gnu.org> writes:

>> Personally I tend to require `cl', and at compile-time only, to get
>> such macros.  But it is entirely reasonable that someone might require
>> `cl-macs' - at runtime or compile time - to get such a macro definition.
>> 
>> And if some user does not compile the code that requires the library
>> that provides the macro, then s?he will now get the entire `cl' at
>> runtime, instead of getting only the much-smaller `cl-macs' at runtime.
>> 
>> > OK?
>> 
>> Not IMHO.

> So I guess we will have to agree to disagree on this one.

> From my POV, this is not a bug, but a deliberate change that is well
> documented.

From the point of view of the bug report, I agree with Eli.

From the point of view of the issue, I agree with Drew. Drew, let's close this
as a bug, but open a new discussion on better organization of the CL stuff. We
should start the discussion on tangents, until we arrive at something
meaningful to bring to the developer's list.

-- 
John Wiegley                  GPG fingerprint = 4710 CF98 AF9B 327B B80F
http://newartisans.com                          60E1 46C4 BD1A 7AC1 4BA2




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Mon, 01 Feb 2016 12:24:04 GMT) Full text and rfc822 format available.

This bug report was last modified 9 years and 143 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.