lua-users home
lua-l archive

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


Hi,

It is a hard decision to take, I've been following Lua for two years and used it intensively in several projects including irccd [1] and Lua-SDL [2]. There were already things that I didn't like much in Lua but I could deal with it but some are much more annoying for me.

* No continue keyword

This has probably been the most requested feature and I don't really understand why it is, it is not included. So you have break but not continue, it makes no sense at all. This is probably the thing I hate the most in Lua. Each Lua version breaks compatibility with previous versions so the argument "adding a new keyword will break" is not enough for me. I personally think it's just to piss people off. This keyword may take something like 15-30 lines of code maybe?

* The equality operator

Lua was designed with the use of ~= instead of != in mind because it was planned to be used by non programmers IIRC. It's okay, but I don't think ~= is easier to understand than !=. When you have thousands of languages which already use != and you come to Lua which use ~= you may be confused. In some spoken languages, ~= means "approximatively equals".

* Closed source development

While Lua is completely free and open source, I don't like much the closed development model it uses. First because you never know when / what feature is coming except when a work version come few years later. Also this close development model includes a big flaw, if Lua does not compile / work on a certain operating system, you can't send a patch because:

1. Lua's authors don't accept patches
2. Because you don't have access to the development source code

So, if one day Lua 5.3 does not work correctly on my OS, what should I do? Tell Lua's authors to install my OS and try by themselves?

* Compatibility

Each Lua release breaks the compatibility with earlier versions. There are however some compatibility switches to enable removed functions but it does not save the functions whose signatures have completely changed. This break scripts everytime.

The same concern is applied for the C API, if I want to support different versions of Lua, I need to add a bunch of #if LUA_VERSION_NUM to fix the signatures.

* Modules

As a side effect of the compatibility problem explained above, a lot of modules are *still not* Lua 5.2 compatible and some are just completely outdated. I know this because I have already sent patches to some of them and tried others. I don't think Lua will have a large ecosystem like Python or RubyGems because of these compatibility issues.

With that in mind, Lua is probably not the best language to use as a standalone application and embedding is better (which I did with irccd).

* Lua's authors decisions

I've read in the FAQ that Lua *is* Lua's authors language. I agree that because it's their language that they can do what they want, it's true. But when you release it publicly, you will expect to have lot of feature request / changes, almost all of them are just completely ignored because Lua's authors *don't* want them. In that case, I just think that Lua should even not have a mailing list and just a "bug tracker".

Also, it seems that almost each Lua version remove essentials function that users *have used* in the past, so removing them constrain the Lua user to adapt its script or to never update the Lua version.

Because of this, I'm very afraid of what may be removed in Lua 5.4 and future versions.

Nevertheless, it was very fun to use Lua in my IRC bot, I really loved it because it has simplified a lot the creation of plugins. I much enjoyed this but now I think I'll just leave the land of scripting languages at all, at the beginning I was thinking of switching to V8 but I think I'll just stick with plain C++. However, I will still maintain irccd and Lua-SDL2 which will be my last Lua powered projects.

Roberto, Luiz thanks very much for your work, Lua is a great language, but probably not for me.

I'll still keep my PiL 3 as an historical use.

On a very sad day, regards,
David.

[1] http://projects.malikania.fr/irccd
[2] https://redmine.malikania.fr/projects/luasdl2/wiki