Luanti logo

IRC log for #luanti-dev, 2026-06-13

| Channels | #luanti-dev index | Today | | Google Search | Plaintext

All times shown according to UTC.

Time Nick Message
00:14 Pexin joined #luanti-dev
00:59 YuGiOhJCJ joined #luanti-dev
03:34 swags joined #luanti-dev
04:00 MTDiscord joined #luanti-dev
05:43 ivanbu joined #luanti-dev
08:05 pgimeno joined #luanti-dev
15:30 MTDiscord <luatic> irrlicht is like an onion of undefined behavior
15:32 MTDiscord <luatic> i look at the .x reader, gah it compares OOB pointers all over, might actually be problematic UB so i start fixing it, proper fix should have f64 byteswap, i need f64 -> u64 bit cast to do that nicely, i see that Irrlicht does its bit casts using the union type punning hack which works in C but is UB in C++ 🙃
15:40 MTDiscord <luatic> "FloatIntUnion32" member function "bool sign() const { return (i >> 31) != 0; }", comment says "Portable sign-extraction". truly hilarious.
15:40 sfan5 that's not allowed in C++?
15:41 sfan5 that reminds me I should check if the have typical hardening options enabled for release builds
15:42 MTDiscord <luatic> sfan5: as far as I know it's allowed in C but not in C++, reading from a different union member than the one you wrote to is UB
15:43 MTDiscord <luatic> "It is undefined behavior to read from the member of the union that wasn't most recently written." https://en.cppreference.com/cpp/language/union#Explanation
15:45 sfan5 huh
15:55 Krock yes that's one of the annoying differences between C and C++
15:55 Krock also the union/struct { .member = 35325 }  notation is C-exclusive (or was it added to C++ recently?)
16:02 MTDiscord <luatic> C++ 20 has it but it's more strict (iirc you can't initialize members out of order or so)
17:25 MTDiscord <jordan4ibanez> https://tenor.com/view/shrek-donkey-you-know-what-else-everybody-likes-parfaits-parfait-gif-22160776
17:26 MTDiscord <luatic> (to unconfuse the IRC users: this is in reply to "irrlicht is like an onion of undefined behavior")
17:46 Desour joined #luanti-dev
20:01 sfan5 fixing the caching in the msvc workflow (broken caching is the reasong it currently takes 1h) is supposedly not that hard, in case anyone wants to bother: https://x0.at/lP8F.txt
20:02 sfan5 (AI output, in case it's not obvious)
20:04 Krock what is this coincidence? I just looked at a failed job that took 51 minutes and the error messages makes no sense whatsoever
20:04 Krock I suppose you could push this to a separate branch to trigger the buildbot
20:05 sfan5 I'll have a fix for the compiling itself ready soon, but I'm not bothering to fix the cache
20:05 sfan5 (github silently changed the VS version included in the runner)
20:11 sfan5 will push https://github.com/sfan5/luanti/commit/89c13b0a5c4c5623d95f55a760db04e4e5d5a8af once the run finishes
20:23 MTDiscord <rollerozxa> I was intending to do this a long time ago but forgot about it - I added a note on the old organisation page (README in a new .github repo) with a direct clickable link to the new one: https://github.com/minetest
20:30 sfan5 pushed
20:54 pgimeno re undefined behaviour of union: my recollection was that it's also the case in C, but that GCC explicitly documents it as valid
20:56 sfan5 > It is undefined behavior to read from the member of the union that wasn't most recently written. Many compilers implement, as a non-standard language extension, the ability to read inactive members of a union.
20:56 sfan5 (cppreference about the C++ behavior)
20:57 sfan5 https://en.cppreference.com/c/language/union for C this appears to be explicitly allowed
20:57 sfan5 I vaguely remember an union being the only strictly portable way to convert function pointers in C
20:59 pgimeno then my recollection was wrong, thanks
22:09 Sokomine joined #luanti-dev
22:33 panwolfram joined #luanti-dev
23:33 YuGiOhJCJ joined #luanti-dev

| Channels | #luanti-dev index | Today | | Google Search | Plaintext