Perl 6 - the future is here, just unevenly distributed

IRC log for #moarvm, 2015-11-20

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:36 tokuhiro_ joined #moarvm
01:16 tokuhiro_ joined #moarvm
02:24 ShimmerFairy joined #moarvm
02:45 lizmat re tokuhiro_ 's log: https://gist.github.com/lizmat/5d452c8a8eb7a000bd2c
02:45 lizmat it does not require nqp, which is a good thing  :-)
02:45 lizmat oops, wrong channel
04:05 pyrimidi_ joined #moarvm
04:12 colomon joined #moarvm
06:14 xiaomiao joined #moarvm
06:36 domidumont joined #moarvm
06:57 domidumont joined #moarvm
06:57 domidumont joined #moarvm
08:40 zakharyas joined #moarvm
08:52 kjs_ joined #moarvm
09:48 kjs_ joined #moarvm
10:07 domidumont joined #moarvm
10:09 domidumont joined #moarvm
10:27 domidumont joined #moarvm
11:58 leont joined #moarvm
13:39 domidumont joined #moarvm
13:43 zakharyas joined #moarvm
13:51 zakharyas joined #moarvm
14:10 brrt joined #moarvm
14:10 brrt good * #moarvm
14:13 nwc10 good *, brrt
14:14 brrt \o nwc10
14:14 jnthn o/
15:24 domidumont joined #moarvm
15:31 kjs_ joined #moarvm
15:46 tokuhiro_ joined #moarvm
15:47 brrt joined #moarvm
15:52 timotimo brrt: since a short time we've had to pass an option to asan that makes it stop complaining about leaked memory at program exit
15:52 timotimo because of the way we shut down
15:53 brrt ah, ok
15:53 brrt what option is that?
15:54 timotimo i don't remember :(
15:56 timotimo https://www.chromium.org/developers/testing/addresssanitizer  -  ASAN_OPTIONS=help=1
15:56 timotimo i figured this out with hoelzro a week ago or so
16:00 timotimo brrt: is there some scientific metric by which you threw out tiles (or was it templates?) into the unsafe file?
16:00 brrt templates
16:00 brrt yes; doesn't use conditionals (or only at the end); doesn't use calls
16:00 timotimo oh
16:01 brrt why not those? those are *difficult* cases for the register allocator
16:01 timotimo "at the end" means "at the top of the tree"?
16:01 brrt yeah
16:01 timotimo oh man, that's a whole lot of them
16:12 brrt aye
16:12 brrt i know
16:22 hoelzro o/ #moarvm
16:29 kjs_ joined #moarvm
16:30 hoelzro is there an MVM_string_* function to count the number of codepoints in a string, rather than the number of graphemes?
16:30 hoelzro I ask because the UTF-16 substring function uses graphs to determine how much to allocate, but the iterator it uses to copy the string works in terms of codepoints
16:31 timotimo http://t.h8.lv/p6bench/2015-11-19-release_09_10_11.html - here's one to include one more earlier build
16:32 timotimo oh, interesting
16:32 jnthn hoelzro: It should realloc as it goes anyway
16:32 timotimo ww
16:32 hoelzro jnthn: my patch does that
16:32 hoelzro but I'm not allocating enough for composing chars
16:32 timotimo but still interesting: many of the performance improvements in 2015.11 were apparently just fixing regressions compared to 2015.09
16:33 jnthn hoelzro: Oh?
16:33 TimToady UTF-16 doesn't not have a 1:1 relationship with Uni codepoints
16:33 jnthn hoelzro: All the other encodings manage it
16:33 hoelzro maybe I should look at their implementations
16:33 jnthn :)
16:34 jnthn You just use the codepoint iterator, keep a count of how many codepoints you wrote, and use that to know when to resize the buffer
16:34 hoelzro and just use a reasonable initial buffer size, for some value of reasonable?
16:34 TimToady one assumes there won't be lots and lots of emoticons
16:35 hoelzro I managed to compensate for surrogate pairs, but for some reason my patch doesn't work for strings with many composing characters
16:36 nwc10 a digression from actual useul answers - the implication of the question amuses me - MoarVM makes it easier to think about graphemes than code points :-)
16:37 jnthn hoelzro: Yeah, I'd just use 2 * number of graphemes
16:37 jnthn hoelzro: Because it's correct for the BMP
16:37 hoelzro but graphemes, not codepoints? because a lot of composing chars is unlikely?
16:37 jnthn Right
16:38 timotimo jnthn: do you have a clue why my $match = 1 == any(1 .. SCALE); my $fail = 0 == any(1 .. SCALE); say "{+?$match} {+?$fail}" would be slower in 2015.11 than it was in 2015.09?
16:38 jnthn Synthetics are post-BMP are rare.
16:38 jnthn timotimo: No
16:38 timotimo same for my @a; for (1 .. SCALE) { push @a, 1 }; say +@a;
16:38 jnthn s/are/and/
16:38 jnthn push maybe something during the push/append split-up
16:38 timotimo that's the "executive summary" of the benchmarks :)
16:38 timotimo my @a; my $i = 0; while (++$i <= SCALE) { push @a, 1 }; say +@a;  -  also a whole lot faster in 2015.09 than 2015.11
16:39 timotimo 2x faster
16:39 hoelzro alright, sounds good!
16:39 hoelzro thanks jnthn, timotimo
16:39 hoelzro er
16:39 hoelzro TimToady:
16:39 timotimo :P
16:41 timotimo since TimToady worked on the push/append thing, maybe he'll find something about these benchmarks that'd explain the difference
16:47 tokuhiro_ joined #moarvm
17:08 TimToady timotimo: append is just the old push, so you could try that intstead to see if that makes a difference
17:17 timotimo oh, neat. the .push form is a whole lot faster
17:19 timotimo the culprit seems to be that @a.push(1) was only a smidgeon faster than push @a, 1 in 2015.09
17:19 timotimo but in 2015.11, the difference is about 3x
17:24 timotimo while_pushme is also practically the exact same performance, because those happen to use the method form of push (or append in the 2015.11 case)
17:26 timotimo to be honest, i forgot the non-method version of push exists ...
17:32 Peter_R joined #moarvm
17:33 nwc10 jnthn: for your non-urgent (post weekend, or at least post nom) consideration I "present" https://gitlab.com/nwc10/MoarVM/tree/serialization-version-bump
17:33 nwc10 a commit to remove the no longer needed serialisation code
17:44 hoelzro is the work to strip out libuv for synchronous stuff slated to happen before christmas?
17:53 nwc10 I don't see anything directly in the Rakudo Christmas blocker list that implies that it needs to be: https://www.youtube.com/watch?v=kwxHXgiLsFE&amp;feature=youtu.be
17:53 nwc10 oh, wait, *this* URL: https://rt.perl.org/Public/Bug/Display.html?id=123766
17:54 nwc10 I can assure you that the other one is very embarassing :-)
17:54 nwc10 [And isn't this one https://www.youtube.com/watch?v=dQw4w9WgXcQ :-)]
17:56 nwc10 there isn't a Christmas tag on https://github.com/MoarVM/MoarVM/issues (nor does there seem to be an issue about it)
18:02 jnthn hoelzro: I already dug into it in a branch
18:02 jnthn And yes, there's an xmas RT that needs it
18:02 jnthn https://rt.perl.org/Ticket/Display.html?id=124005 # it says Windows but I think it can be an issue off Windows too
18:03 jnthn Branch is called sync-without-uv
18:03 jnthn nwc10: Will look at your branch after dinner; thanks :)
18:03 * jnthn goes to try out a new curry recipe...
18:08 nwc10 I almost typed "curry" instead of just "noms"
18:08 nwc10 maybe I should start running a sweepstake
18:24 kjs_ joined #moarvm
18:33 domidumont joined #moarvm
18:48 tokuhiro_ joined #moarvm
19:12 kjs_ joined #moarvm
19:33 kjs_ joined #moarvm
19:36 jnthn It's actually the first curry I've cooked since last weekend. :)
19:37 jnthn One of the easiest I've done too.
19:56 diakopter___ joined #moarvm
19:56 diakopter___ I have a `make` question
19:56 [Coke] shoot.
19:58 diakopter___ (formulating)
20:00 diakopter___ take, for instance, https://github.com/MoarVM/MoarVM/commit/5a93fdfc48c8b777ce4978380995b871bd99396a
20:00 diakopter___ in the filesystem it shows up as a directory
20:01 jnthn "1 file changed, 34 insertions(+), 87 deletions(-)" - that's the kind of commit I like :)
20:01 nwc10 sure, but I think that I added most of those lines in that I'm now deleting
20:03 diakopter___ but when it's updated (let's say when you switch branches to one that uses a different version of that submodule) make does not know to rebuild
20:03 diakopter___ is there a way to fix that?
20:04 diakopter___ nwc10: in which branch are you pushing
20:04 dalek MoarVM: 192a79e | nicholas++ | src/6model/serialization.c:
20:04 dalek MoarVM: Bump minimum serialization format version.
20:04 dalek MoarVM:
20:04 dalek MoarVM: Now that we've rebootstrapped, we no longer need the code to read older
20:04 dalek MoarVM: serialization versions.
20:04 dalek MoarVM:
20:04 dalek MoarVM: Again, mostly removal of if statements with ...->root.version checks, and
20:04 dalek MoarVM: re-indenting because of the blocks this eliminates.
20:04 dalek MoarVM: review: https://github.com/MoarVM/MoarVM/commit/192a79e41f
20:04 [Coke] diakopter___:  "submodules suck"
20:05 nwc10 diakopter___: a branch elsewhere, but jnthn has just cherry-picked it to master
20:05 [Coke] I don't know enough about submodules to make them work better in make.
20:05 [Coke] which is why I end up with something like https://github.com/coke/rakudo-star-daily/blob/master/bin/star.sh#L28
20:05 [Coke] sorry. :|
20:05 [Coke] [6~
20:05 [Coke] [6~
20:08 diakopter___ elsewhere o_O
20:08 jnthn diakopter___: I don't know of a good solution off hand. The actual git link is off in a SHA-1 object blob, referenced by the tree
20:09 jnthn So there's nothing I can see to stick a dependency on there
20:09 jnthn Best would be to find a file that's highly likely to change between submodule versions
20:09 hoelzro what about depending on the build target in that submodule? ex. libdynasm.so or whatever
20:09 diakopter___ maybe some hook to write out the submodule version from a git command
20:09 jnthn Well, that's the best I can think of anyway
20:10 jnthn Yeah, or a hook, but that's local
20:10 diakopter___ oh
20:21 diakopter___ nwc10: ohh, gitlab
20:21 timotimo we can make .gitmodules a dependency
20:21 hoelzro timotimo: interesting idea
20:22 diakopter___ it doesn't have the versions
20:22 timotimo oh
20:23 timotimo that's right
20:23 [Coke] we could have a manual process that says "instead of using git to change module versions, use this tool, which updates the submodule and something make can deal with"
20:23 [Coke] but that seems prone to screwups
20:23 timotimo in the tools/ folder for example, eh?
20:24 timotimo oh interesting
20:24 timotimo .git/modules/3rdparty/dynasm/HEAD
20:24 timotimo that changes when the checked out version changes
20:25 diakopter___ hm
20:32 jnthn heh, yes
20:32 jnthn timotimo++ # evil but...probably does actually work well :)
20:37 hoelzro what if someone is building outside of a Git repo? just detect that in Configure.pl and don't depend then?
20:41 jnthn Ugh, yeah.
20:42 diakopter___ heh
20:50 tokuhiro_ joined #moarvm
21:16 diakopter____ joined #moarvm
21:17 tokuhiro_ joined #moarvm
22:17 kjs_ joined #moarvm
22:35 kjs_ joined #moarvm
22:46 kjs_ joined #moarvm
22:49 diakopter___ joined #moarvm
23:13 diakopter___ joined #moarvm
23:19 tokuhiro_ joined #moarvm
23:53 diakopter___ heh   arg &= 0xffffff;   /* XXX can go away after rebootstrap */ 0
23:54 diakopter___ else if (nfadeb)  /* XXX should turn into a "can't happen" after rebootstrap */ 0
23:57 diakopter___ did a C-level profile of core setting compilation
23:57 diakopter___ far more time in frame malloc than I expected
23:58 diakopter___ .oO( maybe my little frame pool cache thingie is no longer enabled/effective/functioning )

| Channels | #moarvm index | Today | | Search | Google Search | Plain-Text | summary