4 ms·
There are many lightweight, embeddable scripting languages available, yet Lua remains dominant. This is despite the language being "quirky" at best (and "dreade
by pansa2 6y ago
There are many lightweight, embeddable scripting languages available, yet Lua remains dominant. This is despite the language being "quirky" at best (and "dreaded" at worst [0]).
Is this just inertia, or is there a technical reason for new projects to embed Lua rather than a different language?
[0] https://insights.stackoverflow.com/survey/2018#technology-_-most-loved-dreaded-and-wanted-languages https://insights.stackoverflow.com/survey/2018#technology-_-...
- IshKebab 6y agoIt's very easy to embed, and LuaJit is pretty fast.
- TazeTSchnitzel 6y agoWhat better languages are there which are friendly to embedding? A significant part of Lua's popularity, AIUI, comes from it being easy to embed.
- pansa2 6y agoSquirrel [0] seems to have been used in a few places [1], but not many compared to Lua. There are also embeddable JavaScript implementations such as Duktape [2], and a lightweight Ruby in mruby [3]. [0] http://www.squirrel-lang.org/ http://www.squirrel-lang.org/ [1] https://en.wikipedia.org/wiki/Squirrel_(programming_language)#Applications https://en.wikipedia.org/wiki/Squirrel_(programming_language... [2] https://duktape.org/ https://duktape.org/ [3] https://github.com/mruby/mruby https://github.com/mruby/mruby
- bjoli 6y agoGuile scheme, if you have users that don't have the knee-jerk "ewww parentheses!" reaction. The threading model is vastly different from lua, but compared to regular lua you get a lot faster execution.
- srean 6y agoGuile is great and I enjoy how active it has been. However, it is no more that small embeddable lisp. Its embeddable of course, but not small by any means.
- bjoli 6y agoOne you start wanting to run complex things over multiple interpreters in Lua (say, to use multiple threads) you might as well just use guile. Sure, we are talking 2.5mb of library and about the same amount object code. Quite a bit larger than Lua. But that also gives you object code for working with texinfo (and quite a lot of completely unused, undocumented modules). I wonder how much could be stripped without anyone actually boticing
- brobdingnagians 6y agoI love Angelscript for that purpose (w/ C++). Very similar syntax to C++ (but w/ GC), very easy to expose classes, functions, and variables. All it takes is a quick compile & link. It also has a JIT compilation if you need it and ability to save/load the intermediate binary code for faster loading.
- salamanderman 6y agoWren https://wren.io/ https://wren.io/
- zeveb 6y agoTcl leaps to mind. It is very easy to embed, too.
- rsecora 6y agoChaiScript [1] For c++. Almost trivial to add functions or calls in both directions. - Header only project, with modern c++. Able to compile with and without mutex. Multiple context can run in parallel. - Awesome integration and binding with c++ bars and functions. There are two drawbacks. One is the maintenance and some performance quirks with returns and type conversions. The other drawback, maintenance only [2]. the project accepts pull requests, but no recent activity on lenguaje or performance. [1] http://chaiscript.com/ http://chaiscript.com/ [2] https://github.com/ChaiScript/ChaiScript/commits?author=RobLoach https://github.com/ChaiScript/ChaiScript/commits?author=RobL...
- taf2 6y agoI enjoy writing Lua... It's kind of somewhere between Javascript and Ruby in my mind...
- mhd 6y agoTcl and various scheme dialects were popular, but they have a pretty unusual syntax, at least when viewed from a typical C/Algol-ish programmer. Lua just came at the right time and place and was more "usual" than that, also with a pretty small package and permissive license. And I would say that this argument still holds true. For extending a game or application, I'd feel pretty bad forcing people to use JS, for example (unless it's EE, where the gloves are off). Wren might be an option, but it's certainly a lot less proven. Also, there's LuaJIT, if you really need some performance in a small package. StackOverflow might not be the best source for end-user scripting. (Never mind that I have my doubts about any statistic where Rust ends up winning the popularity contest.)
- bo1024 6y agoNot sure why it’s dreaded, Lua is a joy to write code in.
- RHSeeger 6y ago> "quirky" at best (and "dreaded" at worst I think it depends heavily on the person. Tcl has this problem, too, where lots of people love it and lots of people are completely put off by it.
- scythe 6y agoLua is weird, but it's competitors are also weird. Tcl, Scheme, Perl and Javascript are all at least as quirky if not more. JS in particular is at least as "dreaded". There are a few more "normal" alternatives, but they're less popular and have even smaller ecosystems than Lua, where package availability is already bad. Python and Ruby are huge by comparison and don't embed all that well.
- leephillips 6y agoThe technical reason might be that a lot of people like working in this language, and consider it to be well designed.