GNU bug report logs - #30078
27.0.50; Use lexical-binding for M-:

Previous Next

Package: emacs;

Reported by: Stefan Monnier <monnier <at> IRO.UMontreal.CA>

Date: Thu, 11 Jan 2018 16:38:01 UTC

Severity: wishlist

Found in version 27.0.50

Fixed in version 27.1

Done: Glenn Morris <rgm <at> gnu.org>

Bug is archived. No further changes may be made.

Full log


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

From: Stefan Monnier <monnier <at> IRO.UMontreal.CA>
To: Eli Zaretskii <eliz <at> gnu.org>
Cc: michael_heerdegen <at> web.de, 30078 <at> debbugs.gnu.org
Subject: Re: bug#30078: 27.0.50; Use lexical-binding for M-:
Date: Tue, 20 Mar 2018 15:20:18 -0400
>> Because, having two languages is a bit inconvenient and brings extra
>> complexity: e.g. some code snippets only work right in one of the two
>> languages (usually nowadays it's in the lexbind variant, AFAICT), so you
>> need to label them appropriately.
> Are that inconvenience and complexity really so bad?  They don't sound
> like that.

It's a source of bugs, slows down the interpreter, complicates the
compiler, complicates the doc, regularly confuses new users who copy
snippets of code and use them in the wrong language, ...

Also several macros need to know if the code they generate will be
interpreted in the lexbind-Elisp or the dynbind-Elisp language, so those
are also impacted.

The clear tendency is for new developments to drop support for
dynbind-Elisp whenever it gets in the way (e.g. some macros just signal
an error when used from dynbind-Elisp).  So dynbind-Elisp is slowly
becoming second class citizen.

>> > It would mean old code will not run in Emacs for no good reason.
>> That's true.  Which is why it's a long-term goal only.
> I'm asking why make it a goal at all.

I guess in the worst case we could keep it indefinitely.  But I hope
that in the future no code ends up using dynbind-Elisp "by accident".
IOW dynbind-Elisp should only be used upon explicit request (e.g. by
setting lexical-binding to nil in the file-local vars or by passing
a special `:dynbind` second argument to `eval`).


        Stefan




This bug report was last modified 6 years and 24 days ago.

Previous Next


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