unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Lynn Winebarger <owinebar@gmail.com>
To: Gregory Heytings <gregory@heytings.org>
Cc: emacs-devel <emacs-devel@gnu.org>
Subject: Re: Regression in dump-emacs-portable
Date: Thu, 23 Feb 2023 17:32:12 -0500	[thread overview]
Message-ID: <CAM=F=bDfR99L+WAj0W0rO1DBOruwA3O1bCeOgRy2LCLJHpprkA@mail.gmail.com> (raw)
In-Reply-To: <96b742a05d8973cda0fd@heytings.org>

On Thu, Feb 23, 2023 at 10:08 AM Gregory Heytings <gregory@heytings.org> wrote:
> > I mentioned redumping a maximal set of core emacs libraries under 28.2
> > in a recent thread.
> >
>
> Just out of curiosity: what is the purpose of doing that?  You already
> mentioned several times that you are trying to create a "fully-loaded"
> Emacs, with as many packages as possible in the dump file (IIUC), but
> without explaining why (IIRC).

I've been an emacs user for a pretty long time though with frequency
depending on how much coding I happen to be doing in my leisure time.
In my day job, I've been using other editors/IDEs.  So while I enjoy
pretending I am a grad student at MIT's AI labs on Symbolics LISP
machines circa the mid-late 1980s, I am curious about the extent to
which Emacs has the features of these other editors,  In terms of
technical design, VSCode is probably the closest, in terms of much of
the interface being implemented in a dynamic language accessible to
the user at run-time.  V8 even provides a form of dumping, although I
don't know that VSCode supports it for end-users.  So, while I can
appreciate the desire for a parsimonious build that can be run with
limited resources, the competitor products regularly use 100-200MBs in
a process and I see no reason to avoid processes using similar amounts
of resources.
I've also historically used the default settings of Emacs for the most
part.  But if I want to see how optional features provided by packages
actually work, I want to be able to turn them on and off in an
options-type menu the way I would in these other editors.  Some
libraries/packages provide customizations via autoload, but to really
be sure you see all the knobs (and get some notion of what the
functionality might be), the packages have to be loaded.  Loading a
bunch of libraries/packages (particularly packages) at startup can be
slow.  If you load 1000 packages plus emacs, that can easily take 2+
minutes to load.  At 2000-2500 packages, 5 minutes is a fair
expectation.  When I was doing this with native-compiled modules, it
was paradoxically even slower.  Dump files, whether build-time dumps
or redumps, are just much much faster to load.  Plus, it's the closest
thing emacs's garbage collector has to a compacting generational
collection.  Loading libraries creates plenty of garbage but also the
longest-living objects in the system, so it makes the GC more
efficient to ensure those objects are compacted.
Ultimately, I think it would be fun to write support for a modular
dump file format for more efficient library loading.  But first, it
makes sense to understand the functionality already available and
measure its performance for benchmarking purposes.  And encourage
others to make use of those facilities, so they do not wither on the
vine.

Lynn



  reply	other threads:[~2023-02-23 22:32 UTC|newest]

Thread overview: 27+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2023-02-13  0:51 Regression in dump-emacs-portable Lynn Winebarger
2023-02-14  1:13 ` Lynn Winebarger
2023-02-14 14:23   ` Eli Zaretskii
2023-02-14 23:26     ` Lynn Winebarger
2023-02-15 12:42       ` Eli Zaretskii
2023-02-16  9:31         ` Lynn Winebarger
2023-02-16  9:54           ` Lynn Winebarger
2023-02-16 15:05             ` Lynn Winebarger
2023-02-16 15:34               ` Eli Zaretskii
2023-02-16 23:45                 ` Lynn Winebarger
2023-02-17 13:22                   ` Lynn Winebarger
2023-02-17 14:31                     ` Eli Zaretskii
2023-02-17 23:44                       ` Lynn Winebarger
2023-02-18  7:07                         ` Eli Zaretskii
2023-02-21 14:21                           ` Lynn Winebarger
2023-02-23  2:41                             ` Lynn Winebarger
2023-02-23 13:21                 ` Lynn Winebarger
2023-02-16 15:46           ` Eli Zaretskii
2023-02-17  1:29             ` Lynn Winebarger
2023-02-17  3:19               ` Lynn Winebarger
2023-02-17  4:10               ` Lynn Winebarger
2023-02-17  5:21                 ` Po Lu
2023-02-17 12:57                   ` Lynn Winebarger
2023-02-23 15:08 ` Gregory Heytings
2023-02-23 22:32   ` Lynn Winebarger [this message]
2023-02-25  4:11     ` Richard Stallman
2023-02-25  4:11     ` Richard Stallman

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='CAM=F=bDfR99L+WAj0W0rO1DBOruwA3O1bCeOgRy2LCLJHpprkA@mail.gmail.com' \
    --to=owinebar@gmail.com \
    --cc=emacs-devel@gnu.org \
    --cc=gregory@heytings.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.
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).