this post was submitted on 25 May 2025
510 points (98.1% liked)
linuxmemes
25117 readers
2317 users here now
Hint: :q!
Sister communities:
Community rules (click to expand)
1. Follow the site-wide rules
- Instance-wide TOS: https://legal.lemmy.world/tos/
- Lemmy code of conduct: https://join-lemmy.org/docs/code_of_conduct.html
2. Be civil
- Understand the difference between a joke and an insult.
- Do not harrass or attack users for any reason. This includes using blanket terms, like "every user of thing".
- Don't get baited into back-and-forth insults. We are not animals.
- Leave remarks of "peasantry" to the PCMR community. If you dislike an OS/service/application, attack the thing you dislike, not the individuals who use it. Some people may not have a choice.
- Bigotry will not be tolerated.
3. Post Linux-related content
- Including Unix and BSD.
- Non-Linux content is acceptable as long as it makes a reference to Linux. For example, the poorly made mockery of
sudo
in Windows. - No porn, no politics, no trolling or ragebaiting.
4. No recent reposts
- Everybody uses Arch btw, can't quit Vim, <loves/tolerates/hates> systemd, and wants to interject for a moment. You can stop now.
5. π¬π§ Language/ΡΠ·ΡΠΊ/Sprache
- This is primarily an English-speaking community. π¬π§π¦πΊπΊπΈ
- Comments written in other languages are allowed.
- The substance of a post should be comprehensible for people who only speak English.
- Titles and post bodies written in other languages will be allowed, but only as long as the above rule is observed.
6. (NEW!) Regarding public figures
We all have our opinions, and certain public figures can be divisive. Keep in mind that this is a community for memes and light-hearted fun, not for airing grievances or leveling accusations. - Keep discussions polite and free of disparagement.
- We are never in possession of all of the facts. Defamatory comments will not be tolerated.
- Discussions that get too heated will be locked and offending comments removed. Β
Please report posts and comments that break these rules!
Important: never execute code or follow advice that you don't understand or can't verify, especially here. The word of the day is credibility. This is a meme community -- even the most helpful comments might just be shitposts that can damage your system. Be aware, be smart, don't remove France.
founded 2 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
Ah, I used 'compiled to C' as a clumsy phrase, that was incorrect to say, lol.
Whats actually going on... its a bit complicated.
On the one hand, you can directly write C code and call C functions in a Lua script, basically encapsulated inside the Foreign Function Call Interface... and that would mean you are writing Lua code, that has C code in it... thus arguably, you are passing Lua to C, runtime compiling that C, and then running that compiled bit of C code is running as machine code, but the rest of the Lua code is running as Lua, which is compiled into machine code.
On the other hand, LuaJIT basically does a series of analysis passes on your Lua code, and if it finds functions or chains of functions that are called very frequently, or functions that are computationally costly, slow, it will compile those bits directly into machine code... but the actual code that directs that process is itself written in C.
...
The point I am trying to get at here is that sometimes it makes more sense to write code that needs to be more highly performant via the use of a more performant, compiled language...
LuaJIT handles that by just doing it for you 'automagically'...
But you may be able to get even better runtime performance if you rearchitect a bit by taking all that stuff that LuaJIT is highlighting for optimization, and just actually permanently writing that stuff in C, C++ or Rust.
Or, maybe LuaJIT is 'good enough', and makes for less workload, simplifies development.
...
I threw Rust in there because it seems to generally be almost, but not quite as fast as C++ / C in runtime... but is also much less daunting and confusing for a less experienced coder to learn how to use.
Lua is extremely human readable, C and C++, a good deal more complicated... Rust is more human readable and easier to learn than C/C++, and also essentially has training wheels on for memory management problems that would be extremely frustrating for someone like a novice game coder that is trying to transition from say Lua or Python, into a lower level, compiled language.