Doing it better 1999-02-01 ### > Actually, I've been thinking from the other end. Over the weekend I was > worrying about something, and when I'm worried I can't work, so I did some > Tau stuff instead (because when it's exciting I can distract myself from > worrying). > > I attacked it from the "I want to write code *now*" angle, and got close > enough that I think I really will be able to write some code soon. It will > contain a VM interpreter which will be a basic stack machine, plus > interfaces to the console, memory and the network (i.e. other programs). > It will have built-in parallelism via a user-rewritable scheduler, which > will at the most primitive level pre-empt after a certain no. of virtual > instructions (but clock-based pre-emption could easily be added > "underneath"). > > I'm not going to say any more because if I don't tell you enough for you > to argue and pick holes I might be confident enough to write the code. > > I expect that the whole thing should fit in about 1kb of compiled code, > unless the I/O stuff takes more than I expect (that's with shared > libraries). > > The next thing I want is a type manager (for types and versions) and a > system navigator (for the moment the only user interface will be the > ability to send arbitrary messages to arbitrary ports). > > I'm going to think about this a bit more this evening when I do my > laundry. Sounds like you want to start where my Diploma project left off. How'd you like me to help you start there? The big advantage would be that the basic organisation of modules, channels, threads etc. is already there. No subroutines either. Interpreter/JIT within the model. You also have 1200 bytes of good code towards your communication primitives. *DO NOT UNDERESTIMATE THE AWKWARDNESS OF COMMUNICATION*. Killing a communicatimg process is a right bugger. Much easier in the linear world, where a process dies when it communicates, and can only persist by copying itself first, but much more inefficient too. Scheduler: nice idea. Mine was dumb. Console: nice idea. I abandoned mine in favour of BASIC, which worked a treat. Network: very nice idea. Better than BASIC. Types: My channel model is nice and restrictive, ready for the typing scheme of your choice. I'd love to influence a project like this. Alistair