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:34 stmuk_ left 00:37 lizmat left 00:43 stmuk_ joined 00:44 p6bannerbot sets mode: +v stmuk_ 00:49 lizmat joined, p6bannerbot sets mode: +v lizmat 01:25 cognominal-p6 left, cognominal-p6 joined 01:26 p6bannerbot sets mode: +v cognominal-p6 01:49 cognominal-p6 left 02:18 ufobat_ joined 02:19 p6bannerbot sets mode: +v ufobat_ 02:22 ufobat___ left
AlexDaniel hah, gnatur 03:10
03:57 Ven` joined, p6bannerbot sets mode: +v Ven` 04:01 Ven` left 04:08 AlexDaniel left 04:09 AlexDaniel joined 04:10 p6bannerbot sets mode: +v AlexDaniel 04:13 fake_space_whale joined 04:14 p6bannerbot sets mode: +v fake_space_whale
Geth rakudo: MasterDuke17++ created pull request #2388:
Add native candidate for infix:<%%>
04:19
04:45 cognominal-p6 joined 04:46 p6bannerbot sets mode: +v cognominal-p6 04:58 cognominal-p6 left, cognominal-p6 joined 05:00 p6bannerbot sets mode: +v cognominal-p6 05:09 cognominal-p6 left 05:19 dct left 06:27 fake_space_whale left
releasable6 Next release in ≈2 days and ≈11 hours. 2 blockers. Please log your changes in the ChangeLog: github.com/rakudo/rakudo/wiki/ChangeLog-Draft 07:00
07:03 robertle joined 07:04 p6bannerbot sets mode: +v robertle 08:05 cognominal-p6 joined 08:06 p6bannerbot sets mode: +v cognominal-p6, cognominal-p6 left 08:07 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6
Geth rakudo: 3d161a5627 | (Daniel Green)++ | src/core/Int.pm6
Add native candidate for infix:<%%>
08:18
rakudo: 5f91e71b51 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | src/core/Int.pm6
Merge pull request #2388 from MasterDuke17/master

Add native candidate for infix:<%%>
08:26 Ven` joined 08:27 p6bannerbot sets mode: +v Ven` 08:29 cognominal-p6 left 08:33 leont joined 08:34 p6bannerbot sets mode: +v leont 08:50 cognominal-p6 joined 08:51 cognominal-p6 left, cognominal-p6 joined 08:52 p6bannerbot sets mode: +v cognominal-p6
lizmat .tell AlexDaniel I think I've logged all of my changes 09:17
yoleaux lizmat: I'll pass your message to AlexDaniel.
09:48 |Tux| left 09:49 |Tux| joined 09:50 p6bannerbot sets mode: +v |Tux|
Geth rakudo: e567628eac | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-notes.md
add more NYI items
11:11
rakudo: 8c486d399a | (Tom Browder)++ (committed using GitHub Web editor) | 2 files
rename to better describe contents
11:12
rakudo: eb4ebab0a5 | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
change title
11:13
11:15 Ven` left
lizmat commute to Niederrhein.PM& 11:20
11:20 lizmat left
|Tux| Rakudo version 2018.09-453-g5f91e71b5 - MoarVM version 2018.09-131-g1d6562bfd
csv-ip5xs0.931 - 0.937
csv-ip5xs-207.136 - 7.671
csv-parser20.348 - 20.774
csv-test-xs-200.428 - 0.429
test7.636 - 8.229
test-t1.696 - 1.707
test-t --race0.822 - 0.822
test-t-2028.720 - 29.490
test-t-20 --race10.053 - 10.785
11:36
11:40 Ven` joined 11:41 p6bannerbot sets mode: +v Ven`
Geth rakudo: 49bb6cf410 | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
add a new NYI item
11:53
12:55 leont left 13:10 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Tom Browder 'add a new NYI item' 13:10
travis-ci.org/rakudo/rakudo/builds/443145695 github.com/rakudo/rakudo/compare/e...bb6cf41027
13:10 travis-ci left 13:13 brrt joined 13:14 p6bannerbot sets mode: +v brrt 13:16 pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias jnthn: do we want to actually test our 'a 123 literal is multi dispatched by the optimizer to int' semantics in 6.d? I agree they are useful for having + 1 work fast, not sure if we want them set down in a general case 13:19
jnthn pmurias: Well, "by the optimizer" is an implementation detail, really. From a language perspective, either an implementation does that or it doesn't. 13:21
It doesn't matter (from a spec point of view) how a language chooses to pass the spec test.
*how an implementation of the language 13:22
As to the semantics, I think they're a reasonable thing to include in the language spec. Do you have any objections to the behavior?
pmurias I agree it's usefull to have to make +1 etc. work fast but the behavior itself feels like just speccing a hack 13:27
and we have just one test so we don't really spec the full behavior
13:28 AlexDaniel left
pmurias github.com/perl6/roast/blob/master...sed.t#L217 13:28
jnthn In what way is it a hack?
13:28 AlexDaniel joined
pmurias multi dispatch is done at compile time using different rules then at runtime 13:28
13:29 p6bannerbot sets mode: +v AlexDaniel
jnthn It's a bit rich that you're now complaining about a place that we *do* something based on a static type analysis, after all the grumbling about us not being really gradually typed :P 13:29
Ven` not gradually typed :( 13:30
(sorry, it was hard to resist) 13:31
jnthn :P
I'm fine with better suggestions on how we handle the Int/int dual nature of literals, anyway.
I think it's LTA to make the programmer write out something like `$native-a + (my $int $ = 1)` though 13:32
pmurias jnthn: it's not static type analysis it's syntactic analysis ;)
jnthn: I agree with that too
Ven` clearly the swift way is the one true way: have them typed only with a typeclass constraint, so that 3+4-5+6 is too complex for the compiler to resolve
well, it's still a bit surprising that disabling optimizations disables static typechecking I suppose 13:33
jnthn pmurias: Well, the literal bit is, but the decision is based on the types of the other arguments, and I thought it even accounts for the return type of other decided things, so that `($a + $b) * 2` could also do the right thing given native $a and $b. 13:34
Ven`: Yeah, that's my point above: we need to distinguish the language semantics from the implementation detail that it's currently done in the optimizer, and is possible to disable.
A solution to that would be to call that pass something other than "optimize" and have certain tasks that it unconditionally performs 13:36
We'll want that *anyway*
Ven` well, the language doesn't mandate BEGIN-time type checking, right?
jnthn Ven`: The thinking is that new language versions can mandate more on that front
Ven` that does sound very interesting :)
jnthn The optimizer and type checking would tend to want the very same information though 13:37
And it's not like our compiler is so lightning fast that we can just say "oh, pull them into two stages, it'll be fine" :)
pmurias and if we want to have that hack-semantics specced it would be great to have that properly specced rather than one random test for a multi that chooses between int and Str 13:38
jnthn Yes, agree 13:39
#2345 is really odd 13:40
github.com/rakudo/rakudo/issues/2345
Thought there was a bot to link those :)
Reverting ab3d0566757f9fb8 fixes it, seemingly 13:41
pmurias jnthn: being done by the optimizer is not really an optimalization details to the agree that the semantics change depending on the knowledge the optimizer can infer 13:43
Ven` is it deterministic? 13:46
jnthn Ven`: The bug I'm hutning? Yes
*hunting 13:47
Ven`
.oO( no I really meant to ask if type-checking was deterministic... otherwise that'd be a fun one :P )
jnthn heh, "probabalistic type checking" :) 13:48
oops, wrong sha-1 13:49
The sha-1 of my local revert commit helps nobody :)
OK, so...maybe it's the parametric interning mechanism 13:50
13:50 pmurias left 13:52 pmurias joined, p6bannerbot sets mode: +v pmurias
jnthn Ohhh...I think I mighta found the bug 13:55
Ven` is it a off-by-1? 14:01
14:03 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix R#2345 14:03
synopsebot R#2345 [open]: github.com/rakudo/rakudo/issues/2345 [regression][⚠ blocker ⚠] Post-2018.09 module install failures
Zoffix You need to prefix with the repo name
jnthn Zoffix: thanks :)
Ven`: no
Zoffix R# or GH# is Rakudo, S# is roast, M# is MoarVM, D# is docs, N# is NQP
RT# is for RT tickets
jnthn OK, the thing I thought would fix it doesn't help at all :/ 14:04
14:07 pmurias left 14:08 Zoffix left
jnthn oh, it does help, I just forgot to invalidate my .precomp/ (since I had no change to Rakudo, it doesn't help) 14:12
OK, spectesting the fix, fingers crossed 14:15
14:16 pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias m: multi foo(int $a) { 'small' }; multi foo($a) { 'bigger' }; say(foo(8589934)); say(foo(8589934592)); 14:18
camelia small
bigger
pmurias ^^ only <32bit literals are dispatched differently
jnthn That's...interesting. 14:19
Should probably do it for 64-bit too 14:20
Test spectested fine. I'm currently testing a larger codebase I knew to be affected by it 14:27
dogbert2_ jnthn: FWIW, wrt to the other blocker, i.e. R#2355, I can't get that to fail on HEAD, nor robertle's bug M#962 14:29
synopsebot R#2355 [open]: github.com/rakudo/rakudo/issues/2355 [regression][⚠ blocker ⚠] Concurrency feature race/hyper sometimes failed with Supply
M#962 [open]: github.com/MoarVM/MoarVM/issues/962 SEGV and weirdness with concurrent I/O 14:30
jnthn dogbert2_: Hm, interesting. Hopefully others will discover they also can't :)
dogbert2_ I might have been 'lucky' though but robertle couldn't repro it either so perhaps some commit fixed it 14:33
jnthn Yup, fix seems alright 14:36
14:39 pmurias left
robertle so you guys now know what fixed #962? 14:43
ah, no you don't :) 14:44
jnthn No, but I'd really like to... 14:46
robertle me too! I wanted to bisect it a bit, but didn't have time yet
14:54 pmurias joined, p6bannerbot sets mode: +v pmurias, pmurias left
Geth ¦ rakudo: zoffixznet self-assigned Post-2018.09 module install failures github.com/rakudo/rakudo/issues/2345 14:58
14:59 pmurias joined, p6bannerbot sets mode: +v pmurias 15:01 pmurias left 15:06 pmurias joined, p6bannerbot sets mode: +v pmurias
Geth nqp: 1d06edc218 | (Zoffix Znet)++ | tools/build/MOAR_REVISION
[MoarVM Bump] 304f568 Correct deserialization […]

MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...2-g304f568
15:12
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...2-g304f568
rakudo: 7d7aaf0c1d | (Zoffix Znet)++ | tools/build/NQP_REVISION
[NQP Bump] 1d06edc [MoarVM Bump] 304f568 Corre […]

NQP bump brought: github.com/perl6/nqp/compare/2018....2-g1d06edc
MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...2-g304f568
15:12 fake_space_whale joined
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....2-g1d06edc
15:13 p6bannerbot sets mode: +v fake_space_whale
Geth roast: 8d759ab216 | (Zoffix Znet)++ | MISC/bug-coverage.t
Cover :D crash in modules

Closes github.com/rakudo/rakudo/issues/2345 R#2345
15:13
synopsebot R#2345 [open]: github.com/rakudo/rakudo/issues/2345 [regression][testneeded][⚠ blocker ⚠] Post-2018.09 module install failures
Geth roast: 90ee31deb7 | (Zoffix Znet)++ | MISC/bug-coverage.t
Cover :D parametarization bug

Closes github.com/rakudo/rakudo/issues/1207 R#1207
15:25
synopsebot R#1207 [open]: github.com/rakudo/rakudo/issues/1207 Serialization of Hashes parametarized with DefiniteHOW types is busted
15:27 b2gills left
SqrtNegInf Here's different race/hyper issue, which I encountered yesterday (this in conjunction with atomic operations) 15:27
To speed up a program, I added .race, then to fix a race condition added ⚛++, then started getting sporadic crashes 15:28
15:28 Zoffix joined, p6bannerbot sets mode: +v Zoffix
SqrtNegInf Golfed down, with a 'low' iteration count, this never fails 15:29
Zoffix I thought that fix would've fixed RT#132525 but nope, that bug's still there
synopsebot RT#132525 [open]: rt.perl.org/Ticket/Display.html?id=132525 [REGRESSION][PRECOMP] type constraints to Array[Pair] don't work when precompiled
SqrtNegInf m: my @d; my atomicint $i = 0; (1..60).race.map: -> $a { for 1..100 -> $b { @d[$i⚛++] = 1; } }
camelia ( no output )
Zoffix Still crasshes with "Type check failed for return value; expected Array[Pair] but got Array[Pair].new()"
SqrtNegInf But as the number of interations in the outer loop increases, the chance of a malloc error (double free) goes towards 100%
jnthn SqrtNegInf: @a is not threadsafe; it's an auto-resizing array 15:30
SqrtNegInf: Declare it fixed-size instead: `my @a[60];`
Zoffix m: my @d; my atomicint $i = 0; (1..300).race.map: -> $a { for 1..300 -> $b { @d[$i⚛++] = 1; } }
camelia (signal ABRT)*** Error in `/home/camelia/rakudo-m-inst-1/bin/moar': double free or corruption (!prev): 0x00007f179047d3b0 ***
======= Backtrace: =========
/lib64/libc.so.6(+0x740ef)[0x7f17a2a940ef]
/lib64/libc.so.6(+0x79646)[0x7f17a2a99646]
/l…
Zoffix m: my @d[300*300]; my atomicint $i = 0; (1..300).race.map: -> $a { for 1..300 -> $b { @d[$i⚛++] = 1; } }
camelia ( no output )
timotimo or pre-size it by assigning to the last slot before doing the thing
Zoffix m: dd sqrt -Inf 15:31
camelia NaN
Zoffix m: dd sqrt -Inf+0i
camelia <NaN+Inf\i>
Zoffix intersting... 15:32
SqrtNegInf m: (-∞+0i)**½
camelia WARNINGS for <tmp>:
Useless use of "**" in expression "(-∞+0i)**½" in sink context (line 1)
SqrtNegInf m: say (-∞+0i)**½
camelia Inf+Inf\i
Zoffix :/
15:35 brrt left
Zoffix Kinda weird. IEEE doesn't say anything for pow(-Inf), except that pow(-Inf, 0) is 1 15:38
"pow (x, y) signals the invalid operation exception for finite x < 0 and finite non-integer y.
that's it for `x`... doesn't include infinity :/
15:41 b2gills joined, p6bannerbot sets mode: +v b2gills 15:44 leont joined
SqrtNegInf Tested original program and indeed that was the issue, thanks for the help 15:44
15:45 p6bannerbot sets mode: +v leont 15:47 b2gills left 15:49 ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy 15:52 b2gills joined
AlexDaniel jnthn: awesome, thanks! 15:52
15:52 p6bannerbot sets mode: +v b2gills
Geth roast: 9df4d61fd6 | (Zoffix Znet)++ (committed using GitHub Web editor) | README.md
Fix broken anchor
16:02
jnthn AlexDaniel: Welcome. I'm traveling the next several days, so glad I could figure it before I go :) 16:07
AlexDaniel yes
16:07 robertle left 16:08 [Tux] left
Zoffix jnthn: wanna make a ruling on R#2089 ? There are too many voices. Basically toggle has a `*@` candidate that takes a bunch of Callables and IMO its behaviour is really confusing. I wanna toss that candidate 16:10
synopsebot R#2089 [open]: github.com/rakudo/rakudo/issues/2089 [6.d review][LTA][RFC] .toggle is hard to understand
Zoffix And some say, don't spec it in 6.d at all (even the 1-arg candidate)
jnthn Zoffix: I'm thinking to toss the whole toggle thing for 6.d
Zoffix Sounds good.
jnthn It basically is the ff problem on steroids: there's state, it matters for understanding the behavior, and it's hidden. 16:12
AlexDaniel jnthn: did your fix resolve some issue in Cro::Core? I think it was failing yesterday 16:13
jnthn I wanted something more generic than take-while, skip-while, etc. but...toggle didn't work out anything like so usable as I hoped (through no problem with the implementation, just the API)
Geth rakudo: b50aa51e08 | (Zoffix Znet)++ | t/spectest.data
Exclude toggle.t file from running
16:14
jnthn AlexDaniel: Almost certainly; every Cro app I had failed wiht that error before the fix, so it probably came from core :)
AlexDaniel nice 16:15
Geth roast: 6879061884 | (Zoffix Znet)++ | S32-list/toggle.t
Temporarily remove .toggle tests

