Luanti logo

IRC log for #luanti-dev, 2025-06-15

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

All times shown according to UTC.

Time Nick Message
00:07 Juri joined #luanti-dev
00:07 Niklp joined #luanti-dev
01:21 fluxionary_ joined #luanti-dev
02:03 aliasstilltaken joined #luanti-dev
02:08 v-rob_ joined #luanti-dev
03:00 aliasalreadytake joined #luanti-dev
03:59 SFENCE_arch joined #luanti-dev
04:00 MTDiscord joined #luanti-dev
04:41 v-rob_ joined #luanti-dev
04:46 v-rob joined #luanti-dev
05:32 SFENCE_arch joined #luanti-dev
06:28 v-rob joined #luanti-dev
06:39 v-rob joined #luanti-dev
07:02 nekobit joined #luanti-dev
07:38 nekobit joined #luanti-dev
08:22 Warr1024 joined #luanti-dev
08:47 Warr1024 joined #luanti-dev
08:47 imi joined #luanti-dev
09:57 ivanbu joined #luanti-dev
10:52 nekobit joined #luanti-dev
12:02 pgimeno joined #luanti-dev
12:16 SFENCE joined #luanti-dev
12:36 SFENCE joined #luanti-dev
13:00 SFENCE joined #luanti-dev
13:30 SFENCE joined #luanti-dev
14:05 SFENCE joined #luanti-dev
14:14 turtleman joined #luanti-dev
16:38 cx384 joined #luanti-dev
16:58 imi joined #luanti-dev
17:00 v-rob joined #luanti-dev
17:56 Krock Meeting in 3 minutes. https://docs.luanti.org/for-engine-devs/meetings/#2025-06-15
17:56 ShadowBot https://github.com/luanti-org/luanti/issues/2025 -- Fix documentation for string operations. by kaeza
17:57 Krock thanks ShadowBot. Very helpful.
18:00 SFENCE_arch I am here.
18:00 Krock Pinging those who reacted to the meeting announcement. cx384 sfan5 y5nw @luatic
18:00 Krock hello :)
18:01 cx384 hi
18:01 Krock waiting two minutes for people to notice the ping
18:01 MTDiscord <luatic> i am in front of my computer but the sunburn is setting in
18:02 Desour joined #luanti-dev
18:03 Krock ouch. that sucks. I hope it's not too intense.
18:03 Krock > Is it important that passwords are not stored excessively long in plain text in memory? [...]
18:03 Krock #14196 #14129
18:03 ShadowBot https://github.com/luanti-org/luanti/issues/14196 -- Change the way how password is stored in C++ engine. by sfence
18:03 ShadowBot https://github.com/luanti-org/luanti/issues/14129 -- Add transfer_player function to request client move to new server by sfence
18:06 Krock If a process gains access to program memory, then you've got more important issues. I think the main argument here could be to ensure nothing too bad happens in case of a CVE where the server could abuse a bug in the client.
18:07 SFENCE_arch 14196 PR has been created in reaction to comment from @luatic under 14129. I do not understand much the security in SW.
18:08 MTDiscord <luatic> I will say that at the time of making that comment, I was not aware of the effort required to implement this.
18:09 MTDiscord <luatic> But still it doesn't seem like a bad idea to me. The new code is mostly separate, this shouldn't add much maintenance burden.
18:09 Krock the LoC statistics are slightly biased too, due to the license header of two new files. In general it does seem to isolate the auth-related code better from the existing files
18:09 MTDiscord <luatic> And passwords are sensitive data and worth protecting especially as users might - even though they should not - reuse them.
18:10 SFENCE_arch So, should we afk #sfan5 to remove change request from 14196, and @luatic will review it?
18:10 Desour >If a process gains access to program memory
18:10 Krock I also have a few comments on there; yet not submitted. I think we can continue this PR
18:10 Desour read access*
18:11 Krock Desour: read or write does not matter. it's both the same restrictions
18:11 Desour other things an attacker could read are private info, like paths
18:12 Desour it does matter. if an attacker has write access, then you certainly have bigger worries. but if it's just read access...
18:12 sfan5 I don't plan to review 14196 further btw
18:12 sfan5 also hi
18:12 MTDiscord <luatic> sure, i'll try to find time for it
18:13 SFENCE_arch sfan5: So, cna you remove change request, so somebody else can review, approve and merge?
18:13 sfan5 sure just remove the label
18:15 SFENCE_arch Ok, i will rebase it.
18:17 Krock hmm. aren't we supposed to use the official "srp.cpp" file?
18:17 Krock or has it been modified too much to be drop-in compatible in case of updates?
18:18 Krock asking because I'm currently looking through that PR and there's a few non-trivial changes to that file
18:18 Desour according to the copyright header, it comes from est31: https://github.com/est31/csrp-gmp
18:18 Desour and this upstream hasnt changed since 9 years
18:19 MTDiscord <luatic> yeah i think luanti has always rolled its own crypto?
18:19 MTDiscord <luatic> (w.r.t. SRP)
18:19 SFENCE_arch We already did changes to srp.cpp file.
18:19 Desour but est31's is a based on https://github.com/cocagne/csrp , which has changes
18:20 btcgiveaway joined #luanti-dev
18:20 MTDiscord <luatic> looking at those changes most don't seem very meaningful
18:21 MTDiscord <luatic> at least the recent ones
18:21 MTDiscord <luatic> we should probably take a closer look though
18:22 Krock So the question is answered, I presume. Continue 14196.
18:23 Krock proceeding with the next topic in a minute if there are no objections
18:24 Krock > The original author of #13811 introduced a class BitField -> see here. If we like this class [...]
18:24 ShadowBot https://github.com/luanti-org/luanti/issues/13811 -- [no squash] Add node texture variants by sfence
18:24 Krock "here" = https://github.com/luanti-org/luanti/pull/13811/files#diff-2be35250aa71dc4852f4955c67e13cabe131c20b7373cc92385484b391aa8f62
18:25 SFENCE_arch That class can replace param2 types strings in node definitions.
18:25 MTDiscord <luatic> That utility seems useful, but BitField feels like a misnomer. I'd be inclined to call it something like "BitView". It is after all essentially a view into a bunch of bits.
18:25 Krock BitViewSetter because it also can set bits :P
18:26 MTDiscord <luatic> Or "BitSlice" maybe, you get the idea. Maybe also put the reference to the value into the class.
18:26 Krock but why are we reinventing structs with bitfields?
18:27 Krock * packed structs with bitfields
18:27 Desour because it's dynamic, probably
18:28 MTDiscord <sfence> Now paramtype2 has to accept string keys for all posible combinations of parameters stored in param2. We can add more and more paramtype2 keys, or replace it by some more flexible way for moders.
18:28 Krock there's at maximum as many as there's paramtype2 types
18:29 Krock I'm afraid that read_bitfield_parts/push_bitfield_parts could perform rather badly if used carelessly
18:30 Krock reference to the C++ -> Lua optimizations where the values were pushed as arguments to Lua such that it could perform optimizations. This isn't possible as long the data type is an entire table
18:31 SFENCE_arch We can have some check if bit areas are in allowed range and do not overlap.
18:31 MTDiscord <luatic> The entire paramtype2 situation is one of those "it's a mess but a proper solution is not feasible short term"...
18:32 cx384 I generally don't like how the node texture variants are implemented in this PR.
18:32 cx384 Instead I would prefer tile modifier (also for param2 conditions), like I proposed in https://github.com/luanti-org/luanti/issues/15203
18:33 SFENCE_arch So, the best way now is probaly to just add more paramtype2 keys in #13811
18:33 ShadowBot https://github.com/luanti-org/luanti/issues/13811 -- [no squash] Add node texture variants by sfence
18:34 Krock > <Desour> because it's dynamic, probably
18:35 Krock I see, yes. Some paramtype2' share the same property but do not have the same bit count for e.g. rotations or color
18:36 Krock In that regard, such class could be more helpful, e.g. when using a LuT to retrieve the bit offset and width of a specific (let's say) property
18:36 Krock after thinking over this a bit, I think having a BitField class (or however one may want to call it) can be helpful. ofc, this also needs unittests tests.
18:37 Desour IIRC, the idea is that you, as a modder, give for each paramtype2 an offset and width, and the engine uses that to get the value from param2. so we don't have hardcoded combinations (like colorfacedir) anymore
18:38 SFENCE_arch cx384: Looks like 15203 attempt to fix different problem than 13811.
18:38 MTDiscord <luatic> it should also not be in numeric.h, that header is already too bloated as is
18:38 Krock I can see purposes outside of just node variants. -- Any other opinions on this particular helper class?
18:38 Desour (dynamic as opposed to structs that you can't declare on runtime)
18:38 SFENCE_arch Desour: Yes, it is idea behind.
18:40 cx384 SFENCE_arch: It's API can be used to solve both problems and more.
18:40 SFENCE_arch Krock: Now, you cannot limit nuber of colors in palette. You will have always 256 or 8 or 32, depend if colored is used with wallmounted, rotated or normal node.
18:40 cx384 e.g. position depended textures
18:41 Krock cx384: The feature request that you linked in a new concept that does not blend in very nicely with the generic tile API that is currently available. It's not entirely necessary to define conditions in the tiledef. They could as well be sent by the server when placing the node. Ofc, there woudn't be any visual prediction.
18:43 Krock SFENCE_arch: there's only a specific amount of bits available - which is 8. Hence, a dynamic implementation wouldn't get you far. I think the benefit here is to potentially make the code more generic and understandable.
18:43 Desour Krock: the client would need to store the selected tiles then, so it can always meshgen it
18:44 SFENCE_arch cx384: but param2 allow players to select node with texture they wants.  you can have one marble node with N textures/colors without needs to register N node for each stairs variant etc. And player will be able to place marble with wanted texture anyway. it will be probably very dificult to do with conditional textures. And also limited by neighbours nodes.
18:44 Krock Desour: sorry, would you mind explaining a bit more what you mean by that?
18:45 Desour Krock: you said that the server could send the selected tiledef on placement of a node
18:46 Desour Krock: but that has to be transfared to meshgen somehow
18:46 Krock Desour: no no. I meant that the server sends the param2 value anyway, and that would likely define which tile (or blend mode) it would pick
18:46 Desour ah, ok
18:47 cx384 SFENCE_arch: I already implemented this partly, and hopefully will make I PR soon. Maybe it will make more sense when you see it in action.
18:47 SFENCE_arch luatic: now it is where it was in adpoted PR... if we decide to use it, I will try to create PR only for it soon. And apply ideas from this discusion.
18:48 SFENCE_arch cx384:  ok.
18:50 MTDiscord <luatic> personally such a view seems useful to me
18:50 Krock before you spend too much time, it might also be a good idea to write a "mockup" API concept beforehand to find out whether it's what people seem to want
18:51 Krock oh nvm I thought you were referring to the node texture variants in the sentence "And apply ideas from this discusion."
18:52 SFENCE_arch Krock: it was mean in case of creating separate PR for class BitField
18:53 Krock okay. perfect.
18:54 Krock Are there any other meeting PRs/issues that someone would like to discuss?
18:55 MTDiscord <luatic> I wonder whether there are better ways to achieve backwards compatibility
18:55 SFENCE_arch So to be clear, do I uderstand well that we want separate PR for class BitField (mey be with different name) as replacemnet for paramtype2 string keys in node definitions?
18:56 MTDiscord <luatic> "Replacement" seems an odd term, it'd just be a utility to help us implement more flexible param2 types
18:57 MTDiscord <luatic> but I'd say yes, this utility is worth having if executed well
18:57 Desour paramtype2 = "p2type" | {w, o, "p2type", w, o, "p2type"}
18:57 Desour ^ would be a nice api, imo
18:58 Desour (maybe with subtables)
18:58 SFENCE_arch Ok. I expect that actual paramtype2 will be converted in Lua register_node function to bitfields in that case...
18:59 SFENCE_arch subtables will be nice for this I belive.
18:59 Krock SFENCE_arch: In a first iteration you could propose the struct/class and demo it with one drawtype. if it turns out to be nice to use, we can have a look at implementing it for other drawtypes too.
19:01 Krock or just the struct/class with unittests. I don't care.
19:01 SFENCE_arch Krock: ok
19:02 Desour you could also start by not doing any lua api changes and just implement colorfacedir and co. in C++ with bitfields
19:02 sfan5 fwiw i think we should keep a simple solution for the time being and go with ##13811
19:02 sfan5 ##13811
19:02 ShadowBot https://github.com/luanti-org/luanti/issues/13811 -- [no squash] Add node texture variants by sfence
19:02 ShadowBot https://github.com/luanti-org/luanti/issues/13811 -- [no squash] Add node texture variants by sfence
19:03 sfan5 well wait
19:03 sfan5 the param2_variant doesn't seem as simple as i thought
19:03 SFENCE_arch sfan5: that PR actually include BitField class.
19:03 sfan5 (did the PR change or was I just unaware?)
19:04 SFENCE_arch Only rebased, not any big changes from my side to this moment.
19:04 sfan5 I see
19:04 sfan5 I thought it was a simpler reimplementation
19:04 SFENCE_arch No it is adoption of original abnded PR.
19:06 cx384 (SFENCE_arch: This is how the tile_modifier API will probably look like https://gist.github.com/cx384/df409b4021bdcfd1b74d3502697234c8 it's like a binary decision diagram.)
19:06 SFENCE_arch cx384: So, it will be aslo able to use param2... nice :)
19:07 sfan5 maybe we should go all the way and implement BPF for client side scripting 😎
19:07 sfan5 starting with arbitrary mini-programs to make mesh building decisions
19:08 SFENCE_arch Client side scriptiong is optional because of security reasons?
19:08 Krock what does BPF stand for?
19:08 sfan5 https://en.wikipedia.org/wiki/Berkeley_Packet_Filter
19:08 sfan5 linux uses it heavily to allow userspace to give the kernel mini programs to execute but safely
19:08 MTDiscord <luatic> sfan5: which brings us right back to my initial point of "the proper solution is more work" 🙃 but yeah long term we'll need scriptable client meshgen
19:09 sfan5 for example if you run tcpdump 'port 80 or (port 123 and net 1.0.0.0/8)' the latter program gets turned into BPF and actually executed in kernel space
19:10 Krock uhm is this a new topic, or somehow related to node variants?
19:10 Krock 'cause I currently do not see any meaningful connection
19:10 MTDiscord <luatic> Krock: I think cx384's proposal starts to resemble the beginnings of a programming language ;)
19:11 Desour how hard would it actually be to support ebpf modding? is there a lib, or would we have to copy code from linux? x)
19:11 Krock @luatic I'm afraid of that too
19:12 cx384 there are not jumps (yet), so it is not turing complete, but it has a variable you can set, adjacent_nodes.
19:12 sfan5 Krock: it's a half-serious proposal
19:16 Krock mhm. It's one idea. Perhaps it can be of some use. Who knows.
19:17 Krock As there's no new messages coming, I assume there's no other topic to discuss? Otherwise let's end it here to not drag it on for longer than needed.
19:19 MTDiscord <luatic> fine by me
19:25 Desour (to answer my question from before: I've found at least 2 bpf userspace vms https://github.com/eunomia-bpf/llvmbpf https://github.com/iovisor/ubpf )
19:36 Desour I'd like to propose a new label: @ Meshgen (idk if the @ makes sense). reason: we have so many issues and PRs about meshgen, and it's a relatively important and isolated part of the engine
19:40 Krock most of the rendering part is related to meshgen, thus it would be mostly synonymous to "@ Client / Audiovisuals"
19:40 Krock hmm. formspec has its own label, though.
19:41 Desour with @ Client rendering *
19:41 Krock since when does that exist?
19:41 Desour idk
19:41 Desour since long?
19:42 Krock approx 2020. okay.
19:42 Desour why does "@ Client / Audiovisuals" exist btw.? audio and visual are very different
19:43 Krock such issues date back to 2014
19:49 sfan5 take this with a grain of salt but an interpreter only BPF implementation should be easy
19:52 SFENCE joined #luanti-dev
19:52 celeron55 i have tried to propose a BPF like thing since forever
19:52 celeron55 so, +1 from me
19:53 celeron55 (i've been talking about it in terms of physics, but graphics is fitting also)
19:54 MTDiscord <luatic> Lua.
19:54 Desour wasm.
19:55 Desour wgsl (webgpu).
19:55 sfan5 spir-v
19:56 sfan5 anyway you could just have bpf program that get param0, param1, param2 as input and then from a fixed array of vertices, decides which ones to use
19:57 sfan5 same for texturing
19:57 celeron55 small lua environments would work just fine as BPF-like things
19:57 celeron55 with very limited apis
19:58 sfan5 BPF has the nice property of being guaranteed loop-free
19:58 celeron55 well that is a distinct benefit, that's for sure
19:59 Desour unbounded loop free*
20:16 YuGiOhJCJ joined #luanti-dev
20:18 SFENCE joined #luanti-dev
22:33 panwolfram joined #luanti-dev
22:42 stg-developer joined #luanti-dev
22:45 stg-developer left #luanti-dev
23:05 Eragon joined #luanti-dev

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