|
|
||
|
Hi Dirk.
Your test for required modules is possible already.
--8<------------------------------------
if not package.loaded.bit32 then
print("QQ...")
os.exit()
end
--8<------------------------------------
And yes, you are right, the _VERSION-string could be easier to test.
It should be a array instead a string containing:
--8<------------------------------------
_VERSION = {
copyright = "Lua-5.3 #some more text if wanted."
-- "5.3" can easily extracted. its between first "-"
-- and first space.
api_version = 53 -- int: version * 10
jit_version = 50 -- int: if luajit is running, else: nil
-- more fields if necessary ...
}
--8<------------------------------------
Ulrich Schmidt.
Am 26.03.2014 07:46, schrieb Dirk Laurie:
There seems to be no way of making Lua code say politely: "This program requires Lua 5.3" when running under Lua 5.2. Instead, one gets a nasty message like ./myprog.lua:28: unexpected symbol near '&' as soon as it hits a bitwise operator. But maybe it is not late for next time round. We are already ignoring one leading `#` line. We could equally well ignore all leading `#` lines and tag some of them as expressions to be asserted _before_ proceeding to lexical analysis of the file. This would allow elegant version control and more. E.g. #! /usr/bin/env lua #@ _VERSION >= 6.0 #@ bit32 When Lua 5.3 runs this program, or Lua 6.0 runs it without having preloaded a bit32 library, the rest of the file would not even be looked at.