unofficial mirror of help-gnu-emacs@gnu.org
 help / color / mirror / Atom feed
From: Drew Adams <drew.adams@oracle.com>
To: Eli Zaretskii <eliz@gnu.org>,
	"help-gnu-emacs@gnu.org" <help-gnu-emacs@gnu.org>
Subject: RE: [External] : Re: Native compilation by default?: Was [Re: stats say SBCL is 78 875 % faster than natively compiled Elisp
Date: Sun, 26 Feb 2023 16:10:57 +0000	[thread overview]
Message-ID: <SJ0PR10MB5488D9938DB636D541FF0798F3AE9@SJ0PR10MB5488.namprd10.prod.outlook.com> (raw)
In-Reply-To: <83k005j63n.fsf@gnu.org>

[Caveat: I haven't read the doc and am not familiar
 with native compilation.  Just commenting on what
 I see written here (which is without context).  If
 what I say helps, good; if not, please ignore.]

> >  "Native-Compilation is implemented as a side
> >  effect of byte-compilation"

That says that IF you byte-compile THEN, as a side
effect of byte-compiling, native-compiling also
happens.

Actually, that statement doesn't really say that
so definitively.  It could be that the side effect
doesn't _always_ take place during byte-compiling,
but that it does sometimes, i.e., conditionally.

But a casual reading will likely assume that
native compilation occurs each time a file is
byte-compiled.

IOW, byte-compile => native compile.

The statement _could_ also be read (by assuming
that's the _only_ native-compile implementation)
as saying that IF you native-compile THEN
byte-compiling also happens - i.e., that you
can't native-compile without also byte-compiling.

IOW: native-compile => byte-compile.

It would probably be a good idea to _spell out_
exactly the relationship.  The statement as is
tries to pack too much into the few words "is
implemented as a side effect of".

> It goes on by saying
> 
>   Thus, compiling Lisp code natively always
>   produces its byte code as well

(See above.  That's the "_could_ also be read"
bit, made explicit.)

If byte-compiling always native-compiles, say so.

If the only way to native-compile is to byte-compile
(i.e., that's the _only_ implementation of native
compilation, so you can't native compile without
also byte-compiling), then say so.

> So the above has nothing to do with _when_ does native compilation
> happen.  It just says _how_ it works: by launching a byte-compilation
> and using its by-products internally to produce native code.

It doesn't really say all of that.  (Maybe some of
the rest of the doc does, but not just the snippets
shown here out of context.)  It certainly doesn't
say that you initiate the compilations (both byte
and native) by "launching a byte-compilation".  And
it says nothing about needing to use some by-products
of byte-compilation to produce native code.

Based on your last statement, a guess would be this:

Byte-compilation produces, as a side effect, some
things that can (separately) be used to perform a
native compilation.

Does a user initiate that separate native compilation?
Or does it happen automatically when you byte-compile?
(This is the first question above: does byte-compile
imply native-compile?)

Are there other ways to native-compile, besides
launching a byte-compile?

> if the above would load a .eln file instead, how would
> a Lisp program be able to force Emacs to load a .elc file?
> 
> Therefore, when you specify an explicit extension, be it .el or .elc,
> Emacs loads that specific file, nothing more, nothing less.  Exactly
> like '(load "foo.el")' in previous versions of Emacs always loaded the
> .el file, even if the .elc file was available.

This was Stefan's remark also.  It's very important.

It fits what Emacs has always done (with *.el and
*.elc), and is perfectly logical.  It should be
pointed out explicitly in the text about native
compilation and byte-compilation and loading.

HTH.



  reply	other threads:[~2023-02-26 16:10 UTC|newest]

Thread overview: 41+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-14  7:56 stats say SBCL is 78 875 % faster than natively compiled Elisp Emanuel Berg
2023-02-15  5:04 ` Chen Zhaoyang
2023-02-15 11:37   ` Emanuel Berg
2023-02-15  6:59 ` Jean Louis
2023-02-16  6:04   ` Emanuel Berg
2023-02-17 17:38     ` Jean Louis
2023-02-18 19:54       ` Emanuel Berg
2023-02-18 20:15         ` Emanuel Berg
2023-02-18 20:39           ` Eli Zaretskii
2023-02-18 20:47             ` Emanuel Berg
2023-02-19  6:35               ` Eli Zaretskii
2023-02-21  7:04                 ` Native compilation by default?: Was [Re: " Madhu
2023-02-21 12:37                   ` Eli Zaretskii
2023-02-21 16:35                     ` Emanuel Berg
2023-02-21 19:57                       ` Emanuel Berg
2023-02-21 22:21                       ` Native compilation by default? (was: Re: stats say SBCL is 78 875 % faster than natively compiled Elisp) Emanuel Berg
2023-02-21 23:54                         ` Emanuel Berg
     [not found]                           ` <87h6vetquk.fsf@dataswamp.org>
2023-02-22  1:47                             ` Emanuel Berg
2023-02-23 10:46                         ` Emanuel Berg
2023-02-23 20:18                           ` Jean Louis
2023-02-26  1:05                             ` Emanuel Berg
2023-02-22 12:32                       ` Native compilation by default?: Was [Re: stats say SBCL is 78 875 % faster than natively compiled Elisp Eli Zaretskii
2023-02-26  3:08                     ` Madhu
2023-02-26  4:32                       ` Stefan Monnier via Users list for the GNU Emacs text editor
2023-02-26  5:15                         ` Emanuel Berg
2023-02-26  6:27                         ` Eli Zaretskii
2023-02-26  7:10                         ` Emanuel Berg
2023-02-26 16:14                         ` FW: [External] : " Drew Adams
2023-02-26 16:31                           ` Eli Zaretskii
2023-02-26 17:12                             ` Drew Adams
2023-02-26 17:31                               ` Eli Zaretskii
2023-02-26 18:29                                 ` Drew Adams
2023-02-26 19:04                                   ` Eli Zaretskii
2023-02-26 20:05                                     ` Emanuel Berg
2023-02-27  8:42                         ` Madhu
2023-03-03 14:55                           ` Stefan Monnier via Users list for the GNU Emacs text editor
2023-02-26  6:25                       ` Eli Zaretskii
2023-02-26 16:10                         ` Drew Adams [this message]
2023-02-19  5:58         ` Jean Louis
2023-02-15 12:36 ` full native compile (was: Re: stats say SBCL is 78 875 % faster than natively compiled Elisp) Emanuel Berg
2023-02-15 14:05   ` 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=SJ0PR10MB5488D9938DB636D541FF0798F3AE9@SJ0PR10MB5488.namprd10.prod.outlook.com \
    --to=drew.adams@oracle.com \
    --cc=eliz@gnu.org \
    --cc=help-gnu-emacs@gnu.org \
    /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.
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).