A Lua language interpreter embedding in Haskell

Version on this page:0.4.1
LTS Haskell 8.23:0.4.1
Stackage Nightly 2017-07-21:0.4.1
Latest on Hackage:0.5.0
MIT licensed by Gracjan Polak, Ömer Sinan Ağacan
Maintained by omeragacan@gmail.com

Module documentation for 0.4.1

hslua -- Lua interpreter interface for Haskell

Build Status Coverage Status Hackage

To use system-wide installed Lua/LuaJIT when linking hslua as a dependency, build/install your package using --constraint="hslua +system-lua" or for LuaJIT: --constraint="hslua +system-lua +luajit". For example, you can install Pandoc with hslua that uses system-wide LuaJIT like this:

cabal install pandoc --constraint="hslua +system-lua +luajit"

(Note that -fluajit flag is added with hslua 0.3.14)




  • New raw functions for luaopen_base, luaopen_package, luaopen_string, luaopen_table, luaopen_math, luaopen_io, luaopen_os, luaopen_debug and their high-level wrappers (with names openbase, opentable etc.) implemented.
  • Remove custom versions of loadfile and loadstring.
  • Drop support for GHC versions < 7.8, avoid compiler warnings.
  • Ensure no symbols are stripped when linking the bundled lua interpreter.
  • Simplify tostring function definition. (Sean Proctor)
  • Explicitly decprecate strlen. (Sean Proctor)
  • Add links to lua documentation for functions wrapping the official lua C API. (Sean Proctor).


  • Bugfix(#30): tolist wasn't popping elements of the list from stack.


  • pushstring and tostring now uses ByteString instead of [Char].
  • StackValue [Char] instance is removed, StackValue ByteString is added.
  • StackValue a => StackValue [a] instance is added. It pushes a Lua array to the stack. pushlist, islist and tolist functions are added.
  • Type errors in Haskell functions now propagated differently. See the Scripting.Lua documentation for detailed explanation. This should fix segfaults reported several times.
  • lua_error function is removed, it's never safe to call in Haskell.

Related issues and pull requests: #12, #26, #24, #23, #18.


  • Pkgconf-based setup removed. Cabal is now using extra-libraries to link with Lua.
  • luajit flag is added to link hslua with LuaJIT.


  • Small bugfix related with GHCi running under Windows.


  • pushrawhsfunction and registerrawhsfunction functions are added.
  • apicheck flag is added to Cabal package to enable Lua API checking. (useful for debugging)


  • luaL_ref and luaL_unref functions are added.
comments powered byDisqus