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.
00:00 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 01:12 evalable6 left, evalable6 joined, ChanServ sets mode: +v evalable6 01:13 p6bannerbot sets mode: +v evalable6 01:25 ggoebel joined, p6bannerbot sets mode: +v ggoebel 02:01 donaldh left, donaldh_ joined 02:02 p6bannerbot sets mode: +v donaldh_ 02:11 ufobat_ joined, p6bannerbot sets mode: +v ufobat_ 02:14 ufobat left 02:32 ggoebel left 02:49 fake_space_whale joined 02:50 p6bannerbot sets mode: +v fake_space_whale
Geth rakudo: jstuder-gh++ created pull request #2425:
Fix potential race condition in Proc::Async start
03:10
04:58 Ven` joined 04:59 p6bannerbot sets mode: +v Ven` 05:02 Ven` left 06:19 MasterDuke left 06:32 robertle joined 06:33 p6bannerbot sets mode: +v robertle 06:36 [Tux] left 06:43 [Tux] joined 06:44 p6bannerbot sets mode: +v [Tux] 06:50 fake_space_whale left
lizmat Files=1257, Tests=76342, 337 wallclock secs (15.69 usr 5.66 sys + 2372.09 cusr 241.51 csys = 2634.95 CPU) 06:58
07:34 ufobat_ is now known as ufobat 08:05 Ven` joined 08:06 p6bannerbot sets mode: +v Ven` 08:35 dalek left 08:36 Geth left 08:47 donaldh_ left 08:49 donaldh joined, pmurias left, p6bannerbot sets mode: +v donaldh 08:55 pmurias joined, p6bannerbot sets mode: +v pmurias 09:25 stmuk joined, p6bannerbot sets mode: +v stmuk 09:26 p6lert left, synopsebot left, SourceBaby left, dalek joined, ChanServ sets mode: +v dalek 09:27 synopsebot joined, Geth joined, p6lert joined, ChanServ sets mode: +v synopsebot, ChanServ sets mode: +v Geth, stmuk_ left, p6bannerbot sets mode: +v dalek, p6bannerbot sets mode: +v synopsebot, p6bannerbot sets mode: +v Geth, p6bannerbot sets mode: +v p6lert 09:46 ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy 09:55 SourceBaby joined, ChanServ sets mode: +v SourceBaby, p6bannerbot sets mode: +v SourceBaby 09:57 Geth left, Geth joined, ChanServ sets mode: +v Geth 09:58 p6bannerbot sets mode: +v Geth
Geth rakudo: 79bec897f5 | (Zoffix Znet)++ | appveyor.yml
Revert to non-verbose nmake test

No idea how to get the prove command to work right on appveyor
09:58
10:36 pmurias left 10:38 pmurias joined, p6bannerbot sets mode: +v pmurias 10:39 pmurias left 10:42 pmurias joined, p6bannerbot sets mode: +v pmurias 10:48 Ven` left
lizmat bisectable6: dd sub (Str(Int) $a, Int $b ) { }.assuming(1).signature 11:26
bisectable6 lizmat, On both starting points (old=2015.12 new=79bec89) the exit code is 0 and the output is identical as well
lizmat, Output on both points: «:(Int $b)␤»
11:29 Ven` joined
lizmat bisectable6: dd sub (Str(Int) $a, Str(Int) $b ) { }.assuming(1).signature 11:29
bisectable6 lizmat, On both starting points (old=2015.12 new=79bec89) the exit code is 0 and the output is identical as well
lizmat, Output on both points: «:(Int $b)␤»
lizmat that seems wrong to me :-)
11:30 p6bannerbot sets mode: +v Ven` 11:32 leont joined 11:33 p6bannerbot sets mode: +v leont
Geth rakudo: lizmat self-assigned Code.assuming doesn't honour coerce_type Parameters github.com/rakudo/rakudo/issues/2426
97996e5e9a | (Elizabeth Mattijsen)++ | src/core/Code.pm6

