Time Nick Message 02:28 ANAND I'm going to definitely try to implement SSCSM - it's an awesome feature and I don't want it to die. 02:28 ANAND I noticed that nerzhul has made some progress in this direction (https://github.com/nerzhul/minetest/tree/csm_mod_sending) 02:29 ANAND Am I allowed to work on top of his code? 04:01 ANAND Hmm... not much progress has been made on his branch, unfortunately 04:01 ANAND https://github.com/nerzhul/minetest/compare/077f231...a1dd0d3 05:07 ANAND Added `set_fov = true` to `minetest.features` in #7557 05:07 ShadowBot https://github.com/minetest/minetest/issues/7557 -- Expose player FOV to Lua API by ClobberXD 07:16 nerzhul ANAND good new to hear 07:16 nerzhul if you have a design proposal before code propose it and i will amend 07:17 nerzhul my work is very very raw 09:22 ANAND Thanks for the encouragement ;) 09:23 ANAND I have no idea whatsoever regarding the implementation details. Perhaps I might get a better outline once I understand the all mod-related code 09:27 nerzhul the main problem is the serialization and transport of mods 09:41 ANAND True 09:42 pmpp aren't in memory mod data structures to be replicated on client and server ? 09:42 pmpp i asked about rpc earlier and i think it's maybe related 09:55 ANAND Regular mods are purely server-side, and the client doesn't have any knowledge about them. 09:55 pmp-p so csm mod transfer does not include any gamestate ? 09:56 ANAND Oh I thought you were talking about regular mods, sorry 09:57 pmp-p no i'm interested on client side only for now, server looks fine to me 09:57 ANAND At present, the plan is to serialize the mod's files and send them over to the client. 09:57 pmp-p as bytecode or source ? 09:57 ANAND Probably as bytecode, for security reasons 09:59 ANAND SSCSMs could use mod-channels (with convenience wrappers) behind the scenes for communication with their server-side counterpart. 09:59 pmp-p i've read somewhere that luajit has machine specific features, won't it impact on bytecode used ? ( i don't know lua yet ) 10:00 ANAND Not sure about that... 10:00 ANAND It shouldn't affect the mods 10:01 pmp-p as i'm currently developping a stackless vm for python bytecode i'm very interested in projects having already to move both bytecode and gamestate over the wire to see how it's done 10:03 pmp-p i like the lua vm because it can be preempted too 10:03 ANAND Likewise. I'm interested to see how other projects implement mod sending without any problems. 10:05 ANAND Stuff like endianness and text encoding might pose a problem in this regard. 10:06 pmp-p well i've seen yet quite a lot about gamestate serialization and i could say i retain Arrow or Capnproto but it's still a bit far from a running along a VM+bytecode 10:06 pmp-p they say they are machine independant data structure but i've yet to see how it fits 10:11 pmp-p and as client VM must be very well sandboxed, i was asking for RPC system used actually (if any as wiki is not clear about that) 10:17 p_gimeno I don't see any gain in sending bytecode over source, and lots of inconveniences 10:18 pmp-p i tend to agree, but bytecode does not need to compile on client side 10:18 pmp-p and it could be faster to transmit 10:19 pmp-p ideally both should be available 10:19 p_gimeno Lua is quick to compile. Lua and LuaJIT bytecode are incompatible. LuaJIT 32 and 64 bit bytecodes are incompatible. 10:19 pmp-p source while vm is not 100% safe, bytecode when optimized later 10:20 pmp-p p_gimeno: thx for confirming that, i was not sure about portability of lua bytecode 10:20 p_gimeno Lua-to-Lua is OK. LuaJIT-to-LuaJIT would be OK, except for the 64-bit transition. 10:22 pmp-p why not something like lua-wasm ? wasm is fast and makes it easy to sandbox 10:22 p_gimeno But Minetest clients can use either. I believe Windows ships with Lua by default and others with LuaJIT, I may be wrong though. 10:23 p_gimeno Sending it gzipped would reduce bandwidth. 10:25 p_gimeno Lua does not compile to wasm. 10:26 pmp-p yeah not lua-jit but standard lua 5.3 seems to 10:26 p_gimeno MT uses 5.1 only 10:26 p_gimeno (for compatibility with LuaJIT) 10:26 pmp-p they are so different ? 10:27 p_gimeno yes 10:27 pmp-p :( 10:27 sfan5 pmp-p: even the server sandbox does not allow bytecode for security reasons 10:27 sfan5 there is no way we would allow this on the client 10:28 sfan5 p_gimeno: the windows build ships with luajit since a few years 10:28 pmp-p sfan5: i agree but some modders in other games would not want to share code bits sometimes 10:29 pmp-p minetest pleased me because it does not look "closed" 10:29 sfan5 you can still obfuscate code 10:30 sfan5 compare this with javascript, nobody has a problem there either 10:30 p_gimeno sfan5: I said it reversed. Windows with LuaJIT and others with Lua. 10:30 pmp-p dunno i try to never do javascript :p 10:30 p_gimeno Not sure about the others though. 10:32 sfan5 p_gimeno: that would also be wrong since at least debian, ubuntu and arch ship with luajit 10:32 p_gimeno ah okay, that's what I was not sure about, thanks 10:32 pmp-p indeed i had to choose beetween luajit5.1 and lua 5.2 or 5.3 10:41 p_gimeno LJ is THE choice. Sadly the 64 bit version has not been officially released, and MT developers are reticent to ship it by default. But LJ is the fastest interpreter out there, and many servers depend on its speed. 10:42 pmp-p yeah for servers it makes perfect sense, not sure about the client vm for mods though 10:42 p_gimeno (by fastest, I mean among open source interpreted languages) 10:43 pmp-p is performance so important on the client ( which is expected to give full power to the game ) ? 10:46 p_gimeno I can't answer that, but having a different interpreter for the server and for the client makes little sense to me, and unless explicitly disabled in compilation, the client includes a server. 10:49 pmp-p depends on if client is doing physics or the server i guess 10:51 rubenwardy I think that LuaJit is not-secure, so probably shouldn't be used for the client-side VM 10:51 p_gimeno not secure in what sense? 10:52 rubenwardy trying to find where I read i 10:53 pmp-p https://github.com/GoogleBot42/IronBox claims to be a sandbox for luajit 10:53 pmp-p but it's unclear about jit compilation 10:53 rubenwardy our client VM kinda sucks in that there's no isolation from the Minetest process 10:53 p_gimeno FFI is not secure, but FFI needs 'require'. There is a hashing attack that affects both Lua and LuaJIT (and I believe similar attacks apply to Python). 10:56 pmp-p seems the safest is also the slowest... 10:56 p_gimeno yeah, securing things is slow :) 10:57 p_gimeno The attack applies to any hash algorithm which does not have cryptographically secure randomization, and merely consists of deliberately causing collisions in order to slow down the VM or possibly cause a memory overflow. 10:58 pmp-p p_gimeno: i would not chose ffi for cpython it *is* slow, but would compile code instead with nuitka+cython but same as luajit that would not be so portable 11:02 p_gimeno I'm not aware of any security problem with LuaJIT vs. Lua other than through use of FFI. 11:09 p_gimeno btw rubenwardy I've been thinking about #7621. My thought is that it should not be called 'require', it should rather be a Minetest-specific function that is mod-aware. 11:09 ShadowBot https://github.com/minetest/minetest/issues/7621 -- Add secure require() function by rubenwardy 11:10 rubenwardy that defeats the whole reason I'm adding it 11:10 rubenwardy so that you can embed pure Lua libraries in builtin or a mod without having to modify them 11:10 rubenwardy because Lua libraries use `require()`, not dofile 11:11 p_gimeno ah 11:11 rubenwardy it's not for loading mod files 11:11 p_gimeno got it 11:15 p_gimeno I think MT needs a new mod API 11:18 rubenwardy lol 11:19 p_gimeno it wouldn't be too hard to do on top of what there is now actually 11:19 p_gimeno an object-oriented API where you do: local my_mod = minetest.register_mod('my_mod') 11:20 rubenwardy OO in Lua is noticiably slower for not much real benefit 11:20 p_gimeno then all calls would go through it: my_mod:setpos(...) etc. 11:20 rubenwardy for certain things, there is a very real benefit, eg: https://github.com/CapitalismGame/capitalism_game/blob/master/mods/capitalism/company/company.lua 11:21 p_gimeno well, for one it would allow a very clear distinction of what mod called a particular API function 11:21 rubenwardy oh, by OO I guess you mean giving each mod an API table which it calls with :? 11:21 p_gimeno yes 11:21 rubenwardy that's not that much slower 11:22 p_gimeno it would also get rid of the need of using globals to share a mod's API functions 11:27 p_gimeno ... as well as get rid of using get_modpath just to detect if a mod is installed 11:44 sfan5 p_gimeno: actually, I accidentially shipped gc64 luajit with 5.0 11:44 sfan5 but there's been no complains so I didn't revert it 12:03 rubenwardy "accidentally" ;) 12:04 pmp-p "i love when a plan comes together" 14:26 ANAND Hmm, where have the Travis XCode builds gone? 14:26 rubenwardy disabled by sfan as broken 14:26 ANAND Oh nice 14:33 ANAND #8682 is ready for re-review. 14:33 ShadowBot https://github.com/minetest/minetest/issues/8682 -- Make players immortal using immortal=1 by ClobberXD 18:57 paramat merging #8702 18:57 ShadowBot https://github.com/minetest/minetest/issues/8702 -- Mgfractal: Make non-fractal terrain optional by paramat 19:44 paramat merging #8705 19:44 ShadowBot https://github.com/minetest/minetest/issues/8705 -- Re-order mapgens in mainmenu and 'all settings' mapgen selection by paramat 19:47 Krock sfan5: my laptop has some old mobile ATI radeon card installed. it surely uses OpenGL ES 2.0 19:48 Krock https://i.imgur.com/A8YiHdp.png 19:49 Krock it's slow as hell but seems to work just fine 19:50 sfan5 huh 19:51 Krock can still check the glxinfo output but would need to start it .. meh 20:29 sfan5 when do my PRs get merged? ;)