It's not making the 6.d cut, but will be re-entered in 6.e propspec after 6.d is released.
  github.com/rakudo/rakudo/issues/2089
  colabti.org/irclogger/irclogger_log...10-18#l276
16:17 [Tux] joined 16:18 p6bannerbot sets mode: +v [Tux] 16:25 Ven` left 16:28 pmurias left 16:33 pmurias joined, p6bannerbot sets mode: +v pmurias
pmurias m: multi sub foo(int $a) { my $foo = "int"; "int"; }; multi sub foo($a) { "Any"; }; say(foo(1)); # because it's done by inlining the behavior changes for biggers subs :( 16:34
camelia Any
pmurias jnthn: what I think could make sense is rather then speccing literals-sometimes-dispatched-as-ints semantics for use in user code is to just "allow" the compiler to turn arithmetic operations on an native variable and a know constants into native ops 16:36
Zoffix Wouldn't that introduce three different behaviours? HLL version, native version, and native ops version? 16:41
Also, what about user subs with Int/int candidates?
Geth rakudo/more-local-lowering: a3766fa56e | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Remove dead code
16:42
rakudo/more-local-lowering: 3373b77d87 | (Jonathan Worthington)++ | 2 files
Work towards more aggressive lexical lowering

This starts us down the path of turning "normal" variables into locals, which will not only be a little faster for lookup, but give dynamic optimizers a good bit more to work with too. It will also enable more block flattening.
This gets the transformation essentially working, however there's quite a bit of spectest fallout that needs to be investigated yet
  (most likely with just a few root causes).
pmurias Zoffix: what do you mean by three different behavior?
jnthn I'm not keen on treating operators specially; they're just multis that happen to have a name like infix:<foo>.
pmurias they are currently special because they are inlinable 16:43
jnthn Yes, which is a solvable problem too. I think best is not to spec anything around this for 6.d, though, so we can work through it and try to get to something more sensible. 16:44
Zoffix pmurias: I guess three different codepaths is more accurate to say: if I have `sub infix:<+> (Int, Int)` and `sub infix:<+> (int, int)` and compiler has special behaviour to convert it to nqp::add_i() if I'm using literals, that's three possible codepaths the code will follow: `42 + 42`, `my $x = 42; $x + $x`, and `my int $x; $x + $x` 16:45
pmurias: but if I define a user sub that doesn't know what op it corresponds to, then we're back to current behaviour minus the auto-nativification of literals, so that I have to write `$x ♥ my int $ = 42` instead of just `$x ♥ 42` 16:46
jnthn more-local-lowering plus the MoarVM pea branch work are where I hope to get some 2018.11 performance improvements from :)
dinner, packing, etc. o 16:49
o/
Zoffix \o
Geth roast: 04065ec30c | (Zoffix Znet)++ | docs/release-guide.md
Start release guide
16:50
roast: a35736b0a2 | (Zoffix Znet)++ | docs/release-guide.md
Fix URL to marketing repoo
16:51 Zoffix left
pmurias ZofBot: the three different codepaths is the current behavior 17:02
Zoffix: with the compiler using different multi dispatch under complicated circumstances 17:04
17:05 brrt joined
pmurias anyway there are a lot more important things than the auto nativisation of multis I just don't want it set it in stone 17:05
17:05 p6bannerbot sets mode: +v brrt 17:14 robertle joined 17:15 p6bannerbot sets mode: +v robertle 17:22 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix pmurias: is that currently in roast? Perhaps should be moved to rakudo's test suite instead? Or we could add another APPENDIX in roast, something like "experimental-features" or something 17:22
Just so we keep the things we're yet unsure of in roast instead of the test suite of an implementation 17:23
(and we can exclude that appendix from actual release)
Or maybe even all appendices
Yeah, all appendices. 17:27
pmurias Zoffix: github.com/perl6/roast/blob/master...sed.t#L217 - we have one test 17:41
Zoffix: the current behavior wasn't really designed we just decided to keep it when it turned out removing it makes some things slow 17:43
17:54 AlexDaniel left, AlexDaniel joined 17:55 p6bannerbot sets mode: +v AlexDaniel
pmurias Zoffix: moving it out of roast seems optimal 18:11
Geth roast: 9f8d62da23 | (Zoffix Znet)++ | 3 files
Add A04-experimental appedix and move native multi dispatch there

Per colabti.org/irclogger/irclogger_log...10-18#l353
pmurias Zoffix: I mean it can be in an appendix 18:12
just moved out of the main tests
Geth rakudo: 3c0b01bc5f | (Zoffix Znet)++ | t/spectest.data
Add APPENDICES/A04-experimental/01-misc.t to list of files
Zoffix Done.
Geth rakudo: FCO++ created pull request #2390:
Make it verify (again) the stubed methods from roles, not implemented…
18:18
18:28 Zoffix left 18:51 brrt left
Geth roast: FCO++ created pull request #487:
Adding tests to role stub implemented by attribute handles
19:25
19:43 ExtraCrispy left, ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy 19:46 ExtraCrispy left 20:03 ufobat_ left 20:31 pmurias left 20:40 leont left 22:34 fake_space_whale left 23:02 cognominal-p6 left
Geth 6.d-prep: c9877dc9f1 | (Zoffix Znet)++ (committed using GitHub Web editor) | ChangeLog.md
[CL] Deprecation of :count arg on Str.lines/&lines
23:04
roast: d116b6c1c1 | (Zoffix Znet)++ | 2 files
[v6.d REVIEW] Appendicize deprecated :count arg on `lines` routine
23:07
rakudo: 2393e5386e | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
add NYI item
23:13