gfldex | is there a class or metaclass that represents the dispatcher? | 11:46 | |
is there actually a rule for this? github.com/perl6/doc/issues/1182 | 12:09 | ||
jnthn | gfldex: What do you mean by "the dispatcher"? There are several things that we might call that in Perl 6... ) | 12:11 | |
gfldex: Method dispatch semantics are controlled by the meta-object of the thing you call the method on (ClassHOW implements find_method, for example) | |||
gfldex: Multiple dispatch is just methods on Routine at the moment | |||
And deferral is a bunch of objects, with some base class and then subclasses for the multi/method/wrap cases | 12:12 | ||
gfldex | i'm asking because I'm thinking about the structure of the docs. | ||
There are pleanty of things that are related to a class like Routine or Match. | 12:13 | ||
jnthn | OK, I dunno if what I just said helps :) | ||
gfldex | But then there are things that are kind of free floating. | ||
it did help | |||
jnthn | One further note is that a multi-method dispatch is actually two dispatches: one to the proto method, then another to the candidate | 12:14 | |
(Of course, things like spesh do what they can to reduce that to one or zero) | |||
gfldex | we don't really explain how MMD works mostly because there is only one person on this planet how knows :-> | 12:15 | |
jnthn | It works as described in the design docs :P | 12:18 | |
gfldex | that makes two persons then | 12:20 | |
the smartmatch github issue really worries me | 12:21 | ||
IOninja | ? | 12:27 | |
gfldex | that one github.com/perl6/doc/issues/1182 | 12:28 | |
IOninja | and which part worries you? | 12:29 | |
s: (my %b = :1a), 'ACCEPTS', \(my %a = :1a) | 12:31 | ||
SourceBaby | IOninja, Sauce is at github.com/rakudo/rakudo/blob/266f...Map.pm#L99 | ||
IOninja | Missing Map:D? candidate? | 12:32 | |
m: my %a = :1a; my %b{Any}; %b{item %a} = 42; say %a ~~ %b | |||
camelia | rakudo-moar 266f34: OUTPUTĀ«Trueā¤Ā» | 12:33 | |
IOninja | wonder if that's on purpose... | ||
gfldex | as it stands ~~ is pretty unpedictable | 12:34 | |
dogbert17 | jnthn: my attempts to get some ASAN output from running spectest with HARNESS_TYPE6 has been a dismal failure. when I went to bed I even started a valgrind run in desperation...no dice | 12:35 | |
jnthn | Aww :( | ||
gfldex: The type on the right is always in charge of what's going to happen, but guess you already know that part :) | |||
dogbert17 | but I finally managed to get some output with the help of gdb, this time with a backtrace, hopefulle it gets us closer: gist.github.com/dogbert17/ffdabdb6...06d596434f | 12:36 | |
jnthn | But can be worth making clear in the docs, since provided you know what you have on the right, you can go to the page for that type | ||
IOninja | jnthn: but is %hasha ~~ %hashb supposed to try to lookup %hasha as being a key of %hashb rather than check if the two hashes are same, as is with arrays? | 12:37 | |
jnthn | No, per S03: | 12:38 | |
Hash Hash hash mapping equivalent $_ eqv X | |||
And | |||
Associative Hash force hash comparison $_.Hash eqv X | 12:39 | ||
IOninja | Ah. OK :) | ||
Thanks. | |||
jnthn | There's a few other entries in the table too for Hash | ||
Could be worth checking :) | |||
IOninja | Will do. | 12:40 | |
dogbert17 | jnthn: did the latest gist provide any new insights? If not I'll have to attack this problem in some other manner | 13:32 | |
timotimo | dogbert17: the thing is when the error is triggered in GC because of some corruption to malloc's heap, there's hardly any information in the stack traces that'd help | 13:34 | |
"it exploded when GC started", but GC starts whenever it likes to | |||
dogbert17 | suspected as much, it's extremely annoying that ASAN was so incredibly silent | 13:35 | |
timotimo | aye | ||
jnthn | Yeah, sadly not much new in there :( | ||
timotimo | it could be that we're corrupting past the FSA's boundaries | 13:36 | |
jnthn | Hm, is that line number the same as yesterday's one? | ||
timotimo | and into the malloc heap metadata region | ||
dogbert17 | no, a few lines before | ||
was 515 | |||
jnthn | Hm, no | ||
timotimo | you could try enabling valgrind support in moarvm, that will add a little redzone around FSA allocated blobs | ||
dogbert17 | will that option only be useful with valgrind? | 13:37 | |
timotimo | mildly useful without | ||
we don't have any code that checks for these redzones to be untouched, though | |||
i could actually add a piece of code for that | |||
dogbert17 | sounds interesting | ||
timotimo | like, only check the redzone manually when valgrind is detected to not be running | 13:38 | |
dogbert17 | is that easy to fix? | ||
timotimo | what is? | 13:39 | |
dogbert17 | the piece of code that you might add | ||
timotimo | there's a question as to how to design its operation, but other than that it's simple | 13:40 | |
dogbert17 | ok | ||
I guess I'll give ASAN another chance | |||
timotimo | i'd imagine it'd check if the redzone bytes haven't been overwritten with different values when a piece of memory handled by the FSA gets freed | 13:41 | |
dogbert17 | btw, is it important tou build with --no-optimize? doing that slows things down alot | ||
timotimo | i'd say --optimize=1 | ||
it mostly means that when you poke around in gdb you often get "value optimized out" | 13:42 | ||
dogbert17 | ok, will do the same :) | ||
timotimo | if you don't want to poke around a bunch with gdb, you can as well use --optimize=3 | ||
if there was a way to use asan only with the host process and not the individual tasks ... | 13:43 | ||
i mean, we could totally write some programs in C that behave as if they were TAP-using programs | |||
and just run all of those? | |||
dogbert17 | gdb hasn't been a success story in this particular case :) | 13:45 | |
timotimo | yeah | ||
dogbert17 | I won't give up that easily though maybe ASAN will be more forthcoming today :) | 13:47 | |
timotimo | that'd be fantastic | ||
it'd probably be interesting to set that environment variable that'll abort with ASAN as soon as it finds an error | |||
rather than crashing the program a bit further down the road | |||
it'll let you get better stack traces with gdb | |||
dogbert17 | do you know which option that might be? | 13:48 | |
timotimo | ASAN_OPTIONS=abort_on_error=1 | ||
dogbert17 | will set it immediately :) thx | ||
and now ... it's a waiting game | 13:49 | ||
timotimo | yes :< | ||
[Tux] | This is Rakudo version 2017.01-204-g266f34571 built on MoarVM version 2017.01-49-g7ff91dbb | 14:00 | |
csv-ip5xs 2.908 | |||
test 12.436 | |||
test-t 5.107 - 5.112 | |||
csv-parser 13.828 | |||
lizmat | . | 15:30 | |
yoleaux2 | 10 Feb 2017 16:50Z <IOninja> lizmat: maybe I'm missremembering, but I think I saw a commit by you go in, ensuring .pull-one can be called even after IterationEnd was returned. Turns out such behaviour is undefined and that commit can be removed, unless I'm imagining things (don't see anything relevant in gitlog). | ||
moritz | \o lizmat | 15:34 | |
lizmat | moritz o/ | ||
still recovering, mostly lurking :-) | |||
timotimo | oh there's a lizmat! :) | 15:53 | |
lizmat is glad she doesn't need to use her voice to chat | 16:10 | ||
timotimo | :D | 16:17 | |
so the concerts were enjoyable, yes? | |||
lizmat | yes, very much so... | 16:30 | |
timotimo | i'm very glad :) | ||
Geth | rakudo: MasterDuke17++ created pull request #1018: Make Parameter.[named_names, type_captures] list_s |
18:04 |