OpenWRT is a Linux distribution for embedded devices such as wireless routers. Instead of trying to create a single, static firmware, OpenWrt provides a fully writable filesystem with package management.

OpenWRT already comes with Lua, and it's possible to include languages like Python and PHP. Some people may prefer to write their automation scripts in different languages, so I've tried to bring Lisp and Forth to OpenWRT. This page contains instructions, Makefiles, patches and anything else needed to get small Lisps, Forth variants and other interesting languages working on OpenWRT. So far there are ports of TinyScheme, PicoLisp and Retro. These were chosen using followin criteria:

  1. well-known, mature implementations are preferred over new ones.
  2. it must be easy to cross-compile. It's not unusual for interpreters to depend on an image that is written on-the-fly during compilation, using the binary that has just been generated, for example; sometimes one needs to apply patches depending on the architecture, with no help from autodetection in the Makefile... This complicates the process a lot.
  3. there must be some useful API for system access, or for something else that would be nice to do on a wireless router (having, for example, a Scheme interpreter that only has console read, write and display as methods to interact with the outside world isn't very interesting).
  4. it must be small -- although there are devices with several Mb available that run on OpenWRT, the smaller and cheaper routers have a very small amount of flash memory.

The description of the packaged languages follows.

The OpenWRT packaging was done by Jeronimo Pellegrini. Send problem reports to j_p *** aleph0.info (put the @ sign instead of the ***).

The tarballs listed below contain a Makefile that will download the sources from this site (I have changed them so they compile properly for OpenWRT. The approximate size of each package, after installed on a qemu OpenWRT image, is listed.

I'd also like to package TSION -- another extension for TinyScheme, by Alex Measday, which allows easy implementation of event-driven loops and TCP networking -- but I had no time yet to work on that.

Chibi Scheme is another nice Scheme implementation that could be packaged, but I also had no time to get it cross-compiled in the OpenWRT buildroot.

Bringing Schemix back to life would also be great -- a Scheme interpreter module for the Linux kernel inside the wireless router! (This one is supposed to be fun, not necessaruly useful)

OpenWRT also has, in the subversion repository at svn://svn.openwrt.org/openwrt/packages/lang (these are not maintained by me):