| ▲ | Jyaif 20 hours ago |
| Jesus christ, 40% waste in arrays that can be solved by using `__attribute__((packed))`. Irresponsible of them of not advertising this as an option in luaconf.h |
|
| ▲ | sfpotter 20 hours ago | parent | next [-] |
| Here's the rest of that paragraph for you: "However, this attribute is a gcc extension not present in ISO C. Moreover, even in gcc
it is not guaranteed to work [3]. As portability is a hallmark of Lua, this almost magical solution is a no-go." |
| |
| ▲ | Jyaif 19 hours ago | parent [-] | | [flagged] | | |
| ▲ | mananaysiempre 18 hours ago | parent | next [-] | | Embedders of Lua are not equidistributed across platforms with the general population of programmers or with user-exposed general-purpose computers. Not even close. One of the selling points of Lua is how easy it is to run on a toaster or potato, so disproportionately many ports of Lua are in fact running on toasters and potatoes. | |
| ▲ | kragen 18 hours ago | parent | prev | next [-] | | You have no idea what 90% of their users are using. A lot of them aren't using LLVM or GCC. I'm pretty sure Roblox and WoW, for example, aren't normally compiled with LLVM or GCC. Whether those two games account for 99% of Lua's users or 0.001% depends on how you count, but no matter how you count, you have no idea. | | |
| ▲ | debugnik 17 hours ago | parent | next [-] | | Roblox accounts for 0% of stock Lua users, they run Luau. And many uses of Lua you come up with will be using LuaJIT or pinned to an older, possibly forked, Lua release. I'm not agreeing with the comment you replied to, just nitpicking. | |
| ▲ | canyp 18 hours ago | parent | prev [-] | | [flagged] |
| |
| ▲ | nxobject 11 hours ago | parent | prev [-] | | The USP of Lua is the fact that's its easy to target embedded and microcontroller with funky/frozen toolchains -- that's why PUC-Rio Lua is written in C89. You're just as likely to have to use a "#pagma packed" as an attribute. |
|
|
|
| ▲ | ethan_smith 15 hours ago | parent | prev [-] |
| `__attribute__((packed))` wouldn't help here since the issue is about Lua's array/hash hybrid table design and memory allocation strategy, not C struct padding. |
| |
| ▲ | lifthrasiir 14 hours ago | parent [-] | | But it did help in the other way, in my reading of the paper [1]. So the OP is asking why this is not even an option on supported environments, and I too think that this is indeed a good question to ask. [1] "Hugo Gualandi reported that just adding the gcc attribute __attribute__((packed)) to the definition of the structure TValue reduces its size from 16 to 9 bytes, without any sensible difference in performance." |
|