[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Should native compilation be enabled by default?
From: |
Eli Zaretskii |
Subject: |
Re: Should native compilation be enabled by default? |
Date: |
Fri, 08 Mar 2024 10:06:56 +0200 |
> From: Richard Stallman <rms@gnu.org>
> Cc: eliz@gnu.org, emacs-devel@gnu.org
> Date: Thu, 07 Mar 2024 21:29:29 -0500
>
> The best trade-off could be to mark some individual source files as
> worth-while for native compilation, and by default do native compilation
> only for those.
While ideally true, in practice this would be a significant
maintenance burden. The initial research of whether a given file can
benefit from native compilation enough to justify it is already a
large job, even just for files that are part of Emacs, because the
actual gains depend on the functions used and the use patterns, which
can and do vary widely. Then the results of this initial research
should be somehow kept up-to-date as the Lisp code changes and also as
libgccjit and GCC in general becomes a better compiler that can
optimize better.
So instead, we take an opportunistic way forward that is much easier
maintenance-wise: we require native compilation to never produce much
worse results than byte-compiled code would. We also require native
compilation to produce code that is on average faster than
byte-compiled code. This way, we don't have to worry about file-local
issues unless the native code is significantly slower, in which case
we ask users to report a bug, which we can investigate and solve.
I believe this is similar to how optimizations are introduced into a
compiler. In particular, no one suggests that each individual source
file be tagged with the optimizations that produce significant gains
for that file. However, as exception, a given source file can be
tagged with optimizations that should or should not be done for it.
We support similar features for native compilation: the
no-native-compile cookie and the various native-comp-* variables that
can be set in file-local variables to control the aspects of native
compilation and optimizations for those exceptional files.
So I think we have a reasonably good arrangement, both on average and
where specific exceptional cases need special handling, and we do that
in a way that doesn't present any significant maintenance burden.
- Re: Should native compilation be enabled by default?, (continued)
- Re: Should native compilation be enabled by default?, Eli Zaretskii, 2024/03/05
- Re: Should native compilation be enabled by default?, Richard Stallman, 2024/03/07
- Re: Should native compilation be enabled by default?, Eli Zaretskii, 2024/03/08
- Re: Should native compilation be enabled by default?, Richard Stallman, 2024/03/07
- Re: Should native compilation be enabled by default?, Björn Bidar, 2024/03/05
- Re: Should native compilation be enabled by default?, Richard Stallman, 2024/03/07
- Re: Should native compilation be enabled by default?,
Eli Zaretskii <=
- Message not available
- Re: Should native compilation be enabled by default?, Emanuel Berg, 2024/03/14
- Re: Should native compilation be enabled by default?, Colin Baxter, 2024/03/15
- Re: Should native compilation be enabled by default?, Ihor Radchenko, 2024/03/15
- Re: Should native compilation be enabled by default?, Colin Baxter, 2024/03/15
- Re: Should native compilation be enabled by default?, Colin Baxter, 2024/03/15
- Re: Should native compilation be enabled by default?, Corwin Brust, 2024/03/15
- Re: Should native compilation be enabled by default?, Colin Baxter, 2024/03/15
- Re: Should native compilation be enabled by default?, Emanuel Berg, 2024/03/15
- Re: Should native compilation be enabled by default?, Eli Zaretskii, 2024/03/15
- Re: Should native compilation be enabled by default?, Colin Baxter, 2024/03/15