unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Andrea Corallo <acorallo@gnu.org>
To: Alan Mackenzie <acm@muc.de>
Cc: Joost Kremers <joostkremers@fastmail.fm>,  emacs-devel@gnu.org
Subject: Re: Default lexical-binding to t
Date: Thu, 07 Nov 2024 17:10:51 -0500	[thread overview]
Message-ID: <yp18qtupudw.fsf@fencepost.gnu.org> (raw)
In-Reply-To: <Zyvy0VpRMhuqknNv@MAC.fritz.box> (Alan Mackenzie's message of "Wed, 6 Nov 2024 22:50:57 +0000")

Alan Mackenzie <acm@muc.de> writes:

> Hello, Joost.
>
> On Wed, Nov 06, 2024 at 21:48:05 +0100, Joost Kremers wrote:
>> On Wed, Nov 06 2024, Alan Mackenzie wrote:
>> > Maybe briefly explaining the philosophy of lexical binding somewhere
>> > (maybe NEWS) would help.
>
>> > I still don't understand it.  I go along with lexical binding because
>> > quite a lot of people cleverer than me have said it is good.  But why?
>
>> The Elisp manual has a few short remarks on it:
>
>> (info "(elisp) Lexical Binding")
>
>> ,----
>> | Lexical binding was introduced to Emacs, as an optional feature, in
>> | version 24.1.  We expect its importance to increase with time.  Lexical
>> | binding opens up many more opportunities for optimization, so programs
>> | using it are likely to run faster in future Emacs versions.
>
> This was several major Emacs versions ago.  Has anybody actually done
> any measurements to demonstrate how effective this optimisation has
> been?  When I tried comparing dynamic vs. lexical .elc versions of CC
> Mode scrolling through xdisp.c, dynamic took 8.3247s, lexical took
> 8.3285s.  That's the same, within measurement accuracy.
>
>> | Lexical
>> | binding is also more compatible with concurrency, which was added to
>> | Emacs in version 26.1.
>> `----
>
> I wonder what "more" compatible means.  Concurrency doesn't appear to be
> a major feature in Emacs, as far as I can tell.
>
>> and:
>
>> (info "(elisp) Dynamic Binding")
>
>> ,----
>> |    Note that when code using Dynamic Binding is native compiled the
>> | native compiler will not perform any Lisp specific optimization.
>> `----
>
> This looks like a choice not to support dynamic binding as well as
> lexical binding.  In my CC Mode benchmark (see above) with native
> compiled code, the lexical binding version was somewhat faster than the
> dynamic binding one, around 10%.  But the native compiled code was
> scarcely faster than the byte compiled code.

I'm pretty sure the native compiler could be improved on dynamic binding
support, OTOH dynamic binding code is way less optimizable as many of
the technics the native compiler uses in order to layout efficient code
would not be applicable.

  Andrea



  parent reply	other threads:[~2024-11-07 22:10 UTC|newest]

Thread overview: 88+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-11-01 12:55 Default lexical-binding to t Stefan Monnier
2024-11-01 14:42 ` Gerd Möllmann
2024-11-01 17:03 ` Karl Fogel
2024-11-02 10:48 ` Visuwesh
2024-11-02 12:08   ` Eli Zaretskii
2024-11-02 13:21     ` Visuwesh
2024-11-02 16:24   ` Stefan Monnier
2024-11-02 20:42     ` Jim Porter
2024-11-02 21:38       ` Stefan Kangas
2024-11-03  2:32         ` Stefan Kangas
2024-11-03 13:58           ` Stefan Monnier
2024-11-03 14:34             ` Stefan Kangas
2024-11-04  8:35             ` Jean Louis
2024-11-04  8:43               ` tomas
2024-11-03  1:46       ` Stefan Monnier
2024-11-03  2:30         ` Stefan Kangas
2024-11-03  7:47         ` Jim Porter
2024-11-03 13:53           ` Stefan Monnier
2024-11-03  6:44       ` Sean Whitton
2024-11-03 14:59         ` lexical-binding in paredit Stefan Monnier
2024-11-03 18:32           ` Stefan Kangas
2024-11-03 21:44             ` Taylor R Campbell
2024-11-04  1:54               ` Stefan Monnier
2024-11-03 15:26 ` Default lexical-binding to t Andrea Corallo
2024-11-07  3:46   ` Richard Stallman
2024-11-07 23:00     ` Andrea Corallo
2024-11-08 15:53       ` Sebastián Monía
2024-11-08 16:23         ` Eli Zaretskii
2024-11-08 17:28           ` Sebastián Monía
2024-11-08 17:37             ` Joost Kremers
2024-11-08 18:51             ` Eli Zaretskii
2024-11-08 20:18               ` Sebastián Monía
2024-11-08 20:57                 ` [External] : " Drew Adams
2024-11-11  5:13             ` Richard Stallman
2024-11-04  5:34 ` Richard Stallman
2024-11-04  9:39   ` Po Lu
2024-11-04 13:19     ` Eli Zaretskii
2024-11-04 17:06     ` Alfred M. Szmidt
2024-11-04 18:24       ` [External] : " Drew Adams
2024-11-06  4:44       ` Richard Stallman
2024-11-07 23:07     ` Andrea Corallo
2024-11-04 12:51   ` Eli Zaretskii
2024-11-05 20:24     ` Stefan Monnier
2024-11-06 12:11       ` Eli Zaretskii
2024-11-06 12:50         ` Stefan Monnier
2024-11-06 13:36           ` Eli Zaretskii
2024-11-06 16:32             ` Stefan Monnier
2024-11-06 17:20               ` Eli Zaretskii
2024-11-06 17:42               ` Alan Mackenzie
2024-11-06 20:48                 ` Joost Kremers
2024-11-06 22:50                   ` Alan Mackenzie
2024-11-07  0:46                     ` Stefan Kangas
2024-11-07 21:03                       ` Alan Mackenzie
2024-11-08  0:44                         ` Stefan Kangas
2024-11-10  4:04                         ` Richard Stallman
2024-11-07  6:14                     ` Eli Zaretskii
2024-11-07  8:07                       ` Joost Kremers
2024-11-07  8:45                         ` Eli Zaretskii
2024-11-07 11:09                           ` tomas
2024-11-07 21:23                       ` Alan Mackenzie
2024-11-07 22:37                         ` Dmitry Gutov
2024-11-08  6:58                         ` Eli Zaretskii
2024-11-08 14:01                           ` Alan Mackenzie
2024-11-08 15:19                             ` Eli Zaretskii
2024-11-08 19:07                               ` Alan Mackenzie
2024-11-08 20:01                                 ` Stefan Monnier
2024-11-07 22:10                     ` Andrea Corallo [this message]
2024-11-08 18:38                     ` Stefan Monnier
2024-11-07  2:55                 ` Sean Whitton
2024-11-06 17:54       ` Jim Porter
2024-11-06 19:26         ` Stefan Monnier
2024-11-06 20:23           ` John Yates
2024-11-08 18:43             ` Stefan Monnier
2024-11-06 19:53         ` Jose A. Ortega Ruiz
2024-11-08 18:42           ` Stefan Monnier
2024-11-07  3:46     ` Richard Stallman
2024-11-07  7:09       ` Eli Zaretskii
2024-11-07  3:46     ` Richard Stallman
  -- strict thread matches above, loose matches on Subject: below --
2024-11-07 22:28 Christopher Howard
2024-11-08  0:38 ` Stefan Kangas
2024-11-08  6:29   ` tomas
2024-11-10  4:04     ` Richard Stallman
2024-11-08  7:27   ` Eli Zaretskii
2024-11-08 12:11     ` Stefan Kangas
2024-11-08 13:12       ` Suhail Singh
2024-11-08 13:24         ` Stefan Kangas
2024-11-08 13:45       ` Eli Zaretskii
2024-11-08  7:01 ` Eli Zaretskii

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

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=yp18qtupudw.fsf@fencepost.gnu.org \
    --to=acorallo@gnu.org \
    --cc=acm@muc.de \
    --cc=emacs-devel@gnu.org \
    --cc=joostkremers@fastmail.fm \
    /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 public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).