unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Default of jit-lock-stealth-time
@ 2007-02-25 12:13 David Kastrup
  2007-02-25 13:31 ` martin rudalics
                   ` (3 more replies)
  0 siblings, 4 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-25 12:13 UTC (permalink / raw)
  To: emacs-devel


Hi,

I think that for the release, we should set jit-lock-stealth-time to
nil rather than its default of 16.

The reason is that Emacs wastes time fontifying buffers that might
never get displayed.  In addition, for problematic font-lock files,
Emacs' overall response gets sluggish, the cursor display gets
erratic, and system load goes up for no conceivable reason.

The problem is exacerbated when one has lots of buffers open and uses
desktop.el or similar packages.

For example, one of my buffers tends to be texbook.tex for reference
purposes.  This has unbalanced $ signs which make the syntax
highlighting thrash a lot.  It renders my whole system unresponsive
because an unattended Emacs session will at some point of time start
wasting cycles on a file that I have not accessed for days, and likely
will not access for several more days.  Apparently, the stealth
fontification gets stuck without useful progress.  In contrast,
opening the file directly will finish the problematic areas pretty
much immediately.

Other people might have fewer problems, but I would ask any developer
defending this default setting to customize
jit-lock-stealth-verbose
to t and then see in daily use whether he thinks the results a good
idea.

Personally, I am very much of the opinion that we should not enable
_any_ actions by default that can potentially waste considerable
amounts of CPU power in areas not immediately related to user
interaction.

Regardless of the system load: the load may be low at the moment
_exactly_ because the user terminated all processes that would disturb
the interactivity of his current work, and I think it a mistake that
Emacs considers the CPU fit for grabbing for its own purposes unless
the user _explicitly_ asked for it.

Whether it would be desirable to apply more fixes to stealth
fontification, I have no idea.  But the default enabling of it is a
mistake in my book regardless of whether it can be made less onerous.

The problem is exacerbated since it is impossible to guess what the
problem is when your system goes irresponsive:

Setting debug-on-quit will not deliver a backtrace pointing to
jit-lock at all when you press C-g: C-g does not interrupt timers.

There might always be buffers that cause font-lock to behave badly.
Emacs should not attempt fontifying them unless the user puts them
on-screen.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-25 12:13 Default of jit-lock-stealth-time David Kastrup
@ 2007-02-25 13:31 ` martin rudalics
  2007-02-25 22:29 ` Kim F. Storm
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 89+ messages in thread
From: martin rudalics @ 2007-02-25 13:31 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> I think that for the release, we should set jit-lock-stealth-time to
> nil rather than its default of 16.

I think so too.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-25 12:13 Default of jit-lock-stealth-time David Kastrup
  2007-02-25 13:31 ` martin rudalics
@ 2007-02-25 22:29 ` Kim F. Storm
  2007-02-26  3:27 ` Richard Stallman
  2007-02-26  4:39 ` Stefan Monnier
  3 siblings, 0 replies; 89+ messages in thread
From: Kim F. Storm @ 2007-02-25 22:29 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Hi,
>
> I think that for the release, we should set jit-lock-stealth-time to
> nil rather than its default of 16.

I agree.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-25 12:13 Default of jit-lock-stealth-time David Kastrup
  2007-02-25 13:31 ` martin rudalics
  2007-02-25 22:29 ` Kim F. Storm
@ 2007-02-26  3:27 ` Richard Stallman
  2007-02-26  4:56   ` Stefan Monnier
  2007-02-26  7:16   ` David Kastrup
  2007-02-26  4:39 ` Stefan Monnier
  3 siblings, 2 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-26  3:27 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

    Regardless of the system load: the load may be low at the moment
    _exactly_ because the user terminated all processes that would disturb
    the interactivity of his current work, and I think it a mistake that
    Emacs considers the CPU fit for grabbing for its own purposes unless
    the user _explicitly_ asked for it.

Stealth fontification is intended to stop whenever the user types a
character.  So why would it interfere with the "interactivity" of
Emacs commands?  Is there a bug which prevents stealth fontification
from stopping quickly?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-25 12:13 Default of jit-lock-stealth-time David Kastrup
                   ` (2 preceding siblings ...)
  2007-02-26  3:27 ` Richard Stallman
@ 2007-02-26  4:39 ` Stefan Monnier
  2007-02-26  7:11   ` Romain Francoise
  3 siblings, 1 reply; 89+ messages in thread
From: Stefan Monnier @ 2007-02-26  4:39 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> I think that for the release, we should set jit-lock-stealth-time to
> nil rather than its default of 16.

100% agreement.  My .emacs has set it to nil for several years now.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  3:27 ` Richard Stallman
@ 2007-02-26  4:56   ` Stefan Monnier
  2007-02-26 19:52     ` Richard Stallman
  2007-02-26  7:16   ` David Kastrup
  1 sibling, 1 reply; 89+ messages in thread
From: Stefan Monnier @ 2007-02-26  4:56 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

>     Regardless of the system load: the load may be low at the moment
>     _exactly_ because the user terminated all processes that would disturb
>     the interactivity of his current work, and I think it a mistake that
>     Emacs considers the CPU fit for grabbing for its own purposes unless
>     the user _explicitly_ asked for it.

> Stealth fontification is intended to stop whenever the user types a
> character.  So why would it interfere with the "interactivity" of
> Emacs commands?  Is there a bug which prevents stealth fontification
> from stopping quickly?

Yes, I know of at least 2 causes:
- it's based on polling and may take a long time before the next poll
- the stealth-fontification causes swapping, and so even if the poll comes
  immediately, pages need to be swapped back in before the user's command
  can complete.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  4:39 ` Stefan Monnier
@ 2007-02-26  7:11   ` Romain Francoise
  2007-02-26  7:35     ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Romain Francoise @ 2007-02-26  7:11 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> 100% agreement.  My .emacs has set it to nil for several years
> now.

Same here.

-- 
Romain Francoise <romain@orebokech.com> | The sea! the sea! the open
it's a miracle -- http://orebokech.com/ | sea! The blue, the fresh, the
                                        | ever free! --Bryan W. Procter

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  3:27 ` Richard Stallman
  2007-02-26  4:56   ` Stefan Monnier
@ 2007-02-26  7:16   ` David Kastrup
  2007-02-26 19:53     ` Richard Stallman
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-26  7:16 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Regardless of the system load: the load may be low at the moment
>     _exactly_ because the user terminated all processes that would disturb
>     the interactivity of his current work, and I think it a mistake that
>     Emacs considers the CPU fit for grabbing for its own purposes unless
>     the user _explicitly_ asked for it.
>
> Stealth fontification is intended to stop whenever the user types a
> character.  So why would it interfere with the "interactivity" of
> Emacs commands?

Who is talking about the interactivity of Emacs?  Emacs might not be
the only application on the system.

> Is there a bug which prevents stealth fontification from stopping
> quickly?

Actually, yes.  There are font-locking situations in stealth
fontification that don't finish immediately and even cause quite a bit
of sluggishness for Emacs itself.

But even apart from that, even if all font lock patterns for all modes
worked perfectly, this causes _considerable_ power drain whenever I
restart Emacs, reloading all files using desktop.el.  The fan goes on,
blinking gets sluggish, and I notice that Emacs is eating my batteries
_again_.

Even if this worked perfectly (which it doesn't), we have no business
eating "stealth CPU" power in the default configuration since it is
near impossible for the user (heck, I am not exactly naive, and it was
impossible for me to find this on my own without an explicit pointer
after an error report) to guess just _what_ is eating her CPU.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  7:11   ` Romain Francoise
@ 2007-02-26  7:35     ` David Kastrup
  2007-02-26 10:20       ` Andreas Schwab
                         ` (2 more replies)
  0 siblings, 3 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-26  7:35 UTC (permalink / raw)
  To: emacs-devel

Romain Francoise <romain@orebokech.com> writes:

> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>
>> 100% agreement.  My .emacs has set it to nil for several years
>> now.
>
> Same here.

Do we have a _single_ developer who still has it on and has observed
_benefits_ from its use?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  7:35     ` David Kastrup
@ 2007-02-26 10:20       ` Andreas Schwab
  2007-02-26 10:43         ` David Kastrup
  2007-02-26 10:24       ` Kim F. Storm
  2007-02-26 19:56       ` Eli Zaretskii
  2 siblings, 1 reply; 89+ messages in thread
From: Andreas Schwab @ 2007-02-26 10:20 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Do we have a _single_ developer who still has it on

I do.

> and has observed _benefits_ from its use?

At least I didn't notice any negative impact so far.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  7:35     ` David Kastrup
  2007-02-26 10:20       ` Andreas Schwab
@ 2007-02-26 10:24       ` Kim F. Storm
  2007-02-26 13:42         ` martin rudalics
  2007-02-26 19:56       ` Eli Zaretskii
  2 siblings, 1 reply; 89+ messages in thread
From: Kim F. Storm @ 2007-02-26 10:24 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Romain Francoise <romain@orebokech.com> writes:
>
>> Stefan Monnier <monnier@iro.umontreal.ca> writes:
>>
>>> 100% agreement.  My .emacs has set it to nil for several years
>>> now.
>>
>> Same here.
>
> Do we have a _single_ developer who still has it on and has observed
> _benefits_ from its use?

Mine's set to nil too.

I actually forgot all about it until David raised the issue again.

It seems that several developers have set it to nil -- because it
a) doesn't really do any good, and
b) has bad effects on Emacs or the system as a whole

So it seems plain stupid to release it with a setting that will impact
and annoy users and cause a support burden after the release.

I agree that the default should be nil, and IMO a non-nil default
setting for this is a really serious bug.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 10:20       ` Andreas Schwab
@ 2007-02-26 10:43         ` David Kastrup
  2007-02-26 10:56           ` Andreas Schwab
  2007-02-26 11:26           ` Juanma Barranquero
  0 siblings, 2 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-26 10:43 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: emacs-devel

Andreas Schwab <schwab@suse.de> writes:

> David Kastrup <dak@gnu.org> writes:
>
>> Do we have a _single_ developer who still has it on
>
> I do.
>
>> and has observed _benefits_ from its use?
>
> At least I didn't notice any negative impact so far.

The symptom would be CPU load, and sluggish response of Emacs and the
system in general, when one leaves Emacs unattended for longer amounts
of time.

This is particularly noticeable if the noise level of your system
depends on the CPU load (like increased fan usage).

Would you be likely to notice this on your system?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 10:43         ` David Kastrup
@ 2007-02-26 10:56           ` Andreas Schwab
  2007-02-27  7:38             ` Richard Stallman
  2007-02-26 11:26           ` Juanma Barranquero
  1 sibling, 1 reply; 89+ messages in thread
From: Andreas Schwab @ 2007-02-26 10:56 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup <dak@gnu.org> writes:

> Andreas Schwab <schwab@suse.de> writes:
>
>> David Kastrup <dak@gnu.org> writes:
>>
>>> Do we have a _single_ developer who still has it on
>>
>> I do.
>>
>>> and has observed _benefits_ from its use?
>>
>> At least I didn't notice any negative impact so far.
>
> The symptom would be CPU load, and sluggish response of Emacs and the
> system in general, when one leaves Emacs unattended for longer amounts
> of time.

I cannot say that I have seen this so far.  The instance of Emacs I'm
currently using was started 41 days ago, and I have another one running
for 69 days (the latter is only used for irc).

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 10:43         ` David Kastrup
  2007-02-26 10:56           ` Andreas Schwab
