All Versions
Latest Version
Avg Release Cycle
108 days
Latest Release
1318 days ago

Changelog History
Page 1

  • v1.3.0 Changes

    October 16, 2020

    ๐Ÿš€ Released 2020-10-16.

    ๐Ÿš€ Upgrade included Lua version to new bug-fix release 5.3.6. See
    ๐Ÿ“š the upstream documentation
    ๐Ÿ›  for the bugs which have been fixed.

    Stop exporting c_loaded_table and c_prelad_table from module
    Foreign.Lua.Raw.Auxiliary. Both values are defined only if the
    flag HARDCODE_REG_KEYS is disabled, leading to compilation
    errors when the flag is enabled.

    โž• Add new function peekStringy to Peek module. It allows to peek
    a value of any IsString type from an UTF-8 encoded string.

    Various improvements to the continuous integration setup,
    including cleanup of the config files, version bumps to the
    ๐Ÿ‘• ghc/cabal versions used for testing, and running the linter in a
    dedicated GitHub Action.

  • v1.2.1 Changes

    ๐Ÿš€ Release pending.

  • v1.2.0 Changes

    August 15, 2020

    ๐Ÿš€ Released 2020-08-15

    ๐Ÿ†• New module Foreign.Lua.Call: the module offers an alternative
    method of exposing Haskell functions to Lua. The focus is on
    maintainability: types and marshaling methods are made explicit;
    ๐Ÿ“š the possibility of adding documentation and parameter names
    ๐Ÿ‘Œ improves error messages and allows for automatic documentation

    Work on this module is ongoing; the interface is likely to
    ๐Ÿ”„ change. Suggestions and feedback are welcome.

    ๐Ÿ†• New types Module, Field, and new functions registerModule,
    preloadModule, pushModule, and render exported from
    ๐Ÿ— Foreign.Lua.Module: this builds on the new Call module and
    ๐Ÿ‘ allows the creation of documented modules as well as automatic
    ๐Ÿ“š generation of Markdown-formatted module documentation.

    Export new items nth and top from Foreign.Lua.Core and
    Foreign.Lua. They are short-hands for nthFromTop and

    ๐ŸŽ Performance improvements: Calling of Lua functions and creation
    of Haskell data wrapping userdata has been sped up by about 10%.
    This is mostly due to using of previously missed optimization

    ๐Ÿšš All foreign imports have been moved to into the new
    Foreign.Lua.Raw module. This module will replace the current
    Foreign.Lua.Core module in the future and will be distributed
    ๐Ÿš€ as a separate package (likely starting with the 2.0 release);
    the remaining parts of the current Core module will be
    promoted one level in the module hierarchy.

    The Raw module can be used whenever the full power of HsLua is
    not needed.

    ๐Ÿšฆ Error-signaling of API wrapper functions has been changed:
    instead of returning special integer values, functions now take
    an additional pointer argument, which is set to the status
    result of the computation.

    The Failable type in Core.Error is no longer needed and has
    ๐Ÿšš been removed.

    ๐Ÿ— CI builds now include GHC 8.8 and GHC 8.10, ensuring that all
    ๐Ÿ‘ GHC 8.* versions are supported.

  • v1.1.2 Changes

    August 01, 2020

    ๐Ÿš€ Released 2020-06-27

    โช Revert signature of function pushList to it's proper 1.1.0
    ๐Ÿš€ value. This fixes a mistake which caused the 1.1.1 release
    to be in violation of the PVP versioning policy.

    Module Foreign.Lua.Peek: add function pushKeyValuePairs (Alex

  • v1.1.1 Changes

    June 02, 2020

    ๐Ÿš€ Released 2020-06-02

    โš  WARNING: This version does not conform to the PVP versioning policy, due to a unintended signature change of function pushList. It is recommended not to use this version.

    • ๐Ÿ†• New module Foreign.Lua.Push: provides functions which marshal and push Haskell values onto Lua's stack.

    Most functions in Foreign.Lua.Types.Pushable are now defined using functions from this module.

    • ๐Ÿ†• New module Foreign.Lua.Peek: provides functions which unmarshal and retrieve Haskell values from Lua's stack. Contrary to peek from Foreign.Lua.Types.Peekable, the peeker functions in this module will never throw errors, but use an Either type to signal retrieval failure.

    The error type PeekError should not be considered final and will likely be subject to change in later versions.

    • Module Foreign.Lua.Utf8: never throw errors when decoding UTF-8 strings. Invalid UTF-8 input bytes no longer cause exceptions, but are replaced with the Unicode replacement character U+FFFD.

    • ๐Ÿ›  Fixed missing and faulty Haddock documentation.

    • ๐Ÿ›  Fixed a bug which caused unnecessary use of strings to represent floating point numbers under certain configurations.

  • v1.1.0 Changes

    August 01, 2020

    ๐Ÿš€ Released 2020-03-25.

    โš  WARNING: The changes in this release are experimental. It is ๐Ÿš€ recommended to skip this release unless the newly introduced ๐Ÿ”‹ features are required.

    • ๐Ÿ‘ Allow custom error handling: conversion of Lua errors to Haskell exceptions and back is made configurable. Users can define their own exception/error handling strategies, even opening up the option to pass arbitrary exceptions through Lua.

      • New types exported from Foreign.Lua.Types:

        • ErrorConversion: defines the ways in which exceptions and errors are handled and converted.
        • LuaEnvironment: environment in which Lua computations are evaluated. Contains the Lua interpreter state and the error conversion strategy.
      • The environment of the Lua type is changed from a plain Lua State to the above mentioned LuaEnvironment.

      • New functions run' is exported from Foreign.Lua.Util and Foreign.Lua: it is analogous to run, but allows to run computations with a custom error conversion strategy.

      • New function runWithConverter exported from Foreign.Lua.Core.Types and Foreign.Lua.Core; like run', but takes a custom state.

      • New function unsafeRunWith exported from Foreign.Lua.Core.Types and Foreign.Lua.Core; runs a computation without proper error handling.

      • New function errorConversion exported from Foreign.Lua.Core.Types and Foreign.Lua.Core: extract the error conversion strategy from the Lua type.

      • New function throwErrorAsException exported from Foreign.Lua.Core.Error and Foreign.Lua.Core: throws a Lua error as Haskell exception, using the current error conversion strategy.

    • ๐Ÿšš Function runWith is moved from module Foreign.Lua.Core to Foreign.Lua.Util.

    • The module Foreign.Lua.Utf8 is now exported.

  • v1.0.3 Changes

    May 04, 2019

    ๐Ÿš€ Released 2019-05-04.

    • ๐Ÿ†• New module Foreign.Lua.Module, containing helper functions to define and load modules from Haskell.

    • ๐Ÿ‘Œ Improve documentation of open<lib> (many thanks to Christian Charukiewicz.)

  • v1.0.3.2 Changes

    February 01, 2020

    ๐Ÿš€ Released 2019-08-21.

    • โž• Added flag to use hardcoded values for registry keys: The names of the registry keys used to store package information are available as CPP values from file lauxlib.h since Lua 5.3.4; compiling HsLua against older Lua versions was not possible, as those values were expected to exist.

    The respective values are now hardcoded into HsLua, and a new flag hardcode-reg-key is introduced, which will cause the use of these hardcoded values instead of those defined in lauxlib.h. Using this flag makes it possible to compile hslua against all Lua 5.3.* versions.

    • โž• Added missing C files for benchmarking to list of extra-source-files.
  • v1.0.3.1 Changes

    May 08, 2019

    ๐Ÿš€ Released 2019-05-08.

    • Prevent filenames being treated as strings in debug messages. Lua's loadbuffer takes a source description as an argument, which is used for debug messages. The loadfile function now adds a special prefix (@) to source, thus marking it as a filename.
  • v1.0.2 Changes

    January 05, 2019

    ๐Ÿš€ Released 2019-01-05.

    • ๐Ÿ›  Fixed cross-compilation: placement of C import declarations were fixed, thereby resolving issues with cross-compilation. (Vanessa McHale and Faraz Maleknia)

    • โž• Added .gitattributes file, fixing the wrong language classification of the GitHub repository. (Vanessa McHale)

    • ๐Ÿ‘Œ Improved toHaskellFunction documentation. The documentation is now more specific on which Haskell exceptions are caught and which will lead to crashes.