diff --git a/CHANGELOG.md b/CHANGELOG.md
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -2,6 +2,28 @@
 
 `lua` uses [PVP Versioning][].
 
+## lua-2.3.0
+
+Released 2023-03-13.
+
+-   New function `hslua_setwarnf`: The function allows to set a
+    C function as a hook that is called on all complete warning
+    messages. It is intended as a simple way to set a custom
+    warning function.
+
+-   Export version and copyright info from Lua.Constants: the
+    following patterns are made available, with content identical
+    to that of the respective C functions: `LUA_VERSION`,
+    `LUA_RELEASE`, and `LUA_COPYRIGHT`.
+
+-   Added a new flag `cross-compile`. When enabled, the code is
+    setup in a way that allows cross-compilation of the package,
+    but some of the string constants will be hard-coded and may
+    not match the Lua version against which the library is
+    compiled.
+
+-   `Type` is now an instance of `Read`.
+
 ## lua-2.2.1
 
 Released 2022-06-19.
diff --git a/LICENSE b/LICENSE
--- a/LICENSE
+++ b/LICENSE
@@ -1,7 +1,7 @@
 Copyright © 1994-2022 Lua.org, PUC-Rio.
 Copyright © 2007-2012 Gracjan Polak
 Copyright © 2012-2015 Ömer Sinan Ağacan
