[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Where can I find some documents about the architecture of emacs?

From: Emanuel Berg
Subject: Re: Where can I find some documents about the architecture of emacs?
Date: Mon, 24 Aug 2015 22:23:08 +0200
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

Navy Cheng <address@hidden> writes:

> I want to learn something about the desgin of emacs
> and want to find the elisp interpretor part of
> emacs. Now, I know the C part is in ./src, but
> I don't know which file/files is about
> the interpretor.
> I find that many of the documents in the source tree
> is about *how to use emacs* other than *the
> architecture of emacs*. Is there any docs I want?

First there is C, then there is Lisp. The C is an
ordinary compiled binary.

In Emacs, there is a kernel "process" that runs all
the time. When you don't do anything, the idle-timer
executes stuff that needs to be done, for example font
locking (or "syntax highlighting"). So Emacs is an OS
tho not a POSIX style OS (e.g., Unix, Linux).

Those OSs (the Unixes) are preemptive where processes
compete for CPU time - the kernel is basically
a scheduler - based on process metadata, e.g., an
integer to express priority, the scheduler controls
what process should gain access to computer resources,
including the very CPU for execution.

In Emacs there is no such competition as stuff gets
done when the user don't do anything - *idle*-timer,
remember? But, doesn't that mean you can stall the
whole thing by just doing stuff all the time? Yes!
But this odd form of stalling doesn't happen
in practice.

Because of the lack of competition (and preemption in
particular), the Emacs architecture is sometimes
called collaborative, which is a good word.
(Contrary to what some people think, collaborating
does not imply the people doing it being
soft-spoken aristocrats.)

There are people on this list that can tell you more,
but it is a start.

underground experts united

reply via email to

[Prev in Thread] Current Thread [Next in Thread]