A History of Lua

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • WorkOS - The modern identity platform for B2B SaaS
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • SaaSHub - Software Alternatives and Reviews
  • SoarOTX

    OpenTX radio programs for model sailplanes

  • nvim-oxi

    :link: Rust bindings to all things Neovim

    > now that https://github.com/noib3/nvim-oxi has come out, I am going to use it even less.

    Woah, interesting ... provided there's success and uptake with this ... I'm imagining it could lead to a really slick and responsive editing experience that those of using (at least) slightly sluggish plugins might have been missing for a while now.

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

  • Prosody IM

    IMPORTANT: due to a drive failure, as of 13-Mar-2021, the Mercurial repository had to be re-mirrored, which changed every commit SHA. The old SHAs and trees are backed up in the vault branches. Please migrate to the new branches as soon as you can.

    You can write largish standalone application in Lua and it is not always a poor choice - Prosody [1] first comes to mind. But qualities which make it a good embedded language make it less _attractive_ for other uses.

    Lua has very simple syntax and small stdlib which allows its implementation to be very small - you can add Lua to your application and not increase its size significantly. But when the size is not a concern most programmers prefer languages with rich, powerful syntax lots of features and batteries-included stdlib (which is completely opposite of Lua).

    [1] https://prosody.im/

  • IntelliJ-Luanalysis

    Type-safe Lua IDE Plugin for IntelliJ IDEA

    What do you mean by no lambdas exactly? Lua supports anonymous functions and those functions capture variables from their outer scope.

    I use functional programming extensively in Lua also. Could you elaborate on what it doesn't permit?

    Integers were introduced in 5.3.

    Assigning operators? It has metatables, you can absolutely implement your own operators.

    If you want static typing you can use my IDE: https://github.com/Benjamin-Dobell/IntelliJ-Luanalysis/

    Granted, my IDE is incredibly opinionated and not for everyone.

    Also, Lua is not my favourite language to use, doesn't even make top 3. However, the robustness of its design, considering its simplicity, is incredibly elegant.

  • luau

    A fast, small, safe, gradually typed embeddable scripting language derived from Lua

    There is Luau, however.

    "Luau (lowercase u, /ˈlu.aʊ/) is a fast, small, safe, gradually typed embeddable scripting language derived from Lua."

    https://luau-lang.org

  • tl

    The compiler for Teal, a typed dialect of Lua

    The tutorial they link in the intro is quite good:

    https://github.com/teal-language/tl/blob/master/docs/tutoria...

  • lua-enumerable

    A port of ruby's Enumerable module to Lua

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

  • Smalltalk

    Parser, code model, interpreter and navigable browser for the original Xerox Smalltalk-80 v2 sources and virtual image file (by rochus-keller)

    > a large lua game code base, over 4000 files, 1.5 million lines of code

    Interesting; how do you manage to keep consistency? Do you have special tools to e.g. detect inadvertent global variables? I once wrote a Smalltalk VM in Lua (https://github.com/rochus-keller/Smalltalk/blob/master/Inter...) which is a much smaller code base but even with this size I quickly would have lost track of e.g. scopes and names without tools I had to write myself (https://github.com/rochus-keller/LJTools).

  • LjTools

    LuaJIT 2.0 bytecode parser, viewer, assembler and test VM. Lua 5.1 parser, IDE and debugger.

    > a large lua game code base, over 4000 files, 1.5 million lines of code

    Interesting; how do you manage to keep consistency? Do you have special tools to e.g. detect inadvertent global variables? I once wrote a Smalltalk VM in Lua (https://github.com/rochus-keller/Smalltalk/blob/master/Inter...) which is a much smaller code base but even with this size I quickly would have lost track of e.g. scopes and names without tools I had to write myself (https://github.com/rochus-keller/LJTools).

  • luacheck

    A tool for linting and static analysis of Lua code.

    Most of the time nothing is used. The thing is that iterating is so quick, that you find the problems really fast.

    Although, I've been using luacheck https://github.com/mpeterv/luacheck. It is quite nice, but you have to write down the global variables by hand on the config file.

  • love

    LÖVE is an awesome 2D game framework for Lua.

    If you want to work on "AAA" games, I don't think there are many companies left using it to this scale. An engine where those kind of games are developed almost fully in Lua, AFAIK, is Bitsquid (later Stingray by autodesk), but that has been discontinued. There are still some companies that use Bitsquid derivatives though, like Fatshark, Toadman and Arrowhead. See https://en.wikipedia.org/wiki/Bitsquid

    As for non "AAA", I think https://love2d.org/ is quite popular for game jams and commercial 2d games - I haven't used myself though.

  • lj-cdefdb

    An auto-generated cdef database for LuaJIT

    Yep, pretty much.

    I wound up writing a thing for this years ago that worked pretty well for the use cases I had at the time, but it was pretty complicated (implementation wise) and had some potential conflicts with other FFI-written stuff that imported "almost but not quite correct" stdlib definitions - since my thing would always import the exact definitions from the system header files.

    Still, it was fun and I thought it worked reasonably well for what it was.

    https://github.com/bdowning/lj-cdefdb

  • port70

    A Gopher server in Lua

    The first line tells luacheck that the variables `init` and `handler` are globals, and the second line tells it to ignore lines that contain just whitespace (a quirk the text editor I use uses to manage indenting levels).

    [1] https://github.com/spc476/port70/blob/master/port70/handlers...

  • hererocks

    Python script for installing Lua/LuaJIT and LuaRocks into a local directory (by luarocks)

    > Also it is technical and not user-friendly for windows users, because luarocks (package manager) is unusable there unless you’re skilled in C build systems and are ready to fix these issues.

    I've found using hererocks[1] makes setting up lua and luarocks on Windows very easy. Running it in visual studio's command prompt has let me install pure Lua and C rocks.

    However, I've noticed many rocks aren't updated on luarocks and the best way to install them is to point luarocks to the rockspec file in their git repo. (Instead of `luarocks install testy` you do something like `luarocks install https://raw.githubusercontent.com/siffiejoe/lua-testy/master...` .)

    [1] https://github.com/luarocks/hererocks

  • SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts