From: akrl--- via "Emacs development discussions." <emacs-devel@gnu.org>
To: Eli Zaretskii <eliz@gnu.org>
Cc: emacs-devel@gnu.org, phillip.lord@russet.org.uk
Subject: Re: [feature/native-comp] breakage on build
Date: Mon, 01 Feb 2021 19:01:23 +0000 [thread overview]
Message-ID: <xjfczxjtxx8.fsf@sdf.org> (raw)
In-Reply-To: <831rdz7mf5.fsf@gnu.org> (Eli Zaretskii's message of "Mon, 01 Feb 2021 19:00:46 +0200")
Eli Zaretskii <eliz@gnu.org> writes:
>> From: Andrea Corallo <akrl@sdf.org>
>> Cc: phillip.lord@russet.org.uk, emacs-devel@gnu.org
>> Date: Mon, 01 Feb 2021 16:20:17 +0000
>>
>> > OK, thanks. I understand the reasons now. However, I'm not sure we
>> > should encode all this information in the .eln file's name. For
>> > starters, some of those reasons are also true for *.elc files, right?
>> > For example, suppose that a primitive that the .el file calls changed
>> > its signature in backward-incompatible ways -- the .el files which
>> > call it need to be recompiled, or else they will fail, either silently
>> > or noisily. Right? But we don't encode those details in the names of
>> > the *.elc files, do we? Why should the *.eln files be different?
>>
>> I think with eln the situation is considerably more sentitive than the
>> elc one in this respect. The reason is that we (on purpose) skip
>> Ffuncall to call directly into C code, as a consequence an
>> incompatibility will most certainly lead to a crash and not a runtime
>> error.
>
> Crash aside, I don't see the crucial difference, sorry.
Agree, for me runtime error vs unrecoverable crash is a crucial
difference than easily can drive to different design decisions.
> And if we
> detect incompatibility and prevent the crash, I seed no difference at
> all, as that can happen with *.elc files as well.
>
>> 2- We move HASH1 into the eln as metadata.
>>
>> - The limitation of 1 persists
>>
>> - To check that each eln is loadable one has: to 'dlopen' it, read the
>> metadata ('dlsym'), verify and in case reject. This is certainly
>> way more expansive than directly searching for a given filename and
>> might impact negatively startup time, especially on certain OSes
>> where opening files is an expensive operation.
>
> How much more expensive? I'd be surprised to hear it's significant,
> since in-memory operations are much faster than file I/O. Is it
> possible to measure the difference, so that we could make a decision
> based on facts?
Not easily without implementing it. Also we should then measure on all
supported platforms. And still we'd have the first mentioned
limitation.
>> - We'd have name clashes for different eln coming from different
>> Emacs configurations/versions.
>
> A different version will have a different directory, like it does now
> with *.elc files. As for different configurations: if you mean the
> same architecture, how probable is that, for normal users? If the
> issue happens with Emacs developers, wed could design something
> special for that case.
Configuring with different flags can lead to a different set of exposed
primitives and as a consequence to eln incompatibility so yeah, I think
this is quite sensitive.
> I guess I'm saying that using the file names to record this
> information is not necessarily justified by the issues it is supposed
> to solve, and there are alternative solutions with smaller costs.
>
>> Shall we pick a length? 8 characters is probably more than okay but we
>> can go for 16 if we prefer to stay on the safe side.
>
> If 8 is enough, then why go for 16? How is that safer?
I agree 8 is enough, 16 would be safer as reduces further the clash
probability but with 8 is already very low (1/1785793904896 if I'm not
wrong).
Regards
Andrea
next prev parent reply other threads:[~2021-02-01 19:01 UTC|newest]
Thread overview: 99+ messages / expand[flat|nested] mbox.gz Atom feed top
2021-01-30 10:37 [feature/native-comp] breakage on build Phillip Lord
2021-01-30 13:26 ` akrl--- via Emacs development discussions.
2021-01-30 14:40 ` phillip.lord
2021-01-30 15:01 ` phillip.lord
2021-01-30 16:21 ` Eli Zaretskii
2021-01-30 16:38 ` Eli Zaretskii
2021-01-30 17:06 ` Eli Zaretskii
2021-01-30 17:19 ` phillip.lord
2021-01-30 19:44 ` akrl--- via Emacs development discussions.
2021-01-30 19:58 ` Eli Zaretskii
2021-01-30 20:17 ` akrl--- via Emacs development discussions.
2021-01-31 15:29 ` Eli Zaretskii
2021-02-01 11:01 ` akrl--- via Emacs development discussions.
2021-02-01 15:25 ` Eli Zaretskii
2021-02-01 16:20 ` akrl--- via Emacs development discussions.
[not found] ` <831rdz7mf5.fsf@gnu.org>
2021-02-01 19:01 ` akrl--- via Emacs development discussions. [this message]
2021-02-01 19:06 ` Phillip Lord
2021-02-01 19:36 ` Eli Zaretskii
2021-02-01 19:37 ` Stefan Monnier
2021-02-01 20:33 ` akrl--- via Emacs development discussions.
2021-02-02 20:26 ` akrl--- via Emacs development discussions.
2021-02-02 20:29 ` Eli Zaretskii
2021-02-03 12:37 ` akrl--- via Emacs development discussions.
2021-02-03 16:36 ` Phillip Lord
2021-02-03 20:27 ` akrl--- via Emacs development discussions.
2021-02-04 3:31 ` Eli Zaretskii
2021-02-04 14:39 ` Phillip Lord
2021-02-04 15:31 ` Eli Zaretskii
2021-02-04 15:52 ` Phillip Lord
2021-02-04 16:24 ` Eli Zaretskii
2021-02-04 20:24 ` Óscar Fuentes
2021-02-04 20:44 ` Eli Zaretskii
2021-02-04 22:08 ` Óscar Fuentes
2021-02-05 11:50 ` Eli Zaretskii
2021-02-05 14:47 ` Óscar Fuentes
2021-02-05 21:29 ` Phillip Lord
2021-02-05 22:56 ` Óscar Fuentes
2021-02-06 13:15 ` Phillip Lord
2021-02-07 2:52 ` Óscar Fuentes
2021-02-07 18:56 ` Phillip Lord
2021-02-07 19:38 ` Óscar Fuentes
2021-02-07 19:49 ` Eli Zaretskii
2021-02-07 20:33 ` Stefan Monnier
2021-02-07 21:23 ` Óscar Fuentes
2021-02-07 22:23 ` Phillip Lord
2021-02-07 22:21 ` Phillip Lord
2021-02-07 23:38 ` Óscar Fuentes
2021-02-08 12:03 ` Phillip Lord
2021-02-06 7:32 ` Eli Zaretskii
2021-02-04 16:22 ` Andrea Corallo via Emacs development discussions.
2021-02-04 21:07 ` Phillip Lord
2021-02-04 23:32 ` Andrea Corallo via Emacs development discussions.
2021-02-05 10:05 ` Phillip Lord
2021-02-05 11:35 ` Eli Zaretskii
2021-02-05 20:37 ` Phillip Lord
2021-02-05 21:04 ` Eli Zaretskii
2021-02-05 21:50 ` Phillip Lord
2021-02-06 7:45 ` Eli Zaretskii
2021-02-06 12:58 ` Phillip Lord
2021-02-06 13:45 ` Eli Zaretskii
2021-02-07 19:11 ` Phillip Lord
2021-02-08 9:32 ` Andrea Corallo via Emacs development discussions.
2021-02-08 12:08 ` Phillip Lord
2021-02-08 14:28 ` Andrea Corallo via Emacs development discussions.
2021-02-08 14:47 ` Phillip Lord
2021-02-08 15:14 ` Andrea Corallo via Emacs development discussions.
2021-02-08 21:38 ` Stefan Monnier
2021-02-09 8:25 ` Andrea Corallo via Emacs development discussions.
2021-02-09 22:38 ` Phillip Lord
2021-02-10 8:44 ` Andrea Corallo via Emacs development discussions.
2021-02-10 14:04 ` Stefan Monnier
2021-02-10 14:23 ` Andrea Corallo via Emacs development discussions.
2021-02-15 19:17 ` Phillip Lord
2021-02-10 15:16 ` Eli Zaretskii
2021-02-10 20:41 ` Andrea Corallo via Emacs development discussions.
2021-02-11 14:11 ` Eli Zaretskii
2021-02-11 14:51 ` Andrea Corallo via Emacs development discussions.
2021-02-11 15:24 ` Eli Zaretskii
2021-02-11 15:53 ` Andrea Corallo via Emacs development discussions.
2021-02-11 16:11 ` Stefan Monnier
2021-02-11 16:20 ` Andrea Corallo via Emacs development discussions.
2021-02-11 20:52 ` Andrea Corallo via Emacs development discussions.
2021-02-12 6:46 ` Eli Zaretskii
2021-02-10 21:23 ` Phillip Lord
2021-02-11 8:39 ` Andrea Corallo via Emacs development discussions.
2021-02-08 15:25 ` Eli Zaretskii
2021-02-08 15:23 ` Eli Zaretskii
2021-02-07 2:15 ` Óscar Fuentes
2021-02-07 4:14 ` Óscar Fuentes
2021-02-05 11:35 ` Andrea Corallo via Emacs development discussions.
2021-02-05 20:44 ` Phillip Lord
2021-02-05 7:28 ` Eli Zaretskii
2021-01-30 20:21 ` Óscar Fuentes
2021-01-30 22:06 ` Stefan Monnier
2021-01-30 22:23 ` Óscar Fuentes
2021-01-30 22:53 ` Stefan Monnier
2021-02-02 0:27 ` Andy Moreton
2021-02-02 9:11 ` akrl--- via Emacs development discussions.
-- strict thread matches above, loose matches on Subject: below --
2021-02-01 18:39 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=xjfczxjtxx8.fsf@sdf.org \
--to=emacs-devel@gnu.org \
--cc=akrl@sdf.org \
--cc=eliz@gnu.org \
--cc=phillip.lord@russet.org.uk \
/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).