A preview of Guile-Lua (rebirth), and some opinions
nalaginrut.com
nalaginrut.com
It is interesting that you chose to implement Lua 5.2. Why choose 5.2 over 5.3 (the most recent version) or 5.1 (probably still the most used)?
As a Lua developer I really don't like what you did with ISSUE-1. In particular there could be some code that calls `foo()` explicitly on another object: `a.b.c.foo(d)`. This is perfectly well defined in Lua and can be used in some libraries that implement object models. It will not behave as expected with your design.
I am pretty happy to see articles mentioning both Lua and Scheme though. Both communities shared a developer room at FOSDEM last year, and hopefully we will this year too. [1]
For ISSUE-1. Yes, I know it may break the compatibility of some existing code. The problem is why people reference a variable named 'self' but not expect it to be the current table? People may named a var as 'self' to hold other value. I think that is the problem. 'self' is actually a reserved word in Lua, but Lua permit it to be used for other value. I don't think it's good. For example, some Scheme implementations allow users redefine primitives, you may redefine '+' with '-'. It's interesting, but it's bad when you want to build serious program. Another point is mentioned in the article that people could easier find the error when they encountered an exception related to 'self'.
Anyway, my point is that a good Lua programmer should avoid to use a.b.c.foo() if one wants to get the current table, no matter how the function is defined (colon or point). But people always do wrong thing (include me), so why not provide a mechanism to let them avoid this problem? Fixed ISSUE-1 could let people get rid of this problem, even you make the mistake to use point reference on 'self', you can get correct value if you defined the function with colon.