There's duktape (https://duktape.org/), which, from skipping over the documentation seems very similar to Lua when it comes to embedding: It also uses the stack based approach. Looks like there's some ES6/7 support.
My JS-embedded apps only target macOS so I use Apple's builtin JavaScriptCore framework.
In my experience LuaJIT in interpreter only mode has better performance than using JSC (you can’t use JIT in JSC either — only WKWebViews can JIT).
(edit: sorry this is regarding iOS)
Maybe, but my use-cases (window manager and other automation stuff) don't really have a strong need for speed or high performance. Mostly it just sits there idle 99% of the time and runs callbacks quicker than the UI that it manipulates is visibly updated.
Yeah I think it does end up boiling down a lot to use cases because the big differences b/w Lua and JS are in availability of libs / integration and perf. In my case I do a lot of 2d graphics where love2d.org is available and perf is important. :) C interop is also really important, and LuaJIT C FFI is waaaaay nicer to use than JSC C API.
I’ve ended up doing a lot of JS with React Native for “app-y” mobile apps though.
If perf is important, I'm surprised you're using Love2d and not just using C++ with SDL and Box2d directly. Afaik Love2d just uses vanilla Lua (and not LuaJIT) which, while faster than similar languages, is still pretty wasteful of cycles when high perf is needed.
Love2d can use luajit or plain lua.
perf is important but I also want user scriptability (as part of the actual app feature(s)). Love2d uses LuaJIT (it does use the C API to bind its native calls rather than the FFI -- but actually that has better perf when not JIT'ing).