Tue Aug 4 11:14:36 CEST 2009

A bit less cryptic

Practically, this project is about giving ideas implicit in Packet
Forth[1] a new home.

For day-to-day problem solving in embedded software projects, C is not
going anywhere because next to a programming language, it is also an
interface standard, both for commodity machines and commodity

Instead of focussing on building new languages, I think it is
worthwhile to do some engineering on with subsets of C itself, by
providing an infrastructure that makes it easier to bootstrap
``functional, concurrency oriented C code''.

Hopefully this idea will become easier to articulate once the
implementation is done.

The goal is this:

   * Write a re-usable collection of C primitives necessary to support
     a dynamically typed scripting language, but do this in such a way
     that it does _not_ depend on external memory or control models.

   * To test the primitives and the programming method, write a couple
     of dyntyped scripting languages (memory and control models) on
     top of the primitives.  I'm thinking about two: a PF-like
     concatenative linear stack language and a Scheme-like
     CONS/CONT/GC based language.

   * Write a compiler for static memory allocation and scheduling to
     optimize away the scripting layer.

   * Use a data-flow architecture (inspired by Oz).

Static types?  Given that the goal of the project is _prototyping_
which is mainly _evolving specification_ I think it's better to stick
to a simpler dynamically typed approach.

[1] http://zwizwa.be/packetforth