[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
Re: Lexical binding: why?, John Wiegley, 2019/05/28