Perl 6 language and compiler development | Logs at colabti.org/irclogger/irclogger_log/perl6-dev | For toolchain/installation stuff see #perl6-toolchain | For MoarVM see #moarvm
Set by Zoffix on 27 July 2018.
|Tux| Rakudo version 2018.08-32-g3dd09be33 - MoarVM version 2018.08-25-gc114c1e67
csv-parser23.054 - 23.151
csv-test-xs-200.440 - 0.450
test9.336 - 9.346
test-t2.045 - 2.073
test-t --race0.871 - 0.875
test-t-2035.263 - 36.471
test-t-20 --race11.189 - 11.433
08:49
I do not have time to go into it, but this is worrysome: 08:50
$ perl6 -Ilib csv-ip5xs.pl < /tmp/hello.csv
Segmentation fault (core dumped)
And I got a mail from OSSEC: 08:51
Sep 5 10:26:21 tux kernel: traps: moar[9167] general protection ip:7fd3f07cbef6 sp:7fd3ef487860 error:0 in libmoar.so[7fd3f0555000+623000]traps:
lizmat segfault conformed # nine 08:52
lizmat thought of the day: use "use precompilation" in a script to have it precompiled using CU:R:FileSystem semantics 10:15
tbrowder__ g’day #perl-dev 10:29
i have a question on a grammar construct in rakudo Perl6/Grammar.nqp 10:30
what does this line do: “<pod_content=.pod_textcontent>**0..1”? 10:33
it creates an array, but does it create exactly two elements? does it duplicate the pod_textcontent? 10:34
Geth rakudo: 874ec00225 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm6
Make for IO::Handle.lines { } about 10% faster

By losing the // and using nqp::ops instead
10:44
Geth nqp/master: 5 commits pushed by (Paweł Murias)++ 11:05
timotimo tbrowder__: the . in front of pod_textcontent prevents it from being captured 11:08
tbrowder__ ok, that’s right, and pod_content takes on the data from pod_textcontent? 11:10
timotimo yep, <pod_content=.pod_textcontent> is basically the same as $<pod_content>=<.pod_textcontent> 11:11
tbrowder__ what really confuses me is that pod_textcontent looks like it can take from 0 to inf number of text lines—i don’t see anything that stops it while in its block 11:13
timotimo it requires the lines to start with the right amount of spaces 11:15
so any line with fewer spaces will endi t 11:16
hm, that's not quite right i think, hold on.
tbrowder__ unless (the lightbulb may be turning on), the difference between abbrev and paragraph blocks (which can only have one para) and delimited blocks which can have more than one para...
hm, the 1 in 0..1 is a little fuzzy... 11:18
timotimo probably a holdover from when ? and ** 0..1 were changed to their current behaviour
with regards to returning Nil vs the value or returning an empty array or an array with the value in it
tbrowder__ good thought! 11:19
i’ll try replacing 0..1 with a ? 11:20
travis-ci NQP build failed. Paweł Murias '[js] Change to non-deprecated method of Buffer construction' 11:20
travis-ci.org/perl6/nqp/builds/424738550 github.com/perl6/nqp/compare/8846e...8a6d330881
tbrowder__ timotimo: thanks so much—it helps to 11:20
talk to someone who is so thoughtful 11:21
timotimo oh, thank you for that compliment :)
lizmat .ask jnthn do you have any thoughts on expanding the Encoding::Decoder role to include something like "consume-line-chars-chomp" which in its default implementation would call "consume-line-chars(:chomp)" ? 11:25
yoleaux lizmat: I'll pass your message to jnthn.
Geth rakudo: d198c1b732 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm6
Make my @a = IO::Handle.lines about 10% faster

