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.
Zoffix I think that's largely impossible though, isn't it? .count-only must be able to figure out the elems without advancing the iterator. Even if we assume an already-fully-reified and cached list as input, you'd be left with a problem that you'd be executing the &Callable more than expected number of times in constructs like .grep[*-1], because you'd be calling it first to get the count-only, and then to get 01:12
the actual elems later
timotimo oh, OK
Geth roast: 2908259df2 | (Zoffix Znet)++ | S05-mass/rx.t
Remove trailing whitespace
01:24
roast: dc89c6ac4d | (Zoffix Znet)++ | S05-mass/rx.t
[v6.d REVIEW] improve fancy-digit backref test desc

Orig: github.com/perl6/roast/commit/2667e3edf
01:25
roast: c6ea815c72 | (Zoffix Znet)++ | S05-mass/rx.t
[v6.d REVIEW] Improve fancy-digit ** regex op test

  - Test we match correct portion of data
  - Test non-matching case too
Orig: github.com/perl6/roast/commit/876785a94
01:29
Geth roast: ee1fedaf94 | (Zoffix Znet)++ | S32-str/utf8-c8.t
Fix whitespace at end of file
01:34
roast: 03042d0584 | (Zoffix Znet)++ | S32-str/utf8-c8.t
[v6.d REVIEW] Use standard test file routines

Orig: github.com/perl6/roast/commit/65979128a
01:35
Geth roast: ea161c99bf | (Zoffix Znet)++ | S32-array/create.t
[v6.d REVIEW] Expand .Array on list writability tests

Test we actually get correct results Orig: github.com/perl6/roast/commit/890ca310e
01:49
Geth roast: 884e75d976 | (Zoffix Znet)++ | S02-types/array-shapes.t
[v6.d REVIEW] Improve .= new shaped array test

Test we actually got right result.
  (tested with .perl's rather than is-deeply, because the latter
dies with partially dim. views NYI) Orig: github.com/perl6/roast/commit/1f05be281
02:02
roast: 596f4fe414 | (Zoffix Znet)++ | S02-types/num.t
[v6.d REVIEW] Clarify tests that use U+2212 minus

Document we use fancy minus, to care for fonts that render it the same as regular minus, making tests look duplicated. Orig: github.com/perl6/roast/commit/bbdbb0158
02:05
roast: db0c3d1fa7 | (Zoffix Znet)++ | S32-num/rat.t
[v6.d REVIEW] Improve Real cmp RatStr test

  - Test we get right results too
  - Test in reverse order as well
Orig: github.com/perl6/roast/commit/6bbfcc0ee
02:08
Geth roast: c25b7343e8 | (Zoffix Znet)++ | S16-io/lines.t
[v6.d REVIEW] Use standard temp file routine

Orig: github.com/perl6/roast/commit/7b680fe5e
04:10
roast: f9574de418 | (Zoffix Znet)++ | S32-num/rat.t
[v6.d REVIEW] Improve Rational subclass test

Check the resultant types and num/den too Orig: github.com/perl6/roast/commit/a4290dfd6
04:28
6.d-prep: 97a61a3ee9 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/README.md
Update Zoffix's review commit and note weak points of the review
04:33
roast: 50138a913f | (Zoffix Znet)++ | 2 files
[v6.d REVIEW] Move Supply:U.skip test to appendix

We might alter this behaviour, based on R#2100 results
  github.com/rakudo/rakudo/issues/2100
Orig: github.com/perl6/roast/commit/24af69c6c
04:41
synopsebot R#2100 [open]: github.com/rakudo/rakudo/issues/2100 [6.d review][@LARRY][audit entire codebase for such issues][consistency] Inconsistent behaviour with methods called on :Us
Geth rakudo: 741ae6f4ed | (Zoffix Znet)++ | t/spectest.data
Add APPENDICES/A02-some-day-maybe/concreteness.t to test files
04:42
roast: 07f252d974 | (Zoffix Znet)++ | S17-supply/skip.t
[v6.d REVIEW] Fix broken Supply.skip test

The test was passing for the wrong reason: death was due to Supply.new call and not the erroneous .skip call. Fix by using more precise test. Orig: github.com/perl6/roast/commit/24af69c6c
04:46
roast: e0cdd5deef | (Zoffix Znet)++ | S32-list/batch.t
[v6.d REVIEW] Precisify .batch tests

