Time Nick Message 00:33 est31 ShadowNinja, you there? 00:33 ShadowNinja est31: Yep. 00:34 est31 ok, nrzkt has posted a PR that will break network protocol. Now server list displays every server that logs in 00:35 est31 my idea would be (to also catch future protocol breaks) 1. make a new list as the new default, and 2. there, the server sends min_proto and max_proto integers, and the client compares them to their own 00:36 est31 what are your ideas on this 00:37 ShadowNinja est31: The server doesn't really have a max proto, just a current proto. I don't know what you mean about a seperate list, but sending proto versions sounds good. 00:38 est31 1. is for the transition, new clients will ignore sent version 00:38 est31 2. would be sth like this https://github.com/est31/minetest/commit/49b7d1c4cab2640bbc344ccaeee8aa30bf3371cd 00:43 ShadowNinja est31: You mean switch to servers2.minetest.net or something like that? I don't agree with that, it's just too ugly. 00:43 est31 sorry meant 1. is for the transition, *old* clients will ignore sent version 00:44 luizrpgluiz would be possible to fix bad alloc 00:44 est31 other idea: add a new param to the sent json value. all old servers get in "list" all new in "servers" 00:44 est31 "list" value in this one --> http://servers.minetest.net/list 00:48 est31 master server then checks whether the server sends max and min value, and then puts them into the according list 00:48 est31 ShadowNinja ^ 00:51 ShadowNinja luizrpgluiz: Yes. You just add more memory sticks to your computer. :-) 00:52 ShadowNinja est31: That's just as ugly and confusing. 00:52 ShadowNinja est31: Old clients will work if we add a new field, it's sent as JSON. 00:53 ShadowNinja We can release a patch release that handles the proto version field if needed. 00:54 est31 ShadowNinja, they will work, but players will try to connect to servers they dont support then 00:55 est31 oh patch release 00:55 est31 also an option 00:56 est31 but then both servers and clients need to switch 00:58 est31 can you add the proto version fields to master server? it needs an entry so that it gets checked for being the right type 00:58 est31 & can you test my patch 00:58 est31 dont want to set up test master server just for that 00:59 est31 ShadowNinja ^ 01:00 luizrpgluiz ShadowNinja: no use to do this, it would be great if there was a command that is limited or almenta up memory for the game as in minecraft 01:00 ShadowNinja est31: `echo 'HOST="127.0.0.1";PORT=5000' > config.py && ./server.py` 01:00 ShadowNinja That's just about all it takes to start a master server. 01:00 est31 ok 01:01 ShadowNinja As long as you have flask installed and the JS template rendered. 01:01 ShadowNinja The README explains it all. 01:01 ShadowNinja luizrpgluiz: Huh? 01:02 ShadowNinja You can't just write a command to use less memory. 01:02 VanessaE ShadowNinja: I think he means some kind of "swap everything out on demand" function... which would be pointless since the OS is supposed to do that anyway 01:02 ShadowNinja Java has GC, so that command probably just runs the GC to clen up old stuff, Minetest removes things as soon as they're unused. 01:03 VanessaE he may be experiencing a memory leak or the heavy usage behavior of the mesh cache 01:03 n4x you can still leak memory and/or resources while using a garbage collector 01:04 ShadowNinja luizrpgluiz: How much memory do you have? Are you using an HD texture pack, a big sobgame, or a lot of mods? 01:04 ShadowNinja subgame* 01:08 luizrpgluiz ShadowNinja:because my friend installed and recreated some mods of monsters and he has 8 gb of ram 01:09 ShadowNinja luizrpgluiz: That isn't an answer to my questions. 01:09 est31 ^ 01:10 luizrpgluiz ShadowNinja: sorry,well, I'm not using any mod, and also no texture, I have 4gb of ram 01:11 ShadowNinja luizrpgluiz: Are you using a big subgame like dreambuilder? 01:12 est31 VanessaE, there was some pregeneration issue that needed tons of ram wasnt there? 01:12 luizrpgluiz ShadowNinja: I do not use any subgame, the problem is that my friend has a server with 20 mods 01:13 VanessaE I don't remember 01:13 est31 ShadowNinja, "pip3 install APSchedule flask" sais Could not find any downloads that satisfy the requirement APSchedule 01:14 est31 Could not fetch URL https://pypi.python.org/simple/APSchedule/: 404 Client Error: Not Found 01:15 ShadowNinja est31: Well, it's on pypi: https://pypi.python.org/pypi/APScheduler/3.0.1 01:15 est31 ah its apschedule*r* 01:16 est31 I'll add a commit that fixes this 02:35 est31 ShadowNinja, PRs are out, one for minetest, and one for the central server. can you review them? 02:36 est31 master-server/#5 02:36 est31 master-server#5 02:36 est31 #2334 02:36 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 02:36 est31 https://github.com/minetest/master-server/pull/5 04:28 est31 ShadowNinja, we can discuss #2334 options in irc too if you want. 04:28 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 04:54 est31 Zeno`, your comments on #2334? 04:54 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 05:01 Zeno` Personally I don't like inverted logic (I'd prefer e.g. http://dpaste.com/3M9C3B0) but... *shrug* 05:01 Zeno` looking at rest of PR shortly 05:03 Zeno` does this take into account "strict protocol checking" (or is that even relevant here?) 05:04 Zeno` ShadowNinja, is the serverslist expert :) 05:04 Zeno` - , 05:11 est31 no strict protocol checking is not taken into account, however its still done on connection. 05:11 Zeno` but will it show the server in the resulting list? 05:12 * Zeno` reads the comments on 2234 now 05:12 est31 yes 05:12 est31 also strict protocol checking is server-side only 05:13 Zeno` yeah just wondered how it worked in the serverlist (i've never looked at that part of the code before) 05:13 est31 to support that, we'd need an additional field... 05:13 Zeno` Anyway, lgtm 05:14 Zeno` apart from the inverted logic. I suppose the compiler would optimise that anyway but it's more of a (subjective) readability issue. 05:14 Zeno` Why do you suggest it goes into 0.4.12? 05:15 est31 so that clients which are 0.4.12 can hide new servers 05:15 Zeno` Oh, I think I see... 05:15 Zeno` yeah 05:15 Zeno` ok, well if SN wants to merge it I'm fine with it. Code looks fine 05:18 Zeno` ahh ok. Now I've re-read 2327 it all makes sense. I was confused for a bit there heheh 05:18 Zeno` (well, now that you've amended your comment) 05:18 est31 if you remove your comment, I'll remove mine :) 05:19 Zeno` ohhh... kinky 05:19 Zeno` ok, removed 05:19 VanessaE lol 05:19 Zeno` oh damn 05:19 Zeno` removed the wrong comment :/ 05:19 est31 yea seen it 05:19 Zeno` I know I didn't... pressed cancel by mistake I think 05:19 Zeno` or did I? 05:20 Zeno` see? you got me all flustered 05:20 Zeno` I'm blushing like a flamingo 05:20 est31 as long as you dont do rm -r / home/zeno/minetest/debug.txt 05:20 est31 :D 05:21 Zeno` I don't have a minetest/ directory 05:21 Zeno` oh 05:21 Zeno` I see what you did there 05:21 Zeno` evil 05:30 VanessaE he takes after STEAM programmers :P 06:08 est31 ShadowNinja, the server-side filtering will however require some work 06:08 est31 either we accept that requests to the url execute some lookups 06:09 est31 or we put a squid instance between server and users 06:09 est31 because, problem is, list.json is cached 06:09 est31 all the master server does is generating this file, and sending it upon request 06:10 est31 so, in order to send it basing on minetest version, we have to iterate the list, and filter the servers 06:11 est31 (from own experience) I admit that loading the master list can take a second or two on a 64 kbps connection 06:11 est31 but most ppl have better internet 06:13 est31 or we write our own cache instead of squid 06:15 ShadowNinja est31: The server will have to accept a post request with the protocol version. You can set up caching with X-MT-Proto: ; and Vary: X-MT-Proto; or so. 06:15 ShadowNinja The server list isn't currently cached though. 06:15 est31 there is a static subfolder 06:16 est31 and the /list request is served by return send_from_directory(app.static_folder, app.config["FILENAME"], 06:16 est31 cache_timeout=0) 06:16 ShadowNinja est31: Yes, that doesn't have to be used anymore though. 06:17 est31 ? 06:17 ShadowNinja est31: Eventually it should be backed by something like Postgres so it remembers servers when they go down. 06:17 ShadowNinja The fact that it uses static/list.json is an implementation detail that doesn't matter. 06:18 est31 also, I'm for url params, not custom headers 06:18 ShadowNinja Someday when I get some time I'll have to make the master server much smarter. 06:19 est31 what would be the use case for remembering servers? 06:19 ShadowNinja est31: Oh, yes, you could use get params too. That might be better, 06:19 est31 measuring % of uptime 06:19 ShadowNinja ^ 06:20 ShadowNinja And validation, and some extra statistics usefull for sorting. 06:20 est31 like? 06:21 ShadowNinja And being able to say things like "There have been 123 unique servers since 2015-99-99" 06:21 est31 yeah 06:21 ShadowNinja est31: Like how often a server goes down and for how long. 06:22 est31 but for that (unique servers since xxxx) we need to be abled to uniquely identify servers 06:22 est31 only possible with some auth method 06:22 est31 passwords or better public key auth 06:23 ShadowNinja This would be done with flask-sqlalchemy and flask-migrate and flask-script and... (you can build a django-like out of all of the flask modules there are) 06:23 est31 then we can also leverage that key for logging into servers 06:24 ShadowNinja est31: Yes, IP:Port works well in most cases, but not if the server moves or something. Each server would have to automatically generate a 64+-bit key and save it. 06:25 ShadowNinja 32-bit might be enough, but better safe. 06:25 ShadowNinja There's sooo much to do, but it will take a while to implement. 06:25 est31 ed25519 works with 32 byte keys 06:26 est31 public & private both same length 06:26 ShadowNinja And SRP leaves you with a shared secret that's 32 bytes IIRC. 06:30 est31 with shared secrets you can do HMAC - based signing without needing any encryption. can be used for "authenticated" actions like password changing or so. 06:30 est31 when we dont want encryption 06:43 est31 ShadowNinja, name the get params min, max to be concise or sth fancier? 06:50 ShadowNinja est31: Huh? 06:51 ShadowNinja est31: prot_min Vs. protcol_version_min kind of thing? 06:51 est31 you want to read /list?min_proto_version=13&max_proto_version=24 or /list?min=13&max=24 in the logs? 06:51 ShadowNinja est31: I'd chose the longer one. 06:52 est31 ok, doing that 06:52 ShadowNinja Short, but not to the point where it loses clarity or becomes confusing (minimum what?). 06:54 est31 to answer your github comment, I think its better to retain the min, max names, and not name it version, and min, just because its always the same. it can change in future versions, and *all* code touching versions has min and max 06:54 est31 and to be really tight with server.cpp behaviour, servers with strict version will send LATEST_PROTOCOL_VERSION as min and max 07:05 Zeno` Can some check the test case in #2328 please? 07:05 ShadowBot https://github.com/minetest/minetest/issues/2328 -- wrapDegrees_0_360() returns incorrect values for values close to -360 07:05 Zeno` someone* 07:05 Zeno` just to make sure I haven't gone insane again 07:07 Zeno` well, more insane 07:08 est31 http://codepad.org/EuDGqQgw 07:08 est31 ^ Zeno` 07:08 Zeno` Yes, so .. "testing -359.250000... Patch: -359.250000 != Orig: 0.750000" 07:09 Zeno` That's weird... why didn't it compile on codepad for me? 07:09 est31 because I've added two (int) 07:09 Zeno` ok 07:09 Zeno` I wasn't as determined heh 07:09 est31 lol 07:10 Zeno` C doesn't require that cast... codepad is being a silly billy 07:10 Zeno` anyway I'm more interested in the results 07:10 est31 -Werr 07:11 Zeno` compile with -Wall -Wextra (no warnings... as expected by the C standard) 07:11 est31 lol 07:12 Zeno` I can find the section in the standard that mentions it if you like 07:12 Zeno` heh 07:12 Zeno` but I'm more interested in the results not codepad bugs or not bugs lol 07:13 Zeno` clang -O3 -Wall -Wextra -Wpedantic wrap.c -lm gives even fewer warnings than gcc pedantic 07:13 Zeno` probably different default standard 07:16 est31 second lang that has an ugly ternary: python 07:16 est31 first is lua 07:17 Zeno` C only has one ternary operator unfortunately 07:17 Zeno` wait a sec... why are we talking about ternary operators now? 07:18 est31 because I'm changing the master server and searched for ternary operators as im inexperienced w/ python 07:19 est31 and why only one? 07:19 est31 has python more than one? 07:19 Zeno` *sigh*. lol. Do you agree that wrapDegrees(-359.25) should not return 0.75? :p 07:19 Zeno` No, but C could have more than 1 07:19 Zeno` it might be refreshing 07:20 Zeno` I suspect you're deliberately trying to send me insane 07:21 Zeno` nore is a mathematics expert, I'll ask him :p 07:21 est31 you werent supposed to find out my evil master plan 07:21 * est31 wonders what to do now 07:21 Zeno` nore, Do you agree that wrapDegrees(-359.25) should *not* return 0.75? 07:21 est31 perhaps make an even evlier one? 07:22 Zeno` I am trying to establish my sanity est31 and you keep throwing in strange comments. I think I'm insane now :( 07:22 nore ehm... it should return the only number that is of the form x + 360k with k an integer, in the range [0, 360) 07:22 nore so -359.25->0.75 07:22 nore sorry ;) 07:22 Zeno` yes but... hmm 07:23 Zeno` the function returns [-360, 360] 07:23 nore well, that's not what its name says 07:23 Zeno` so IMO -359.25 should stay... -359.25 07:23 Zeno` I know, but I didn't write the function hehe 07:24 Zeno` nore #2328 07:24 ShadowBot https://github.com/minetest/minetest/issues/2328 -- wrapDegrees() returns incorrect values for values close to -360 07:25 Zeno` I just realised there may be two bugs... I've been looking at wrap degrees when my original report was in respect to wrapDegrees_0_360() 07:25 nore yeah, that's the usual thing with C modulo... 07:25 est31 NOTE: Wrapping to 0...360 is not used because pitch needs negative values. 07:26 nore one quick way that is often used is (x%360 + 360)%360 07:26 nore but it can be a bit slower :( 07:27 nore but anyway, ifs are quite slow too 07:27 est31 there is no if 07:27 est31 where is one 07:27 est31 ah 07:27 nore there would be one for another way to fix this 07:27 est31 wrapDegrees_0_360 07:28 Zeno` I don't think using fmod() is going to be very efficient 07:28 Zeno` maybe it is, dunno 07:28 Zeno` anyway correctness before efficiency 07:29 Zeno` doesn't matter if it's 50000x faster but returns incorrect results 07:30 Zeno` For reference, here is the implementation in-situ: https://github.com/minetest/minetest/blob/master/src/util/numeric.h#L187 07:30 Zeno` and IMO that function should return -359.25 for -359.25 07:31 Zeno` But I'm still in the establishing my sanity phase 07:31 nore then its name should be changed 07:31 Zeno` for -350 it returns -350 07:32 Zeno` which is as per the function description is correct (disregarding the misleading function name) 07:33 Zeno` The question is therefore: is -359.25 within the range [-360, 360]? If so then according to the comment description it should return the value unchanged 07:34 nore it is 07:34 Zeno` Ok, I think I am sane 07:34 Zeno` good 07:34 nore but then you need to change the name... 07:34 Zeno` I dunno why we use degrees anyway... maybe it's an irrlicht thing 07:34 nore btw, what is this function used for? 07:34 Zeno` yeah I'll change the name after it returns correct values 07:35 Zeno` handleCommand_PlayerPos() 07:35 nore yeah, but what for? 07:36 Zeno` adding :3 07:36 Zeno` I dunno actually 07:37 Zeno` I can't remember why I even started looking at the function. Was related to a PR 07:37 * Zeno` will see if it's used anywhere meaningful 07:38 Zeno` if it's not used in a meaningful way then it should probably be deleted 07:38 Zeno` So I have 3 tasks now 07:41 Zeno` anyway, now that it's established as a minor bug I will: a) check if wrapDegrees() is used meaningfully and if not delete it; and b) check wrapDegrees_0_360(); c) rename one of both (depending on outcome of a) so they are named in a way that's expected in a normal situation 07:42 Zeno` one or both* 07:43 Zeno` it's only used in handleCommand_PlayerPos() so surely it can be gotten rid of 07:43 Zeno` then again maybe not 07:46 nrzkt hi 07:46 nore hi 07:50 est31 ShadowNinja, should I really entirely remove the cache? 07:50 est31 its just loaded & saved 07:50 ShadowNinja est31: What cache? 07:51 ShadowNinja est31: I'm not sure about the server-side filtering though, BTW. 07:52 est31 because the problem is that when you restart the masterserver, the cache in static/list.json is read, so that servers dont have to re-announce 07:52 est31 when you remove this read, the master list will be empty at restart 07:52 est31 which is ofc bad 07:52 est31 yea nrzkt's comment is quite good 07:53 est31 because then ppl know and dont complain "I want to connect to this and that server, why is it down?" 07:53 est31 theyll still complain but only the super dumb ones 07:54 ShadowNinja est31: Oh, cache isn't really the right word, it's more of a mini-database. 07:54 est31 yea, after I saw this load-save stuff I also feel that its more like that 07:54 est31 so, what to do? 07:54 nrzkt thanks est31 :) 07:55 ShadowNinja est31: Eh, leave it for now. 07:56 ShadowNinja We can use gzip transfer encoding for slow connections. 07:56 est31 isnt it used already 07:56 est31 at least my firefox uses it 07:56 est31 dunno bout MT 07:56 est31 gonna check with wireshark 07:57 nrzkt ShadowNinja #1845 is a great thing, i looked at the code, only sqlite is migrated, right ? 07:57 ShadowBot https://github.com/minetest/minetest/issues/1845 -- Split block position into separate fields in SQLite3 database by ShadowNinja 07:59 est31 this low level db stuff needs realm support 08:00 ShadowNinja nrzkt: Yes. 08:00 ShadowNinja est31: It needs a call to curl_easy_setopt(curl, CURLOPT_ACCEPT_ENCODING, ""); 08:01 ShadowNinja ("" == all builtin supported encodings) 08:01 nrzkt ShadowNinja, if i understand your commit, user doesn't have to do anything to migrate its schema version ? 08:01 est31 simple hashes could have been used in a backwards compatible way: just multiply the realm number with a certain large number, and then add it. with that mechanism realm 0 were already the default map. with split up entries, its a bit more complicated 08:01 ShadowNinja nrzkt: Yes, just load the world and wait for the migration to complete. 08:01 est31 but yes, splitting up is better 08:02 ShadowNinja est31: ...or add a realm id column. 08:02 est31 yes 08:02 est31 that would be the new way 08:03 nrzkt then it's good for me. I don't want to keep old map formats, having an automated migration is good 08:03 ShadowNinja That allows SQLite to do some ordering optimizations. 08:04 est31 ShadowNinja, master server list is hosted by you isnt it 08:05 ShadowNinja est31: Nope, sfan hosts it ATM. 08:07 nrzkt ShadowNinja, then it's perfect , please rebase #1845, i'll test it and if ok it could be merged 08:07 ShadowBot https://github.com/minetest/minetest/issues/1845 -- Split block position into separate fields in SQLite3 database by ShadowNinja 08:07 est31 nrzkt, what should be behaviour if the server has unsupported protocol? just show an appropriate error when trying to connect or sth else? 08:08 nrzkt if the entry could be grayed 08:08 est31 does formspec support this... 08:08 nrzkt i think the entry must be grayed and we get a tooltip when mouseover to show what's the problem 08:09 ShadowNinja nrzkt: Can't rebase it ATM. I'll do it tomorrow if I remember. You might be able to do it yourself though. 08:09 est31 tooltips are against least supprise 08:10 nrzkt no problem ShadowNinja, but i haven't time to refactor a so huge pr :p 08:10 ShadowNinja Gotta go sleep now. o/ 08:10 nrzkt i'm working on network and study the server performance bottlenecks 08:10 nrzkt good night :) (it's 9AM here :p) 08:10 est31 bye 08:10 ShadowNinja nrzkt: Huge? You haven't seen many of my PRs... 08:11 nrzkt maybe, i like huge useful pr 08:11 nrzkt mod_security must be there too 08:11 ShadowNinja Oh, and someone update the topic. 08:12 est31 freeze not in effect anymore 08:12 est31 ~topic 08:12 ShadowBot est31: FEATURE FREEZE FOR 0.4.12 IN EFFECT. Release date: soon™ | Minetest core development and maintenance. Chit-chat goes to #minetest. Consider this instead of /msg celeron55. http://irc.minetest.ru/minetest-dev/ http://dev.minetest.net/ 08:13 nrzkt freeze is in effect 08:13 nrzkt we have the branch. Master is not the freeze :) 08:16 nrzkt we must work on master. Objective is to integrate useful functions and have less than 85 PR at the end of the month 08:24 nrzkt https://github.com/minetest/minetest/commits/freeze-0.4.12 09:42 nrzkt #2327, as requested i added compression mode byteFlag to _INIT packet 09:42 ShadowBot https://github.com/minetest/minetest/issues/2327 -- [Patch 3/4] Network rework: Packet fixes & cleanups by nerzhul 09:47 kahrl nrzkt: regarding the last commit to master, have you made sure that all those SAO classes are actually unused? I don't think they are 09:47 nrzkt they are 09:47 est31 greying out is still in the works... 09:47 nrzkt the code is never called anywhere 09:47 nrzkt a simple grep show it 09:47 kahrl nrzkt: what about ServerActiveObject::create 09:48 est31 lol and it compiles? 09:48 kahrl that one won't show up in grep 09:48 nrzkt it's a virtual class 09:48 kahrl est31: yeah because the SAO factories are added dynamically as the classes are registered 09:49 kahrl what is a virtual class? 09:49 nrzkt a class which many virtuality ? :p 09:49 nrzkt this code isn't called, i'm sure. 09:49 kahrl have you tried loading a map made in 0.3 with item objects? 09:50 nrzkt 0.3 is not the point here 09:50 kahrl (or mobs, which the DummyLoadSAO was made for) 09:50 nrzkt i discussed with mods maintainer and they doesn't use this 09:50 kahrl huh? 0.3 compatibility was exactly the point of the code you removed 09:50 nrzkt the only class is the LuaEntitySAO, classed from lua APIs 09:51 nrzkt called* sorry 09:52 kahrl of course mods won't use those classes, they can't be used from mods 09:54 nrzkt yes 09:55 kahrl when I load liquid_test_world, a world made on 2011-11-08, I get a lot of these: https://gist.github.com/kahrl/13c359de7547107373fb 09:56 nrzkt ... 09:57 nrzkt we must have a migration engine, 0.3 maps mustn't exist in the future. 09:57 nrzkt 4 years old map without compat improvements 09:58 kahrl why remove the code at all? it didn't hurt anyone 09:58 nrzkt we must have a convergent model. 09:58 nrzkt i thought it wasn't used, nobody on IRC disagree in 12 hours of PR and discussion :) 09:58 kahrl DummyLoadSAO and ItemSAO were the "migration engine" 09:59 nrzkt and LUA modders tell me that the ItemSAO wasn't used anymore, this is right because it's never called in the code 09:59 nrzkt the ItemSAO code was commented 09:59 kahrl yeah I agree, the code could certainly use better comments 10:00 kahrl and perhaps instead of keeping ItemSAO, they should be converted to modern item entities 10:00 nrzkt maybe we could convert this item, no ? 10:01 nrzkt a convergent model is required in minetest, it's better to have an automated migration process instead of a compat and unmaintainable code 10:03 nore do we *really* need 0.3 compatibility? 10:03 nrzkt do you think we can convert type 3 entity to LUA entity easily ? 10:03 nore it is at least 3 or 4 years old 10:03 nore it shouldn't be too difficult 10:03 nrzkt 0.5+ will not, bug we must find a way to migrate old entities, and in 1 or 2 year we remove the old migration process 10:03 nore just use the code that was next to the one in add_item 10:04 kahrl nore: we do, people have worlds that were started in 0.3 and may contain blocks that were never loaded in 0.4 yet 10:05 nore hm.. ok, then perhaps keep it some time more 10:06 kahrl there isn't really a point in time where that won't be the case anymore 10:06 nore perhaps the best would be to do a world converter then 10:07 nore and drop all the deprecated stuff 10:07 kahrl I think that is what nrzkt suggests 10:07 Zeno` I asked about 0.3 compatibility a few weeks ago and the answer was that it's needed. I wish I could remember why it was brought up 10:07 nore that would avoid keeping some old code 10:07 kahrl I'm not convinced that it will be easier to maintain the world converted than to keep around a few bits of compat code in the engine 10:07 kahrl converter* 10:08 nore what I mean: a converter from old versions to the one written at the same time as the converter 10:08 nrzkt hmmm... we could have a convert layer into the engine, in a dedicated source to do those things, then the convert layer will be centralized and would be maintainable 10:08 nore and then, keep compat code, but only for things more recent than the converter 10:08 nore and when the converter is too old, make another one 10:09 nrzkt that make sense, 10:11 nrzkt then, how can i convert kahrl types into LuaEntitySAO ? 10:13 kahrl heh, kahrl types 10:15 Zeno` :D 10:15 est31 lol 10:17 nrzkt kahrl have you got an idea, how can we convert your rats into LuaEntitySAO ? 10:18 kahrl not really, I haven't touched this code in years 10:18 nrzkt nobody can maintain this piece of code, really ? :( 10:18 nore problem with rats is that you moreover need to mod to add them 10:19 nrzkt for Dummy in fact the problem is simple to resolve 10:19 nore while items are easier to convert 10:19 nrzkt there can do anything, the class is empty 10:19 nrzkt they can do nothing (sorry...) 10:19 nore wouldn't it be best just to remove all unknown entities? 10:21 nrzkt for dummy, we could remove them, no ? they are totally useless 10:21 nrzkt for Item we must convert them 10:22 nore well, it would be quite a lot of compatibility code 10:22 nore including some lua api calls 10:22 nore so the question is: do we *really* want to convert the items or is just deleting them enough? 10:22 nrzkt no API calls where removed in my commit, then the compat code could be easy ? 10:23 nrzkt kahrl, Zeno` suggestions ? 10:25 kahrl nore: it could also be implemented by working more directly with the serialized object 10:26 kahrl nore: i.e. setting the type to ACTIVEOBJECT_TYPE_LUAENTITY and updating the static data 10:28 nrzkt i think we must work here: ClientActiveObject* ClientActiveObject::create 10:29 kahrl why client? 10:29 nrzkt client and server have both the problem, no ? 10:30 kahrl not if the server converts the objects before sending them to the client 10:30 nore kahrl, yes, but then some mod that would change builtin_item serialization format would break it 10:31 kahrl nore: such a change would have to be compatible with the old serialization format anyway, to be compatible with older 0.4 maps 10:31 nore ok, you're right 10:31 nore but what about rats or other mobs? 10:31 nrzkt and we need also, in the future, a migration code also for that 10:31 kahrl nrzkt: client might have to know about them if connecting to older servers, but we are breaking the protocol soon anyway so no problem 10:32 nore change them to entities of a mod that adds them, or remove them? 10:32 kahrl nore: not sure, they are kind of ignored right now so it might be best to delete them 10:32 nore and what happens currently with ItemSAOs? 10:33 kahrl we don't want to make the engine dependent on any mob mod that isn't even in minetest_game 10:33 kahrl nore: they are kept (not converted to lua entities) 10:33 nrzkt yes, we are breaking protocol, and i think we must remove all the compat layer and move to migration layers, it permit to have a unified code and not spaghettis 10:33 nore yes, but can they be seen? clicked? 10:33 kahrl nore: yes 10:34 nore hm, ok then 10:34 kahrl nore: well, before HEAD removed ItemSAO anyway 10:34 nore about spaghetti code: there are a few things that would benefit from polymorphism or macros 10:35 nrzkt of course, but not there ? 10:35 nore in the object code somewhere 10:35 nore but CAO iirc 10:36 nore anyway, we can look at that later 10:37 nrzkt i think you are right, heritage and polymorphism aren't used, but it's not our case here :) 10:37 nore *cough* 10:37 * nore just looked at item serialization 10:37 nore and it's awful 10:38 nore there are tow different accepted formats (compat code again...) 10:38 nore the old one would be much easier to convert old items to 10:38 nore but it is deprecated 10:38 nrzkt a compat layer there could permits to migrate serialization blocks too , we could work on it 10:39 kahrl nore: a ItemSAO -> LuaEntitySAO converter shouldn't need to worry about updating the itemstring 10:39 nrzkt I re-added old types (and convert some functions types to ActiveObjecType) https://github.com/minetest/minetest/commit/c58d49977da5aab88f5a9d5b540c6237ca5cdcb5, then we can work on migraiton layer 10:40 nore kahrl: so use the old version, because it is easier? 10:40 kahrl nore: yeah, the code for deserializing it exists anyway 10:40 nore oh, btw: items seem to have an age 10:40 nore but that age is only the time they spent while loaded 10:41 nore should we change that to time they existed? 10:44 nrzkt est31: you mean we should use byteflags for protocol version too ? 10:44 kahrl nrzkt: I still get https://gist.github.com/kahrl/13c359de7547107373fb on current HEAD 10:44 est31 what you mean with that? 10:44 est31 enum? 10:44 kahrl nrzkt: because ItemSAO and DummyLoadSAO don't exist 10:45 puhfa hm, speaking of item serialization... 10:45 puhfa whats the reason behind disconnecting immediately whenever theres a serializatino error? 10:45 kahrl well, not exactly that gist, since it prints the type as an integer and not as a char now 10:45 nrzkt i only restore the types for preparing the migration code :) 10:45 nore kahrl, wasn't type=3 rat? 10:46 nrzkt https://github.com/minetest/minetest/blob/c58d49977da5aab88f5a9d5b540c6237ca5cdcb5/src/activeobject.h#L31 10:46 nrzkt yes 10:46 est31 nrzkt, yes to my question? 10:46 nrzkt no, to nore 10:48 nrzkt est31: i talked about your comment on protocol, you talked about LATEST_PROTOCOL_VERSION, and my byteFlag option for compression 10:50 est31 nrzkt, ah ok, The comment wasnt about byteflags, it just asked to update the #define value here: https://github.com/nerzhul/minetest/blob/708567a85db894ca012207189117f63b40d8b941/src/network/networkprotocol.h#L113 10:50 est31 and I wasn't sure what current practice is 10:51 est31 whether the protocol version gets updated at every break or at every release 10:51 nrzkt oh i see, you are right, but not now, the protocol isn't defined yet, and maybe the protocol version handling could be modified :p 10:51 est31 what are your ideas for version handling ? 10:52 nrzkt at this time, i haven't ideas, but you are right SERVER_PROTOCOL_VERSION_MIN and CLIENT must be updated, i'll do this now 10:53 kahrl I guess it would actually be fine to simply delete ItemSAOs, since we can say that they despawn after such a long time :) 10:53 est31 lol 10:53 nrzkt what is ItemSAO exactly ? 10:54 nrzkt is this the dirt i throw from my inventory ? 10:54 kahrl nrzkt: yes, if you threw it in a 0.3 version 10:54 kahrl or early 0.4 10:55 nrzkt then we could say that all of those SAO can be safely removed from MT 10:55 kahrl if the errors in my gist are silenced, yes 10:56 nrzkt ok 11:04 * Zeno` is sorry he hasn't kept up with this conversation; I'll have to read the logs 11:05 * est31 read the conversation, but didnt get stuff done 11:05 Zeno` I got heaps done. Cooked and ate heaps of food :D 11:06 Zeno` Oh, you mean coding... I didn't get any of that done 11:07 Zeno` kahrl, regarding #2328 ... I'm sort of surprised at the results. Is fmodf() not x87 intrinsic? 11:07 ShadowBot https://github.com/minetest/minetest/issues/2328 -- wrapDegrees() returns incorrect values for values close to -360 11:08 est31 nrzkt, have you checked that stuff builds? 11:08 est31 guess PASSWORD_SIZE is used 11:08 Zeno` obviously I'm not going to make a patch that is almost twice as slow just because the size of the code is shorter 11:09 Zeno` maybe a glibc thing... /me looks 11:09 nrzkt no est31 11:09 nrzkt i purged the static password size, using std::string. 11:10 est31 ah ok 11:10 nrzkt i don't want to see static size for strings, we will unify all to std::string 11:10 est31 then its fine :) 11:10 nrzkt or char* if you want :p 11:12 est31 commit msg should be fixed though its not PLAYERNAME_SIZE ... :D 11:12 Zeno` wait... no max size for strings? 11:13 Zeno` in the protocol? 11:13 nrzkt in fact files are passed as strings... 11:13 nore pushing that in 15 minutes if no-one complains: https://gist.github.com/Novatux/96c101940500dde6520e 11:14 nrzkt nore, this will stop the loading for those types, but entities stays registered into DB, no ? 11:14 Zeno` so... playername length is not limited any more? 11:14 nrzkt we must cleanup DB too 11:14 nore hm.. need to check that 11:14 nrzkt playername is limited 11:14 Zeno` phew 11:14 nore does anyone has a world old enough to test? 11:15 nore nrzkt, where is it limited then? 11:15 nrzkt it's only the size of the CHAR[28] 11:15 nrzkt oh... i see 11:16 nrzkt you are right, there is no test with this version, we must test it :) 11:17 Zeno` it has to be limited to 27 characters otherwise there is a) an overflow exploit; and b) the potential for DoS (e.g. a ~0 - 1 length playername) 11:17 nrzkt it's not PLAYERNAMESIZE, it's PASSWORDSIZE macro :p 11:17 nrzkt but both must be tested, in fact there is a missing test 11:17 kahrl Zeno`, no idea, would be interesting to see what fmodf compiles to 11:17 kahrl there are FPREM and FPREM1 instructions but they might be slow 11:18 kahrl also they are "partial" which means you need to execute these instructions in a loop until some flag is unset 11:18 Zeno` kahrl, compiles to glibc call as expected. I will look at glibc source code soon(ish) 11:19 Zeno` there might be a better way anyway 11:21 Zeno` I have a vague feeling this is one of the functions I optimised heavily during my project Euclid experiments (unfortunately I can't find all my source code! :3) 11:21 Zeno` I did it for radians but... 11:22 est31 git blame 11:22 Zeno` will look at it tomorrow I think. Very tired again 11:22 Zeno` est31, nah I never had my solutions on git :( 11:22 est31 oh you didnt commit them 11:22 nrzkt ok, i fixed the size check : https://github.com/nerzhul/minetest/commit/d6a8fa55b1c60bff000fe3556a2001926deb526d 11:24 Zeno` should be >= PASSWORD_SIZE or > PASSWORD_SIZE -1 11:24 Zeno` I think... /me looks at whole file 11:27 nrzkt why -1 ? 11:27 Zeno` NUL character has to be somewhere 11:27 Zeno` still looking at whole file 11:28 nrzkt and not >= because 28 is the size 11:28 Zeno` yeah of course, lol 11:28 Zeno` err 11:28 Zeno` no 11:28 nrzkt and -1 ? if i add PASSWORD_SIZE > -1 every password will be refused :p 11:28 Zeno` I didn't paste the whole expression :p 11:29 nrzkt lol 11:29 nrzkt and the string could not be null 11:29 nrzkt NetworkPacket* never return NULL while reading packet 11:29 Zeno` if (playerName.size() > PLAYERNAME_SIZE) should be one of the two I pasted above (after playername.size()) 11:29 Zeno` i.e. https://github.com/nerzhul/minetest/commit/d6a8fa55b1c60bff000fe3556a2001926deb526d#diff-f51fe3ca5b0c9edcb3069ed502ba6067R207 11:29 Zeno` this line 11:30 nrzkt yes i know 11:31 Zeno` if playerName.size() == PLAYERNAME_SIZE then it seems to be too long for the protocol 11:31 nrzkt what are you saying ? 11:31 nrzkt the sender send a std::string serialized 11:31 nrzkt the packet has changed :) 11:32 Zeno` hmm ok 11:32 Zeno` still looking at whole file 11:32 Zeno` :) 11:33 nrzkt it's a network protocol, you must look both client and server :p 11:33 Zeno` i know... I was just about to say "meh, I also have to look at..." 11:33 Zeno` too much work 11:34 Zeno` how many characters in length can a password be? 11:34 nrzkt it's a sha1 at this time, then 28 11:34 nrzkt but the auth will be changed, as ShadowNinja requested, then don't focus on this code ^^ 11:35 Zeno` so the network protocol doesn't include the terminating \0 character? 11:35 nrzkt for strings ? 11:35 Zeno` yeah 11:35 nrzkt look at NetworkPacket operator<<(std::string 11:36 nrzkt https://github.com/nerzhul/minetest/blob/protocol-fix/src/network/networkpacket.cpp#L72 11:37 nrzkt then we can say \0 wasn't here 11:37 Zeno` ok, that's all I really wanted to know :) 11:41 Zeno` bbiab. Must clean up the mess I made in the kitchen heh 11:44 nrzkt kahrl ? if a SAO isn't loaded, it will not be removed from DB ? 11:44 est31 ow 11:46 nrzkt i talked about previous old entities to remove 11:49 est31 i know 11:57 est31 did github just redirect me to https://github.myshopify.com/ 11:57 est31 man, I really liked github 11:57 est31 until now 11:59 est31 may have been an accident 12:04 kahrl nrzkt, it should 12:05 kahrl I guess it depends on how your changes interact with the statification code 12:14 kahrl actually no 12:14 kahrl ServerEnvironment only removes a static object if the corresponding active object has m_removed == true 12:14 kahrl so, it won't remove a static object if there is no corresponding active object 12:15 kahrl if you look at DummyLoadSAO, what it did was provide a dummy corresponding active object with m_removed == true 12:16 kahrl in order to remove unused old object types 12:27 nore kahrl, so we should add DummyLoadSAO back? 12:27 kahrl yeah 12:41 est31 nrzkt,can you review #2334 again? 12:41 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 12:41 est31 gone eating 12:41 est31 pls reply in github while im off 12:56 nrzkt kahrl, erf, no other way ? 12:57 kahrl nrzkt: probably not, other than redesigning the static object system 12:57 nrzkt we could not call directly the removal ? it's anoying, it may be useful 12:57 sfan5 who highlighted me? 12:58 kahrl nrzkt: where would you do that? 12:58 sfan5 oh 12:59 sfan5 ~tell est31 yes, i run servers.minetest.net 12:59 ShadowBot sfan5: O.K. 13:00 nrzkt hmmm let me look at the code 13:00 kahrl nrzkt: I guess ServerEnvironment::activateObjects would be a place to do it 13:00 kahrl nrzkt: but... 13:01 kahrl nrzkt: objects are intentionally not deleted if deserialization fails 13:01 kahrl nrzkt: because the failure might be due to a bug, and not deleting the objects avoids data loss in this case 13:02 nrzkt yes. you are right 13:04 nrzkt oh... clearobject uses massive lists, is there any reason ? Vectors could be better there 13:06 kahrl it would probably be better, yes 13:07 nrzkt i'll look at this after resolve our case 13:07 kahrl something like this? https://gist.github.com/kahrl/046fe79cb014b26bc6db 13:08 kahrl where isObsoleteType would be a new static method of ServerActiveObject 13:08 nrzkt seems go to prevent unloading, but we keep old datas into database 13:09 nrzkt but anyway, i think it's better to prevent loading instead of trying to destroy it 13:13 nrzkt ok for you fix. I'll fix some std::list to std::vector too 13:14 nrzkt void listAllLoadableBlocks(std::list &dst); , why passing a reference instead of a returning the list ? 13:15 kahrl there is no reason 13:15 nrzkt ok, i remove it 13:15 nrzkt i will clear those referenced and push 13:17 kahrl well, the return value version has a downside 13:18 kahrl Map::listAllLoadableBlocks will have to copy the list 13:18 kahrl since there are no move constructors 13:19 nrzkt okay, then this improve the performance ? 13:19 kahrl changing it? 13:19 nrzkt to keep it :) 13:19 kahrl probably so, yes 13:20 kahrl but compiler optimizations are weird so I can't say for certain 13:20 nrzkt ok, i keep it, but change std::list to std::vector 13:32 nrzkt it seems the change from std::list to std::vector speeds up the server 13:32 nore how significant is the change? 13:33 nore I mean, the speedup 13:33 nrzkt i have no measures but my mind for that and it seems that the server starting is a little bit faster (migrate database use this modified function) 13:35 nrzkt for the ingame speedup: nothing because only clearAllObjects function use it, but this will speed up it 13:36 kahrl database migration only happens with the --migrate option 13:36 nrzkt oh, sorry then :) 13:37 nrzkt i try the clearobjects command on my own loaded server to see how many times is spent 13:37 nrzkt kahrl, you'll propose your patch soon ? 13:38 nrzkt or nore, maybe 13:38 kahrl which one? 13:38 nore I still have the ignore-old-objects patch 13:38 nore but not one that will remove them 13:39 nrzkt we could keep them for now, i think 13:40 nore so, should I merge my patch? 13:41 nrzkt could you link it another time ? 13:41 nore yep 13:42 nore https://gist.github.com/Novatux/96c101940500dde6520e 13:43 nrzkt maybe we must keep the old ID names to prevent strange things, and use it in your test 13:43 nrzkt i think this is better 13:45 nrzkt hmmmm there are list at other places 13:46 nrzkt this commit is good i look at other lists to remove 13:47 est31 anybody has knowledge of mapgen? I want to know: is cavegen or mud reflow (whatever its real name is) restricted to some area around newly created blocks? 13:49 nore est31: 1 mapblock in each direction 13:49 nore and blocks are always created as 5x5x5 mapblocks 13:50 nore so that makes 7x7x7 blocks 13:50 est31 sorry, meant newly created mapblocks* 13:50 est31 to understand minetest.delete_area 13:52 nore nrzkt, better? https://gist.github.com/Novatux/bc9fc6fde97f387f851a 13:55 nrzkt also replace 2 and 6 in the test pelase :) 13:55 nrzkt please* 13:56 nore so, a lot of ||? 13:57 nrzkt non 13:57 nrzkt no*, just replace 2 and 6 into your test by the corresponding enum value :) 13:58 est31 nore, which minimum Chebyshev distance (in same unit as xyz coordinates pls) from p must a node n have in order to be not affected anyhow by deletion of mapblock containing node p? 13:59 kahrl est31: there is no such number 14:00 nore mods can have effect 14:00 est31 disregarding mods 14:01 nore so you mean, not being erased by map regeneration? 14:01 est31 map regeneration, cavegen, mud reflow whatever mapgen related effect there is in core 14:02 nore then if they are at (chunk_size + 1) * mapblock_size for each coordinate, it should be ok 14:03 est31 ok thx 14:03 kahrl what if p is at the top of the world and n at the bottom and deleting p causes sunlight to shine upon n 14:03 nore nrzkt: https://gist.github.com/Novatux/bc9fc6fde97f387f851a 14:03 est31 yea ok disregarding that 14:04 nore kahrl: anyway, there are problems with sunlight currently, depending on the height of structures 14:04 nore some structures high enough in the sky don't cast shadows on the ground 14:05 nore even 80 nodes can be enough 14:05 kahrl I think it aborts when it hits an unloaded block 14:05 nore yeah, there is something like that 14:06 nrzkt perfect 14:06 nrzkt nore: agree for commit 14:07 nore ok, pushed 14:07 est31 nrzkt, dont review my PR yet, I'll have to fix an issue with it first 14:08 nrzkt no proble est31 14:09 nrzkt kahrl, there are many std::lists instead of std::vectory and we are doing many sequential reads, then the vectors are very very more optimized than lists, i looked at the code to replace it 14:14 kahrl nrzkt: have you checked that the iterator usage is still valid after that change 14:14 kahrl nrzkt: especially in client.cpp where it says "This loop is intentionally iterated the way it is" 14:15 nrzkt the iteration is same 14:15 nrzkt i'm not changing loop reading, only the memory container 14:15 kahrl no but vector iterators and list iterators have different invalidation rules 14:16 nrzkt you are right but their usage is very simple there, a simple push and after a sequential read 14:16 kahrl if you delete an item from a vector, all iterators are invalidated, not so for lists 14:16 fz72 hey there, map seed is still broken, when i create a new world with seed 44, the world has a random seed, next i create a world with seed 34, now the world has seed 44 14:16 kahrl I wouldn't call clearing a list while iterating it simple 14:17 kahrl I don't even understand how this is valid to begin with 14:18 kilbith fz72: i can reproduce, report an issue on git 14:18 kilbith this has been broken by hmmmm 14:19 nrzkt kahrl: i recheck vector calls, and all is sequencial, we don't remove specific elements from mentioned vectors 14:20 kahrl nrzkt: oh, nevermind, I got confused by sendlist vs. deleted_blocks 14:23 kahrl I think this loop should be simplified at some point (should be easier to do with std::vector) 14:23 nrzkt i also think we have many things to simplify in map loops, there are many loops everywhere, i think we can do simpler things if the use our brain a little :) 14:24 fz72 kilbith: i created an issue #2341 14:24 ShadowBot https://github.com/minetest/minetest/issues/2341 -- map seed is still broken 14:24 nrzkt this is bug isn't solved ? 0.4.12 was frozen because of that, no ? 14:26 nrzkt ok i'll do the same optimisation for ClientMap::updateDrawList, Map::timerUpdate and ServerMap::save() 14:37 Zeno` merging #2337 14:37 ShadowBot https://github.com/minetest/minetest/issues/2337 -- Grab GUIChatConsole::m_font, fixes segfault when changing font_size by kahrl 14:38 nrzkt Zeno` enter into the chat, Zeno` merged a PR, Zeno` disappears. 14:39 shadowzone o.O 14:39 Zeno` :) 14:39 fz72 it think this bug can be fixed if g_settings is used instead of settings in emerge.cpp on line 364 14:39 fz72 *I 14:40 Zeno` add to 0.4.12 as well? 14:40 * Zeno` thinks so 14:43 Zeno` emerge.cpp? 14:43 nrzkt we tested the current commits on my running server with kilbith with plantlife and using some mese TNT: 100% cpu but no lag 14:43 kilbith yep 14:43 nrzkt it seems better than before, we got lagged at each tnt :s 14:44 Zeno` oh wow... loadParamsFromSettings() is a bit strange 14:44 fz72 src/emerge.cpp 14:45 fz72 why is there g_settings and settings? 14:45 Zeno` no idea 14:45 Zeno` doesn't make sense 14:46 nrzkt i think for 0.5+ we need to unify settings reading into a unique class 14:47 Zeno` it had better not use a std::map or one of the other containers that are not O(1) 14:47 nrzkt wtf 14:48 fz72 loadParamsFromSettings() is called with g_settings but it seems in the function g_settings is diffrent to settings O.o 14:48 Zeno` reading and setting settings is currently as slow as ... slower than a snail 14:48 nrzkt sfan5 serer 504 14:49 nrzkt server HTTPD 504: https://travis-ci.org/minetest/minetest/jobs/51081581 14:49 Zeno` I have some ideas for settings 14:49 nrzkt ? 14:50 fz72 how should i fix the seed bug, should i always use g_settings? 14:50 Zeno` I've even implemented a few. This current settings are *way* too slow 14:51 nrzkt using a class with cache is the minimum. The settings must be loaded at server start. Some settings must be read-only and other read-write 14:51 nrzkt (example bind address 14:51 Zeno` std::map is not a cache 14:51 Zeno` fz72, see map.cpp line 3153 14:52 Zeno` fz72, I dunno what that does but I could look (or you can) 14:52 Zeno` nrzkt, I'll look after settings :) 14:53 est31 crafting is also slow as snail 14:53 est31 try to craft a stack of wood into planks 14:53 nrzkt Inventory is a pain, it's very very slow 14:53 est31 you *will* wait at the server 14:53 Zeno` you guys should have tried 0.4.9 and earlier 14:54 Zeno` then you would know slow heh 14:54 est31 lol 14:54 est31 dont even know which the first MT version was I played on 14:54 est31 meh history 15:00 fz72 Zeno`: i don't understand what it does 15:01 * est31 found out favorite is correct spelling after all 15:02 sfan5 nrzkt: if the build errors because of failed downloads just restart it; notify me if it happens often 15:02 sfan5 est31: got the ~tell i sent you? 15:02 est31 thought this were a typo in mainmenu lua 15:02 est31 sfan5, yes 15:02 est31 I was just interested about who hosts that server 15:03 est31 sfan5, seen the PR 15:03 est31 https://github.com/minetest/master-server/pull/5 15:03 sfan5 est31: which PR? 15:03 sfan5 oh 15:03 sfan5 looking at it now 15:07 fz72 g_settings is used for new worlds and settings is used for already existing worlds 15:12 fz72 Zeno`: I know this #2211 is closed for some reason but I think this is the right fix for this problem 15:12 ShadowBot https://github.com/minetest/minetest/issues/2211 -- Fix map_meta.txt error when loading a new world (last try) by ngosang 15:13 Zeno` I can't reopen it 15:13 Zeno` the branch has been deleted 15:19 nrzkt why use a std::set in ActiveBlockList::update ? :o 15:22 kilbith fz72, the reason is here : http://irc.minetest.ru/minetest-dev/2015-01-18#i_4118130 15:25 Zeno` lol 15:25 Zeno` yeah, I remember that 15:28 fz72 why is there fixed_map_seed and seed 15:28 fz72 ? 15:29 est31 awwww why does fgettext escape formspec 15:29 est31 there should be a way to disable it 15:30 est31 just for one call 15:34 Zeno` http://irc.minetest.ru/minetest-dev/2015-01-18#i_4118910 15:34 Zeno` heheh that's funny 15:34 Zeno` I like reading back on logs 15:37 fz72 loadParamsFromSettings() is called twice first with g_settings and second from map.cpp 15:37 nrzkt sfan5: is the patch applied on masterserver ? 15:37 sfan5 nrzkt: yes 15:37 nrzkt i mean: production master server, not sources :p 15:38 Zeno` where *is* hmmmm, btw? I kinda miss him :3 15:39 est31 hes in #mt 15:39 sfan5 nrzkt: yes 15:39 sfan5 i merged the patch, pushed, pulled on the vps and restarted uwsgi 15:39 nrzkt perfect, thanks 15:40 sfan5 the patch doesn't do critical things? 15:40 sfan5 what do you need it for? 15:40 sfan5 or did you just want to make sure proto_{min,max} works? 15:40 nrzkt no not critical, because unused by all servers 15:41 est31 not yet 15:41 nrzkt but 0.5+ servers will use it to declare their version 15:41 sfan5 you mean 0.4.12 15:41 est31 and 0.4.12 should have that too 15:41 est31 to be abled to say "hey, this is too recent for me" 15:42 nrzkt i'm working on 0.5+, 0.4.12 protocol is same a 0.4.11 15:42 nrzkt 0.4 series = old versions which could stay with proto 24 by default 15:43 nrzkt and yes, you are right, 0.4.12 needs to distiguish to recent, sorry ^^ 15:43 nrzkt too many std::lists in my head :p 15:43 est31 do a git pull, and compile :) 15:44 est31 sb removed them today I heard 15:46 est31 anybody knowing lua well on here 15:47 est31 I have a function that gets variable number of params, it should call second function with the same params 15:47 est31 so function fgettext(text, ...) return core.formspec_escape(fgettext_ne(text, ...)) end will that work? 15:48 nore I think it does 15:50 nore btw: I saw your client mod, but what about adding general mainmenu mod support? 15:51 fz72 I fixed map seed #2342 15:51 ShadowBot https://github.com/minetest/minetest/issues/2342 -- Fix map_seed by fz72 15:52 nrzkt please remove printf :) 15:52 nrzkt someone can test ? 15:52 est31 nore, you mean to enable more mainmenu modding? I dont know a good model how to achieve this 15:53 fz72 sorry forgot xD 15:53 nore I don't know either, but we should perhaps think a bit more about it 15:54 est31 also find use cases, then finding models is easier 15:55 nore we have at least one use case 15:55 est31 I can generalize my use case as far as I can 15:56 est31 I can also add some way to add gui support in the future 15:56 est31 then ppl dont have to mess with internal files anymore 15:57 est31 like mainmenu/init.lua 15:58 est31 ok the func works with one param 15:58 est31 then I hope it works with others too 15:58 est31 s/others/more/ 16:25 est31 ok, #2334 is ready... 16:26 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 16:26 est31 nrzkt ^ 17:58 nrzkt can someone look at #2342 17:58 ShadowBot https://github.com/minetest/minetest/issues/2342 -- Fix map_seed by fz72 18:06 nrzkt ok je vois que dans le TNT déjà il appelle un vieux truc :p 18:08 nrzkt sfan5: is there any github for nuke ? you use deprecated calls 18:12 nrzkt hmm.... option enable_rollback_recording isn't used anywhere 18:28 celeron55 of course it is used 18:28 celeron55 your grep skills clearly suck 8-) 18:30 nrzkt where did you see it celeron55 ? because my grep --color -Rn doesn't show something good 18:31 nrzkt in fact Server::rollback() call always return an object, then every rollback action is used. I tried it on my own server with TNT, rollback.sqlite increase from 4096 to 222000 o :) 18:31 celeron55 actually... 18:31 nrzkt you are right option is set to a variable, but variable isn't used 18:31 celeron55 yes 18:31 nrzkt and variable is set at search server::asyncrunstep too... 18:32 celeron55 well that's clearly a regression then 18:32 nrzkt s/search/each/ 18:32 nrzkt i'm fixing it by testing the setting at Server constructor. I don't think we should hot disable rollback and hot enable it 18:33 celeron55 nrzkt: there seem to be concerns about the pace of things happening right now; i think i'll have to remind you that if you do larger file or code reorganizations or compatibility-breaking changes, make sure to give them plenty of time and real-world testing before they end up in upstream 18:34 nrzkt celeron55: no problem, every huge change is in PR 18:34 celeron55 you actually have the chance of making very many people very angry if you fail to do it 18:35 nrzkt well, you are right, i don't commit to master directly if it's not a little fix which doesn't impact the core 18:36 nrzkt like the unit test fix (which affect my production machine but not my testing machine), or the std::list replacement to std::vector, checking every algorithm to see if it's rentable 18:36 nrzkt other changes passes PR 18:37 celeron55 also you'll probably have to hilight people in here to get the needed eyeballs for such changes so don't be afraid to do it in this case 18:37 nrzkt i talked about those changes on IRC, kahrl was here, please look at IRC logs this afternoon (GMT+1) 18:37 celeron55 i guess the non-hyperactive developers will come out from their holes when there's something big to argue about... at least hopefully 18:38 nrzkt and also Zeno` and nore :) 18:39 celeron55 Zeno doesn't really have the full trust of the core team yet as he's so new (it's probably one part of why people are concerned) 18:40 nrzkt okay :) 18:40 celeron55 this is actually a bit nasty from my standpoint, interestingly enough 18:40 celeron55 it seems some people would be happier if nothing happened so that they wouldn't have to worry about things... 18:41 nrzkt in fact, there are two devel model, the devops model which is agile, and the old school model which would say: it works don't touch this 18:42 celeron55 the best way is never any of the extremes 18:42 nrzkt and some old coders may be from the old school, have code which works, and they are right, devops like code which works too, but modify it to optimize if necessary 18:42 nrzkt ofc 18:52 celeron55 what exactly is the state of the release right now? 18:52 nrzkt Zeno` has backported some little fixes, but maybe some other fixes can be backported too 18:52 nrzkt https://github.com/minetest/minetest/commit/81b9c023c4f96d2db06706496e0578fdd1b6377b for example 18:52 celeron55 hmm i think zeno did say the code is in good state as far as he can tell some days back 18:53 celeron55 did someone make an RC build and did anyone test it? 18:53 celeron55 for windows 18:53 kahrl https://forum.minetest.net/viewtopic.php?f=18&t=11227 18:53 nrzkt a RC build was in the road by BlockMen, 18:53 nrzkt s/in/on/ 18:55 celeron55 the comments indicate that it works similarly as the previous release so it's fine; we can request a final build from BlockMen once everything is in place otherwise 18:55 nrzkt kilbith have you tested #2342 for #2341 blocker ? 18:55 ShadowBot https://github.com/minetest/minetest/issues/2342 -- Fix map_seed by fz72 18:55 ShadowBot https://github.com/minetest/minetest/issues/2341 -- map seed is still broken 18:56 est31 get #2334 in there too? or make master server itself more smarter and filter for old clients? 18:56 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 18:56 nrzkt because master server is updated, i agree. It's necessary for networking layer transition 18:57 nrzkt let me test it another time before, and if you could factorize the code i mentioned 18:57 nrzkt oh you answers est31, sorry :) 18:57 est31 np 18:57 nrzkt ok if the factorization is too huge, maybe factorize later, in master. 18:57 est31 ok 18:58 nrzkt celeron55, after which delay would you like to get 0.4.12 out ? 19:02 celeron55 it looks like we can add a version bump commit to freeze-0.4.12, merge the thing into stable-0.4 and tag it now 19:02 nrzkt now ? 19:03 nrzkt there is a blocked in the PR 19:03 nrzkt map seed regression 19:03 celeron55 did map seed work in 0.4.11? 19:03 nrzkt in fact map seed works, but if you don't leave client and change the seed this doesn't work 19:04 nrzkt this keep the old seed 19:04 nrzkt we also have a blocker on font-size and #2037 too 19:04 ShadowBot https://github.com/minetest/minetest/issues/2037 -- World mod configuring is broken 19:05 celeron55 okay i think these really do deserve the blocker tag 19:06 nrzkt okay, you're the boss 19:06 nrzkt but est31 #2334 commit must be added before merge 19:06 ShadowBot https://github.com/minetest/minetest/issues/2334 -- Add protocol version logic to master server by est31 19:06 nrzkt s/merge/release/ 19:07 nrzkt it's important for the networking transition, to get a future release transition with a better protocol handling in masterserver 19:07 nrzkt not really handling but announce 19:08 celeron55 #2327 isn't marked as a blocker 19:08 ShadowBot https://github.com/minetest/minetest/issues/2327 -- [Patch 3/4] Network rework: Packet fixes & cleanups by nerzhul 19:09 celeron55 but it can't go in anymore as it changes the protocol, it's for next release 19:10 nrzkt 2327 isn't a blocker 19:10 nrzkt he doesn't needs to be merged into 0.4.12 19:11 est31 2327 is for 0.5, but 2334 is neccessary so that 0.4.12 clients give a nice error message when they try to connect to a 0.5 server 19:12 nrzkt the 2334 option permit to 0.4.12 server to send their supported protocol version to master server and then block the future 0.5 incompatible server connections, and more :) 19:12 celeron55 the main focus should be fixing those 0.4.12 blockers 19:12 celeron55 because otherwise it can never be released 19:12 nrzkt map seed blocker has a PR we should test 19:13 nrzkt kilbith, i'll try the bug for map seed, can we talk in whisp ? 19:13 kilbith yes 19:14 est31 I can try to do a fix for #2037 19:14 ShadowBot https://github.com/minetest/minetest/issues/2037 -- World mod configuring is broken 19:14 celeron55 i have to go do other things now but i will be available to make sure the branch juggling and release numbers go correctly once it's the time for that; just hilight then 19:14 celeron55 (i expect those blockers to still take a day though) 19:15 nrzkt celeron55: 19:15 nrzkt i propose to do a point in 18-24hours, i will focus with core-dev and community to this 19:23 est31 nrzkt, I know its slightly off-topic but there is a regression 19:23 est31 I'm bisecting right now... 19:23 est31 regression in master, not freeze branch 19:25 nrzkt which regression ? 19:25 est31 when server is running, you cant start client. 19:26 est31 terminate called after throwing an instance of 'con::ConnectionBindFailed' 19:26 est31 thats the error 19:26 nrzkt well, this will not be fixed now, because the networking layer will be redone 19:26 nrzkt then we will look at this after PR 4/4 merge 19:28 est31 PR 2/4 is the first bad commit 19:28 est31 should I file an issue so that this doesnt get forgotten? 19:29 nrzkt PR 2/4 introduce this problem ? it's not normal because it only works on packet themselves, not net layer 19:30 sfan5 nrzkt: no, there isn't a git repo for that 19:31 nrzkt sfan5: okay ! 19:36 est31 nrzkt, #2344 19:36 ShadowBot https://github.com/minetest/minetest/issues/2344 -- in master, you cant open both server and client the same time 19:36 nrzkt oh a german error ! 19:36 est31 and now, I'll fix 2037 19:37 est31 yea computer locale is german :) 19:37 nrzkt oh, i know why 19:37 nrzkt unit tests ? 19:37 est31 should I add unit tests? 19:37 nrzkt no, for the bug you mentionned. 19:39 est31 two commands: minetest --server --port 30000 & 19:39 est31 and then: minetest 19:39 est31 nothing more 19:41 nrzkt if you let a delay between the commands it works, right ? it's only at the same time ? 19:42 est31 no do a delay as you wish 19:42 est31 still problem 19:42 nrzkt strange, i'm using master version with client and server and i don't have any problem 19:42 nrzkt but i use minetestserver not minetest --server 19:43 nrzkt i don't have this problem 19:44 nrzkt but if i launch the two together right i have a bind failed 19:44 est31 does the minetest server really start or does it give an error 19:44 nrzkt it start 19:46 nrzkt but client crashes with bind failed :) 19:46 nrzkt ➜ minetest git:(master) ✗ ./bin/minetest --server --port 30000 --worldname ttttt& ; ./bin/minetest 19:46 nrzkt [1] 14400 19:46 nrzkt 4: Bind failed: Adresse déjà utilisée 19:46 nrzkt terminate called after throwing an instance of 'SocketException' 19:46 nrzkt what(): Failed to bind socket 19:46 nrzkt [2] 14401 abort (core dumped) ./bin/minetest 19:46 nrzkt ➜ minetest git:(master) ✗ Using world specified by --worldname on the command line 19:46 nrzkt [Plants Lib] Loaded 19:47 est31 and when you add sleep 4; between? 19:48 nrzkt same, because unittests haven't finished, i must wait 6 sec (unit tests have some sleep...) 19:49 est31 unittests run by? server 19:49 nrzkt server 19:49 est31 ok 19:49 nrzkt in unittests server tests the network , then it starts 19:50 nrzkt if client starts at this time, he does the same unit tests 19:53 est31 ok now I cant reproduce it too 19:56 est31 ah ok perhaps unit tests are executed by default 19:56 est31 might cause longer server startup 19:57 est31 which results in client complaining 19:57 est31 whatever, closing the issue. 19:58 est31 back to 2037 20:12 est31 ok now I know where the issue lies 20:12 est31 the issue they complain'bout 20:24 nrzkt ShadowNinja, kahrl, nore, can you review #2343 please ? 20:24 ShadowBot https://github.com/minetest/minetest/issues/2343 -- Fix unused (and so, broken) enable_rollback_recording. by nerzhul 20:37 nore nrzkt, disabling it and doing /rollback_check crashed the server 20:37 nore or the client, I don't know 20:37 nore anyway, I got a segfault 20:38 nrzkt ok, maybe a pointer i didn't see 20:41 nrzkt ok i see 20:42 kahrl https://github.com/minetest/minetest/commit/b1965ac20922e3722392114bd63a22b403dcbe98#diff-ad60d65b34e16a3319296bb5d683acd6L4918 20:42 kahrl ^ that method, before it was removed, was how it was supposed to work 20:43 kahrl so if enable_rollback_recording = false, the rollback manager still exists (and is used by the chat commands) but the report sink is NULL 20:43 kahrl for some reason the above commit removed that 20:43 kahrl ShadowNinja: why? 20:43 nrzkt i see 20:44 nrzkt erf, fixing the pointer crash trigger an exception into LUA... 20:45 nrzkt throw ServerError(async_err); L493... 20:46 nrzkt :q 20:46 kahrl sounds fun ;) 21:04 nrzkt ok nore, kahrl, this is now fixed :) 21:33 est31 nrzkt, check #2345 21:33 ShadowBot https://github.com/minetest/minetest/issues/2345 -- Add modname convention checking by est31 21:54 nrzkt please tell me tomorrow 21:54 nrzkt i go to bed :)