Luanti logo

IRC log for #luanti-dev, 2025-04-04

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

All times shown according to UTC.

Time Nick Message
00:05 MTDiscord <josiah_wi> What's the UB?
00:08 SFENCE joined #luanti-dev
00:11 [MatrxMT] <Zughy> I guess undefined behaviour
00:12 MTDiscord <josiah_wi> Sorry, I was asking about what case of undefined behavior it falls under.
00:14 SFENCE joined #luanti-dev
01:02 SFENCE joined #luanti-dev
01:36 SFENCE joined #luanti-dev
02:09 SFENCE joined #luanti-dev
02:19 SFENCE joined #luanti-dev
02:33 SFENCE joined #luanti-dev
03:04 SFENCE joined #luanti-dev
03:49 GreenXenith joined #luanti-dev
03:57 SFENCE joined #luanti-dev
04:00 MTDiscord joined #luanti-dev
04:20 SFENCE joined #luanti-dev
04:35 SFENCE joined #luanti-dev
05:08 SFENCE joined #luanti-dev
05:31 SFENCE joined #luanti-dev
05:59 SFENCE joined #luanti-dev
06:27 hwpplayer1 joined #luanti-dev
06:39 SFENCE joined #luanti-dev
07:16 sfan5 "taking the address of one array member to get to the next" looks fishy
07:17 sfan5 not sure if the standard allows inserting padding
07:18 SFENCE joined #luanti-dev
07:26 sfan5 no problems generating effective code here: https://godbolt.org/z/6KbPqKsx6
07:28 sfan5 s/array member/class member/ actually. wouldn't be fishy at all with array members :)
07:29 hwpplayer1 joined #luanti-dev
08:19 hwpplayer1 joined #luanti-dev
12:22 MTDiscord <josiah_wi> Ah, yeah, the standard allows padding in structs (with some rules IIRC).
13:10 MTDiscord <luatic> As far as I know &s or &s.x does not guarantee that usage as a many-item pointer works, even if all struct fields are of the same type, and I can imagine this breaking based on how the struct is laid out in memory.
13:10 MTDiscord <luatic> An unfortunate (non-array-like) layout for things like v3f is unlikely, and probably fixable using compiler directives (like packed), so I'm not very concerned about this.
13:20 sfan5 could just add some static_asserts if this is important
13:21 sfan5 that assumes the compiler won't use this UB to do incorrect optimizations
13:26 sfan5 hmm however if you dont have a compile-time constant the codegen gets worse https://godbolt.org/z/Kr6PeT9GT
13:27 MTDiscord <luatic> yeah incorrect optimizations is what i'm more worried about. is the compiler not allowed to assume that if we only take a reference to v.X, we can only mess with v.X?
13:27 sfan5 not sure
13:28 MTDiscord <luatic> anyways i looked at our usages of these operators
13:28 MTDiscord <luatic> they're basically all in loops where i = 0, 1, 2
13:28 sfan5 if the X, Y, Z names didn't matter we could turn the members into a T[3]
13:28 sfan5 but they do
13:28 sfan5 so 🤷
13:28 sfan5 I guess we should use my proposed implementation for safety?
13:29 sfan5 ah great we even already have CODE_UNREACHABLE() in irrlicht
13:29 MTDiscord <luatic> i think we could turn this into a template thing and force i to be a compile-time constant
13:29 sfan5 that would break the loops
13:30 MTDiscord <luatic> we would probably need to write the loops as recursive templates or something
13:30 MTDiscord <luatic> because c++ has no good syntax for "constexpr loops"
13:31 sfan5 time to switch to rust
13:32 MTDiscord <luatic> i was having zig in mind ;)
13:36 MTDiscord <luatic> actually there is something funny we could do
13:38 MTDiscord <luatic> consider: float f = 42; float v3f::*cs[3] = {&v3f::x, &v3f::y, &v3f::z}; for (int i = 0; i < 3; ++i) v.*cs[i] = f;
13:47 sfan5 if you try that with pointers you get what you asked for, but in assembly https://godbolt.org/z/qejcxMerc
13:54 sfan5 FWIW our extended vertex types are also UB because there is no guarantee about member order for non-POD types
13:54 sfan5 so offsetof becomes invalid too
13:56 MTDiscord <wsor4035> i am semi curious on what (active) core devs thoughts/sentiments are regarding adding another language such as rust/zig to luanti
13:56 sfan5 the trouble is not worth it
13:57 sfan5 also depending on what exact parts you expect the new language to be used in we may end up spending significant time just writing bindings between C++ and <new lang>
13:58 MTDiscord <wsor4035> thats why i listed zig/rust since with zig you can just compile c/c++ without caring about bindings, while with rust, can use extern c. but yeahs for other langauges probably would have to do more bindings/ffi/etc
14:00 SFENCE joined #luanti-dev
14:26 SFENCE joined #luanti-dev
14:43 hwpplayer1 joined #luanti-dev
14:45 SFENCE joined #luanti-dev
15:07 TheCoffeMaker_ joined #luanti-dev
15:22 SFENCE joined #luanti-dev
15:47 SFENCE joined #luanti-dev
16:01 cx384 joined #luanti-dev
16:17 [MatrxMT] joined #luanti-dev
16:20 SFENCE joined #luanti-dev
16:25 cx384 Merging #15978 #15931 #15930 and #15967 in 15 min
16:25 ShadowBot https://github.com/luanti-org/luanti/issues/15978 -- Set `CMAKE_POLICY_VERSION_MINIMUM=3.5` to make MSVC CI work again by appgurueu
16:25 ShadowBot https://github.com/luanti-org/luanti/issues/15931 -- Add delay between punching and digging node by ryvnf
16:25 ShadowBot https://github.com/luanti-org/luanti/issues/15930 -- Draw node animation for items by cx384
16:25 ShadowBot https://github.com/luanti-org/luanti/issues/15967 -- Move client code out of ItemDefManager by cx384
16:43 SFENCE joined #luanti-dev
16:45 cx384 Regarding wsor4035 question, in my opinion, using languages like rust/zig in the engine is not worth it, the time is better spent elsewhere.
16:45 cx384 If you start a new project like e.g. minetestmapper which doesn't end up in the Luanti binary you could use another language.
16:58 cx384 merged
17:03 SFENCE joined #luanti-dev
17:10 SFENCE joined #luanti-dev
17:17 SFENCE joined #luanti-dev
17:20 turtleman joined #luanti-dev
17:37 SFENCE joined #luanti-dev
17:45 hwpplayer1 joined #luanti-dev
17:50 SFENCE joined #luanti-dev
18:44 Desour joined #luanti-dev
19:08 SFENCE joined #luanti-dev
19:25 exoticalexo joined #luanti-dev
19:42 SFENCE joined #luanti-dev
19:47 exoticalexo12 joined #luanti-dev
19:49 exoticalexo54 joined #luanti-dev
19:50 exoticalexo11 joined #luanti-dev
19:52 exoticalexo joined #luanti-dev
20:05 exoticalexo joined #luanti-dev
20:25 exoticalexo57 joined #luanti-dev
20:53 exoticalexo joined #luanti-dev
21:06 SFENCE joined #luanti-dev
21:57 SFENCE joined #luanti-dev
22:28 SFENCE joined #luanti-dev
22:32 panwolfram joined #luanti-dev
23:10 SFENCE joined #luanti-dev
23:44 SFENCE joined #luanti-dev

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