Files
awesome-awesomeness/html/lua.html
2025-07-18 22:22:32 +02:00

847 lines
37 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<h1 id="awesome-lua-awesome">Awesome Lua <a
href="https://github.com/sindresorhus/awesome"><img
src="https://cdn.rawgit.com/sindresorhus/awesome/d7305f38d29fed78fa85652e3a63e154dd8e8829/media/badge.svg"
alt="Awesome" /></a></h1>
<blockquote>
<p>A curated list of quality Lua <a href="#packages">packages</a> and <a
href="#resources">resources</a>.</p>
</blockquote>
<p>Inspired by the lists <a
href="https://github.com/sindresorhus/awesome">awesome</a>, <a
href="https://github.com/bayandin/awesome-awesomeness">awesome-awesomeness</a>,
and <a
href="https://github.com/sindresorhus/awesome-nodejs">awesome-nodejs</a>.</p>
<h2 id="packages">Packages</h2>
<ul>
<li><a
href="#implementations-interpreters-and-bindings">Implementations,
Interpreters, and Bindings</a></li>
<li><a href="#package-managers">Package Managers</a></li>
<li><a href="#build-tools-and-standalone-makers">Build Tools and
Standalone Makers</a></li>
<li><a href="#debugging-and-profiling">Debugging and Profiling</a></li>
<li><a href="#ides-and-plugins">IDEs and Plugins</a></li>
<li><a href="#utility-belts">Utility Belts</a></li>
<li><a href="#game-engines">Game Engines</a></li>
<li><a href="#game-development">Game Development</a></li>
<li><a href="#logging">Logging</a></li>
<li><a href="#webnetworking-platforms">Web/Networking Platforms</a></li>
<li><a href="#openresty">OpenResty</a></li>
<li><a href="#command-line-utilities">Command-line Utilities</a></li>
<li><a href="#concurrency-and-multithreading">Concurrency and
Multithreading</a></li>
<li><a href="#templating">Templating</a></li>
<li><a href="#documentation">Documentation</a></li>
<li><a href="#object-oriented-programming">Object-oriented
Programming</a></li>
<li><a href="#file-system-and-os">File system and OS</a></li>
<li><a href="#time-and-date">Time and Date</a></li>
<li><a href="#image-manipulation">Image Manipulation</a></li>
<li><a href="#digital-signal-processing">Digital Signal
Processing</a></li>
<li><a href="###hardware-and-embedded-systems">Hardware and Embedded
Systems</a></li>
<li><a href="#math-and-scientific-computing">Math and Scientific
Computing</a></li>
<li><a href="#parsing-and-serialization">Parsing and
Serialization</a></li>
<li><a href="#humanize">Humanize</a></li>
<li><a href="#compression">Compression</a></li>
<li><a href="#cryptography">Cryptography</a></li>
<li><a href="#network">Network</a></li>
<li><a href="#data-stores">Data Stores</a></li>
<li><a href="#message-brokers">Message Brokers</a></li>
<li><a href="#testing">Testing</a></li>
<li><a href="#foreign-function-interfaces">Foreign Function
Interfaces</a></li>
<li><a href="#analysis-tools-and-asts">Analysis Tools and ASTs</a></li>
<li><a href="#experimental-etc">Experimental, etc</a></li>
<li><a href="#scriptable-by-lua">Scriptable by Lua</a></li>
<li><a href="#miscellaneous">Miscellaneous</a></li>
</ul>
<h2 id="resources">Resources</h2>
<ul>
<li><a href="#community">Community</a></li>
<li><a href="#references">References</a></li>
<li><a href="#style-guides">Style Guides</a></li>
<li><a href="#tutorials">Tutorials</a></li>
<li><a href="#articles">Articles</a></li>
<li><a href="#talks--slides">Talks &amp; Slides</a></li>
<li><a href="#books">Books</a></li>
<li><a href="#other-lists">Other Lists</a></li>
</ul>
<h3 id="implementations-interpreters-and-bindings">Implementations,
Interpreters, and Bindings</h3>
<ul>
<li><a href="http://www.lua.org/download.html">Lua</a> - Luas original
ANSI C interpreter.
<ul>
<li><a href="https://github.com/lua/lua">Lua Repo</a> - The official Lua
repo, as seen by the Lua team, mirrored to GitHub.</li>
</ul></li>
<li><a href="http://luajit.org/luajit.html">LuaJIT</a> -
High-performance Just-In-Time compiler for Lua.</li>
<li><a href="https://github.com/neopallium/llvm-lua">LLVM-Lua</a> -
Compiles Lua to LLVM.</li>
<li><a href="https://github.com/daurnimator/lua.vm.js">lua.vm.js</a> -
Lua VM on the web; a direct port of the C interpreter via LLVM,
emscripten, and asm.js.</li>
<li><a href="https://github.com/gamesys/moonshine">Moonshine</a> - A Lua
VM implemented in JavaScript. Slower than lua.vm.js, but with better
docs, examples, and JS interfacing.</li>
<li><a href="https://fengari.io/">Fengari</a> - The Lua VM rewritten in
Javascript with seamless JS and DOM interoperability.</li>
<li><a href="https://github.com/xanathar/moonsharp">MoonSharp</a> - A
Lua interpreter written entirely in C# for the .NET, Mono and Unity
platforms.</li>
<li><a href="https://github.com/xebecnan/UniLua">UniLua</a> - A pure C#
implementation of Lua 5.2, focused on compatibility with the Unity game
engine.</li>
<li><a href="https://github.com/scoder/lupa">lupa</a> - Python bindings
to LuaJIT2.</li>
<li><a href="https://github.com/aarzilli/golua">golua</a> - Golang
bindings to the Lua C API.</li>
<li><a href="https://github.com/yuin/gopher-lua">GopherLua</a> - Lua 5.1
VM and compiler implemented in Go with Go APIs.</li>
<li><a href="https://github.com/vinniefalco/LuaBridge">LuaBridge</a> - A
lightweight library for mapping data, functions, and classes back and
forth between C++ and Lua.</li>
</ul>
<p>Note: From LuaJIT to Lua to lua.vm.js to Moonshine, a basic benchmark
sees performance drop by roughly a factor of 6 with each hop.</p>
<h3 id="package-managers">Package Managers</h3>
<ul>
<li><a href="https://luarocks.org/">LuaRocks</a> - De-facto tool for
installing Lua modules as packages called “rocks”, plus public rock
repository and website. Much like npm or pip.</li>
</ul>
<h3 id="build-tools-and-standalone-makers">Build Tools and Standalone
Makers</h3>
<ul>
<li><a href="https://github.com/stevedonovan/Lake">Lake</a> - A build
engine written in Lua, similar to Rubys rake.</li>
<li><a href="https://github.com/stevedonovan/luabuild">Luabuild</a> -
Highly customizable Lua 5.2 build system.</li>
<li><a href="https://github.com/ers35/luastatic">luastatic</a> - Simple
tool for turning Lua programs into standalone executables.</li>
<li><a href="https://github.com/tongson/omnia">omnia</a> - A
batteries-included creator of standalone executables, built on top of
luastatic.</li>
</ul>
<h3 id="debugging-and-profiling">Debugging and Profiling</h3>
<ul>
<li><a href="https://gist.github.com/perky/2838755">ProFi</a> - Simple
profiler that works with LuaJIT and produces a report file.</li>
<li><a href="https://github.com/geoffleyland/luatrace">luatrace</a> -
Toolset for tracing/analyzing/profiling script execution and generating
detailed reports.</li>
<li><a
href="https://github.com/ignacio/StackTracePlus">StackTracePlus</a> -
Drop-in upgrade to Luas stack traces which adds local context and
improves readability.</li>
<li><a href="https://github.com/pkulchenko/MobDebug">MobDebug</a> -
Powerful remote debugger with breakpoints and stack inspection. Used by
ZeroBraneStudio.</li>
<li><a href="https://github.com/rxi/lovebird">lovebird</a> -
Browser-based debug console. Originally made for LÖVE, but works in any
project with LuaSocket support.</li>
</ul>
<h3 id="ides-and-plugins">IDEs and Plugins</h3>
<ul>
<li><a href="https://eclipse.org/ldt/">Lua Development Tools</a> -
Eclipse plugin which provides code completion, debugging, and more.
Built on Metalua.</li>
<li><a
href="https://bitbucket.org/sylvanaar2/lua-for-idea/wiki/Home">Lua for
IDEA</a> - IntelliJ IDEA plugin which, among other things, provides code
completion, smart highlighting, and experimental debugging.</li>
<li><a href="https://studio.zerobrane.com/">ZeroBraneStudio</a> -
Lightweight, customizable, cross-platform Lua-dedicated IDE with code
completion and analysis, written in Lua. Has broad debugging support for
numerous Lua engines.</li>
<li><a href="https://archive.codeplex.com/?p=babelua">BabeLua</a> - Lua
editor/debugger extension for VS2012-13 with highlighting,
auto-completion, linting, and formatting capabilities.</li>
<li><a href="https://github.com/immerrr/lua-mode">lua-mode</a> - Emacs
major mode for editing Lua.</li>
<li><a href="https://github.com/trixnz/vscode-lua">vscode-lua</a> -
VSCode intellisense and linting.</li>
</ul>
<h3 id="utility-belts">Utility Belts</h3>
<ul>
<li><a href="https://github.com/luafun/luafun">Lua Fun</a> -
High-performance functional programming library designed for
LuaJIT.</li>
<li><a href="https://github.com/Yonaba/Moses">Moses</a> - Functional
programming utility belt, inspired by Underscore.js.</li>
<li><a href="https://github.com/stevedonovan/Penlight">Penlight</a> -
Broad, heavyweight utility library, inspired by Pythons standard libs.
Provides the batteries that Lua doesnt.</li>
<li><a href="https://github.com/lua-stdlib/lua-stdlib">lua-stdlib</a> -
Middle-weight standard library extension; adds some useful data
structures, utility functions, and basic functional stuff.</li>
<li><a href="https://github.com/stevedonovan/Microlight">Microlight</a>
- A little library of useful Lua functions; the extra light version of
Penlight.</li>
<li><a
href="https://luarocks.org/modules/siffiejoe/compat53">compat53</a> -
Compatibility module providing Lua-5.3-style APIs for Lua 5.2 and
5.1.</li>
<li><a href="https://github.com/bjornbytes/RxLua">RxLua</a> - Reactive
Extensions, Observables, etc.</li>
</ul>
<h3 id="game-engines">Game Engines</h3>
<ul>
<li><a href="http://love2d.org/">LÖVE 2D</a> - Desktop game development
platform. Cross-platform, feature-complete, well-adopted.</li>
<li><a href="https://coronalabs.com/">Corona SDK</a> - Development
platform for iOS and Android. Proprietary, but used by numerous top
games and apps, totaling over 150 million downloads.</li>
<li><a href="http://getmoai.com/">MOAI</a> - Open source,
cross-platform, mobile game development framework. Minimalist C++ engine
powered by Lua scripting.</li>
<li><a href="https://drystal.github.io/">Drystal</a> - Open source,
games can run on Linux or on any platform with a recent web
browser.</li>
<li><a href="http://www.amulet.xyz/">Amulet</a> - Open source,
audio/visual toolkit suitable for small games and experimentation. It
runs on Windows, Mac, Linux, HTML5 and iOS.</li>
<li><a href="https://lovr.org">LÖVR</a> - 3D framework for creating
virtual reality experiences, inspired by LÖVE 2D.</li>
</ul>
<h3 id="game-development">Game Development</h3>
<ul>
<li>Corona
<ul>
<li><a
href="https://develephant.github.io/coronium-core-docs/">Coronium</a> -
Simple cloud platform supporting analytics, data objects, user
management, and more.</li>
</ul></li>
<li>LÖVE
<ul>
<li><a
href="https://github.com/love2d-community/awesome-love2d">awesome-love2d</a>
- A list like this one, but focused on game dev and the LÖVE
platform.</li>
<li><a href="https://github.com/rxi/lurker">lurker</a> - Shortens the
iteration cycle by auto-swapping changed Lua files in a running LÖVE
project.</li>
<li><a href="http://vrld.github.io/hump/">HUMP</a> - A set of
lightweight helpers for LÖVE; a game-oriented utility belt.</li>
</ul></li>
<li>MOAI
<ul>
<li><a href="https://moaifiddle.com">moaifiddle</a> - Edit and share
short scripts for the MOAI game engine and run them in the browser using
WebGL.</li>
</ul></li>
<li><a href="https://github.com/Yonaba/Jumper">Jumper</a> - Fast,
lightweight, and easy-to-use pathfinding library for grid-based
games.</li>
<li><a href="https://github.com/rxi/lume/">lume</a> - Utility belt
library geared toward game development.</li>
<li><a href="https://github.com/Overtorment/NoobHub">NoobHub</a> -
Network multiplayer for Corona, LÖVE, and more, following a simple
pub-sub model.</li>
<li>Collision detection
<ul>
<li><a href="https://github.com/kikito/bump.lua">bump.lua</a> - Minimal
rectangle-based collision detection which handles tunnelling and basic
collision resolution.</li>
<li><a href="http://vrld.github.io/HardonCollider/">HardonCollider</a> -
Detect collisions between arbitrarily positioned and rotated shapes of
any type.</li>
</ul></li>
<li>Tweening
<ul>
<li><a href="https://github.com/rxi/flux">flux</a> - A fast, lightweight
tweening library for Lua with easing functions and the ability to group
tweens together.</li>
<li><a href="https://github.com/kikito/tween.lua">tween.lua</a> - Small
library for tweening, with several easing functions.</li>
</ul></li>
<li>Examples
<ul>
<li><a href="https://github.com/tylerneylon/termtris">termtris</a> - A
tetris clone, written in literate style with “an emphasis on
learn-from-ability”.</li>
<li><a href="https://github.com/tylerneylon/pacpac">PacPac</a> - A
Pac-man clone, made with LÖVE.</li>
<li><a href="https://github.com/Stabyourself/mari0">Mari0</a> - Fusion
of Mario and Portal, made with LÖVE. See also its <a
href="https://en.wikipedia.org/wiki/Mari0">wikipedia entry</a>.</li>
<li><a href="https://github.com/hawkthorne/hawkthorne-journey">Journey
to the Center of Hawkthorne</a> - 2D platformer based on Communitys <a
href="https://en.wikipedia.org/wiki/Digital_Estate_Planning">Digital
Estate Planning</a> episode, made with LÖVE.</li>
</ul></li>
</ul>
<h3 id="logging">Logging</h3>
<ul>
<li><a href="https://github.com/moteus/lua-log">lua-log</a> -
Asynchronous logging library with pluggable writers for file system,
network, ZeroMQ, and more.</li>
<li><a href="https://github.com/Neopallium/lualogging">LuaLogging</a> -
Log4j-inspired logging library supporting various appenders.</li>
<li><a
href="https://luarocks.org/modules/luarocks/luasyslog">luasyslog</a> -
Log to syslog, based on LuaLogging.</li>
</ul>
<h3 id="webnetworking-platforms">Web/Networking Platforms</h3>
<ul>
<li><a href="http://openresty.org/en/">OpenResty</a> - A fast and
scalable web application platform created by extending Nginx with Lua.
Todays de-facto Lua web platform, used heavily by Cloudflare, Taobao,
Tencent, and others.</li>
<li><a href="https://turbo.readthedocs.io/en/latest/">turbo</a> -
Event-driven, non-blocking, LuaJIT-based networking suite and framework,
inspired by Tornado.</li>
<li><a href="https://github.com/keplerproject">Kepler Project</a> - A
collection of web-oriented projects using a common set of standards and
components.</li>
<li><a href="https://github.com/EvandroLG/pegasus.lua">Pegasus.lua</a> -
Pegasus.lua is a http server to work with web applications written in
Lua language.</li>
</ul>
<h3 id="openresty">OpenResty</h3>
<ul>
<li><a href="https://github.com/bungle/awesome-resty">awesome-resty</a>
- A list like this one, but focused on OpenResty.</li>
<li>Core platform
<ul>
<li><a
href="https://www.nginx.com/resources/wiki/modules/lua/">ngx_lua</a> -
The core piece of OpenResty. Embeds Lua in Nginx and exposes, among
other things, the cosocket API for non-blocking sockets (compatible with
LuaSockets API).</li>
<li><a href="https://github.com/openresty">OpenResty GitHub
Organization</a> - Home of the repositories for ngx_lua, ngx_openresty,
and many related modules.</li>
</ul></li>
<li>Third-party modules
<ul>
<li><a
href="https://github.com/pintsized/lua-resty-http">lua-resty-http</a> -
Lua HTTP client driver, built on the cosocket API.</li>
</ul></li>
<li>Frameworks &amp; tools
<ul>
<li><a href="http://leafo.net/lapis/">Lapis</a> - Full-stack framework
for Lua and OpenResty. Like the Django or Rails of Lua. Supports
Moonscript.</li>
<li><a href="https://github.com/pintsized/ledge">ledge</a> - Lua module
providing scriptable, RFC-compliant HTTP cache functionality.</li>
<li><a href="https://github.com/sailorproject/sailor">Sailor</a> — An
MVC web framework compatible with OpenResty, Apache and other
webservers.</li>
<li><a href="https://github.com/Kong/kong">Kong</a> - Microservice &amp;
API Management Layer.</li>
</ul></li>
</ul>
<p>Search this page for OpenResty to find related packages under other
categories (data stores in particular).</p>
<h3 id="command-line-utilities">Command-line Utilities</h3>
<ul>
<li><a href="https://github.com/kikito/ansicolors.lua">ansicolors</a> -
Simple function for printing to the console in color.</li>
<li><a href="https://github.com/amireh/lua_cliargs">cliargs</a> - A
simple command-line argument parsing module.</li>
<li><a href="https://github.com/hoelzro/lua-term">lua-term</a> -
Terminal operations and manipulations.</li>
<li><a href="https://github.com/mpeterv/argparse">argparse</a> - A
feature-rich command line parser inspired by argparse for Python.</li>
</ul>
<h3 id="concurrency-and-multithreading">Concurrency and
Multithreading</h3>
<ul>
<li>Coroutine-based multitasking:
<ul>
<li><a href="https://github.com/xopxe/Lumen">Lumen</a> - Simple
concurrent task scheduling.</li>
<li><a href="https://github.com/lefcha/concurrentlua">ConcurrentLua</a>
- Implements an Erlang-style message-passing concurrency model.</li>
<li><a
href="http://25thandclement.com/~william/projects/cqueues.html">cqueues</a>
- Library for managing sockets, signals, and threads based on an event
loop with coroutines.</li>
</ul></li>
<li>Multithreading:
<ul>
<li><a href="https://github.com/Neopallium/lua-llthreads">llthreads</a>
- A simple wrapper for low-level pthreads &amp; WIN32 threads.</li>
<li><a href="https://github.com/moteus/lua-llthreads2">llthreads2</a> -
Newer rewrite of llthreads.</li>
<li><a href="https://github.com/LuaLanes/lanes">lanes</a> - Library
implementing a message passing model with one OS thread per Lua
thread.</li>
<li><a href="https://github.com/askyrme/luaproc">luaproc</a> -
Message-passing model which allows multiple threads per OS thread and
easily generalizes across a network. See also <a
href="http://www.inf.puc-rio.br/~roberto/docs/ry08-05.pdf">the paper</a>
where it originated.</li>
</ul></li>
</ul>
<p>For more on the differences (particularly between <code>lanes</code>
and <code>luaproc</code>), see this <a
href="http://www.luteus.biz/Download/LoriotPro_Doc/LUA/LUA_For_Windows/lanes/comparison.html">comparison</a>
of options; somewhat dated, but covers how each one works and the
significant differences.</p>
<h3 id="templating">Templating</h3>
<ul>
<li><a href="http://olivinelabs.com/lustache/">lustache</a> - Mustache
template implementation.</li>
<li><a href="https://github.com/leafo/etlua">etlua</a> - Embedded Lua
templates, ERB-style.</li>
<li><a
href="https://github.com/bungle/lua-resty-template">lua-resty-template</a>
- Lua-oriented template engine for OpenResty, somewhat Jinja-like.</li>
</ul>
<h3 id="documentation">Documentation</h3>
<ul>
<li><a href="http://stevedonovan.github.io/ldoc/">LDoc</a> -
Documentation generator which modernizes and extends <a
href="http://keplerproject.github.io/luadoc/">LuaDoc</a>.</li>
<li><a href="http://rgieseke.github.io/locco/">Locco</a> - Lua port of
<a href="http://ashkenas.com/docco/">Docco</a>, the “quick-and-dirty,
hundred-line-long, literate-programming-style documentation
generator”.</li>
<li><a href="https://github.com/bjornbytes/docroc">docroc</a> - Parse
comments into a Lua table to generate documentation.</li>
</ul>
<h3 id="object-oriented-programming">Object-oriented Programming</h3>
<ul>
<li><a href="https://github.com/Yonaba/30log">30log</a> - Minimalist OOP
library with basic classes, inheritance, and mixins in 30 lines.</li>
<li><a href="https://github.com/kikito/middleclass">middleclass</a> -
Simple but robust OOP library with inheritance, methods, metamethods,
class variables and mixins.</li>
</ul>
<h3 id="file-system-and-os">File system and OS</h3>
<ul>
<li><a
href="http://keplerproject.github.io/luafilesystem/">LuaFileSystem</a> -
Extends and complements Luas built-in set of file system
functions.</li>
<li><a href="https://github.com/luaposix/luaposix">luaposix</a> -
Bindings for POSIX APIs, including curses.</li>
<li><a
href="http://25thandclement.com/~william/projects/lunix.html">lunix</a>
- Bindings to common Unix system APIs, striving for thread-safety.</li>
<li><a href="https://github.com/moteus/lua-path">lua-path</a> - File
system path manipulation library.</li>
</ul>
<h3 id="time-and-date">Time and Date</h3>
<ul>
<li><a href="https://github.com/Tieske/date">LuaDate</a> - Date and time
module with parsing, formatting, addition/subtraction, localization, and
ISO 8601 support.</li>
<li><a href="https://github.com/kikito/cron.lua">cron.lua</a> -
Time-related functions for Lua, inspired by JavaScripts setTimeout and
setInterval.</li>
<li><a href="https://github.com/daurnimator/luatz">luatx</a> - Time,
date, and timezone library.</li>
</ul>
<h3 id="image-manipulation">Image Manipulation</h3>
<ul>
<li><a href="https://github.com/leafo/magick">magick</a> - Lua bindings
to ImageMagick for LuaJIT using FFI.</li>
</ul>
<h3 id="digital-signal-processing">Digital Signal Processing</h3>
<ul>
<li><a href="https://github.com/h4rm/luafft">LuaFFT</a> - An easy to use
Fast Fourier Transformation package in pure Lua.</li>
<li><a href="http://worp.zevv.nl/about.html">Worp</a> - Sound/music/DSP
engine written for LuaJIT.</li>
</ul>
<h3 id="hardware-and-embedded-systems">Hardware and Embedded
Systems</h3>
<ul>
<li><a href="http://www.eluaproject.net/">eLua</a> - Lua, extended with
optimizations and specific features for efficient and portable embedded
software development.</li>
</ul>
<h3 id="math-and-scientific-computing">Math and Scientific
Computing</h3>
<ul>
<li><a href="http://scilua.org/">SciLua</a> - Numerical/scientific
computing framework built on LuaJIT, with an interface to R.</li>
<li><a href="http://torch.ch/">Torch7</a> - Scientific computing
framework with wide support for machine learning algorithms, used by
Facebook, Google, and more.</li>
<li><a href="http://webserver2.tecgraf.puc-rio.br/~lhf/ftp/lua/">lhfs
Lua Tools</a> - Assorted libraries and tools, many math- or
data-related.</li>
</ul>
<h3 id="parsing-and-serialization">Parsing and Serialization</h3>
<ul>
<li>JSON
<ul>
<li><a href="https://github.com/mpx/lua-cjson/">lua-cjson</a> - Blazing
fast JSON encoding/decoding implemented in C and exposed to Lua.</li>
<li><a href="https://github.com/harningt/luajson">luajson</a> - JSON
encoder/decoder implemented in Lua on top of LPeg.</li>
<li><a href="http://dkolf.de/src/dkjson-lua.fsl/home">dkjson</a> - JSON
encoder/decoder implemented in pure Lua.</li>
<li><a href="https://github.com/rxi/json.lua">json.lua</a> - A fast and
tiny JSON library in pure Lua.</li>
</ul></li>
<li>XML
<ul>
<li><a href="https://matthewwild.co.uk/projects/luaexpat/">LuaExpat</a>
- SAX XML parser via binding to the Expat library.</li>
<li><a href="https://github.com/Phrogz/SLAXML">SLAXML</a> - Pure Lua
SAX-like streaming XML parser.</li>
</ul></li>
<li>MessagePack
<ul>
<li><a
href="https://github.com/fperrad/lua-MessagePack">lua-MessagePack</a> -
Pure Lua implementation of MessagePack.</li>
<li><a href="https://github.com/antirez/lua-cmsgpack">lua-cmsgpack</a> -
A MessagePack C implementation with Lua bindings, as used by
Redis.=</li>
</ul></li>
<li>LPeg
<ul>
<li><a href="http://www.inf.puc-rio.br/~roberto/lpeg/">LPeg</a> - A
pattern-matching library for Lua, based on Parsing Expression
Grammars.</li>
<li><a
href="https://github.com/daurnimator/lpeg_patterns">lpeg_patterns</a> -
A collection of LPeg patterns.</li>
<li><a href="https://github.com/pygy/LuLPeg">LuLPeg</a> - A pure Lua
implementation of LPeg v0.12.</li>
<li><a href="https://github.com/sacek/LPegLJ">LPegLJ</a> - A pure LuaJIT
implementation of LPeg v1.0.</li>
<li><a href="https://github.com/sqmedeiros/lpeglabel">LPegLabel</a> - An
extension of LPeg adding support for labeled failures.</li>
</ul></li>
<li><a href="https://github.com/gvvaughan/lyaml">lyaml</a> - YAML
encoding/decoding via binding to LibYAML.</li>
<li><a href="https://github.com/jgm/lunamark">lunamark</a> - Converts
Markdown to other textual formats including HTML and LaTeX. Uses LPeg
for fast parsing.</li>
<li><a href="https://github.com/xolox/lua-lxsh">LXSH</a> - A collection
of lexers and syntax highlighters written with LPeg.</li>
<li><a href="https://github.com/Neopallium/lua-pb">lua-pb</a> - Protocol
Buffers implementation.</li>
</ul>
<h3 id="humanize">Humanize</h3>
<ul>
<li><a href="https://github.com/kikito/i18n.lua">i18n.lua</a> -
Internationalization library with locales, formatting, and
pluralization.</li>
<li><a href="https://github.com/kikito/inspect.lua">inspect.lua</a> -
Human-readable representation of Lua tables.</li>
<li><a href="https://github.com/pkulchenko/serpent">serpent</a> -
Serializer and pretty printer.</li>
<li><a href="https://github.com/gvx/Ser">Ser</a> - Dead simple
serializer with good performance.</li>
<li><a href="https://github.com/Olivine-Labs/say">say</a> - Simple
string key-value store for i18n.</li>
</ul>
<h3 id="compression">Compression</h3>
<ul>
<li><a href="https://github.com/brimworks/lua-zlib">lua-zlib</a> -
Simple streaming interface to zlib for gzip/gunzip.</li>
<li><a href="https://github.com/brimworks/lua-zip">lua-zip</a> - Lua
binding to libzip. Reads and writes zip files.</li>
</ul>
<h3 id="cryptography">Cryptography</h3>
<ul>
<li><a href="https://github.com/mkottman/luacrypto">LuaCrypto</a> - Lua
bindings to OpenSSL.</li>
<li><a href="https://github.com/somesocks/lua-lockbox">lua-lockbox</a> -
A collection of cryptographic primitives written in pure Lua.</li>
<li><a href="https://github.com/philanc/luatweetnacl">luatweetnacl</a> -
Bindings to tweetnacl, modern high-security cryptographic library.</li>
<li><a href="https://github.com/wahern/luaossl">luaossl</a> - “Most
comprehensive OpenSSL module in the Lua universe” - used by lapis, kong,
and lua-http.</li>
</ul>
<h3 id="network">Network</h3>
<ul>
<li><a href="https://github.com/diegonehab/luasocket">LuaSocket</a> -
Networking extension which provides a socket API for TCP and UDP, and
implements HTTP, FTP, and SMTP.</li>
<li><a href="https://github.com/lipp/lua-websockets">lua-websockets</a>
- WebSocket client and server modules. Webserver-agnostic, implemented
in Lua on top of LuaSocket.</li>
<li><a href="https://github.com/Lua-cURL/Lua-cURLv3">lua-cURLv3</a> -
Lua binding to libcurl.</li>
<li><a href="https://github.com/daurnimator/lua-http">lua-http</a> -
Asynchronous HTTP and WebSocket library with client and server APIs,
TLS, and HTTP/2; based on cqueues.</li>
</ul>
<h3 id="data-stores">Data Stores</h3>
<ul>
<li><a href="http://keplerproject.github.io/luasql/">LuaSQL</a> - Simple
interface for connecting to ODBC, ADO, Oracle, MySQL, SQLite and
PostgreSQL.</li>
<li><a href="https://github.com/leafo/pgmoon">pgmoon</a> - Lua
PostgreSQL driver for OpenResty, LuaSocket, and cqueues.</li>
<li><a
href="https://github.com/openresty/lua-resty-mysql">lua-resty-mysql</a>
- Lua MySQL driver for OpenResty.</li>
<li><a
href="https://github.com/jbochi/lua-resty-cassandra">lua-resty-cassandra</a>
- Lua Cassandra client driver for OpenResty and others.</li>
<li>Redis
<ul>
<li><a href="https://github.com/nrk/redis-lua">redis-lua</a> - Pure Lua
client library for Redis.</li>
<li><a
href="https://github.com/openresty/lua-resty-redis">lua-resty-redis</a>
- Lua Redis client driver for OpenResty.</li>
<li><a href="https://github.com/daurnimator/lredis">lredis</a> -
Asynchronous Redis client with pipelining and Pub/Sub support; based on
cqueues.</li>
</ul></li>
</ul>
<h3 id="message-brokers">Message Brokers</h3>
<ul>
<li><a href="https://github.com/Neopallium/lua-zmq">lua-zmq</a> - Lua
bindings to ZeroMQ.</li>
<li><a href="https://github.com/zeromq/lzmq">lzmq</a> - A newer Lua
binding to ZeroMQ.</li>
<li><a
href="https://github.com/doujiang24/lua-resty-kafka">lua-resty-kafka</a>
- Kafka client driver based on OpenResty cosockets.</li>
<li><a
href="https://github.com/wingify/lua-resty-rabbitmqstomp">lua-resty-rabbitmqstomp</a>
- RabbitMQ client library based on OpenResty cosockets.</li>
</ul>
<h3 id="testing">Testing</h3>
<ul>
<li><a href="http://olivinelabs.com/busted/">busted</a> - BDD-style unit
testing framework with great docs and Moonscript support.</li>
<li><a href="https://github.com/norman/telescope">telescope</a> -
Flexible and highly customizable testing library.</li>
<li><a href="https://github.com/Olivine-Labs/luassert">luassert</a> -
Assertion library extending Luas built-in assertions.</li>
<li><a href="https://github.com/bjornbytes/lust">lust</a> - Minimal test
framework.</li>
</ul>
<h3 id="foreign-function-interfaces">Foreign Function Interfaces</h3>
<ul>
<li><a href="http://luajit.org/ext_ffi.html">LuaJIT FFI</a> - LuaJITs
mechanism for calling external C functions and using C data structures
from pure Lua code.</li>
<li><a href="https://github.com/jmckaskill/luaffi">luaffi</a> -
Standalone FFI library, compatible with the LuaJIT FFI interface.</li>
</ul>
<h3 id="analysis-tools-and-asts">Analysis Tools and ASTs</h3>
<ul>
<li><a href="https://github.com/sztupy/luadec51">luadec51</a> - Lua
Decompiler for Lua version 5.1.</li>
<li><a href="http://keplerproject.github.io/luacov/">luacov</a> - Simple
coverage analyzer, used by busted and telescope for checking test
coverage.
<ul>
<li><a
href="https://github.com/moteus/luacov-coveralls">luacov-coveralls</a> -
LuaCov reporter for coveralls.io.</li>
</ul></li>
<li><a href="https://github.com/mpeterv/luacheck">luacheck</a> - Simple
static analyzer which detects accidental globals and undefined or
shadowed locals.</li>
<li><a href="https://github.com/fab13n/metalua">Metalua</a> - Pure Lua
parser and compiler, used for generating ASTs. A number of other tools
make use of the Metalua parser in this way.</li>
<li><a href="https://github.com/davidm/lua-inspect">LuaInspect</a> -
Luas most powerful code analysis and linting tool, built on Metalua.
Used by ZeroBraneStudio, among others.</li>
<li><a href="https://github.com/stravant/LuaMinify">LuaMinify</a> -
Minifier which also brings its own static analysis tools, lexer, and
parser.</li>
<li><a href="https://github.com/andremm/typedlua">Typed Lua</a> - A
typed superset of Lua that compiles to plain Lua.</li>
<li><a href="https://github.com/andremm/lua-parser">lua-parser</a> - A
Lua 5.3 parser written using LPegLabel, with improved error
messages.</li>
</ul>
<h3 id="experimental-etc">Experimental, etc</h3>
<ul>
<li><a
href="https://github.com/TannerRogalsky/punchdrunk">punchdrunk.js</a> -
Moonshine + LÖVE API reimplementation = run LÖVE games in the
browser.</li>
<li><a href="https://github.com/luvit/luvit">luvit</a> - Node.jss
underlying architecture (libUV) with Lua on top instead of
JavaScript.</li>
<li><a href="https://github.com/bjornbytes/graphql-lua">graphql-lua</a>
- Lua implementation of <a href="http://graphql.org/">GraphQL</a>.</li>
</ul>
<h3 id="scriptable-by-lua">Scriptable by Lua</h3>
<ul>
<li><a href="https://luakit.github.io/luakit/">luakit</a> - Fast, small,
webkit based browser framework extensible by Lua.</li>
<li><a href="http://www.hammerspoon.org">Hammerspoon</a> - A powerful,
extensible OS X automation tool. A community-maintained fork of <a
href="http://www.mjolnir.io/">Mjolnir</a>.</li>
<li><a href="https://github.com/skx/kpie">kpie</a> - A scripting utility
to juggle windows.</li>
<li><a href="https://lumail.org/">lumail</a> - A console-based mail
client, with extensive scripting capabilities.</li>
<li><a href="https://awesomewm.org/">AwesomeWM</a> - A highly
configurable and extensible window manager for X, scripted and
configured by Lua.</li>
<li><a href="https://foicica.com/textadept/">Textadept</a> - Extremely
lightweight, customizable, cross-platform editor, written (mostly) in
(and scripted by) Lua.</li>
<li><a href="https://github.com/koreader/koreader">KoReader</a> - An
ebook reader application supports PDF, DJVU, EPUB, FB2 and much more,
running on Kindle, Kobo, PocketBook and Android devices.</li>
</ul>
<h3 id="miscellaneous">Miscellaneous</h3>
<ul>
<li><a href="http://moonscript.org/">MoonScript</a> - Moonscript is a
dynamic scripting language that compiles to Lua. It reduces verbosity
and provides a rich set of features like comprehensions and classes. Its
author calls it CoffeeScript for Lua.</li>
<li><a href="http://leafo.net/sitegen/">sitegen</a> - A static site
generator which uses MoonScript and supports HTML and Markdown, page
grouping, and plugins.</li>
</ul>
<h2 id="resources-1">Resources</h2>
<h3 id="community">Community</h3>
<ul>
<li><a href="http://www.lua.org/lua-l.html">lua-l</a> - The official Lua
mailing list, and one of the focal points of the Lua community.</li>
<li><a href="http://lua.space/">Lua.Space</a> - The Lua community
blog.</li>
<li><a href="https://github.com/lua-users-foundation">Lua Users
Foundation</a> - An association of individuals with the mission of
supporting and promoting Lua and its community and ecosystems.</li>
<li><a href="http://lua-users.org/">lua-users.org</a> - A site for and
by users of Lua, featuring an IRC channel, a web archive of lua-l, and a
large wiki.</li>
<li>Conferences/Meetups
<ul>
<li><a href="https://www.lua.org/community.html#workshop">Lua
Workshop</a> - Annual 2-day meeting of the Lua community, in rotating
locations.</li>
<li><a href="http://luaconf.com/">Lua Conf</a> - Annual 1-day Lua
conference in Brazil.</li>
<li><a href="https://fosdem.org/">FOSDEM</a> - Annual 2-day gathering of
F/OSS developers in Brussels which sometimes has a “Lua devroom”.</li>
</ul></li>
</ul>
<h3 id="references">References</h3>
<ul>
<li><a href="http://www.lua.org/manual/5.3/">Reference Manual</a> - The
official definition of the Lua language.</li>
<li><a href="http://lua-users.org/wiki/">lua-users wiki</a> - A large
community-maintained collection of Lua information and resources,
supplementing the official website.</li>
<li><a href="http://www.luafaq.org/">Lua Unofficial FAQ</a> - Answers
all sorts of Lua-related questions, including many of the form How to
___?.</li>
</ul>
<h3 id="glossaries">Glossaries</h3>
<ul>
<li><a
href="https://rawgit.com/dlaurie/lua-notes/master/glossary.html">Lua 5.3
Glossary</a> - A glossary of some essential Lua terms.</li>
</ul>
<h3 id="style-guides">Style Guides</h3>
<ul>
<li><a href="http://lua-users.org/wiki/LuaStyleGuide">Lua-users style
guide</a> - A general, high-level style guide; unopinionated, easily
agreed on.</li>
<li><a href="https://github.com/Olivine-Labs/lua-style-guide">Olivine
style guide</a> - A more opinionated and specific, and therefore more
rigorous, guide.</li>
</ul>
<h3 id="tutorials">Tutorials</h3>
<ul>
<li><a
href="http://www.coppeliarobotics.com/helpFiles/en/luaCrashCourse.htm">Lua
Crash Course</a> - Short crash course readover, or reference for when
you forget the basics.</li>
<li><a href="http://tylerneylon.com/a/learn-lua/">Learn Lua in 15
Minutes</a> - A well-commented example file which covers the
basics.</li>
<li><a href="http://phrogz.net/lua/LearningLua_FromJS.html">Learning Lua
from JS</a> - An overview of the similarities and differences between
Lua and JS; a great start for JavaScript folks looking to pick up
Lua.</li>
<li><a href="http://lua-users.org/wiki/LuaTutorial">lua-users
tutorial</a> - In-depth collection of tutorials aimed at newcomers.</li>
<li><a href="https://github.com/kikito/lua_missions">Lua Missions</a> -
A series of Missions to work through which are designed to teach
aspects of Lua along the way.</li>
<li><a
href="http://leafo.net/posts/creating_an_image_server.html">Creating an
Image Server</a> - Walks through setting up and using OpenResty to build
a simple image processing server; a great starting point for playing
with OpenResty.</li>
</ul>
<h3 id="articles">Articles</h3>
<ul>
<li><a
href="https://debian-administration.org/article/264/Embedding_a_scripting_language_inside_your_C/C_code">Embedding
Lua in C</a> - An introductory walkthrough of embedding Lua in a C
program. A bit dated, but still a great walkthrough.</li>
<li><a
href="http://notebook.kulchenko.com/programming/lua-good-different-bad-and-ugly-parts">Lua:
Good, bad, and ugly parts</a> - A thorough summary of the good,
different, bad, and ugly aspects of Lua, including many subtle quirks,
by the author of ZeroBraneStudio.</li>
<li><a href="http://www.thijsschreijer.nl/blog/?p=693">Lua states,
libraries, coroutines and memory</a> - Diagrams and explains some more
advanced concepts of the Lua VM, particularly when interfacing with
C.</li>
</ul>
<h3 id="talks-slides">Talks &amp; Slides</h3>
<ul>
<li><a
href="http://www.inf.puc-rio.br/~roberto/talks/index.html">Robertos
Talks</a> - History of talks given by Luas chief architect, with slides
for each.</li>
<li><a href="http://www.lua.org/wshop14.html#abstracts">Lua Workshop
Talks</a> - High-quality talks are given at each ~annual Lua Workshop,
and a history of them is online, slides included.</li>
</ul>
<h3 id="books">Books</h3>
<ul>
<li><a href="http://www.lua.org/pil/">Programming in Lua</a> - The
authoritative intro to all aspects of Lua programming, written by Luas
chief architect. Three editions released; first edition available
online.</li>
<li><a href="https://foicica.com/lua/">Lua Quick Reference</a> - A quick
reference on how to program in and embed Lua 5.1 through 5.3, by the
creator of Textadept.</li>
<li><a href="http://www.lua.org/gems/">Programming Gems</a> - A
collection of articles covering existing wisdom and practices on
programming well in Lua, in a broad variety of use cases.</li>
<li><a href="https://en.wikibooks.org/wiki/Lua_Programming">Lua
Programming</a> - A shorter overview of the language, up to date for Lua
5.2, and available online.</li>
</ul>
<h3 id="other-lists">Other Lists</h3>
<ul>
<li><a href="https://github.com/bungle/awesome-resty">awesome-resty</a>
- A list like this one, but focused on OpenResty.</li>
<li><a
href="https://github.com/love2d-community/awesome-love2d">awesome-love2d</a>
- A list like this one, but focused on game dev and the LÖVE
platform.</li>
<li><a
href="https://sites.google.com/site/marbux/home/where-lua-is-used">Where
Lua is Used</a> - A comprehensive list of stand-alone programs written
in or extensible using Lua.</li>
</ul>
<h2 id="contribute">Contribute</h2>
<p>Contributions welcome and wanted! Read the <a
href="contributing.md">contribution guidelines</a> first.</p>
<h2 id="license">License</h2>
<p><a href="https://creativecommons.org/publicdomain/zero/1.0/"><img
src="https://licensebuttons.net/p/zero/1.0/88x31.png"
alt="CC0" /></a></p>
<p>To the extent possible under law, Lewis Ellis has waived all
copyright and related or neighboring rights to this work.</p>
<p><a href="https://github.com/LewisJEllis/awesome-lua">lua.md
Github</a></p>