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 https://www.lua.org/bugs.html#5.3.5
๐ for the bugs which have been fixed.Stop exporting
c_loaded_table
andc_prelad_table
from module
Foreign.Lua.Raw.Auxiliary. Both values are defined only if the
flagHARDCODE_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 anyIsString
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.
- ๐ Upgrade included Lua version to new bug-fix release 5.3.6. See the upstream documentation https://www.lua.org/bugs.html#5.3.5 for the bugs which have been fixed.
-
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
extraction.Work on this module is ongoing; the interface is likely to
๐ change. Suggestions and feedback are welcome.๐ New types
Module
,Field
, and new functionsregisterModule
,
preloadModule
,pushModule
, andrender
exported from
๐Foreign.Lua.Module
: this builds on the newCall
module and
๐ allows the creation of documented modules as well as automatic
๐ generation of Markdown-formatted module documentation.Export new items
nth
andtop
from Foreign.Lua.Core and
Foreign.Lua. They are short-hands fornthFromTop
and
stackTop
.๐ 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
opportunities.๐ 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 currentCore
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
Loomis). -
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 anEither
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 LuaState
to the above mentionedLuaEnvironment
.New functions
run'
is exported fromForeign.Lua.Util
andForeign.Lua
: it is analogous torun
, but allows to run computations with a custom error conversion strategy.New function
runWithConverter
exported fromForeign.Lua.Core.Types
andForeign.Lua.Core
; likerun'
, but takes a custom state.New function
unsafeRunWith
exported fromForeign.Lua.Core.Types
andForeign.Lua.Core
; runs a computation without proper error handling.New function
errorConversion
exported fromForeign.Lua.Core.Types
andForeign.Lua.Core
: extract the error conversion strategy from the Lua type.New function
throwErrorAsException
exported fromForeign.Lua.Core.Error
andForeign.Lua.Core
: throws a Lua error as Haskell exception, using the current error conversion strategy.
๐ Function
runWith
is moved from moduleForeign.Lua.Core
toForeign.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 asource
description as an argument, which is used for debug messages. Theloadfile
function now adds a special prefix (@
) tosource
, thus marking it as a filename.
- Prevent filenames being treated as strings in debug messages.
Lua's
-
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.