Lua
Fennel is interesting.
Notes
- Lua was created explicitly to be an embedded scripting language. It's evolution has very tightly focused on that usage, and that continues to be the most common way it is used. It's language as library, a small, pure ANSI C library with no external dependencies. It's easy to include in a project and extend, while remaining a powerful, expressive language that performs well. It's fantastic for that purpose.
- Lua is a language I really want to love. I like the emphasis on simplicity and minimalism, and the Scheme-like semantics, which mix imperative and functional styles, really hits a sweet spot IMO. LuaJIT is a crazy impressive feat of software engineering. However, there are some specific issues which hold Lua back IMO. First, as LuaJIT author Mike Pall famously noted, the Lua authors constantly break compatibility between releases. Lua is really several different, incompatible languages (Lua 5.1, 5.2, etc). LuaJIT is still at Lua 5.1, IIRC. Second, there are a bunch of minor nitpicks (1-based-indexing, anyone?) which turn off a bunch of people. Lastly, because Lua is so minimal and focused on portability, people end up reimplementing their own abstractions (such as object systems) from scratch, further fracturing the ecosystem. I think there's a space for a new project, which takes LuaJIT as a starting point and addresses some of the issues I described. It would also be great if this hypothetical new language had better support for Unicode and concurrency.
Links
- Luau - Fast, small, safe, gradually typed embeddable scripting language derived from Lua. (Code) (HN)
- Luacheck - Tool for linting and static analysis of Lua code.
- Fennel - Programming language that brings together the speed, simplicity, and reach of Lua with the flexibility of a lisp syntax and macro system. (Code) (Rationale) (Lobsters) (HN) (FennelConf) (Fennel: The Practical Lisp)
- rlua - High level bindings between Rust and Lua.
- How to Lua and C - a short novel (2018)
- Code Formatter for Lua - Pretty-printer for Lua code, written in TypeScript and deeply inspired by prettier.
- Lua VM in pure Go
- GopherLua - VM and compiler for Lua in Go.
- Awesome Lua
- Awesome Lua 2
- Embedding Lua Tutorial
- Lunatic Python - Two-way bridge between Python and Lua.
- Interesting things about the Lua interpreter (2020)
- Interactive Lua development with Fennel (2018) (Lobsters)
- LuaJIT - Just-In-Time (JIT) compiler for the Lua programming language. (Web)
- LuaJIT Bytecode Optimizations
- Lua in Rust - Pure Rust implementation of Lua compiler.
- Typed Lua - Optional Type System for Lua.
- Teal - Compiler for Teal, a typed dialect of Lua.
- pprint.lua - Lua pretty printer.
- Using Lua As A Serialization Format (2020) (HN) (Lobsters)
- Lua Integration (2020)
- LuaJIT Language Toolkit - Implementation of the Lua programming language written in Lua itself.
- Antifennel - Turn Lua code into Fennel code.
- HN: Lua 5.4.0 (2020)
- Languages that compile to Lua
- Making the Fennel compiler self-hosting with another compiler (2020)
- How to Plan a Luau: Augmenting Lua’s Syntax With Types (2020) (HN)
- Croissant - Lua REPL and debugger implemented in Lua.
- Fengari - Lua for the Browser. (Web) (HN)
- Lua Style Guide
- busted - Elegant Lua unit testing.
- RxLua - Reactive Extensions for Lua.
- LTUI - Cross-platform terminal ui library based on Lua.
- Raymarching with Fennel and LÖVE (2020)
- Moonshine - Lightweight Lua VM for the browser.
- A Look at the Design of Lua (2018) (HN)
- lua-fsm - Simple finite-state machine implementation for Lua.
- plenary.nvim - All the lua functions I don't want to write twice.
- LuaUnit - Popular unit-testing framework for Lua, with an interface typical of xUnit libraries.
- LuaFormatter - Reformats your Lua source code.
- Heart - High performance Lua web server with a simple, powerful API.
- Lua, a misunderstood language (2021) (Lobsters) (HN) (HN)
- Lua and Python (2020) (HN) (Lobsters)
- luapower - LuaJIT distribution. (GitHub)
- Penlight - Useful pure Lua modules, focusing on input data handling, functional programming and OS path management.
- StyLua - Opinionated Lua code formatter.
- Full Moon - Lossless Lua 5.1 parser.
- Ravi - Dialect of Lua, featuring limited optional static typing, JIT and AOT compilers. (Web)
- LuaJIT compiler explorer (Code)
- LadyLua - Batteries-included static Lua 5.1 interpreter. (HN)
- TypeScriptToLua - Write Lua with TypeScript. (Web)
- debugger.lua - Simple, embedabble CLI debugger for Lua.
- Terra - Low-level system programming language meta-programmed from Lua. (HN) (Code)
- Lua Language Server
- Lua Patterns Viewer - Tool for inspecting, analyzing and learning Lua patterns. (Code)
- liter - Powerful Luau library for enhanced Rust-like iterators.
- lua-lru - LRU cache in Lua.
- utf8.lua - Pure Lua 5.3 regex library.
- Lua-QuickCheck - Property based testing in Lua, inspired by the original QuickCheck.
- MoonScript - Language that compiles to Lua. (Code)
- Lua Code
- Concurrent LUA Executor - Concurrent LUA executor that is designed to keep running a same (but updateable) set of scripts over a long period of time.
- Zua - Implementation of Lua 5.1 in Zig, for learning purposes.
- lua-resty-lrucache - Lua-land LRU Cache based on LuaJIT FFI.
- Python and Lua (2019) (HN)
- Lua Functional - High-performance functional programming library for Lua designed with LuaJIT's trace compiler in mind. (Docs)
- LuaJIT Unix syscall FFI
- Hematita Da Lua - Memory safe Lua interpreter.
- LuaJIT Garbage Collector Design Doc
- f-strings - String interpolation for Lua.
- Lua Filters - Collection of lua filters for pandoc.
- StackTracePlus - Provides enhanced stack traces for Lua.
- Teliva - Fork of Lua 5.1 to encourage end-user programming. (HN)
- checks - Runtime argument type checking API for Lua.
- Lua Async Await - Async Await in 90 lines of code.
- luastatic - Build a standalone executable from a Lua program.
- Links on how Lua works behind the scenes
- Lua Finite State Machine - Finite state machine lua micro framework.
- lua2c - Converts Lua 5.1 source code to C code.
- Lua in Rust - Lua programming language, implemented in Rust.
- Lua: Good, bad, and ugly parts (2012) (HN)
- Luerl - Implementation of Lua in Erlang. (HN)
- Writing a minimal Lua implementation with a virtual machine from scratch in Rust (2021) (Lobsters) (Code) (HN)
- lua-ts - TypeScript implementation of minimal Lua.
- lua-yaml - LUA YAML parser.
- JSON.lua - JSON encoder/decoder.
- lua-feels - Lua REPL that gives you a feel for its internals.
- Lua in 100 Seconds (2022)
- Fullmoon - Fast and minimalistic web framework based on Redbean web server.
- lua-pb - Lua Protocol Buffers.
- Catwell's Lua playground - Store the various Open Source tools, algorithms and libraries I write in Lua.
- Luar - Lua interpreter / JIT compiler.
- Lua Devirtualization (2022) (HN)
- luna - Node.js bindings to Lua.
- Why Python is more popular than Lua (2022)
- NattLua - Superset of LuaJIT that adds a structural typesystem.
- Luar - Lua reflection bindings for Go.
- RapidJSON bindings for Lua
- GoLua - Lua compiler / runtime in Go.
- WebAssembly Lua - Write and compile WebAssembly code with Lua.
- binser - Customizable Lua Serializer.
- JSON.lua - Lightweight JSON library for Lua.
- Lua HTTP - HTTP Library for Lua. Supports HTTP(S) 1.0, 1.1 and 2.0; client and server.
- LOOM - Easier to read LuaJIT dumps.
- wasm2lua - Converting WASM into Lua.
- lua.go - Toy Lua 5.3 implementation written in Go.
- inspect.lua - Human-readable representation of Lua tables.
- Luacheck - Tool for linting and static analysis of Lua code.
- MiniLua - Lua contained in a single header to be bundled in C/C++ applications with ease.
- Lume - Lua functions geared towards game dev.
- LDoc - Lua Documentation Tool.
- Hive - Lua microservices framework written in Rust.
- lua-graph - Graph algorithms in Lua.
- Clue - C/Rust like programming language that compiles into Lua code.
- Standalone tree sitter bindings for the Lua language
- Gooa - Lua Preprocessor written in Go.
- LuaSocket - Network support for the Lua language.
- Eva - Basic defold module for mobile games.
- Druid - Defold UI component library.
- Lua C API manual pages
- Lua grammar for tree-sitter
- A History of Lua (HN)
- jsonschema - Pure Lua JSON schema validator for Lua/LuaJIT.
- lua-resty-radixtree - Adaptive Radix Trees implemented in Lua / LuaJIT.
- Baton - Input library for LÖVE that bridges the gap between keyboard and joystick controls.
- promise-async - Promise & Async in Lua.
- Go Lua Compiler and VM
- Lua 5.3 in Rust
- Structured concurrency and Lua (HN)
- Selene - Blazing-fast modern Lua linter written in Rust.
- Lua Scripts for Roblox
- Racket-Lua - Implementation of Lua 5.4 for Racket. (Article) (HN)
- Lua Standard Library - Implement popular data structures & algorithms into your Lua applications.
- Building the fastest Lua interpreter automatically (2022) (HN)
- LuaJIT Remake - Implement a multi-tier method-JIT for Lua.
- Xeus Lua - Jupyter kernel for Lua based on the native implementation of the Jupyter protocol xeus.
- HsLua - Haskell bindings to Lua, an embeddable scripting language.
- Lua performance guide
- t - Runtime Typechecker for Roblox.
- cwtest - Tiny Lua test helper.
- Lua Programming Gems (PDF)
- Using Lua with C++ (2023) (HN)
- Yuescript - Moonscript dialect compiles to Lua. (Docs)
- g3d - Simple and easy 3D engine for LÖVE.
- LuaFileSystem - File System Library for Lua.
- luzer - Coverage-guided, native Lua fuzzing engine.
- Wasynth - WebAssembly to Lua translation library and tool.
- Build a Lua Interpreter in Rust
- Ziglua - Zig bindings for the Lua C API.
- Lua: The Little Language That Could (2023) (HN)
- gopher-luar - Simplifies data passing to and from gopher-lua.
- seamstress - Lua scripting environment for monome devices and OSC communication.
- Coroutines make robot code easy (2023)
- Writing a Pathtracer in Lua (2023) (HN)
- Algebraic data types in Lua (Almost) (2023)