@ 2007-02-26 11:26           ` Juanma Barranquero
  2007-02-26 11:28             ` David Kastrup
  2007-02-26 12:13             ` Jan Djärv
  1 sibling, 2 replies; 89+ messages in thread
From: Juanma Barranquero @ 2007-02-26 11:26 UTC (permalink / raw)
  To: David Kastrup; +Cc: Andreas Schwab, emacs-devel

On 2/26/07, David Kastrup <dak@gnu.org> wrote:

I don't have an opinion about the setting of the variable, but FWIW
I'm in Andreas' boat: I have it at default value, and I've never
noticed any ill effect.

> This is particularly noticeable if the noise level of your system
> depends on the CPU load (like increased fan usage).
>
> Would you be likely to notice this on your system?

Not at work's machine, but definitely on my home's laptop. And I
didn't notice it (not that it didn't happen, but if it *did* happen it
wasn't much of an issue).

Perhaps a better metric would be: do you always have lots of buffers?
I don't. Most of the time I have perhaps two or three (non-special)
buffers open. I tend to quickly close any buffer I'm not working on.

             Juanma

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 11:26           ` Juanma Barranquero
@ 2007-02-26 11:28             ` David Kastrup
  2007-02-26 14:56               ` Juanma Barranquero
  2007-02-26 12:13             ` Jan Djärv
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-26 11:28 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Andreas Schwab, emacs-devel

"Juanma Barranquero" <lekktu@gmail.com> writes:

> On 2/26/07, David Kastrup <dak@gnu.org> wrote:
>
> I don't have an opinion about the setting of the variable, but FWIW
> I'm in Andreas' boat: I have it at default value, and I've never
> noticed any ill effect.
>
>> This is particularly noticeable if the noise level of your system
>> depends on the CPU load (like increased fan usage).
>>
>> Would you be likely to notice this on your system?
>
> Not at work's machine, but definitely on my home's laptop. And I
> didn't notice it (not that it didn't happen, but if it *did* happen it
> wasn't much of an issue).
>
> Perhaps a better metric would be: do you always have lots of
> buffers?

Yes.

> I don't. Most of the time I have perhaps two or three (non-special)
> buffers open. I tend to quickly close any buffer I'm not working on.

Ok, but working with many buffers is not something particularly
forbidden.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 11:26           ` Juanma Barranquero
  2007-02-26 11:28             ` David Kastrup
@ 2007-02-26 12:13             ` Jan Djärv
  1 sibling, 0 replies; 89+ messages in thread
From: Jan Djärv @ 2007-02-26 12:13 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: Andreas Schwab, emacs-devel



Juanma Barranquero skrev:
> On 2/26/07, David Kastrup <dak@gnu.org> wrote:
> 
> I don't have an opinion about the setting of the variable, but FWIW
> I'm in Andreas' boat: I have it at default value, and I've never
> noticed any ill effect.

I have the default as well.  I have noticed that Emacs can take some CPU when 
it "should" be idle.  However, for the most part, I can't say I noticed any 
ill effects either.

> 
>> This is particularly noticeable if the noise level of your system
>> depends on the CPU load (like increased fan usage).
>>
>> Would you be likely to notice this on your system?
> 
> Not at work's machine, but definitely on my home's laptop. And I
> didn't notice it (not that it didn't happen, but if it *did* happen it
> wasn't much of an issue).

I notice increased fan noice at work.

> 
> Perhaps a better metric would be: do you always have lots of buffers?
> I don't. Most of the time I have perhaps two or three (non-special)
> buffers open. I tend to quickly close any buffer I'm not working on.

I usually have something like 50-200 buffer.  Reloading the desktop is not 
very fast :-)

	Jan D.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 10:24       ` Kim F. Storm
@ 2007-02-26 13:42         ` martin rudalics
  2007-02-26 14:26           ` Stefan Monnier
  2007-02-26 15:10           ` David Kastrup
  0 siblings, 2 replies; 89+ messages in thread
From: martin rudalics @ 2007-02-26 13:42 UTC (permalink / raw)
  To: Kim F. Storm; +Cc: emacs-devel

 > So it seems plain stupid to release it with a setting that will impact
 > and annoy users and cause a support burden after the release.

While I agree with all of David's arguments (and even add the one that
a buffer tail is stealthily refontified after every single buffer change
followed by 16 secs idleness) I'm afraid that setting this to nil won't
remove any support burden.  Many major modes still work better when they
are allowed to fontify a buffer from beginning to end.

Also, when a mode uses font-lock to assign `syntax-table' properties,
there's a slight chance that an editing sequence that worked with
stealth fontification turned on will not work any more when stealth
fontification is turned off.  Having fontification assign syntax-table
properties is certainly flawed by design but at the moment there's no
other way to do that automatically.

With other words, setting this to nil may cause some obscure bugs get
reported (and hopefully fixed) earlier ...

martin, who has stealth fontification turned off ever since

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 13:42         ` martin rudalics
@ 2007-02-26 14:26           ` Stefan Monnier
  2007-02-26 16:32             ` martin rudalics
  2007-02-26 15:10           ` David Kastrup
  1 sibling, 1 reply; 89+ messages in thread
From: Stefan Monnier @ 2007-02-26 14:26 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel, Kim F. Storm

> While I agree with all of David's arguments (and even add the one that
> a buffer tail is stealthily refontified after every single buffer change
> followed by 16 secs idleness) I'm afraid that setting this to nil won't
> remove any support burden.  Many major modes still work better when they
> are allowed to fontify a buffer from beginning to end.

Stealth fontification doesn't do that anyway.

> Also, when a mode uses font-lock to assign `syntax-table' properties,
> there's a slight chance that an editing sequence that worked with
> stealth fontification turned on will not work any more when stealth
> fontification is turned off.  Having fontification assign syntax-table
> properties is certainly flawed by design but at the moment there's no
> other way to do that automatically.

When there are such bugs, stealth fontification doesn't prevent them.
It may hide them occasionally (non-deterministically), depending on the
specific editing steps.

> With other words, setting this to nil may cause some obscure bugs get
> reported (and hopefully fixed) earlier ...

Indeed, and with a recipe that may be slightly easier to reproduce.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 11:28             ` David Kastrup
@ 2007-02-26 14:56               ` Juanma Barranquero
  0 siblings, 0 replies; 89+ messages in thread
From: Juanma Barranquero @ 2007-02-26 14:56 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

On 2/26/07, David Kastrup <dak@gnu.org> wrote:

> Ok, but working with many buffers is not something particularly
> forbidden.

Of course not. I won't even suggest my use of Emacs is typical at all.

             Juanma

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 13:42         ` martin rudalics
  2007-02-26 14:26           ` Stefan Monnier
@ 2007-02-26 15:10           ` David Kastrup
  2007-02-26 15:22             ` Kim F. Storm
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-26 15:10 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel, Kim F. Storm

martin rudalics <rudalics@gmx.at> writes:

>> So it seems plain stupid to release it with a setting that will impact
>> and annoy users and cause a support burden after the release.
>
> While I agree with all of David's arguments (and even add the one
> that a buffer tail is stealthily refontified after every single
> buffer change followed by 16 secs idleness) I'm afraid that setting
> this to nil won't remove any support burden.  Many major modes still
> work better when they are allowed to fontify a buffer from beginning
> to end.

But stealth mode does not guarantee that at all.  It is completely
irreproducible whether or not some buffer has been completely
stealthified.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 15:10           ` David Kastrup
@ 2007-02-26 15:22             ` Kim F. Storm
  2007-02-26 16:44               ` martin rudalics
  0 siblings, 1 reply; 89+ messages in thread
From: Kim F. Storm @ 2007-02-26 15:22 UTC (permalink / raw)
  To: David Kastrup; +Cc: martin rudalics, emacs-devel

David Kastrup <dak@gnu.org> writes:

> martin rudalics <rudalics@gmx.at> writes:
>
>>> So it seems plain stupid to release it with a setting that will impact
>>> and annoy users and cause a support burden after the release.
>>
>> While I agree with all of David's arguments (and even add the one
>> that a buffer tail is stealthily refontified after every single
>> buffer change followed by 16 secs idleness) I'm afraid that setting
>> this to nil won't remove any support burden.  Many major modes still
>> work better when they are allowed to fontify a buffer from beginning
>> to end.
>
> But stealth mode does not guarantee that at all.  It is completely
> irreproducible whether or not some buffer has been completely
> stealthified.

Agree!

I actually think Martin's argument speaks _against_ a non-nil default
value of jit-lock-stealth-time -- no major mode should ever rely on
such convoluted behavior.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 14:26           ` Stefan Monnier
@ 2007-02-26 16:32             ` martin rudalics
  0 siblings, 0 replies; 89+ messages in thread
From: martin rudalics @ 2007-02-26 16:32 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel, Kim F. Storm

 >> ... Many major modes still work better when they
 >>are allowed to fontify a buffer from beginning to end.
 >
 >
 > Stealth fontification doesn't do that anyway.

Hmmm... When I simply open a buffer it fontifies the buffer from the
beginning to the end ...

(defsubst jit-lock-stealth-chunk-start (around)
...
       (let* ((next (text-property-not-all around (point-max) 'fontified t))
...
	     (result (cond ((null start) next)
			   ((null next) start)
			   ((< (- around start) (- next around)) start)
			   (t next))))
	result))))

... next is always the first unfontified position in the buffer.

 >>Also, when a mode uses font-lock to assign `syntax-table' properties,
 >>there's a slight chance that an editing sequence that worked with
 >>stealth fontification turned on will not work any more when stealth
 >>fontification is turned off.  Having fontification assign syntax-table
 >>properties is certainly flawed by design but at the moment there's no
 >>other way to do that automatically.
 >
 >
 > When there are such bugs, stealth fontification doesn't prevent them.
 > It may hide them occasionally (non-deterministically), depending on the
 > specific editing steps.

That's exactly what I wanted to express.

 >>With other words, setting this to nil may cause some obscure bugs get
 >>reported (and hopefully fixed) earlier ...
 >
 >
 > Indeed, and with a recipe that may be slightly easier to reproduce.

We violently agree.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 15:22             ` Kim F. Storm
@ 2007-02-26 16:44               ` martin rudalics
  2007-02-26 22:55                 ` Kim F. Storm
  0 siblings, 1 reply; 89+ messages in thread
From: martin rudalics @ 2007-02-26 16:44 UTC (permalink / raw)
  To: Kim F. Storm; +Cc: emacs-devel

>>But stealth mode does not guarantee that at all.  It is completely
>>irreproducible whether or not some buffer has been completely
>>stealthified.
> 
> 
> Agree!
> 
> I actually think Martin's argument speaks _against_ a non-nil default
> value of jit-lock-stealth-time -- no major mode should ever rely on
> such convoluted behavior.

Obviously.  But we should be prepared to get a few more bug reports when we
set this to nil.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  4:56   ` Stefan Monnier
@ 2007-02-26 19:52     ` Richard Stallman
  2007-02-26 20:14       ` Eli Zaretskii
                         ` (2 more replies)
  0 siblings, 3 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-26 19:52 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

    Yes, I know of at least 2 causes:
    - it's based on polling and may take a long time before the next poll
    - the stealth-fontification causes swapping, and so even if the poll comes
      immediately, pages need to be swapped back in before the user's command
      can complete.

I see.

The motive for stealth fontification was to avoid delays when moving to
another part of the file.  Is fontification now sufficiently fast
that such delays are not much of an annoyance any more?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  7:16   ` David Kastrup
@ 2007-02-26 19:53     ` Richard Stallman
  2007-02-27  8:19       ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-02-26 19:53 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

    >     Regardless of the system load: the load may be low at the moment
    >     _exactly_ because the user terminated all processes that would disturb
    >     the interactivity of his current work, and I think it a mistake that
    >     Emacs considers the CPU fit for grabbing for its own purposes unless
    >     the user _explicitly_ asked for it.
    >
    > Stealth fontification is intended to stop whenever the user types a
    > character.  So why would it interfere with the "interactivity" of
    > Emacs commands?

    Who is talking about the interactivity of Emacs?

The first paragraph cited seems to suggest that.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26  7:35     ` David Kastrup
  2007-02-26 10:20       ` Andreas Schwab
  2007-02-26 10:24       ` Kim F. Storm
@ 2007-02-26 19:56       ` Eli Zaretskii
  2007-02-26 21:34         ` Stefan Monnier
  2 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-26 19:56 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> From: David Kastrup <dak@gnu.org>
> Date: Mon, 26 Feb 2007 08:35:41 +0100
> 
> Do we have a _single_ developer who still has it on

I use the default value.

> and has observed _benefits_ from its use?

I don't see any problems.  But I almost never use a laptop.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 19:52     ` Richard Stallman
@ 2007-02-26 20:14       ` Eli Zaretskii
  2007-02-27  7:39         ` Richard Stallman
  2007-02-26 21:33       ` Stefan Monnier
  2007-02-27  8:17       ` David Kastrup
  2 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-26 20:14 UTC (permalink / raw)
  To: rms; +Cc: monnier, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> Date: Mon, 26 Feb 2007 14:52:52 -0500
> Cc: emacs-devel@gnu.org
> 
> The motive for stealth fontification was to avoid delays when moving to
> another part of the file.  Is fontification now sufficiently fast
> that such delays are not much of an annoyance any more?

No, we are definitely not there yet, IMO.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 19:52     ` Richard Stallman
  2007-02-26 20:14       ` Eli Zaretskii
