FunOS
References
Official FunOS Dogma.
Similar work includes:
Ocelot Scheme and
Nasos.
Why Scheme?
Operating systems to look at include:
RPIX, TUNIS,
SPIN,
Plan9,
QNX, and
VSTa.
Lisp Machine References
Immediate Goals
The Assembly Layer
Figure out what needs to be done in order to boot the machine;
write assembly that does that.
We should be able to grab stuff from the Linux kernel (see linux/arch/i386/; 4k lines).
Linux 0.01 (1.5k lines of assembly) or Linux 0.12 (3k lines) may be more accessible.
Note: __asm__(instruction : outputs : inputs : clobbered registers)
The Java OS boot routine might be good too (license?).
The Caml Layer
This implements FunScheme. This is the foundation for all that follows.
Make Scheme programs work.
The Scheme Kernel
We'll need to implement Scheme debugging tools to prepare for future work.
We'll need an Emacs too (eventually).
How does the OS work?
Dave helps here. He's familiar with OS construction.
User Space
There are two directions here: the Linux API and a Scheme environment.
Down the Linux branch, we need a Linux-based hello world program to work.
Then more stuff.
Bigger Projects
Extend FunScheme
- Modules
- Records?
- Byte Arrays?
- Rollover Integers or Register datatypes?
- Explicit memory handling?
- Threads
- UTF-8? UTF-32?
- Good GC
- Object System and MOP
- Incremental Compiler
Dave wants the bottom layer in Caml because it makes a good test case
for his ML compiler research.
I'm still unconvinced that we wouldn't be better off using Scheme48.
Maybe Dave could rewrite the Scheme48vm in Caml? :)
Scheme48 macros suck, though. T?
We should probably avoid low-level language add-ons unless they're absolutely necessary.
Other Stuff
- Online Documentation (including systems code)
- Emacs
- Powerful debugging tools.
System analysis tools.
Program analysis tools.
- C Compiler (that outputs mostly readable Scheme or CPS Scheme,
including the mapping of typical C libraries to native FunOS functionality)
This should be written in C, of course, since all REAL compilers are self-compiling.
- Window System