Perl 6 - the future is here, just unevenly distributed

IRC log for #perl6-dev, 2017-09-23

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:05 Geth ¦ roast: skids++ created pull request #329: Add tests for RT#132006
00:05 Geth ¦ roast: review: https://github.com/perl6/roast/pull/329
00:05 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=132006
00:05 Geth ¦ roast: 6f7002f2c6 | skids++ | S02-types/instants-and-durations.t
00:05 Geth ¦ roast: Add tests for RT#132006
00:05 Geth ¦ roast: review: https://github.com/perl6/roast/commit/6f7002f2c6
00:05 Geth ¦ roast: 7edf35ddf7 | skids++ (committed using GitHub Web editor) | S02-types/instants-and-durations.t
00:05 Geth ¦ roast: Merge pull request #329 from skids/rt132006
00:05 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=132006
00:05 Geth ¦ roast:
00:05 Geth ¦ roast: Add tests for RT#132006
00:05 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=132006
00:05 Geth ¦ roast: review: https://github.com/perl6/roast/commit/7edf35ddf7
00:40 travis-ci joined #perl6-dev
00:40 travis-ci Rakudo build passed. Nick Logan 'Use proper java 8 jdk package'
00:40 travis-ci https://travis-ci.org/rakudo/rakudo/builds/278822303 https://github.com/rakudo/rakudo/compare/ffd17990d013...7af339b91d2a
00:40 travis-ci left #perl6-dev
00:50 Geth ¦ roast: skids++ created pull request #330: Rt126433
00:50 Geth ¦ roast: review: https://github.com/perl6/roast/pull/330
00:50 Geth ¦ roast: 90d40a449a | skids++ | S12-coercion/coercion-types.t
00:50 Geth ¦ roast: Re-attribute tests to RT#126433 and enhance them
00:50 Geth ¦ roast:
00:50 Geth ¦ roast: One test was suceeding for the wrong reason
00:50 Geth ¦ roast:   throws-like does a dies-ok subtest so altering the test is ok
00:50 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=126433
00:50 Geth ¦ roast: review: https://github.com/perl6/roast/commit/90d40a449a
00:50 Geth ¦ roast: 0d9b3e23d2 | skids++ | S12-coercion/coercion-types.t
00:50 Geth ¦ roast: Can do a todo here rather than a skip
00:50 Geth ¦ roast: review: https://github.com/perl6/roast/commit/0d9b3e23d2
00:50 Geth ¦ roast: 574035ff4d | skids++ (committed using GitHub Web editor) | S12-coercion/coercion-types.t
00:50 Geth ¦ roast: Merge pull request #330 from skids/rt126433
00:50 Geth ¦ roast:
00:50 Geth ¦ roast: Rt126433
00:50 Geth ¦ roast: review: https://github.com/perl6/roast/commit/574035ff4d
01:10 vendethiel- joined #perl6-dev
01:23 geekosaur joined #perl6-dev
01:56 ilbot3 joined #perl6-dev
01:56 Topic for #perl6-dev is now Perl 6 language and compiler development 2.0 | Logs at http://irclog.perlgeek.de/perl6-dev/today | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
02:22 Ven`` joined #perl6-dev
03:00 geekosaur joined #perl6-dev
03:03 llfourn joined #perl6-dev
05:21 lizmat joined #perl6-dev
05:31 moritz joined #perl6-dev
06:07 geekosaur joined #perl6-dev
07:46 lizmat Files=1229, Tests=75164, 314 wallclock secs (14.99 usr  5.30 sys + 2147.32 cusr 222.10 csys = 2389.71 CPU)
07:46 lizmat feels like we lost about 20 seconds wallclock since yesterday on the spectest
07:49 geekosaur joined #perl6-dev
09:14 geekosaur joined #perl6-dev
10:16 MasterDuke lizmat: how many tests have been added?
10:18 lizmat yesterdays: Files=1227, Tests=75115, 298 wallclock secs (14.64 usr  5.32 sys + 2016.98 cusr 210.03 csys = 2246.97 CPU)
10:18 lizmat so 49 tests
10:18 lizmat CPU usage is definitely also up
10:19 lizmat perhaps it's jnthn's new supply tests
10:19 timotimo at least the test doesn't hang on your system :)
10:19 lizmat indeed, does it on yours ?
10:21 timotimo yeah, S17-supply/syntax.t has a test that consumes infinite cpu and doesn't finish
10:21 MasterDuke some where for me a day or two ago, i'm doing a run now to see if it's changed
10:21 timotimo or was that changed?
10:21 lizmat dunno  :-(
10:21 timotimo jnthn wasn't able to reproduce it
10:22 lizmat I guess /me neither  :-(
10:27 timotimo the plot thickens. i won't be able to investigate very soon, though
10:29 dogbert11 compare with these times: https://irclog.perlgeek.de/perl6-dev/2017-07-27#i_14928347
10:30 lizmat yeah, but almost 8K more tests
10:30 MasterDuke it is running pretty slowly, i also had a failure in t/spec/S32-io/IO-Socket-Async.t, `Parse errors: Bad plan.  You planned 26 tests but ran 17.`
10:31 dogbert11 then those 8000 tests are quite slow
10:31 dogbert11 a few days later: https://irclog.perlgeek.de/perl6-dev/2017-08-03#i_14961470
10:32 MasterDuke hm, that fails even when run by itself
10:33 MasterDuke looks like there's some debug output showing up
10:33 MasterDuke # host=::1
10:33 MasterDuke here with error
10:33 MasterDuke but then: Unhandled exception in code scheduled on thread 4
10:33 MasterDuke Unhandled exception in code scheduled on thread 7
10:34 MasterDuke Too few positionals passed; expected 6 arguments but got 2
10:36 robertle joined #perl6-dev
10:37 dogbert11 MasterDuke: what happens if you disable the JIT
10:37 MasterDuke same errors, and same with disabling spesh also
10:38 dogbert11 interesting, it works for me and valgrind kept silent as well
10:39 MasterDuke do you see that debug output?
10:41 dogbert11 the host comments?
10:42 MasterDuke but yeah, neither gdb or valgrind are helpful
10:42 MasterDuke yeah, and 'here with error' i think
10:42 dogbert11 for '127.0.0.1', '::1' -> $host {
10:42 dogbert11 my $port = 5001;
10:42 dogbert11 diag("host=$host");
10:43 dogbert11 seems to come from the test file
10:45 MasterDuke https://github.com/rakudo/rakudo/blob/nom/src/core/IO/Socket/Async.pm#L201
10:45 MasterDuke maybe not the most useful error...
10:45 dogbert11 :) nice find
10:45 dogbert11 are you using gcc when building?
10:46 MasterDuke yeah, usually
10:46 MasterDuke gcc version 7.2.0 (GCC)
10:46 dogbert11 and you haven't been able to get asan working there?
10:47 MasterDuke i haven't tried recently, but couldn't get it in the past
10:47 MasterDuke how are you using it?
10:48 dogbert11 when using asan I tend to build MoarVM with 'perl Configure.pl  --debug --no-optimize --asan  --prefix=<install dir>'
10:48 dogbert11 that's almost enough
10:49 dogbert11 at least asan output should show up if a problem is encountered
10:50 MasterDuke do you have to --no-optimize?
10:50 dogbert11 no
10:51 MasterDuke hm, that spit out a bunch of leak info
10:51 dogbert11 what did you do
10:51 MasterDuke when i ran that test right after rebuilding with those options
10:52 lizmat afk&
10:52 MasterDuke but i tried rebuilding nqp and that failed
10:52 dogbert11 you don't have to rebuild nqp
10:53 MasterDuke well yeah, but why does it fail? is that expected?
10:53 dogbert11 let me try as well
10:54 * dogbert11 rebuilds with 'perl Configure.pl  --debug --asan --prefix=../../install/' followed by 'make -j6 install'
10:55 dogbert11 one thing which wont work is trying to run a prg compiled with asan under valgrind. Boom
10:56 MasterDuke oh hm, i didn't add --asan to the nqp configure
10:56 dogbert11 I only rebuild Moar with --asan
10:57 MasterDuke ok
10:57 dogbert11 perhaps we build our stuff differently
10:58 MasterDuke my usual MoarVM build: perl Configure.pl --prefix=/home/dan/Source/perl6/install/ --debug=3 --telemeh && make -j8 install
10:58 MasterDuke my usual NQP and Rakudo build: perl Configure.pl --prefix=/home/dan/Source/perl6/install/ && make -j8 install
10:59 dogbert11 here's what I do:
10:59 dogbert11 dogbert@dogbert-VirtualBox ~/repos/rakudo $ pwd
10:59 dogbert11 /home/dogbert/repos/rakudo
10:59 dogbert11 cd nqp/MoarVM
11:00 dogbert11 perl Configure.pl  --debug --asan --prefix=../../install/      followed by make -j6 install   and  then 'cd -' and I'm good to go
11:01 dogbert11 btw, did you pick up a new system? Noticed the -j8
11:01 MasterDuke i have all three at the same directory level
11:02 dogbert11 aha
11:02 MasterDuke heh, not yet. -j8 is about the best value on this old system still
11:03 dogbert11 and now new Intel cpu's will be out in a couple of weeks
11:03 astj joined #perl6-dev
11:04 MasterDuke yeah, but they're expensive!
11:05 dogbert11 was afraid of that, then Ryzen is still on your radar I guess
11:05 MasterDuke i do plan to upgrade, but also just got new bindings for my snowboard and may have to get new boots also
11:05 dogbert11 $$$
11:06 MasterDuke yup
11:06 timotimo .o( use SportiveCall )
11:09 dogbert11 timotimo: are you good at interpreting callgrind results?
11:11 dogbert11 comparing results av a random spectest file, i.e. t/spec/S02-lists/tree.t, between 2017.07 and current
11:11 timotimo mildly
11:11 dogbert11 *of
11:12 dogbert11 the results are quite different, but of course a lot of work has been done in the meantime
11:14 timotimo fun: "bigfile".IO.slurp.lines is much better than "bigfile".IO.lines with regards to memory usage
11:15 MasterDuke ?
11:16 timotimo actually, the big impact comes when i .words every entry of the lines list afterwards
11:16 timotimo and take only the first one
11:17 dogbert11 timotimo: see anything odd here? https://gist.github.com/dogbert17/82ab9a5a54b7d14654ebe365d4dd4402
11:18 MasterDuke 120588maxresident with for IO.lines {} and 670020maxresident with for IO.slurp.lines {}
11:18 timotimo yeah
11:18 MasterDuke for a 57mb, 1million line file
11:19 * dogbert11 wonders about the second line in the 'current release', i.e. 58,949,142 nqp/MoarVM/src/strings/ops.c:MVM_string_equal
11:21 timotimo i have 52 megs, 1264290 lines
11:21 timotimo did you also use a speshlog for this? %)
11:21 dogbert11 nope, should I have done that?
11:21 timotimo no
11:22 timotimo was just surprised the files were so similar :)
11:23 dogbert11 I might have messed up but I hope not :)
11:23 MasterDuke timotimo: wait, were you asking if i used a speshlog?
11:24 timotimo oh, haha
11:25 timotimo i didn't see dogbert answer instead of you
11:25 MasterDuke ha. but no, mine is the first 1million lines of the SQL output of profiling a rakudo build
11:25 timotimo dogbert11: yeah, the string equal thing is weird. we should perhaps grab a list of all moar-level stack traces from when that gets called, though that'll obviously give a gigantic file
11:26 timotimo maybe just the frame we're in when that happens
11:26 timotimo that could give us enough of a clue
11:27 dogbert11 callgrind_annotate does have a --tree option which supposedly can list the callers
11:27 timotimo right, but not the moar-level ones
11:28 timotimo have you ever used kcachegrind?
11:28 dogbert11 nope, would that do the job?
11:29 MasterDuke that's what i use
11:31 timotimo that gives you a prettier view of the whole thing
11:31 dogbert11 so it's a GUI
11:32 dogbert11 which seems to use KDE which I don't have :(
11:32 timotimo it doesn't "use kde", it should only use small parts
11:34 timotimo anyway, i'm grabbing all locations of MVM_string_equals calls and will count the individual places up to see what's what.
11:34 dogbert11 it crashed the first time but now it's seems to work
11:34 timotimo 225 megs so far %)
11:36 astj joined #perl6-dev
11:36 MasterDuke i bet you get over 1g
11:37 timotimo yeah, surely will
11:37 timotimo i have a feeling it'll take upwards of 15 minutes
11:38 timotimo oh, maybe i should use a moar compiled with --optimize=3 instead of --optimize=0
11:38 timotimo oh, okay, it already is
11:40 dogbert11 if I understand this correctly, not 100% certain, MVM_string_equal is called by bind_key, at_key, get_attribute, bind_attribute and MVM_frame_find_lexical_by_name
11:43 MasterDuke also directly called in interp.c by eq_s and ne_s
11:44 MasterDuke oh, do you mean when running your test file?
11:44 geekosaur joined #perl6-dev
11:45 dogbert11 yeah t/spec/S02-lists/tree.t
11:45 MasterDuke ok, then nevermind what i said
11:47 MasterDuke btw, it's the host='::1' that my system doesn't like
11:47 * TimToady waves from Tokyo
11:47 yoleaux 22 Sep 2017 19:43Z <Zoffix> TimToady: S02 says $? vars must not be changed after compile time; that makes $?USAGE kinda iffy, since we run all the sub MAIN bits at runtime. I'm thinking of changing it to $*USAGE on Sept 30th. Thoughts? IRC discussion: https://irclog.perlgeek.de/perl6-dev/2017-09-22#i_15204296
11:47 yoleaux 22 Sep 2017 19:44Z <Zoffix> TimToady: worth clarifying: currently $?USAGE isn't available to users (so the change won't be breaking any code)
11:47 MasterDuke i bet it's because i disabled IPv6
11:47 TimToady Zoffix: I'm fine with $*USAGE
11:53 * dogbert11 will read up on kcachegrind
11:53 Zoffix cool
12:00 MasterDuke huh, i guess everyone else has IPv6 enabled if i'm the only one getting that error
12:02 MasterDuke but either way, i don't think the test should diag("host=$host"), if anything it should put the $host in the individual test's descriptions
12:05 MasterDuke that was just added in https://github.com/perl6/roast/commit/8e382fb9389a8177875acbb5ceef34a887a42ee1, anybody object if i change it?
12:05 MasterDuke jdv79: ^^^
12:08 MasterDuke .ask jnthn is this https://github.com/rakudo/rakudo/blame/nom/src/core/IO/Socket/Async.pm#L201 a debugging leftover?
12:08 yoleaux MasterDuke: I'll pass your message to jnthn.
12:19 dalek joined #perl6-dev
12:19 synopsebot6 joined #perl6-dev
12:21 SourceBaby joined #perl6-dev
12:21 Undercover joined #perl6-dev
12:28 timotimo MasterDuke: 2.9 gig so far
12:28 MasterDuke heh, any idea how far along you are?
12:29 timotimo no :(
12:29 timotimo the grep i have will have thrown out the "stage" lines
12:31 timotimo oh
12:31 timotimo i should be able to strace and see what function names it prints, the backtraces should contain the appropriate name of a stage in them
12:32 timotimo still stage parse
12:32 timotimo which isn't terribly surprising as it's the stage that takes the longest time out of all of those we have
12:34 MasterDuke and this is just for running the file dogbert11 was testing with?
12:34 timotimo oh no this is the core setting compilation
12:34 MasterDuke heh, yeah, that's going to take a while
12:36 timotimo i'll go afk for a bit again and see when it terminates
12:36 timotimo i bet it'll crash when it reaches ~15 gigs because that's how much ram i have and i'm storing the file on my /tm
12:36 timotimo on my /tmp
12:38 jnthn .
12:38 yoleaux 12:08Z <MasterDuke> jnthn: is this https://github.com/rakudo/rakudo/blame/nom/src/core/IO/Socket/Async.pm#L201 a debugging leftover?
12:38 jnthn MasterDuke: Yes, d'oh
12:38 llfourn joined #perl6-dev
12:39 Geth ¦ rakudo/nom: 91cefc1a78 | (Jonathan Worthington)++ (committed using GitHub Web editor) | src/core/IO/Socket/Async.pm
12:39 Geth ¦ rakudo/nom: Remove debugging leftover
12:39 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/91cefc1a78
12:42 Geth ¦ rakudo/nom: cf95ce81c4 | (Zoffix Znet)++ | src/core/Cool.pm
12:42 Geth ¦ rakudo/nom: Slightly improve Cool.subst-mutate error
12:42 Geth ¦ rakudo/nom:
12:42 Geth ¦ rakudo/nom: …when called on non-writable invocants.
12:42 Geth ¦ rakudo/nom: Use param name more suitable to the context where the error occurs.
12:42 Geth ¦ rakudo/nom:
12:42 Geth ¦ rakudo/nom: - Str.subst-mutate doesn't need similar treatment, as those methods
12:42 Geth ¦ rakudo/nom: are multies and we just get an X::Multi::NoMatch from them.
12:42 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/cf95ce81c4
12:54 MasterDuke oops, meant to say this here
12:55 MasterDuke when i just slurp the 50mb, 1million line file, i get 660620maxresident. when i remove the 27 lines with unicode in them, 487160maxresident
12:56 MasterDuke makes sense that it's bigger of course, but that's still a pretty large maxresident for a 50mb file
12:58 astj joined #perl6-dev
12:58 timotimo 3.9 gigs
12:59 timotimo it is, yeah
12:59 timotimo i'm still wondering if we should have an optimization for reading in large amounts of data where it constructs a strand where parts are represented as 8bit and other parts as 32bit
13:01 MasterDuke that would be nice
13:03 Geth ¦ roast: mryan++ created pull request #331: Added tests to cover <ww> - within word
13:03 Geth ¦ roast: review: https://github.com/perl6/roast/pull/331
13:04 timotimo of course if we use .IO.lines it should already store each line as the smallest thing it can, shouldn't it?
13:05 MasterDuke yeah, it would only really help when slurping or something like that
13:05 Geth ¦ roast: b0261d7eb8 | mryan++ (committed by Zoffix Znet) | S05-mass/rx.t
13:05 Geth ¦ roast: Added tests to cover <ww> - within word (#331)
13:05 Geth ¦ roast:
13:05 Geth ¦ roast: Added tests to cover the predefined subrule <ww>.  As explained
13:05 Geth ¦ roast: in RT #293, word boundary, <wb> is well tested but not <ww> which
13:05 Geth ¦ roast: has a seperate implementation in nqp.
13:05 Geth ¦ roast:
13:05 Geth ¦ roast: These tests fill that void.
13:05 Geth ¦ roast: Resolves: RT #293
13:05 Geth ¦ roast: review: https://github.com/perl6/roast/commit/b0261d7eb8
13:06 timotimo https://gist.github.com/timo/7da2609bfd3a4b205286c4c12e891ffc  -  here's an analysis of just a small chunk of the file i'm writing
13:06 timotimo might be interesting to see if anything inside QRegex has changed in between those commits dogbert11 checked
13:13 timotimo MATCH has a few "$blah ne ''" that could probably be replaced with something faster
13:13 timotimo m: use nqp; say nqp::isnull_s("")
13:13 camelia rakudo-moar cf95ce: OUTPUT: «0␤»
13:13 timotimo m: use nqp; say nqp::istrue_s("")
13:13 camelia rakudo-moar cf95ce: OUTPUT: «===SORRY!===␤No registered operation handler for 'istrue_s'␤»
13:13 geekosaur joined #perl6-dev
13:14 timotimo we do have an istrue_s in moar, but we don't seem to map it in nqp at all
13:15 MasterDuke huh. is it used internally in moar anywhere?
13:15 timotimo probably
13:16 timotimo hm, not really
13:17 timotimo it could be used here, but it's not used anywhere as an op in moar or nqp
13:17 MasterDuke isfalse_s does `MVM_coerce_istrue_s(tc, GET_REG(cur_op, 2).s) ? 0 : 1`, wouldn't `!MVM_coerce_istrue_s(tc, GET_REG(cur_op, 2).s)` be faster?
13:17 timotimo i don't think the compiler would generate different code for those two
13:18 MasterDuke huh, isfalse_s is in nqp
13:18 timotimo only in the jvm part, though, no?
13:18 timotimo m: use nqp; say nqp::isfalse_s("")
13:18 camelia rakudo-moar cf95ce: OUTPUT: «===SORRY!===␤No registered operation handler for 'isfalse_s'␤»
13:18 timotimo j: use nqp; say nqp::isfalse_s("")
13:18 camelia rakudo-jvm c3a71a: OUTPUT: «Error while reading '/home/camelia/p6eval-token': No such file or directory at /home/camelia/rakudo-j-inst/bin/eval-client.pl line 10.␤»
13:18 timotimo oh, well
13:19 MasterDuke src/vm/moar/NQP/Ops.nqp:123:        push_op(@ins, 'isfalse_s', $not_reg, $val.result_reg);
13:19 MasterDuke istrue_s is only in jvm
13:19 timotimo haha
13:20 timotimo i don't really see why method !cursor_pass would call string equals
13:21 timotimo perhaps something implements "if $mystr" as comparison against ''
13:21 timotimo strange, i shall look at the speshlog
13:27 jdv79 MasterDuke: whatever works for you
13:28 timotimo huh, !cursor_pass isn't considered for speshing?
13:28 MasterDuke that seems...sub-optimal
13:29 MasterDuke jdv79: cool, i'll make that change
13:30 timotimo it says it got 783 hits in total
13:30 timotimo one of the callsite versions got 454 hits
13:31 MasterDuke i don't remember how it decides, some absolute value of hits needed? or percent of a version greater than some threshold?
13:32 timotimo well, worst case it would have made a certain specialization just based on the callsite shape
13:32 MasterDuke oh huh, diag(<something>) is used a bunch in roast tests
13:35 MasterDuke maybe i'll leave it as is then, since the real problem is the errors because i have IPv6 disabled
13:36 timotimo oh, btw, the "doesn't get speshed" thing was from a different workload
13:36 timotimo one with much less code to compile
13:37 MasterDuke ah
13:38 timotimo uh oh, my system is not happy right now
13:38 dogbert11 running out of memory?
13:38 timotimo barely
13:38 timotimo 11 gigs out of 15 gig used
13:39 timotimo Konsole is getting unhappy
13:39 timotimo perhaps i put far too much output in it :S
13:39 timotimo ok, back to usual
13:43 dogbert11 btw, managed to get the syntax.t test discussed yesterday to SEGV
13:43 timotimo segfault? huh
13:43 dogbert11 yup, read all about it :) https://gist.github.com/dogbert17/d018b0f6f57f01f0726b6c0f734d0dbc
13:46 timotimo it could be that getlexperinvtype caused the string comparison in cursor_pass when trying to look up $?CLASS
13:48 timotimo oh crap something's filling up my hard drive
13:48 timotimo oh!
13:48 dogbert11 uh oh
13:48 timotimo i don't actually have a tmpfs on /tmp
13:49 MasterDuke whoops
13:49 timotimo no wonder a bunch of programs crashed
13:49 timotimo including kwin and plasmashell
13:53 dogbert11 this syntax.t test is a bit of a mystery
13:54 dogbert11 if I run it in a loop, most of the time the results are: 2.03user 0.68system 0:01.25elapsed 216%CPU (0avgtext+0avgdata 155844maxresident)k
13:55 dogbert11 that is pretty consistent, but once in a while something strange happens and the results are much worse
13:55 dogbert11 like this : 35.11user 23.60system 0:59.61elapsed 98%CPU (0avgtext+0avgdata 1157060maxresident)k
13:56 timotimo mhm
13:56 timotimo getlexperinvtype doesn't really do a string comparison, though
13:56 dogbert11 and sometimes, as we know, the result is: Command terminated by signal 11
13:57 timotimo i've never had a segfault there
13:57 dogbert11 I must set MVM_SPESH_BLOCKING=1 for it to happen
13:58 timotimo ah
13:58 skids joined #perl6-dev
14:01 MasterDuke that moarvm backtrace is scary, all GC related
14:01 MasterDuke dogbert11: but doesn't happen when disabling jit and/or spesh?
14:02 dogbert11 MasterDuke: will try to disable spesh, don't have the jit since I'm on 32 bit
14:03 MasterDuke right
14:03 MasterDuke didn't you just upgrade your system? but the vm is 32bit?
14:06 dogbert11 yeah, it's the vm
14:06 dogbert11 I transferred it from my old machine
14:07 geekosaur joined #perl6-dev
14:07 MasterDuke have you noticed that things inside the vm run any faster on the new machine?
14:07 dogbert11 disabling spesh seems to help, no crashes yet, but the strange slow down and eat lots of memory problem still crops up
14:08 MasterDuke maybe try running it with heaptrack and see what it says when you get a large memory run?
14:08 dogbert11 I'd say it's a bit faster in ST but the biggest gain is the MT thanks to additional cores
14:09 dogbert11 another tool I have never used :)
14:09 MasterDuke makes sense
14:10 dogbert11 the cores in my old system were good but there were too few of them :)
14:11 dogbert11 I convinced myself I deserved the upgrade after using it for ~7 years
14:15 MasterDuke pretty much my exact thinking
14:15 dogbert11 I saw that one run was slow so I attached gdb to it, all I can see is this:
14:15 dogbert11 7    Thread 0xb0ffeb40 (LWP 15107) "moar" 0xb7346a7a in gc_mark (tc=0xb22a47a0, st=0xaccbc90, data=0x92e21c40, worklist=0xa73e6f38) at src/6model/reprs/VMArray.c:76
14:15 dogbert11 2    Thread 0xaa5f6b40 (LWP 15112) "moar" 0xb732c9eb in MVM_gc_root_add_frame_registers_to_worklist (tc=tc@entry=0xb14852e8, worklist=worklist@entry=0xa365e698, frame=<optimized out>, frame@entry=0x93332c90)
14:15 dogbert11 at src/gc/roots.c:409
14:16 dogbert11 it will probably complete if I let it continue
14:18 MasterDuke timotimo: https://github.com/MoarVM/MoarVM/blob/master/src/strings/ops.c#L1707 looks like we always allocate the space for MVMGrapheme32 when joining strings. could we check if they're each MVMGrapheme(8|ASCII) and then allocate less if so?
14:18 timotimo yeah
14:19 timotimo does re_nfg try to make things smaller?
14:19 timotimo well, probably not
14:20 MasterDuke nope
14:20 timotimo since if you're combining stuff, it's likely you'll end up with nfg-related stuff
14:21 MasterDuke isn't there some function to convert 32bit to 8bit?
14:22 MasterDuke ah, turn_32bit_into_8bit_unchecked
14:25 MasterDuke but if you're combining all 8bit or ascii strings, would they ever not be concat stable?
14:25 timotimo there's \r and \n
14:25 timotimo where \r\n turns into a synthetic
14:26 MasterDuke but isn't there a way to special case that?
14:29 timotimo not sure
14:34 timotimo jnthn++ # bloggage
14:36 astj joined #perl6-dev
14:36 geekosaur joined #perl6-dev
15:08 Geth ¦ rakudo/nom: 21f05e3f1e | (Nick Logan)++ (committed using GitHub Web editor) | src/core/Proc/Async.pm
15:08 Geth ¦ rakudo/nom: Remove unused attributes
15:08 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/21f05e3f1e
15:11 ugexe moar/nqp need a bump for rakudo to go green on appveyor it looks like
15:13 ugexe we could change the appveyor badge to show green if only --gen-moar=master --gen-nqp=master passes
15:16 Geth ¦ roast: 2f9a131a61 | (Zoffix Znet)++ | S06-other/main-usage.t
15:16 Geth ¦ roast: Rewrite the file to be more concise
15:16 Geth ¦ roast:
15:16 Geth ¦ roast: For easier reading
15:16 Geth ¦ roast: review: https://github.com/perl6/roast/commit/2f9a131a61
15:17 Zoffix ^ (forgot to add: no functional changes)
15:30 timotimo i wrote a little spesh opt that turns eq_s and ne_s against a known empty string into an istrue_s or isfalse_s
15:30 geekosaur joined #perl6-dev
15:30 timotimo it triggers a bunch of times while doing the core setting parse
15:30 timotimo so maybe that can reduce the amount of time spent inside MVM_string_equal
15:31 MasterDuke and stage parse now takes only 5s?
15:31 * lizmat didn't know istrue_x was a thing
15:33 timotimo haha
15:33 timotimo lizmat: it's not available as nqp:: op it looks like
15:33 timotimo but only because a line is missing in the QASTOperationsMAST file
15:33 timotimo well, two lines :)
15:34 MasterDuke lizmat: btw, s is the only _*
15:34 skids joined #perl6-dev
15:35 lizmat ok, well, there's one occurrence in the setting in "get_next_substitution_result"
15:35 lizmat (of iseq_s(...,'')
15:35 timotimo but with that spesh opt it's the same if you write ne ""
15:35 MasterDuke istrue and isfalse are both used a bunch in the rakudo source, the only _* mention is: src/vm/moar/Perl6/Ops.nqp:301:        nqp::push(@ops, MAST::Op.new( :op('istrue_s'), $tmp_reg, $exprres.result_reg ));
15:36 Geth ¦ rakudo: skids++ created pull request #1170: Look for yada fullfillment in default parent type, too (RT#131676)
15:36 Geth ¦ rakudo: review: https://github.com/rakudo/rakudo/pull/1170
15:36 synopsebot6 Link:  https://rt.perl.org/rt3/Public/Bug/Display.html?id=131676
15:36 timotimo i'm now doing a callgrind of core setting compilation to see if the amount of time spent in string equal goes down noticably
15:37 timotimo i mean, there's already a shortcut in the equals code for strings having the same amount of graphemes
15:38 MasterDuke lizmat: i see three uses of iseq_s(...,'')
15:38 MasterDuke src/core/Rakudo/Internals.pm:1000,1001 and src/core/Str.pm:2410:
15:40 astj joined #perl6-dev
15:43 Zoffix ZOFFLOP: t/spec/S17-supply/stable.
15:47 MasterDuke hm, optimizing MVM_string_join is kind of annoying, because Perl 6 strings are stands of MVMGrapheme32 by default
15:49 timotimo so it doesn't often see that it could do it?
15:51 MasterDuke well, there a comment about how we could just collect all the things as strands, but that's not implemented. that would probably help a bunch
15:51 timotimo maybe we can find more places where we create strings to use smaller storage strategies
15:51 MasterDuke otherwise you'd have to be using native strs to get a benefit from other optimization
15:53 lizmat timotimo: there are several places in the core where natives are *not* used because of vague issues
15:53 lizmat I seem to recall natives in roles not optimizing
15:53 timotimo i was refering exclusively to moarvm code with that
15:54 timotimo because the only influence HLL code can have on the internal storage is to flatten out strands
15:54 timotimo like we do for regex matching
15:55 travis-ci joined #perl6-dev
15:55 travis-ci Rakudo build failed. Nick Logan 'Remove unused attributes'
15:55 travis-ci https://travis-ci.org/rakudo/rakudo/builds/278964569 https://github.com/rakudo/rakudo/compare/cf95ce81c4f6...21f05e3f1e6e
15:55 travis-ci left #perl6-dev
15:55 buggable [travis build above] ☠ All failures are due to: failed make test (1 failure). Across all jobs, only t/01-sanity/99-test-basic.t test file failed.
15:55 gfldex while trying to teach JSON::Fast to handle DateTime correctly I stepped on a bit of a problem
15:55 gfldex m: my $d = now.DateTime; my $d2 = DateTime.new($d.Str); say $d eqv $d2;
15:55 camelia rakudo-moar 21f05e: OUTPUT: «False␤»
15:55 gfldex m: my $d = DateTime.now; my $d2 = DateTime.new($d.Str); say $d eqv $d2;
15:55 camelia rakudo-moar 21f05e: OUTPUT: «False␤»
15:56 gfldex that only applies to DateTime objects that are created by using an Instant
15:56 timotimo m: my $d = DateTime.new; my $d2 = DateTime.new($d.Str); say $d; say $d2; say $d.perl; say $d2.perl
15:56 camelia rakudo-moar 21f05e: OUTPUT: «Cannot call DateTime.new with no parameters␤  in block <unit> at <tmp> line 1␤␤»
15:56 timotimo m: my $d = DateTime.now; my $d2 = DateTime.new($d.Str); say $d; say $d2; say $d.perl; say $d2.perl
15:56 camelia rakudo-moar 21f05e: OUTPUT: «2017-09-23T17:56:42.406978+02:00␤2017-09-23T17:56:42.406978+02:00␤DateTime.new(2017,9,23,17,56,42.4069781303406,:timezone(7200))␤DateTime.new(2017,9,23,17,56,42.406978,:timezone(7200))␤»
15:56 timotimo ah
15:57 timotimo it cuts off the accuracy
15:57 gfldex indeed
15:57 gfldex but the problem may reach deeper
15:58 gfldex it may very well be that we need ≅ for DateTime and Instant
15:59 gfldex timotimo: I'm confident there will be a PR for JSON::Fast today that got a working solution.
15:59 timotimo cool :)
15:59 timotimo if you'd like i'll make you contributor
16:01 Geth ¦ rakudo/nom: 0b15f6728a | (Zoffix Znet)++ | src/core/Main.pm
16:01 Geth ¦ rakudo/nom: Implement $*USAGE
16:01 Geth ¦ rakudo/nom:
16:01 Geth ¦ rakudo/nom: - Provides default USAGE message the program would generate
16:01 Geth ¦ rakudo/nom: - Available as dynvar $*USAGE inside MAIN and USAGE subs; USAGE sub
16:01 Geth ¦ rakudo/nom:     can use it as a base to generate custom usage, for example.
16:01 Geth ¦ rakudo/nom: - Speculation describes $?USAGE, but we renamed[^1] it since at compile
16:01 Geth ¦ rakudo/nom:     time we don't know if we'll ever need it
16:01 Geth ¦ rakudo/nom: - Die if user attempts to assign into it
16:01 Geth ¦ rakudo/nom:
16:01 Geth ¦ rakudo/nom: [1] https://irclog.perlgeek.de/perl6-dev/2017-09-23#i_15206569
16:01 Geth ¦ rakudo/nom: review: https://github.com/rakudo/rakudo/commit/0b15f6728a
16:02 Geth ¦ roast: 04b03b1d40 | (Zoffix Znet)++ | S06-other/main-usage.t
16:02 Geth ¦ roast: Spec $*USAGE
16:02 Geth ¦ roast:
16:02 Geth ¦ roast: Rakudo impl: https://github.com/rakudo/rakudo/commit/0b15f6728a
16:02 Geth ¦ roast: review: https://github.com/perl6/roast/commit/04b03b1d40
16:03 Geth ¦ specs: aec781246c | (Zoffix Znet)++ | 2 files
16:03 Geth ¦ specs: Add notes $?USAGE was renamed to $*USAGE
16:03 Geth ¦ specs:
16:03 Geth ¦ specs: Rakudo impl: https://github.com/rakudo/rakudo/commit/0b15f6728a
16:03 Geth ¦ specs: Spec: https://github.com/perl6/roast/commit/04b03b1d40
16:03 Geth ¦ specs: Docs: https://github.com/perl6/doc/commit/9849f0945f
16:03 Geth ¦ specs: review: https://github.com/perl6/specs/commit/aec781246c
16:16 * timotimo does another callgrind to compare
16:17 timotimo dangit, it'll take like 45 minutes or something >_<
16:18 timotimo 14th place for MVM_string_equal (though it for some reason also has the 15th place) with my opt in place
16:19 timotimo and adding the two numbers up it arrives at 4th place
16:48 BenGoldberg joined #perl6-dev
16:52 timotimo it's done!
16:53 timotimo there's almost no difference :\
16:53 dogbert11 oh no
16:54 timotimo like 7 million fewer instructions
16:54 timotimo but MVM_string_equal in total is responsible for about 6000 million instructions
17:10 timotimo it's still a mystery why string comparison went up by so much
17:24 travis-ci joined #perl6-dev
17:24 travis-ci Rakudo build passed. Zoffix Znet 'Implement $*USAGE
17:24 travis-ci https://travis-ci.org/rakudo/rakudo/builds/278978602 https://github.com/rakudo/rakudo/compare/21f05e3f1e6e...0b15f6728a4a
17:24 travis-ci left #perl6-dev
17:34 dogbert11 timotimo: I might be misinterpreting what kcachegrind tells me but a lot of calls seems to come from MVM_frame_find_lexical_by_name
17:37 timotimo oh? interesting.
17:38 timotimo i thought about that, too, but i didn't find many corresponding calls in the spesh
17:38 timotimo could be wrong of course
17:38 dogbert11 as could I :)
17:38 timotimo and i don't find the string equals in there. prehaps it's in the HASH_GET
17:40 timotimo it's almost 99% $?CLASS
17:40 dogbert11 HASH_GET sounds familiar
17:40 timotimo perhaps something broke the spesh opt that can specialize on $?CLASS cleverly
17:40 dogbert11 somthing called MVM_HASH_GET, is that the same?
17:42 gfldex m: say DateTime.now.posix, Date.today.posix;
17:42 camelia rakudo-moar 0b15f6: OUTPUT: «No such method 'posix' for invocant of type 'Date'␤  in block <unit> at <tmp> line 1␤␤»
17:44 dogbert11 how do you figure out if that opt is broken?
18:12 lizmat_ joined #perl6-dev
18:15 astj joined #perl6-dev
18:38 cognominal jnthn++ # guts
18:49 yoleaux AlexDaniel: teach bisectable to bisect moar, you idiot.
18:49 AelxDnaiel :|
18:52 cognominal the rise of the bots ?
20:06 astj joined #perl6-dev
20:14 Zoffix ZofBot: I'll be spared, though, right?
20:14 ZofBot Zoffix, jnthn: while siegeing the golfed httpd I got "MoarVM oops: Return label is NULL!"
20:16 AlexDaniel joined #perl6-dev
21:11 Ven`` joined #perl6-dev
21:53 geekosaur joined #perl6-dev
22:17 gfldex joined #perl6-dev
22:54 geekosaur joined #perl6-dev

| Channels | #perl6-dev index | Today | | Search | Google Search | Plain-Text | summary