BROOD

About

BROOD is an experimental playing ground for exploring the space between the Scheme programming language, functional concatenative (stack) languages, special purpose description languages for control and signal processing applications, and low level Forth. BROOD is an attempt to create a programmable compiler for deeply embedded applications, aimed at engineers on a budget.

To understand the development approach and the current form of the source code, it might be necessary to see it in the right context. I am an electrical engineer working mostly on small embedded control and signal processing projects. I seek to optimize the development process of highly specialized software for embedded systems by small groups of say 1 to 3 people. I got fed up with ad-hoc methods of metaprogramming and code generation that I see used in this engineering subculture, and decided to build a clean system that can be understood and used by a single electrical engineer with an open mind towards modern programming language technology. However, I am not a PLT theorist, and if you want to use BROOD, you don't need to be either.

The current emphasis is on work towards Purrr, a stand-alone standard Forth layer for all microcontroller architectures, and Purrr18 an interactive tethered Forth dialect designed for the 8-bit Microchip PIC18 Microcontroller. Future goals include the design of a linear concatenative language as a successor or drop-in replacement for the Packet Forth interpreter, and the design of a declarative Scheme derived data-flow language to implement DSP functionality on a microcontroller or DSP processor. Eventually I'm trying to cover the whole spectrum of tiny 8-bit microcontrollers to 32-bit machines that can run unix with an integrated language tree based on Forth and Scheme dialects.

Status

The Purrr18 core language seems to be mostly stable. It has been used in several projects, including the Sheep sound synthesizer software and the system software for the CATkit and KRIkit open hardware projects developed in collaboration with GOTO10. The Purrr18 language has been tested on a public of technically oriented artists in the form of several Sheep/CATkit workshops.

The BROOD core is still in a flux. It has some scars from attempted paths that turned out to be dead ends, and lack of insight in the general problem of playing with evaluation time, and how to organize the code bulk. However, the path to simplification and generalization seems quite clear.

As hands-on workshops have indicated, the CATkit board is a valuable candidate as a platform for an online community around the Forth language. There appears to be a population of BASIC programmers looking for something different. A lot of work still has to be done though, including a second board iteration and a more standard Forth language layer on top of Purrr18 that presents a simplified interface. The layer would also decouple the CATkit hardware and BROOD software from the community project.

Use

If you want to use BROOD/Purrr18 for a project, I suggest you temporarily fork the code as a shield from current core changes. This will probably remain the best approach for a while, since I'm still looking for a good way to separate the core from project specific specializations. If you have a problem with GPL, you're probably also in a position to contact me for a combined support and licencing deal.

Documentation

The documentation is mostly the source, but there are some ad-hoc text files in the doc folder. Some preliminary papers are available for BROOD, Purrr18 and the Sheep sound synthesizer.

Download

The main distribution channel is the darcs archive. Development can be followed from the dev log. The BROOD source code, including that of its subprojects, is released to the public under the terms of the GPL v2. BROOD is written by Tom Schouten.