>>21794
Decent. Not perfect, but it uses LuaJIT, a "Just In Time" bytecode compiler so it does actually run machine code. Check out LuaJIT's page for their performance comparisons. But there are some algorithms and such that won't perform quite as well as if coded in C or C++, but it easily outperforms just using regular interpreted Lua code.
That said, I've coded stuff up with it that ran at 60 fps with a lot of stuff on screen. The real limitation in my opinion is the same ones you'll find when you do anything else in graphics. For instance, if you're drawing thousands of semi-transparent quads across the entire screen, your framerate will suffer, due to fill rate limitations. but you can easily render a batch of tens of thousands of quads that take up small amounts of screenspace with no slowdowns.
Love2D also has collision, physics, networking, particle systems, UI, etc. It supports the use of texture atlases, so you can batch an entire tiled map so it renders in a single draw call. If you're careful, you could quite possibly set up all of your game state into a single batched draw call.
It does have some limitations: the developers are picky about adding things to it that they feel aren't needed, and the design they use makes it a bit difficult to use libraries that aren't written in pure Lua (so no SQLite library for me, unfortunately). They also have hardcoded save game folders. That is nice because the question is solved for you for all platforms they've ported to, but it's annoying because you can't just tell Love2D to open up an arbitrary file location. Any file you open HAS to be in the locations they designate. There are ways around it, but it's somewhat annoying that they don't just have a simple configuration option to relax these limitations.
These negatives aren't a problem for what I'm working on so far. It's open source, so if absolutely necessary I can go in and change things if I really need to. The license it uses also fully allow commercial games.