@ 2007-02-26 21:33       ` Stefan Monnier
  2007-02-27  8:17       ` David Kastrup
  2 siblings, 0 replies; 89+ messages in thread
From: Stefan Monnier @ 2007-02-26 21:33 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

>     Yes, I know of at least 2 causes:
>     - it's based on polling and may take a long time before the next poll
>     - the stealth-fontification causes swapping, and so even if the poll comes
>       immediately, pages need to be swapped back in before the user's command
>       can complete.

> I see.

> The motive for stealth fontification was to avoid delays when moving to
> another part of the file.  Is fontification now sufficiently fast
> that such delays are not much of an annoyance any more?

In my opinion, we're definitely there.  I'd even say we've always
been there.  After all, the delay is often present even with stealth
fontification (in those cases where stealth fontification hasn't had
a chance to get here yet), so we always have to make sure that this delay is
acceptable anyway.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 19:56       ` Eli Zaretskii
@ 2007-02-26 21:34         ` Stefan Monnier
  2007-02-26 23:19           ` Miles Bader
  2007-02-27  4:22           ` Eli Zaretskii
  0 siblings, 2 replies; 89+ messages in thread
From: Stefan Monnier @ 2007-02-26 21:34 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

>> Do we have a _single_ developer who still has it on
> I use the default value.
>> and has observed _benefits_ from its use?
> I don't see any problems.  But I almost never use a laptop.

This doesn't answer the question: have you *observed* *benefits*?


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 16:44               ` martin rudalics
@ 2007-02-26 22:55                 ` Kim F. Storm
  0 siblings, 0 replies; 89+ messages in thread
From: Kim F. Storm @ 2007-02-26 22:55 UTC (permalink / raw)
  To: martin rudalics; +Cc: emacs-devel

martin rudalics <rudalics@gmx.at> writes:

>>>But stealth mode does not guarantee that at all.  It is completely
>>>irreproducible whether or not some buffer has been completely
>>>stealthified.
>>
>>
>> Agree!
>>
>> I actually think Martin's argument speaks _against_ a non-nil default
>> value of jit-lock-stealth-time -- no major mode should ever rely on
>> such convoluted behavior.
>
> Obviously.  But we should be prepared to get a few more bug reports when we
> set this to nil.

That's ok.  

If those bugs are really there - users will see them even when
jit-lock-stealth-time is non-nil.  

Getting bug reports for repeatable bugs is infinitely better than
reports about bugs that "happens from time to time, but I don't know
how to reproduce it".

It will just be much more difficult to debug them, if the bug is
timing dependent, rather than happening consistently.

Again -- a very good reason for the default being nil.

-- 
Kim F. Storm <storm@cua.dk> http://www.cua.dk

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 21:34         ` Stefan Monnier
@ 2007-02-26 23:19           ` Miles Bader
  2007-02-27  0:43             ` Stefan Monnier
  2007-02-27  4:22           ` Eli Zaretskii
  1 sibling, 1 reply; 89+ messages in thread
From: Miles Bader @ 2007-02-26 23:19 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:
> This doesn't answer the question: have you *observed* *benefits*?

That's a rather silly question though, given that the whole purpose of
stealth fontification is to make fontification of large source files
more "seamless" -- i.e., unobservable...

I've never changed the default, and never noticed any delay or adverse
effects; occasionally it causes my system to not be idle when I thought
it should be idle (why should I care though?).

-Miles

-- 
"Most attacks seem to take place at night, during a rainstorm, uphill,
 where four map sheets join."   -- Anon. British Officer in WW I

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 23:19           ` Miles Bader
@ 2007-02-27  0:43             ` Stefan Monnier
  2007-02-27  2:10               ` Miles Bader
  0 siblings, 1 reply; 89+ messages in thread
From: Stefan Monnier @ 2007-02-27  0:43 UTC (permalink / raw)
  To: Miles Bader; +Cc: Eli Zaretskii, emacs-devel

>> This doesn't answer the question: have you *observed* *benefits*?
> That's a rather silly question though, given that the whole purpose of
> stealth fontification is to make fontification of large source files
> more "seamless" -- i.e., unobservable...

Stealth fontification is not supposed to be unobservable.  Instead it's
supposed to make less observable the fact that fontification is done lazily.

So to observe that stealth fontification provides you with some benefit, you
have to turn it off and see if jit-lock behaves worse.

> I've never changed the default, and never noticed any delay or adverse
> effects; occasionally it causes my system to not be idle when I thought
> it should be idle (why should I care though?).

We know fairly well about the downsides and we know they don't affect
everybody all the time, so this is not the interesting part of
the discussion.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  0:43             ` Stefan Monnier
@ 2007-02-27  2:10               ` Miles Bader
  2007-02-27  4:57                 ` Stefan Monnier
  0 siblings, 1 reply; 89+ messages in thread
From: Miles Bader @ 2007-02-27  2:10 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:
> So to observe that stealth fontification provides you with some benefit, you
> have to turn it off and see if jit-lock behaves worse.

