emacs-devel
[Top][All Lists]
Advanced

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

Re: Lexical binding: why?


From: Stefan Monnier
Subject: Re: Lexical binding: why?
Date: Tue, 28 May 2019 08:26:16 -0400
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/27.0.50 (gnu/linux)

> What is the purpose of converting Lisp files to use lexical binding?

The lexical-binding version of Elisp offers closures and avoidance of
corner-case name clashes with higher-order functions.
For this reason, we added it and we're very unlikely to remove it.

In contrast the non-lexical-binding version of Elisp is now
redundant/obsolete because it does not offer any feature not already
available in the lexical-binding mode.  So we only keep it for backward
compatibility and will likely remove it in some distant future.

> I always thought the idea was to speed the SW up.

Not really, no.  It does offer a better potential for optimization, but
nobody has made any effort to take advantage of it so far.

> I thus see no speedup from the use of lexical binding.

That corresponds to my experience as well.  When I installed the
lexical-binding code, my main concern was to not impact existing code,
so the fact that the new lexical-binding mode was "about as fast" was
kind of a happy accident.

> Have I, perhaps, made some mistake somewhere?  Does anybody else see
> significant speed increases through the use of lexical binding?

IIRC some operation in the js2 code was significantly slowed down (in
Emacs-24) by lexical-binding and then (less significantly but still
significantly) sped up when the new condition-case byte-codes were
introduced in 24.4 (and used by default since Emacs-25), so there are
some cases, but by and large I wouldn't expect any major change.


        Stefan




reply via email to

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