diff --git a/gnu/packages/lua.scm b/gnu/packages/lua.scm index b47ea67e8e..074ab6a0aa 100644 --- a/gnu/packages/lua.scm +++ b/gnu/packages/lua.scm @@ -22,6 +22,7 @@ ;;; Copyright © 2023 Valter Nazianzeno ;;; Copyright © 2023 Timo Wilken ;;; Copyright © 2024 Jan Wielkiewicz +;;; Copyright © 2024 Maxim Cournoyer ;;; ;;; This file is part of GNU Guix. ;;; @@ -50,11 +51,13 @@ (define-module (gnu packages lua) #:use-module (guix build-system meson) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages boost) #:use-module (gnu packages curl) #:use-module (gnu packages build-tools) + #:use-module (gnu packages check) #:use-module (gnu packages gcc) #:use-module (gnu packages compression) #:use-module (gnu packages gcc) @@ -909,6 +912,44 @@ (define-public lua5.2-bitop (define-public lua5.1-bitop (make-lua-bitop "lua5.1-bitop" lua-5.1)) +(define-public lutok + (package + (name "lutok") + (version "0.4") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/freebsd/lutok") + (commit (string-append name "-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a2vc2wy5hasw69h1mz768ywx6c4ccl9jzzd4ixddwba3z3ha03b")))) + (build-system gnu-build-system) + ;; Disable the test suite to avoid a circular dependency on kyua. + (arguments (list #:tests? #f)) + (native-inputs (list autoconf automake libtool pkg-config)) + (inputs (list atf)) + (propagated-inputs (list lua-5.2)) ;included in c_gate.hpp + (home-page "https://github.com/freebsd/lutok") + (synopsis "Lightweight C++ API for Lua") + (description "Lutok is a lightweight C++ API library for Lua. + +Lutok provides thin C++ wrappers around the Lua C API to ease the interaction +between C++ and Lua. These wrappers make intensive use of @acronym{RAII, +Resource Acquisition is Initialization} to prevent resource leakage, expose +C++-friendly data types, report errors by means of exceptions and ensure that +the Lua stack is always left untouched in the face of errors. The library +also provides a small subset of miscellaneous utility functions built on top +of the wrappers. + +Lutok focuses on providing a clean and safe C++ interface; the drawback is +that it is not suitable for performance-critical environments. In order to +implement error-safe C++ wrappers on top of a Lua C binary library, Lutok adds +several layers or abstraction and error checking that go against the original +spirit of the Lua C API and thus degrade performance.") + (license license:bsd-3))) + (define-public selene (package (name "selene")