Sure, but there's little incentive to do so, so the rather heavy-handed
way you jumped on Eli seems out of place.  The implication seemed to be
that if he didn't "observe some benefit", then there likely wasn't any
(which obviously isn't true).

> We know fairly well about the downsides and we know they don't affect
> everybody all the time, so this is not the interesting part of
> the discussion.

It serves to put the strident opposition to stealth fontification in
context, I think.

-Miles

-- 
Americans are broad-minded people.  They'll accept the fact that a person can
be an alcoholic, a dope fiend, a wife beater, and even a newspaperman, but if a
man doesn't drive, there is something wrong with him.  -- Art Buchwald

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 21:34         ` Stefan Monnier
  2007-02-26 23:19           ` Miles Bader
@ 2007-02-27  4:22           ` Eli Zaretskii
  1 sibling, 0 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-27  4:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel

> Cc: David Kastrup <dak@gnu.org>,  emacs-devel@gnu.org
> From: Stefan Monnier <monnier@iro.umontreal.ca>
> Date: Mon, 26 Feb 2007 16:34:05 -0500
> 
> >> and has observed _benefits_ from its use?
> > I don't see any problems.  But I almost never use a laptop.
> 
> This doesn't answer the question: have you *observed* *benefits*?

It answers the question the best way I could.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  2:10               ` Miles Bader
@ 2007-02-27  4:57                 ` Stefan Monnier
  2007-02-27  8:23                   ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Stefan Monnier @ 2007-02-27  4:57 UTC (permalink / raw)
  To: Miles Bader; +Cc: Eli Zaretskii, emacs-devel

> Sure, but there's little incentive to do so, so the rather heavy-handed
> way you jumped on Eli seems out of place.

Sorry, I guess it sounded louder than I intended.

> The implication seemed to be that if he didn't "observe some benefit",
> then there likely wasn't any (which obviously isn't true).

We're just trying to find people who have observed benefits.  It looks
like Eli isn't one of them.  Maybe there are such people, but I expect
they're very rare:

I've played a good bit with jit-lock (while working on its code, on
syntax-ppss, and on various major mode's font-lock patterns), using
a relatively modest machine at the time (about 4 years old, but
top-of-the-line when new) running on an Emacs compiled with all known
runtime checks.  I've seen significant delays with jit-lock under some
specific circumstances, and in those circumstances jit-lock-stealth was able
to reduce the occurrence of those cases, but it never seemed enough: the
remaining cases were still too severe.  So in practice I expect every major
mode's font-lock rules to be tuned by the author to avoid such
circumstances, such that jit-lock is fast enough and jit-lock-stealth never
makes a noticeable difference.

>> We know fairly well about the downsides and we know they don't affect
>> everybody all the time, so this is not the interesting part of
>> the discussion.

> It serves to put the strident opposition to stealth fontification in
> context, I think.

Sure.  Jit-lock-stealth has been in wide use since Emacs-21.1 (and the years
of development before), so it's clear that its bad effects are
sufficiently mild.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 10:56           ` Andreas Schwab
@ 2007-02-27  7:38             ` Richard Stallman
  2007-02-27  8:31               ` David Kastrup
  2007-02-27 11:00               ` David Kastrup
  0 siblings, 2 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-27  7:38 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: emacs-devel

More discussion of who has, and who has not, been inconvenienced by
stealth fontification is not really useful, because we already know
that it is a substantial inconvenience for some users.

The question now is whether it _avoids_ a substantial inconvenience
for a substantial fraction of users.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 20:14       ` Eli Zaretskii
@ 2007-02-27  7:39         ` Richard Stallman
  2007-02-27 20:43           ` Eli Zaretskii
  0 siblings, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-02-27  7:39 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: monnier, emacs-devel

    > The motive for stealth fontification was to avoid delays when moving to
    > another part of the file.  Is fontification now sufficiently fast
    > that such delays are not much of an annoyance any more?

    No, we are definitely not there yet, IMO.

Would you please tell us more?  What sort of machine are you using,
and how bad are these delays?  We need to compare them with the delays
caused by stealth fontification.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 19:52     ` Richard Stallman
  2007-02-26 20:14       ` Eli Zaretskii
  2007-02-26 21:33       ` Stefan Monnier
@ 2007-02-27  8:17       ` David Kastrup
  2007-02-27 20:48         ` Eli Zaretskii
                           ` (2 more replies)
  2 siblings, 3 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-27  8:17 UTC (permalink / raw)
  To: rms; +Cc: Stefan Monnier, emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Yes, I know of at least 2 causes:
>     - it's based on polling and may take a long time before the next poll
>     - the stealth-fontification causes swapping, and so even if the poll comes
>       immediately, pages need to be swapped back in before the user's command
>       can complete.
>
> I see.
>
> The motive for stealth fontification was to avoid delays when moving
> to another part of the file.

That is the motive for jit-font-lock, but stealth fontification
fontifies _other_ buffers.  While it may also hit the current buffer,
this is not a priority as far as I can tell.

> Is fontification now sufficiently fast that such delays are not much
> of an annoyance any more?

Well, if they _are_ an annoyance, then presumably because of
problematic font lock patterns, and then they will be an annoyance
also using stealth fontification (namely causing high CPU drain and
sluggish behavior), only a non-debuggable, non-deterministic and
non-reproduceable annoyance.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-26 19:53     ` Richard Stallman
@ 2007-02-27  8:19       ` David Kastrup
  0 siblings, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-27  8:19 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     >     Regardless of the system load: the load may be low at the
>     >     moment _exactly_ because the user terminated all processes
>     >     that would disturb the interactivity of his current work,
>     >     and I think it a mistake that Emacs considers the CPU fit
>     >     for grabbing for its own purposes unless the user
>     >     _explicitly_ asked for it.
>     >
>     > Stealth fontification is intended to stop whenever the user types a
>     > character.  So why would it interfere with the "interactivity" of
>     > Emacs commands?
>
>     Who is talking about the interactivity of Emacs?
>
> The first paragraph cited seems to suggest that.

One can actually accomplish work outside of Emacs, though the concept
may appear outlandish to some.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  4:57                 ` Stefan Monnier
@ 2007-02-27  8:23                   ` David Kastrup
  2007-02-27 20:54                     ` Eli Zaretskii
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-27  8:23 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, emacs-devel, Miles Bader

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> Sure.  Jit-lock-stealth has been in wide use since Emacs-21.1 (and
> the years of development before), so it's clear that its bad effects
> are sufficiently mild.

Font-lock was turned off by default in versions 21.1 to 21.4 since its
performance impact was not well-behaved enough.  Quite a bit of fixes
went into font-lock in order to make it a defensible choice to enable
it by default.

People were _expecting_ downsides from font-locking, and we told them
so, and they had to enable it manually.

The situation is different for Emacs 22.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  7:38             ` Richard Stallman
@ 2007-02-27  8:31               ` David Kastrup
  2007-02-27 11:00               ` David Kastrup
  1 sibling, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-27  8:31 UTC (permalink / raw)
  To: rms; +Cc: Andreas Schwab, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> More discussion of who has, and who has not, been inconvenienced by
> stealth fontification is not really useful, because we already know
> that it is a substantial inconvenience for some users.

And let us not forget that this inconvience is unexpected, gives Emacs
a bad name (since it sucks up CPU even when idle) and is
non-debuggable, since timer functions run with quit turned off.  It is
completely impossible for the average affected user (heck, it was even
for me until Richard gave me a direct pointer to stealth fontification
after a bug report of mine) to find out which of the thousands of
settings inside of Emacs is responsible for the problem.

So it is a bad idea for a default setting.

> The question now is whether it _avoids_ a substantial inconvenience
> for a substantial fraction of users.

That would make it a good idea for a prominently accessible user
option.  I'd still think it a bad idea for a default setting.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  7:38             ` Richard Stallman
  2007-02-27  8:31               ` David Kastrup
@ 2007-02-27 11:00               ` David Kastrup
  2007-02-28  2:37                 ` Richard Stallman
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-27 11:00 UTC (permalink / raw)
  To: rms; +Cc: Andreas Schwab, emacs-devel

Richard Stallman <rms@gnu.org> writes:

> More discussion of who has, and who has not, been inconvenienced by
> stealth fontification is not really useful, because we already know
> that it is a substantial inconvenience for some users.
>
> The question now is whether it _avoids_ a substantial inconvenience
> for a substantial fraction of users.

Well, one pointer would be if we had somebody who turned it off, only
to turn it back on later again because of getting inconvenienced.  It
does not appear like we have such a specimen around.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  7:39         ` Richard Stallman
@ 2007-02-27 20:43           ` Eli Zaretskii
  2007-02-28  7:27             ` Richard Stallman
  0 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-27 20:43 UTC (permalink / raw)
  To: rms; +Cc: monnier, emacs-devel

> From: Richard Stallman <rms@gnu.org>
> CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org
> Date: Tue, 27 Feb 2007 02:39:15 -0500
> 
>     > The motive for stealth fontification was to avoid delays when moving to
>     > another part of the file.  Is fontification now sufficiently fast
>     > that such delays are not much of an annoyance any more?
> 
>     No, we are definitely not there yet, IMO.
> 
> Would you please tell us more?  What sort of machine are you using,
> and how bad are these delays?  We need to compare them with the delays
> caused by stealth fontification.

I was talking from memory.  I will make some measurements in a few
days and tell the results.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  8:17       ` David Kastrup
@ 2007-02-27 20:48         ` Eli Zaretskii
  2007-02-28  2:37         ` Richard Stallman
  2007-02-28  2:37         ` Richard Stallman
  2 siblings, 0 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-27 20:48 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> From: David Kastrup <dak@gnu.org>
> Date: Tue, 27 Feb 2007 09:17:10 +0100
> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, emacs-devel@gnu.org
> >
> > The motive for stealth fontification was to avoid delays when moving
> > to another part of the file.
> 
> That is the motive for jit-font-lock, but stealth fontification
> fontifies _other_ buffers.  While it may also hit the current buffer,
> this is not a priority as far as I can tell.

The current buffer does not need to be a priority because no one says
that the user works only (or mainly) in a single buffer.  I'm as
likely to go to the end of another buffer as I am in the one where I
do my edits.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  8:23                   ` David Kastrup
@ 2007-02-27 20:54                     ` Eli Zaretskii
  2007-02-27 20:59                       ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-27 20:54 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: Miles Bader <miles@gnu.org>,  Eli Zaretskii <eliz@gnu.org>,
> 	  emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Tue, 27 Feb 2007 09:23:59 +0100
> 
> Stefan Monnier <monnier@iro.umontreal.ca> writes:
> 
> > Sure.  Jit-lock-stealth has been in wide use since Emacs-21.1 (and
> > the years of development before), so it's clear that its bad effects
> > are sufficiently mild.
> 
> Font-lock was turned off by default in versions 21.1 to 21.4 since its
> performance impact was not well-behaved enough.

Inaccurate.  First, font-lock was turned off by default in _all_
versions of Emacs since its introduction (in v19.x, AFAIR).  More
importantly, a large majority of users turned it on, so that
jit-lock-stealth _was_, indeed, widely used since v21.1, where
jit-lock was introduced.

> Quite a bit of fixes went into font-lock in order to make it a
> defensible choice to enable it by default.

Inaccurate.  Improvements to jit-lock notwithstanding, the main reason
for turning it on was that we decided the garden-variety CPUs are
nowadays fast enough to fontify buffers without annoyance to most
users.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 20:54                     ` Eli Zaretskii
@ 2007-02-27 20:59                       ` David Kastrup
  2007-02-27 21:19                         ` Eli Zaretskii
  2007-02-27 23:21                         ` Stefan Monnier
  0 siblings, 2 replies; 89+ messages in thread
From: David Kastrup @ 2007-02-27 20:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> Inaccurate.  First, font-lock was turned off by default in _all_
> versions of Emacs since its introduction (in v19.x, AFAIR).  More
> importantly, a large majority of users turned it on,

I'd like to see some statistics supporting that.  A large majority of
users does not touch defaults, according to my experience.

> so that jit-lock-stealth _was_, indeed, widely used since v21.1,
> where jit-lock was introduced.

Anyway, when people turned it on, they expected to have drawbacks
(which was why it was not on by default).  But people now get font
lock mode without asking for it.

>> Quite a bit of fixes went into font-lock in order to make it a
>> defensible choice to enable it by default.
>
> Inaccurate.  Improvements to jit-lock notwithstanding, the main
> reason for turning it on was that we decided the garden-variety CPUs
> are nowadays fast enough to fontify buffers without annoyance to
> most users.

Our memories differ then.  I remember distinctly that several
`pathological' cases were cleared up before Richard agreed to enable
font locking by default.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 20:59                       ` David Kastrup
@ 2007-02-27 21:19                         ` Eli Zaretskii
  2007-02-27 22:02                           ` David Kastrup
  2007-02-28  7:27                           ` Richard Stallman
  2007-02-27 23:21                         ` Stefan Monnier
  1 sibling, 2 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-27 21:19 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Tue, 27 Feb 2007 21:59:12 +0100
> 
> > Inaccurate.  First, font-lock was turned off by default in _all_
> > versions of Emacs since its introduction (in v19.x, AFAIR).  More
> > importantly, a large majority of users turned it on,
> 
> I'd like to see some statistics supporting that.  A large majority of
> users does not touch defaults, according to my experience.

One evidence I can offer is the number of discussions between
developers where different people tried many times to convince Richard
to turn font-lock on by default.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 21:19                         ` Eli Zaretskii
@ 2007-02-27 22:02                           ` David Kastrup
  2007-02-28  4:42                             ` Eli Zaretskii
  2007-02-28  7:27                           ` Richard Stallman
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-27 22:02 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Tue, 27 Feb 2007 21:59:12 +0100
>> 
>> > Inaccurate.  First, font-lock was turned off by default in _all_
>> > versions of Emacs since its introduction (in v19.x, AFAIR).  More
>> > importantly, a large majority of users turned it on,
>> 
>> I'd like to see some statistics supporting that.  A large majority
>> of users does not touch defaults, according to my experience.
>
> One evidence I can offer is the number of discussions between
> developers where different people tried many times to convince
> Richard to turn font-lock on by default.

Where would have been the point in having it turned on by default if
"a large majority of users" would turn it on manually, anyway?

I see this rather as evidence that people did _not_ turn it on by
default, and that Emacs' popularity suffered because of that.

So I come to quite opposite conclusions given the same, indirect data.
And I don't consider my conclusions at all contrived.  Which would
warrant more direct data before one comes to the conclusion that it is
ok to inflict users with the bad results of stealth fontification.

Personally, I find it a _large_ warning sign that a number of
developers said they turned stealth fontification off because of bad
effects, and not a _single_ one reported turning it back on again
because of opposing bad effects.

So we have _several_ reports of stealth fontification being deemed
unacceptable to experienced Emacs users, and not a single report of
having it turned off being deemed unacceptable.

In addition, it is really _hard_ to find the culprit for the bad
effects of stealth fontification.  I have not been able to figure this
out myself.  And even though it is hard, several other developers
_independently_ figured it out and disabled it.

I think that calls for _very_ good evidence for large negative effects
if it is turned off by default, and I have up to now (including this
mail I reply to) failed to see anything I would consider to be even
remotely close.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 20:59                       ` David Kastrup
  2007-02-27 21:19                         ` Eli Zaretskii
@ 2007-02-27 23:21                         ` Stefan Monnier
  1 sibling, 0 replies; 89+ messages in thread
From: Stefan Monnier @ 2007-02-27 23:21 UTC (permalink / raw)
  To: David Kastrup; +Cc: Eli Zaretskii, emacs-devel

>> Inaccurate.  First, font-lock was turned off by default in _all_
>> versions of Emacs since its introduction (in v19.x, AFAIR).  More
>> importantly, a large majority of users turned it on,
> I'd like to see some statistics supporting that.  A large majority of
> users does not touch defaults, according to my experience.

My guess is that users who didn't change the default ended up moving to some
other editor, while those who did stick with Emacs ended up turning on
font-lock.  But it doesn't matter.  All that matters is that there is a lot
of experience with font-lock, so it's clear that it wasn't/isn't terribly
badly behaved on average.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  8:17       ` David Kastrup
  2007-02-27 20:48         ` Eli Zaretskii
@ 2007-02-28  2:37         ` Richard Stallman
  2007-02-28  2:37         ` Richard Stallman
  2 siblings, 0 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-28  2:37 UTC (permalink / raw)
  To: David Kastrup; +Cc: monnier, emacs-devel

    > The motive for stealth fontification was to avoid delays when moving
    > to another part of the file.

    That is the motive for jit-font-lock, but stealth fontification
    fontifies _other_ buffers.

The reason is still to avoid the need to fontify
when you move to a part of one of those other buffers
that hadn't been displayed in this session.

The question is, is the time saved by that enough to be worth caring
about?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27  8:17       ` David Kastrup
  2007-02-27 20:48         ` Eli Zaretskii
  2007-02-28  2:37         ` Richard Stallman
@ 2007-02-28  2:37         ` Richard Stallman
  2 siblings, 0 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-28  2:37 UTC (permalink / raw)
  To: David Kastrup; +Cc: monnier, emacs-devel

    Well, if they _are_ an annoyance, then presumably because of
    problematic font lock patterns, and then they will be an annoyance
    also using stealth fontification (namely causing high CPU drain and
    sluggish behavior), only a non-debuggable, non-deterministic and
    non-reproduceable annoyance.

Does everyone agree that substantial delays result only from
problematic font lock patterns?  If so, I agree your conclusion
follows.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 11:00               ` David Kastrup
@ 2007-02-28  2:37                 ` Richard Stallman
  0 siblings, 0 replies; 89+ messages in thread
From: Richard Stallman @ 2007-02-28  2:37 UTC (permalink / raw)
  To: David Kastrup; +Cc: schwab, emacs-devel

    > The question now is whether it _avoids_ a substantial inconvenience
    > for a substantial fraction of users.

    Well, one pointer would be if we had somebody who turned it off, only
    to turn it back on later again because of getting inconvenienced.  It
    does not appear like we have such a specimen around.

You may be right.  I'm asking anyone who DOES finr stealth
fontification useful to speak up.  Eli Z seemed to say so,
but has not given details.

We will see what he has to say.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 22:02                           ` David Kastrup
@ 2007-02-28  4:42                             ` Eli Zaretskii
  2007-02-28  6:35                               ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-28  4:42 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Tue, 27 Feb 2007 23:02:49 +0100
> >
> > One evidence I can offer is the number of discussions between
> > developers where different people tried many times to convince
> > Richard to turn font-lock on by default.
> 
> Where would have been the point in having it turned on by default if
> "a large majority of users" would turn it on manually, anyway?

To lower the flood of questions posted by newbies asking why they see
no syntax highlight, _before_ they turn it on.

> I see this rather as evidence that people did _not_ turn it on by
> default, and that Emacs' popularity suffered because of that.

Popularity did suffer, but because newbies couldn't imagine Emacs
didn't have syntax highlight.  As soon as they learned Emacs did have
it, they turned it on.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-28  4:42                             ` Eli Zaretskii
@ 2007-02-28  6:35                               ` David Kastrup
  2007-02-28 20:33                                 ` Eli Zaretskii
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-02-28  6:35 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Tue, 27 Feb 2007 23:02:49 +0100
>> >
>> > One evidence I can offer is the number of discussions between
>> > developers where different people tried many times to convince
>> > Richard to turn font-lock on by default.
>> 
>> Where would have been the point in having it turned on by default if
>> "a large majority of users" would turn it on manually, anyway?
>
> To lower the flood of questions posted by newbies asking why they see
> no syntax highlight, _before_ they turn it on.

I can't remember such a flood.  The discussion was very much between
seasoned Emacs users as far as I remember.

>> I see this rather as evidence that people did _not_ turn it on by
>> default, and that Emacs' popularity suffered because of that.
>
> Popularity did suffer, but because newbies couldn't imagine Emacs
> didn't have syntax highlight.  As soon as they learned Emacs did
> have it, they turned it on.

There would still be that flood around to look at since newbies tend
to install stable versions of Emacs.  I still see quite a few
questions about Emacs 21.4 on the help lists.  I can't remember font
lock mode being a topic in that context lately, however.

So I quite definitely disagree with the conclusions you draw from
font-lock history.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 20:43           ` Eli Zaretskii
@ 2007-02-28  7:27             ` Richard Stallman
  2007-02-28 20:36               ` Eli Zaretskii
  0 siblings, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-02-28  7:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: monnier, emacs-devel

    I was talking from memory.  I will make some measurements in a few
    days and tell the results.

I am not sure measurements are relevant here.  The question is
whether the delays avoided by stealth fontification bother you.
If you don't notice them, they don't bother you.

Do they bother you?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-27 21:19                         ` Eli Zaretskii
  2007-02-27 22:02                           ` David Kastrup
@ 2007-02-28  7:27                           ` Richard Stallman
  2007-02-28 20:39                             ` Eli Zaretskii
  1 sibling, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-02-28  7:27 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

    One evidence I can offer is the number of discussions between
    developers where different people tried many times to convince Richard
    to turn font-lock on by default.

You can't judge anything about most users by looking at the habits
of developers.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-28  6:35                               ` David Kastrup
@ 2007-02-28 20:33                                 ` Eli Zaretskii
  0 siblings, 0 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-28 20:33 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Wed, 28 Feb 2007 07:35:31 +0100
> >> 
> >> Where would have been the point in having it turned on by default if
> >> "a large majority of users" would turn it on manually, anyway?
> >
> > To lower the flood of questions posted by newbies asking why they see
> > no syntax highlight, _before_ they turn it on.
> 
> I can't remember such a flood.

It was on gnu.emacs.help, not here.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-28  7:27             ` Richard Stallman
@ 2007-02-28 20:36               ` Eli Zaretskii
  2007-03-01  8:14                 ` Richard Stallman
  0 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-28 20:36 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

> From: Richard Stallman <rms@gnu.org>
> CC: monnier@iro.umontreal.ca, emacs-devel@gnu.org
> Date: Wed, 28 Feb 2007 02:27:41 -0500
> 
>     I was talking from memory.  I will make some measurements in a few
>     days and tell the results.
> 
> I am not sure measurements are relevant here.

AFAICT, you asked for them explicitly:

    Would you please tell us more?  What sort of machine are you using,
    and how bad are these delays?  We need to compare them with the delays
    caused by stealth fontification.

> The question is whether the delays avoided by stealth fontification
> bother you.  If you don't notice them, they don't bother you.
> 
> Do they bother you?

My recollection is that they do annoy, but I will need to time things
to give more accurate information instead of hand-waving.  However, if
you don't feel you need to see more or less precise numbers, feel free
to tell me: I have better things to do with my limited free time than
gather measurements no one needs.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-28  7:27                           ` Richard Stallman
@ 2007-02-28 20:39                             ` Eli Zaretskii
  0 siblings, 0 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-02-28 20:39 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

> From: Richard Stallman <rms@gnu.org>
> CC: dak@gnu.org, emacs-devel@gnu.org
> Date: Wed, 28 Feb 2007 02:27:45 -0500
> 
>     One evidence I can offer is the number of discussions between
>     developers where different people tried many times to convince Richard
>     to turn font-lock on by default.
> 
> You can't judge anything about most users by looking at the habits
> of developers.

Habits of developers are irrelevant here: the developers were talking
based on habits of mere mortals, not of their own.

Anyway, I just described the past, and we cannot change the past.  So
it's not useful to continue arguing about what did or didn't happen in
the past, and why.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-02-28 20:36               ` Eli Zaretskii
@ 2007-03-01  8:14                 ` Richard Stallman
  2007-03-01 15:18                   ` Stefan Monnier
  2007-03-03 13:22                   ` Eli Zaretskii
  0 siblings, 2 replies; 89+ messages in thread
From: Richard Stallman @ 2007-03-01  8:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

    My recollection is that they do annoy, but I will need to time things
    to give more accurate information instead of hand-waving.

I don't need _more accurate_ information, just confirmation.  I would
like you to try turning off stealth fontification and see if you are
frequently annoyed by the need to fontify on the fly.  It does not
need to be a quantitative measurement.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01  8:14                 ` Richard Stallman
@ 2007-03-01 15:18                   ` Stefan Monnier
  2007-03-01 15:56                     ` David Kastrup
  2007-03-01 16:54                     ` Stuart D. Herring
  2007-03-03 13:22                   ` Eli Zaretskii
  1 sibling, 2 replies; 89+ messages in thread
From: Stefan Monnier @ 2007-03-01 15:18 UTC (permalink / raw)
  To: rms; +Cc: Eli Zaretskii, emacs-devel

>     My recollection is that they do annoy, but I will need to time things
>     to give more accurate information instead of hand-waving.

> I don't need _more accurate_ information, just confirmation.  I would
> like you to try turning off stealth fontification and see if you are
> frequently annoyed by the need to fontify on the fly.  It does not
> need to be a quantitative measurement.

Actually, a better test would be to put

   (if (zerop (random 1)) (setq jit-lock-stealth-time nil))

in your .emacs.  And then check the value of jit-lock-stealth-time every
time you notice a delay (after which, you'll want to restart jit-lock,
which basically means restart Emacs).

This should bring the experiment a bit closer to the "double blind"
gold standard.


        Stefan

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 15:18                   ` Stefan Monnier
@ 2007-03-01 15:56                     ` David Kastrup
  2007-03-01 16:00                       ` Lennart Borgman (gmail)
  2007-03-01 16:54                     ` Stuart D. Herring
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-01 15:56 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, rms, emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>     My recollection is that they do annoy, but I will need to time things
>>     to give more accurate information instead of hand-waving.
>
>> I don't need _more accurate_ information, just confirmation.  I would
>> like you to try turning off stealth fontification and see if you are
>> frequently annoyed by the need to fontify on the fly.  It does not
>> need to be a quantitative measurement.
>
> Actually, a better test would be to put
>
>    (if (zerop (random 1)) (setq jit-lock-stealth-time nil))
>
> in your .emacs.

Do we have a JOKES files for inadvertent jokes?

> And then check the value of jit-lock-stealth-time every time you
> notice a delay (after which, you'll want to restart jit-lock, which
> basically means restart Emacs).
>
> This should bring the experiment a bit closer to the "double blind"
> gold standard.

"double blind" only if he does not notice that (zerop (random 1)) is
always t.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 15:56                     ` David Kastrup
@ 2007-03-01 16:00                       ` Lennart Borgman (gmail)
  0 siblings, 0 replies; 89+ messages in thread
From: Lennart Borgman (gmail) @ 2007-03-01 16:00 UTC (permalink / raw)
  To: David Kastrup; +Cc: Eli Zaretskii, emacs-devel, Stefan Monnier, rms

David Kastrup wrote:

> "double blind" only if he does not notice that (zerop (random 1)) is
> always t.

Ah, you spoiled the double blindness. The one who is using it is not 
supposed to know.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 15:18                   ` Stefan Monnier
  2007-03-01 15:56                     ` David Kastrup
@ 2007-03-01 16:54                     ` Stuart D. Herring
  2007-03-01 16:57                       ` Lennart Borgman (gmail)
  1 sibling, 1 reply; 89+ messages in thread
From: Stuart D. Herring @ 2007-03-01 16:54 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, rms, emacs-devel

> Actually, a better test would be to put
>
>    (if (zerop (random 1)) (setq jit-lock-stealth-time nil))
>
> in your .emacs.  And then check the value of jit-lock-stealth-time every
> time you notice a delay (after which, you'll want to restart jit-lock,
> which basically means restart Emacs).
>
> This should bring the experiment a bit closer to the "double blind"
> gold standard.

Remember to seed your random number generator first!  (random t) is your
friend.

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 16:54                     ` Stuart D. Herring
@ 2007-03-01 16:57                       ` Lennart Borgman (gmail)
  2007-03-01 17:00                         ` Stuart D. Herring
  0 siblings, 1 reply; 89+ messages in thread
From: Lennart Borgman (gmail) @ 2007-03-01 16:57 UTC (permalink / raw)
  To: herring; +Cc: Eli Zaretskii, emacs-devel, Stefan Monnier, rms

Stuart D. Herring wrote:
>> Actually, a better test would be to put
>>
>>    (if (zerop (random 1)) (setq jit-lock-stealth-time nil))
>>
>> in your .emacs.  And then check the value of jit-lock-stealth-time every
>> time you notice a delay (after which, you'll want to restart jit-lock,
>> which basically means restart Emacs).
>>
>> This should bring the experiment a bit closer to the "double blind"
>> gold standard.
> 
> Remember to seed your random number generator first!  (random t) is your
> friend.


It was not necessary in this particular case but would perhaps had made 
obfuscation better. ;-)

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 16:57                       ` Lennart Borgman (gmail)
@ 2007-03-01 17:00                         ` Stuart D. Herring
  2007-03-01 17:13                           ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Stuart D. Herring @ 2007-03-01 17:00 UTC (permalink / raw)
  To: Lennart Borgman (gmail); +Cc: Eli Zaretskii, emacs-devel, Stefan Monnier, rms

