libreCMC is an embedded GNU/Linux distribution (without any proprietary code) of firmware for embedded devices, such as wireless routers. It began as a fork of OpenWRT.

The difference between these two is that OpenWRT, like most GNU/Linux distributions, include non-free binary drivers (most often for wireless). However, it may unfortunately be hard to find a router that is supported by libreCMC, so my efforts have been mostly on packaging languages for OpenWRT (although the packages should work on libreCMC, I cannot guarantee that, since I do not own a compatible router).

libreCMC and OpenWRT already come 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 the distribution. This page contains instructions, Makefiles, patches and anything else needed to get small Lisps, Forth variants and other interesting languages working. 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 libreCMC/OpenWRT, the smaller and cheaper routers have a very small amount of flash memory.

The description of the packaged languages follows.

The packaging was done by Jeronimo Pellegrini. Send problem reports to j_p *** (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. The approximate size of each package, after installed on a qemu image, is listed.

KNOWN BUG: tinyscheme will segfault when you exit the REPL with ^D. This does not happen in the ordinary x86 build.

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:// (these are not maintained by me):