Lose the // in the loop.
11:26
pmurias lizmat: what would be the benefit of that? reduce the overhead of a named parameter? 11:40
lizmat yeah, but I just figured out that it doesn't gain much, if anything 11:41
timotimo no, more like "if the decoder can do it cheaply, skip the newline directly rather than chopping off after reading"
lizmat timotimo: the thing is that nqp::decodertakeline(self, $chomp, $eof); still takes the parameters
it would only make sense if there were nqp versions of that without chomping / eof behaviour
lizmat .tell jnthn scratch that last question 11:42
yoleaux lizmat: I'll pass your message to jnthn.
brrt i think the new irc log site is down :-( 11:44
timotimo yup
brrt 😢 11:44
brrt needs a terminal emulator that has emoji substitution 11:45
lizmat m: say "😢".uninames 12:01
camelia (CRYING FACE)
lizmat .u 😢 12:02
yoleaux U+1F622 CRYING FACE [So] (😢)
lizmat I guess thats shorter :-)
Geth nqp: 8dd59c4451 | (Paweł Murias)++ | src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java
[jvm] Make nqp::expmod handle negative exponents
12:03
nine lizmat: "use precompilation;" for scripts wouldn't make much sense, since to get at the information that we should look for a precomp file, we'd have to parse the script. 12:45
lizmat not necessarily: if the script loader would look for a compiled version and execute that 12:46
nine lizmat: nevertheless, I've looked into precompiling scripts from time to time. It's certainly possible, but also a bit involved, since the perl6 program's structure very much expects to compile something
lizmat the "use precompilation" would then be responsible for making the precomp version
nine lizmat: but why have that pragma then in the first place? If we can precompile scripts, we ought to do it always. 12:47
lizmat whenever the loader notices the script has changed, it would drop the precomp version
that's also a point
nine OTOH if you want to precompile the script's code, just shove it into a module and "use" that.
pmurias nine: re running scripts without rakudo I played with that for rakudo.js
lizmat nine: well, that still feels like a workaround 12:48
pmurias s/played/got it to work/
nine: the biggest thing that was needed was putting a fake compiler into nqp::getcomp('perl6') 12:49
timotimo hack.p6c.org/~timo/perl6-dev_log.html - brrt and friends 12:50
pmurias nine: plus setting up %*COMPILING, loading up Perl6::World and setting up @END_PHASERS 12:51
nine pmurias: that's quite interesting! 12:52
pmurias nine: file that does the required hacks github.com/perl6/parcel-plugin-nqp...l6Asset.js 12:54
timotimo: thanks 12:59
timotimo pmurias: also moarvm_log and perl6_log
Geth rakudo: 1905838c10 | (Elizabeth Mattijsen)++ | src/core/IO/Handle.pm6
Make IO::Path.lines about 10% faster

  - put the close logic into the iterator classes
  - remove need for nested iterators (except when asking for limit)
  - remove a .lines candidate
  - since only one client of PIOIterator role, merge into class
13:00
timotimo cool 13:01
lizmat cycling&& 13:02
[Coke] lizmat++ # continuous improvements 13:32
Geth nqp: c734c8c646 | (Paweł Murias)++ | 3 files
[js] Suport .HOW.name on lowlevel NQP string to fix --target=ast in rakudo.js
14:07
nqp: 5cf777b137 | (Paweł Murias)++ | src/vm/js/bin/run_tests.pl
[js] Don't run failing tests
japhb Anyone know if we lost colabti permanently or just temporarily? 14:24
timotimo dunno; did you see my replacement irclog for backlogging purposes? 14:28
jnthn . 15:08
yoleaux 11:25Z <lizmat> jnthn: do you have any thoughts on expanding the Encoding::Decoder role to include something like "consume-line-chars-chomp" which in its default implementation would call "consume-line-chars(:chomp)" ?
11:42Z <lizmat> jnthn: scratch that last question
jnthn .tell lizmat Scratched, but the answer would be that I don't see the point :) 15:10
yoleaux jnthn: I'll pass your message to lizmat.
japhb timotimo: Yeah, saw it, but not having the parts and joins faded, collapsed, or removed makes it very hard for me to follow. The signal gets lost in the noise. 15:27
japhb (These days the same could be said for everything p6bannerbot does) 15:27
timotimo i should be able to grep them out 16:04
timotimo ... how do i grep for tab characters ... 16:07
geekosaur control-v, tab 16:07
timotimo thanks!
ah, not in fish
geekosaur can't help. aside maybe from grep -P and then sue \t
use 16:08
timotimo i can go outside of the quotes and put \t
japhb: refresh, these lines are now gone :) 16:10
lizmat another thought of the day: are the spesh / optimizer threads running during setting compilation? if so, does that make sense ? 18:51
yoleaux 15:10Z <jnthn> lizmat: Scratched, but the answer would be that I don't see the point :)
timotimo they are, and yeah, of course it makes sense, since the parser and compiler are also perl6 code that gets optimized 19:19
lizmat: ^ 19:20
lizmat do we have prove that it makes sense ? 19:21
timotimo turning off spesh also turns off the jit
i recently posted on #perl6 what times i get for core setting compilation with and without jit 19:22
Geth rakudo: 92951168bd | (Elizabeth Mattijsen)++ | 2 files
Extract Str.words(:autoderef) and streamline it

