We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

A high level language for low level code

Formale Metadaten

Titel
A high level language for low level code
Alternativer Titel
A high level language for low level code Using Lua to script the Linux kernel ABI
Serientitel
Anzahl der Teile
90
Autor
Lizenz
CC-Namensnennung 2.0 Belgien:
Sie dürfen das Werk bzw. den Inhalt zu jedem legalen Zweck nutzen, verändern und in unveränderter oder veränderter Form vervielfältigen, verbreiten und öffentlich zugänglich machen, sofern Sie den Namen des Autors/Rechteinhabers in der von ihm festgelegten Weise nennen.
Identifikatoren
Herausgeber
Erscheinungsjahr
Sprache

Inhaltliche Metadaten

Fachgebiet
Genre
Abstract
Controlling Linux from a scripting language offers many advantages, in order to learn about how the operating system works, to build embedded systems and test environments and other uses. The ljsyscall project is a project that is working towards this aim using the Lua programming language to implement the Linux kernel ABI. Linux distributions do a very good job of "just working" out of the box, and hiding what actually goes on, in a complex set of largely compiled code. The original use case to develop ljsyscall came from trying to build small Linux container, virtualised or embedded systems that only needed to do one small thing, where a whole Linux distribution was overkill. It is also easy to understand what is happening with a scripting language as you can explore it in a REPL, see all the source, and run code easily with no recompile cycle. The code is also easier to understand than C for many people, with simpler string handling, garbage collection, and the provision of higher level data types as abstractions, eg for network interfaces. This makes it a good learning tool for what operating systems actually do. The code uses the LuaJIT foreign function interface (ffi) which makes it easy to understand as the Lua to C interface is very simple, as well as being very fast as it is just-in-time compiled giving similar performance to native C code. There are extensive tests, and the code works on x86, AMD64 and ARM processors so far. The code works and already exposes a lot of functionality, including system calls, signals, processes, containers, network interfaces and routing. It is like the busybox application in a scripting language. There is more to implement, such as support for more parts of the netlink protocol. It is being used in some projects now, but a wider audience could help contribute and improve it. You can use it like busybox, or for simple applications, or exploring the system. All code is MIT licensed.