emacs-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Creating a git branch for cond*


From: Alan Mackenzie
Subject: Re: Creating a git branch for cond*
Date: Thu, 25 Jan 2024 17:57:05 +0000

Hello, Eli.

On Thu, Jan 25, 2024 at 18:56:05 +0200, Eli Zaretskii wrote:
> > Date: Thu, 25 Jan 2024 16:37:44 +0000
> > Cc: rms@gnu.org, eliz@gnu.org, emacs-devel@gnu.org
> > From: Alan Mackenzie <acm@muc.de>

> > > I hope it goes to master directly, it is a single file that doesn't
> > > affect anything else.  And _if_ existing code is updated to use cond*
> > > that will get much more milage.

> > It does affect other things, in particular, other .el files which are
> > adapted to use cond*.

> Please don't make any changes except installing cond* and fixing it.
> There's no decision yet to start converting any code to use it, nor do
> I envision such a decision any time soon.

> > If that happens on master, then both cond* and
> > the conversion need to be perfect before the file can be committed.

> Once again: we are not converting anything, at least not yet.  We are
> only discussing how best to handle installation of cond*.

> > What I want to do early on in cond* development is convert
> > lisp/emacs-lisp/macroexp.el from pcase to cond*.

> I don't agree with such a change, so please don't do anything like
> that.

You know me.  I wouldn't make any such changes without asking first,
anyway.  But for people asking _why_ we're introducing cond*, that it
opens up such possibilities is a good answer.

> > Currently, pcase.el is dependent upon macroexp.el and macroexp.el is
> > dependent upon pcase.el.  This leads to an unlovely artifice in the
> > bootstrapping file, loadup.el, and this has caused me grief in
> > another branch I'm working on.

> We are not going to make any such changes just because we can, or just
> because you have problems on some branch you'd like to avoid fixing.

The point I was making is that our bootstrap procedure in loadup.el
verges on unmaintainability.  What should be a simple linear list of
..el(c) files being loaded one after the other has turned into a
difficult tree where some files are loaded from loadup, some are loaded
with (require 'foo) inside eval-when-compile, and some may be straight
requires, I can't remember exactly.  Some loaded files get unloaded
again.  (pcase.el is an example.)  macroexp.el is loaded twice (or
four times, if you count the second loadup separately).

All this has hindered me on that other branch (for bug #67455, about
getting position information into doc strings that we discussed
extensively back in November).  It is likely to hinder others, too.

My point was that cond*, once it's established, will give us the
mechanism to sort at least some of this out.

> cond* is a new construct, and once it is in Emacs, and documented as
> it should be, we should collect experience with using it before we
> even think about converting existing code.

> Please don't forget that Emacs is a stable program: we don't make
> changes just because we can.  Changes to code that was with us for
> years are only justified if we have a very good reason.

Understood.

> > No doubt Eli will have something to say about this idea.  ;-)

> He does, see above.  You don't have my okay for making any changes
> except installing cond* and fixing it and its documentation.

> Btw, we should also have tests for it.

Indeed.  They will be needed to get the code working properly anyway.

> > There are advantages to the branch, as well as advantages to having it
> > on master.

> Yes.  But, as you say, let's hear what Richard thinks about this.

Yes.

-- 
Alan Mackenzie (Nuremberg, Germany).



reply via email to

[Prev in Thread] Current Thread [Next in Thread]