unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Miles Bader <miles@gnu.org>
To: Jonathan Rockway <jon@jrock.us>
Cc: Emacs Devel <emacs-devel@gnu.org>
Subject: Re: Very interesting analysis of "the state of Emacs"
Date: Thu, 01 May 2008 15:42:51 +0900	[thread overview]
Message-ID: <87od7qikyc.fsf@catnip.gol.com> (raw)
In-Reply-To: <87bq3qodp4.fsf@bar.jrock.us> (Jonathan Rockway's message of "Wed, 30 Apr 2008 23:23:03 -0500")

Jonathan Rockway <jon@jrock.us> writes:
> The issue is when we start putting global variables into the mix:
...
> Anyway, hopefully someone has some ideas on what to do here.  I admit I
> haven't looked at how sxemacs handles this yet. Maybe we can just deal
> with locks?  At least in that case my IMAP mail could download while I
> am typing in another buffer :)

If the multi-threading were cooperative (as rms suggested), then such
problems would obviously be a bit easier to manage -- you can basically
just say "no context switches except at well defined points", and define
these "points" to be (1) user interaction/recursive edits [where the
user can do something to "screw up the state" even today], or (2)
explicit calls to yield.

Even with such a restrictive system, I think it's _much_ easier to make
a potentially slow bit of elisp code (gnus or whatever) multi-threadable
by sticking in (yield) calls at strategic places, and of course you'd
make sure that these places were chosen so that any global state
depended on after the yield returns is restricted to places that are
very unlikely to be modified (e.g., if gnus is reading from nntp, for
instance, it could keep all state in its own scratch buffers).

However I think there are potentially additional problems with dynamic
scope:  remember, elisp uses shallow scoping, where binding a variable
is basically "save old value, and set global".  For normal variables,
this could be replaced by deep-binding, which is more multi-threading
friendly (my "lexbind" branch already uses deep-binding in the
interpreter), but afaik, the use of shallow-binding in elisp is kind of
intertwined with the implementation of buffer-local variables and the
like, and I'm not so sure how easy it would be to handle such things
with a new deep-binding implementation.

-Miles

-- 
Admiration, n. Our polite recognition of another's resemblance to ourselves.




  parent reply	other threads:[~2008-05-01  6:42 UTC|newest]

Thread overview: 30+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-04-29  3:19 Very interesting analysis of "the state of Emacs" Thomas Lord
2008-04-29  7:26 ` Paul Michael Reilly
2008-04-29 23:17   ` Richard M Stallman
2008-04-30  0:14     ` Thomas Lord
2008-04-30  2:21     ` Stephen Eilert
2008-04-30  3:20       ` dhruva
2008-04-30 22:00         ` Richard M Stallman
2008-04-30 22:49           ` David Hansen
2008-04-30 23:46             ` Thomas Lord
2008-05-01  7:30               ` tomas
2008-05-01  4:23             ` Jonathan Rockway
2008-05-01  6:31               ` David Hansen
2008-05-01  6:42               ` Miles Bader [this message]
2008-05-01 18:59                 ` Jonathan Rockway
2008-05-02 15:36                 ` Stefan Monnier
2008-05-02 16:50                   ` CEDET and threads (was Re: Very interesting analysis of "the state of Emacs") Eric M. Ludlam
2008-05-03  8:09                   ` Very interesting analysis of "the state of Emacs" Richard M Stallman
2008-05-03 19:24                     ` Stefan Monnier
2008-05-04  9:37                       ` Richard M Stallman
2008-05-04 23:23                         ` buffer transactions (was Re: Very interesting analysis of "the state of Emacs") Nic
2008-05-05 15:14                           ` Richard M Stallman
2008-04-30  5:12       ` Very interesting analysis of "the state of Emacs" Miles Bader
2008-04-30 14:06         ` David Kastrup
2008-04-30 15:08         ` Tom Tromey
2008-05-15  6:21           ` ERC disconnects when blocked too long (was: Very interesting analysis of "the state of Emacs") Michael Olson
2008-04-30 16:08         ` Very interesting analysis of "the state of Emacs" Thomas Lord
2008-04-30  6:24       ` Paul Michael Reilly
2008-04-30 14:12       ` Mathias Dahl
2008-04-30 22:01       ` Richard M Stallman
2008-04-30 22:56         ` Thomas Lord

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

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

  git send-email \
    --in-reply-to=87od7qikyc.fsf@catnip.gol.com \
    --to=miles@gnu.org \
    --cc=emacs-devel@gnu.org \
    --cc=jon@jrock.us \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).