# Changelog `hslua-aeson` uses [PVP Versioning][]. ## hslua-aeson-2.3.0 Release pending. - The `peekValue` peeker now checks for a `__toaeson` metafield or `__tojson` metamethod and uses them to compute the `Value` of an object: The `__toaeson` metafield, if set, must be a function pushed via `pushToAeson`. That function is called on a given object, and the returned *Value* becomes the result of calling `peekValue`. Likewise, the `__tojson` metamethod must be a function that returns a valid JSON string. The result in that case is the decoded string. If both, `__toaeson` and `__tojson` are set, then `__toaeson` takes precedent. - The test suite now has *tasty-hunit* as an additional dependency. ## hslua-aeson-2.2.1 Released 2022-06-23. - Export `jsonarray`, which is the name of the registry slot holding the metatable given to array tables. Setting the corresponding registry value will affect all newly created array values. ## hslua-aeson-2.2.0.1 Released 2022-06-16. - Relaxed upper bound for mtl, allowing mtl-2.3. - Relaxed upper bound for aeson, allowing aeson-2.1. ## hslua-aeson-2.2.0 Released 2022-02-19. - Relaxed upper bound for hslua-core and hslua-marshalling, allowing version 2.2 of both packages. ## hslua-aeson-2.1.0 Released 2022-01-29. - Update to hslua 2.1. - Encode `null` as light userdata: The `NULL` pointer wrapped into a light userdata is used to encode the JSON null value. The `pushNull` function has been removed; use `pushValue Null` instead. - Types that are instances of `ToJSON` and `FromJSON` can be marshalled/unmarshalled by using the new functions `pushViaJSON` and `peekViaJSON`, respectively. - The functions `peekVector`, `pushVector`, `peekScientific`, `pushScientific`, `peekKeyMap`, and `pushKeyMap` are considered an implementation detail and are no longer exported. - Array elements are now marked with a metatable. This avoids the need for an extra `0` element in the table and offers flexibility for users who want to give special behavior to lists. The newly exported value `jsonarray` contains the name of the registry slot under which the metatable is stored. The table can be modified or replaced as required. ## hslua-aeson-2.0.1 Released 2021-12-28. - Restored compatibility with aeson 1.5. ## hslua-aeson-2.0.0 Released 2021-12-17. - Changed module name from `Foreign.Lua.Aeson` to `HsLua.Aeson`. - The Peekable and Pushable instances have been removed. The package no longer defines orphaned instances. - Updated hslua and aeson to the respective 2.0 version. ## hslua-aeson-1.0.3.1 Released 2020-10-16. - Allow hslua-1.3.\*. ## hslua-aeson-1.0.3 Released 2020-08-15. - Relaxed version constraint for hslua, allowing `hslua-1.2.*`. ## hslua-aeson-1.0.2 Released 2020-05-28 - Relaxed version constraint for aeson, allowing `aeson-1.5.*`. - Update CI tests to check with GHC versions 8.0 through 8.10. Compilation with GHC 7.10 is no longer tested. - Bump to stackage LTS-14. ## hslua-aeson-1.0.1 Released 2020-04-03 - Relax version constraint for packages hashable and hslua, allow `hashable-1.3` and `hslua-1.1.*`. ## hslua-aeson-1.0.0 Released 2019-09-24. - Update to hslua 1.0.0 - Function `registerNull` has been replaced by `pushNull`. Using `pushNull` has the advantage that users won’t have to remember to register a special variable. Users who need a global variable can set it by running pushNull setglobal "HSLUA_AESON_NULL" ## hslua-aeson-0.3.0 Released 2017-08-18. - Update to hslua 0.8.0. ## hslua-aeson-0.2.0 Not publicly released. - Update to hslua 0.6.0. ## hslua-aeson-0.1.0.4 Released 2017-04-17. - Ensure compatibility with hslua 0.5.0. ## hslua-aeson-0.1.0.0 Released 2017-02-03. - Initial release. [PVP Versioning]: https://pvp.haskell.org