-Copyright © 2016-2022 Albert Krewinkel
+Copyright © 2016-2023 Albert Krewinkel
 
 Permission is hereby granted, free of charge, to any person obtaining a
 copy of this software and associated documentation files (the
diff --git a/README.md b/README.md
--- a/README.md
+++ b/README.md
@@ -24,8 +24,8 @@
 enable coders to embed the language into their programs, making
 them scriptable.
 
-*Lua* ships with the official Lua interpreter, version 5.4.2.
-Cabal flags allow to compile against a system-wide Lua
+This package ships with the official Lua interpreter, version
+5.4.4. Cabal flags allow to compile against a system-wide Lua
 installation instead, if desired.
 
 Build flags
diff --git a/cbits/hslua/hslwarn.c b/cbits/hslua/hslwarn.c
new file mode 100644
--- /dev/null
+++ b/cbits/hslua/hslwarn.c
@@ -0,0 +1,157 @@
+/*
+** Large parts of the below code are adapted from the default warning
+** functions defined in lauxlib.c.
+**
+** See Copyright Notice in lua.h
+*/
+
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+#include "lua.h"
+#include "lauxlib.h"
+
+#define HSLUA_RFLD_WARNF "HsLua warn hook"
+#define HSLUA_RFLD_WARNINGS "HsLua warnings"
+
+/* print an error message */
+#if !defined(lua_writestringerror)
+#define lua_writestringerror(s,p)               \
+  (fprintf(stderr, (s), (p)), fflush(stderr))
+#endif
+
+/*
+** Initializes the warnings table.
+*/
+static void reset_warnings (lua_State *L) {
+  lua_createtable(L, 1, 0);
+  lua_setfield(L, LUA_REGISTRYINDEX, HSLUA_RFLD_WARNINGS);
+}
+
+/*
+** Stores the warning in the registry.
+*/
+static void store_warning (lua_State *L, const char *message) {
+  if (lua_getfield(L, LUA_REGISTRYINDEX, HSLUA_RFLD_WARNINGS) != LUA_TTABLE) {
+    return;
+  }
+  lua_pushstring(L, message);
+  lua_seti(L, -2, luaL_len(L, -2) + 1);  /* append message */
+  lua_pop(L, 1);  /* messages table */
+}
+
+/* Concatenates all collected warnings and pushes the result to the stack. */
+static void pushwarning (lua_State *L) {
+  if (lua_getfield(L, LUA_REGISTRYINDEX, HSLUA_RFLD_WARNINGS) != LUA_TTABLE) {
+    lua_pushliteral(L, "");
+    return;
+  }
+
+  int tblidx = lua_absindex(L, -1);
+  lua_Integer last = luaL_len(L, tblidx);
+  luaL_Buffer b;
+  luaL_buffinit(L, &b);
+  for (int i = 1; i <= last; i++) {
+    if (lua_geti(L, tblidx, i) != LUA_TSTRING) {
+      /* not a string; skip it silently */
+      lua_pop(L, 1);
+    } else {
+      luaL_addvalue(&b);
+    }
+  }
+  lua_remove(L, -2);  /* warnings table */
+  luaL_pushresult(&b);
+}
+
+static void call_warn_hook (lua_State *L) {
+  if (lua_getfield(L, LUA_REGISTRYINDEX, HSLUA_RFLD_WARNF) == LUA_TFUNCTION) {
+    pushwarning(L);
+    lua_call(L, 1, 0);
+  }
+}
+
+/*
+** Warning functions:
+** warnfoff: warning system is off
+** warnfon: ready to start a new message
+** warnfcont: previous message is to be continued
+*/
+static void warnfoff (void *ud, const char *message, int tocont);
+static void warnfon (void *ud, const char *message, int tocont);
+static void warnfcont (void *ud, const char *message, int tocont);
+
+/*
+** Check whether message is a control message. If so, execute the
+** control or ignore it if unknown.
+*/
+static int checkcontrol (lua_State *L, const char *message, int tocont) {
+  if (tocont || *(message++) != '@')  /* not a control message? */
+    return 0;
+  else {
+    if (strcmp(message, "off") == 0)
+      lua_setwarnf(L, warnfoff, L);  /* turn warnings off */
+    else if (strcmp(message, "on") == 0)
+      lua_setwarnf(L, warnfon, L);   /* turn warnings on */
+    return 1;  /* it was a control message */
+  }
+}
+
+/*
+** Does not write the warning to stderr, but still records the message
+** so it can be processed by the custom hook.
+*/
+static void warnfoff (void *ud, const char *message, int tocont) {
+  lua_State *L = (lua_State *)ud;
+  if (checkcontrol(L, message, tocont)) {
+    return; /* nothing else to be done */
+  }
+  store_warning(L, message);
+  if (!tocont) {  /* last part */
+    call_warn_hook(L);  /* call the warnings hook */
+    reset_warnings(L);  /* reset warnings table */
+  }
+}
+
+
+/*
+** Writes the message and handle 'tocont', finishing the message
+** if needed and setting the next warn function.
+*/
+static void warnfcont (void *ud, const char *message, int tocont) {
+  lua_State *L = (lua_State *)ud;
+  lua_writestringerror("%s", message);  /* write message */
+  store_warning(L, message);
+  if (tocont)  /* not the last part? */
+    lua_setwarnf(L, warnfcont, L);  /* to be continued */
+  else {  /* last part */
+    lua_writestringerror("%s", "\n");  /* finish message with end-of-line */
+    lua_setwarnf(L, warnfon, L);  /* next call is a new message */
+    call_warn_hook(L);  /* call the warnings hook */
+    reset_warnings(L);  /* reset warnings table */
+  }
+}
+
+/*
+** Records a warning, and writes a warning prefix followed by the
+** warning to stderr.
+*/
+static void warnfon (void *ud, const char *message, int tocont) {
+  lua_State *L = (lua_State *)ud;
+  if (checkcontrol(L, message, tocont))  /* control message? */
+    return;  /* nothing else to be done */
+  lua_writestringerror("%s", "Lua warning: ");  /* start a new warning */
+  warnfcont(ud, message, tocont);  /* finish processing */
+}
+
+
+/*
+** Sets the object at the top of the stack as the function that is
+** called on the concatenated warning messages. Pops the function from
+** the stack.
+*/
+void hsluaL_setwarnf (lua_State *L) {
+  lua_setfield(L, LUA_REGISTRYINDEX, HSLUA_RFLD_WARNF);
+  reset_warnings(L);
+  lua_setwarnf(L, warnfoff, L);
+}
diff --git a/lua.cabal b/lua.cabal
--- a/lua.cabal
+++ b/lua.cabal
@@ -1,6 +1,6 @@
 cabal-version:       2.2
 name:                lua
-version:             2.2.1
+version:             2.3.0
 synopsis:            Lua, an embeddable scripting language
 description:         This package provides bindings and types to bridge
                      Haskell and <https://www.lua.org/ Lua>.
@@ -13,24 +13,23 @@
 license:             MIT
 license-file:        LICENSE
 author:              Albert Krewinkel
-maintainer:          Albert Krewinkel <albert+hslua@zeitkraut.de>
+maintainer:          Albert Krewinkel <tarleb@hslua.org>
 copyright:           © 2007–2012 Gracjan Polak;
                      © 2012–2016 Ömer Sinan Ağacan;
-                     © 2017-2022 Albert Krewinkel
+                     © 2017-2023 Albert Krewinkel
 category:            Foreign
 build-type:          Simple
 extra-source-files:  cbits/lua-5.4.4/*.h
                    , cbits/hslua/*.h
                    , README.md
                    , CHANGELOG.md
-tested-with:         GHC == 8.0.2
-                   , GHC == 8.2.2
-                   , GHC == 8.4.4
+tested-with:         GHC == 8.4.4
                    , GHC == 8.6.5
                    , GHC == 8.8.4
                    , GHC == 8.10.7
                    , GHC == 9.0.2
-                   , GHC == 9.2.3
+                   , GHC == 9.2.5
+                   , GHC == 9.4.4
 
 source-repository head
   type:                git
@@ -75,9 +74,16 @@
   description:         Use @pkg-config@ to discover library and include paths.
                        Setting this flag implies `system-lua`.
 
+flag cross-compile
+  default:             False
+  manual:              True
+  description:         Avoids constructs that would prevent cross-compilation.
+                       The Lua version constants may become inaccurate when
+                       this flag is enabled.
+
 common common-options
   default-language:    Haskell2010
-  build-depends:       base                 >= 4.8    && < 5
+  build-depends:       base                 >= 4.11   && < 5
   ghc-options:         -Wall
                        -Wincomplete-record-updates
                        -Wnoncanonical-monad-instances
@@ -100,6 +106,9 @@
   if flag(allow-unsafe-gc)
     cpp-options:         -DALLOW_UNSAFE_GC
 
+  if flag(cross-compile)
+    cpp-options:         -D_LUA_NO_CONST_STR
+
 library
   import:              common-options
   exposed-modules:     Lua
@@ -113,6 +122,7 @@
                      , Lua.Primary
                      , Lua.Types
                      , Lua.Userdata
+                     , Lua.Warn
   hs-source-dirs:      src
   default-extensions:  CApiFFI
                      , ForeignFunctionInterface
@@ -126,6 +136,7 @@
                      , cbits/hslua/hslcall.c
                      , cbits/hslua/hslauxlib.c
                      , cbits/hslua/hslua.c
+                     , cbits/hslua/hslwarn.c
   include-dirs:        cbits/hslua
   includes:            lua.h
                      , luaconf.h
diff --git a/src/Lua.hs b/src/Lua.hs
--- a/src/Lua.hs
+++ b/src/Lua.hs
@@ -2,9 +2,9 @@
 {-# LANGUAGE PatternSynonyms #-}
 {-|
 Module      : Lua
-Copyright   : © 2021-2022 Albert Krewinkel
+Copyright   : © 2021-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : portable
 
@@ -241,6 +241,8 @@
   , hslua_concat
   , hslua_arith
   , hslua_compare
+    -- ** Simplified warnings handling
+  , hsluaL_setwarnf
 
     -- * Standard Lua libraries
   , luaopen_base
@@ -254,6 +256,11 @@
 
     -- * Push Haskell functions
   , hslua_pushhsfunction
+
+    -- * Version and copyright info
+  , pattern LUA_VERSION
+  , pattern LUA_RELEASE
+  , pattern LUA_COPYRIGHT
   ) where
 
 import Foreign.C (CInt)
@@ -265,6 +272,7 @@
 import Lua.Lib
 import Lua.Primary
 import Lua.Types as Lua
+import Lua.Warn
 
 -- | Runs operations on a new Lua @'Lua.State'@. The state is created
 -- when the function is called and closed on return. The state, and all
diff --git a/src/Lua/Auxiliary.hs b/src/Lua/Auxiliary.hs
--- a/src/Lua/Auxiliary.hs
+++ b/src/Lua/Auxiliary.hs
@@ -3,9 +3,9 @@
 Module      : Lua.Auxiliary
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : non-portable (depends on GHC)
 
diff --git a/src/Lua/Call.hs b/src/Lua/Call.hs
--- a/src/Lua/Call.hs
+++ b/src/Lua/Call.hs
@@ -3,9 +3,9 @@
 Module      : Lua.Call
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : non-portable (depends on GHC)
 
diff --git a/src/Lua/Constants.hsc b/src/Lua/Constants.hsc
--- a/src/Lua/Constants.hsc
+++ b/src/Lua/Constants.hsc
@@ -3,17 +3,21 @@
 Module      : Lua.Constants
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : ForeignFunctionInterface
 
 Lua constants
 -}
 module Lua.Constants
-  ( -- * Special values
-    pattern LUA_MULTRET
+  ( -- * Version and copyright information
+    pattern LUA_VERSION
+  , pattern LUA_RELEASE
+  , pattern LUA_COPYRIGHT
+    -- * Special values
+  , pattern LUA_MULTRET
     -- * Pseudo-indices
   , pattern LUA_REGISTRYINDEX
     -- * Basic types
@@ -79,6 +83,29 @@
 
 #include <lua.h>
 #include <lauxlib.h>
+
+--
+-- Version and copyright info
+--
+
+-- | Lua version information in the form "@Lua MAJOR.MINOR@".
+pattern LUA_VERSION :: String
+
+-- | Lua version information in the form "@Lua MAJOR.MINOR.RELEASE@".
+pattern LUA_RELEASE :: String
+
+-- | Lua copyright information; includes the Lua release
+pattern LUA_COPYRIGHT :: String
+
+#ifdef _LUA_NO_CONST_STR
+pattern LUA_VERSION = "Lua 5.4"
+pattern LUA_RELEASE = "Lua 5.4.4"
+pattern LUA_COPYRIGHT = "Lua 5.4.4  Copyright (C) 1994-2022 Lua.org, PUC-Rio"
+#else
+pattern LUA_RELEASE = #{const_str LUA_RELEASE}
+pattern LUA_VERSION = #{const_str LUA_VERSION}
+pattern LUA_COPYRIGHT = #{const_str LUA_COPYRIGHT}
+#endif
 
 --
 -- Special values
diff --git a/src/Lua/Ersatz.hs b/src/Lua/Ersatz.hs
--- a/src/Lua/Ersatz.hs
+++ b/src/Lua/Ersatz.hs
@@ -2,9 +2,9 @@
 Module      : Lua.Ersatz
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 
 Ersatz functions for Lua API items which may, directly or indirectly,
diff --git a/src/Lua/Ersatz/Auxiliary.hs b/src/Lua/Ersatz/Auxiliary.hs
--- a/src/Lua/Ersatz/Auxiliary.hs
+++ b/src/Lua/Ersatz/Auxiliary.hs
@@ -2,9 +2,9 @@
 Module      : Lua.Ersatz.Auxiliary
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : non-portable (depends on GHC)
 
diff --git a/src/Lua/Ersatz/Functions.hs b/src/Lua/Ersatz/Functions.hs
--- a/src/Lua/Ersatz/Functions.hs
+++ b/src/Lua/Ersatz/Functions.hs
@@ -3,9 +3,9 @@
 Module      : Lua.Ersatz.Functions
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : ForeignFunctionInterface, CPP
 
diff --git a/src/Lua/Lib.hs b/src/Lua/Lib.hs
--- a/src/Lua/Lib.hs
+++ b/src/Lua/Lib.hs
@@ -2,9 +2,9 @@
 Module      : Lua.Lib
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : ForeignFunctionInterface, CPP
 
diff --git a/src/Lua/Primary.hs b/src/Lua/Primary.hs
--- a/src/Lua/Primary.hs
+++ b/src/Lua/Primary.hs
@@ -3,9 +3,9 @@
 Module      : Lua.Primary
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : ForeignFunctionInterface, CPP
 
diff --git a/src/Lua/Types.hsc b/src/Lua/Types.hsc
--- a/src/Lua/Types.hsc
+++ b/src/Lua/Types.hsc
@@ -5,9 +5,9 @@
 Module      : Lua.Types
 Copyright   : © 2007–2012 Gracjan Polak;
               © 2012–2016 Ömer Sinan Ağacan;
-              © 2017-2022 Albert Krewinkel
+              © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : non-portable (depends on GHC)
 
@@ -20,6 +20,7 @@
   , CFunction
   , PreCFunction
   , WarnFunction
+  , PreWarnFunction
   , LuaBool (..)
   , Integer (..)
   , Number (..)
@@ -100,6 +101,12 @@
 -- See <https://www.lua.org/manual/5.4/manual.html#pdf-warn warn> for
 -- more details about warnings.
 type WarnFunction = FunPtr (Ptr () -> CString -> LuaBool -> IO ())
+
+-- | Type of Haskell functions that can be turned into a WarnFunction.
+--
+-- This is the same as a dereferenced 'WarnFunction'.
+type PreWarnFunction = Ptr () -> CString -> LuaBool -> IO ()
+
 
 -- |  The type of integers in Lua.
 --
diff --git a/src/Lua/Userdata.hs b/src/Lua/Userdata.hs
--- a/src/Lua/Userdata.hs
+++ b/src/Lua/Userdata.hs
@@ -1,9 +1,9 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module      : Lua.Userdata
-Copyright   : © 2017-2022 Albert Krewinkel
+Copyright   : © 2017-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 Portability : ForeignFunctionInterface
 
diff --git a/src/Lua/Warn.hs b/src/Lua/Warn.hs
new file mode 100644
--- /dev/null
+++ b/src/Lua/Warn.hs
@@ -0,0 +1,28 @@
+{-# LANGUAGE CPP #-}
+{-|
+Module      : Lua.Warn
+Copyright   : © 2023 Albert Krewinkel
+License     : MIT
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
+
+Simpler interface to the Lua warnings system.
+-}
+module Lua.Warn
+  ( hsluaL_setwarnf
+  ) where
+
+import Lua.Types (State (State))
+
+-- | Sets a warning function. This is a simplified version of
+-- 'Lua.Primary.lua_setwarnf'. The function at the top of the stack is
+-- set as the "warning hook", i.e., it is called with the concatenated
+-- warning components as the single argument.
+--
+-- The hook function is popped of the stack.
+--
+-- The control messages @\@on@ and @\@off@ are still supported; as with
+-- the default warning function, these commands can switch error
+-- reporting to stderr on and off. The given Haskell function will be
+-- called in either case, even when the error is not written to stderr.
+foreign import ccall "hslwarn.c hsluaL_setwarnf"
+  hsluaL_setwarnf :: State -> IO ()
diff --git a/test/Lua/ErsatzTests.hs b/test/Lua/ErsatzTests.hs
--- a/test/Lua/ErsatzTests.hs
+++ b/test/Lua/ErsatzTests.hs
@@ -1,8 +1,8 @@
 {-|
 Module      : Lua.ErsatzTests
-Copyright   : © 2021-2022 Albert Krewinkel
+Copyright   : © 2021-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 
 Tests for Lua bindings.
diff --git a/test/Lua/PrimaryTests.hs b/test/Lua/PrimaryTests.hs
--- a/test/Lua/PrimaryTests.hs
+++ b/test/Lua/PrimaryTests.hs
@@ -2,9 +2,9 @@
 {-# OPTIONS_GHC -Wno-unused-do-bind        #-}
 {-|
 Module      : Lua.PrimaryTests
-Copyright   : © 2021-2022 Albert Krewinkel
+Copyright   : © 2021-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 
 Tests for bindings to primary API functions.
 -}
diff --git a/test/Lua/UnsafeTests.hs b/test/Lua/UnsafeTests.hs
--- a/test/Lua/UnsafeTests.hs
+++ b/test/Lua/UnsafeTests.hs
@@ -2,9 +2,9 @@
 {-# OPTIONS_GHC -Wno-unused-do-bind        #-}
 {-|
 Module      : Lua.UnsafeTests
-Copyright   : © 2021-2022 Albert Krewinkel
+Copyright   : © 2021-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 
 Tests for bindings to unsafe functions.
diff --git a/test/test-lua.hs b/test/test-lua.hs
--- a/test/test-lua.hs
+++ b/test/test-lua.hs
@@ -2,9 +2,9 @@
 {-# LANGUAGE CPP #-}
 {-|
 Module      : Main
-Copyright   : © 2021-2022 Albert Krewinkel
+Copyright   : © 2021-2023 Albert Krewinkel
 License     : MIT
-Maintainer  : Albert Krewinkel <tarleb+hslua@zeitkraut.de>
+Maintainer  : Albert Krewinkel <tarleb@hslua.org>
 Stability   : beta
 
 Tests for the raw Lua bindings.
@@ -191,6 +191,8 @@
       ("_LOADED"  @=? loadedTableRegistryField)
     , "preloadTableRegistryField" =:
       ("_PRELOAD" @=? preloadTableRegistryField)
+    , "LUA_VERSION" =:
+      ("Lua 5.4" @=? LUA_VERSION)
     ]
 
   , testGroup "compare"
