Loading comparison...
Loading comparison...
A lightweight, embeddable scripting language. Popular in game development, Neovim plugins, and embedded systems.
Roberto Ierusalimschy, Luiz Henrique de Figueiredo, and Waldemar Celes created Lua in 1993 at the Pontifical Catholic University of Rio de Janeiro, Brazil, designing it as a lightweight, embeddable scripting language with a remarkably small footprint. The entire Lua interpreter compiles to under 300KB, yet the language provides powerful features: first-class functions, closures, coroutines, and a single flexible data structure — the table — that serves as arrays, dictionaries, objects, and modules. This minimalism made Lua the dominant embedded scripting language in the software industry.
The gaming world relies heavily on Lua: World of Warcraft uses it for addons and UI customization, Roblox built its entire scripting platform on a Lua derivative (Luau), and game engines like Corona SDK, Defold, and LOVE use Lua as their primary scripting language. Beyond games, Lua powers Neovim's plugin ecosystem, Redis scripting for atomic server-side operations, NGINX configuration through OpenResty, network security tools like Nmap and Wireshark, and embedded systems including routers running OpenWrt. LuaJIT, Mike Pall's just-in-time compiler, makes Lua one of the fastest dynamic languages available, approaching C performance for certain workloads.
The language's C API is designed for seamless bidirectional integration — calling C from Lua and Lua from C is straightforward by design. LuaRocks serves as the package manager, hosting modules for web development, databases, and testing. Lua's permissive MIT license, minimal runtime requirements, and predictable garbage collection make it the preferred choice when a host application needs safe, fast, user-facing scripting capabilities.
Lua scripts are typically embedded inside larger host applications, meaning changes can affect the behavior of game engines, editors, routers, and databases. Comparing files catches modified table structures that break metatables and object behavior, altered coroutine yield points that change execution flow, changed module return values that affect require() consumers, and updated Redis Lua scripts that must remain atomic.
Game modding communities and Neovim plugin developers rely on diffing to review configuration and logic changes before deployment.
UtraDiff compares Lua files with Lua syntax highlighting, covering table constructors, metatables, and coroutine definitions. Side-by-side view aligns function blocks and module definitions across panels. The whitespace toggle handles varying indentation styles across game engines and embedded environments.
Alt+Arrow navigation jumps between changed functions. Language-aware tokenization distinguishes local variable declarations from global assignments, critical for catching scoping bugs in Lua scripts.
Supported extensions: .lua