Rafael "Dido" Sevilla

ABSTRACT

Starlang stands for STack ARchitecture LANGuage. It is a small, dynamically typed procedural language with C-like control flow and constructs. It has many features that are characteristic of Lisp-like languages. Like Java, it has a byte-compiler that converts a source file into machine-independent bytecode, which is interpreted by a virtual machine which can theoretically be implemented on any physical machine. Its primitive data types include:

The compound data types (pairs and vectors), can have any other data type, including themselves, within them. They are also allocated dynamically. It is never necessary to free any dynamically-allocated variables manually, as there is an automatic garbage-collection routine in the virtual machine. Functions are first-class citizens in Starlang; it is perfectly legal to assign functions to variables, pass functions as arguments to functions, and so forth.

The virtual machine is intended to be multithreaded; and threading is also built into the language. It is possible to call functions written in C or some other compiled language from the virtual machine as well.

This project is currently in the late prototyping stages; a byte compiler exists which is more or less in its final form (the back end needs to be revised somewhat), and a Linux-hosted virtual machine is under development. Expect an alpha release by mid-August of 1999. A virtual machine running on the M68HC11 family processors is planned.  
© 2004 UP Department of Electrical & Electronics Engineering Mobile Robotics Laboratory
For comments and suggestions, e-mail me at rpfernandez@up.edu.ph