I should really learn .

It looks like the dynamic language of my dreams: simple, small, fast, embeddable...



It's too bad they don't do more frequent release cycles, though:

Lua 5.4: 29 Jun 2020.
Lua 5.3: 12 Jan 2015
Lua 5.2: 16 Dec 2011
Lua 5.1: 21 Feb 2006
Lua 5.0: 11 Apr 2003
Lua 4.0: 06 Nov 2000

Actually, the pace of development seems to be slowing down 😞

@codewiz How is pace slowing down a *bad* thing for a basic technology like a programming language? I'd consider that the best scenario.

BASIC technology??? Programming language?? Dude...

@nanananacuntboi I like the detailed reply. It's making such interesting points.

@raucao It's either regular release cycles with few changes, or infrequent releases causing lots of breakage.

Surely you don't want the pace of development to slow down, causing your language of choice to lose ground to competing languages, until you're facing the hard decision of rewriting your codebase or miss on important innovations in safety, performance and productivity.

@codewiz All of your points are highly debatable, and I disagree with all of them. Please show me all the "breakage" in Lua from the past, and please tell me why everything has to compete with everything, or else "lose ground" in your mind.

Lua is a rather simple tool; one valid, stable choice for certain use cases, in a world full of choices for all kinds of use cases. Its benefits are not to be the most modern language that breaks a lot by introducing new features constantly.

@codewiz Oh, btw, you're missing the actual patch releases for bugs in that list.

@raucao Well, yes. Programming languages *do* compete for market share and developer mind share, like anything else.

Being open source and community-driven projects doesn't mean that they're exempt from having to stay relevant.

If you think this continuous improvement is unnecessary, why don't you try writing your next project with a compiler or interpreter from 20 years ago?

Oops, no threading! Oops, no JIT! Oops, the build system isn't parallel! No lambdas, no channels, no move semantics!

@raucao Regarding breakage: it's never necessary if you're willing to support multiple deprecated ways of doing things. Java followed this for 25 years, and is now being obsoleted by Kotlin, at least on Android.

C++ also kept a good deal of backwards compatibility for the past 30 years, and also has accumulated a good deal of complexity that's driving people away to other languages. Rust will probably bury C++, if it continues maturing at this pace.

@codewiz Developer mindshare, and "Rust burying C++" doesn't change anything about any program implemented in C++ that fulfills its job perfectly fine right now, and for the foreseeable future. Yes, you can develop new applications in Rust. No, it doesn't mean Lua is irrelevant as a choice for certain use cases, merely because there's another language you could switch to in 5 years from now.

@codewiz I replied to you, because this is especially true for such a simple and specialized tool as Lua. It's not a general-purpose systems language, where ecosystem moves matter much at all.

@raucao Maybe we're using different definitions of "irrelevance" here. To me, a language is irrelevant when nobody wants to learn it or use it in new projects.

If you believe in such a thing as software being "finished" (and I don't), there's no need to rewrite old code written in FORTRAN and BASIC in a more modern language.

@codewiz I think the fact that you have to pull out FORTRAN as an example goes to show that the problem is smaller than you assume. It will take a long time before Lua isn't relevant for its very specific use cases anymore, even by your own definition.

@raucao I switched to FORTRAN because I realized that C++ isn't a good analogy for my point.

Because C++ is far from being dead now. It wasn't doing too well until the ISO committee changed gears and started releasing predictable updates every 3 years, with a much more open and inclusive process for reviewing proposals.

C++17 was huge, and C++20 will be revolutionary, bringing C++ in the same camp of modern languages with modules, coroutines, concepts, ranges...


@raucao I'm not saying that C++ and Lua are yet at this stage. The fact that we're even debating them means that they're popular languages today.

BUT. When a language stagnates or moves slower than the rest of the ecosystem, it _will_ go the way of FORTRAN and BASIC. Hopefully this isn't a controversial point in abstract.

Maybe Lua's pace of development is just right... I might be mistaken there. As I said, I want to make the investment of learning Lua because I see it gain popularity.

@codewiz Sure, I'm not saying things last forever. For what my team uses Lua for, it was totally worth it to both learn it (which takes less than a day for the basics anyway), as well as implement the thing in it. Lua programs are usually small enough that an eventual rewrite wouldn't be a massive undertaking.

@raucao Yes, I 100% agree. I saw that neovim is also using Lua to supplant the quite horrible VimL.

I want a fast, responsive text editor with modern IDE features... and I was worried that Vim was never gonna make it because VimL is too slow and brittle to support complex plugins.

Just when I was about to take the big step of migrating to vscode, I noticed that neovim was adding all the infrastructure for solid completion using the Language Server Protocol promoted by vscode 👍

@raucao I guess my ramblings are for showing how competition really works in the open source ecosystem. It's more like co-evolution, really.

VimL will hopefully die thanks to Lua, and (neo)vim will become a better IDE thanks to the constructive competition of VSCode. Both will get to share a wider range of language servers.

@codewiz Doesn't CoC do the same, but in normal Vim? I switched from youcompleteme to that one recently, for the TS/JS language server support.

@codewiz Didn't know Neovim used Lua. Thanks for the tip. Might look into switching at some point after all, but I'm still quite happy with normal Vim.

@raucao I used Youcompleteme for some time, but it's a mix of VimL, Python and C++. Quite fragile.

LanguageClient-neovim is what I'm using now, and gives me access to robust language servers for C++ and Rust which are already packaged in most distros for the benefit of multiple IDEs.

Also, it seems that recently neovim gained a builtin LSP client written in Lua:


I should give it a try, when I find the time to build neovim from source (it wasn't that hard last time).

@raucao I've also been meaning to try CoC, but the configuration scared me... I want simple stuff that won't break when I'm trying to code 😫

How's your experience with CoC been so far?

@codewiz It's been pretty good so far. Everything just worked from the start.

@codewiz The amount of software you run that is built with 20 year old languages and tech is larger than the amount of software you run that is young and breaks all the time due to introducing new features at a rapid pace. It's a natural process that with maturity comes slower pace of adding new things. That doesn't mean it stops, it just doesn't have to be breakneck speed as you demand.

@codewiz (I'm talking LOC of all software on your computer combined.)

@codewiz More or less, what you see is what you get. It’s made to be a simple and complete language. Evolving the language in any direction in order to modernize it or improve it will most likely end up making the language more complicated. But, there could perhaps be improvements made in the runtime aspects of it.

Sign in to participate in the conversation

The social network of the future: No ads, no corporate surveillance, ethical design, and decentralization! Own your data with Mastodon!