Lua
Awesome Lua ¶
> 精选的优质 Lua 列表 packages 和 resources.
受列表启发 awesome, awesome-awesomeness, 和 awesome-nodejs.
Packages¶
Resources¶
Implementations, Interpreters, and Bindings¶
- Lua - Lua 的原始 ANSI C 解释器.
- Lua Repo - Lua 团队看到的官方 Lua 回购镜像到 GitHub.
- LuaJIT - 用于 Lua 的高性能即时编译器.
- LLVM-Lua - 将 Lua 编译为 LLVM.
- lua.vm.js - 网络上的 Lua 虚拟机; 通过 LLVM、emscripten 和 asm.js 的 C 解释器的直接端口.
- Moonshine - 用 JavaScript 实现的 Lua 虚拟机. 比 lua.vm.js 慢,但有更好的文档、示例和 JS 接口.
- Fengari - 用 Javascript 重写的 Lua VM,具有无缝的 JS 和 DOM 互操作性.
- MoonSharp - A Lua interpreter written entirely in C# for the .NET, Mono and Unity platforms.
- UniLua - A pure C# implementation of Lua 5.2, focused on compatibility with the Unity game engine.
- lupa - Python 绑定到 LuaJIT2.
- golua - Golang 绑定到 Lua C API.
- GopherLua - 使用 Go API 在 Go 中实现的 Lua 5.1 VM 和编译器.
- LuaBridge - 用于在 C++ 和 Lua 之间来回映射数据、函数和类的轻量级库.
注意:从 LuaJIT 到 Lua,再到 lua.vm.js 再到 Moonshine,一个基本的基准测试表明,每跳一次,性能大约下降 6 倍.
Package Managers¶
- LuaRocks - 用于将 Lua 模块安装为名为“rocks”的包的实际工具,以及公共 rock 存储库和网站. 很像 npm 或 pip.
Build Tools and Standalone Makers¶
- Lake - 一个用 Lua 编写的构建引擎,类似于 Ruby 的 rake.
- Luabuild - 高度可定制的 Lua 5.2 构建系统.
- luastatic - 将 Lua 程序转换为独立可执行文件的简单工具.
- omnia - 内置电池的独立可执行文件创建器,构建于 luastatic 之上.
Debugging and Profiling¶
- ProFi - 与 LuaJIT 一起使用并生成报告文件的简单分析器.
- luatrace - 用于跟踪/分析/剖析脚本执行和生成详细报告的工具集.
- StackTracePlus - 直接升级到 Lua 的堆栈跟踪,添加本地上下文并提高可读性.
- MobDebug - 具有断点和堆栈检查功能的强大远程调试器. 由 ZeroBraneStudio 使用.
- lovebird - 基于浏览器的调试控制台. 最初是为 LÖVE 制作的,但适用于任何支持 LuaSocket 的项目.
IDEs and Plugins¶
- Lua Development Tools - 提供代码完成、调试等功能的 Eclipse 插件. 建立在 Metalua 之上.
- Lua for IDEA - IntelliJ IDEA 插件,除其他功能外,还提供代码完成、智能突出显示和实验调试.
- ZeroBraneStudio - 轻量级、可定制、跨平台的 Lua 专用 IDE,具有代码完成和分析功能,用 Lua 编写. 为众多 Lua 引擎提供广泛的调试支持.
- BabeLua - VS2012-13 的 Lua 编辑器/调试器扩展,具有突出显示、自动完成、linting 和格式化功能.
- lua-mode - 用于编辑 Lua 的 Emacs 主要模式.
- vscode-lua - VSCode 智能感知和 linting.
Utility Belts¶
- Lua Fun - 专为 LuaJIT 设计的高性能函数式编程库.
- Moses - 受 Underscore.js 启发的函数式编程实用工具带.
- Penlight - 广泛、重量级的实用程序库,灵感来自 Python 的标准库. 提供 Lua 没有的电池.
- lua-stdlib - 中量级标准库扩展; 添加一些有用的数据结构、实用函数和基本功能的东西.
- Microlight - 一个有用的 Lua 函数库; Penlight 的“超轻”版本.
- compat53 - 为 Lua 5.2 和 5.1 提供 Lua-5.3 风格 API 的兼容性模块.
- RxLua - 响应式扩展、Observables 等
Game Engines¶
- LÖVE 2D - 桌面游戏开发平台. 跨平台,功能齐全,被广泛采用.
- Corona SDK - 适用于 iOS 和 Android 的开发平台. 专有,但被众多顶级游戏和应用程序使用,总下载量超过 1.5 亿次.
- MOAI - 开源、跨平台、手机游戏开发框架. 由 Lua 脚本支持的极简 C++ 引擎.
- Drystal - 开源,游戏可以在 Linux 或任何具有最新网络浏览器的平台上运行.
- Amulet - 适用于小型游戏和实验的开源、音频/视频工具包. 它可以在 Windows、Mac、Linux、HTML5 和 iOS 上运行.
- LÖVR - 用于创建虚拟现实体验的 3D 框架,灵感来自 LÖVE 2D.
Game Development¶
- 电晕
- Coronium - 支持分析、数据对象、用户管理等的简单云平台.
- 狮子
- awesome-love2d - 像这样的列表,但侧重于游戏开发和 LÖVE 平台.
- lurker - 通过在运行的 LÖVE 项目中自动交换更改的 Lua 文件来缩短迭代周期.
- HUMP - 一组 LÖVE 的轻量级助手; 面向游戏的实用腰带.
- 美丽
- moaifiddle - 编辑和分享 MOAI 游戏引擎的短脚本,并使用 WebGL 在浏览器中运行它们.
- Jumper - 用于基于网格的游戏的快速、轻量级且易于使用的寻路库.
- lume - 面向游戏开发的实用腰带库.
- NoobHub - Corona、LÖVE 等网络多人游戏,遵循简单的发布-订阅模型.
- 碰撞检测
- bump.lua - 最小的基于矩形的碰撞检测,处理隧道和基本的碰撞解决.
- HardonCollider - 检测任意类型的任意位置和旋转形状之间的碰撞.
- 补间
- flux - 一个快速、轻量级的 Lua 补间库,具有缓动功能和将补间组合在一起的能力.
- tween.lua - 用于补间的小型库,具有多种缓动功能.
- 例子
- termtris - 俄罗斯方块克隆,以文学风格编写,“强调从能力中学习”.
- PacPac - 用 LÖVE 制作的吃豆人克隆版.
- Mari0 - Mario 和 Portal 的融合,由 LÖVE 制作. 另见其 wikipedia entry.
- Journey to the Center of Hawkthorne - 基于社区的 2D 平台游戏 Digital Estate Planning 剧集,由 LÖVE 制作.
Logging¶
- lua-log - 异步日志库,带有用于文件系统、网络、ZeroMQ 等的可插入编写器.
- LuaLogging - 支持各种附加程序的受 Log4j 启发的日志记录库.
- luasyslog - 记录到系统日志,基于 LuaLogging.
Web/Networking Platforms¶
- OpenResty - 通过使用 Lua 扩展 Nginx 创建的快速且可扩展的 Web 应用程序平台. Cloudflare、淘宝、腾讯等广泛使用的当今事实上的 Lua 网络平台.
- turbo - 受 Tornado 启发的事件驱动、非阻塞、基于 LuaJIT 的网络套件和框架.
- Kepler Project - 使用一组通用标准和组件的面向 Web 的项目的集合.
- Pegasus.lua - Pegasus.lua 是一个 http 服务器,用于处理用 Lua 语言编写的 Web 应用程序.
OpenResty¶
- awesome-resty - 像这样的列表,但专注于 OpenResty.
- 核心平台
- ngx_lua - OpenResty 的核心部分. 在 Nginx 中嵌入 Lua,并公开了用于非阻塞套接字的 cosocket API(与 LuaSocket 的 API 兼容).
- OpenResty GitHub Organization - ngx_lua、ngx_openresty 和许多相关模块的存储库主页.
- 第三方模块
- lua-resty-http - Lua HTTP 客户端驱动程序,基于 cosocket API 构建.
- 框架和工具
- Lapis - Lua 和 OpenResty 的全栈框架. 就像 Django 或 Lua 的 Rails. 支持月亮脚本.
- ledge - Lua 模块提供可编写脚本的、符合 RFC 标准的 HTTP 缓存功能.
- Sailor — 与 OpenResty、Apache 和其他网络服务器兼容的 MVC 网络框架.
- Kong - 微服务和 API 管理层.
在这个页面中搜索“OpenResty”以在其他类别(尤其是数据存储)下找到相关包.
Command-line Utilities¶
- ansicolors - Simple function for printing to the console in color.
- cliargs - 一个简单的命令行参数解析模块.
- lua-term - 终端操作和操纵.
- argparse - 受 argparse for Python 启发的功能丰富的命令行解析器.
Concurrency and Multithreading¶
- 基于协程的多任务处理:
- Lumen - 简单的并发任务调度.
- ConcurrentLua - 实现 Erlang 风格的消息传递并发模型.
- cqueues - 用于基于协程事件循环管理套接字、信号和线程的库.
- 多线程:
- llthreads - 低级 pthreads 和 WIN32 线程的简单包装器.
- llthreads2 - 更新的 llthreads 重写.
- lanes - 实现消息传递模型的库,每个 Lua 线程有一个 OS 线程.
- luaproc - 消息传递模型,允许每个操作系统线程有多个线程,并且可以轻松地在网络中推广. 也可以看看 the paper 它起源于哪里.
有关差异的更多信息(特别是 lanes
和 luaproc
之间的差异),请参阅此 comparison 选项; 有些过时,但涵盖了每一个的工作原理和显着差异.
Templating¶
- lustache - 小胡子模板实施.
- etlua - 嵌入式 Lua 模板,ERB 风格.
- lua-resty-template - 面向 Lua 的 OpenResty 模板引擎,有点像 Jinja.
Documentation¶
Object-oriented Programming¶
- 30log - 在 30 行中包含基本类、继承和混合的极简 OOP 库.
- middleclass - 简单但强大的 OOP 库,具有继承、方法、元方法、类变量和混合.
File system and OS¶
- LuaFileSystem - 扩展和补充了 Lua 的内置文件系统功能集.
- luaposix - POSIX API 的绑定,包括 curses.
- lunix - 绑定到常见的 Unix 系统 API,争取线程安全.
- lua-path - 文件系统路径操作库.
Time and Date¶
- LuaDate - 具有解析、格式化、加法/减法、本地化和 ISO 8601 支持的日期和时间模块.
- cron.lua - 受 JavaScript 的 setTimeout 和 setInterval 启发的 Lua 时间相关函数.
- luatx - 时间、日期和时区库.
Image Manipulation¶
- magick - Lua 绑定到 ImageMagick for LuaJIT 使用 FFI.
Digital Signal Processing¶
Hardware and Embedded Systems¶
- eLua - Lua,通过优化和特定功能进行扩展,以实现高效和可移植的嵌入式软件开发.
Math and Scientific Computing¶
- SciLua - 基于 LuaJIT 构建的数值/科学计算框架,具有与 R 的接口.
- Torch7 - 广泛支持机器学习算法的科学计算框架,被 Facebook、谷歌等使用.
- lhf's Lua Tools - 各种库和工具,许多与数学或数据相关.
Parsing and Serialization¶
- JSON
- lua-cjson - 在 C 中实现并暴露给 Lua 的超快 JSON 编码/解码.
- luajson - 在 LPeg 之上的 Lua 中实现的 JSON 编码器/解码器.
- dkjson - 在纯 Lua 中实现的 JSON 编码器/解码器.
- json.lua - 纯 Lua 中快速而小巧的 JSON 库.
- XML
- LuaExpat - 通过绑定到 Expat 库的 SAX XML 解析器.
- SLAXML - 纯 Lua SAX 类流式 XML 解析器.
- 消息包
- lua-MessagePack - MessagePack 的纯 Lua 实现.
- lua-cmsgpack - Redis 使用的带有 Lua 绑定的 MessagePack C 实现.=
- LPEG
- LPeg - 基于解析表达式语法的 Lua 模式匹配库.
- lpeg_patterns - LPeg 模式的集合.
- LuLPeg - A pure Lua implementation of LPeg v0.12.
- LPegLJ - LPeg v1.0 的纯 LuaJIT 实现.
- LPegLabel - LPeg 的扩展,增加了对标记故障的支持.
- lyaml - YAML encoding/decoding via binding to LibYAML.
- lunamark - 将 Markdown 转换为其他文本格式,包括 HTML 和 LaTeX. 使用 LPeg 进行快速解析.
- LXSH - 用 LPeg 编写的词法分析器和语法高亮器的集合.
- lua-pb - 协议缓冲区实施.
Humanize¶
- i18n.lua - 具有语言环境、格式和多元化的国际化库.
- inspect.lua - Lua 表的人类可读表示.
- serpent - 序列化器和漂亮的打印机.
- Ser - 具有良好性能的简单序列化程序.
- say - 用于 i18n 的简单字符串键值存储.
Compression¶
Cryptography¶
- LuaCrypto - Lua 绑定到 OpenSSL.
- lua-lockbox - 用纯 Lua 编写的密码原语集合.
- luatweetnacl - 绑定到 tweetnacl,现代高安全性密码库.
- luaossl - “Lua 宇宙中最全面的 OpenSSL 模块” - 由 lapis、kong 和 lua-http 使用.
Network¶
- LuaSocket - 为 TCP 和 UDP 提供套接字 API 并实现 HTTP、FTP 和 SMTP 的网络扩展.
- lua-websockets - WebSocket 客户端和服务器模块. 与 Web 服务器无关,在 LuaSocket 之上的 Lua 中实现.
- lua-cURLv3 - Lua 绑定到 libcurl.
- lua-http - 具有客户端和服务器 API、TLS 和 HTTP/2 的异步 HTTP 和 WebSocket 库; 基于cqueues.
Data Stores¶
- LuaSQL - 用于连接到 ODBC、ADO、Oracle、MySQL、SQLite 和 PostgreSQL 的简单界面.
- pgmoon - 用于 OpenResty、LuaSocket 和 cqueue 的 Lua PostgreSQL 驱动程序.
- lua-resty-mysql - 用于 OpenResty 的 Lua MySQL 驱动程序.
- lua-resty-cassandra - OpenResty 和其他的 Lua Cassandra 客户端驱动程序.
- 雷迪斯
- redis-lua - Redis 的纯 Lua 客户端库.
- lua-resty-redis - OpenResty 的 Lua Redis 客户端驱动程序.
- lredis - 具有流水线和 Pub/Sub 支持的异步 Redis 客户端; 基于cqueues.
Message Brokers¶
- lua-zmq - Lua 绑定到 ZeroMQ.
- lzmq - 更新的 Lua 绑定到 ZeroMQ.
- lua-resty-kafka - 基于 OpenResty cosockets 的 Kafka 客户端驱动程序.
- lua-resty-rabbitmqstomp - 基于 OpenResty cosockets 的 RabbitMQ 客户端库.
Testing¶
- busted - BDD 风格的单元测试框架,具有出色的文档和 Moonscript 支持.
- telescope - 灵活且高度可定制的测试库.
- luassert - 扩展 Lua 内置断言的断言库.
- lust - 最小的测试框架.
Foreign Function Interfaces¶
- LuaJIT FFI - LuaJIT 从纯 Lua 代码调用外部 C 函数和使用 C 数据结构的机制.
- luaffi - 独立的 FFI 库,与 LuaJIT FFI 接口兼容.
Analysis Tools and ASTs¶
- luadec51 - Lua 5.1 版的 Lua 反编译器.
- luacov - 简单的覆盖分析器,被 busted 和 telescope 用来检查测试覆盖率.
- luacov-coveralls - coveralls.io 的 LuaCov 记者.
- luacheck - 简单的静态分析器,可检测意外的全局变量和未定义或隐藏的局部变量.
- Metalua - 纯 Lua 解析器和编译器,用于生成 AST. 许多其他工具以这种方式使用 Metalua 解析器.
- LuaInspect - Lua 最强大的代码分析和 linting 工具,基于 Metalua 构建. 由 ZeroBraneStudio 等使用.
- LuaMinify - Minifier,它还带来了自己的静态分析工具、词法分析器和解析器.
- Typed Lua - 编译为纯 Lua 的 Lua 类型超集.
- lua-parser - 使用 LPegLabel 编写的 Lua 5.3 解析器,改进了错误消息.
Experimental, etc¶
- punchdrunk.js - Moonshine + LÖVE API 重新实现 = 在浏览器中运行 LÖVE 游戏.
- luvit - Node.js 的底层架构 (libUV),顶部是 Lua 而不是 JavaScript.
- graphql-lua - Lua 实现 GraphQL.
Scriptable by Lua¶
- luakit - 快速、小型、基于 webkit 的浏览器框架,可由 Lua 扩展.
- Hammerspoon - 一个强大的、可扩展的 OS X 自动化工具. 一个社区维护的分支 Mjolnir.
- kpie - 用于处理窗口的脚本实用程序.
- lumail - 基于控制台的邮件客户端,具有广泛的脚本功能.
- AwesomeWM - 一个高度可配置和可扩展的 X 窗口管理器,由 Lua 编写和配置.
- Textadept - 极其轻量级、可定制、跨平台的编辑器,(大部分)用 Lua 编写(并由脚本编写).
- KoReader - 电子书阅读器应用程序支持 PDF、DJVU、EPUB、FB2 等,可在 Kindle、Kobo、PocketBook 和 Android 设备上运行.
Miscellaneous¶
- MoonScript - Moonscript 是一种编译为 Lua 的动态脚本语言. 它减少了冗长并提供了一组丰富的功能,如理解和类. 它的作者称之为“CoffeeScript for Lua”.
- sitegen - 使用 MoonScript 并支持 HTML 和 Markdown、页面分组和插件的静态站点生成器.
Resources¶
Community¶
- lua-l - 官方 Lua 邮件列表,也是 Lua 社区的焦点之一.
- Lua.Space - Lua 社区博客.
- Lua Users Foundation - 以支持和促进 Lua 及其社区和生态系统为使命的个人协会.
- lua-users.org - 一个供 Lua 用户使用的站点,具有 IRC 频道、lua-l 网络存档和大型 wiki.
- 会议/聚会
- Lua Workshop - 每年 2 天的 Lua 社区会议,轮流举行.
- Lua Conf - 在巴西举行的为期 1 天的年度 Lua 会议.
- FOSDEM - 在布鲁塞尔举行的为期 2 天的 F/OSS 开发人员年度聚会,有时会有一个“Lua 开发室”.
References¶
- Reference Manual - Lua 语言的官方定义.
- lua-users wiki - 大量由社区维护的 Lua 信息和资源集合,补充了官方网站.
- Lua Unofficial FAQ - 回答各种与 Lua 相关的问题,包括许多形式的“如何 ___?'.
Glossaries¶
- Lua 5.3 Glossary - 一些基本 Lua 术语的词汇表.
Style Guides¶
- Lua-users style guide - 通用的高级风格指南; 没有主见,很容易同意.
- Olivine style guide - 一个更自以为是和具体,因此更严格的指南.
Tutorials¶
- Lua Crash Course - 短期速成课程复习,或当您忘记基础知识时的参考.
- Learn Lua in 15 Minutes - 一个注释良好的示例文件,涵盖了基础知识.
- Learning Lua from JS - Lua与JS异同概览; 对于希望使用 Lua 的 JavaScript 人员来说,这是一个很好的开始.
- lua-users tutorial - 深入收集针对新手的教程.
- Lua Missions - 一系列“任务”,旨在沿途教授 Lua 的各个方面.
- Creating an Image Server - 逐步设置和使用 OpenResty 构建一个简单的图像处理服务器; 玩 OpenResty 的一个很好的起点.
Articles¶
- Embedding Lua in C - 在 C 程序中嵌入 Lua 的介绍性演练. 有点过时,但仍然是一个很好的演练.
- Lua: Good, bad, and ugly parts - ZeroBraneStudio 的作者对 Lua 的优点、不同、缺点和丑陋的方面进行了全面总结,包括许多微妙的怪癖.
- Lua states, libraries, coroutines and memory - 图表并解释了 Lua VM 的一些更高级的概念,特别是在与 C 接口时.
Talks & Slides¶
- Roberto's Talks - Lua 首席架构师的演讲历史,每篇都有幻灯片.
- Lua Workshop Talks - 每年一次的 Lua Workshop 都会提供高质量的演讲,并且他们的历史在线,包括幻灯片.
Books¶
- Programming in Lua - Lua 首席架构师所著的Lua 编程各个方面的权威介绍. 发行了三个版本; 第一版在线提供.
- Lua Quick Reference - 关于如何在 Lua 5.1 到 5.3 中编程和嵌入的快速参考,由 Textadept 的创建者编写.
- Programming Gems - 一系列文章,涵盖了在各种用例中使用 Lua 进行良好编程的现有智慧和实践.
- Lua Programming - 语言的简短概述,最新的 Lua 5.2,可在线获取.
Other Lists¶
- awesome-resty - 像这样的列表,但专注于 OpenResty.
- awesome-love2d - 像这样的列表,但侧重于游戏开发和 LÖVE 平台.
- Where Lua is Used - 用 Lua 编写或可扩展的独立程序的完整列表.
Contribute¶
欢迎和征求意见! 阅读 contribution guidelines 第一的.
License¶
在法律允许的范围内,Lewis Ellis 已放弃对本作品的所有版权和相关或邻接权.