Lua is an [[MIT License]] licensed programming language written in [[3. Reference/Software/Programming Languages/C|C]]. - [Website](https://www.lua.org) - [Source](https://www.lua.org/source/) (official site, browseable and with a download, no repo) - [Source](https://github.com/lua/lua) (GitHub mirror, updated irregularly) - [Documentation](https://www.lua.org/docs.html) - [Wikipedia](https://en.wikipedia.org/wiki/Lua_(programming_language)) > QUOTE # Notability # Philosophy Despite its license, Lua is more "source-available" than open source. The core team only reluctantly interacts with the outside world and the only way to submit patches is via the mailing list (as of [[2023-12-14]])! The official source code repo is private. Their private repo is irregularly mirrored to GitHub and the Lua official website. # OS Support # Features - Tables - 1-indexing - Embeddable # Examples ```lua a = { 1, 2, 3, 4 } #a == 4 -- length operator a[#a] == 4 ``` # Tips # Resources ```cardlink url: https://devhints.io/lua title: "Lua cheatsheet" description: "The one-page guide to Lua: usage, examples, links, snippets, and more." host: devhints.io image: https://assets.devhints.io/previews/lua.jpg ``` ## Libraries ### File System ```cardlink url: https://github.com/lunarmodules/luafilesystem title: "GitHub - lunarmodules/luafilesystem: LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution." description: "LuaFileSystem is a Lua library developed to complement the set of functions related to file systems offered by the standard Lua distribution. - lunarmodules/luafilesystem" host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/71f2dc86fb5432bd03c3a1ca3a19f307407dfa73393f912f5c24eecf765df307/lunarmodules/luafilesystem ``` ### Shell ```cardlink url: https://git.sr.ht/~mna/luashell title: "~mna/luashell - sourcehut git" description: "A small Lua module to help write what would be shell scripts in Lua." host: git.sr.ht favicon: https://git.sr.ht/static/logo.svg ``` ```cardlink url: https://github.com/zserge/luash title: "GitHub - zserge/luash: Tiny lua module to write shell scripts with lua (inspired by Python's sh module)" description: "Tiny lua module to write shell scripts with lua (inspired by Python's sh module) - zserge/luash" host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/139d24cf5a066f57754043b43cf8e0288ce6809c6de63ba5fd486f9966dbbdc4/zserge/luash ``` ```cardlink url: https://github.com/parke/lush title: "GitHub - parke/lush: Experimental Lua module for writing POSIX shell script style programs in Lua." description: "Experimental Lua module for writing POSIX shell script style programs in Lua. - parke/lush" host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/34c1a8de7fc3d01432726effcf0ecdc7aa8cfb0a055022accf3d93846faf18ca/parke/lush ``` ## Generic Libraries with a lot of general helpful functions. ```cardlink url: https://github.com/lunarmodules/Penlight title: "GitHub - lunarmodules/Penlight: A set of pure Lua libraries focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions,etc), and OS path management. Much of the functionality is inspired by the Python standard libraries." description: "A set of pure Lua libraries focusing on input data handling (such as reading configuration files), functional programming (such as map, reduce, placeholder expressions,etc), and OS path management...." host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/60a0aab2d3cf5975cfe6238eb3da5351a2a7f9128d7e05563e1a748edf9b80dc/lunarmodules/Penlight ``` ## Debugging and Analysis Inspect supports metatables and outputs structured, human readable text. ```cardlink url: https://github.com/kikito/inspect.lua title: "GitHub - kikito/inspect.lua: Human-readable representation of Lua tables" description: "Human-readable representation of Lua tables. Contribute to kikito/inspect.lua development by creating an account on GitHub." host: github.com favicon: https://github.githubassets.com/favicons/favicon.svg image: https://opengraph.githubassets.com/0f840b5a925d2302e1aa87bff4c4a54e03e97f26bd1cbfbf989a6ec90427c12c/kikito/inspect.lua ``` - https://stackoverflow.com/questions/9168058/how-to-dump-a-table-to-console - https://github.com/pkulchenko/serpent # References