# Changelog `hslua-core` uses [PVP Versioning][]. ## hslua-core-2.2.0 Released 2022-02-19. - Use lua-2.2.0, which requires Lua 5.4. - Rename `newuserdata` to `newuserdatauv` and let it take the number of associated uservalues as an additional argument. Similarly, `newhsuserdata` is now `newhsuserdatauv`. - Rename `getuservalue` and `setuservalue` to `getiuservalue` and `setiuservalue`, respectively. Like both functions now take an extra argument specifying the number of the uservalue that should be retrieved or set. It is now possible for `setiuservalue` to fail, so it returns a boolean to indicate whether the action was successful. - The `GCControl` type has been updated to match the new gc control: - The GCStep constructor takes an argument "stepsize"; - constructors GCGen and GCInc have been added; - constructors GCSetPause and GCSetStepMul have been removed. ## hslua-core-2.1.0 Released 29-01-2022. - The functions `rawget`, `rawgeti`, and `getref` now return the type of the value that was pushed to the stack. - A new function `checkstack'` is added to HsLua.Core.Auxiliary and exported from the main HsLua.Core module. The function throws an exception if the stack cannot be grown to accommodate a given number of elements; it is similar to `luaL_checkstack`. - Added function `requiref`, which safely wraps the unsafe `luaL_requiref` function. - New functions `pcallTrace`, `callTrace`, `dostringTrace`, and `dofileTrace`: behaves like the respective unsuffixed functions, but use a message handler that creates a stack traceback on error. - Added function `rotate`, wrapping `lua_rotate`. - Package helper `requirehs` signature changed to ``` haskell requirehs :: LuaError e => Name -- ^ modname -> (Name -> LuaE e ()) -- ^ openf -> LuaE e () ``` The function creating and pushing the module value now takes the module name as an argument. It also behaves more like `luaL_requiref` in that it reloads the module if the value in the LOADED table is falsy. ## hslua-core-2.0.0.2 Released 2021-11-03. - Fixed output of `pushTypeMismatchError` when there is no value at the given index. Previously the function would report the value as type `string` and now reports it as `no value`. ## hslua-core-2.0.0.1 Released 2021-10-29. - Fixed bug in pushTypeMismatchError. The function did not use an absolute stack index in one place, which sometimes lead to incorrect actual types being reported. ## hslua-core-2.0.0 Released 2021-10-21. - Error handling has been reworked completely. The type of exceptions used and handled by HsLua is now exposed to the type system. The type `Lua` makes use of a default error type. Custom error handling can be implemented by using the `LuaE` type with an exception type that is an instance of class `LuaError`. - Added new module HsLua.Core.Userdata. It contains thin wrappers around the functions available for creating Haskell-value-wrapping userdata objects. - Added new module HsLua.Core.Closures, containing functions to expose Haskell functions to Lua. - Reverted to using the auxlib `luaL_loadfile` function to load a Lua file. Previously files were opened and read in Haskell, but some functionality of the auxlib function was missing. ## hslua-core-1.0.0 Released 2021-02-27. Extracted from hslua-1.3.0. [PVP Versioning]: https://pvp.haskell.org