From: Eli Zaretskii <eliz@gnu.org>
To: "Eric S. Raymond" <esr@thyrsus.com>
Cc: emacs-devel@gnu.org
Subject: Re: Shrinking the C core
Date: Wed, 09 Aug 2023 15:45:51 +0300 [thread overview]
Message-ID: <83y1ikl6yo.fsf@gnu.org> (raw)
In-Reply-To: <20230809094655.793FC18A4654@snark.thyrsus.com> (esr@thyrsus.com)
> From: "Eric S. Raymond" <esr@thyrsus.com>
> Date: Wed, 9 Aug 2023 05:46:55 -0400 (EDT)
>
> Why is this in C?
History, I'm quite sure.
> Is there any reason not to push it out to Lisp and
> reduce the core complexity? More generally, if I do this kind of
> refactor, will I be stepping on anyone's toes?
For veteran and stable code such as this one, we should not rewrite
them in Lisp just because we can. We should have much more serious
and good reasons for such changes. Good reasons include adding some
significant new feature or extension, supporting new kinds of
filesystems, etc. Otherwise, this just introduces unnecessary
instability and maintenance burden into code that was working well for
eons. Even the simple change you did a few days ago broke the build
on one system and raised a couple of issues some of which are not yet
resolved, and others we don't even have a good way of resolving except
by bracing for bug reports.
In addition to the obvious issues with moving code from C to Lisp,
there are a few less obvious. One example: functions defined in C are
always available, whereas those defined in Lisp are only available
once the corresponding Lisp file was loaded. This matters during
loadup, and even if currently we either don't use the affected
primitives during dumping, or use them only after the corresponding
Lisp file is loaded, it makes the build process more fragile, because
now changing the order of loading the files in loadup or adding some
Lisp to loadup and other preloaded files runs the risk of breaking the
build due to these dependencies.
Another example: moving stuff to Lisp causes code that previously
couldn't GC to potentially trigger GC. So now various parts of Emacs
which call this primitive from C will need to be prepared to have GC
where they previously could assume no GC. How do you even assess the
risks from that in a program like Emacs, what with all our hooks etc.?
This is not academic: we had and have these problems all the time, and
they are usually quite hard to debug and solve.
We don't need such gratuitous maintenance head-aches, and we don't
need the risk of introducing subtle bugs into code which worked for
decades and which we are used to rely on and trust -- unless there are
very good reasons for that. And good reasons in my book are only
those which develop and extend Emacs, and add new and useful features.
So please let's not do that without such reasons. New code that adds
new primitives -- sure, we should discuss whether this or that part
needs to be in C, and prefer Lisp implementations whenever we can.
But not the old and trusted code like this one -- those should be
rewritten only for very good reasons. And even when we do have such
good reasons, whether they justify rewriting existing stable code
should be discussed on a case by case basis, so we could consider the
possible alternatives and choose the best way of doing that. Not
every extension that involves some primitive justifies rewriting or
reimplementing that primitive.
next prev parent reply other threads:[~2023-08-09 12:45 UTC|newest]
Thread overview: 353+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-08-09 9:46 Shrinking the C core Eric S. Raymond
2023-08-09 10:55 ` Andreas Schwab
2023-08-09 11:03 ` Eric S. Raymond
2023-08-09 11:29 ` Andreas Schwab
2023-08-09 12:34 ` Po Lu
2023-08-09 15:51 ` Eric S. Raymond
2023-08-09 23:56 ` Po Lu
2023-08-10 1:19 ` Eric S. Raymond
2023-08-10 1:47 ` Christopher Dimech
2023-08-10 1:58 ` Eric Frederickson
2023-08-10 2:07 ` Sam James
2023-08-10 2:44 ` Po Lu
2023-08-10 6:48 ` Eli Zaretskii
2023-08-10 21:21 ` Eric S. Raymond
2023-08-10 21:19 ` Eric S. Raymond
2023-08-10 21:56 ` Emanuel Berg
2023-08-11 5:46 ` Eli Zaretskii
2023-08-11 8:45 ` Emanuel Berg
2023-08-11 11:24 ` Eli Zaretskii
2023-08-11 12:12 ` Emanuel Berg
2023-08-11 13:16 ` Eli Zaretskii
2023-08-10 2:28 ` Po Lu
2023-08-10 4:15 ` Christopher Dimech
2023-08-10 7:44 ` Eli Zaretskii
2023-08-10 21:54 ` Emanuel Berg
2023-08-11 10:27 ` Bignum performance (was: Shrinking the C core) Ihor Radchenko
2023-08-11 12:10 ` Emanuel Berg
2023-08-11 12:32 ` Ihor Radchenko
2023-08-11 12:38 ` Emanuel Berg
2023-08-11 14:07 ` [PATCH] " Ihor Radchenko
2023-08-11 18:06 ` Emanuel Berg
2023-08-11 19:41 ` Ihor Radchenko
2023-08-11 19:50 ` Emanuel Berg
2023-08-12 8:24 ` Ihor Radchenko
2023-08-12 16:03 ` Emanuel Berg
2023-08-13 9:09 ` Ihor Radchenko
2023-08-13 9:49 ` Emanuel Berg
2023-08-13 10:21 ` Ihor Radchenko
2023-08-14 2:20 ` Emanuel Berg
2023-08-14 2:42 ` [PATCH] Re: Bignum performance Po Lu
2023-08-14 4:16 ` Emanuel Berg
2023-08-14 7:15 ` Ihor Radchenko
2023-08-14 7:50 ` Po Lu
2023-08-14 9:28 ` Ihor Radchenko
2023-08-15 14:28 ` Emanuel Berg
2023-08-14 7:20 ` [PATCH] Re: Bignum performance (was: Shrinking the C core) Ihor Radchenko
2023-08-11 22:46 ` Emanuel Berg
2023-08-12 8:30 ` Ihor Radchenko
2023-08-12 16:22 ` Emanuel Berg
2023-08-13 9:12 ` Ihor Radchenko
2023-08-11 14:14 ` Mattias Engdegård
2023-08-11 18:09 ` Emanuel Berg
2023-08-10 23:49 ` Shrinking the C core Eric S. Raymond
2023-08-11 0:03 ` Christopher Dimech
2023-08-11 8:24 ` Immanuel Litzroth
2023-08-11 7:03 ` Eli Zaretskii
2023-08-11 7:19 ` tomas
2023-08-11 10:57 ` Eli Zaretskii
2023-08-10 11:28 ` Dmitry Gutov
2023-08-10 21:26 ` Eric S. Raymond
2023-08-12 2:46 ` Richard Stallman
2023-08-12 3:22 ` Emanuel Berg
2023-08-12 8:33 ` Ihor Radchenko
2023-08-12 15:58 ` Emanuel Berg
2023-08-13 9:13 ` Ihor Radchenko
2023-08-13 9:55 ` Emanuel Berg
2023-08-13 10:23 ` Ihor Radchenko
2023-08-13 20:55 ` Emanuel Berg
2023-08-14 0:13 ` Emanuel Berg
2023-08-12 18:32 ` tomas
2023-08-12 22:08 ` Emanuel Berg
2023-08-12 23:09 ` Emanuel Berg
2023-08-13 5:50 ` tomas
2023-08-13 8:38 ` Emanuel Berg
2023-08-13 15:54 ` [External] : " Drew Adams
2023-08-13 8:00 ` Andreas Schwab
2023-08-13 9:21 ` Emanuel Berg
2023-08-14 7:27 ` Alfred M. Szmidt
2023-08-14 7:36 ` Ihor Radchenko
2023-08-14 7:50 ` Alfred M. Szmidt
2023-08-15 22:57 ` Emanuel Berg
2023-08-16 10:27 ` Ihor Radchenko
2023-08-19 13:29 ` Emanuel Berg
2023-08-20 5:09 ` Ihor Radchenko
2023-08-20 6:51 ` Emanuel Berg
2023-08-20 7:14 ` Ihor Radchenko
2023-08-20 7:52 ` Emanuel Berg
2023-08-20 13:01 ` tomas
2023-08-20 13:12 ` Ihor Radchenko
2023-08-20 8:28 ` Alfred M. Szmidt
2023-08-20 9:29 ` Emanuel Berg
2023-08-20 15:22 ` Alfred M. Szmidt
2023-08-20 15:36 ` Ihor Radchenko
2023-08-20 15:45 ` Eli Zaretskii
2023-08-20 15:54 ` Ihor Radchenko
2023-08-20 16:29 ` Alfred M. Szmidt
2023-08-20 16:37 ` Ihor Radchenko
2023-08-20 17:19 ` Alfred M. Szmidt
2023-08-20 17:31 ` Ihor Radchenko
2023-08-20 18:54 ` Alfred M. Szmidt
2023-08-20 19:07 ` Eli Zaretskii
2023-08-27 3:53 ` Emanuel Berg
2023-08-20 19:15 ` Ihor Radchenko
2023-08-20 19:24 ` Ihor Radchenko
2023-08-21 2:33 ` Eli Zaretskii
2023-08-21 4:11 ` Ihor Radchenko
2023-08-21 4:15 ` Po Lu
2023-08-21 4:36 ` Ihor Radchenko
2023-08-21 4:43 ` Po Lu
2023-08-21 5:06 ` Ihor Radchenko
2023-08-21 5:25 ` [External] : " Drew Adams
2023-08-21 5:34 ` Po Lu
2023-08-21 9:17 ` Add more supported primitives in libgccjit IR (was: Shrinking the C core) Ihor Radchenko
2023-08-21 9:42 ` Gregory Heytings
2023-08-21 10:36 ` Ihor Radchenko
2023-08-21 11:02 ` Alfred M. Szmidt
2023-08-21 11:41 ` Ihor Radchenko
2023-08-21 12:20 ` Eli Zaretskii
2023-08-21 14:49 ` Add more supported primitives in libgccjit IR Andrea Corallo
2023-08-23 10:11 ` Ihor Radchenko
2023-08-25 9:19 ` Andrea Corallo
2023-08-25 11:06 ` Ihor Radchenko
2023-08-25 14:26 ` Andrea Corallo
2023-08-26 11:14 ` Ihor Radchenko
2023-08-27 1:40 ` Emanuel Berg
2023-08-27 7:38 ` Emanuel Berg
2023-08-27 13:42 ` Andrea Corallo
2023-08-27 22:19 ` Emanuel Berg
2023-08-28 5:04 ` Andrea Corallo
2023-08-28 19:49 ` Emanuel Berg
2023-08-26 0:47 ` Emanuel Berg
2023-08-26 8:26 ` Ihor Radchenko
2023-08-26 17:52 ` Emanuel Berg
2023-08-21 11:05 ` Add more supported primitives in libgccjit IR (was: Shrinking the C core) Gregory Heytings
2023-08-21 11:46 ` Ihor Radchenko
2023-08-21 12:33 ` Gregory Heytings
2023-08-21 11:34 ` Add more supported primitives in libgccjit IR Manuel Giraud via Emacs development discussions.
2023-08-21 11:02 ` Add more supported primitives in libgccjit IR (was: Shrinking the C core) Alfred M. Szmidt
2023-08-21 11:12 ` Add more supported primitives in libgccjit IR Eli Zaretskii
2023-08-21 11:53 ` Ihor Radchenko
2023-08-27 2:04 ` Shrinking the C core Emanuel Berg
2023-08-21 7:59 ` Gregory Heytings
2023-08-27 5:31 ` Emanuel Berg
2023-08-27 6:16 ` Emanuel Berg
2023-08-21 10:48 ` Eli Zaretskii
2023-08-21 11:56 ` Ihor Radchenko
2023-08-21 12:22 ` Eli Zaretskii
2023-08-28 4:41 ` Emanuel Berg
2023-08-28 11:27 ` Ihor Radchenko
2023-08-20 20:15 ` Alfred M. Szmidt
2023-08-20 20:39 ` Ihor Radchenko
2023-08-21 5:59 ` Alfred M. Szmidt
2023-08-21 6:23 ` Ihor Radchenko
2023-08-21 7:21 ` Alfred M. Szmidt
2023-08-21 7:26 ` Ihor Radchenko
2023-08-21 7:52 ` Alfred M. Szmidt
2023-08-21 10:46 ` Ihor Radchenko
2023-08-21 11:02 ` Alfred M. Szmidt
2023-08-27 4:01 ` Emanuel Berg
2023-08-27 8:53 ` Ihor Radchenko
2023-08-27 3:48 ` Emanuel Berg
2023-08-27 9:06 ` Ihor Radchenko
2023-08-27 3:25 ` Emanuel Berg
2023-08-27 8:55 ` Ihor Radchenko
2023-08-20 16:03 ` Alfred M. Szmidt
2023-08-20 16:34 ` Ihor Radchenko
2023-08-20 17:19 ` Alfred M. Szmidt
2023-08-20 17:25 ` Ihor Radchenko
2023-08-20 18:54 ` Alfred M. Szmidt
2023-08-20 19:02 ` Eli Zaretskii
2023-08-20 20:11 ` Alfred M. Szmidt
2023-08-23 21:09 ` Emanuel Berg
2023-08-26 2:01 ` Richard Stallman
2023-08-26 5:48 ` Eli Zaretskii
2023-08-26 18:15 ` Emanuel Berg
2023-08-26 18:27 ` Eli Zaretskii
2023-08-20 19:14 ` Eli Zaretskii
2023-08-20 19:44 ` Ihor Radchenko
2023-08-20 20:11 ` Alfred M. Szmidt
2023-08-21 2:35 ` Eli Zaretskii
2023-08-21 8:48 ` Ihor Radchenko
2023-08-21 11:10 ` Eli Zaretskii
2023-08-21 11:59 ` Ihor Radchenko
2023-08-21 12:23 ` Eli Zaretskii
2023-08-23 10:13 ` Ihor Radchenko
2023-08-20 20:32 ` Emanuel Berg
2023-08-21 6:19 ` Alfred M. Szmidt
2023-08-21 6:26 ` Ihor Radchenko
2023-08-21 7:21 ` Alfred M. Szmidt
2023-08-21 7:25 ` Ihor Radchenko
2023-08-21 7:52 ` Alfred M. Szmidt
2023-08-21 11:26 ` Ihor Radchenko
2023-08-22 23:55 ` Emanuel Berg
2023-08-23 7:04 ` Alfred M. Szmidt
2023-08-23 17:24 ` Emanuel Berg
2023-08-24 20:02 ` Emanuel Berg
2023-08-20 21:51 ` [External] : " Drew Adams
2023-08-21 8:54 ` Type declarations in Elisp (was: [External] : Re: Shrinking the C core) Ihor Radchenko
2023-08-21 9:30 ` Gerd Möllmann
2023-08-21 11:13 ` Type declarations in Elisp Eli Zaretskii
2023-08-21 11:37 ` Type declarations in Elisp (was: [External] : Re: Shrinking the C core) Ihor Radchenko
2023-08-22 5:34 ` Type declarations in Elisp Gerd Möllmann
2023-08-22 6:16 ` Ihor Radchenko
2023-08-22 11:14 ` Eli Zaretskii
2023-08-22 23:33 ` Emanuel Berg
2023-08-25 9:29 ` Andrea Corallo
2023-08-25 20:42 ` Emanuel Berg
2023-08-27 8:42 ` Ihor Radchenko
2023-08-27 14:04 ` Andrea Corallo
2023-08-27 14:07 ` Ihor Radchenko
2023-08-27 15:46 ` Andrea Corallo
2023-08-27 17:15 ` Ihor Radchenko
2023-08-27 18:06 ` Andrea Corallo
2023-08-28 9:56 ` Ihor Radchenko
2023-08-28 19:06 ` Emanuel Berg
2023-08-18 8:35 ` Shrinking the C core Aurélien Aptel
2023-08-19 13:32 ` Emanuel Berg
2023-08-31 1:41 ` Emanuel Berg
2023-08-14 2:36 ` Richard Stallman
2023-08-14 4:12 ` Emanuel Berg
2023-08-14 11:15 ` Ihor Radchenko
2023-08-12 3:28 ` Christopher Dimech
2023-08-12 3:48 ` Emanuel Berg
2023-08-12 3:50 ` Emanuel Berg
2023-08-12 6:00 ` Christopher Dimech
2023-08-12 6:02 ` Eli Zaretskii
2023-08-12 7:38 ` Christopher Dimech
2023-08-09 12:45 ` Eli Zaretskii [this message]
2023-08-09 16:11 ` Eric S. Raymond
2023-08-09 16:44 ` Eli Zaretskii
2023-08-09 17:57 ` Eric S. Raymond
-- strict thread matches above, loose matches on Subject: below --
2023-08-13 7:59 Gerd Möllmann
2023-08-13 8:44 ` Emanuel Berg
2023-08-13 8:06 Gerd Möllmann
2023-08-13 9:26 ` Emanuel Berg
2023-08-13 11:20 Gerd Möllmann
2023-08-13 12:52 ` Ihor Radchenko
2023-08-27 15:14 Arthur Miller
2023-08-27 16:29 ` Eli Zaretskii
2023-08-28 5:32 ` Gerd Möllmann
2023-08-28 6:23 ` Arthur Miller
2023-08-28 6:21 ` Arthur Miller
2023-08-28 1:31 ` Richard Stallman
2023-08-28 5:50 ` Arthur Miller
2023-08-28 12:20 ` Po Lu
2023-08-28 14:39 ` Arthur Miller
2023-08-28 15:17 ` Po Lu
2023-08-29 2:41 ` Arthur Miller
2023-08-28 1:41 ` Po Lu
2023-08-28 2:53 ` chad
2023-08-28 3:43 ` Emanuel Berg
2023-08-28 4:53 ` Arthur Miller
2023-08-28 5:36 ` Po Lu
2023-08-28 6:55 ` Arthur Miller
2023-08-28 7:31 ` Po Lu
2023-08-28 8:06 ` Ihor Radchenko
2023-08-28 14:30 ` Arthur Miller
2023-08-28 15:09 ` Ihor Radchenko
2023-08-29 2:20 ` Arthur Miller
2023-08-28 15:14 ` Po Lu
2023-08-29 2:36 ` Arthur Miller
2023-08-29 4:07 ` Po Lu
2023-08-31 1:07 ` Emanuel Berg
2023-08-28 14:08 ` Arthur Miller
2023-08-28 15:08 ` Po Lu
2023-08-29 2:06 ` Arthur Miller
2023-08-29 4:15 ` Po Lu
2023-08-29 11:50 ` Eli Zaretskii
2023-08-29 3:57 ` Arthur Miller
2023-09-01 1:18 ` Richard Stallman
2023-08-31 2:07 ` Richard Stallman
2023-09-01 14:58 ` Arthur Miller
2023-09-01 16:36 ` tomas
2023-09-04 1:32 ` Richard Stallman
2023-09-04 1:44 ` Emanuel Berg
2023-09-04 5:49 ` Rudolf Schlatte
2023-09-04 14:08 ` Emanuel Berg
2023-09-07 1:21 ` Richard Stallman
2023-09-07 1:54 ` Emanuel Berg
2023-09-07 7:02 ` tomas
2023-09-07 7:36 ` Alfred M. Szmidt
2023-09-07 7:56 ` Emanuel Berg
2023-09-07 8:19 ` Ihor Radchenko
2023-09-07 8:39 ` Emanuel Berg
2023-09-07 9:28 ` Alfred M. Szmidt
2023-09-09 1:00 ` Emanuel Berg
2023-09-09 6:25 ` Po Lu
2023-09-09 7:24 ` Eli Zaretskii
2023-09-07 9:31 ` Eli Zaretskii
2023-09-07 9:39 ` Ihor Radchenko
2023-09-09 1:06 ` Emanuel Berg
2023-09-11 0:43 ` Richard Stallman
2023-09-11 12:24 ` Eli Zaretskii
2023-09-11 12:43 ` tomas
2023-09-13 5:59 ` Emanuel Berg
2023-09-12 4:44 ` Gerd Möllmann
2023-09-12 12:25 ` João Távora
2023-09-12 11:31 ` Lynn Winebarger
2023-09-13 6:12 ` Emanuel Berg
2023-09-05 4:23 ` Arthur Miller
2023-09-06 0:58 ` Richard Stallman
2023-09-06 1:12 ` Emanuel Berg
2023-09-06 5:04 ` Arthur Miller
2023-09-06 11:29 ` Alan Mackenzie
2023-09-06 23:03 ` Emanuel Berg
2023-09-07 7:00 ` tomas
2023-09-07 7:23 ` Emanuel Berg
2023-09-07 7:52 ` tomas
2023-09-07 5:30 ` Po Lu
2023-09-07 6:15 ` Emanuel Berg
2023-09-11 0:43 ` Richard Stallman
2023-09-11 12:05 ` Eli Zaretskii
2023-09-12 23:55 ` Richard Stallman
2023-09-13 6:34 ` Emanuel Berg
2023-09-07 8:51 ` Manuel Giraud via Emacs development discussions.
2023-09-07 9:20 ` Po Lu
2023-09-07 9:34 ` Eli Zaretskii
2023-09-08 2:00 ` Arthur Miller
2023-09-08 7:35 ` Gerd Möllmann
2023-09-09 10:05 ` João Távora
2023-09-08 17:58 ` Bob Rogers
2023-09-15 21:59 ` Emanuel Berg
2023-09-17 23:03 ` Richard Stallman
2023-09-09 0:39 ` Richard Stallman
2023-09-09 12:50 ` Arthur Miller
2023-09-12 0:27 ` Richard Stallman
2023-08-28 7:45 ` Andrea Monaco
2023-08-28 14:35 ` Arthur Miller
2023-09-12 3:46 Arthur Miller
2023-09-12 11:55 ` Eli Zaretskii
2023-09-12 18:22 ` chad
2023-09-12 18:47 ` Yuri Khan
2023-09-12 19:06 ` Eli Zaretskii
2023-09-12 19:07 ` joakim
2023-09-12 19:42 ` Eli Zaretskii
2023-09-12 21:56 ` joakim
2023-09-13 5:05 ` Emanuel Berg
2023-09-13 14:29 ` joakim
2023-09-15 5:46 ` Emanuel Berg
2023-09-13 15:33 ` Fraga, Eric
2023-09-15 5:51 ` Emanuel Berg
2023-09-15 11:38 ` Fraga, Eric
2023-09-12 3:51 Arthur Miller
2023-09-12 4:47 ` tomas
2023-09-12 11:29 ` Po Lu
2023-09-12 13:02 ` Alfred M. Szmidt
2023-09-13 5:06 Arthur Miller
2023-09-13 6:33 ` Gerd Möllmann
2023-09-14 11:35 ` Arthur Miller
2023-09-14 13:03 ` Gerd Möllmann
2023-09-14 13:20 ` Eli Zaretskii
2023-09-15 17:11 ` Emanuel Berg
2023-09-15 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
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=83y1ikl6yo.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=esr@thyrsus.com \
/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 external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.