On Thu, Sep 04 2025, Gerd Möllmann wrote: > Helmut Eller writes: [...] >> What would you think of making mps_arena_step and perhaps buffer_step >> available from Lisp so that those things can be called from Lisp-level >> idle timers? > > Sounds like a good idea. Below is a patch that does this. The idle timer waits 2 seconds, before it calls mps_arena_step. As usual, "idle time" is the time since the last command completed, i.e. 2 seconds must pass after a command before the idle timer fires. (Other timers or process filters don't reset "idle time"; only new commands do.) I think that should avoid the problem that I've seen where opportunistic GC was started while I was in the middle of typing something. The code uses a constant to predict the idle time; maybe one could to something a bit more clever; not sure if that would be worth the trouble. Regarding bug#76505 (or https://github.com/Ravenbrook/mps/issues/305), I now think that it's safe to call mps_arena_step with multiplier=0: The expression (availableEnd - now) never overflows because the invariant now <= intervalEnd <= availableEnd holds.