From: "Drew Adams" <drew.adams@oracle.com>
To: "'Stefan Monnier'" <monnier@iro.umontreal.ca>
Cc: 'Eli Zaretskii' <eliz@gnu.org>, emacs-devel@gnu.org
Subject: RE: policy, recommendations regarding `cl-*'
Date: Wed, 26 Sep 2012 07:11:17 -0700 [thread overview]
Message-ID: <655ECEE359404A249CF8B4D26E192967@us.oracle.com> (raw)
In-Reply-To: <jwvzk4d4ghw.fsf-monnier+emacs@gnu.org>
> > And deprecation calls out for doc about how to move from the old to
> > the new, as I mentioned.
>
> We'll do that when we move cl.el to lisp/obsolete/, which I expect is
> still several years away.
Deprecation is typically a recommendation to use the new and not the old. Hence
doc about migration/compatibility to help users do that. This does not sound
much like a deprecation - perhaps it's only half-hearted.
> > Why on earth are you deprecating existing macros in favor
> > of the same macros with a `cl-' prefix? I haven't seen an
> > answer to that yet.
>
> Various reasons, tho I don't think it matters much:
> - why have the old names when you have the new names?
> [I know you'll say backward compatibility, but the question
> is meant in the long term. cl.el is still kept for compatibility
> for now]
I've already agreed that adding `cl-' aliases is not bad. It's about the
macros. Why deprecate them?
> - several old names are actually problematic:
> - it starts with mild problems such as mapcar*, function*
> and friends where the * was needed just to avoid conflicts,
> where in the new names you can use the natural "cl-mapcar"
> rather than "cl-mapcar*".
So you use a prefix instead of a suffix to avoid conflicts. Still not a reason
to deprecate the existing macro names. (`mapcar(*)' is not a macro, BTW.)
> - then gets to the actual conflicts like dolist/dotimes (luckily
> push/pop has been fixed by extending Elisp's builtin push/pop to
> cover CL's semantics) which even recently brought real problems
> where eager macroexpansion failed for some files because
> substituting subr.el's dolist with CL's dolist creates a circular
> dependency between CL macroexp and gv (IIRC).
That's a conflict within Emacs itself. There I agree that something better is
needed.
There is no logical reason why Emacs subr.el needed to use the same name (e.g.
`dolist') for something that exists in Common Lisp and in cl.el with a different
meaning. (And no, I don't think that Emacs had `dolist' etc. before Common Lisp
existed.) But so be it - we are where we are.
The problem you point out is apparently not with the code that uses one `dolist'
or the other, but with the handling of library loading and eager macro
expansion. If a user does not load cl then `dolist' should come from subr.el.
But I imagine that this might well become a headache at some level, and clearly
it is error prone - easy for a programmer to not know that some library loaded
by a user loads the cl version, etc. So I can see your point here.
But that's an argument for deprecating those macros that present a problem
because of a conflict between the cl.el version and the subr.el version. That
does not apply to macros like `loop' that do not suffer from that disease. Why
have a blanket deprecation instead of doing the right thing case by case?
> > And I'm hoping you will change your mind about it.
>
> Not a chance.
>
> > But my immediate concern is maintaining code for multiple
> > Emacs versions that uses cl.el macros.
>
> You're fighting a non-problem.
I'm not fighting anything. I asked for a recommendation for adapting existing
code, to which you suggested doing nothing and said that recommendations for
respecting this "deprecation" will come when the code is moved to `obsolete'.
So that is apparently the real moment of deprecation. So why proclaim
deprecation (and even obsolescence) now and not then?
I would have preferred to see a discussion about such a deprecation before it
pounced on us fullblown. But so be it. (It's possible there was such a
discussion and I missed it. But I haven't heard that asserted.)
next prev parent reply other threads:[~2012-09-26 14:11 UTC|newest]
Thread overview: 22+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-09-25 20:31 policy, recommendations regarding `cl-*' Drew Adams
2012-09-25 21:01 ` Eli Zaretskii
2012-09-25 22:09 ` Drew Adams
2012-09-26 1:15 ` Stefan Monnier
2012-09-26 2:51 ` Drew Adams
2012-09-26 3:29 ` Stefan Monnier
2012-09-26 7:02 ` Bastien
2012-09-26 12:59 ` Stefan Monnier
2012-09-26 13:12 ` Bastien
2012-09-26 17:54 ` Stefan Monnier
2012-09-26 22:04 ` Bastien
2012-09-27 20:35 ` Michael Welsh Duggan
2012-09-27 22:10 ` Stefan Monnier
2012-09-29 4:15 ` Michael Welsh Duggan
2012-09-26 14:11 ` Drew Adams [this message]
2012-09-26 19:44 ` Stefan Monnier
2012-09-26 20:13 ` Drew Adams
2012-09-26 7:42 ` Eli Zaretskii
2012-09-26 13:00 ` Stefan Monnier
2012-09-26 14:11 ` Drew Adams
2012-09-26 13:37 ` Jason Rumney
2012-09-25 21:03 ` Helmut Eller
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=655ECEE359404A249CF8B4D26E192967@us.oracle.com \
--to=drew.adams@oracle.com \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.