Subject : Why I leave Lua (Was: Re: [ANN] Lua 5.3.0 (work3) now available)

: From : David Demelier <demelier.david@...>

: David Demelier <demelier.david@...> Date: Wed, 09 Jul 2014 14:44:46 +0200

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