Subject: bug#43269: 28.0.50; [feature/native-comp] provide a user feedback on Emacs being native compiled

From: Andrea Corallo <[email-masked]>
Date: Wed, 09 Sep 2020 15:19:58 +0000

Eli Zaretskii <[email-masked]> writes:

>> From: Richard Stallman <[email-masked]>
>> Cc: [email-masked], [email-masked], [email-masked]
>> Date: Tue, 08 Sep 2020 23:45:06 -0400
>> 
>>   > As mentioned on the bug list, I'd prefer if user could defer native
>>   > compilation to some later time, so as to avoid making the Emacs build
>>   > take hours, especially on slow and low-end machines.
>> 
>> I wonder if I would ever see any benefit form the speedup of native
>> compilation.  I hardly ever notice waiting for Emacs to do computation.
>> But I would find a big slowdown in building to be a pain.
>> 
>> Maybe I would prefer to turn off native compilation, pure and simple.
>
> I share some of these feelings, FWIW.  Andrea's work is, of course,
> commendable and the results will be very welcome when they land on
> master, but I'm disappointed by the high price we need to pay for this
> feature, both in complexity (notice the long discussions of where and
> how to store the *.eln files, and how to handle recompilation and
> reloading), and in compilation times.  Having the single-core
> compilation times increase from 10-15 min to several hours is
> ... extreme.  (And before you say no one runs this on a single core: I
> sometimes do, when parallel builds get in the way of debugging some
> problem.)  And we will probably bump into additional issues down the
> road.
>
> (How come it's so easy and seamless in Guile?)
>

Hi Eli,

the native compiler improved considerably the compilation speed with
time.  I just took a measure at today's status native compiling only the
dumped image (what is going to be default when native compiling).

On my dev machine vanilla Emacs uses 12m tot CPU time for a compilation
from a fresh repo. The same native compiling takes 30m tot CPU time so
IMO it is not terrible.

Regarding the complexity I don't know, I guess it took some message to
decide how to have it working but now we are there.  It looks to me way
simpler then deciding Emacs defaults :)

For Guile I have no idea if it was simpler to implement or discuss.  I'm
not a Guile expert so I may be inaccurate but I think they can native
compile with a simple lightening based jitter.  This let me think they
can't save or reuse the compilation output, nor dump it given everything
happens in memory.

Regards

  Andrea