3 ms·
Lua did a language fork at version 5.3. I think this supports the 5.3 fork but it would be good to make this explicit.
by upofadown 5y ago
Lua did a language fork at version 5.3. I think this supports the 5.3 fork but it would be good to make this explicit.
- pansa2 5y agoLua 5.3’s not really a fork. It just has backwards-incompatible changes, as do 5.1, 5.2 and 5.4. Otherwise yes, “Fengari implements Lua 5.3”. https://github.com/fengari-lua/fengari https://github.com/fengari-lua/fengari
- shakna 5y agoI'm not entirely sure what you mean by "language fork", but all versions of Lua have incompatibilities. 5.1, 5.2, 5.3, and 5.4 are all major versions, with features that aren't completely compatible with any of the others. For example, 5.2 brought in major changes for how environments were handled, and 5.3 brought in integers, and 5.4 brought in changes to how number overflow is handled.
- upofadown 5y agoAt 5.3 the behaviour of the basic arithmetic operations were changed in a fundamental and non-backwards compatible way to bring in those integers. That certainly counts as a language fork, as opposed to the other two examples.
- pull_my_finger 5y agoIt definitely is the mainstream continuation of that language by the original authors. Changing the API, or the implementation, or making other breaking changes does not automatically (or otherwise exclusively) make it a "language fork". Lua has the luxury of making breaking changes, and most Lua users both accept and appreciate that. Lua is continuously refined while languages like JavaScript and PHP are stuck with their (sometimes dubious) decisions forever or _break the web_.
- upofadown 5y agoThis is not breaking an API or the implementation. It is not a refinement. This is a change to the language itself. If you had a published standard it would be a change and not an addition.
- josephcsible 5y agoWas the release of C11 a fork of the C language, since they removed the gets() function?
- upofadown 5y agoA change in a library is not a change of the language. So definitely no.
- josephcsible 5y agoOkay, will the release of C2x be a fork of the C language, since it's going to remove support for K&R function definitions (and not every such function can be rewritten to use the new style)?
- upofadown 5y agoANSI C definitely counted as a language fork. Things were different in that there were multiple existing branches and ANSI C was a fairly attempt to create a dominant one. This example supports my contention that you have to clearly identify which branch you mean, K+R vs ANSI was definitely something you had to specify.
- giraffe_lady 5y agois every OS version a fork, is every new parliament a new country? there are markers other than backwards compatibility for continuity.
- upofadown 5y agoI am claiming a very specific thing, a language fork. Your examples are entirely different things that have nothing to do with computer languages.
- shakna 5y agoIn 5.2, environments were changed in a fundamental and non-backwards compatible way. CFunctions used to have environments, but now they don't. This also affected equality when comparing between function values. In 5.4, they changed _the way that numbers behave_: > Literal decimal integer constants that overflow are read as floats, instead of wrapping around. Which, by the definition used for 5.3 being a fork, would also be a fork. It's a fundamental change of the entire numeric tower.
- 2ion 5y agoEach Lua x.y is a "major" version. You can expect things to be stable and patched in versions x.y.z with variable z. Might be irritating but it has been this way for decades.
- otikik 5y agoThat is much less important than you might think. Lua is not a general-purpose language. Its main usage is embedded inside a bigger "host" app, usually in C, for which it provides a higher level language. But the features available are completely defined and dependant on the host app. On top of that, Lua (or at least, its vanilla implementation) is very easy to tweak and understand. As a result, you can find Lua inside a car, a videogame or a web server ... and each incarnation of the language is incompatible with other versions of the language out there. Instead of a big continental platform, Lua is a fragmented archipelago of islands. You can still swim from one to the other, but you have to get wet.