[HN Gopher] Lua 5.5
___________________________________________________________________
Lua 5.5
Author : km
Score : 155 points
Date : 2025-12-22 15:06 UTC (1 days ago)
(HTM) web link (lua.org)
(TXT) w3m dump (lua.org)
| andrewmcwatters wrote:
| Interesting, it looks like you can use 'global myvar' now, as
| compared to 'myvar' implicit globals, say from back in 5.1, or
| 'local myvar'.
|
| It's worth noting that global is a reserved keyword now, so
| environments that had a 'global()' function for escaping
| environments will now need to rename their helper function.
| darubedarob wrote:
| But.. why ? Globals are just variables that reside in the
| wrapping env table that also contain the C functions. If a
| closures is a onion of table lookups out of the function
| context from local -> function scope -> global scope is simply
| the last lookup before a not found variable with nil is
| declared?
| andrewmcwatters wrote:
| Module exports with side effects, and setting environments
| doesn't guarantee global access.
| gsck wrote:
| Cannot wait for another version of Lua to sit unused basically
| everywhere.
|
| Truly is a shame, everything seems to have settled on 5.1 for the
| most part without ever being updated, or any intention of it
| being updated. Some really nice features post 5.1
|
| I understand each version of Lua introduces breaking changes in
| the language, which isn't great as the language becomes
| fragmented (Or not really, once again 5.1 is pretty ubiquitous)
| ronsor wrote:
| The real reason everyone settled on Lua 5.1 is because that's
| the version LuaJIT is compatible with, and most people are
| unwilling to give up the performance gains.
| Rochus wrote:
| And Luau.
| pull_my_finger wrote:
| 5.1 (by way of LuaJIT) gets a lot of use, but to suggests no
| one uses the modern versions is just not true. Lua being an
| embedded language just takes the pressure away to upgrade. It's
| a feature, not a bug.
| BugsJustFindMe wrote:
| > _everything seems to have settled on 5.1_
|
| Not exactly. LuaJIT has backported various hot features from
| 5.2 and 5.3 as long as they're unlikely to break 5.1 code.
| petcat wrote:
| I'm pretty sure that's only OpenResty's distribution of
| LuaJIT.
|
| I think the real LuaJIT is strictly 5.1
| reactordev wrote:
| No, real LuaJIT has some features from 5.2 and 5.3
|
| https://luajit.org/extensions.html
| Tharre wrote:
| Not true, see "Extensions from Lua 5.2" here:
| https://luajit.org/extensions.html
| thayne wrote:
| True. But
|
| 1. The luajit documentation basically just had a list of
| features. AFAIK there isn't any documentation that combines
| the 5.1 reference with luajit extensions (including things
| that were backported)
|
| 2. In some cases, for example Neovim, luajit extensions
| aren't guaranteed to be available. It just says there will be
| a lua runtime compatible with 5.1. Which means a truly
| portable neovim plugin can't use those extensions
|
| 3. There are features from later lua versions I would like to
| have (in particular <const> and <close>) that will probably
| never get backported.
|
| 4. Some features require luajit to be built with special
| flags
| cturtle wrote:
| One of the new features I found interesting, declarations for
| global variables, is buried in the reference manual. Here's a
| link to the section that discusses it:
| https://www.lua.org/manual/5.5/manual.html#2.2
| parlortricks wrote:
| Excellent new release, now for Fennel and Love2d to update, fun
| times!
| derstander wrote:
| Only a dabbler in Love2d here but I'd expect that update to be
| a bit down the line. If I'm not mistaken the current Love2d
| version 11.5 is (mostly) tied to Lua 5.1 because of LuaJIT,
| though I understand some later Lua features are backported. And
| the changelog for the in-dev 12.0 release talks about compiling
| Love2d for Lua 5.4 as if it's an optional thing.
|
| I don't really follow LuaJIT too closely so I'm not sure if
| they're even targeting Lua 5.4 let alone 5.5. I remember
| reading some GitHub issue that suggested some of the design
| decisions in Lua 5.4 wouldn't really support LuaJIT goals re:
| performance.
|
| With that said I've been enjoying Love2d even with Lua 5.1
| features -- as a hobbyist it works just fine for me.
|
| Would certainly appreciate any corrections by those more in-
| the-know though!
| gucci-on-fleek wrote:
| ConTeXt has been using beta versions Lua 5.5 for a few years now,
| so you can look through its source [0] or try running it [1] if
| you're curious what a large codebase written in Lua 5.5 looks
| like.
|
| [0]: https://codeberg.org/contextgarden/context
|
| [1]: https://wiki.contextgarden.net/Introduction/Installation
| sunshine-o wrote:
| I never coded in Lua but I found out recently that Lua is now in
| FreeBSD base [0] This is huge for Lua and FreeBSD.
|
| Now something that worry me is whenever you need to make an HTTP
| request or parse some JSON you need to go on a quest for a
| "library" on the Internet. It doesn't seems to have a
| (semi-)official "Extended Standard Library" I can quickly trust.
|
| - [0]
| https://man.freebsd.org/cgi/man.cgi?query=flua&apropos=0&sek...
| Fwirt wrote:
| The Lua ecosystem is more like the Lisp ecosystem than Python.
| The language is small enough that there's a lot of stuff out
| there that's just... finished. Hasn't been updated in 10 years
| but still works. The LunarModules org tries to gather it up and
| keep it compatible.
|
| For an extended standard lib, the closest thing is probably
| Penlight. https://github.com/lunarmodules/Penlight If you want
| async IO, sockets, etc, check out Luvit. https://luvit.io
|
| Lua is really designed as an extension language but it's such a
| nifty little language that sometimes you really wish you could
| use it in place of Python or Perl, which is why LuaJIT is so
| popular. But LuaJIT is really just one guy's project. Its
| metaprogramming features are really nice and let you build some
| Lisp-style DSLs, and if you want full Lisp syntax you can drop
| in Fennel. If you're just writing extension code you often
| don't need a standard lib because it's easier just to roll your
| own function to fill the gap.
|
| Personally, I found it easier and quicker to just read the
| reference manual to learn the language. It's small and simple
| enough that you shouldn't have trouble getting up to speed if
| you have a couple other imperative languages under your belt.
| IMO metatables are much easier to work with than JavaScript's
| prototype inheritance.
| Kerrick wrote:
| We never got a new edition of Programming in Lua for 5.4... does
| that mean we won't ever get one for 5.5?
| sigzero wrote:
| Oh I hope that don't do that.
| artemonster wrote:
| please resurrect Mike Pall
| thayne wrote:
| Mike Pall made a commit to LuaJIT just a couple of weeks ago.
| altairprime wrote:
| List of changes: https://lua.org/manual/5.5/readme.html#changes
| maxpert wrote:
| I feel like Lua is absolutely underrated. I just wish one of the
| mainstream browsers actually puts their foot down and starts
| supporting Lua as scripting language.
| klysm wrote:
| Curious how this fits in with WASM
| 1313ed01 wrote:
| If they can lock it to some version to avoid breaking code
| every time there is a new Lua version. Or Lua stop making
| breaking changes.
| tormeh wrote:
| Ypu could probably run it in wasm. Of course, without access to
| the DOM it won't go any further than anything else on wasm. The
| whole thing is nuts if you ask me. So much lost potential.
| sellmesoap wrote:
| I think that's doable. https://github.com/zacharie410/lua-
| browser-dom-demo
| inejge wrote:
| > I feel like Lua is absolutely underrated.
|
| This sounds like an offhand Youtube comment, I'm afraid.
| Underrated how? Its principal strength, easy embedding with the
| ability to work as an extension language, is well known in the
| circles where it matters. The authors never gave an impression
| that they'd aim to make it a language to bury all other
| scripting languages, which I find refreshing in the winner-
| take-all culture of programming language discussion. Lua is
| modest and works well for what it is. No need to go all
| grandiose.
|
| > I just wish one of the mainstream browsers actually puts
| their foot down and starts supporting Lua as scripting
| language.
|
| I sincerely hope not, that would be a very counterproductive
| dilution of effort. Browser authors already have their plate
| full with all other web platform problems.
| robofanatic wrote:
| How hard is it to put a simple hello world example on the
| homepage.
| BanazirGalbasi wrote:
| Because Lua's Hello World is just `print("hello, world")`,
| which looks a lot like Python and doesn't tell you much about
| actually using the language.
| robofanatic wrote:
| The point is, it shouldn't be too hard just to find an
| example and get a sense of the language.
| b33j0r wrote:
| Well. You'd have to demonstrate that a[1] is the first offset
| in an array, and it's not a great curb appeal to anyone who has
| programmed computers before.
| ksymph wrote:
| > for-loop variables are read only
|
| Seems like an odd change, I wonder what the rationale is. Just
| making it clear to people new to the language that you can't
| adjust it mid-loop to change the loop count I guess?
| pvitz wrote:
| From the manual: The control variable in for
| loops is read only. If you need to change it, declare a local
| variable with the same name in the loop body.
|
| Also [0]: Roberto Ierusalimschy > So what's the rationale to
| make them constant now? Does it have performance > reasons?
|
| Yes. The old code does an implicit "local x = x" for all loops,
| in case you modify 'x'. With the new semantics, the code only
| does it when you ask for it.
|
| [0] https://groups.google.com/g/lua-l/c/SlAG5QfpTac
| GranPC wrote:
| In previous versions, you could change it mid-loop. This
| apparently caused some unintuitive behavior when paired with
| generators (e.g. `for k, v in pairs(table)`).
|
| I haven't run into this myself, but it does make sense, and
| eliminating this footgun sounds like a good idea.
| mysterEFrank wrote:
| OG torch strikes back?
| klaussilveira wrote:
| > declarations for global variables
|
| That's huge. I wish LuaJIT adopted this, or at least added a
| compile time flag to enable it.
| shmerl wrote:
| Yeah, I wish someone would pick up LuaJIT development. From
| what I've heard it's in practice isn't developed anymore and is
| stuck at Lua 5.1 still.
___________________________________________________________________
(page generated 2025-12-23 23:00 UTC)