Time Nick Message 04:26 Zeno` How about: http://dpaste.com/16DHSTJ 04:26 Zeno` when indented properly of course 04:29 Zeno` (regrading #4068) 04:29 ShadowBot https://github.com/minetest/minetest/issues/4068 -- Mingw cross-compiler error for minetest ver 8fe753c 04:36 hmmmm sure, i guess that's fine 04:40 Zeno` it's probably the neatest solution without restructuring everything 04:40 Zeno` I'll merge it soon then 04:51 hmmmm gahk 04:51 hmmmm the mapgen is a total mess 04:58 hmmmm question: you have a class that you wanted to abstract away, so you made a base class that's shared with other similar classes 04:59 hmmmm however you forgot to delete one of the members from the derived class that is now present in the base class 04:59 hmmmm now, when the member gets assigned in the newly derived class, it'll get applied to the derived instance of the variable, not the base instance of the same name 04:59 hmmmm how can you prevent this mistake from happening? 05:00 hmmmm frankly i don't trust my eyes 05:03 Zeno` huh 05:06 hmmmm https://paste.fedoraproject.org/361697/62165558/ 05:06 Zeno` The compiler doesn't even emit a warning? 05:06 hmmmm nopers 05:07 hmmmm [ryan@titan] ~/dev/minetest% clang++ -Wall -pedantic test.cpp -o test 05:07 hmmmm [ryan@titan] ~/dev/minetest% 05:08 Zeno` O.o 05:09 Zeno` even Weverything doesn't give a warning. I dunno 05:10 hmmmm now there's something i'd like a warning for 05:10 hmmmm that, and omitting a statement's effect due to undefined behavior technically allowing it to do nothing 05:10 Zeno` I don't like it 05:11 * Zeno` writes to the C++ committee 05:11 hmmmm write to the clang committee instead 05:11 Zeno` and gcc 05:11 gregorycu Oh, standards questions/issues, I love these 05:12 Zeno` nah, it's more of a warnings issue 05:12 Zeno` https://paste.fedoraproject.org/361697/62165558/ 05:12 gregorycu "Nothing" is a subset of "anything" 05:12 Zeno` deep 05:13 hmmmm compilers have all the most useless warnings you can imagine 05:13 hmmmm but the silent, deadly, and subtle stuff? naah 05:13 gregorycu What's the undefined behaviour there? 05:13 hmmmm nothing is undefined 05:13 gregorycu oh... 05:14 gregorycu That will print 3 and 5 right? 05:14 hmmmm right 05:14 gregorycu So... what's the comment? 05:14 hmmmm my original question was, since the compiler doesn't print a warning about this, how could you prevent this mistake from happening? 05:14 Zeno` it's not too bad when the classes are small and right next to each other 05:14 gregorycu Ahh ok 05:16 gregorycu I suppose it's not a warning cause you can't avoid it 05:17 gregorycu Well, you can change the name I suppose 05:17 * gregorycu sees topic 05:17 gregorycu Hooray, we are in freeze! 05:17 hmmmm it's horrible because look 05:18 hmmmm let's say you're refactoring your Zorp 05:18 gregorycu Stupid Zorp 05:18 hmmmm and you noticed that ZorpBlah and ZorpFoo both share a lot of code 05:18 gregorycu I get why it's stupid 05:18 hmmmm "i know, i'll abstract it to Zorp and have ZorpBlah and ZorpFoo derive from Zorp" 05:18 gregorycu Several compilers warn when you shadow member functions 05:18 hmmmm one of the things you abstract away is a Foobar * to something 05:19 Zeno` well, let's say the base class isn't even yours (it's upstream) and upstream adds a new member variable that just happens to have the same name you've used in your derived class 05:19 hmmmm well turns out you forgot to remove the Foobar * declaration from ZorpBlah and it assigns the ZorpBlah to your Foobar, not the Zorp 05:19 hmmmm so when the Zorp code tries to use your foobar, you're screwed 05:20 gregorycu Zeno` has a point 05:20 gregorycu Either way, you're a bit boned 05:20 hmmmm I know 05:20 hmmmm that's the argument for it not being a warning 05:20 Zeno` that'd take a while to find I imagine 05:20 Zeno` I don't look at header file changes hehe 05:20 Zeno` (when I update package foobar) 05:20 gregorycu Right 05:21 gregorycu Did you see my pathfinder hmmmm 05:21 hmmmm yea 05:21 hmmmm excellent work 05:21 gregorycu Good 05:21 gregorycu I did it to impress you, so I'm glad you're happy! 05:23 hmmmm wth 05:23 hmmmm so i just found out that gcc/clang have -Wshadow 05:23 hmmmm i enable that, it still doesn't warn 05:25 Zeno` -Weverything enables everything so I could have told you that :P 05:26 gregorycu lol 05:26 gregorycu Yeah, all vs everything 05:26 gregorycu Fun for the family 05:26 Zeno` yep 05:26 Zeno` everything is more than all! 05:27 * gregorycu watches math majors tremble in rage 05:27 gregorycu What should I work on 05:27 Zeno` and philosophers nod their heads sagely 05:28 hmmmm \forall 05:29 hmmmm \forall gregorycus, \exists bug \in minetest such that he should solve it 05:29 hmmmm Proof: Left as an exercise for the reader. 05:29 Zeno` nah QED 05:30 hmmmm hah 05:30 hmmmm this one prof i had would always write QED to take up all the remaining space on the chalkboard when he got done with a theorem 05:30 gregorycu I'll work on the pathfinder some more 05:31 hmmmm he'd say, "Qed, baby!" actually pronounced it out like "qued" 05:31 Zeno` good idea. then nobody can add stuff to the end. LOL at qued 05:31 hmmmm fun times 05:37 gregorycu hmmmm: That was like... what... 30 years ago? 05:37 hmmmm ? 05:38 gregorycu You're old and grizzled right? 05:38 hmmmm no lol 05:38 gregorycu At uni, whiteboard were all the rage 05:39 hmmmm in the new buildings there were whiteboards 05:39 Zeno` UNSW still uses chalkboards 05:39 Zeno` particularly in the older buildings; if it aint broke don't fix I guess 05:39 hmmmm i don't like whiteboards though 05:41 Zeno` they're the wrong colour for a start 05:41 * nore agrees 05:42 nore We still use blackboards here too, these are a lot better 05:43 nore It's impossible to get a pen that still writes on a whiteboard after an hour... 05:43 nore Hi all btw :) 05:44 * hmmmm waves 05:44 * Zeno` waves at nore 05:51 gregorycu You know that topic I always bring up 05:52 gregorycu C++11, when are we switching 05:58 nore gregorycu: some day (tm) 05:58 nore well, I'd like to switch to C++11 too 05:59 nore IIRC, we had to wait until Ubuntu LTS (I don't remember which version, but it didn't have C++11 support) was no longer supported 05:59 nore and I think this has just happened, hasn't it? 06:01 hmmmm well 06:01 hmmmm you know what they say, right? 06:01 hmmmm don't bother using a technology that isn't at least 10 years old 06:01 hmmmm just 5 more years guys 06:05 kahrl /msg centbot c6eol 06:05 kahrl CentOS 6 will go EOL on 30 November, 2020 -- in 4 years, 30 weeks, 2 days, 17 hours, 55 minutes, and 21 seconds 06:05 nore hmmmm, so I should wait 5 years before playing minetest too? :p 06:05 hmmmm possibly 06:05 gregorycu That's when it will be ready 06:05 kahrl those 21 seconds are already over! 06:06 nore kahrl: CentOS 6 has no C++11 support either? 06:06 gregorycu Why does that exist, that bot 06:06 kahrl nore: it doesn't 06:06 nore too bad 06:07 kahrl it has gcc 4.4.7 06:08 gregorycu 1000 pathfinding calls takes 1357 milliseconds :( 06:09 hmmmm for the amount of work that pathfinding actually does, that's not bad! 06:09 nore gregorycu: over which distances? 06:09 gregorycu It was 26 06:09 gregorycu But it also wasn't that convoluted of a path 06:10 nore well, it's not bad at all actually then 06:10 nore gregorycu: most of the work is in surface detection anyway 06:10 gregorycu I was profiling it, I know how to make it faster 06:11 gregorycu if (std::find(visited_nodes.begin(), visited_nodes.end(), node) != visited_nodes.end()) 06:11 gregorycu visited_nodes is a vector 06:11 nore WHAT 06:11 nore but... that's killing the complexity 06:11 gregorycu I SAID, visited_nodes IS A VECTOR 06:12 gregorycu vector is faster than set for small n 06:12 gregorycu Guess n isn't small enough 06:12 gregorycu I'll make it a set 06:12 nore lookup table is best usually, but I guess we don't renumber the vertices 06:13 hmmmm in my testing, a set outperforms a vector after 4 or 5 elements 06:13 nore use est31's GridContainer (or whatever the name was) maybe 06:13 hmmmm at least on my processor, on my platform, with my specific libc 06:13 gregorycu Yeah, I've heard the cutoff is 50 06:13 gregorycu But it's different for everything 06:13 hmmmm in my test it was comparing u8s 06:14 gregorycu lol 06:14 gregorycu um 06:14 gregorycu Making it a set made it worse 06:14 gregorycu 2100 milliseconds 06:14 hmmmm https://paste.fedoraproject.org/361710/62169690/ 06:15 nore gregorycu: and a position->bool map? 06:15 hmmmm this is how i decided to go with a set over a vector for storing biomes in decorations 06:15 nore (well, when I say map, it can be an array actually) 06:15 gregorycu position to bool may be faster 06:15 gregorycu May use a lot of memory too 06:16 hmmmm yea you want him to use a hashtable basically 06:16 gregorycu I'll try an unordered set 06:16 gregorycu Yeah, hashtable 06:16 hmmmm all in due time, you just need to wait 5 more years 06:16 gregorycu :P 06:17 gregorycu To be honest, it could switch between set and unordered set depending on the compiler version 06:17 gregorycu So those plebs stuck on old compiler can continue to enjoy set 06:18 nore unordered_set is C++11? 06:18 hmmmm yes 06:18 hmmmm why do you think minetest doesn't use any unordered maps/sets? 06:18 nore ... 06:18 nore hadn't thought about it 06:19 hmmmm gregorycu, are you using -O2? 06:19 gregorycu Of course 06:19 gregorycu lol wait 06:19 hmmmm well maybe that's the problem 06:20 gregorycu My bad 06:20 gregorycu std::find with map iterator arguments may not do the smart thing 06:22 gregorycu 1150 milliseconds 06:22 nore a bit more efficient then 06:24 gregorycu I have to try with unordered_set 06:29 hmmmm https://github.com/kwolekr/minetest/commit/ff3e883e740e3f4f88b5e600f3e101b40c93b4c0 06:33 gregorycu lol 06:33 gregorycu 1100 milliseconds 06:33 hmmmm 1161 deletions 06:33 hmmmm suckit 06:33 gregorycu Doesn't paramat want duplication deliberately? 06:34 hmmmm lol :p 06:34 hmmmm possibly! 06:35 hmmmm the contributor ranking is based off of number of commits, not number of lines changed 06:35 sofar 1161 deletions, suck it 06:35 sofar well said! 06:37 hmmmm liposuction 06:40 gregorycu lol, I want 1000 tps 06:41 gregorycu And at the moment it takes 1050ms to do 1000 pathfinding calls 06:41 gregorycu It's like it's trolling 06:41 hmmmm you can probably beat it by using a custom allocator 06:41 gregorycu I'm not that desperate 06:42 hmmmm Ok friend 06:55 gregorycu 850ms 06:55 gregorycu Replace a std::deque with a std::list 06:56 gregorycu (Inserting into the middle of a std::deque isn't that fast) 07:04 Zeno` stuck chat window lol 07:04 Zeno` I will attack all the BIG bugs like this one 07:08 Zeno` need a rest after that 09:32 gregorycu 850ms for 1000 calls to the pathfinder 09:45 nore gregorycu: ordered or not? 09:45 gregorycu What do you mean? 09:45 nore For these 850ms 09:45 nore Ordered or unordered set? 09:45 gregorycu Oh 09:45 gregorycu I rolled my own unordered set 09:46 nore :D 09:48 gregorycu I'm cheating a little 09:48 gregorycu I'm retaining allocated memory to use next time 11:17 Fixer !tell millersman not sure why this is not going down with your PRs: https://i.imgur.com/Eo0gaMG.png (stuck flowing nodes only, including up) 11:17 ShadowBot Fixer: O.K. 11:23 gregorycu 450 milliseconds 11:23 gregorycu Just saying 11:24 gregorycu Actually, more like 250ms 11:25 gregorycu Fuck I'm good 11:26 Fixer you are famous 11:26 * Fixer plays with water flows 11:26 gregorycu Yeah, even my mum knows who I am 11:33 Fixer that water PRs fix works good to me at this second 11:34 Fixer max_lag 0.4 or less 11:36 Fixer fixed all those horrible stuck liquids on my test map 11:43 nore gregorycu: wow 11:44 gregorycu It was about 4300 paths per second before 11:44 gregorycu With a distance of 26 11:45 Zeno` lots of sheep 11:45 Zeno` It'll be like New Zealand 11:45 gregorycu Ok, I'll delete it all 11:46 Zeno` ? 11:46 gregorycu We don't want it to be like nZ 11:46 gregorycu by the way, std::priority_qeueue is boss 11:46 Zeno` lol 11:46 gregorycu Heaps better than std::list 11:46 gregorycu PUN INTENDED 11:48 Fixer !tell millersman nevermind, it is going down fine :) 11:48 ShadowBot Fixer: O.K. 16:16 paramat now looking at your work hmmmm 16:33 est31 nice to see the freeze in effect 16:34 paramat in full effect maaan 16:34 est31 just came here to acknowledge that 16:34 est31 11th as date is fine 16:35 Zeno` lol 16:35 Zeno` paramat and est31 are going on a date! 16:36 paramat :} 16:43 Fixer is v5 cave huge one? https://i.imgur.com/FYlQP5A.jpg 16:44 Fixer testing reflow prs here 16:44 paramat that's mgvalleys 16:44 Fixer never seen so huge caves 16:44 Fixer 200-300 nodes from buttom to ceiling 16:44 Fixer or more 16:44 paramat those are a copy of my 'subterrain' mod 16:45 paramat they're not pseudorandom they use 3D noise, so are unlmited in size 16:46 Fixer very nice caves 17:46 paramat :/ github did it again, 5 pages of PRs were 'updated 13 hrs ago' 17:50 nore paramat: I guess these are the PRs whose diff had to be retested and where the Travis build was run again 17:50 paramat i see 18:00 paramat removed #4050 from milestones 18:00 ShadowBot https://github.com/minetest/minetest/issues/4050 -- LBM's stop getting generated after a while 18:14 Zeno` sodder! 18:15 Zeno` lol 18:15 Zeno` they cannot pronounce solder 18:16 paramat hehe 18:25 * Zeno` sodders together an helicopter 20:49 nore paramat: maybe we can merge #3907 now that we are in freeze 20:49 ShadowBot https://github.com/minetest/minetest/issues/3907 -- Update credits tab by est31 20:50 paramat possibly, although i understood that as being merged just before release 20:51 paramat will merge #4078 later if no objection 20:51 ShadowBot https://github.com/minetest/minetest/issues/4078 -- Lua_api.txt: Add warnings of l-system lighting bug by paramat 23:42 paramat now merging #4079 23:42 ShadowBot https://github.com/minetest/minetest/issues/4079 -- Settings_translation_file: Update mapgen with cave width parameter by paramat 23:47 paramat merged