Subject: bug#69703: Ispell process restarted too often

From: Eli Zaretskii <[email-masked]>
Date: Tue, 12 Mar 2024 16:44:26 +0200

> From: Juri Linkov <[email-masked]>
> Cc: [email-masked]
> Date: Tue, 12 Mar 2024 09:45:14 +0200
> 
> >> The nature of the problem is the inability of ispell.el to maintain
> >> multiple processes with different dictionaries simultaneously
> >> that is required by flyspell-mode.
> >> 
> >> What is needed here is a hash of processes where the key is
> >> the ispell program name and its dictionary arguments.
> >
> > Feel free to submit patches for that, and thanks.  (But didn't you
> > just complain about one speller process per buffer?)
> 
> Since implementing this is not urgent, here is a design outline
> for possible future improvements:
> 
> 1. Create a pool of Ispell processes.
> 
> 2. Instead of killing Ispell processes
>    just get the process from the pool
>    by the ispell program name and its dictionary arguments.

This assumes that the number of different personal dictionaries is
much smaller than the number of buffers under flyspell-mode.  Since I
don't quite understand why you need so many personal dictionaries
(presumably for the same language?), I cannot say whether this
assumption is reasonable or scalable.  In general, if we want to
support buffer-local speller processes, we could have hundreds of
speller processes running on the system, which is not very nice, I
think.

The current design is generally based on the following assumptions:

  . a speller process is mostly needed in a single buffer at a time,
    the buffer where the user is typing
  . a speller process needs to be restarted only if you change the
    dictionary, which is done when you need to spell-check a different
    language
  . the number of languages for which the user needs spell-checking is
    small (or even spell-checked by a single speller, if that is
    Hunspell)