Packet Forth

About

Packet Forth (PF) is a scripting language for soft real-time graphics processing and generation. Although the focus has shifted towards generative graphics in the last couple of years, the original goal was and still is real-time video processing. PF is now quite stable and usable, but remains a bit of an odd duck in the land of open source video processing tools.

PF is a concatenative programming language which takes ideas from Forth, Joy, PostScript, Factor, and Lisp. As opposed to its memetic parents, PF is not intended as a general purpose programming language, but a scripting language that glues together black box processing primitives and relevant open source libraries. PF is also heavily inspired by and can run as an extension of Pure Data by Miller Puckette.

As a language, its defining properties are a linear memory model to reduce memory usage and promote memory locality for video processing, and the use of dynamic typing and generic functions. The code is a result of a long experimental evolution which started in 2002, and is somewhat idiosyncratic. It is written entirely in C. Cleaning up the PF virtual machine and processing code, and generating most from a higher level description language is part of the objectives of the Staapl project.

Download

Here's the latest release. For last minute changes, use the darcs archive.

Documentation

Check the examples in the demo/ directory. Alternatively, subscribe to the mailing list.

History

PF was forked from the Pure Data Packet (PDP) project somewhere in 2003. The PDP project started in fall 2002. The focus over the last 2 years (2006-2007) has been mainly on adding features for OpenGL based generative graphics, driven in large part by the requirements of the Metabiosis project, and on stabilizing and cleaning up the code base.

The future of the PF implementation is a bit uncertain, but the language itself is considered stable. The way I see things now (June 2008), the core language part will probably be absorbed in Staapl, and the simplified glue layers for Linux media APIs will probably find a home in a C library to make them available to other projects; PF will shift more towards video processing: refocussing to the original goals after a 3 year excursion into OpenGL graphics.

If you use it, send me a postcard. PF is written by Tom Schouten and released under the GPL v2.