summaryrefslogtreecommitdiff
path: root/public/emacs-as-an-os.html
blob: 52182454883c65bd389f0ef5dc84b197eadac272 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>Emacs as an operating system — Luke T. Shumaker</title>
  <link rel="stylesheet" href="assets/style.css">
  <link rel="alternate" type="application/atom+xml" href="./index.atom" name="web log entries"/>
</head>
<body>
<header><a href="/">Luke T. Shumaker</a> » <a href=/blog>blog</a> » emacs-as-an-os</header>
<article>
<h1 id="emacs-as-an-operating-system">Emacs as an operating system</h1>
<p>This was originally published on <a
href="https://news.ycombinator.com/item?id=6292742">Hacker News</a> on
2013-08-29.</p>
<p>Calling Emacs an OS is dubious, it certainly isn’t a general purpose
OS, and won’t run on real hardware. But, let me make the case that Emacs
is an OS.</p>
<p>Emacs has two parts, the C part, and the Emacs Lisp part.</p>
<p>The C part isn’t just a Lisp interpreter, it is a Lisp Machine
emulator. It doesn’t particularly resemble any of the real Lisp
machines. The TCP, Keyboard/Mouse, display support, and filesystem are
done at the hardware level (the operations to work with these things are
among the primitive operations provided by the hardware). Of these, the
display being handled by the hardware isn’t particularly uncommon,
historically; the filesystem is a little stranger.</p>
<p>The Lisp part of Emacs is the operating system that runs on that
emulated hardware. It’s not a particularly powerful OS, it not a
multitasking system. It has many packages available for it (though not
until recently was there a official package manager). It has reasonably
powerful IPC mechanisms. It has shells, mail clients (MUAs and MSAs),
web browsers, web servers and more, all written entirely in Emacs
Lisp.</p>
<p>You might say, “but a lot of that is being done by the host operating
system!” Sure, some of it is, but all of it is sufficiently low level.
If you wanted to share the filesystem with another OS running in a VM,
you might do it by sharing it as a network filesystem; this is necessary
when the VM OS is not designed around running in a VM. However, because
Emacs OS will always be running in the Emacs VM, we can optimize it by
having the Emacs VM include processor features mapping the native OS,
and have the Emacs OS be aware of them. It would be slower and more code
to do that all over the network.</p>

</article>
<footer>
  <aside class="sponsor"><p>I'd love it if you <a class="em"
      href="/sponsor/">sponsored me</a>.  It will allow me to continue
      my work on the GNU/Linux ecosystem.  Thanks!</p></aside>

<p>The content of this page is Copyright © 2013 <a href="mailto:lukeshu@lukeshu.com">Luke T. Shumaker</a>.</p>
<p>This page is licensed under the <a href="https://creativecommons.org/licenses/by-sa/4.0/">CC BY-SA 4.0</a> license.</p>
</footer>
</body>
</html>