Lua (portugiesisch für Mond) ist eine Skriptsprache zum Einbinden in Programme, um diese leichter weiterentwickeln und warten zu können. Eine der besonderen Eigenschaften von Lua ist die geringe Größe des kompilierten Skript-Interpreters.
Lua Programme werden vor der Ausführung in Bytecode übersetzt. Obwohl man mit Lua auch eigenständige Programme schreiben kann, ist Lua vorrangig als Skriptsprache von C-Programmen konzipiert.
Der Lua Interpreter kann über eine C-Bibliothek angesprochen werden, die auch ein API für die Laufzeitumgebung des Interpreters für Aufrufe vom C-Programm aus beinhaltet. Mittels des API können verschiedene Teile des Programms in C und Lua geschrieben werden, während Variablen und Funktionen in beiden Richtungen erreichbar bleiben (d.h. eine Funktion in Lua kann eine Funktion in C aufrufen und umgekehrt).
Lua ist in ANSI-C implementiert und unterstützt sowohl funktionale als auch objektorientierte Programmierung.
Da der Lua Interpreter extrem schnell und hochgradig portabel ist und sich leicht in C-Programme einbetten lässt, ist er gerade für Embedded Systems eine attraktive Alternative zu anderen Skript Interpretern. Obwohl er nur wenige Kilobyte umfasst, passt noch eine vollständige Garbage Collection hinein, die anfallenden Datenmüll automatisch aus dem Speicher wirft.
Mit dieser Broschüre wollen wir an Hand unserer Erfahrungen die Leistungsmerkmale von Lua verdeutlichen und die Erweiterungsfähigkeit anhand einiger Beispiele demonstrieren.
In einem ersten Beispiel werden wir den auf einem PC installierten Lua Interpreter mit einer DLL erweitern, die die Ansteuerung eines über USB angeschlossenen AD-DA-Subsystems ermöglicht.
Im einem zweiten Beispiel werden wir Lua in eine Anwendung auf einem Embedded System auf Basis eines Intel386¿ EX Prozessors mit ROM-DOS (kompatibel zu MS-DOS 6.22) einbetten und zeigen, dass Lua auch in Systemen mit knappen Ressourcen eingesetzt werden kann.
Im dritten Beispiel werden wir die DOS-Applikation durch eine Linux-Anwendung ersetzen, bei der das kompakte FOX Board G20, ein Linux Embedded Single Board Computer auf der Basis eines Atmel AT91SAM9G20 Mikrocontrollers, zum Einsatz kommt.
Den Abschluss der Anwendungsbeispiele bildet mit eLua ein für Mikrocontrolleranwendungen angepasstes Lua.
Im letzten Abschnitt werden wir Tools vorstellen, die unter gewissen Vorausset-zungen die Verknüpfung von Lua und C/C++ vereinfachen können.