TITLE ^

Status of Lua on Parrot

Introduction ^

Lua is an extension programming language designed to support general procedural programming with data description facilities. It also offers good support for object-oriented programming, functional programming, and data-driven programming. Lua is intended to be used as a powerful, light-weight scripting language for any program that needs one.

The homepage is http://www.lua.org/.

The reference manual is available on http://www.lua.org/manual/.

This implementation is aligned with Lua 5.1 specifications.

Compiler ^

This compiler is written in Perl5 :

KNOWN PROBLEMS ^

in languages/lua/t/closure.t :

    a = {}
    local x = 20
    for i=1,10 do
        local y = 0
        a[i] = function () y=y+1; return x+y end
    end

    print(a[1]())
    print(a[1]())
    print(a[2]())

    --[[
    The loop creates ten closures (that is, ten instances of the anonymous
    function). Each of these closures uses a different y variable, while all
    of them share the same x.
    ]]

y variable is not different.

TODO ^

Handle arguments from command line.

Try to use Parse::RecDescent (the original Lua uses a LL parser).

Lua PMC ^

There are eight basic types in Lua, each of them is implemented by a PMC, or by a PIR class.

languages/lua/type/base_lua.pir provides an abstract base class for Lua types (table, userdata, thread).

languages/lua/pmc/luabase.pmc provides an abstract base class for Lua types (nil, boolean, number, string, function).

languages/lua/pmc/lua.pmc is a singleton PMC what holds some static methods.

BUGS ^

Lua PMC have problems with the Parrot garbage collector : used objects are released by the GC (infant mortality ?).

So, use the option --no-gc.

TODO ^

Arguments passing in invoke method of table. Where are there ?

Weak table, weak reference.

IMPROVEMENT ^

table with a mixed array and hash.

Lua Standard Libraries ^

Lua 5.1 defines the following standard libraries:

languages/lua/lib/luaaux.pir is the equivalent of Auxiliary Library.

TODO ^

Except math library, all of these libraries are incomplete.

And the coroutine library does not work.

Next Milestones ^

Understand how work PGE & TGE and write an interpreter in PIR.

Related Projects ^

Klaas-Jan Stol works on 2 projects :

See http://members.home.nl/joeijoei/.

AUTHOR ^

Francois Perrad.


parrot