[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Release plans
From: |
Thien-Thi Nguyen |
Subject: |
Re: Release plans |
Date: |
Sat, 30 Aug 2008 21:51:01 +0200 |
User-agent: |
Gnus/5.13 (Gnus v5.13) Emacs/23.0.60 (gnu/linux) |
() Stefan Monnier <address@hidden>
() Fri, 29 Aug 2008 16:20:09 -0400
I'm not sure I understand what you mean. In the case of something like
Semantic, if parsing in Elisp is too expensive or if you want to use
some existing C code to do the parsing, the bottleneck you'll have to
handle is that the external process can't directly access the buffer's
text,
In the common case, that text is a file on the filesystem (which the
subprocess can access independently). I would design things so that the
subprocess persists for the Emacs session and maintains its own state,
such as various project-specific symbol tables and a copy of the buffer.
Commands from Emacs would be along the lines of "sync-with-file",
"query-symbol", "query-parse-state", and so forth. Results from the
query-FOO commands should typically be very low bandwidth.
So no, i don't think the bottleneck would be the buffer access (for this
design), because the subprocess does not really need to access the buffer.
Changes to the buffer that have not yet hit the filesystem can be
communicated by publishing some portion of `buffer-undo-list' (which is
also relatively lightweight).
and it can be very costly to pass that text to the subprocess and
then process the returned value (which may look like a list of text
properties to add to various parts of the text).
Well...
A DLL could be significantly more efficient. The difference can be as
large as "on-the-fly" vs "batch".
...i suppose i'll have to agree that all these "could be" scenarios are
possible. My view is that given the requirement of external symbol tables
(and other state), the biggest win for both performance and maintainability
is to go asynchronous. If you want async from a subprocess, no worries,
but if you want async in-process, you need to either design (and debug and
maintain) "ethreads", or make Emacs play nice w/ pthreads or quickthreads
or phase-of-the-moon-threads or whathaveyou. Then, you need to make sure
every visitor treats your program counter w/ the respect it deserves.
That's a lot of thankless and brutish police work.
thi
- Re: Release plans, (continued)
- Re: Release plans, Richard M. Stallman, 2008/08/28
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans, Bruce Stephens, 2008/08/29
- Re: Release plans, Lennart Borgman (gmail), 2008/08/29
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans, Thien-Thi Nguyen, 2008/08/29
- Re: Release plans, Stefan Monnier, 2008/08/29
- Re: Release plans, Lennart Borgman (gmail), 2008/08/29
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans,
Thien-Thi Nguyen <=
- Re: Release plans, Thomas Lord, 2008/08/30
- Re: Release plans, Thien-Thi Nguyen, 2008/08/31
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans, Thien-Thi Nguyen, 2008/08/31
- Re: Release plans, Thomas Lord, 2008/08/29
- Re: Release plans, Richard M. Stallman, 2008/08/29
- Re: Release plans, Thomas Lord, 2008/08/27
- Re: Release plans, Alfred M. Szmidt, 2008/08/27
- Re: Release plans, Thomas Lord, 2008/08/27
- Re: Release plans, Richard M. Stallman, 2008/08/28