LuaDirectory > LuaAddons > Libraries
And
Bindings
This is a list of libraries implemented in Lua or implemented in another language (e.g. C) but having a Lua interface. For older libraries and bindings, see the LuaAddonsArchive.
Modules can also be found on LuaForge. Lua ModuleReview intends to arrange some of them.
Note to authors: This page is part of LuaAddons — please read the instructions there before making changes to this list. Please don't mark an entry with an open-ended version (e.g. "5.x"), as it will likely be incorrect the moment a new Lua version is released.
For something to be listed on this page, it must be possible to "require" it into a typical Lua application. Examples of what not to list:
- XYZ server or app that uses Lua for scripting or config
- XYZ engine or framework for C++ apps which is scriptable in Lua (but cannot extend existing Lua apps)
GUI toolkits and graphics
- GraphicalUserInterfaceToolkits - toolkits for creating GUI widgets or controls.
- LuaGraphics - 2D/3D Lua-codable graphics frameworks.
- OpenGraphicsLibrary - OpenGL/3D
- SDL (Simple Direct
Media Layer)
- SDL1.2 and SDL2.0: [SWE_lua] (5.2) - It is a simple Lua bindings to the graphics scene provides a surface for managing a large number of 2D graphical items.
- LuaModuleLuaSdl (4.0, 5.0) - bindings of SDL to Lua 4.0; patches for 5.0. See also [SDL].
- [LuaSDL] (5.1) - a tolua++ binding for SDL, SDL_image, SDL_mixer, SDL_net and SDL_ttf.
- [lAGE] (5.1) - a tiny game engine for 2D adventure games, in the style of old Lucas
Arts adventures. Uses Lua as the script language and SDL for the multimedia part.
- See also [9] (via FFI)
- [LuaJIT-SDL2] (LuaJIT ffi) - ffi binding to SDL2 with audio and threads.
- Image Manipulation
- [CD] (5.1) - a platform-independent graphics library with a binding for Lua.
- [Lua-GD] (5.1) - a [GD Graphics Library] binding for Lua.
- [Lua-Cairo] (5.1) - A [Cairo Graphics Library] binding for Lua. (There are similar works at http://luaforge.net/projects/luacairo/, http://imago.functionalfuture.com/ and https://luapower.com/cairo)
- [Lua-OOCairo] (5.1/5.2/5.3) provides Lua with full access to the Cairo vector graphics API. [installable via Luarocks].
- [lgob] (5.1) Use Cairo (and many GObject-based libraries, e.g. GTK+) directly from Lua.
- [lgi] (5.1/5.2) - [gobject-introspection] based dynamic Lua binding to [GObject based] libraries. It allows using many introspected libraries including most of Gnome libs, Clutter, DBus/GDbus, GStreamer, WebKit?, databases with GDA, and many, many more.
- [lua-imlib2] (5.1) - A binding to the imlib2 image manipulation library.
- [IM] (5.1) - an image manipulation library with a binding for Lua. Includes support for scientific image processing.
- [LuaFreeImage] (5.1) - [FreeImage] interface to Lua.
- [luapower/bitmap] (LuaJIT2) - bitmap format conversion (+dithering, alpha-blending, effects) in Lua
- Desktop Publishing
- [lpdf] (5.0/5.1/5.2) - a library for generating PDF files based on PDFlib [1].
- [LuaHPDF] (5.1) - a Lua binding to the Haru Free PDF Library [2]. Last updated in 2007.
- PDF can also be generated by [CD] and [LuaCairo].
- [luaFPDF] a pure lua port of PHP FPDF library, it isn't complete but is functional, any comments, suggestions, enhancements are welcome.
- Plots/Graphs
- [ldislin] (5.1) - A Lua wrapper for the [DISLIN] plotting and widgets library from MPS.
- [LuaGRAPH] (5.1/5.2/5.3) - A library to create, manipulate, layout and render graphs. Based on the [GRAPHVIZ] library from AT&T.
- [PLplot] (5.0/5.1) - PLplot is a cross-platform software package for creating scientific plots. Lua bindings were added 02/2009.
- Other
Audio
Networking
Generic / Low-level
- [LuaSocket] (5.0/5.1) - a library for socket programming in Lua.
- [LuaSCTP] (5.1/5.2/5.3) - Send and receive data via SCTP from Lua.
- [Nixio] - System, Networking and I/O library for Lua.
- [Emilua] - Another System, Networking and I/O library for Lua.
- [LuaZMQ] - Lua bindings to the [ZeroMQ] Publish/Subscribe, Request/Response, Push/Pull message passing library.
- [lzmq] (5.1/5.2/5.3) - Lua binding to the [ZeroMQ] 3.x library.
- [LuaHandlers] - Provides a set of async. callback based handlers for working with raw TCP/UDP socket, ZeroMQ sockets, or HTTP requests.
- [LuaSys] (5.1/5.2) - yet another system library for Lua. (Also contains: 1) sockets; 2) event notification mechanism; 3) win32 stuff: registry, service; 4) serial communication; 5) threading).
- [DSAS/DSASC] (5.1) - Dyna
Set Application Server and Client, a simple server/client networking API for Lua. Relies on [YAMI].
- [LuaBER] (5.0) - simple Basic Encoding Rules ([BER]) of Abstract Syntax Notation One ([ASN.1]/CCITT X.680, [OSI] Layer 6) implementation.
- [luaspread] (5.1) - a Lua interface to the Spread Group Communication System.
- [luadjbdns] (5.1) - a Lua interface to the djbdns and skadns DNS client libraries.
- [LuaCURL] (5.0/5.1) - a Lua interface to the [libcurl] file transfer library.
- [LuaSNMP] (5.1/5.2/5.3) - A library for Simple Network Management (SNMP) programming in Lua. Based on the net-snmp library.
- [webnet77] (5.1) - a library for IP to country lookup. [*L]
- [swirl] (5.1) - implements [BEEP], a framework for creating application-level protocols.
- [LuaVortex] (5.1) - implements [BEEP], a framework for creating application-level protocols.
- LuaApr binds the socket interface provided by the Apache Portable Runtime (APR) library.
- Queueing / Threading
- HTML
- [HTK] (5.0/5.1) - a library of Lua constructors for HTML elements. [*L]
- [Lua HTML Tidy] (5.0) - a Lua to [HTML Tidy] binding.
- [XSSFilter] (5.1) - A module to filter HTML to safeguard against cross-site scripting (XSS) attacks. [*L]
- [lua-gumbo] (5.1/5.2/5.3) - HTML5 parser and DOM API.
- XML / XML-RPC / SOAP
- JSON-RPC
- [JSONRPC4Lua] (5.0/5.1) - JSON-RPC-over-http client (or server in a CGILua environment) for Lua. [*L]
- (see also JSON under Text processing below)
- [tango] (5.1) - A simple RPC library with customizable serialization. Depends on Copas and LuaSocket?.
- [ratchet] (5.1/5.2) - a multi-socket control mechanism, similar to Python's gevent, with support for ZeroMQ, SSL, DNS, SMTP, HTTP.
- [Luvit] (5.1) - Lua + node.js's libUV + JIT: event-driven non-blocking I/O for network applications.
- [Lua HDF5] (5.1/5.2) - Low and high-level Lua interface to the HDF5 library. Compare to h5py.
- [Lua MPI] (5.1/5.2) - Lua bindings for MPI (Message Passing Interface).
- [cqueues] (5.1/5.2/5.3) - Comprehensive abstraction over O(1) sockets, signals, and file notification on Linux, *BSD, OS X, and Solaris. Also includes buffered socket I/O, SSL/TLS I/O, file descriptor passing, POSIX thread wrapper, DNS library with recursive and stub resolution, and complete bindings to OpenSSL's certificate and key management API. No callbacks, so fully interoperable with other C or Lua event loops, or usable as a standalone event loop.
- [lua-http] (5.1/5.2/5.3/luajit) - HTTP Library for Lua. Supports HTTP 1.0, 1.1 and 2.0; client and server; optionally fully asynchronous.
- [lredis] (5.1/5.2/5.3/luajit) - Redis client; optionally fully asynchronous.
- [lua-websockets] (5.1/5.2) - Websockets (V13) for Lua.
- [h2o] (5.1/luajit) - Handling HTTP/1.* and HTTP/2 requests with Lua fast and lightweight (40,000 req/s simple form on intel celeron).
- [ljndpi] (luajit) - Binding for the nDPI deep-packet inpection library, using the LuaJIT FFI.
- [lua-lluv] - Low level binding to libuv.
Specific / Application level
- Web frameworks
- [Lapis] (5.1) - A web framework for MoonScript? & OpenResty?.
- [Web Wispers] (5.1) - distributed service-oriented web development framework.
- [Ophal] (5.1) - Drupal-like web framework for Lua
- [Jet] (5.1, 5.2) - Realtime Message Bus for Lua, Node.js and Browser
- [Kepler] [4] (5.0/5.1) - the portable web development platform. No longer under active development.
- [Orbit] (5.1) - an [MVC]-oriented web framework. No longer under active development.
- [Moonstalk] (5.1) - a web hosting backend and web development framework. No longer under active development.
- [Lua Web Tools] (5.1/5.2) - template based web applications, Apache 2 module. No longer under active development.
- [Tir] (5.1) - simple Lua web framework built specially for Mongrel2. No longer under active development.
- CGI / Web Server Bindings
- Web Servers
- [Mako Server] - Lua App Server includes support for client/server HTTP/HTTPS, (secure) sockets, client/server WebSockets?, MQTT client, WebDAV server, and Lua Server Pages (LSP) for creating web apps.
- [Xavante] (5.1) - a Lua Web server (HTTP/1.1) that handles requests with Copas and uses CGILua as the native template engine.
- [lua-httpd] (5.0) - a simple networking binding and sample webserver implemented using it.
- [Ladle] (5.1) - an experimental web server written in the Lua programming language and is configurable via XML. [*L]
- [LuaExec] (5.1, 5.2, 5.3?) - small object oriented server supporting Copas, rudimentary HTTP/1.1 class, Lua pages with a parser written in C, included as an example for embedding a HTTP server into an application
- [Turbolua] (5.1) - Web server that allows websites to be written in Lua. Fast, uses Luajit.
- CMS / Wiki
- [Sputnik] (5.1) - an extensible wiki framework. Depends on Kepler and [Saci]. [*L]
- [Nanoki] (5.1) - a full-featured wiki and HTTP/1.1 engine. [*L]
- [LOona] (5.1) - small, fast and extensible CMS with wiki-like features.
- [Ophal] (5.1) - Content Management Framework (a framework to create CMSs).
- Web browsers
- [Moonshine] (5.1) - an embedded Lua environment for Mozilla Firefox. Implemented as an XPI extension; allows Firefox extensions to be developed using Lua code rather than Java
Script.
- [Luakit] (5.1) - a highly configurable, micro-browser framework based on WebKit? and GTK+, extensible by Lua.
- E-mail
- [LuaPOP3] (5.0) - a POP3 client library for Lua.
- [Tethys] (5.1) - an simple yet extensible SMTP server. Designed to avoid the configuration nightmare that are most SMTP servers. [*L]
- IMAP: [5] tiny IMAP server implemented in Lua (preliminary) [*L]
- [Lua-POP3] (5.1/5.2/5.3) - a POP3 client library for Lua.
- Chat / IM / VoIP
- [Verse] (5.1) - a Jabber/XMPP library for Lua.
- [Prosody] (5.1) - a lightweight XMPP server written entirely in Lua (using common libraries/modules where necessary). [*L]
- [luamodo] (5.1) - an object oriented IRC bot framework.
- [FreeSWITCH] (5.1) - an open source communications framework for creation of voice and chat driven products scaling from a soft-phone up to a soft-switch. Supports SIP, H.323, IAX2, XMPP, and more. Includes conferencing, interactive voice response, text to speech/automatic speech recognition, PSTN interconnection, etc. Interfaces with C/C++, Perl, Python, Lua, Java
Script, Java and Mono/.NET.
- [ivrWorx] - VoIP application prototyping tool (SIP,MRCP,RTSP,...).
- [lua-gntp] - Implementation of Growl Notify Transport Protocol (GNTP).
Text processing
- Pattern Matching / Templates / Preprocessing
- [Gel] (5.0) Gel: [Gema] and Lua in a colloidal solution. Pattern matching over multiple lines, context sensitive matching and many other powerful mechanisms to transform text files.
- [MixLua] (5.1) - an onload preprocessor for Lua files and allow mixing of Lua code with other data.
- [lrexlib] (5.1) - a POSIX and Perl (PCRE) regular expression library for Lua.
- [LPeg] (5.1/5.2/5.3) - a New Pattern-Matching Library for Lua. See also LpegRecipes.
- [ltokens] (5.0/5.1) - a library for lexical analysis of Lua code, based on the Lua lexer.
- [OMeta/Lua] (5.1/5.2/5.3) - OMeta language implementation for Lua.
- See also LuaGrammar.
- Markup languages
- [Markdown.lua] (5.1) - an implementation of the Markdown text markup language in pure Lua. [*L]
- [lua-discount] (5.1) - an binding to Discount, a fast and conformant C implementation of the Markdown text markup language.
- [luasoldout] - a simple lua binding to libsoldout, a lightweight C library that can parse Markdown.
- [LuaHaml], an implementation of the [Haml] template language
- Templating
- Data serialization languages
- JSON:
- See JsonModules for a list of many JSON modules and a comparison of them.
- [Lua CJSON] (5.1/5.2) - Fast JSON parsing/encoding support for Lua.
- YAML
- [yaml] (5.1) - a LibYAML binding for Lua.
- [Syck] (5.1) - Scripters' YAML Cobble-yourself-a-parser Kit. It's optimized for use with high-level interpreted languages, obtaining speed by writing directly to the symbol table of the language.
- Cyan
- [Cyan] - Convert tables to strings and vice-versa using Cyan encoding
- See also LuaXml.
- Binary-to-text encoding
- [lascii85] (5.0/5.1/5.2/5.3) - an ASCII85[6] library for Lua.
- base64: See libraries at bottom of BaseSixtyFour.
- [Ascii85] - A pure Lua implementation of Ascii85[6] Encoding
- [luazen] (5.1+) - A small self-contained library with base64 and base58 encoding functions (base58 uses the Bitcoin alphabet). It also includes low-grade cryptographic functions (MD5, SHA1, RC4) and compression functions (LZF). No dependencies.
- Analysis
- [Diff for Lua] (5.1) - a diff library, also providing an implementation of Least Common Subsequence. [*L]
- [StringDistance] (5.0/5.1/5.2) - calculate string distances based on Levenshtein and Damerau algorithms.
- Unicode
- [luapower/utf8] (5.x) - Low-level pure-Lua module for working with UTF-8 encoded strings.
- See also StringRecipes.
- [Allen] (5.x) - Lua Library for intensive strings processing.
- [LuaNLP] (5.x) - Natural language processing library for Lua. [*L]
Tables processing
Database access
- See DatabaseAccess.
AI
- See ArtificialIntelligence.
- [Jumper] (5.1) - Pathfinding Library for 2D grid-based games using Jump Point Search algorithm.
Math
- High-precision / Arbitrary precision
- [lqd] (5.1/5.2/5.3) - a high-precision (double-double & quad-double) mathematical library for Lua based on [qd].
- [lbc] (5.0/5.1/5.2/5.3) - a big-number library for Lua.
- [lmapm] (5.0/5.1/5.2/5.3) - an arbitrary precision library that contains transcendental functions.
- [ldecNumber] (5.1) - wrapper for IBM [decNumber]. Implements General Decimal Arithmetic standard IEEE 754r. Full control over rounding modes and working precision.
- [LGMP] (5.1/5.2) - use [GMP] the GNU multiple precision arithmetic library from Lua.
- [lua-bint] (5.3/5.4) - a big integer library in pure Lua.
- [lmathx] (5.1/5.2/5.3) - an extension of the standard math library based on C99.
- [lcomplex] (5.1/5.2/5.3)- a library for mathematical operations with complex numbers based on C99.
- [linterval] (5.1/5.2) - an interval arithmetic library based on [PROFIL/BIAS]; implements interval type, vectors and matrices of this type. Includes an implicit curve plotter.
- [lgpc] (5.0/5.1/5.2/5.3) - a library for Boolean operations on polygons based on [GPС] the General Polygon Clipper library.
- [Numeric Lua] (5.1) - a numeric package for Lua with support for complex numbers, multidimensional matrices, random number generation, and special functions. Most of the routines are wrappers for the Netlib libraries.
- LuaMatrix [7] (5.1) - matrix operations in pure Lua. [*L] includes complex number library too.
- [complex] - library for complex numbers written in pure Lua
- [gslshell] - Library and Lua shell interface binding to the GNU Scientific Library (GSL), including matrices, vectors, and various math routines
- [Lunum] - fast numeric arrays for Lua, implemented entirely in C. Arrays behave just like numpy arrays, and support all numeric data types, including bool and complex. Array slicing is on the way. Works as a Lua module (shared library) or a simple C API to statically embed in applications. Actively used in physics research on distributed memory computing clusters.
- [SOR](5.x) - Library for solving linear equations.
- [SciLua] (LuaJIT 2.0) - Pure LuaJIT library for general purpose scientific computing. Covers vector and matrix algebra, random (and quasi random) number generators, function minimization, distributions, special math functions, more.
- [Rclient] (LuaJIT 2.0) - Pure LuaJIT library, makes it possible to exchange data structures between LuaJIT and R and to execute arbitrary R programs directly from LuaJIT.
- [GALua] (5.2) - Adds multi-vector data-types to the Lua programming language. Those familiar with geometric algebra may be interested in this module.
- [Lua Numerical Algorithms] - Pure LuaJIT library that provides matrix operations (mostly via LAPACKE and FFI), function minimization, integration, FFT, complex numbers, and others.
- [luapower/affine2d] - 2D affine transforms
- [luapower/eq] - 2nd and 3rd degree equation solver
- [Torch] - Scientific computing library with broad support for machine learning algorithms (requires LuaJIT and LuaRocks)
- [vectorial] - Pure Lua 5.3 libraries for basic vector handling. Currently 2D and 3D vectors are supported, n-dimensional vectors will happen eventually.
- [lua-linear] (5.1/5.2/5.3/5.4) - Comprehensive linear algebra and statistics support for the Lua programming language, including use of BLAS and LAPACK
Compression
Cryptography
Binary Structure / Bitwise Op
- bitwise-operators: see BitwiseOperators.
- structure packing: see StructurePacking.
- [LuaMem] (5.0) - struct, array, call cfunction, file map.
- [ludis86] (5.1/LuaJIT) - binary code disassembler [udis86] bindings.
- [carray] (5.1-5.4) - array data type for handling arrays of primitive numeric C data types in Lua script code and also in native C code for enhancing native Lua module interoperability and performance.
Persistence / Serialization
- [Pluto] (5.0/5.1) - heavy-duty persistence for Lua. See also PlutoLibrary.
- [Eris] (5.2) - a port/rewrite of Pluto.
- [lper] (5.0/5.1) - a tool for making persistent Lua states using Linux Persistent Memory library (LPSM).
- [mplua] (5.1) - a binding to [MessagePack], a binary-based efficient object serialization library. Enables to exchange structured objects between many languages like JSON.
- [LTCN] Deserializes Lua Table Constructor Notation by parsing with LPeg as a safe alternative to
load
/loadstring
. Similar in purpose to JSON.parse()
vs. JavaScript eval()
.
- See also TableSerialization.
POSIX / Filesystem / Linux
- FileSystemOperations - libraries for file system operations
- [lalarm] (5.0/5.1/5.2/5.3) - an alarm library for Lua based on signal and SIGALRM.
- [lposix] (5.0/5.1) - a POSIX library for Lua.
- [luaposix] (5.1/5.2) - another POSIX library for Lua.
- [luainotify] (5.1) - a Lua interface to the Linux inotify subsystem.
- [linotify] (5.0/5.1) - another Lua interface to inotify.
- [Flu] (5.1) - a Lua binding for [FUSE].
- LuaApr provides portable access to most file system operations supported by the Apache Portable Runtime (APR) library.
- [v4l-lua] (5.1) - a Lua bind for V4L2 Cameras
- [lunix] (5.1/5.2/5.3) - Bindings to common Unix interfaces, both POSIX and extensions, with emulation where not natively available. For example, BSD getifaddrs will work on all supported platforms, even those which lack it in their libc. POSIX clock_gettime and sigtimedwait are supported on all platforms, even though several lack a native implementation of one or the other. Developed and maintained on Linux/glibc, OS X, Solaris, AIX, FreeBSD, NetBSD, and OpenBSD.
Shell
- [Lush] (5.3) - a Lua module for writing shell script style programs. Features include: string expansion and subprocess management.
- [NTLua] (5.1) - a Lua module and console application to create Windows NT administration and logon scripts.
- LuaExpect lists Lua implementations of the famous [Expect] tool
Logging
- [LuaLogging] (5.1) - A simple API to use logging features in Lua. [*L]
- [lua-log] (5.1/5.2/5.3) - Asynchronous logging library for Lua.
- [log4l] (5.1/5.2/5.3) - Updated fork of LuaLogging?, featuring several bug-fixes. [*L]
Internationalization (i18n)
Documentation
- [doctest] (5.1) - a module that strives to integrate documentation and testing by example. Idea from python-doctest. [*L]
Testing
Events / Queueing / Threading / Parallelism
Calling interfaces
Sandboxing
Hardware
- [lualibusb] - a libusb binding for general USB devices.
- [luausb] - a libusb1 binding for general USB devices.
- [luahidapi] - a hidapi binding for USB HID devices.
Miscellaneous
- [lua-libs] - a collection of utilities, oop, linked list, memoization, memento, flyweight, string manipulation. [*L]
- [stdlib] (5.1/5.2) - a collection of Lua modules for general programming. See also StandardLibraries. [*L]
- [LUSTI] (5.0) - Lua binding for Universal Search Tree Interface (more for learning Lua with C).
- [VEnv] (5.0) - Provides a way to execute a Lua function in a separate environment, protecting the original one. [*L]
- [Compat-5.1] (5.0) - simulates the Lua 5.1 package model under Lua 5.0 so you can use 5.1 packages. [*L]
- [LuaSVN] (5.1) - A library that allows to use some Subversion (SVN) facilities inside Lua programs.
- [Tamale] (5.1) - Structural, Erlang-style pattern-matching for Lua. Works over data structures, not just strings.
- [The Lua Class Library] - A class library (provides support for the class keyword)
- [qOOP] (5.1) - A simple, lightweight Lua Library which offers lots of OOP facilities using Lua Programming Language.
- [Binary Heaps](5.x) - Implementation of binary heaps in pure Lua.
- [Lua Class System](5.x) - Lighweight OOP framework for Lua.
- [Basic Class Model](5.x) - A partial implementation of Python's class model for Lua, written in only 150 lines
- [luapower/oo](5.x) - Object system with virtual properties, overriding hooks and introspection in 200 LOC
- [luapower/tuple](5.x) - Tuples that can be used as table keys
- [luapower/dlist](5.x) - Doubly-linked lists
- [luawincon](5.4) - Low-level Windows console interface
- [lua-tz] (5.1/5.2/5.3/5.4) - Lua date and time functions with support for time zones
- [lua-h3] (5.3/5.4) - Lua bindings for the H3 library, a hexagonal hierarchical geospatial indexing system
To delete
The following are proposed to be removed from this page because they are not libraries or bindings but uses of Lua.
- BlitzLua (5.1) - a Lua runtime environment written in BlitzMAX with access to many BlitzMAX/MaxGUI modules (including 2D and 3D graphics, sound and networking). (note: the link currently points into this wiki (which is usually a bad idea in this list) but this will change as soon as the package has its own web site)
- [Crank Storyboard] - Engine and development environment targeting graphics systems on embedded platforms (SDL, frame buffer, Direct FB, Win32 DGI, QNX TDK, Khronos OpenVG/OpenGL, and others). Uses Lua for logic and glue. [8]. Commercial.
Footnotes: [*L] pure Lua implementation (no C)
RecentChanges · preferences
edit · history
Last edited January 9, 2024 2:15 pm GMT (diff)