tech-userlevel archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Lua as a scripting language in NetBSD
I am suggesting to add the language Lua to the NetBSD base system as a
scripting language for general use and as a scripting language to be
embedded in applications in the base system. Please let me explain
why and what the conseqeunces of such an addition would be.
Lua is a scripting language with a very small memory footprint that
has been designed as an embedded (or hosted) language from the ground
up. As such, it's integration into software written in e.g. C or C++
is straighforward. Lua is very fast, it is recognized as one of the
fastest scripting languages. The language has a clear and simple
syntax with some very powerful concepts; the libraries (called
packages) that come with it are themselves reasonable small. Lua
compiles programs to a bytecode which is executed by a very small
virtual machine. Lua scripts can be precompiled to bytecode for
faster load times (but not faster execution). The first versions of
Lua date back in 1993, so the language is stable and mature.
(The Lua homepage is at http://www.lua.org/, the reference manual can
be found at http://www.lua.org/manual/5.1/. More information about Lua
can also be found at http://www.lua.org/about.html)
Lua is an excellent candidate as a scripting language in base, because
it is small, fast, and powerful and a user can learn it very quickly.
For endusers, having Lua can leverage scripting in NetBSD, e.g. if a
reasonable interface to e.g. POSIX functionality is provided. (which
exists with the luaposix package, btw). For developers of software
written in C it is a very convenient and efficient means to extend the
software by a scripting engine.
Lua would allow us to extend exisiting software in interesting ways,
DHCP option processing in DHCP clients comes to my mind, or even the
system installer, sysinst (not to speak of the advantages of keeping
airport codes up to date using Lua scripts...) I have more ideas, but
I want to discuss the general case of having Lua in base first, well
aware that it is a chicken and egg problem: To use Lua in base, we
need it in base. To have Lua in base, we need software that makes use
of it...
Examples of software that uses Lua as the engine for scripting
purposes are e.g. Adobe Lightroom, World of Warcraft. It's also used
in printers manufactured by Océ. I myself use it in BSD based POS
systems. Look at the Lua homepage for more uses.
Other scripting languages I looked at are Perl and Python (plus
JavaScript and even Java, which I don't discuss here). From the
perspective of efficiency and ease of use, Lua is the best fit: Perl
allows you write code nobody can read (loking at some Perl code, I am
actually amazed that the Perl interpreter understands it...) and
embedding Perl has some serious problems, too. Python is a very nice
language, but it's strange blocking concept is not liked by
everyone. Both Perl and Python use way more memory when embedded, are
slower in almost all cases, and harder to integrate into existing
software. Plus their libraries are bloated, to say the least.
Having Lua in base of course means that it has to be actively
maintained, and if it would be added at some time in the future, I am
volunteering to maintain it by keeping it up to date in -current and
applying security and stability fixes to -stable branches.
From private discussions I know that already one or the other
developer uses Lua and at least a handful of people already told me
that they could make good use of Lua in base, and so could I. Please
note that Lua is in pkgsrc, if you want to try it out.
So I am opening the discussion about Lua's addition to the base system.
- Marc Balmer
Home |
Main Index |
Thread Index |
Old Index