Fixes R#2426
11:39
11:44 pmurias left 11:45 pmurias joined, p6bannerbot sets mode: +v pmurias 11:47 pmurias left 11:50 pmurias joined, p6bannerbot sets mode: +v pmurias
lizmat m: sub a (Str(Int) @a) { dd @a }; a Array[Int].new(1,2,3) # this is not what I expected 12:00
camelia "1 2 3"
lizmat jnthn moritz masak ^^^ is that to be expected ? 12:02
I sorta expected an array of strings with "1","2","3"
perhaps we should disallow coercion on aggregate types? until we've figured out the semantics ? 12:03
12:05 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix lizmat: FWIW, I would've expected an Array parametarized with Str(Int) type, though I think that hits whatever limitation prevents `my Str(Int) $x` from working. 12:05
lizmat: there's a ticket with a similar example: R#2319
synopsebot R#2319 [open]: github.com/rakudo/rakudo/issues/2319 Coercers as parameter parametarizers give wild results
Zoffix m: -> Int() @v { dd @v.^name }(Array[Any].new: 1, 2, 34, 6) 12:06
camelia "Int"
Zoffix "an Array parametarized with".. I mean for the signature to only accept such an Array 12:07
m: dd Array[Str(Int)].new
camelia Array[Str(Int)].new()
Zoffix m: dd Array[Str(Int)].new: 42, 55 12:08
camelia Type check failed in assignment to ; expected Str(Int) but got Int (42)
in block <unit> at <tmp> line 1
Zoffix heh
m: dd Array[Str(Any(Cool(IO(Array[Str(Any(Cool(IO(Int))))]))))].new: 42, 55 12:09
camelia Type check failed in assignment to ; expected Str(Any(Cool(IO(Array[Str(Any(Cool(IO(Int))))])))) but got Int (42)
in block <unit> at <tmp> line 1
Zoffix m: -> Str(Int(Cool)) $x { dd $x }(42)
camelia Type check failed in binding to parameter '$x'; expected Int(Cool) but got Int (42)
in block <unit> at <tmp> line 1
Zoffix Filed as R#2427 12:12
synopsebot R#2427 [open]: github.com/rakudo/rakudo/issues/2427 Nested Coercers
12:12 Zoffix left
synopsebot R#2426 [open]: github.com/rakudo/rakudo/issues/2426 Code.assuming doesn't honour coerce_type Parameters
12:29 pmurias left 12:30 pmurias joined, p6bannerbot sets mode: +v pmurias
Geth rakudo: lizmat self-unassigned Code.assuming doesn't honour coerce_type Parameters github.com/rakudo/rakudo/issues/2426
1ea3ff2fb2 | (Elizabeth Mattijsen)++ | src/core/Code.pm6