The runtime post-processing of quoted words used a special candidate of Str.words. By giving the method its own name, it is no longer part of the MMD of Str.words *and* we can remove a named parameter to the call. The inside of the method could also be streamlined a bit so that we have a lot less boxing going on.
timotimo i should perhaps try without spesh as well
lizmat inquiring minds need to know :-) 19:23
timotimo 98.72user 0.55system 1:39.58elapsed 99%CPU (0avgtext+0avgdata 1375660maxresident)k 19:27
78.10user 0.58system 1:17.65elapsed 101%CPU (0avgtext+0avgdata 1387728maxresident)k 19:29
the second one is jit off, spesh on, the first one is jit off spesh off
75.37user 0.66system 1:13.77elapsed 103%CPU (0avgtext+0avgdata 1417380maxresident)k 19:30
that is spesh on jit on 19:31
to me that says either "turning the jit off can save a nice amount of memory during core setting compilation without costing much time", or "we should see what the jit could do better in core setting compilation in particular" 19:33
but spesh is definitely worth it 19:34
lizmat feels to me that we could switch off JIT for core compilation as memory usage for core setting compilation *is* a problem on small machines 20:18
pmurias lizmat: offering a switch could be a sensible option 20:20
in Perl6::Optimizer do we assume QAST nodes aren't used shared in multiple places? 20:27
we seem to be editing them a lot inplace
(and intersection of two optimizations is causing a bug on js/jvm backends) 20:28
lizmat timotimo might know 20:31
Geth rakudo: ae739adf3a | (Elizabeth Mattijsen)++ | 2 files
Obscurize words-autoderef a bit
20:44
timotimo sometimes we edit them in-place so that both subtrees of a QAST::Want get optimized even though we only descend into one of the two 21:11
pmurias timotimo: so the bug is that when we are optimizing $var += ... 21:15
timotimo: $var is used twice
timotimo ah, yeah, perhaps it should be bound to a local first 21:16
pmurias the problem is that when we have nqp::assign_i($var, $var + ...) lexicalref is turned into lexical when optimizing $var + ... 21:17
timotimo oh, right
pmurias timotimo: it could be fixed with a nqp::clone on one of the QAST::Vars
timotimo that's bad
pmurias timotimo: the fix or the problem?
timotimo the problem 21:19
and the situation
but a good catch
pmurias I'll spectest the fix and commit it tommorow ;) 21:20
japhb timotimo: Thanks for the cleaner irclog view! :-) 21:54
timotimo \o/
Geth rakudo: 07089e89e8 | (Elizabeth Mattijsen)++ | src/core/Str.pm6
Make Str.chop(N) about 5x as fast

First check for bigint ness, then use native int logic only
22:11
timotimo oh wow 22:12
lizmat and that concludes my hacking for today
good night!
timotimo gnite lizmat 22:13