>> Remember to seed your random number generator first!  (random t) is your
>> friend.
>
> It was not necessary in this particular case but would perhaps had made
> obfuscation better. ;-)

Without it, you'll always get the -same- 0 every time you start Emacs. 
That's even less random than getting different 0s.

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 17:00                         ` Stuart D. Herring
@ 2007-03-01 17:13                           ` David Kastrup
  2007-03-02  1:59                             ` Juanma Barranquero
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-01 17:13 UTC (permalink / raw)
  To: herring
  Cc: Eli Zaretskii, Lennart Borgman (gmail), Stefan Monnier, rms,
	emacs-devel

"Stuart D. Herring" <herring@lanl.gov> writes:

>>> Remember to seed your random number generator first!  (random t) is your
>>> friend.
>>
>> It was not necessary in this particular case but would perhaps had made
>> obfuscation better. ;-)
>
> Without it, you'll always get the -same- 0 every time you start Emacs. 
> That's even less random than getting different 0s.

Oh great.  Binary sectarianism.  Why am I not surprised that the zeros
appear affected foremost?  Probably because of their lack of respect
of authority.  Whoever heard of a significant leading zero?

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01 17:13                           ` David Kastrup
@ 2007-03-02  1:59                             ` Juanma Barranquero
  0 siblings, 0 replies; 89+ messages in thread
From: Juanma Barranquero @ 2007-03-02  1:59 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

On 3/1/07, David Kastrup <dak@gnu.org> wrote:

> Whoever heard of a significant leading zero?

You've never worked for a phone company, have you? :-)

             Juanma

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-01  8:14                 ` Richard Stallman
  2007-03-01 15:18                   ` Stefan Monnier
@ 2007-03-03 13:22                   ` Eli Zaretskii
  2007-03-03 13:36                     ` David Kastrup
  2007-03-04  2:00                     ` Richard Stallman
  1 sibling, 2 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-03-03 13:22 UTC (permalink / raw)
  To: rms; +Cc: emacs-devel

> From: Richard Stallman <rms@gnu.org>
> CC: emacs-devel@gnu.org
> Date: Thu, 01 Mar 2007 03:14:08 -0500
> 
>     My recollection is that they do annoy, but I will need to time things
>     to give more accurate information instead of hand-waving.
> 
> I don't need _more accurate_ information, just confirmation.  I would
> like you to try turning off stealth fontification and see if you are
> frequently annoyed by the need to fontify on the fly.

I mostly use very fast (3 Ghz) machines nowadays, which are not easily
forced into annoying delays.  I could try to find a slower machine,
but I need to know what is the clock speed we consider as
``reference'' for such investigations.  That is, with what slow clock
speeds we would still like Emacs to be reasonably responsive?

On a 3-GHz machine, with jit-lock-stealth-time set to nil, I measure a
consistent 5-10% increase in CPU time when paging up thru sufficiently
long Texinfo documents wrt to an already fontified buffer (18%-25%
percent the first time I page up, vs 10%-16% on subsequent attempts).
By contrast, with the default setting of jit-lock-stealth-time I see
only 1-3% of CPU being used while stealth fontification runs in the
background, which is barely distinguishable from a totally idle
machine.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 13:22                   ` Eli Zaretskii
@ 2007-03-03 13:36                     ` David Kastrup
  2007-03-03 15:10                       ` Eli Zaretskii
  2007-03-04  2:00                     ` Richard Stallman
  1 sibling, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-03 13:36 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rms, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

