all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Pip Cet <pipcet@gmail.com>
To: Eli Zaretskii <eliz@gnu.org>
Cc: eggert@cs.ucla.edu, emacs-devel@gnu.org
Subject: Re: Changes in GC and in pure space (was: [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch)
Date: Mon, 22 Jul 2019 19:05:43 +0000	[thread overview]
Message-ID: <CAOqdjBez+8BeDzcqZLFWTDCHij8kjyuCU7pXudt0ArGN9Myr-Q@mail.gmail.com> (raw)
In-Reply-To: <83blxmqfkq.fsf@gnu.org>

On Mon, Jul 22, 2019 at 3:01 PM Eli Zaretskii <eliz@gnu.org> wrote:
> Please be aware that these changes might potentially affect the
> schedule of the Emacs 27 release.

Thank you for keeping that in mind. I don't think we should delay the
Emacs 27 release, and I understand completely if we have to delay
improvements until Emacs 28.

> Emacs 27 has accrued many new features and important improvements, and
> has proven to be generally very stable.  My intentions were to start
> its pretest in the September-October time-frame, with the goal of
> releasing Emacs 27.1 a few months later.

That sounds like a good schedule to me.

> Your changes in GC, which is a very delicate part of Emacs, might
> affect its stability and force us to analyze and fix hard-to-debug
> crashes, and thus postpone the beginning of the pretest and the
> subsequent release.  I think we should try to avoid postponing the
> 27.1 release, what with the many new features it will give our users.

I think this is mostly directed at Paul, but I agree major GC changes
should wait until Emacs 28. I can't think of a really good example,
but I think the bug that triggered this discussion will have to do:
had it remained undiscovered, we would have seen very strange and
unpredictable behavior indeed; some Emacs sessions that fail to GC and
run out of memory, and some sessions that GC at every maybe_gc call.

> The same goes for removing the pure space, IMO: another core feature
> whose existence and traits many parts of Emacs came to take for
> granted.

Let's not remove pure space for Emacs 27.

(The traits of pure space changed significantly, with the introduction
of pdumper: CHECK_IMPURE is now a nop rather than a valuable debugging
aid, and PURE_P is always false. That is something we should mention
somewhere, along with all the good NEWS, because it will make Emacs 27
harder to maintain.  But that's all we should do, I think, document
the odd state we're in now and resolve to change it when it is more
appropriate to do so.)

> I'm all for improving GC and simplifying our memory management, but
> please keep the above in your minds when you play with this stuff.
> Especially as, judging by the changes you are making, the details and
> indeed some of the aspects of the idea of the changes, are not yet
> sufficiently clear/finalized.

I'm forced to agree, as far as my ideas are concerned.

Eager rehashing of hash tables: needs to be timed precisely right for
user-defined dumped hash tables to work, as Paul apparently wants them
to, and my current proposal isn't (but let's fix Fclrhash to work on
non-rehashed hash tables).

Hash tables without internal free vectors: change the interpretation
of the hash table API (:size has to be reinterpreted to remain
meaningful), and some trade-offs about when to use hash tables.

Four tag bits for "annotated" (e.g., immutable) objects: very far from
ready, and problematic on 32-bit machines (perhaps this is no longer a
concern for Emacs 28...)

Turning pseudovectors into their own tag type, as miscellaneous
objects: not convinced it's worth the change, yet.

> An alternative would be to make these changes on a branch, and merge
> that branch when it is sufficiently stable and mature.  Please
> consider this possibility.  After all, these two issues are not
> terribly urgent to fix (unlike, say, the unexec thingy).

I'm not quite sure which "unexec thingy" you're referring to.

Here are things I would consider urgent enough to warrant looking at
for Emacs 27:
- remove code like we have in `Ffset' to detect GC bugs that
presumably have been fixed by now
- make_fixnum called for numbers outside the fixnum range
- various places that should detect circular lists but don't (lread.c
reading hash tables, for example)
- doubly-evaluated macro arguments (the one I can think of offhand is
DUMP_SET_REFERRER, which is harmless, but others might not be)
- since we appear to be stuck with lazy rehashing for now, the various
bugs this causes (I mentioned Fclrhash above)



  parent reply	other threads:[~2019-07-22 19:05 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20190721193221.1964.53182@vcs0.savannah.gnu.org>
     [not found] ` <20190721193222.8C19E20BE2@vcs0.savannah.gnu.org>
2019-07-22  4:12   ` [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch Pip Cet
2019-07-22 13:40     ` Stefan Monnier
2019-07-23  1:06       ` Paul Eggert
2019-07-22 15:00     ` Changes in GC and in pure space (was: [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch) Eli Zaretskii
2019-07-22 17:47       ` Paul Eggert
2019-07-22 18:19         ` Changes in GC and in pure space Eli Zaretskii
2019-07-22 19:58           ` Stefan Monnier
2019-07-23  1:43             ` Paul Eggert
2019-07-23 14:46               ` Eli Zaretskii
2019-07-23 16:27                 ` Paul Eggert
2019-07-23 16:58                   ` Eli Zaretskii
2019-07-23  2:25             ` Eli Zaretskii
2019-07-23  1:29         ` bug#36769: portable dumper mishandles user-defined hashtabs Paul Eggert
2019-07-23  2:06           ` Paul Eggert
2019-07-22 19:05       ` Pip Cet [this message]
2019-07-23 14:56         ` Changes in GC and in pure space (was: [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch) Eli Zaretskii
2019-07-23 15:33         ` Changes in GC and in pure space Stefan Monnier
2019-07-24  3:06           ` Richard Stallman
2019-08-15  9:34         ` Changes in GC and in pure space (was: [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch) Paul Eggert
2019-08-16 13:34           ` Pip Cet
2019-08-22  0:25             ` Paul Eggert
2019-08-22  2:06             ` Paul Eggert
2019-08-22  5:36             ` Paul Eggert
2019-09-04  6:05             ` Paul Eggert
2019-09-04 14:51               ` Eli Zaretskii
2019-09-04 16:56                 ` Paul Eggert
2019-09-04 17:36                 ` Daniel Colascione
2019-09-04 17:45                 ` Changes in GC and in pure space Stefan Monnier
2019-09-04 18:34                   ` Óscar Fuentes
2019-09-04 19:15                     ` Paul Eggert
2019-09-05  7:04                   ` Paul Eggert
2019-07-24  2:58       ` Changes in GC and in pure space (was: [Emacs-diffs] master 5d4dd55: Fix lifetime error in previous patch) 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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=CAOqdjBez+8BeDzcqZLFWTDCHij8kjyuCU7pXudt0ArGN9Myr-Q@mail.gmail.com \
    --to=pipcet@gmail.com \
    --cc=eggert@cs.ucla.edu \
    --cc=eliz@gnu.org \
    --cc=emacs-devel@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.
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.