What is your goal for the lll?

Nathan Hawkins utsl@one.net
Wed, 24 Apr 1996 16:03:17 -0400 (EDT)


On Tue, 23 Apr 1996, Eric W. Biederman wrote:

> You have stated that you have a seperate goal for the lll, for your
> own operating system project, or something along those lines.  I was
> wondering what that is, so I can get a better feel for what is going
> on, and what you want from the lll.
> 
> The big difference I remember is that you want the lll to be portable?
> 
> This information would really help.

Ok. Some background on how I got involved in all this...

I began writing OS code about 10 years ago, on my own machines (6809 and 
Z80 at the time), purely because I wanted to write my own system. I 
mastered the basics of writing device drivers, and I was going to have a 
common disk format and programming environment across the two machines. 
I never got that far, but since then, I obtained a 386, and now a 486, 
and I've continued hacking on system code.

I had a project of my own when Fare and I first met on Roland Nilsson's 
mailing list for his OS project (Avante it's now called). We argued for a 
couple weeks, sometimes violently about HL vs. LL programming, until I 
discovered I had confused him and Tunes with someone else. (I had just 
started a job that put me on third shift, and I was very confusable at 
the time. :( )

Anyway, by this time, I had discovered Forth, and had been thinking about 
ways to use Forth in the core of my own project. The conclusion I had 
come to was that Forth mostly needs better modularity. I wanted (and still 
do) to drasticly extend the vocabulary concept into a hierarchical 
directory style structure. (Some of you may have seen a my thread on this in 
comp.lang.forth.) And I'd like to make my own Forth-like language 
capable of being ported to most =>32-bit processors. This shouldn't be 
too hard.

Now I had written three or four Forth's and a lot of device drivers and 
such like over the years, so Fare and I thought I might be able to help 
the Tunes project, and my own at the same time. Maximize code reuse, by 
building something useful to more people.

The main thing I want that is different from Tunes, is I want the "lll" 
to be a language I can use. I'd like to be able to write my system in 
modules, and allow some modules to be shared with Tunes, if Tunespeople 
want them, and keep the rest. For example, a debugger for the lll would 
probably make it easier for the hll compiler writers to debug their code 
generator, but wouldn't be something the Tunes project would really need 
for the long term. (But I would...)

So what I want is something I can still use as a Forth-based 
human-writable/readable language with the following principal features:

1. portability
2. efficiency
3. modularity
4. extensibility
5. interactivity

Interactivity would mean being able to interactively type in code and 
hack around like I can in Forth. This wouldn't need to be active in 
Tunes, or would be restrict(ed/able), but would be an important part of 
my system. (Command interpreters are useful, sometimes.)

Modularity would mean the ability to load a package of words into memory 
and unload them when finished with them. Forth has never really had a 
good means of separating programs and libraries from the rest of it and 
each other. Nowadays, this is a liability, which I would like to eliminate.

So overall, I'd say the main difference is I'm not thinking about an 
intermediate language, but a primary implementation language for my own 
OS. One which needs to be able to do certain things, but could be 
extended to do everything else. :)

Let me know if I need to be more specific or clarify anything.

*utsl*