|
The Lua API isn't ABI-compatible across versions. You can't expect aOn Fri, Jun 12, 2015 at 10:15 AM, Brigham Toskin
<brighamtoskin@gmail.com> wrote:
> This is most excellent. The version of Lua that my package manager installs
> doesn't even include the basic readline support Lua ships with.
>
> I'm having trouble loading it as a module, though, from the lua standalone
> repl. I installed from rocks, and luap works. But whenever I try to just
> directly load the module from any version of lua besides 5.2, I get error
> messages, which are different depending on which lua I'm using.
>
> Thusly:
>
> $ lua5.1 -l prompt -i
> Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
> lua5.1: error loading module 'prompt' from file
> '/usr/local/lib/lua/5.1/prompt.so':
> dlopen(/usr/local/lib/lua/5.1/prompt.so, 2): Symbol not found:
> _luaL_loadbufferx
> Referenced from: /usr/local/lib/lua/5.1/prompt.so
> Expected in: dynamic lookup
>
> stack traceback:
> [C]: ?
> [C]: ?
> [C]: ?
>
> $ lua5.3 -l prompt -i
> Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
> lua5.3: error loading module 'prompt' from file
> '/usr/local/lib/lua/5.3/prompt.so':
> dlopen(/usr/local/lib/lua/5.3/prompt.so, 6): Symbol not found:
> _rl_completion_suppress_append
> Referenced from: /usr/local/lib/lua/5.3/prompt.so
> Expected in: dynamic lookup
>
> stack traceback:
> [C]: in ?
> [C]: in function 'require'
> [C]: in ?
>
> $ luajit -l prompt -i
> LuaJIT 2.0.2 -- Copyright (C) 2005-2013 Mike Pall. http://luajit.org/
> luajit: error loading module 'prompt' from file
> '/usr/local/lib/lua/5.1/prompt.so':
> dlopen(/usr/local/lib/lua/5.1/prompt.so, 6): Symbol not found:
> _luaL_setfuncs
> Referenced from: /usr/local/lib/lua/5.1/prompt.so
> Expected in: dynamic lookup
>
> stack traceback:
> [C]: at 0x010001e14e
> [C]: at 0x010001ddbb
> [C]: at 0x0100001166
>
> Based on what I'm seeing here, I'd guess that 5.1 (and by extension, jit)
> aren't supported, but you did explicitly mention that 5.3 is supported.
>
> Under 5.3, it appears not to be loading readline; I manually passed the
> location to that library when I installed lauprompt (otherwise it just
> fails). Is this information not cached for runtime use?
>
> On Fri, Jun 12, 2015 at 7:58 AM, Dimitris Papavasiliou <dpapavas@gmail.com>
> wrote:
>>
>> luaprompt is both an interactive Lua prompt that can be used instead
>> of the official interpreter, as well as a module that provides a Lua
>> command prompt that can be embedded in a host application. As a
>> standalone interpreter it provides many conveniences that are missing
>> from the official Lua interpreter. As an embedded prompt, it's meant
>> for applications that use Lua as a configuration or interface language
>> and can therefore benefit from an interactive prompt for debugging or
>> regular use.
>>
>> luaprompt features:
>>
>> * Readline-based input with history and completion: In particular all
>> keywords, global variables and table accesses (with string or
>> integer keys) can be completed in addition to readline's standard
>> file completion. Module names are also completed, for modules
>> installed in the standard directories, and completed modules can
>> optionally be loaded.
>>
>> * Persistent command history (retained across sessions).
>>
>> * Proper value pretty-printing for interactive use: When an _expression_
>> is entered at the prompt, all returned values are printed
>> (prepending with an equal sign is not required). Values are printed
>> in a descriptive way that tries to be as readable as possible. The
>> formatting tries to mimic Lua code (this is done to minimize
>> ambiguities and no guarantees are made that it is valid code).
>> Additionally, each value is stored in a table for future reference.
>>
>> * Color highlighting of error messages and variable printouts.
>>
>> This release includes a couple of improvements:
>>
>> * luaprompt is now available as a module as well as a standalone
>> executable and can be installed via luarocks. Just type
>>
>> luarocks install luaprompt
>>
>> to get both the module and the standalone interpreter.
>>
>> * Some completion-related improvements include the support for __index
>> tables and better filename completion.
>>
>> * luaprompt now saves the results of each command in a table, which by
>> default is named "_". The use of the feature can most easily be explained
>> by the following excerpt from a luap session:
>>
>> > io.open "/tmp/hello"
>> _[1] = file (0x113b110)
>> > _[1]:read("*a")
>> _[2] = "Hello World\n"
>> > _[1]:close()
>> _[3] = true
>> > _
>> _[4] = { file (closed), "Hello World\n", true, }
>> >
>>
>> * luaprompt also works with Lua 5.3! Well, no actual change was required
>> to get it to work, I just thought I'd mention it.
>>
>> For more information, see the README at luaprompt's GitHub page, which you
>> can find at the URL below:
>>
>> https://github.com/dpapavas/luaprompt
>>
>
>
>
> --
> Brigham Toskin
5.2 module to work in 5.1, 5.3, or LuaJIT without recompilation.
/s/ Adam