Author: Virgil Dupras <email@example.com>
Date: Wed, 15 Jun 2022 19:18:00 -0400
3 files changed, 28 insertions(+), 2 deletions(-)
diff --git a/README.md b/README.md
@@ -80,7 +80,7 @@ type are simple Forth words.
Here's the plan so far:
1. Have a 32-bit Forth written in x86 run on top of of a Linux system.
-2. Create an ANSI C compiler that is partly written in Forth and has the
+2. Create a pseudo C compiler that is partly written in Forth and has the
peculiarity of bootstrapping itself from it. No binary except Dusk's core.
3. Run as PID 1 on top of a Linux kernel.
4. Target a machine and have it run bare metal on it.
diff --git a/fs/doc/arch.txt b/fs/doc/arch.txt
@@ -30,7 +30,7 @@ flag (1=immediate).
Native words don't save registers they use. For Forth words, it doesn't matter
much because all words are "atomic". Once they return, register values don't
-matter anymore. Some native words call each other and this this case, careful
+matter anymore. Some native words call each other and in this case, careful
threading is necessary, but otherwise, it works well as is.
When other languages are concerned, however, this attribute becomes important
diff --git a/fs/doc/cc.txt b/fs/doc/cc.txt
@@ -0,0 +1,26 @@
+# Dusk OS C compiler
+The C compiler is a central piece of Dusk OS. It's written in Forth and is
+loaded very early in the boot process so that it can compile drivers we're
+about to use.
+This compiler needs to meet two primary design goals:
+1. Be as elegant and expressive as possible in the context of a Forth, that is,
+ be an elegant fallback to Forth's shortcomings.
+2. Minimize the work needed to port exiting C applications.
+It is *not* a design goal of this C compiler to be able to compile POSIX
+applications without changes. It is expected that a significant porting effort
+will be needed each time.
+Because of the first goal, we have to diverge from ANSI C. The standard library
+will likely be significantly different, the macro system too. Both will
+hopefully fit better with Forth than their ANSI counterpart.
+But because of the second goal, we want to stay reasonably close to ANSI. The
+idea is that the porting effort should be mostly a mechanical effort and
+it should be as little prone as possible to subtle logic changes caused by the
+For this reason, the core of the language is the same.