We use it internally to map some of the functions in our library to OpenGL.
We use it internally to map some of the functions in our library to OpenGL.
With the advent of LuaJIT 2, I've used it standalone for analyzing many many millions of messages per day in real-time, then feeding resultant datasets to other more batteries-included environments which aren't near as fast (e.g. Python, Matlab) or to datastores like Redis and Mysql
I also use OpenResty for web applications (risk management apps, charting, and other visualizations), often pulling from those same datastores. OpenResty is a joy to work with and is crazy fast.
I make heavy use of the FFI both for library bindings (including system calls) and general C structure use. The messages mentioned above are represented as C-structures and are efficiently processed by LuaJIT. I find myself often writing Lua scripts to do networking programs rather than C. Check out `ljsyscall`.
Dealing with memory has definitely been a stumbling point, but once I built enough scaffolding to deal with it (including using jemalloc), it has been clear sailing. Now I store millions of objects taking many GB of memory without significant GC pressure using FFI-based HashMaps and Vectors.
Also understanding how to keep the code in the JIT (versus the interpreter) has taken some artistry -- e.g. examinging the output of -jv and -jdump.
Although this thread is about LuaJIT 2.0.3 release, I use the LuaJIT 2.1 branch which has many enhancements; I especially appreciate the string improvements and trace stitching.
But beyond normalization, there is building books (be they level-1, 2, or 3), maintaining state, and extracting information from that. Random example (i.e. not a real query I've done): emit all the trade executions on any venue that happen within the first two depth levels of NASDAQ.
LuaJIT could do the hard crunching, like regression analysis, quite well, and there are some interesting projects like GSL-shell... but Matlab and numpy/matplotlib are quite expressive and more complete environments.
I've been eyeing SnabbSwitch for a while -- I use OpenOnload extensively, so appreciate what you are doing.
- all unit tests going forward are written in lua/moonscript[2]
- Lua will be embedded in neovim, and vimscript plugins will be compiled on-the-fly to Lua. Yes, this is really happening[3].
Promise to upvote :)
I use it, my favorite language by far (after trying about all of them).
>What are the applications you are using it for ?
Game development.
>I know it is used a bit in the gaming industry for scripting purposes
Not just scripting anymore. There are multiple production grade game engines where you write all the code in Lua(JIT). This variant is big in the mobile/casual sector of the industry. Corona [1] seems to be the current market leader there. There is also an open source game engine - LÖVE [2] - where you use Lua(JIT) for everything. However it is more of a hobby/enthusiast thing. It is much simpler, and very few commercial games are based on it. In contrast, Corona is widely used for commercial projects.
I just finished using it to build realtime stat tracking and a websockets server to display that data to web clients[2][3]. Additionally I've done some work with custom processing in a reverse proxy and handing case-insensitive URLs.
Overall I've found it very comfortable to use and fast, but a little more barebones than something like python. In my use cases, the speed and low overhead has been more than worth it.
[1] https://github.com/agentzh
[3] https://github.com/wbond/sublime.wbond.net/tree/master/realt...
I wrote a tool at work to do packet analysis in Wireshark which has a Lua API. I've written a couple of simple games using the Love2D framework. I once wrote an IRC bot using luasocket. I started to write a debugger which was an amalgam of C and Lua, but I've since abandoned that project (not because of Lua, but because I lacked the free time and the patience to support more than one object file format).
I also experimented with using Lua as a target for a Clojure-like Lisp dialect. The compiler is itself written in Lisp and compiles itself to Lua. I've written an Asteroids clone and some toys in Lisp and compiled them into Lua.
It's a very fun language to program in. The reference implementation is also small enough that you can reasonably expect to know its ins and outs in about a week. The C API is really nice; it makes embedding in C a breeze. LuaJIT itself has the best FFI I've ever seen: you can practically #include a C header file in your Lua and it just works.
Adobe is using it for some of their products. Lightroom was the first and its usage is extensive.
http://thesoftwarelife.blogspot.com/2008/11/lightroom-and-lu...
http://www.lua.org/wshop05/Hamburg.pdf
Wikipedia is now using it as their multimedia scripting language.
http://www.meetup.com/wikimedia-tech/events/106078042/?actio...
http://www.youtube.com/watch?v=PrhzAtC8fCc
Verisign uses it for High Availability Databases and also apparently DNS Advanced Traffic Management
http://bluedino.net/luapix/LuaWorkshopJuly2008-rev3.ppt
https://www.youtube.com/watch?v=XeP7d_jBPyA
You can now write NetBSD kernel modules in Lua.
Just because it's not the latest release of Lua, it does not make it less Lua language. Yes, bytecode generated by lua reference implementation can't be loaded by luajit (or maybe things have changed since), but that's just like saying Microsoft C++ libs can't be used by MINGW.
http://blog.cloudflare.com/pushing-nginx-to-its-limit-with-l...
I use it in games: http://infon.dividuum.de/
As a backend language in a geo game service: http://geolua.com/
And as the controlling language for a raspberry PI software: http://info-beamer.org/
Lua is pretty awesome. Fast, simple to include and expressive enough for my needs.
I've found LuaLaTeX to be quite stable already and used it to compile my PhD thesis.
----------
If you know a better way of using async i/o in Lua, I'm all ears.