lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


Greetings!

I have been working on a port/rewrite of Pluto [1] for Lua 5.2.2,
since I couldn't really figure out whether Pluto was still being
worked on.

I have published a current snapshot of my progress over on Github [2],
with some basic documentation. This is by no means heavily tested yet,
although the Pluto testcases - plus some new ones, like yielded pcalls
- are successful (on Win32/64 and Linux64 [3]). Please do have a look,
though. I'll be using this in a little project of mine, so I'll
hopefully find (and squash) any possibly remaining bugs in due time.
Since I'm not the maintainer of Pluto, and some internal changes are
quite big, I decided to give it its own name, Eris. Just in case you
were wondering.

Now, I'd like you to keep in mind one thing: two weeks ago my
knowledge of the actual Lua *internals* was zero. I have quite some
experience in the language itself and the public API. But when it
comes to the structure of the state, call stack and values... well,
let's just say I feel I'm still only just scratching the surface.

For that reason I'd really appreciate it if someone more experienced
could spare a little bit of their time to have a cursory glance over
what I did [4]. And tell me if there's something terribly, horribly
wrong anywhere. I'm pretty confident in most things, except the
thread/coroutine persistence.
In particular there's one field for which I haven't quite figured out
how to check whether it's currently in use, or just random data:
CallInfo.extra. Right now I'm just always persisting it, but this way
I can't validate it when reading it back (when set it should be the
relative position of a function on the stack, if I'm not mistaken?)

Anyway, thanks for reading this. I'd appreciate any (ideally
constructive) feedback and pull requests :)

Regards,
Florian Nuecke

[1] https://github.com/hoelzro/pluto
[2] https://github.com/fnuecke/eris
[3] Note that 32bit and 64bit versions are *not* compatible at this
    point. When trying to load persisted data from one architecture
    into another you'll just get an error. I'll probably look into
    this in the future, but if you'd like to give it a go, by all
    means, please do!
[4] https://github.com/fnuecke/eris/blob/master/src/eris.c