proj-oot-ootTodos

Introduction

See also:

---

Contents

---

Plan

Plan: Introduction

Plan: Overall plan

Specify and implement Boot, BootX

Implement:

Go thru and process:

Revise the Boot and BootX? specs.

At this point we have a draft Boot/BootX? platform.

Consider implementing:

If something is learned during implementation, revise and revisit ootAssemblyThoughts and ootNotes*.txt as needed, revise the specs. At the end, reimplement these things to the revised specs.

At this point we have a portable assembly language platform/VM; Boot can be easily ported to new platforms, and BootX? can be compiled to Boot. So we can target BootX? going forward. When we wish to spend time optimizing Oot for a certain platform, we can bother to implement a compiler directly from BootX? to that platform.

Finally, add to my todo list to revise and edit and publish the assembly language concordance (until this point i might gain further experience with it).

Goals here:

Implement macro assembler and/or HLL for BootX

To make it more convenient to write code for BootX?, implement a macroassembler and/or a very simple HLL that compiles to it.

For the HLL, we have some options:

The idea here is simply a more comfortable way to write platform-independent 'assembly language'. We don't yet want to introduce confining abstractions (like C does).

At that point, we'll have a more comfortable low-level platform that compiles to BootX?, and hence will be very portable.

Decide on and implement the next level

Now we have to decide what the (initial attempt at a) next level will be.

I'm currently thinking of a virtual machine that provides:

Potential goals here:

Implement an Oot Core

The goal at this point is not to decide all the pending design decisions and implement a real Oot Core, but rather just to slap something together so that i can start playing around with HLLs and getting experience in how the pending design decisions affect the implementation.

I'm not sure exactly what i should implement first, but i'm guessing:

After this point i can take stock of what i've learned and go back and revise my plans, possibly rereading a lot of the Thoughts and Notes files here.

The initial goal here is just to slap something together. The ultimate goals of Oot Core may include:

Implement an Oot

In pre-Oot Core, implement an interpreter or compiler for pre-Oot (either as an interpreter, or possibly using metaprogramming, if that sort of thing is available). At this point we have bootstrapped pre-Oot. Now, in pre-Oot, implement an interpreter or compiler to pre-Oot Core (unless pre-Oot is just a metaprogrammed extension to Oot Core), and then implement an interpreter or compiler from pre-Oot Core to a lower level platform (either an intermediate platform, or BootX?). Also, reimplement the Python-based Boot/BootX? toolchains in pre-Oot.

At this point we'll have a self-hosting language toolchain.

Now we can really start playing around with pre-Oot and trying out the various design decisions.

Plan: by timescale

Plan: Short-term plan

Plan: Medium-term plan

Plan: Long-term plan

Plan: Sub-plans

---

Todo

Todo: Urgent and important

Todo: Urgent and not important

Todo: Important but not urgent

Todo: organization

---

Unstructured notes/todos