[Date Prev][Date Next][Thread Prev][Thread Next]
- Subject: Re: Lua and backwards compatibility - was Re: [ANN] Lua 5.3.4 (rc2) now available,
- From: Andrew Starks <andrew@...>
- Date: Thu, 12 Jan 2017 17:48:55 +0000
On 11 January 2017 at 21:06, Hisham <firstname.lastname@example.org> wrote:
> On 11 January 2017 at 17:08, Roberto Ierusalimschy
> <email@example.com> wrote:
>>> Please, do not make such a severely breaking change in a 5.3.x release.
>> We did not realize that. It will be corrected.
> Thank you! :)
I was wondering if it is possible to consider making strong backwards
compatibility guarantees for Lua from 5.3 upwards. I think this will
mean some constraints to Lua's development obviously, but it would
strengthen Lua 's ecosystem.
The strongest argument I could make is that Lua is built on C, and
imagine how difficult it would have been if C had kept changing in
incompatible ways every few years, and all new C compilers stopped
supporting older versions of C.
The other argument for a compatibility promise is to try and bring
everyone up to 5.3 at least. If the language again changes in an
incompatible way that then you will end up with users in 5.1, 5.2, 5.3
and future versions. I think this fragmentation is not beneficial to
I was thinking initially of requesting that "Lua be frozen" as a
language ... but that is maybe too radical a thought.
I think we can see from experience that languages that have done this
- i.e. maintained strong backwards compatibility - such as C, C++,
Java, C#, Go, have all benefited from it. We see also the struggle
being faced by Python moving everyone to 3.x, and similarly the
fragmented ecosystem of Lua.
I believe that the mission of simplicity would come into conflict many attempts to maintain strict backwards compatibility, when progress in the language is the goal. In other languages where size is and simplicity are further down the list of priorities, progress and compatibility are possible.
I think that the authors have adjusted the balance of disruption as Lua has gained popularity, but the above choices probably preclude them from drawing a line in the sand. Also, Lua's primary use case is as an embedded library, not as a standalone language. Given that all versions of Lua are supported and patched when needed, there is no risk to using older versions and there for the need to update is never critical.
For a while it has seemed to me that Lua is reaching perfection. But that is maybe always a silly thought when applied to software. Good ideas are still out there.