Test the actual types and their structure instead of the stringified shadow (e.g, the tests would not detect Arrays being returned instead of Seqs and the 20 batch test would not detect lack of batching instead of a single batch being returned)
Orig: github.com/perl6/roast/commit/ca42a3750
04:52
roast: fc96f8a711 | (Zoffix Znet)++ | S12-class/attributes.t
[v6.d REVIEW] Improve :: class in attr init test

Actually test the resultant attribute has correct type Orig: github.com/perl6/roast/commit/afe080a02
04:59
Geth rakudo: 3b61d4f230 | (Elizabeth Mattijsen)++ | src/core/Iterator.pm6
Update internal doc of Iterator.count-only/bool-only
08:41
rakudo: 6977973dec | (Elizabeth Mattijsen)++ | src/core/Map.pm6
Simplify the Map.kv iterator

Using the now existing roles/classes/iterators
Geth rakudo: 64ddacab8f | (Elizabeth Mattijsen)++ | src/core/Str.pm6
Make sure Str.Lines iterator has correct bool-only semantics
09:05
rakudo: 9738dfbf21 | (Elizabeth Mattijsen)++ | src/core/Shaped1Array.pm6
Correct 1dim shaped array iterator count-only/bool-only semantics
09:23
Geth rakudo: d1e80dfe28 | (Elizabeth Mattijsen)++ | src/core/Str.pm6
Correct Str.comb.count-only/bool-only semantics
09:36
rakudo: 9ff1736761 | (Elizabeth Mattijsen)++ | src/core/Str.pm6
Disable Str.comb(N).count-only/bool-only semantics for now

This Iterator needs an overhaul.
09:44
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Make sure Str.Lines iterator has correct bool-only semantics' 10:30
travis-ci.org/rakudo/rakudo/builds/426044584 github.com/rakudo/rakudo/compare/6...ddacab8f8e
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 10:31
[Tux] Rakudo version 2018.08-54-g9ff173676 - MoarVM version 2018.08-38-g477ec445f
csv-ip5xs0.939 - 0.954
csv-ip5xs-207.570 - 7.704
csv-parser24.822 - 25.170
csv-test-xs-200.427 - 0.450
test8.091 - 9.441
test-t2.160 - 2.165
test-t --race0.941 - 1.007
test-t-2038.216 - 40.236
test-t-20 --race13.374 - 13.810
10:54
Geth roast/moaaar-iterator-cover: 09f561314f | (Zoffix Znet)++ | MISC/bug-coverage.t
Cover more iterator opt tests

Covers bugs fixed by
  github.com/rakudo/rakudo/commit/64ddacab8f
  github.com/rakudo/rakudo/commit/9738dfbf21
  github.com/rakudo/rakudo/commit/d1e80dfe28
  github.com/rakudo/rakudo/commit/9ff1736761
Merge blocked by R#2075 github.com/rakudo/rakudo/issues/2075 as some of the opt methods return incorrect values after IterationEnd
11:30
synopsebot R#2075 [open]: github.com/rakudo/rakudo/issues/2075 [6.d review][@LARRY] Meaning of `.bool-only`/`.count-only` after receiving IterationEnd ?
6.d-prep: 5b4e388811 | (Zoffix Znet)++ (committed using GitHub Web editor) | TODO/FEATURES.md
List another roast commit that hangs on .bool-only/.count-only meaning

