[ANN] Lua 5.5.0 now available

5 min read Original article ↗

Luiz Henrique de Figueiredo

unread,

Dec 22, 2025, 9:10:16 AM (10 days ago) 12/22/25

to lua-l

Marc Balmer

unread,

Dec 22, 2025, 4:34:40 PM (10 days ago) 12/22/25

to lu...@googlegroups.com, lua-l

Thank you and the whole team for this christmas present!

- mb

Lua 5.5.0 has been frozen and is now the current version of Lua.

Thijs Schreijer

unread,

Dec 22, 2025, 4:40:44 PM (10 days ago) 12/22/25

to lu...@googlegroups.com

On Mon, 22 Dec 2025, at 15:10, Luiz Henrique de Figueiredo wrote:

Lua 5.5.0 has been frozen and is now the current version of Lua.

Congrats to the whole team on the new release!

Thijs

Bas Groothedde

unread,

Dec 22, 2025, 5:13:30 PM (10 days ago) 12/22/25

to lu...@googlegroups.com

> On 22 Dec 2025, at 15:10, Luiz Henrique de Figueiredo <l...@tecgraf.puc-rio.br> wrote:
>
> Lua 5.5.0 has been frozen and is now the current version of Lua.

Thank you and congratulations. Happy holidays!

~b

Andrew Starks

unread,

Dec 22, 2025, 8:41:10 PM (10 days ago) 12/22/25

to lu...@googlegroups.com


--
You received this message because you are subscribed to the Google Groups "lua-l" group.
To unsubscribe from this group and stop receiving emails from it, send an email to lua-l+un...@googlegroups.com.

Jason Lethbridge

unread,

Dec 22, 2025, 9:46:56 PM (10 days ago) 12/22/25

to lu...@googlegroups.com

Błażej Roszkowski

unread,

Dec 23, 2025, 4:18:01 AM (10 days ago) 12/23/25

to lua-l

Is " large arrays use about 60% less memory" right?

Lua 5.4 and earlier stored arrays as 8 byte value, 1 byte type

tag, and 7 byte padding, so 16 bytes per value.

Lua 5.5 splits those and packs them tightly, so the 7 byte padding

is gone, so it's just 8 + 1 = 9 bytes per value.

This means 5.5 has 43% (7 div 16) smaller arrays, so

they take 57% of space they did before, not 60% less.

And thank you for this release - B.R.

blogdron (BLOGDRON)

unread,

Dec 23, 2025, 9:29:56 AM (9 days ago) 12/23/25

to lua-l

Thanks all who develop and/or use Lua!  Congratulations! ^.^

вторник, 23 декабря 2025 г. в 12:18:01 UTC+3, Błażej Roszkowski:

Martin Eden

unread,

Dec 24, 2025, 3:46:57 AM (9 days ago) 12/24/25

to lu...@googlegroups.com

On 2025-12-22 16:10, Luiz Henrique de Figueiredo wrote:
> Lua 5.5.0 has been frozen and is now the current version of Lua.

Congratulations with release and merry Christmas!

-- Martin

Luau Project

unread,

Dec 25, 2025, 6:53:57 PM (7 days ago) 12/25/25

to lua-l

Hi Lua Team,

In the part of the manual related to
changes ( https://www.lua.org/manual/5.5/readme.html#changes ),
it says:

> for-loop variables are read only

I performed a few tests on that
matter with Lua 5.5 on
Linux + Windows, and I have a doubt.

1. Executing the following statement:

    lua -e "for i, v in ipairs({1}) do i = 3 end"

    it throws the error
    `lua: (command line):1: attempt to assign to const variable 'i'`

2. Executing this statement:

    lua -e "for i, v in ipairs({1}) do v = 3 end"

    it does not throw any error.
    Then I thought: hmm, probably
    it assigns the value back.
    However, the next test shows
    it does not.

3. Executing this statement:

    lua -e "local t = {1}; for i, v in ipairs(t) do v = 3 end; print(t[1]);"

    prints 1, showing that the
    t[1] value didn't change.

So, my question is: according to
the manual

> for-loop variables are read only

the second part above (2.) shouldn't throw?

云风 Cloud Wu

unread,

Dec 25, 2025, 7:17:44 PM (7 days ago) 12/25/25

to lu...@googlegroups.com

Luau Project <luau.p...@gmail.com> 于2025年12月26日周五 07:54写道:
>
> Hi Lua Team,

>
> 2. Executing this statement:
>
> lua -e "for i, v in ipairs({1}) do v = 3 end"
>
> it does not throw any error.
> Then I thought: hmm, probably
> it assigns the value back.
> However, the next test shows
> it does not.
>
> 3. Executing this statement:
>
> lua -e "local t = {1}; for i, v in ipairs(t) do v = 3 end; print(t[1]);"
>
> prints 1, showing that the
> t[1] value didn't change.
>
> So, my question is: according to
> the manual
>
> > for-loop variables are read only
>
> the second part above (2.) shouldn't throw?

The manual says "The first of these variables is the control variable,
which is a read-only (const) variable."

So the "i" is ready-only (control variable) , but the "v" is not.

--
http://blog.codingnow.com

Martin Eden

unread,

Dec 26, 2025, 9:57:02 AM (6 days ago) 12/26/25

to lu...@googlegroups.com

On 2025-12-26 02:17, 云风 Cloud Wu wrote:
> The manual says "The first of these variables is the control variable,
> which is a read-only (const) variable."
>
> So the "i" is ready-only (control variable) , but the "v" is not.

Damn, I just wanted to paste same quote from refman. You're ~2 minutes
faster

[[

A *for* statement like

for/var_1/, ···,/var_n/ in/explist/ do/body/ end

works as follows.

The names /var_i/ declare loop variables local to the loop body. The
first of these variables is the /control variable/, which is a read-only
(|const|) variable.

]]

-- Martin

Luau Project

unread,

Dec 26, 2025, 12:28:17 PM (6 days ago) 12/26/25

to lu...@googlegroups.com

> The manual says "The first of these variables is the control variable,
> which is a read-only (const) variable."
>
> So the "i" is ready-only (control variable) , but the "v" is not.

Thank you all for the insightful answers.

Scott Morgan

unread,

Dec 26, 2025, 10:49:51 PM (6 days ago) 12/26/25

to lu...@googlegroups.com

On 25/12/2025 23:53, Luau Project wrote:
> 3. Executing this statement:
>
>     lua -e "local t = {1}; for i, v in ipairs(t) do v = 3 end;
> print(t[1]);"
>
>     prints 1, showing that the
>     t[1] value didn't change.

That's because v is a variable holding a value, not a reference.

Similarly:

t = { 1 }
a = t[1]
a = 2
print(t[1], a)
-- 1 2

Scott