That are not yet picked up in codegen or by the static optimizer yet :-(
12:31
12:59 leont left 13:00 Ven` left 13:07 j3nnn1 joined, p6bannerbot sets mode: +v j3nnn1 13:12 Ven` joined, p6bannerbot sets mode: +v Ven`
jnthn lizmat: Forbidden for now, I think 13:17
13:24 pmurias left 13:34 leont joined, p6bannerbot sets mode: +v leont 13:40 pmurias joined, p6bannerbot sets mode: +v pmurias 13:45 lizmat left
dogbert2_ jnthn: back from your trip? 13:55
jnthn dogbert2_: Yeah...with a cold-ish thing :/ 14:00
pmurias m: multi y(int $x is rw) { say('good') }; multi y(Int $x) { say('bad') }; y(my int $x = 42); 14:14
camelia bad
pmurias jnthn: ^^ is this a bug?
jnthn Looks like, yes
pmurias m: multi y(int $x is rw) { 'good' }; multi y(Int $x) { 'bad' }; say "optimizer has different semantics:", y(my int $x = 42); 14:15
camelia optimizer has different semantics:good
jnthn The "optimizer" can settle literal allomorphy 14:17
But in this case it's just a straight native reference and that should do the right thing at runtime
I think we'll rename the optimize phase also 14:18
Because it'll increasingly do spec things
And the name should reflect that
Optimizer implies it's entirely optional, which is the source of a lot of confusion.
pmurias jnthn: if it starts doing spec things it should do them in consistent manner rather then based on adhocly gathered info ;) 14:25
jnthn Please stop trying to have the same discussion 2000 times. 14:28
timotimo we can call it the CHECKer, since it runs at check time ... or does it actually run earlier than that?
i think CHECK is kind of like link time?
jnthn It comes after CHECK 14:29
Since CHECK is your last chance to do things before we make assumptions about things not changing.
timotimo it's the baker
14:41 pmurias left 14:48 pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left, AlexDaniel left
dogbert2_ jnthn: oops, cold-ish things are not very nice 14:48
14:53 pmurias joined, p6bannerbot sets mode: +v pmurias 14:54 pmurias left 14:58 pmurias joined, p6bannerbot sets mode: +v pmurias 15:08 pmurias left 15:11 pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left 15:16 fake_space_whale joined, pmurias joined, p6bannerbot sets mode: +v pmurias, p6bannerbot sets mode: +v fake_space_whale 15:29 robertle left
pmurias jnthn: the problem is that nqp::isrwcont(nqp::captureposarg($capture, $index)) return 0 for a int lexicalref 15:30
15:33 ExtraCrispy left
jnthn Ah. That's wrong. 15:36
Odd... github.com/MoarVM/MoarVM/blob/mast...ers.c#L352 15:40
That looks correct
timotimo perhaps the struct below is messed up in its order … 15:41
easy to check with gdb
yeah it's correct
15:45 lizmat joined, p6bannerbot sets mode: +v lizmat 15:53 pmurias left 15:59 pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left 16:01 fake_space_whale left 16:02 ggoebel joined 16:03 p6bannerbot sets mode: +v ggoebel 16:04 pmurias joined, p6bannerbot sets mode: +v pmurias, ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy
timotimo jnthn: i'm seeing that we're not setting rw_cont in the type tuple if we have a NativeRef ... is the distinction between a "scalar that's RW" and "a native ref" important? 16:07
i stumbled across it because the decontrv for those still have an isrwcont op in them 16:08
so we're not setting the RW_CONT fact in spesh for those cases
jnthn timotimo: It should be set, but it exposes some other shortcomings that need to be addressed first. 16:09
timotimo right, like we'd have the "is rw cont" flag set, but there wouldn't be a cont type vs decont type
or rather, we don't have a way to signal "decont on this will box, if you don't want it, here's the op that you want instead" 16:10
i've got a patch that will split a decont on a NativeRef into a decont_* plus a box_*
that devirtualizes "what kind of object do we have, how do i properly unbox it" plus the creation of the box object is either split into a fastcreate and a sp_bind_* 16:11
and that should allow for scalar replacement or box removal, too 16:12
16:12 pmurias left
timotimo i was considering maybe adding a spesh op that can add an i to an I - mostly just because you can swap the LHS and RHS of an add_I 16:13
jnthn Ooh, yes :)
(to the first opt)
Not sure on the second one
Though I guess maybe it makes ++ and -- cheaper
timotimo it can improve our performance when we add an Int and an Int*Ref 16:14
right now we're deconting the ref into a boxed object, then add_I (or whatever) 16:15
we could skip that box
jnthn True, but maybe SR will do that for us anyway
timotimo that'd be cool.
jnthn My plan is to try and let us store a P6bigint in a register (
timotimo i have a snippet in front of me right now that looks like something we should totally be able to do either already or very soon
jnthn Only spesh-done of course, not exposed 16:16
timotimo sp_bind_s_nowb r9(5), liti16(32), r40(1)
jnthn We need to be super careful not to leak though
timotimo sp_p6oget_s r13(2), r9(5), liti16(8)
aye, that'd be very bad news
i'm not sure how the 8 and 32 correspond there, though
jnthn Offset from start of object vs. offset from data part of a P6opaque 16:17
16:17 pmurias joined, p6bannerbot sets mode: +v pmurias
timotimo ooh 16:18
one includes the header, then
and the other might go through an indirection
maybe this discussion ought to move to #moarvm 16:19
16:34 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 17:05 cognominal-p6 left 17:06 cognominal-p6 joined 17:07 p6bannerbot sets mode: +v cognominal-p6 17:28 robertle joined 17:29 p6bannerbot sets mode: +v robertle
[Tux] Rakudo version 2018.09-510-g97996e5e9 - MoarVM version 2018.09-139-g8b4d58c7a
csv-ip5xs0.902 - 0.915
csv-ip5xs-207.731 - 7.731
csv-parser22.117 - 23.090
csv-test-xs-200.432 - 0.454
test8.897 - 9.355
test-t1.733 - 1.811
test-t --race0.833 - 0.836
test-t-2030.355 - 33.189
test-t-20 --race11.829 - 12.357
17:34
17:41 cognominal-p6 left 17:43 Ven` left 17:44 Kaiepi left 17:45 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 17:48 Ven` joined 17:49 p6bannerbot sets mode: +v Ven` 17:53 Ven` left 17:58 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 18:15 cognominal-p6 left, cognominal-p6 joined 18:16 p6bannerbot sets mode: +v cognominal-p6 19:18 AlexDaniel left
19:41 ggoebel left 19:57 ggoebel joined 19:58 p6bannerbot sets mode: +v ggoebel 20:03 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel
lizmat jnthn: re 'my Str(Int) @a', perhaps we could allow that by adding another role that takes 2 types: the constraint and the coercion type 20:04
the coercion type would be in the descriptor, and the whole type would be in the candidates ? 20:05
m: role a[::T] { method a(T $a) { dd $a } }; dd a[Str(Int)].new.a(42) # perhaps more work is needed there :-) 20:07
camelia Type check failed in binding to parameter '$a'; expected Str(Int) but got Int (42)
in method a at <tmp> line 1
in block <unit> at <tmp> line 1
20:49 Kaiepi left, Kaiepi joined 20:50 p6bannerbot sets mode: +v Kaiepi
jnthn lizmat: It's more that we'd want to allow Array[Str(Int)] to exist in the first place 20:55
lizmat: Which is a much more accessible task since the assignment refactors 20:56
21:00 stmuk_ joined 21:01 p6bannerbot sets mode: +v stmuk_ 21:02 stmuk left 21:07 cognominal-p6 left 21:27 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 21:31 robertle left 21:42 cognominal-p6 left 21:43 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 21:46 lizmat left 21:52 pmurias left 22:08 cognominal-p6 left 22:35 donaldh left 23:00 lizmat joined, p6bannerbot sets mode: +v lizmat 23:04 lizmat left 23:35 donaldh joined, p6bannerbot sets mode: +v donaldh 23:40 cognominal-p6 joined 23:41 p6bannerbot sets mode: +v cognominal-p6 23:51 cognominal-p6 left, cognominal-p6 joined 23:52 p6bannerbot sets mode: +v cognominal-p6