> On a 3-GHz machine, with jit-lock-stealth-time set to nil, I measure a
> consistent 5-10% increase in CPU time when paging up thru sufficiently
> long Texinfo documents wrt to an already fontified buffer (18%-25%
> percent the first time I page up, vs 10%-16% on subsequent attempts).
> By contrast, with the default setting of jit-lock-stealth-time I see
> only 1-3% of CPU being used while stealth fontification runs in the
> background, which is barely distinguishable from a totally idle
> machine.

Well, I have a 1.2GHz laptop (but the results were similar for my
previous 600MHz box).

Apart from "pathological" buffers, paging through a file will deliver
font locking fast enough to follow the user action, without causing
the laptop to use the fan.

In contrast, left alone to jit-lock-stealth-time=16, Emacs will
eventually turn to eating 100% of CPU time (not 1-3%), causing the fan
to go on and power drainage to occur.

That does not mean that the problematic files will page through
without noticeable delay when I go through them by hand: they tend to
react sluggishly to editing.  But that is a minor inconvenience
compared to the computer going unresponsible at full CPU power
frequently.

I would consider stealth fontification completely useless as long as
the computer can keep up with the user, which appears to be the case
for your usage.  In that case, investing the power when it is actually
needed seems by far the sanest choice.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 13:36                     ` David Kastrup
@ 2007-03-03 15:10                       ` Eli Zaretskii
  2007-03-03 15:24                         ` Daniel Brockman
                                           ` (2 more replies)
  0 siblings, 3 replies; 89+ messages in thread
From: Eli Zaretskii @ 2007-03-03 15:10 UTC (permalink / raw)
  To: David Kastrup; +Cc: rms, emacs-devel

> Cc: rms@gnu.org,  emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Sat, 03 Mar 2007 14:36:28 +0100
> 
> Apart from "pathological" buffers, paging through a file will deliver
> font locking fast enough to follow the user action

Where ``fast enough'' means what, precisely?

> In contrast, left alone to jit-lock-stealth-time=16, Emacs will
> eventually turn to eating 100% of CPU time (not 1-3%)

How can this happen?  JIT-lock is supposed to fontify at most
jit-lock-chunk-size characters (500 by default), and then refrain from
fontification for at least jit-lock-stealth-nice seconds (0.5 by
default).  How can Emacs take 100% of CPU with these defaults?

Maybe there's a bug?  How much time do you need to wait until Emacs
starts using 100% of CPU on your machine?  I didn't see that, but
maybe I didn't wait long enough.  Also, did you try looking at the
percentage of CPU taken by each application, when the CPU consumption
hits 100%, and if you did, was Emacs indeed consuming 100% or
thereabouts at that time?

> That does not mean that the problematic files will page through
> without noticeable delay when I go through them by hand: they tend to
> react sluggishly to editing.

These delays and sluggishness were what I meant when I talked about
annoyances.  I don't like them.

> I would consider stealth fontification completely useless as long as
> the computer can keep up with the user, which appears to be the case
> for your usage.  In that case, investing the power when it is actually
> needed seems by far the sanest choice.

David, your opinion was heard, loud and clear, several times already.
There's no need to reiterate it.  Doing so just wastes bandwidth.

For my part, I can say that investing a small fraction of CPU power
when none is used is by far wiser than annoying the user with
redisplay delays, if those are noticeable.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:10                       ` Eli Zaretskii
@ 2007-03-03 15:24                         ` Daniel Brockman
  2007-03-03 15:43                           ` David Kastrup
  2007-03-04  2:00                           ` Richard Stallman
  2007-03-03 15:37                         ` David Kastrup
  2007-03-04 13:29                         ` David Kastrup
  2 siblings, 2 replies; 89+ messages in thread
From: Daniel Brockman @ 2007-03-03 15:24 UTC (permalink / raw)
  To: emacs-devel

It would be cool if Emacs could detect whether it's running
on battery power and in that case go easy on the CPU.

-- 
Daniel Brockman <daniel@brockman.se>

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:10                       ` Eli Zaretskii
  2007-03-03 15:24                         ` Daniel Brockman
@ 2007-03-03 15:37                         ` David Kastrup
  2007-03-03 23:18                           ` Eli Zaretskii
  2007-03-04 13:29                         ` David Kastrup
  2 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-03 15:37 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rms, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: rms@gnu.org,  emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Sat, 03 Mar 2007 14:36:28 +0100
>> 
>> Apart from "pathological" buffers, paging through a file will deliver
>> font locking fast enough to follow the user action
>
> Where ``fast enough'' means what, precisely?

The limiting factor is the speed with which the user types scrolling
commands.

>> In contrast, left alone to jit-lock-stealth-time=16, Emacs will
>> eventually turn to eating 100% of CPU time (not 1-3%)
>
> How can this happen?  JIT-lock is supposed to fontify at most
> jit-lock-chunk-size characters (500 by default), and then refrain
> from fontification for at least jit-lock-stealth-nice seconds (0.5
> by default).  How can Emacs take 100% of CPU with these defaults?

It does.  If 0.5 seconds is small compared to the time it takes for
the fontification, CPU load will be close to 100%.  Granted, I get
more like 80% on an extended average, but it certainly is enough to
drain the batteries, keep the fan running and render the system
(inside and outside of Emacs) sluggish.

> Maybe there's a bug?

Sigh.  The problem is that _any_ bad font lock pattern in _any_ buffer
could be responsible for the action, and inside of timers, quit is
inhibited.  If there is a bug, stealth-lock makes its effects appear
regardless of what buffer one is editing, while at the same time very
effectively shielding the bug from being debuggable or traceable to a
cause.

> How much time do you need to wait until Emacs starts using 100% of
> CPU on your machine?  I didn't see that, but maybe I didn't wait
> long enough.

Basically, it starts some time after the 16 seconds.

> Also, did you try looking at the percentage of CPU taken by each
> application, when the CPU consumption hits 100%, and if you did, was
> Emacs indeed consuming 100% or thereabouts at that time?

Yes, Emacs was consuming between 70% and 100% at that time.
Repeatably.  This annoyed me for _months_ without being able to trace
it to a cause (and yes, I tried my hand with debug-on-quit and similar
things: stealth fontification "nicely" works around all that).  Only
after a bug report and Richard's suggestion to check out stealth
fontification was I able to get rid of this nonsense.

After months.  And several other Emacs developers have reported to
have used this setting for similar reasons.

>> That does not mean that the problematic files will page through
>> without noticeable delay when I go through them by hand: they tend
>> to react sluggishly to editing.
>
> These delays and sluggishness were what I meant when I talked about
> annoyances.  I don't like them.

Well, guess what: I don't like them when I am editing _unrelated_
buffer or not editing anything at _all_.  Stealth fontification
acerbates the problem by spreading it around your whole desktop so
that it becomes almost impossible to pinpoint it.  But it _does_ _not_
fix the problematic cases.  It just makes it impossible to attribute
them to their cause.

>> I would consider stealth fontification completely useless as long
>> as the computer can keep up with the user, which appears to be the
>> case for your usage.  In that case, investing the power when it is
>> actually needed seems by far the sanest choice.
>
> David, your opinion was heard, loud and clear, several times
> already.  There's no need to reiterate it.  Doing so just wastes
> bandwidth.

I was commenting on your findings.  Do you mean to say that discussion
of your findings is to be prohibited if that could point to the same
conclusion?

> For my part, I can say that investing a small fraction of CPU power
> when none is used is by far wiser than annoying the user with
> redisplay delays, if those are noticeable.

As I said: they are only noticeable when patterns are at work that
make stealth fontification behave _untolerably bad_, without being
debuggable.

The CPU power is not just invested when "none is used", it drains the
power of the system, it suggests that Emacs is the _only_ application
worthy to use CPU power at any time, anyway, and so it is fine for it
to grab it without being asked.  And even if we ignore all that and
make believe that the fairy world in which laptop batteries and any
application except Emacs itself don't count is reality, you still
gloss over the fact that stealth fontification does not even work
transparently within Emacs itself: Emacs reacts sluggishly and the
cursor blink gets erratical (or disappears altogether) when this
happens, and stealth fontification makes it _impossible_ to debug the
cause.

Sure, "maybe there is a bug".  But such bugs can be in the font lock
patterns of any mode, and there is no point in making them
nondebuggable and forcing their effects upon the users, just because
they are "only bugs".

Apart from which I am still of the opinion that an idle Emacs should
in its default setting _not_ consume any CPU power when no events
occur.

An application that turns into a power and CPU hog when it goes
unsupervised is _not_ going to win any trust contests.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:24                         ` Daniel Brockman
@ 2007-03-03 15:43                           ` David Kastrup
  2007-03-04  2:00                           ` Richard Stallman
  1 sibling, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-03-03 15:43 UTC (permalink / raw)
  To: Daniel Brockman; +Cc: emacs-devel

Daniel Brockman <daniel@brockman.se> writes:

> It would be cool if Emacs could detect whether it's running
> on battery power and in that case go easy on the CPU.

You are again assuming that Emacs is the only application worth
grabbing CPU power.

Emacs is intended to be started once and then kept running.  If the
only way to keep it from hogging the CPU is to exit it, this makes
Emacs unsuitable as an editor.

Emacs is an editor, an interactive application: the moments where a
user finds it acceptable for it to consume CPU are those when she it
typing into it.

Stealth fontification may be nice as a user option (though I have
still to see a single case where its effects are not worse than what
it is supposed to cure), but enabling it by default is sheer madness.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:37                         ` David Kastrup
@ 2007-03-03 23:18                           ` Eli Zaretskii
  2007-03-04  8:16                             ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-03-03 23:18 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: rms@gnu.org,  emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Sat, 03 Mar 2007 16:37:33 +0100
> >> 
> >> Apart from "pathological" buffers, paging through a file will deliver
> >> font locking fast enough to follow the user action
> >
> > Where ``fast enough'' means what, precisely?
> 
> The limiting factor is the speed with which the user types scrolling
> commands.

Does it keep up with the keyboard's autorepeat, for example?

> >> In contrast, left alone to jit-lock-stealth-time=16, Emacs will
> >> eventually turn to eating 100% of CPU time (not 1-3%)
> >
> > How can this happen?  JIT-lock is supposed to fontify at most
> > jit-lock-chunk-size characters (500 by default), and then refrain
> > from fontification for at least jit-lock-stealth-nice seconds (0.5
> > by default).  How can Emacs take 100% of CPU with these defaults?
> 
> It does.  If 0.5 seconds is small compared to the time it takes for
> the fontification, CPU load will be close to 100%.  Granted, I get
> more like 80% on an extended average, but it certainly is enough to
> drain the batteries, keep the fan running and render the system
> (inside and outside of Emacs) sluggish.

It sounds strange that fontification of 500 characters should take
time much longer than 0.5 seconds.  What happens if you increase the
value of jit-lock-stealth-nice, does the load go down proportionally?

> > David, your opinion was heard, loud and clear, several times
> > already.  There's no need to reiterate it.  Doing so just wastes
> > bandwidth.
> 
> I was commenting on your findings.  Do you mean to say that discussion
> of your findings is to be prohibited if that could point to the same
> conclusion?

I didn't mean anything except what I said.  And please cool down, we
are discussing technical issues that aren't supposed to get anyone
worked out.

> > For my part, I can say that investing a small fraction of CPU power
> > when none is used is by far wiser than annoying the user with
> > redisplay delays, if those are noticeable.
> 
> As I said: they are only noticeable when patterns are at work that
> make stealth fontification behave _untolerably bad_, without being
> debuggable.

Then perhaps fixing those bad patterns is a better way of dealing with
the problem.  Can you tell what files exhibit this bad behavior?  I'd
like to see what happens with them on my machines.

> The CPU power is not just invested when "none is used", it drains the
> power of the system, it suggests that Emacs is the _only_ application
> worthy to use CPU power at any time, anyway, and so it is fine for it
> to grab it without being asked.

We have customizations to take care of significant drain of power.  We
were discussing the defaults.  By default, I think Emacs should use up
a small fraction of CPU resources when it fontifies stealthily.  That
is what the default values try to accomplish.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 13:22                   ` Eli Zaretskii
  2007-03-03 13:36                     ` David Kastrup