Needs resolution to R#2075 github.com/rakudo/rakudo/issues/2075
11:32
synopsebot R#2075 [open]: github.com/rakudo/rakudo/issues/2075 [6.d review][@LARRY] Meaning of `.bool-only`/`.count-only` after receiving IterationEnd ?
cognominal-p6 notes that both in the doc and specs repository, sigiless and sigiled sometimes written with two l, sometimes with one. For sake of grepping, we should choose only one of the two spellings. 11:34
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Disable Str.comb(N).count-only/bool-only semantics for now 11:56
travis-ci.org/rakudo/rakudo/builds/426052368 github.com/rakudo/rakudo/compare/d...f173676126
MasterDuke are [Tux]'s most recent numbers a bit slower? or am i imagining that? 12:22
m: my Int $a := 50_000_000; Nil for ^$a; say now - INIT now 13:19
camelia 4.1872836
MasterDuke m: use nqp; my Int $a := 50_000_000; my Int $b := -1; my Int $c := nqp::clone($a); nqp::while(nqp::isle_I(nqp::bind($b,nqp::add_I($b,1,Int)),$c),Nil); say now - INIT now 13:20
camelia 3.6378301
MasterDuke timotimo: ^^^ something like that for the non-native/literal/constant for-range -> while conversion? 13:22
lizmat, et al.: any thoughts either? 13:24
Zoffix MasterDuke: that's not a constant tho 13:49
m: my Int $b := -1; $b := 42; say $b
camelia 42
MasterDuke heh, that should have been "non-(native/literal/constant)" 13:50
i.e., we currently only do the conversion/optimization for natives/literals/constants, i'm trying to see if it can be done for other things 13:52
Zoffix Ah, right, I thought it'd be breakable, but it ain't 13:54
m: my Int $a := 5; for ^2 { .say for ^$a; $a := 10 };
camelia 0
1
2
3
4
0
1
2
3
4
5
6
7
8
9
Zoffix like with this case, but the optimized version does handle it (tho it got an off-by-one error)
but... 13:55
Zoffix tries to break it
Zoffix m: EVAL 'use MONKEY; augment class Range { multi method new (0, 10) { ^3 } }'; my Int $a := 5; for ^2 { .say for ^$a; $a := 10 }; 13:59
camelia 0
1
2
3
4
0
1
2
Zoffix DIHWIDT? :)
That probably applies to native case too
yup 14:00
$ perl6 -e 'm: EVAL 「use MONKEY; augment class Range { multi method new (0, 10) { ^3 } }」; .print for ^10'
0123456789
$ perl6 --optimize=off -e 'm: EVAL 「use MONKEY; augment class Range { multi method new (0, 10) { ^3 } }」; .print for ^10'
012
Zoffix votes DIHWIDT 14:01
MasterDuke goes afk for a bit, but hope the comments keep coming
AlexDaniel cognominal-p6: please file a ticket 14:37
cognominal-p6: pretty sure it will be fixed very quickly in the doc repo
MasterDuke if nqp::objprimspec($a) == 0, that means it's an object, right? 18:12
timotimo that's right 18:13
MasterDuke thanks 18:14
timotimo i got a little shout-out by jnthn for my profiler frontend work during an SPW2018 lightning talk <3 18:15
MasterDuke nice 18:16
MasterDuke hm, why would `my $vname := $!symbols.find_lexical_symbol($node.name);` die with `Cannot look up attributes in a VMNull type object`? fwiw, `$node.name` is '$max' 19:07
Geth nqp/master: 4 commits pushed by (Stefan Seifert)++, (Paweł Murias)++ 20:06
rakudo/master: 5 commits pushed by (Stefan Seifert)++ 20:07
travis-ci NQP build failed. Paweł Murias '[jvm] Implement nqp::hllbool and nqp::hllboolfor' 20:25
travis-ci.org/perl6/nqp/builds/426181532 github.com/perl6/nqp/compare/715ae...40e8d75f07
travis-ci Rakudo build failed. Stefan Seifert 'Remove obsolete p6settypes extop 20:36
travis-ci.org/rakudo/rakudo/builds/426181691 github.com/rakudo/rakudo/compare/9...4e82259be3
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 20:36
MasterDuke nine: just got a segv in stage parse 20:41
nine: gist.github.com/MasterDuke17/52aac...c09f8282b4 20:46
same segv with expr jit disabled, but seems to be ok with regular jit disabled 20:48
MasterDuke no segv under valgrind so far 21:30
timotimo looks like there's a small performance win in json::fast by putting the parse stuff into methods in a class and having $!pos and $!text instead of passing them around as arguments 22:30
MasterDuke timotimo: did you see my question about $!symbols.find_lexical_symbol? any idea? 22:37
timotimo oh? i must have missed it 22:41
oh, there it is
did you get a breakpoint in gdb to stop there?
MasterDuke i haven't yet 22:42
timotimo m: say 3.47 / 3.72
camelia 0.932796
timotimo about 7% less time spent when using attributes
MasterDuke nice 22:43
timotimo that shall add up since so many things use JSON::Fast 22:44
m: say 3.18 / 3.36 22:48
camelia 0.946429
timotimo only 5% with postrelease-opts
but that may not land in the next release after the next one, so ...
MasterDuke i breaked at that MVM_exception_throw_adhoc 22:49
timotimo OK, can you find the right spot in the bytecode? call MVM_dump_bytecode(tc)? 22:50
MasterDuke 00220 getattr_o loc_24_obj, loc_22_obj, loc_3_obj, '$!symbols', 0 22:51
...
00228 findmeth loc_22_obj, loc_23_obj, 'find_lexical_symbol'
timotimo is there a --> anywhere?
MasterDuke 00217 -> getlex_no loc_22_obj, 'self' 22:52
should i gist this whole section?
timotimo ok, that's probably just the cur_op being incremented after finishing the getattr or something
it sounds like your self may be null
MasterDuke i've made some edits, but i'm essentially in here github.com/rakudo/rakudo/blob/mast...1048-L1057 22:54
timotimo aha 22:58
you're inside a sub, yeah?
that makes it difficult to use $!foo :)
MasterDuke: does that give you a way forward? 23:04
MasterDuke oh, ha 23:06
timotimo++ 23:09
timotimo sorry it took like four hours :( 23:10
MasterDuke no worries, there was dinner and gdbing the new segv in that time 23:11
MasterDuke heh, just turning the sub into a method won't work 23:20
timotimo i hope you also put a self. in front of every time it's used? 23:22
otherwise it'll look a bit like this
nqp-m: foo()
camelia Cannot invoke this object (REPR: Null; VMNull)
at <tmp>:1 (<ephemeral file>:<mainline>)
from gen/moar/stage2/NQPHLL.nqp:1567 (/home/camelia/rakudo-m-inst-2/share/nqp/lib/NQPHLL.moarvm:eval)
from gen/moar/stage2/NQPHLL.nqp:1806 (/home/camelia/rakudo…
MasterDuke yeah, but `Cannot call method 'get_bound' on a null object` 23:23
i.e., i did put self
timotimo from a method? :) 23:25
MasterDuke nope, it's in the mainline of the class 23:26
timotimo that's not going to work, then
at that point, no instance exists 23:27
MasterDuke yep 23:28
timotimo i'm not entirely sure why you'd call the method from the mainline of the class anyway 23:38
MasterDuke get_bound is used to populate %range_bounds 23:43
github.com/rakudo/rakudo/blob/mast...1062-L1087
timotimo well, it'll be extremely difficult to get at %!symbols in that case 23:44
so maybe pass %!symbols as an argument whenever it's potentially needed
then get_bounds can become a sub again
MasterDuke yeah, that might be easier overall 23:45
Geth nqp: db0f1175ad | (Zoffix Znet)++ | tools/build/MOAR_REVISION
[MoarVM Bump] Brings 17 commits

MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...5-gef47433 ef47433 Teach the lego JIT to compile hllbool, too c1c2b7e JIT compile hllboolfor 756a97d JIT compile hllbool 7c5740f Teach spesh to replace hllboolfor by the result for known values ... (13 more lines)
23:50
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...5-gef47433
rakudo: 3272207ae5 | (Zoffix Znet)++ | tools/build/NQP_REVISION
[NQP Bump] Brings 11 commits

NQP bump brought: github.com/perl6/nqp/compare/2018....6-gdb0f117 db0f117 [MoarVM Bump] Brings 17 commits a640e8d [jvm] Implement nqp::hllbool and nqp::hllboolfor 92f2ba0 [js] Implement nqp::hllbool and nqp::hllboolfor 3651131 Add tests for nqp::hllboolfor and nqp::hllbool ... (26 more lines)
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....6-gdb0f117
Zoffix MasterDuke: ^ try with those bumps. I don't get no segvs 23:54
ZOFVM: Files=1305, Tests=153123, 152 wallclock secs (21.77 usr 3.28 sys + 3244.31 cusr 172.21 csys = 3441.57 CPU)
nine++ # don't know if it's real or if google is giving more juice to my VM, but I'm seeing an 11% improvement in stresstest run 23:55
(actually, I forgot how many days ago I ran last stresstest, so it might be lizmat++'s perf improvements too :)) 23:57
MasterDuke Zoffix: same segv (i was on HEAD of all three repos before, so not surprising the bumps didn't change anything) 23:58
Zoffix ZOFFLOP: t/spec/S17-promise/lock-async-stress2.t SEGV + "MoarVM panic: Corrupt multi dispatch cache: cur_node != 0, re-check == (nil)" on another un 23:59
timotimo bit the hllbool merge was very new, wasn't it?
MasterDuke i had rebuilt immediately after it landed
timotimo OK
rakudo fully rebuilt?