Lua Libraries

6 September 2019 Link



Here are some Lua libraries that I have used or find interesting and consider using

Setup

  1. LuaRocks! - Package management system for Lua

Programming

  1. Dub C++ binding generator - To generate C++ files to bind to C++ libraries
  2. Lua Minifier - To minify code, which sort of obfuscates the code.
  3. lua-minify - Lua Minifier written in Lua
  4. Squish - Also packs multiple files into a single file.

Compression

  1. LibDeflate - Pure Lua Compression and Decompression. Quite large program compared to Lualzw
  2. Lua-Compress-DeflateLua - Pure Lua Compression and Decompression but looks complicated to use. Not updated for a long time.
  3. Lualzw - Single small Lua file for compression and decompression. Did not have as good compression as LibDeflate but was 2 times as fast exactly. In 1 try it compressed to 34.6% of original size for a word doc while Libdeflate did 20.9% of original size.

Automation

  1. lua-instrument - Library to control lab equipment through VISA library
  2. LuaInput - Library to record and simulate keyboard and mouse activity. Only windows supported currently.

Embedded Systems

  1. lua BrickPi - Binding to BrickPi to interface Raspberry Pi to Lego NXT

Graphical Toolkits

  1. wxLua - interface to the wxWidgets cross platform library for GUI programming
  2. iuplua - compact GUI toolkit with the basic tools needed to make any complex UI. It is cross platform and easy to use.

Networking

  1. luasockets - Library for socket programming in lua
  2. luaCURL - CURL interface on Lua
  3. LuaSec - OpenSSL bindings to work with LuaSocket to create https and secure connections
  4. lua-aws - Lua AWS REST API binding

Database

  1. lua-sophia - Embeddable Key-Value database
  2. luaSQL - Library to interface SQL databases like MySQL, PostgreSQL, SQLite
  3. tableDB - A module to abstract sqlite tables to lua tables. No interaction with SQL needed at all so can be plugged into existing Lua code which use and store lua tables.
  4. Tarantool - RAM based database with persistence. But windows support is not there. It is not embeddable also.

Files

  1. LXML - Module written in Lua to parse or write XML files

Handy Modules

  1. LuaTerminal - Module to add a Lua terminal to any IUP based application
  2. LuaTerminalRemote - Module to provide a simplified interface to connect to a remote instance of LuaTerminal.

Multitasking

  1. LuaStepper - Can create several lua states from Lua and step through their execution and pause them.
  2. llthreads - Multithreading library for Lua. Similar to Lanes but doesn't provide any means of communicating data directly with the thread while it is running. The thread is totally isolated though and data passing at start of thread is controlled
  3. LuaLanes - Creates a Lua State in separate OS threads. The thread is created from a function and upvalues are also transferred so data isolating needs some careful handling.
  4. luarings - Create slave lua states from within Lua code and communicate with them.

Low Level Programming

  1. Terra Language - Compiled low level language built to interface directly with Lua.
  2. Lua FFI - Foreign Function Interface libraries for Lua

Math

  1. LuaMath - Doing math with Lua
  2. lua-complex - Pure Lua library written to add complex number handling capability to lua
  3. lua-plot - Lua module to add plotting capabilities to lua

Utilities

  1. Many2One - If you have written software in lua split into multiple files requiring different modules you would have definitely encountered a problem of distribution of your code as a single Lua file. This simple utility combines all lua code files into 1 for easy distribution.
  2. tableUtils - Useful utilities for tables. Convert tables to string and back and some more utilities.