If you happen to still listen to this thread +Linus Torvalds
, despite it has exploded into absurdity...
What do you consider my idea of running the fundamental operating system kernel in scheme?
y the way, when you asked me 1998, when I sent you my Lic-thesis (halfway PhD thesis) whether "I'm working with artificial intelligence", I said no then, but you was right. It took me further a couple of years to realize that I actually did work with AI. It was like when I was reading the book "Gödel, Escher, Bach: An Eternal Golden Braid"https://en.wikipedia.org/wiki/G%F6del,_Escher,_Bach
in early 80-ies after a friend's recommendation. It was first after over 350 pages (of 777) I realized it was about AI...
When Richard Stallman visited KTH in late 1986 invited by Stacken (computer club) I asked him about Multics, which was a system that I really loved in early 80-ies at ASEA.
RMS considered that it was an attempt to create a lisp machine.http://www.hack.org/mc/texts/rms-at-kth.txt
Multics had an advanced ring protection scheme (not the lisp scheme...) http://www.multicians.org/protection.html
which I consider could be perfectly integrated with an efficient memory management in scheme. Both for file schemes and as memory protection schemes, that is to allocate memory as e..g ultra-fast short (cache register), fast short (RAM), slow short (file cache), slow long term (data base) etc.
I know that you have been critical against message passing earlier Linus, but I consider message passing to be the intuitive. When I was working at ASEA the OS they developed there for MC68000 CX was based upon message passing (and used in power plants, ship control rooms, nuclear power plants etc). The Amiga which I got 1986 had an operating system AmigaOS, whose kernel Exec, was basically a micro-kernel based upon message passing, it was very efficient and very intuitive.https://en.wikipedia.org/wiki/Exec_%28Amiga%29
Now regarding Amiga Exec (as is pointed out on that page) Amiga Exec had flaws, basically due to no MMU, but this was fixable, a friend of mine implemented a memory protection scheme for the Amiga Exec for MC68040. Software which was later supplied when you purchased an Fusion40 accelerator card. Then AmigaOS got rid of all those "guru meditations" :-)
Later in the 80-ies I and a few friends were building Transputer modules to add as co-processors to any PC for arbitrary crunching capability (we named those CLOUD "Computer Lönnerberg Orre Ullén Djurfeldt" ;-) and they were added according a torus topology (due to only 4 links to each CPU). These Transputers implemented Hoare's CSP in their Occam language (an hw supoport).
If one combine:
1. Ring model of memory allocation schemes
2. Ring model of memory protection schemes
3. Message passing à la Hoare's CSP
4. Lambda calculus as hw language
5. *Invisible background garbage collection* (efficient+secure)
(as even "telephones" today have multiple cores, like Galaxy-S3 has 4).
Then one obtain a system which is safe, efficient (only one memory allocation scheme), intuitive, and is excellent for implementation of parallelism (which is trivial with Map/Reduce primitives).
And.. it is easy to implement advanced algorithms based upon e.g. syllogistic reasoning (as they require real lists).
I have worked a lot with guile which has grown into a beast :) but was very small and efficient when I started using at Aubrey Jaffer's SCM early 90-ies. Now guile has of some reason never become a big hit. It also run equally well under DOS, Linux, SunOS, AmigaOS.
However, if we consider another popular scheme Racket (formerly with the less erotic name PLT Scheme) there exists syntactic sugar for plenty of languages like:
This is the system I want!
If the lowest layer is scheme, then there is further no problems with portability, as one, according Greenspun's Tenth rule of programming, need a lisp anyway, whatever you are doing, as it is the most fundamental language, and there are schemes for all architechures. AFAIK the only language which is based upon strict mathematical formalism, and, it has LIST as a fundamental data type, which every sane implementation requires anyway.
(When we did a project work in my MSc program in Uppsala 1977-1981, one task was to implement a preemptive OS kernel for Intel 8080. The first thing I did was to implement a List handing system, to be used for things like scheduling and round robin. The small OS we named MHOS:80 and it was robust... One non-intentional test was when a groups of kids entered the lab and started banging on all the terminals where we were running a micro-shell with a few commands. The system managed fine :-) and the next year they replaced their commercial OS used at the data comm class with ours as ours was easier to use and better documented :)