Equivalent to table.move for Lua 5.1

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
3 messages Options
Reply | Threaded
Open this post in threaded view
|

Equivalent to table.move for Lua 5.1

Lorenzo Donati-3
Hi folks!

Trying to spare a little time here.

I'm writing a little library for my stuff which will make use of Lua 5.3
table.move but should also be usable with Lua 5.1.

I could write an ad-hoc Lua 5.1-compatible fallback function, but I'd
prefer not to waste time reinventing the wheel (and thoroughly testing
it with all corner cases)!

So I thought that maybe a /well-tested/ /pure-Lua/ replacement for
table.move has already been posted somewhere that I could copy-paste
into my code.

I don't care if it is a bit slow (as long as it is not utterly
wasteful), but it should be well tested and/or "peer-reviewed" and
should replicate table.move semantics in the details (I wouldn't want
unexpected differences between Lua 5.3 and Lua 5.1 scripts).

Any pointers appreciated.

Thanks!

-- Lorenzo
Reply | Threaded
Open this post in threaded view
|

Re: Equivalent to table.move for Lua 5.1

Hisham
On Sun, 14 Feb 2021 at 12:36, Lorenzo Donati <[hidden email]> wrote:
Hi folks!

Trying to spare a little time here.

I'm writing a little library for my stuff which will make use of Lua 5.3
table.move but should also be usable with Lua 5.1.

I could write an ad-hoc Lua 5.1-compatible fallback function, but I'd
prefer not to waste time reinventing the wheel (and thoroughly testing
it with all corner cases)!

So I thought that maybe a /well-tested/ /pure-Lua/ replacement for
table.move has already been posted somewhere that I could copy-paste
into my code.

I don't care if it is a bit slow (as long as it is not utterly
wasteful), but it should be well tested and/or "peer-reviewed" and
should replicate table.move semantics in the details (I wouldn't want
unexpected differences between Lua 5.3 and Lua 5.1 scripts).

Any pointers appreciated.

What you're looking for is the compat-5.3 library:

https://github.com/keplerproject/lua-compat-5.3

It includes based implementations of many compatibility functions for performance but many functions (including table.move) have pure-Lua fallbacks. If you're using LuaRocks, including compat53 as a dependency and a `require "compat53"` in your project is sufficient (it is a no-op in Lua 5.3+), no need to resort to copy-pasting.

-- Hisham

Reply | Threaded
Open this post in threaded view
|

Re: Equivalent to table.move for Lua 5.1

Lorenzo Donati-3
On 16/02/2021 06:57, Hisham wrote:

> On Sun, 14 Feb 2021 at 12:36, Lorenzo Donati <[hidden email]>
> wrote:
>
>> Hi folks!
>>
>> Trying to spare a little time here.
>>
>> I'm writing a little library for my stuff which will make use of Lua 5.3
>> table.move but should also be usable with Lua 5.1.
>>
>> I could write an ad-hoc Lua 5.1-compatible fallback function, but I'd
>> prefer not to waste time reinventing the wheel (and thoroughly testing
>> it with all corner cases)!
>>
>> So I thought that maybe a /well-tested/ /pure-Lua/ replacement for
>> table.move has already been posted somewhere that I could copy-paste
>> into my code.
>>
>> I don't care if it is a bit slow (as long as it is not utterly
>> wasteful), but it should be well tested and/or "peer-reviewed" and
>> should replicate table.move semantics in the details (I wouldn't want
>> unexpected differences between Lua 5.3 and Lua 5.1 scripts).
>>
>> Any pointers appreciated.
>>
>
> What you're looking for is the compat-5.3 library:
>
> https://github.com/keplerproject/lua-compat-5.3
>
> It includes based implementations of many compatibility functions for
> performance but many functions (including table.move) have pure-Lua
> fallbacks. If you're using LuaRocks, including compat53 as a dependency and
> a `require "compat53"` in your project is sufficient (it is a no-op in Lua
> 5.3+), no need to resort to copy-pasting.
>
> -- Hisham
>
Thank you Hisham!

No, I don't use luarocks.

I have a very personalized "install" of Lua (just compiled from PUC
source plus manually installed libraries) that can be copied and carried
on an external HDD/SSD/pendrive and run from there (under Windows).

I'll look and see if I can easily take the code from the link you provided.

Thanks again!

-- Lorenzo