commit e33919d68398666258fb318ec71753fa4f1a011b
parent b45b0c3695a99ae82290a3f0c047a284116bc0c7
Author: Virgil Dupras <hsoft@hardcoded.net>
Date: Wed, 22 Jun 2022 12:03:39 -0400
Update status in README
Diffstat:
M | README.md | | | 37 | +++++++++++++++++++++++++++---------- |
1 file changed, 27 insertions(+), 10 deletions(-)
diff --git a/README.md b/README.md
@@ -73,8 +73,6 @@ written in the first place. This is so much simpler!
Object files? Global symbols? Nah. C functions that don't have a static storage
type are simple Forth words.
-(note: this isn't actually done yet. See Status below. But it's well underway.)
-
## Roadmap
Here's the plan so far:
@@ -82,17 +80,36 @@ 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 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.
-5. Self-host.
-6. Steal drivers from Linux and/or BSD kernels to widen hardware support.
-7. Port exiting POSIX applications so that Dusk OS fulfills its stated goals.
+3. Target a machine (probably legacy PC) and have it run bare metal on it.
+4. Self-host.
+5. Steal drivers from Linux and/or BSD kernels to widen hardware support.
+6. Port exiting POSIX applications so that Dusk OS fulfills its stated goals.
+7. Add support for more machines.
## Status
-Currently working on step 2 of the roadmap. There are functional tokenization,
-AST parsing and assembler generation phases, but implementation is (very very)
-partial. You can see an example with "./dusk < testcc.fs".
+Currently working on step 2 of the roadmap. The C compiler has a fair chunk of
+the language implemented already. You can see a sample of what it compiles in
+`fs/tests/cc/test.c`. It technical documentation is at `fs/doc/cc.txt`. What's
+missing currently is:
+
+* ops width depending on type (everything is dword)
+* struct, union
+* typedefs
+* global variables
+* for, while, switch, goto
+* string literals
+* floats
+* a few ops here and there
+* preprocessing
+* the check phase (anything that is currently understood by the parser is
+ compiled no matter how nonsensical).
+* the stdlib (but it's going to be significantly different than a regular C
+ stdlib, see `fs/doc/cc.txt`)
+* probably countless bugs
+
+So, there's a fair chunk of work left, but there's also a lot that's already
+done.
Development happens on [sourcehut][3].