@ 2007-03-04  2:00                     ` Richard Stallman
  2007-03-04  8:42                       ` David Kastrup
  1 sibling, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-03-04  2:00 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

    I mostly use very fast (3 Ghz) machines nowadays, which are not easily
    forced into annoying delays.  I could try to find a slower machine,
    but I need to know what is the clock speed we consider as
    ``reference'' for such investigations.  That is, with what slow clock
    speeds we would still like Emacs to be reasonably responsive?

I don't know.  I have not kept track of things like that for 15 years.

But I think that if NONE of the developers now finds this annoying,
that problem will be rare enough that it doesn't count for much.

So we can set jit-lock-stealth-time to nil.

Would someone please do that?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:24                         ` Daniel Brockman
  2007-03-03 15:43                           ` David Kastrup
@ 2007-03-04  2:00                           ` Richard Stallman
  1 sibling, 0 replies; 89+ messages in thread
From: Richard Stallman @ 2007-03-04  2:00 UTC (permalink / raw)
  To: Daniel Brockman; +Cc: emacs-devel

    It would be cool if Emacs could detect whether it's running
    on battery power and in that case go easy on the CPU.

It would be nice, but we shouldn't try to do that now.
Please suggest it again 2 months after Emacs 22 is released.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 23:18                           ` Eli Zaretskii
@ 2007-03-04  8:16                             ` David Kastrup
  0 siblings, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-03-04  8:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: rms@gnu.org,  emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Sat, 03 Mar 2007 16:37:33 +0100
>> >> 
>> >> Apart from "pathological" buffers, paging through a file will deliver
>> >> font locking fast enough to follow the user action
>> >
>> > Where ``fast enough'' means what, precisely?
>> 
>> The limiting factor is the speed with which the user types scrolling
>> commands.
>
> Does it keep up with the keyboard's autorepeat, for example?

I find that under X11 on my machine, processes tend not to be
decoupled to such a high degree that the autorepeat keeps producing
key presses when they are no longer consumed, so there are no
accumulative bad side effects that immediately accompany the point of
"can't keep up".  For me, it tends to keep up.  Note that I changed
the default just about at the time where I started my rant, but then,
Emacs never really got finished with his high-power stealth
fontification jobs, anyway (which is the reason why they are extremely
annoying), and so could not save me much time.

>> >> In contrast, left alone to jit-lock-stealth-time=16, Emacs will
>> >> eventually turn to eating 100% of CPU time (not 1-3%)
>> >
>> > How can this happen?  JIT-lock is supposed to fontify at most
>> > jit-lock-chunk-size characters (500 by default), and then refrain
>> > from fontification for at least jit-lock-stealth-nice seconds
>> > (0.5 by default).  How can Emacs take 100% of CPU with these
>> > defaults?
>> 
>> It does.  If 0.5 seconds is small compared to the time it takes for
>> the fontification, CPU load will be close to 100%.  Granted, I get
>> more like 80% on an extended average, but it certainly is enough to
>> drain the batteries, keep the fan running and render the system
>> (inside and outside of Emacs) sluggish.
>
> It sounds strange that fontification of 500 characters should take
> time much longer than 0.5 seconds.  What happens if you increase the
> value of jit-lock-stealth-nice, does the load go down
> proportionally?

Since the load numbers are not absolutely stable, this is an
experimentation in futility.

>> > David, your opinion was heard, loud and clear, several times
>> > already.  There's no need to reiterate it.  Doing so just wastes
>> > bandwidth.
>> 
>> I was commenting on your findings.  Do you mean to say that
>> discussion of your findings is to be prohibited if that could point
>> to the same conclusion?
>
> I didn't mean anything except what I said.

Fine, then you were wrong.  I did offer my opinion on your findings
previously, so it could not have been heard before.

> And please cool down, we are discussing technical issues that aren't
> supposed to get anyone worked out.

Well, they _are_ getting my computer worked out, to say the least.

>> As I said: they are only noticeable when patterns are at work that
>> make stealth fontification behave _untolerably bad_, without being
>> debuggable.
>
> Then perhaps fixing those bad patterns is a better way of dealing
> with the problem.

What about "without being debuggable" is hard to understand?  Setting
jit-lock-stealth-verbose to t makes it likely that several files are
affected and in several modes.  One is texbook.tex (but by far not the
only).  But it does not behave similarly bad when viewed directly, and
there is likely some interaction with AUCTeX modes or highlighting
involved, as well.

The problem is that it is _not_ _debuggable_ and affects operations in
_all_ buffers in a non-reproducible way due to stealth fontification.

We really don't want to have a setting that spreads problems with one
buffer/major mode/font lock pattern across _all_ of Emacs' operation.

It makes it close to impossible to ever pinpoint the problem and get
rid of it.

> Can you tell what files exhibit this bad behavior?  I'd like to see
> what happens with them on my machines.

As I said: it depends on several circumstances (like using desktop.el,
so files get loaded without getting displayed, and using several modes
and settings in several combinations).  And it is not reproducible.

>> The CPU power is not just invested when "none is used", it drains
>> the power of the system, it suggests that Emacs is the _only_
>> application worthy to use CPU power at any time, anyway, and so it
>> is fine for it to grab it without being asked.
>
> We have customizations to take care of significant drain of power.
> We were discussing the defaults.  By default, I think Emacs should
> use up a small fraction of CPU resources when it fontifies
> stealthily.

I disagree.  By default, an idle Emacs session should be idle.  That
is what people expect from an interactive application, and certainly
from an editor.  Without a _very_ good reason, no deviation from that
policy makes sense.  One has to be aware that Emacs is a _large_
application.  If it is sitting idle, the normal behavior under memory
pressure is that it gets mostly paged out in order not to disturb
other processes, and that is sensible behavior.  Stealth
fontification, however, will cause almost _everything_ to get paged in
again since it touches every buffer and every major mode and has to
garbage collect in the process as well.

This is _not_ what an idle interactive program should do, in
particularly not one as large as Emacs.

So even if stealth fontification worked always as intended and no
problematic font lock patterns existed on the world, it would _still_
be a bad idea to enable it without explicit request from the user.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04  2:00                     ` Richard Stallman
@ 2007-03-04  8:42                       ` David Kastrup
  2007-03-05  2:55                         ` Richard Stallman
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-04  8:42 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     I mostly use very fast (3 Ghz) machines nowadays, which are not easily
>     forced into annoying delays.  I could try to find a slower machine,
>     but I need to know what is the clock speed we consider as
>     ``reference'' for such investigations.  That is, with what slow clock
>     speeds we would still like Emacs to be reasonably responsive?
>
> I don't know.  I have not kept track of things like that for 15 years.
>
> But I think that if NONE of the developers now finds this annoying,
> that problem will be rare enough that it doesn't count for much.
>
> So we can set jit-lock-stealth-time to nil.
>
> Would someone please do that?

I have done that and changed the NEWS entry accordingly, too.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-03 15:10                       ` Eli Zaretskii
  2007-03-03 15:24                         ` Daniel Brockman
  2007-03-03 15:37                         ` David Kastrup
@ 2007-03-04 13:29                         ` David Kastrup
  2007-03-04 20:59                           ` Eli Zaretskii
  2007-03-05  2:55                           ` Richard Stallman
  2 siblings, 2 replies; 89+ messages in thread
From: David Kastrup @ 2007-03-04 13:29 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: rms, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: rms@gnu.org,  emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Sat, 03 Mar 2007 14:36:28 +0100
>> 
>> Apart from "pathological" buffers, paging through a file will deliver
>> font locking fast enough to follow the user action
>
> Where ``fast enough'' means what, precisely?
>
>> In contrast, left alone to jit-lock-stealth-time=16, Emacs will
>> eventually turn to eating 100% of CPU time (not 1-3%)
>
> How can this happen?  JIT-lock is supposed to fontify at most
> jit-lock-chunk-size characters (500 by default), and then refrain from
> fontification for at least jit-lock-stealth-nice seconds (0.5 by
> default).  How can Emacs take 100% of CPU with these defaults?

Actually, it is more around 75% of CPU time according to "top".
Enough to cause a power drain, keep Emacs mapped to memory, and
obviously in long enough bursts to keep the computer in general and/or
Emacs from being responsive.

> Maybe there's a bug?  How much time do you need to wait until Emacs
> starts using 100% of CPU on your machine?  I didn't see that, but
> maybe I didn't wait long enough.  Also, did you try looking at the
> percentage of CPU taken by each application, when the CPU
> consumption hits 100%, and if you did, was Emacs indeed consuming
> 100% or thereabouts at that time?

Since I just got hit again (I deleted my customization of
jit-lock-stealth-time after checking in the change, but did not
actually recompile here), I tried changing jit-lock-stealth-nice.
Changing it from the default of 0.5 to a value of 3 will cause the CPU
load that top reports Emacs to be taking (when it goes wild) to drop
from about 75% (for 0.5) to about 40% (for 3).  So a totally wild
interpolation would come to the conclusion that the "bad"
fontification attempts take about 75%*0.5sec/25% = 1.5sec or
40%*3sec/60%=2sec each, which is similar enough for such a rough
estimate.

Maybe stealth lock should keep track of the actual time it spends on
fontification and calculate its next jit-lock-stealth-nice value based
on that.  Or should disable stealth lock in buffers that seem not to
behave well.

As I said, the most common culprit at the moment for me seems to be
texbook.tex.gz.  I can send you a copy if you want to, but as I said,
the problem also seems to depend on some third-party packages.

After a few seconds of thrashing, I get the following results from
instrumenting font-latex:

Function Name                              Call Count  Elapsed Time  Average Time
=========================================  ==========  ============  ============
font-latex-match-command-in-braces         1780        3.2092149999  0.0018029297
font-latex-find-matching-close             970         3.0349990000  0.0031288649
font-latex-match-type-declaration          10          3.012727      0.3012727
font-latex-match-simple-command            62693       2.2595180000  3.604...e-05
font-latex-script                          14685       1.3847209999  9.429...e-05
font-latex-match-command-with-arguments    4800        1.2166909999  0.0002534772
font-latex-match-script                    14695       1.1428459999  7.777...e-05
font-latex-match-function                  4210        0.8861020000  0.0002104755
font-latex-commented-outp                  27908       0.7627639999  2.733...e-05
font-latex-unfontify-region                10          0.4944489999  0.0494449

Now 62693 is a large number, and the whole file apparently contains
just 37633 occurences of LaTeX commands.  The stealth fontification
for which I have now profiled just a few seconds, pretty much goes on
indefinitely.  So it would appear that there is something like
quadratic behavior in some circumstances triggered in connection with
stealth fontification.

So yes, there is likely a bug (or whatever one may call something that
takes up too much time) in this particularly severe case, but it is
not triggered outside of stealth fontification, and stealth
fontification makes the problem be pretty much impossible to debug
properly, and triggers it when editing _any_ buffer.

I can send you the file in question, but you'll probably need
font-latex and possible other AUCTeX components for reproducing the
problem.  But it is likely to be a black hole: there are other modes
with possible font locking problems, and it is just not a good idea to
spread their effects across a whole Emacs session.  That way, they
will much less likely be fixed some day.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04 13:29                         ` David Kastrup
@ 2007-03-04 20:59                           ` Eli Zaretskii
  2007-03-04 21:13                             ` David Kastrup
  2007-03-05  2:55                           ` Richard Stallman
  1 sibling, 1 reply; 89+ messages in thread
From: Eli Zaretskii @ 2007-03-04 20:59 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> Cc: rms@gnu.org,  emacs-devel@gnu.org
> From: David Kastrup <dak@gnu.org>
> Date: Sun, 04 Mar 2007 14:29:48 +0100
> 
> I can send you the file in question

If that's the standard texbook.tex from CTAN, I have it.  FWIW, I
don't see any special problem with it in "emacs -Q".  JIT stealth
still takes 1-3% of CPU on a 3GHz box, when this file is the only one
loaded in a session.

> but you'll probably need font-latex and possible other AUCTeX
> components for reproducing the problem.

