duskos

dusk os fork
git clone git://git.alexwennerberg.com/duskos
Log | Files | Refs | README | LICENSE

commit e33919d68398666258fb318ec71753fa4f1a011b
parent b45b0c3695a99ae82290a3f0c047a284116bc0c7
Author: Virgil Dupras <hsoft@hardcoded.net>
Date:   Wed, 22 Jun 2022 12:03:39 -0400

Update status in README

Diffstat:
MREADME.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].