Time |
Nick |
Message |
00:13 |
hmmmm |
yes, very good |
00:13 |
hmmmm |
that's exactly how I would've fixed it |
00:28 |
|
luizrpgluiz joined #minetest-dev |
00:30 |
|
luizrpgluiz joined #minetest-dev |
01:14 |
hmmmm |
https://github.com/kwolekr/minetest/commit/a02a094a2f5c3c4121b142fd53d7167140cc3b5a PTAL |
01:35 |
est31 |
looking |
01:35 |
est31 |
why is abc_t not posix compliant? |
01:35 |
est31 |
so you say having content_t is bad? |
01:36 |
hmmmm |
come to think of it, yeah it is |
01:36 |
hmmmm |
damn |
01:36 |
hmmmm |
any identifier ending with _t is reserved by posix |
01:36 |
est31 |
all these things should be ... documented |
01:37 |
hmmmm |
wow okay content_t has a problem too |
01:38 |
hmmmm |
alright you know what, I'm going to roll that change back to threadid_t and if it does happen to cause a name collision on some supported platform, then we'll have a reason to change it |
01:38 |
est31 |
fine |
01:38 |
hmmmm |
http://www.gnu.org/software/libc/manual/html_node/Reserved-Names.html |
01:38 |
hmmmm |
read this |
01:39 |
est31 |
oh |
01:39 |
est31 |
CPÅžP11? |
01:40 |
hmmmm |
what is that character |
01:40 |
est31 |
its in your patch |
01:40 |
hmmmm |
ermm |
01:40 |
est31 |
ive thought its dirt on my monitor |
01:40 |
est31 |
then I've scrolled and the dirt moved |
01:40 |
hmmmm |
oh you mean CPP11 |
01:40 |
est31 |
https://github.com/kwolekr/minetest/commit/a02a094a2f5c3c4121b142fd53d7167140cc3b5a#diff-92729a668babc433abcbe4987f8e14e6R71 |
01:40 |
hmmmm |
whaat |
01:41 |
hmmmm |
the fuck |
01:42 |
est31 |
also I wonder... do we have c++11 threads right now, or not? |
01:42 |
hmmmm |
I would imagine freeminer would use that mode |
01:42 |
est31 |
bc ShadowNinja's patch had them at the start |
01:42 |
est31 |
but it was dropped until it got merged, no? |
01:42 |
hmmmm |
they're optionally supported only if the cpp version is high enough |
01:43 |
hmmmm |
yeah okay this is crazy |
01:43 |
hmmmm |
I really have no idea at all how that character got there |
01:45 |
hmmmm |
anyway I think we should document our conscious decision to ignore POSIX reserved name rules |
01:46 |
est31 |
either of those, but documenting is never bad |
01:46 |
hmmmm |
removing __ and _ prefixed names is fine and all because that could cause a bigger problem and they're not already ubiquitous throughout the code |
01:46 |
hmmmm |
and it's an ISO C language violation |
01:46 |
est31 |
yeah _something looks ugly as well |
01:46 |
est31 |
smells of snakes |
01:46 |
est31 |
duck typed snakes |
01:46 |
hmmmm |
this on the other hand is a POSIX violation and doesn't actually make a difference unless just by chance some new revision adds it |
01:46 |
hmmmm |
at which point we could simply... change the name |
01:47 |
hmmmm |
where should this be documented? |
01:47 |
est31 |
http://dev.minetest.net/Code_style_guidelines ? |
01:48 |
hmmmm |
this doesn't quite have to do with code style |
01:48 |
hmmmm |
more like "project design decisions/agreements" |
01:48 |
est31 |
there should be some place however where it can be added |
01:49 |
hmmmm |
yeah the POSIX name restrictions are way too broad. for example, any identifier starting with "ENet" is invalid |
01:49 |
est31 |
I really doubt it needs a new wiki page |
01:49 |
est31 |
well if you implement them, you are on the safe side |
01:49 |
hmmmm |
and even the major GNU project libgmp uses mpz_t |
01:49 |
est31 |
if you don't you are on the fun sid |
01:49 |
est31 |
e |
01:49 |
est31 |
yea |
01:49 |
hmmmm |
if such a big project ignores it then that kind of sets a precedent |
01:50 |
est31 |
all gnu libraries I've seen have someting_t |
01:53 |
est31 |
there we have the real reason why GNU isn't certified UNIX |
01:53 |
hmmmm |
another violation is our handling of pthread_t |
01:53 |
hmmmm |
you cannot compare a pthread_t using ==, you must use pthread_equal() |
01:54 |
hmmmm |
but the problem is that std::map in debug.cpp |
01:54 |
est31 |
your patch fixes it doesnt it? |
01:54 |
hmmmm |
if you override the comparator for that map to use pthread_equal(), it's not going to be well-ordered because you can't compare "greater than" between two pthread_ts |
01:54 |
est31 |
ah there is an std::map? |
01:55 |
hmmmm |
so you need to implement something to make pthread_ts arbitrarily well-ordered |
01:55 |
est31 |
yeah |
01:55 |
est31 |
injection into well ordered se |
01:55 |
est31 |
t |
01:55 |
hmmmm |
I have no good ideas on how to do that |
01:56 |
hmmmm |
in any case, it only matters on platforms where pthread_t is a struct |
01:56 |
est31 |
what exactly does the map do? |
01:56 |
hmmmm |
something about debugstacks |
01:58 |
hmmmm |
for what it's worth, gdb maps pthread_ts to an arbitrary integer ordinal so it doesn't have these problems |
01:58 |
hmmmm |
sorta wondering if we should do the same |
01:59 |
hmmmm |
or maybe it's really too much work for something that's a non-issue on our supported platforms |
01:59 |
est31 |
perhaps let the preprocesor issue a warning if its not an integral type? |
02:00 |
hmmmm |
for what it's worth, according to the spec, pthread_t could be an ordinal and comparison would still cause problems |
02:00 |
hmmmm |
imagine the case where pthread_equal is implemented as thr1->kernel_thread_id == thr2->kernel_thread_id and the other members are like uhh... no idea |
02:01 |
hmmmm |
some implementation dependent sutff |
02:01 |
hmmmm |
but the point is that they could be different /pointers/ with equivalent threads |
02:01 |
hmmmm |
subtle breakage |
02:01 |
est31 |
yeah |
02:02 |
est31 |
thats the problem with too lose standards |
02:02 |
hmmmm |
FWIW, google chrome has their Chromium Base Library which implements a thread class just like our own |
02:02 |
hmmmm |
it completely ignores the "problems" behind pthread_t |
02:02 |
hmmmm |
is that a good enough precedent to follow, would you say? |
02:03 |
est31 |
well, that means we would at least run at all platforms chromium runs at |
02:03 |
|
luizrpgluiz left #minetest-dev |
02:03 |
hmmmm |
the thing is |
02:03 |
est31 |
majority of the devices out there |
02:04 |
est31 |
idc whether minetest runs on some exotic HP workstation |
02:04 |
hmmmm |
because of all this broken dependency on pthread_t being a comparable ordinal number, the effective standard has been changed |
02:04 |
hmmmm |
nobody in their right minds would not make pthread_t a struct due to the amount of breakage |
02:04 |
hmmmm |
s/would not/would/ |
02:05 |
est31 |
well, if the standard creators were smart, they'd have added a pthread_get_id() function |
02:05 |
hmmmm |
I have an HP Visualize B1000 with HP-UX 11.11u, want me to test minetest compatibility with that? :) |
02:05 |
hmmmm |
the thing is, pthread_t is *supposed* to be the thread ID |
02:05 |
est31 |
well, then the standard shouldnt make it opaque |
02:06 |
hmmmm |
yeah the standard is dumb imho |
02:06 |
est31 |
I mean that pthread_get_id() function could just return the passed argument on most platforms |
02:07 |
est31 |
and for your example it could return thr->kernel_thread_id |
02:07 |
est31 |
done |
02:15 |
hmmmm |
what's done? |
02:21 |
hmmmm |
https://github.com/kwolekr/minetest/commit/6be74d17df75714066b36cfa6ae40081526ef477 |
02:30 |
est31 |
looks good |
03:48 |
hmmmm |
https://github.com/kwolekr/minetest/commit/765a834cd04473afeb4b86b445dee901e0d0c83c PTAL |
04:11 |
kahrl |
heh, even the gnu libstdc++ devs are having issues with pthread_t: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67114#c4 |
04:22 |
|
shadowzone joined #minetest-dev |
04:48 |
ShadowNinja |
hmmmm: ... I just started that a few minutes before your message... |
04:49 |
ShadowNinja |
Why the m_ for private vars though? Then you have to rename itif you make it public/protected. |
04:51 |
hmmmm |
code rules say that private/protected need to have the m_ prefix |
04:52 |
hmmmm |
if you make it public/protected, you might need to rethink your encapsulation |
04:56 |
|
paramat joined #minetest-dev |
04:59 |
ShadowNinja |
Hrm, name should probably be private, I wonder why it isn't. |
05:00 |
hmmmm |
probably because threads won't be able to set it outside of an initializer list |
05:00 |
hmmmm |
i don't think it really matters that much |
05:01 |
ShadowNinja |
setName(); |
05:02 |
hmmmm |
you know what, you're right |
05:02 |
hmmmm |
this makes no sense the way it is |
05:02 |
ShadowNinja |
Er, no, that doesn't update the var.. |
05:03 |
hmmmm |
ahh |
05:03 |
ShadowNinja |
I'll fix that. |
05:03 |
hmmmm |
then you'd need to make it a non-static variable |
05:03 |
hmmmm |
:).... |
05:04 |
ShadowNinja |
My patch merges threads.h into thread.h instead of keeping them oddly seperate. |
05:04 |
hmmmm |
whose patch are we using then? |
05:04 |
ShadowNinja |
I also removed the include from porting.h, since itisn't actually used there. |
05:05 |
ShadowNinja |
Eh, mine? I'm adding in your changes now. |
05:05 |
hmmmm |
I'd rather not duplicate effort |
05:05 |
hmmmm |
would you rather base yours off of mine? |
05:05 |
ShadowNinja |
Moment, I'll give you my patch so you can see what I'm doing. |
05:05 |
ShadowNinja |
Yes. |
05:05 |
hmmmm |
alright, I'll push what's currently there, then |
05:06 |
VanessaE |
can someone please address the shadow bug in mgv7 w/moretrees? |
05:06 |
hmmmm |
plate's full |
05:07 |
ShadowNinja |
This is what I've got so far: http://ix.io/ls8/diff\ |
05:07 |
ShadowNinja |
hmmmm: er. |
05:07 |
ShadowNinja |
I mean I'd merge your changes into mine manually, rebasing it would probably be harder. |
05:08 |
hmmmm |
let me think about this |
05:08 |
hmmmm |
I don't like defining a type as a member of a class like that |
05:08 |
hmmmm |
Thread::Id |
05:08 |
paramat |
Vanessa is it perhaps due to very tall trees reaching y = 47? maybe when the chunk above has not been generated yet? |
05:08 |
hmmmm |
I know it "makes sense" from an organizational point of view, but can't we just leave well enough alone? :/ |
05:09 |
VanessaE |
paramat: doubt it, even some of the shorter trees spawning at sea level (say, a palm tree on a beach) do it. |
05:09 |
VanessaE |
it's probably the chunk-above part, but not the Y>47m part. |
05:10 |
ShadowNinja |
hmmmm: I'm also O.K. with ThreadId, but I don't like threadid_t. |
05:10 |
hmmmm |
why not? |
05:10 |
ShadowNinja |
It doesn't use the PascalCase type name convention. |
05:10 |
paramat |
okay |
05:10 |
hmmmm |
so?? |
05:11 |
hmmmm |
PascalCase is for classes |
05:11 |
hmmmm |
not necessarily types |
05:11 |
ShadowNinja |
hmmmm: So I don't like it :-P |
05:11 |
hmmmm |
just my personal opinion, I think you're going a little too crazy with the refactoring |
05:11 |
hmmmm |
would be better to focus on bug fixes/features/etc. |
05:12 |
hmmmm |
or documentation updates |
05:12 |
hmmmm |
like these are the things that totally don't matter but break a lot of pull requests and add merge conflicts |
05:12 |
hmmmm |
the reason why I did that threading refactor was because I needed it for my envlock PR |
05:14 |
hmmmm |
ShadowNinja: but the main point is that I originally changed threadid_t to ThreadId, just like you said, but I went back on that decision because it'd cause more inconsistency for very little benefit |
05:17 |
ShadowNinja |
hmmmm: How was it more inconsistent? |
05:17 |
hmmmm |
because then we have all the other custom types that end with _t |
05:17 |
hmmmm |
there's content_t, and I'm sure there are others that I can't think of at the moment |
05:17 |
hmmmm |
you're not really going to do a global find+replace on content_t, are you....? |
05:18 |
hmmmm |
like that's a little bit too ridic |
05:18 |
hmmmm |
how is that helping minetest other than breaking everybody's PRs |
05:21 |
ShadowNinja |
hmmmm: content_t may be hard to change, but this is easy, and it's more consistent with how the standard library does it (in C++11). |
05:22 |
hmmmm |
who said that being more C++y is better though |
05:22 |
hmmmm |
this sort of thing is something we should get consensus on first before you do it i think |
05:29 |
ShadowNinja |
hmmmm: Why'd you change the thread priority enum to a list of constants? |
05:29 |
hmmmm |
because anonymous enums are dumb |
05:30 |
hmmmm |
on windows, those constants are defines also |
05:30 |
ShadowNinja |
Why are they dumb? |
05:30 |
hmmmm |
because they have no advantages whatsoever |
05:30 |
ShadowNinja |
And why clib -> lib.h? |
05:31 |
hmmmm |
because lib.h is more universal |
05:31 |
hmmmm |
are there any reasons for those changes at all to begin with...? |
05:31 |
ShadowNinja |
The enum syntax is nicer and the clib versions are rewuired by the standard. |
05:32 |
hmmmm |
why is enum syntax nicer? you use them in the same exact way |
05:32 |
hmmmm |
and you don't get to define their type |
05:32 |
hmmmm |
with a define, if you want something to be a specific type, you just add a cast to the macro definition |
05:33 |
hmmmm |
it just so happens that on Windows that parameter is an int, so it works fine without any implicit conversions |
05:34 |
hmmmm |
what if there's code that expects those constants to be macros? |
05:34 |
ShadowNinja |
The syntax is nicer because the "#define " and value isn't necessary. Also, you changed a comment from "// For..." to "// for...". The original was correct. |
05:34 |
hmmmm |
capitalizing a letter? |
05:34 |
hmmmm |
that's not a sentence |
05:35 |
hmmmm |
all these miniscule autistic details that don't really need to be changed get changed and detract from the actual changes |
05:35 |
ShadowNinja |
Yes, it's supposed to be capitalized. And it is a sentence, there's an implicit "This is " before it. |
05:36 |
ShadowNinja |
hmmmm: But you made these changes... |
05:36 |
hmmmm |
you made them first |
05:36 |
hmmmm |
then how come there's no period then? |
05:36 |
hmmmm |
jeez just leave those things the way they are |
05:44 |
ShadowNinja |
hmmmm: You also switched from _beginthreadex to CreateThread. CreateThread doesn't set up the runtime in the new thread. |
05:45 |
ShadowNinja |
http://stackoverflow.com/questions/331536/windows-threading-beginthread-vs-beginthreadex-vs-createthread-c |
05:47 |
hmmmm |
I don't think _beginthreadex does anything different other than sets up TLS |
05:47 |
hmmmm |
we don't use TLS. |
05:51 |
hmmmm |
in fact it doesn't even do that anymore, according to a comment in that very webpage you posted: http://stackoverflow.com/a/20901790/4751863 |
05:58 |
hmmmm |
oh I remember why I changed the thread priority values back to defines |
05:58 |
hmmmm |
it's because they're fundamentally not an enum, the way I had it set up those were arithmetic values that just happened to be sequential in value |
05:58 |
hmmmm |
i do arithmetic on them |
06:26 |
paramat |
hmmmm do you approve of #3248 as it is? i've rebased and renamed the field to "catch_up" |
06:26 |
ShadowBot |
https://github.com/minetest/minetest/issues/3248 -- ABMs: Make catch-up behaviour optional by paramat |
06:27 |
hmmmm |
lmao |
06:27 |
hmmmm |
getting tired of ketchup jokes huh |
06:28 |
VanessaE |
heh |
06:28 |
hmmmm |
erm, yeah, +1 from me, looks good. |
06:29 |
paramat |
hehe thanks |
06:29 |
ShadowNinja |
hmmmm: You call cleanup on thread start, which clears the thread name before the OS ever learns about it. |
06:30 |
ShadowNinja |
And apparently you've already merged it. |
06:30 |
hmmmm |
whoops |
06:32 |
hmmmm |
you can't put cleanup() at the end of wait(), because there's nothing saying the user absolutely needs to wait after stopping |
06:33 |
hmmmm |
after wait() is when the user would call getReturnValue() and do whatever operation is needed |
06:33 |
ShadowNinja |
If you need to clear stuff it should brobably be done by the thread itself. |
06:33 |
hmmmm |
so it really does need to get put at the beginning of start() |
06:34 |
ShadowNinja |
name never needs to be cleared though/ |
06:34 |
hmmmm |
erm, I don't think that works for C++11 threads |
06:34 |
hmmmm |
okay, so just take the name clearing out |
06:34 |
hmmmm |
that fixes everything |
06:35 |
hmmmm |
also add a cleanup() after the wait() in the if (!m_running) { claus in thread::kill |
06:37 |
hmmmm |
paramat, look at this: https://github.com/kwolekr/minetest/commit/ae4e9cc71262fef154cee6c35539638780961796 |
06:38 |
* paramat |
looks |
06:38 |
paramat |
oooh |
06:38 |
hmmmm |
it's not done yet but the basic idea is to acquire a VManip somehow |
06:38 |
hmmmm |
run core.envlock_release() |
06:38 |
hmmmm |
do your mapgen |
06:38 |
hmmmm |
then run core.envlock_acquire() |
06:38 |
hmmmm |
blit the vmanip back to the map |
06:39 |
hmmmm |
comments/concerns with the way it's done? |
06:40 |
hmmmm |
VanessaE? |
06:41 |
hmmmm |
though this one wouldn't be as pertinent to you since you use all set_node() |
06:41 |
paramat |
so the lock can be released to run the heavy processing part of a lua mapgen threaded? |
06:41 |
VanessaE |
your basic idea seems reasonable anyway |
06:41 |
hmmmm |
right |
06:41 |
hmmmm |
and you can also use Lua Lanes to have a lua multithreaded mapgen, for what it's worth |
06:41 |
hmmmm |
lol that's gonna be ridic' |
06:41 |
paramat |
nice because most of the processing is working on the nodes in the lvm |
06:42 |
* VanessaE |
shudders |
06:42 |
paramat |
good to see this going ahead |
06:42 |
hmmmm |
but how's the interface |
06:42 |
hmmmm |
are you missing anything from it, or do you not want the functions to throw errors? |
06:42 |
hmmmm |
etc |
06:43 |
paramat |
seems okay, nice and simple |
06:43 |
|
nrzkt joined #minetest-dev |
06:44 |
paramat |
throwing errors is probably a good thing for this |
06:45 |
paramat |
.. because it's dangerous |
06:48 |
hmmmm |
this is gonna be fun when i split map locking into mapblock areas |
06:49 |
hmmmm |
core.request_area({MinEdge={...}, MaxEdge={...}}) |
06:49 |
hmmmm |
blocks until there are no locks overlapping with the requested area |
06:49 |
hmmmm |
still need to work out the details but what i fear is that this is going to take too many locks |
06:50 |
paramat |
8. |
06:50 |
hmmmm |
no definitely more than that |
06:50 |
hmmmm |
i need to do research on how "heavy" futexes are on our target platforms |
06:50 |
hmmmm |
or maybe come up with my own synchronization primitive altogether if necessary |
06:50 |
|
Hunterz joined #minetest-dev |
06:51 |
hmmmm |
might have to use spinlocks instead if it's too much |
06:51 |
hmmmm |
which sort of defeats the purpose |
06:52 |
nrzkt |
hmmmm, did you tried mutex perf mapsector first ? |
06:52 |
hmmmm |
no |
06:59 |
ShadowNinja |
hmmmm: On my computer I can do 39000 lock/unlock pairs per milisecond. (minetest --speedtests) |
07:03 |
ShadowNinja |
Actually locking the mutex should take almost no time, the issue is contention. |
07:03 |
hmmmm |
what i'm concerned about is if initializing a mutex does anything in kernel mode |
07:06 |
ShadowNinja |
Moving the Mutex into the loop brings it down to 29000/ms. |
07:08 |
ShadowNinja |
I'm not sure how expensive a syscall is, but the speed seems more than adequate. |
07:09 |
ShadowNinja |
Of course, this is Linux 4.x with recent libraries, other OSes may do much worse. |
07:17 |
hmmmm |
alright i just checked |
07:17 |
hmmmm |
on Windows it does create an event object |
07:22 |
hmmmm |
i think i'd rather come up with a new form of synchronization that's actually designed for this type of task |
07:28 |
hmmmm |
what i'm thinking of is somehow blocking on a data structure (let's start out with iterating over a list...) until there are no intersections with your requested area |
07:28 |
hmmmm |
could do this with events |
07:28 |
hmmmm |
but then i'd be waking up every single time a maplock is released |
07:29 |
hmmmm |
hell of a lot better than having a kernel mode event object for every single mapblock |
07:30 |
hmmmm |
okay this will work, and the naive approach would still work (but not very well) because it'd need to loop over a volume of mapblocks and block on each waiting to acquire |
07:31 |
hmmmm |
if I write this, nobody is going to bother to try improving it |
07:32 |
hmmmm |
I have a reason to use est's areastore :-) |
08:03 |
|
paramat joined #minetest-dev |
08:10 |
ShadowNinja |
https://github.com/ShadowNinja/minetest/commit/5b1c01126e026539a5bea2eebc63af85be38becd |
08:10 |
ShadowNinja |
G'night folks. |
08:18 |
paramat |
will merge #3248 when checks are done |
08:18 |
ShadowBot |
https://github.com/minetest/minetest/issues/3248 -- ABMs: Make catch-up behaviour optional by paramat |
08:30 |
paramat |
uh the windows bulds failed, something to do with thread.cpp |
08:32 |
paramat |
minetest/src/threading/thread.cpp:170:10: error: expected initializer before '==' token |
08:36 |
paramat |
that line was altered by hmmmm's recent commit |
08:36 |
paramat |
i'll wait for his return then |
08:39 |
paramat |
now merging game#705 |
08:39 |
ShadowBot |
https://github.com/minetest/minetest_game/issues/705 -- Default/trees: Add requirement of light level 13 for sapling growth by paramat |
08:40 |
VanessaE |
wait |
08:40 |
VanessaE |
what's the light level for a torch? |
08:40 |
VanessaE |
(if placed right next to the sapling) |
08:41 |
VanessaE |
oh hell |
08:41 |
VanessaE |
you already addressed that. |
08:41 |
VanessaE |
paramat: frankly, I'd have to veto that. |
08:42 |
paramat |
oh sorry, torches are not bright enough |
08:42 |
paramat |
but could be made level 14 |
08:42 |
VanessaE |
minetest's lighting system needs revamped first, imho |
08:42 |
VanessaE |
that's just the problem |
08:43 |
paramat |
you have a need to grow saplings by torchlight? |
08:43 |
VanessaE |
a torch should be perhaps even dimmer than it is now, but then a bright source like a mese lamp should be FAR brighter than it is (I mean how far it throws the light, too) |
08:43 |
VanessaE |
actually I do that sometimes, if I'm in a hurry to get a sapling to grow. |
08:43 |
VanessaE |
if anything, you should vary the grow time based on light level |
08:43 |
VanessaE |
rather than just grow-or-don't |
08:44 |
paramat |
we could consider making torches level 14, although that erases the difference between torches and bright lamps |
08:46 |
VanessaE |
if consistency is the issue, |
08:46 |
VanessaE |
wouldn't it be better to lower the light requirement for the other plants (as pilz alludes to)? |
08:46 |
VanessaE |
and make it take longer to grow if the light is too low |
08:47 |
VanessaE |
I do something like this with bushes_classic -- if they're planted on farming soil, they regrow their fruits faster than on plain dirt/grass. |
08:48 |
VanessaE |
https://github.com/VanessaE/plantlife_modpack/blob/master/bushes_classic/nodes.lua#L123 |
08:48 |
paramat |
perhaps open an issue about lowering the threshold for all plants. but it seems right to me that torches should never be bright enough to grow a plant |
08:48 |
VanessaE |
why shouldn't they? |
08:48 |
paramat |
it'll inconvenience some players true but tough :) |
08:49 |
paramat |
because they're torches |
08:49 |
VanessaE |
so? :) |
08:49 |
VanessaE |
a dim light still grows things, they just grow less. |
08:50 |
paramat |
nah a dim light should never grow anything in any timescale |
08:50 |
paramat |
think of hydroponics grow lights, you'll just have to use meselamps or mod lamps instead |
08:51 |
* VanessaE |
shrugs |
08:51 |
VanessaE |
now what happens if the light isn't right next to the object? |
08:51 |
paramat |
anyway see what the other devs think |
08:51 |
VanessaE |
doesn't a light source of '14' produce 13-and-below in the neighboring nodes? |
08:52 |
paramat |
yeah, the lamp needs to be immediately beside the plant |
08:52 |
paramat |
just as with wheat, cotton |
08:52 |
paramat |
diagonally-neighbouring doesn't work |
08:53 |
VanessaE |
that also means now it's impossible to create a hydroponics mod |
08:53 |
VanessaE |
if the resultant plants are more than 1 node tall |
08:54 |
VanessaE |
a mese lamp or other grow light of equal brightness, suspended with 2 meters of air space between it and the ground is going to give the sapling/seedling on that ground a light level of 12 |
08:54 |
paramat |
well my pr is only for saplings, mod plants could have a lower threshold |
08:55 |
paramat |
yeah falloff of 1 per node |
08:55 |
paramat |
https://forum.minetest.net/viewtopic.php?p=194951#p194951 |
08:56 |
paramat |
each lamp can grow 4 plants around it |
08:56 |
VanessaE |
sorry to say, but I hate that behavior |
08:56 |
VanessaE |
it's too crowded |
08:57 |
paramat |
then it's worth suggesting a lower threshold for all plants |
08:57 |
VanessaE |
I just did :) |
08:57 |
paramat |
hehe |
08:59 |
VanessaE |
light sources only being able to spread 14 meters or so, and barely lighting up a scene, is a real problem |
09:00 |
VanessaE |
I've got a 60W (equivalent) CFL bulb lighting up my computer room. In minetest, this same room looks about half as bright |
09:00 |
VanessaE |
(I have my house modeled in minetest) |
09:03 |
paramat |
personally i might approve of a plant threshold of 12, but only if torches are reduced by 1 so they can't be used as grow lamps |
09:06 |
paramat |
but dimmer torches may be unpopular. so i think things are ok as they are |
09:30 |
|
Calinou joined #minetest-dev |
09:35 |
|
Krock joined #minetest-dev |
09:44 |
|
paramat left #minetest-dev |
09:55 |
|
Darcidride joined #minetest-dev |
11:01 |
|
CraigyDavi joined #minetest-dev |
11:06 |
|
PilzAdam joined #minetest-dev |
11:23 |
|
H-H-H joined #minetest-dev |
11:52 |
|
technics joined #minetest-dev |
12:38 |
|
julienrat joined #minetest-dev |
12:55 |
|
Darcidride joined #minetest-dev |
12:58 |
|
waressearcher2 left #minetest-dev |
13:15 |
|
Player2 joined #minetest-dev |
13:33 |
|
zupoman joined #minetest-dev |
14:13 |
|
luizrpgluiz joined #minetest-dev |
14:30 |
|
jin_xi joined #minetest-dev |
14:44 |
|
younishd joined #minetest-dev |
14:55 |
|
Warr1024 joined #minetest-dev |
14:56 |
|
luizrpgluiz left #minetest-dev |
15:16 |
|
leat1 joined #minetest-dev |
15:27 |
|
leat1 joined #minetest-dev |
15:30 |
|
nm0i joined #minetest-dev |
15:32 |
nm0i |
Morning |
15:32 |
nm0i |
Is set_timeofday only way to contol brightness of sunlight? |
15:33 |
Calinou |
yes, nm0i. |
15:33 |
Calinou |
you can't change sun color server-side. |
15:36 |
nm0i |
Thanks. Just making darker storms... |
15:46 |
|
Darcidride joined #minetest-dev |
15:50 |
|
zat joined #minetest-dev |
15:54 |
Krock |
Haxx the clinent |
16:07 |
|
julienrat joined #minetest-dev |
16:08 |
|
julienrat left #minetest-dev |
16:12 |
|
paramat joined #minetest-dev |
16:13 |
paramat |
can anyone +1 #3264 ? all builds fail due to this |
16:13 |
ShadowBot |
https://github.com/minetest/minetest/issues/3264 -- Fix == to = by Rui914 |
16:15 |
Krock |
+1 |
16:15 |
Krock |
> anyone |
16:15 |
paramat |
heh |
16:16 |
paramat |
well it's trivial i'll merge it |
16:19 |
paramat |
now merging 3264 |
16:24 |
paramat |
done |
16:41 |
|
hmmmm joined #minetest-dev |
16:59 |
paramat |
#3265 |
16:59 |
ShadowBot |
https://github.com/minetest/minetest/issues/3265 -- findSpawnPos: Allow spawn up to 16 nodes above water level by paramat |
17:06 |
|
paramat left #minetest-dev |
17:14 |
|
Gael-de-Sailly joined #minetest-dev |
17:15 |
|
VirusJones joined #minetest-dev |
17:37 |
|
Darcidride joined #minetest-dev |
17:46 |
|
nore joined #minetest-dev |
18:08 |
|
leat2 joined #minetest-dev |
18:20 |
|
leat2 joined #minetest-dev |
18:24 |
OldCoder |
Which MT release added local map saving to the core? |
18:27 |
PilzAdam |
OldCoder, 0.4.11 |
18:27 |
OldCoder |
PilzAdam, thank you. It is kind of you to respond. |
18:27 |
PilzAdam |
see http://dev.minetest.net/Changelog |
18:27 |
OldCoder |
Very well. FYI this is to facilitate tweaks to RedCrab which is now rescued. |
18:30 |
|
est31 joined #minetest-dev |
18:39 |
PilzAdam |
est31, should #3258 also replace minetest.conf.example with the generated one? it would look like this: https://gist.github.com/PilzAdam/3503a574bf3277078e05 |
18:39 |
ShadowBot |
https://github.com/minetest/minetest/issues/3258 -- New Lua main menu settings by PilzAdam |
18:41 |
est31 |
I'm generally not sure how we should manage that. |
18:41 |
est31 |
if minetest.conf.example is autogenerated, should we keep it in git tracking? |
18:42 |
est31 |
if yes, when and how should it updated |
18:42 |
hmmmm |
08:30 paramat uh the windows bulds failed, something to do with thread.cpp |
18:42 |
hmmmm |
WTF, I ran it on Jenkins |
18:42 |
est31 |
if no, same question |
18:42 |
hmmmm |
precisely so this does not happen |
18:43 |
PilzAdam |
est31, same handling as updating translation files |
18:43 |
hmmmm |
damn, int ret == WaitForSingleObject(... |
18:43 |
PilzAdam |
it should be done in feature freeze before release, so translators have time to translate it |
18:44 |
est31 |
hrmm, I run it every two months |
18:45 |
hmmmm |
08:59 VanessaE light sources only being able to spread 14 meters or so, and barely lighting up a scene, is a real problem |
18:45 |
hmmmm |
this is literally because of the number of bits |
18:45 |
hmmmm |
:( |
18:45 |
PilzAdam |
est31, auto-generating it, for example every startup, is not possible, since some distros may keep their doc folder in weird / non-writeable places |
18:45 |
est31 |
well, it is advantageous hmmmm as well |
18:45 |
hmmmm |
when I get rid of that asinine day/light bank thing we can have light from light sources expanding out to 256 meters |
18:45 |
est31 |
bc we dont have tons of lightning updates |
18:45 |
est31 |
only kilos :) |
18:46 |
hmmmm |
yeah true |
18:46 |
hmmmm |
I don't know man there's too many things to work on |
18:46 |
hmmmm |
gotta take it one at a time |
18:46 |
hmmmm |
I am really psyched about the map region locking mechanism I came up with last night and it seems it'd solve practically all of our problems |
18:47 |
est31 |
PilzAdam, perhaps it should give a way to do it over console, or at least with removing comments from some parts of the settings tab file? |
18:48 |
est31 |
hmmmm, tell us |
18:49 |
PilzAdam |
est31, https://github.com/PilzAdam/minetest/blob/lua_settings/builtin/mainmenu/tab_settings.lua#L484-L498 |
18:49 |
hmmmm |
I described the basics in the logs, don't have any of the details of synchronization written out yet |
18:49 |
hmmmm |
but basically each wait object will require a semaphore |
18:49 |
hmmmm |
there's two lists, one of regions currently locked, and then the second of regions currently waiting to get locked |
18:50 |
hmmmm |
a region lock is acquired by acquiring the region list lock and then using whatever spacial data structure to determine if any regions intersect with the requested region |
18:51 |
hmmmm |
if so, then the requested region gets added to the pending lock list along with a pointer to its semaphore structure |
18:51 |
hmmmm |
if not, it just adds its region to the locked region list |
18:51 |
hmmmm |
when a region is released, it checks the pending region list and if the area it's releasing overlaps with anything pending, it'll trigger the event in the list |
18:52 |
hmmmm |
the other thread then wakes up and rescans to see if it is able to lock |
18:52 |
hmmmm |
if so it acquires the lock and begins execution on that region |
18:52 |
hmmmm |
of course there are some details that need to be worked out |
18:53 |
est31 |
you write you want to use areastore, thats great |
18:53 |
hmmmm |
of course, but first I'm going to keep it simple and use a linear list for the proof of concept :-) |
18:53 |
hmmmm |
that enhancement can be added later on once this is a proven technology |
18:54 |
est31 |
okay |
18:54 |
hmmmm |
we can roll this out little by little by emulating "envlock" as it is right now by acquiring the entire map as the region |
18:54 |
hmmmm |
and then make small changes to restrict locks to the specific region they're actually checking or modifying |
18:54 |
hmmmm |
by the time we're done, nothing will use the global map lock any longer |
18:55 |
PilzAdam |
kahrl, would you be ok with merging #3258 now? the aggregated settings view can be done later, but it would need to be redone anyway |
18:55 |
ShadowBot |
https://github.com/minetest/minetest/issues/3258 -- New Lua main menu settings by PilzAdam |
18:56 |
est31 |
perhaps the settings_translation_file can be generated as well? |
18:59 |
PilzAdam |
est31, and put it in po/, next to minetest.pot? |
18:59 |
PilzAdam |
sounds good |
18:59 |
PilzAdam |
I'll modify the script, too |
19:01 |
est31 |
it should contain a comment explaining that its autogenerated |
19:01 |
PilzAdam |
yep |
19:16 |
kahrl |
PilzAdam, allow me to do some bikeshedding |
19:16 |
kahrl |
the white-on-black gives me the impression that the settings are very technical (like in a terminal) |
19:17 |
kahrl |
I think making the background transparent would reduce that feeling: https://gist.github.com/kahrl/73545042400dd226c831 |
19:19 |
kahrl |
For the boolean settings, I think double-clicking them or pressing enter should simply toggle them, not display the edit page |
19:20 |
kahrl |
(the edit button should still get you to the edit page, so that you can see the description if you want) |
19:26 |
PilzAdam |
kahrl, done |
19:27 |
PilzAdam |
"no rule to make target `../po/settings_translation_file.c/minetest.po'" what? |
19:27 |
est31 |
that toggle thing can be seen to be against least suprise |
19:27 |
PilzAdam |
:-/ |
19:27 |
est31 |
hrmm, perhaps it should not be put there... |
19:27 |
est31 |
src? |
19:28 |
PilzAdam |
misc? |
19:28 |
est31 |
updatepo.sh only checks src/ and builtin/ |
19:28 |
PilzAdam |
est31, I already thought earlier about a fast way to toggle booleans; I would say it's quite intuitive |
19:29 |
kahrl |
est31: honestly I was confused at first when it opened an extra dialog for a boolean |
19:29 |
kahrl |
but I can see what you mean |
19:29 |
PilzAdam |
est31, I'll put it in src/ |
19:32 |
kahrl |
from a functionality perspective I think the PR can be merged now (once the translation file stuff is dealt with) |
19:32 |
kahrl |
I haven't reviewed the code, should I? |
19:32 |
PilzAdam |
no, better don't look at it ;-) |
19:32 |
kahrl |
hehe |
19:32 |
PilzAdam |
est31 already looked at it |
19:33 |
kahrl |
yeah I was mostly asking est31 whether he wanted someone else to look at it as well |
19:34 |
est31 |
kahrl, if you want, look at it, then you can be blamed as well when a bug gets discovered :) |
19:35 |
est31 |
when not if :p |
19:35 |
PilzAdam |
your assumption that my code contains bugs is wrong |
19:36 |
PilzAdam |
the one you discovered earlier was just a test to check if you review correctly ;-) |
19:36 |
|
proller joined #minetest-dev |
19:40 |
PilzAdam |
can I merge it now? |
19:40 |
est31 |
it seems kahrl is commenting |
19:41 |
kahrl |
yeah, I'm peephole reviewing |
19:42 |
PilzAdam |
github doesn't auto-update commit comments in the PR view |
19:46 |
est31 |
okay, having had a close look at GnuTLS, I've come to the conclusion that implementing encryption ourselves is much easier than using gnutls for rolling out dtls. |
19:47 |
kahrl |
lol |
19:50 |
est31 |
ill try a bit some more with gnutls, and if i give up ill get libnettle and do some aes(counter,packet) |
19:51 |
est31 |
tls was designed for TCP, dtls is a modification of it |
19:51 |
est31 |
also, tls is 99% used with certificates |
19:51 |
est31 |
we use tls with PSK (pre-shared-key) |
19:51 |
est31 |
so we dont need most of the parts of TLS |
19:53 |
kahrl |
ok, I'm through |
19:53 |
kahrl |
looks good except what I commented |
19:54 |
kahrl |
(as I said, I peephole-reviewed, so I only looked at small parts at a time, I didn't review the big picture) |
19:55 |
PilzAdam |
ah, good catch on the pairs() |
19:55 |
kahrl |
est31: wait, I thought ipairs was the one that preserved order |
19:56 |
PilzAdam |
previously I used the setting names as keys in the table, but then I decided to keep the order |
19:56 |
kahrl |
for the type variable, it's not an issue at the moment, but it could trip up someone that tries to modify this code later |
19:57 |
PilzAdam |
I'll change it |
19:58 |
est31 |
kahrl, sorry you are right |
19:59 |
PilzAdam |
fixed |
20:00 |
kahrl |
looks all good now |
20:01 |
kahrl |
+1 for merging from me. est31? |
20:01 |
est31 |
yes |
20:01 |
est31 |
+1 |
20:02 |
PilzAdam |
lets if I can still merge... it's been quite some time since my last time |
20:02 |
PilzAdam |
+see |
20:07 |
PilzAdam |
done |
20:08 |
PilzAdam |
I'll write a forum post |
20:08 |
est31 |
nice |
20:09 |
est31 |
why have you edited updatepo.sh? |
20:12 |
est31 |
--add-location is bad |
20:12 |
PilzAdam |
I added po/settings_translation_file.c to it, and later removed it |
20:12 |
est31 |
--add-location=file omits the number |
20:13 |
est31 |
line number |
20:13 |
PilzAdam |
it failed to run for me with =file |
20:13 |
PilzAdam |
feel free to add it back |
20:13 |
est31 |
your os is too old :) |
20:13 |
est31 |
recent xgettext has it |
20:17 |
|
younishd joined #minetest-dev |
20:18 |
|
Gael-de-Sailly joined #minetest-dev |
20:20 |
PilzAdam |
https://forum.minetest.net/viewtopic.php?f=18&t=13427 |
20:20 |
PilzAdam |
est31, I'll upgrade in 2017 when support is dropped |
20:22 |
|
FR^2 joined #minetest-dev |
20:22 |
est31 |
your xgettext is older than 0.18.4 right= |
20:22 |
est31 |
? |
20:22 |
est31 |
https://github.com/minetest/minetest/commit/94961b3364f76d5861913af321e9be6200d080b3 |
20:23 |
PilzAdam |
0.28.1 |
20:23 |
PilzAdam |
*18 |
20:23 |
Krock |
PilzAdam, why [Cancel] [Save]? Usually it's the other way |
20:23 |
est31 |
i dont think that |
20:23 |
est31 |
its mixed across applications |
20:23 |
PilzAdam |
Krock, it's consistent with the world creation dialog |
20:24 |
PilzAdam |
est31, it's also mixed inside of Minetest |
20:24 |
PilzAdam |
Krock, eh, not world creation; the configure world dialog |
20:24 |
Krock |
Found some stuff to read :) http://www.nngroup.com/articles/ok-cancel-or-cancel-ok/ |
20:24 |
PilzAdam |
world creation is exactly other way round |
20:25 |
PilzAdam |
Krock, feel free to create PR to make it consistent across Minetest |
20:25 |
Krock |
Okay, I'll do so |
20:27 |
PilzAdam |
kahrl, is it possible to automatically select the entry in the table when clicking the "+" to open a tree node? |
20:27 |
PilzAdam |
that way it would be way less "jumpy" |
20:28 |
PilzAdam |
currently the table gets updated when clicking +; and when updating the view always adjusts to contain the selected line |
20:29 |
|
Warr1024 joined #minetest-dev |
20:30 |
|
younishd joined #minetest-dev |
20:31 |
kahrl |
PilzAdam: it's possible (but not from lua, GUITable has to be changed) |
20:31 |
kahrl |
or perhaps updating the table should not scroll to the selected row |
20:35 |
PilzAdam |
kahrl, it would also be nice if the tree would be automatically extend so that the selected node is visible |
20:35 |
PilzAdam |
that way it would look the same when returning from the change dialog |
20:36 |
kahrl |
good idea |
20:38 |
PilzAdam |
not scrolling the table to the selected row would also fix other updates, e.g. toggling the "Show technical names" checkbox |
20:39 |
PilzAdam |
however, maybe that would the e.g. the world list to not show the currently selected world when starting up the game |
20:39 |
PilzAdam |
s/the/cause/ |
20:48 |
kahrl |
I tried the automatic extending to the selected item |
20:49 |
kahrl |
it seemed to work, but then I noticed that you can no longer close a subtree if one of its children is selected |
20:50 |
PilzAdam |
that would be fixed if clicking + would select this line |
20:50 |
PilzAdam |
wouldn't it? |
20:50 |
kahrl |
maybe |
20:59 |
PilzAdam |
this new settings commit closed 5 issues; mostly requesting single settings to be present in GUI :D |
21:12 |
|
Darcidride joined #minetest-dev |
21:39 |
Krock |
#3267 makes the "helper formspecs" look better - comments please :) |
21:39 |
ShadowBot |
https://github.com/minetest/minetest/issues/3267 -- Standardize the menu button order and sizes by SmallJoker |
21:48 |
kahrl |
#3268 |
21:48 |
ShadowBot |
https://github.com/minetest/minetest/issues/3268 -- Fix GUITable selection issues with trees by kahrl |
21:49 |
|
sloantothebone joined #minetest-dev |
21:56 |
est31 |
looks good |
21:56 |
est31 |
have you tested it kahrl ? |
21:56 |
kahrl |
yes |
21:57 |
est31 |
good for merge then |
21:57 |
kahrl |
thanks :) merge incoming |
22:00 |
|
hmmmmm joined #minetest-dev |
22:04 |
|
Miner_48er joined #minetest-dev |
22:41 |
|
Sokomine joined #minetest-dev |
22:45 |
|
kilbith joined #minetest-dev |
22:46 |
kilbith |
guys, i just fresh-cloned from latest commit with a virgin config and now you always spawn underground and the mapgen is fuckin screwed : https://lut.im/0vN7SbmIn4/NGGN7HUCRRalniYO.png |
22:47 |
|
DFeniks joined #minetest-dev |
22:52 |
kilbith |
no idea if it's related : WARNING[Main]: NodeDefManager: Ignoring CONTENT_IGNORE redefinition |
22:53 |
kahrl |
kilbith: nah, I also get that message but the spawn and mapgen is fine |
22:54 |
kahrl |
what game version are you using? |
22:55 |
kilbith |
minetest_game you mean ? |
22:55 |
kahrl |
yeah |
22:55 |
kilbith |
latest commit |
22:55 |
kahrl |
same here. Very weird |
22:55 |
kilbith |
i also compiled with clang |
22:56 |
kahrl |
hrmm |
22:56 |
kahrl |
it would be very strange but it could have an effect |
22:56 |
kahrl |
see e.g. https://github.com/minetest/minetest/issues/3237#issuecomment-147662882 |
22:57 |
kahrl |
so strictly speaking, mapgen is architecture and compiler dependent at the moment |
22:57 |
kahrl |
at least for lua mapgens. Not sure about minetest_game |
22:57 |
kilbith |
well no i highly doubt it's compiler fault |
22:58 |
kilbith |
no idea :( i closely checked my config and all from a fresh start |
22:59 |
kahrl |
if there's some undefined behaviour in minetest, then compilers can do whatever they want and it's not their fault ;) |
23:00 |
kilbith |
i'll inquire furthermore... |
23:35 |
|
OldCoder joined #minetest-dev |
23:55 |
|
est31 joined #minetest-dev |
23:55 |
est31 |
ahh the po file display bug is still there |
23:55 |
est31 |
somehow it got missed... |
23:55 |
* est31 |
trying to fix |