lua-users home
lua-l archive

[Date Prev][Date Next][Thread Prev][Thread Next] [Date Index] [Thread Index]


On 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

The Lua API isn't ABI-compatible across versions. You can't expect a
5.2 module to work in 5.1, 5.3, or LuaJIT without recompilation.

/s/ Adam