Are there other files which exhibit similar problems?  Or did we just
change the defaults because of some singular case, which on top of
that needs unbundled packages to raise its ugly head?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04 20:59                           ` Eli Zaretskii
@ 2007-03-04 21:13                             ` David Kastrup
  2007-03-07  1:05                               ` Miles Bader
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-04 21:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Cc: rms@gnu.org,  emacs-devel@gnu.org
>> From: David Kastrup <dak@gnu.org>
>> Date: Sun, 04 Mar 2007 14:29:48 +0100
>> 
>> I can send you the file in question
>
> If that's the standard texbook.tex from CTAN, I have it.  FWIW, I
> don't see any special problem with it in "emacs -Q".  JIT stealth
> still takes 1-3% of CPU on a 3GHz box, when this file is the only one
> loaded in a session.
>
>> but you'll probably need font-latex and possible other AUCTeX
>> components for reproducing the problem.
>
> Are there other files which exhibit similar problems?  Or did we just
> change the defaults because of some singular case, which on top of
> that needs unbundled packages to raise its ugly head?

I get similar effects with other files (not just TeX files, C mode has
shown similar problems in some iterations), and if you had followed
the discussion closely, you'd have realized that several other
developers have disabled jit-lock-stealth-time previously for their
own problems using it.

I apologize for providing an actual example if it causes such a
reaction.

In case you have forgotten: I have repeatedly stated that there might
very well be problems with some font lock patterns in some modes.  The
problem with stealth fontification is that it makes those problems
non-debuggable, non-deterministic and spreads their bad effects across
all buffers and modes, without the user being able to pinpoint them
any more.

With the current settings, such problems, if they exist, will exhibit
themselves when paging through the affected areas.  People will be
able to report them.  Currently, we instead let Emacs drain the
batteries without a possibility to pinpoint when and why that is
happening.

And again: it is not just me and not just a single file and setup:
_several_ other developers have, after my report, stated that they had
long ago disabled stealth fontification for similar reasons.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04  8:42                       ` David Kastrup
@ 2007-03-05  2:55                         ` Richard Stallman
  0 siblings, 0 replies; 89+ messages in thread
From: Richard Stallman @ 2007-03-05  2:55 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

Thanks.

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04 13:29                         ` David Kastrup
  2007-03-04 20:59                           ` Eli Zaretskii
@ 2007-03-05  2:55                           ` Richard Stallman
  2007-03-05  7:18                             ` David Kastrup
  1 sibling, 1 reply; 89+ messages in thread
From: Richard Stallman @ 2007-03-05  2:55 UTC (permalink / raw)
  To: David Kastrup; +Cc: eliz, emacs-devel

    So yes, there is likely a bug (or whatever one may call something that
    takes up too much time) in this particularly severe case, but it is
    not triggered outside of stealth fontification, and stealth
    fontification makes the problem be pretty much impossible to debug
    properly, and triggers it when editing _any_ buffer.

Is the bug in font-latex, perhaps?

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-05  2:55                           ` Richard Stallman
@ 2007-03-05  7:18                             ` David Kastrup
  0 siblings, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-03-05  7:18 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     So yes, there is likely a bug (or whatever one may call something that
>     takes up too much time) in this particularly severe case, but it is
>     not triggered outside of stealth fontification, and stealth
>     fontification makes the problem be pretty much impossible to debug
>     properly, and triggers it when editing _any_ buffer.
>
> Is the bug in font-latex, perhaps?

I think it imprudent to call it "the bug": any problem in font
highlighting patterns in any of the loaded buffers/major modes can
have the same, non-traceable effects.  I already said that I have seen
similar things with cc-mode.  Until we can guarantee that all major
modes have efficient font lock patterns/code ("correct" alone does not
cut it), stealth fontification will hide problems while making them
more severe.

After some back and forth with one AUCTeX developer, I have asked him
to install a private branch to font-latex which is likely related to
the problem seen with texbook.tex.  It would be my guess that it might
address the particular performance problem seen with texbook.tex.

So the problem triggered by this particular input file might be gone
with future releases of AUCTeX.

But as I already stated: this was merely the file that broke the
camel's back for me and caused me to report the problem which I was
unable to trace to a cause (stealth fontification _is_ stealthy in
hiding its tracks, if not its effects).

And it certainly was not the file that caused several other developers
to disable stealth fontification before (which they then reported).

-- 
David Kastrup

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-04 21:13                             ` David Kastrup
@ 2007-03-07  1:05                               ` Miles Bader
  2007-03-07  4:50                                 ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Miles Bader @ 2007-03-07  1:05 UTC (permalink / raw)
  To: David Kastrup; +Cc: Eli Zaretskii, emacs-devel

David Kastrup <dak@gnu.org> writes:
>> If that's the standard texbook.tex from CTAN, I have it.  FWIW, I
>> don't see any special problem with it in "emacs -Q".  JIT stealth
>> still takes 1-3% of CPU on a 3GHz box, when this file is the only one
>> loaded in a session.
>
> I get similar effects with other files (not just TeX files, C mode has
> shown similar problems in some iterations), and if you had followed
> the discussion closely, you'd have realized that several other
> developers have disabled jit-lock-stealth-time previously for their
> own problems using it.

What OS do you use?  How much memory you have?

-Miles

-- 
"Most attacks seem to take place at night, during a rainstorm, uphill,
 where four map sheets join."   -- Anon. British Officer in WW I

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-07  1:05                               ` Miles Bader
@ 2007-03-07  4:50                                 ` David Kastrup
  2007-03-07  5:01                                   ` Miles Bader
  0 siblings, 1 reply; 89+ messages in thread
From: David Kastrup @ 2007-03-07  4:50 UTC (permalink / raw)
  To: Miles Bader; +Cc: Eli Zaretskii, emacs-devel

Miles Bader <miles@gnu.org> writes:

> David Kastrup <dak@gnu.org> writes:
>>> If that's the standard texbook.tex from CTAN, I have it.  FWIW, I
>>> don't see any special problem with it in "emacs -Q".  JIT stealth
>>> still takes 1-3% of CPU on a 3GHz box, when this file is the only one
>>> loaded in a session.
>>
>> I get similar effects with other files (not just TeX files, C mode has
>> shown similar problems in some iterations), and if you had followed
>> the discussion closely, you'd have realized that several other
>> developers have disabled jit-lock-stealth-time previously for their
>> own problems using it.
>
> What OS do you use?  How much memory you have?

Ubuntu GNU/Linux, 384kB.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-07  4:50                                 ` David Kastrup
@ 2007-03-07  5:01                                   ` Miles Bader
  2007-03-07 21:44                                     ` David Kastrup
  0 siblings, 1 reply; 89+ messages in thread
From: Miles Bader @ 2007-03-07  5:01 UTC (permalink / raw)
  To: emacs-devel

David Kastrup <dak@gnu.org> writes:
>> What OS do you use?  How much memory you have?
>
> Ubuntu GNU/Linux, 384kB.
                       ^^

Gee, no wonder!  :-/

-miles

-- 
"An atheist doesn't have to be someone who thinks he has a proof that there
can't be a god.  He only has to be someone who believes that the evidence
on the God question is at a similar level to the evidence on the werewolf
question."  [John McCarthy]

^ permalink raw reply	[flat|nested] 89+ messages in thread

* Re: Default of jit-lock-stealth-time
  2007-03-07  5:01                                   ` Miles Bader
@ 2007-03-07 21:44                                     ` David Kastrup
  0 siblings, 0 replies; 89+ messages in thread
From: David Kastrup @ 2007-03-07 21:44 UTC (permalink / raw)
  To: Miles Bader; +Cc: emacs-devel

Miles Bader <miles.bader@necel.com> writes:

> David Kastrup <dak@gnu.org> writes:
>>> What OS do you use?  How much memory you have?
>>
>> Ubuntu GNU/Linux, 384kB.
>                        ^^
>
> Gee, no wonder!  :-/

Uh, 384MB.

-- 
David Kastrup, Kriemhildstr. 15, 44793 Bochum

^ permalink raw reply	[flat|nested] 89+ messages in thread

end of thread, other threads:[~2007-03-07 21:44 UTC | newest]

Thread overview: 89+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-02-25 12:13 Default of jit-lock-stealth-time David Kastrup
2007-02-25 13:31 ` martin rudalics
2007-02-25 22:29 ` Kim F. Storm
2007-02-26  3:27 ` Richard Stallman
2007-02-26  4:56   ` Stefan Monnier
2007-02-26 19:52     ` Richard Stallman
2007-02-26 20:14       ` Eli Zaretskii
2007-02-27  7:39         ` Richard Stallman
2007-02-27 20:43           ` Eli Zaretskii
2007-02-28  7:27             ` Richard Stallman
2007-02-28 20:36               ` Eli Zaretskii
2007-03-01  8:14                 ` Richard Stallman
2007-03-01 15:18                   ` Stefan Monnier
2007-03-01 15:56                     ` David Kastrup
2007-03-01 16:00                       ` Lennart Borgman (gmail)
2007-03-01 16:54                     ` Stuart D. Herring
2007-03-01 16:57                       ` Lennart Borgman (gmail)
2007-03-01 17:00                         ` Stuart D. Herring
2007-03-01 17:13                           ` David Kastrup
2007-03-02  1:59                             ` Juanma Barranquero
2007-03-03 13:22                   ` Eli Zaretskii
2007-03-03 13:36                     ` David Kastrup
2007-03-03 15:10                       ` Eli Zaretskii
2007-03-03 15:24                         ` Daniel Brockman
2007-03-03 15:43                           ` David Kastrup
2007-03-04  2:00                           ` Richard Stallman
2007-03-03 15:37                         ` David Kastrup
2007-03-03 23:18                           ` Eli Zaretskii
2007-03-04  8:16                             ` David Kastrup
2007-03-04 13:29                         ` David Kastrup
2007-03-04 20:59                           ` Eli Zaretskii
2007-03-04 21:13                             ` David Kastrup
2007-03-07  1:05                               ` Miles Bader
2007-03-07  4:50                                 ` David Kastrup
2007-03-07  5:01                                   ` Miles Bader
2007-03-07 21:44                                     ` David Kastrup
2007-03-05  2:55                           ` Richard Stallman
2007-03-05  7:18                             ` David Kastrup
2007-03-04  2:00                     ` Richard Stallman
2007-03-04  8:42                       ` David Kastrup
2007-03-05  2:55                         ` Richard Stallman
2007-02-26 21:33       ` Stefan Monnier
2007-02-27  8:17       ` David Kastrup
2007-02-27 20:48         ` Eli Zaretskii
2007-02-28  2:37         ` Richard Stallman
2007-02-28  2:37         ` Richard Stallman
2007-02-26  7:16   ` David Kastrup
2007-02-26 19:53     ` Richard Stallman
2007-02-27  8:19       ` David Kastrup
2007-02-26  4:39 ` Stefan Monnier
2007-02-26  7:11   ` Romain Francoise
2007-02-26  7:35     ` David Kastrup
2007-02-26 10:20       ` Andreas Schwab
2007-02-26 10:43         ` David Kastrup
2007-02-26 10:56           ` Andreas Schwab
2007-02-27  7:38             ` Richard Stallman
2007-02-27  8:31               ` David Kastrup
2007-02-27 11:00               ` David Kastrup
2007-02-28  2:37                 ` Richard Stallman
2007-02-26 11:26           ` Juanma Barranquero
2007-02-26 11:28             ` David Kastrup
2007-02-26 14:56               ` Juanma Barranquero
2007-02-26 12:13             ` Jan Djärv
2007-02-26 10:24       ` Kim F. Storm
2007-02-26 13:42         ` martin rudalics
2007-02-26 14:26           ` Stefan Monnier
2007-02-26 16:32             ` martin rudalics
2007-02-26 15:10           ` David Kastrup
2007-02-26 15:22             ` Kim F. Storm
2007-02-26 16:44               ` martin rudalics
2007-02-26 22:55                 ` Kim F. Storm
2007-02-26 19:56       ` Eli Zaretskii
2007-02-26 21:34         ` Stefan Monnier
2007-02-26 23:19           ` Miles Bader
2007-02-27  0:43             ` Stefan Monnier
2007-02-27  2:10               ` Miles Bader
2007-02-27  4:57                 ` Stefan Monnier
2007-02-27  8:23                   ` David Kastrup
2007-02-27 20:54                     ` Eli Zaretskii
2007-02-27 20:59                       ` David Kastrup
2007-02-27 21:19                         ` Eli Zaretskii
2007-02-27 22:02                           ` David Kastrup
2007-02-28  4:42                             ` Eli Zaretskii
2007-02-28  6:35                               ` David Kastrup
2007-02-28 20:33                                 ` Eli Zaretskii
2007-02-28  7:27                           ` Richard Stallman
2007-02-28 20:39                             ` Eli Zaretskii
2007-02-27 23:21                         ` Stefan Monnier
2007-02-27  4:22           ` Eli Zaretskii

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).