Open mattwidmann opened 4 years ago
The biggest issue I can see with this is that the bitwise operator syntax introduced in Lua 5.3+ is not backwards compatible. You need to wrap any part of the code that uses it in a string, and then load it with loadstring
for it to work properly.
wrap any part of the code that uses it in a string, and then load it with
loadstring
for it to work properly.
This or split the functions in files and load them depending on the detected Lua version. But that'd make the "single library - single file" use a little less convenient.
Input needed I would say.
Would something like this work?
local bit_53 = loadstring[[
return {
bor = function (x, y) return x | y end,
band = function (x, y) return x & y end,
}
]]
if bit_53 then
bit = bit_53()
end
Yes exactly, that's what the discussion is about, but my criticims:
nil
in your toy exampleThose are valid, thoughtful points.
Here's another proposal: MD5 hashes are a known quantity and this particular implementation hasn't seen an update in 2 years. How about, going forward, new versions of md5.lua require 5.3 or later and this project can just use the bitwise operators directly? And prior versions can use the current version of the library?
Lua 5.1 is the most used Lua version out there, due to LuaJIT so I'd say you either make a new library or just make this one support the new syntax somehow, you could potentially make two files with API compatibility.
The bit manipulation library has been removed in Lua 5.4, so md5.lua falls back to its custom bit manipulation functions, using tables. It would be better if md5.lua knew how to use the bitwise operators that were added in Lua 5.3.