Marshalling of values between Haskell and Lua.


Version on this page:2.3.0
LTS Haskell 22.29:2.3.1
Stackage Nightly 2024-07-19:2.3.1
Latest on Hackage:2.3.1

See all snapshots hslua-marshalling appears in

MIT licensed by Albert Krewinkel, Gracjan Polak, Ömer Sinan Ağacan
Maintained by [email protected]
This version can be pinned in stack with:hslua-marshalling-2.3.0@sha256:b3156568f905d0857da35b4cd5c3fc64791e9fc9c1e2678c28a9fec80a077f51,3864


Build status AppVeyor Status Hackage

Functions to marshal values from Haskell to Lua, and vice versa.

This package is part of HsLua, a Haskell framework built around the embeddable scripting language Lua.



hslua-marshalling uses PVP Versioning.


Released 2023-03-13.

  • Result is now an instance of MonadFail.

  • New peeker and pusher functions for NonEmpty.

  • Peeker combinators for optional values: The new combinators peekNilOr, peekNoneOr, and peekNoneOrNil can be used to retrieve optional values.


Released 2022-06-19.

  • Require hslua-core-2.2.1.

  • Relax upper bound for mtl, allow mtl-2.3.


Released 2022-02-19.

  • Result is now an instance of Foldable and Traversable. Both Result and Peek are made instances of MonadPlus.

  • Require hslua-core-2.2.0.


Released 29-01-2022.

  • Updated to hslua-core-2.1.0.

  • The Success constructor of the Result type is now strict; the Failure constructor remains lazy.

  • The stack is checked before pushing or retrieving nested structures: Pushing or peeking a deeply nested structure could lead an overflow of the Lua stack. The functions pushList, pushSet, and pushKeyValuePairs, as well as peekList, peekSet, and peekKeyValuePairs now check that sufficient stack space is available before pushing another value to the stack.

  • The function toByteString now requires a slot on the stack if the value at the given index is a number. It checks for available space before pushing to the stack, returning Nothing if no space is left on the stack.

  • The withContext function is made more useful and now differs from retrieving. The string “retrieving” is added to the error context by retrieving, so withContext allows to define contexts without this prefix.

  • New convenience function pushAsTable, making it easier to define a pusher function for values marshaled as tables.


Released 2021-11-04.

  • Allow pushIterator to skip values: If the function that pushes the values of a list item signals that it didn’t push any values, then that value will be skipped.


Released 2021-10-21.

  • Initially created. Contains modules previously found in the modules Foreign.Lua.Peek and Foreign.Lua.Push from hslua-1.3.

  • Removed most functions from the Userdata module, incl. peekAny, pushAny. The functions don’t add much value over those in HsLua.Core.Userdata. Use UDTypes from hslua-packaging for a more comfortable method of exposing data via userdata values.