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.
timotimo I had hoped to look into problems with the heap snapshot profiler, but I just basically killed my pc 00:55
MasterDuke timotimo: do you know what code was being used to generate the problem profile? 01:00
timotimo no 01:02
AlexDaniel greppable6: throws-like\s+['"q「] 03:22
greppable6 AlexDaniel, 4 lines, 3 modules: gist.github.com/b4117c92ca26fd96b2...6a6cea2dca
Zoffix Perl 6 Advent Calendar 2018 Call for Authors: perl6.party/post/Perl-6-Advent-Cal...or-Authors 11:21
lizmat m: class Point { has $.x; has $.y; method new($x,$y) { self.bless(:$x,:$y) } }; say Point.new(42,66).perl 11:26
camelia Point.new(x => 42, y => 66)
lizmat that seems LTA to me...
Zoffix heh :) 11:27
lizmat R#2448 11:30
synopsebot R#2448 [open]: github.com/rakudo/rakudo/issues/2448 Custom .new method is not reflected in standard .perl
lizmat m: class Point { has $.x; has $.y; method new($x,$y) { self.bless(:$x,:$y) } }; say Point.new(42,66)
camelia Point.new(x => 42, y => 66)
lizmat I guess .gist just falls back to .perl
ah, yes it does 11:31
Geth rakudo: lizmat self-assigned Nested Coercers? github.com/rakudo/rakudo/issues/2427
lizmat self-unassigned Nested Coercers? github.com/rakudo/rakudo/issues/2427

  lizmat self-unassigned CompUnit...load($key, :since($instant)) not working github.com/rakudo/rakudo/issues/2428
  lizmat self-assigned Custom .new method is not reflected in standard .perl github.com/rakudo/rakudo/issues/2448
adc9683773 | (Elizabeth Mattijsen)++ | src/core/Mu.pm6 Don't return standard .perl for classes with custom .new
  - also make code more idiomatic Perl 6
  - return "Class.new(...)" for now with custom new
  - step 1 in fixing R#2448
11:36
lizmat oops
lizmat ./me should learn how to click
lizmat Files=1255, Tests=76391, 337 wallclock secs (15.83 usr 5.25 sys + 2370.09 cusr 228.58 csys = 2619.75 CPU) 12:03
synopsebot R#2448 [open]: github.com/rakudo/rakudo/issues/2448 Custom .new method is not reflected in standard .perl
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Don't return standard .perl for classes with custom .new 13:16
travis-ci.org/rakudo/rakudo/builds/448817396 github.com/rakudo/rakudo/compare/0...c9683773ff
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 13:17
geekosaur some tests were aparently relying on the stock .perl on Failure 13:21
t/02-rakudo/dd.t (Wstat: 256 Tests: 2 Failed: 1) 13:22
SqrtNegInf Like Xliff, I'm seeing a segfault (in a previously reliable program). Hard to golf, but does go away with MVM_SPESH_OSR_DISABLE=1 13:54
Here's a gist with possibly useful info: gist.github.com/SqrtNegInf/2b0ccf9...5c74ece006 13:55
Zoffix c: HEAD,HEAD~1 class Foo { has $.a = 1; has $.b = 2; has $.c = 3; has $.d = 4; method new { self.bless } }; dd Foo.new; say Foo.new 14:37
committable6 Zoffix, ¦HEAD(adc9683): «Foo.new(...)␤Foo.new(...)␤» ¦HEAD~1: «Foo.new(a => 1, b => 2, c => 3, d => 4)␤Foo.new(a => 1, b => 2, c => 3, d => 4)␤»
Zoffix That gonna piss people right off if they're forced to implement custom .gist/.perl just to dump the guts of an object with custom .new 14:38
dogbert17 ZOFFLOP: t/spec/MISC/bug-coverage-stress-6.d.t - Unhandled exception in code scheduled on thread 4 - continuationinvoke expects an MVMContinuation 14:59
timotimo i'm not happy about that either ... i'd hope .perl is a "best effort" at giving you something you can eval to get the object back
timotimo how about we dump it like do { $_ = Foo.new; .a = 1; .b = 2; .c = 3; .d = 4; .self } 15:01
Zoffix timotimo: that's just a more convoluted way to dump a .new, which still doesn't work because in my example attributes aren't `is rw` 15:06
Zoffix Maybe dump all attributes like before, but stick a stub before them if there is a custom .new 15:06
So it'd be `Foo.new(…, a => 1, b => 2, c => 3, d => 4)
`
Zoffix m: 'Foo.new(…, a => 1, b => 2, c => 3, d => 4)'.EVAL 15:07
camelia 5===SORRY!5=== Error while compiling /home/camelia/EVAL_0
Undeclared name:
Foo used at line 1
timotimo damn, you're right
Zoffix e: 'class Foo {}; Foo.new(…, a => 1, b => 2, c => 3, d => 4)'.EVAL
evalable6 (exit code 1) Stub code executed
in block <unit> at EVAL_0 line 1
in block <unit> at /tmp/GhtJ7igJNq line 1
timotimo about the "rw" attributes
Zoffix So it still dies on .EVAL, because we've no idea how the custom `.new` works, but it still shows all the info for debugging aid
and keeps `infix:<eqv>` working
timotimo that sounds like a good compromise at first glance 15:08
can we somehow get a better error message than just "stub code executed"? … would take an argument, so a word or two there could be nice 15:09
Zoffix e: 'class Foo {}; Foo.new((… "CAN HAS CUSTOM .PERL TO GO WITH CUSTOM .new?"), a => 1, b => 2, c => 3, d => 4)'.EVAL 15:11
evalable6 (exit code 1) CAN HAS CUSTOM .PERL TO GO WITH CUSTOM .new?
in block <unit> at EVAL_0 line 1
in block <unit> at /tmp/bHVJvJrlhE line 1
Zoffix ehehe
|Tux| Rakudo version 2018.10-30-gadc968377 - MoarVM version 2018.10-26-g318e1ec55
csv-ip5xs0.894 - 0.959
csv-ip5xs-207.124 - 7.412
csv-parser20.582 - 21.061
csv-test-xs-200.424 - 0.425
test7.970 - 8.403
test-t1.671 - 1.699
test-t --race0.788 - 0.850
test-t-2029.168 - 29.870
test-t-20 --race9.870 - 10.129
15:22
back to normal 15:23
dogbert17 1.671, now we're talking :-) 15:54
jnthn I think the default `.perl` for objects should assume the default construction interface, and if you make a custom `new` and you care about round-tripping then it's on you to write a custom `method perl` to go with it 16:03
Alternatively, dump with `.bless` instead of `.new` :)
Geth roast: 4ae2c6a940 | (Zoffix Znet)++ | 2 files
SAP role multi dispatch test

The test relies on side-effects from `where` clauses which is an unsupported feature that works in Rakudo by accident.
I don't immediatelly see a way to rewrite that test to not use side effects from `where`, so shoving it to SAP.
Closes github.com/perl6/6.d-prep/issues/1
16:28
Zoffix .tell AlexDaniel was the async sock native descriptor reverted? There's S#490 . Wondering if it needs to be closed now. 16:30
yoleaux Zoffix: I'll pass your message to AlexDaniel.
synopsebot S#490 [open]: github.com/perl6/roast/issues/490 Need spec of .native-descriptor for async sockets
AlexDaniel .
yoleaux 16:30Z <Zoffix> AlexDaniel: was the async sock native descriptor reverted? There's S#490 . Wondering if it needs to be closed now.
AlexDaniel it was reverted
rakudo ticket: github.com/rakudo/rakudo/issues/2437
Zoffix thanks. 16:32
Geth 6.d-prep: 59c255e672 | (Zoffix Znet)++ | 2 files
All planed features have been implemented

The remaining items are a better impl of sunk `start`, which
  jnthn++ promised to do this week as well as de-dynamification
of `$_` variable, which isn't making it to 6.d on language-level, but we cleaned up 6.d spec to allow for its preview implementation in Rakudo under 6.d language.
16:42
6.d-prep: 273a2465bc | (Zoffix Znet)++ | TODO/README.md
missing plans in subtests has been fixed
[Coke] Zoffix++ again for all the 6.d work 16:51
yoleaux 30 Oct 2018 01:24Z <tbrowder___> [Coke]: are the dates for TPC::NA 2019 decided yet?
30 Oct 2018 10:11Z <tbrowder___> [Coke]: do you know dates for TPC::NA 2019?
[Coke] Yes. Let me find the blog post.
.tell tbrowder___ perlconference.us/tpc-2019-pit/ 16:52
yoleaux [Coke]: I'll pass your message to tbrowder___.
[Coke] this was announced during the last yapc before it ended.
jnthn Yup, I'll work on those two tomorrow :) 16:54
I don't really know what lexical $_ would look like in the spec. Maybe a test that CALLER::<$_> doesn't find anything.
Zoffix .tell lizmat a friendly reminder about changelogging set ops for 6.d release, if you have the time: github.com/perl6/6.d-prep/blob/mas...-behaviors 16:57
yoleaux Zoffix: I'll pass your message to lizmat.
japhb [Coke]: Oooh, a TPC location I might be able to attend. That would be a nice change. 17:01
[Coke] I am currently planning on driving. 17:13
AlexDaniel buggable: 6.d 17:29
buggable AlexDaniel, Diwali is in 6 days, which is 5 days, 6 hours, 30 minutes, and 23 seconds. Need to changelog 999 commits per day (6997/week). Need release brochure. Still have 2 TODO features costing 8 hours. Still have 0.3 policies to write.
AlexDaniel buggable: d
buggable AlexDaniel, Diwali is in 6 days, which is 5 days, 6 hours, 30 minutes, and 19 seconds. Need to changelog 999 commits per day (6997/week). Need release brochure. Still have 2 TODO features costing 8 hours. Still have 0.3 policies to write.
AlexDaniel huggable:: d
huggable AlexDaniel, nothing found
AlexDaniel huggable: d
huggable AlexDaniel, gist.github.com/AlexDaniel/3296f8c...e-bisected
AlexDaniel Zoffix: I filed this ticket: github.com/rakudo/rakudo/issues/2451 17:35
all these are LHF in my opinion, so others can help easily
Geth star/2018.10: 806c78abcd | (Steve Mynott)++ | docs/perl6intro.pdf
new version of perl6intro.pdf
17:47
AlexDaniel Zoffix: github.com/perl6/whateverable/issues/345 17:56
Geth star/2018.10: 9966bcb60b | (Steve Mynott)++ | docs/announce/2018.10.md
mention JS backend and 6pad
17:57
AlexDaniel stmuk_++ 17:58
stmuk_: consider linking to 6pad: perl6.github.io/6pad/
stmuk_ Good Idea! 17:59
Geth star/2018.10: 2b673d6a6a | (Steve Mynott)++ | docs/announce/2018.10.md
AlexDaniel++ 6pad link
18:01
stmuk_ is "stage parse" slower now than a few releases back? is it my imagination? 18:10
timotimo maybe we should add a tiny module to Rakudo::Star that just launches a tiny web server that hosts a 6pad - or does it also work off of file:// ? 18:11
stmuk_ that's not a bad idea 18:13
Geth rakudo: 20d50e071d | (Elizabeth Mattijsen)++ | src/core/Mu.pm6
Adjust default .perl for custom .new

  - instead of trying to be smart, be really stupid
  - if a class has a .new, it won't most likely not have a custom .bless
  - so just change the name of the method being called to "bless"
  - fixes R#2448 and R@2449
19:34
synopsebot R#2448 [open]: github.com/rakudo/rakudo/issues/2448 Custom .new method is not reflected in standard .perl
lizmat hmmm double negatives 19:35
yoleaux 16:57Z <Zoffix> lizmat: a friendly reminder about changelogging set ops for 6.d release, if you have the time: github.com/perl6/6.d-prep/blob/mas...-behaviors
lizmat Zoffix: noted
Geth roast: c13551e549 | (Elizabeth Mattijsen)++ | S06-advanced/callframe.t
Fix overeager test for R#2448 / R#2449
19:36
synopsebot R#2448 [open]: github.com/rakudo/rakudo/issues/2448 Custom .new method is not reflected in standard .perl
R#2449 [open]: github.com/rakudo/rakudo/issues/2449 [⚠ blocker ⚠] `eqv` with classes that have custom `.new` and no `.perl` is now always True
Geth roast/6.c-errata: 5218a83d3b | (Elizabeth Mattijsen)++ | S06-advanced/callframe.t
Fix overeager test for R#2448 / R#2449
19:38
synopsebot R#2448 [open]: github.com/rakudo/rakudo/issues/2448 Custom .new method is not reflected in standard .perl
R#2449 [open]: github.com/rakudo/rakudo/issues/2449 [⚠ blocker ⚠] `eqv` with classes that have custom `.new` and no `.perl` is now always True
lizmat Zoffix: re github.com/perl6/6.d-prep/blob/mas...-behaviors , it looks to me we should drop the word "now" from all descriptions 19:42
tbrowder___ [Coke]: nowhere can i find exact dates, just “june”—
Zoffix lizmat: +1 19:43
Geth 6.d-prep: aaef945536 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
Fix spello
19:44
lizmat Zoffix: ok, will do
Zoffix is slightly worried about that .perl -> .bless thing causing tough-to-notice bugs
lizmat Zoffix: it's .new -> .bless 19:45
the point of .perl is that it should roundtrip
there has never been any guarantee about readability
now, maybe we would need to make a more custom default .gist 19:46
Zoffix lizmat: yeah, but by using .bless you're making an assumption `.new` doesn't do too much of useful stuff. So it'll work for cases where you're just using `.new` to take positionals instead of nameds, but will be a tough-to-spot bug if you do any sort of set up. For example Failure.new does some sort of setup
e: dd Failure.new: 'moews'
evalable6 Failure.bless(exception => X::AdHoc.new(payload => "moews"), backtrace => Backtrace.bless)
Zoffix m: say Failure.bless(exception => X::AdHoc.new(payload => "moews"), backtrace => Backtrace.bless)
camelia No exception handler located for catch
at SETTING::src/core/Exception.pm6:412 (/home/camelia/rakudo-m-inst-2/share/perl6/runtime/CORE.setting.moarvm:print_exception)
from SETTING::src/core/Exception.pm6:469 (/home/camelia/rakudo-m-inst-2/sha…
Zoffix lizmat: ^ and now there is this weird error and would people even realize that they're getting .bless from .perl? 19:47
The point of .perl is that it should roundtrip, but it still doesn't roundtrip here. 19:48
lizmat well, that example wouldn't even work with .perl, on account of Backtrace.perl
Zoffix The stub approach was the bestest one IMO. It just died and told you you had to provide a .perl 19:49
Well, stub + still listing attribute values, so you could still use it as debuging aid
lizmat so: just add '...' if there's something weird going on ?
still, using it as a debugging aid, why would it matter that it was .bless instead of .new ? 19:50
Zoffix Yeah, like `Foo.new(…, attr1 => 42, attr2 => 100)` and timotimo pointed out that it could use a better error message than the default, so it'd prolly look like`Foo.new((… "custom method new requires implementation of custom .perl"), attr1 => 42, attr2 => 100)` or something
lizmat: it doesn't matter. The .bless is bad because it solves half the problem, while requiring user to notice they're getting a different .perl when they define a custom .new method 19:51
vs. just dying 19:52
lizmat ok, lemme look at that again after I'm done with the 6.d Changelog stuff
Zoffix e: class NuclearPowerPlant { has $!uranium; method new ($q) { self.bless: uranium => ($q > 1000 ?? 1000 !! $q) }; method power { say 42/$!uranium } }; NuclearPowerPlant.new(10000000000).perl.EVAL.power 19:54
evalable6 (exit code 1) Use of uninitialized value of type Any in numeric context
in method power …
Zoffix, Full output: gist.github.com/bd39208fb15106ccbc...9fb9e338b5
Zoffix that vs. dying with "need custom .perl, bruh"
Zoffix & 19:57
Geth 6.d-prep: b010f82a12 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
Remove "now" where it was felt to be superfluous
20:05
6.d-prep: 7dff0fcf8b | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
Put all QuantHash stuff together
20:19
lizmat hmmm... I changed something in a src/core.d/... file 20:45
and now even the "normal" setting is getting recompiled. should it ? feels to me that it shouldn't have to ?
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Adjust default .perl for custom .new 20:46
travis-ci.org/rakudo/rakudo/builds/449026572 github.com/rakudo/rakudo/compare/a...d50e071d40
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 20:47
lizmat we still don't have a way to remove a sub from the 6.c setting in 6.d, right ? 21:08
Geth rakudo: 4af55fb611 | (Elizabeth Mattijsen)++ | t/02-rakudo/dd.t
Make Travis happy for now

Working on making this work more generally
21:12
Zoffix lizmat: it's even worse. You can't override, say, a single existing multi, because then it'd conflict with the one in 6.c. Also, overriding stuff in 6.d doesn't actually override it inside 6.c code. I think it basically works out to something like: { multi six-c-stuff { ... }; { multi six-d-stuff { ... }; { user's-code } } }, so it's layered and you can only add-on. Here's how I deprecated the 21:49
`undefined`: github.com/rakudo/rakudo/blob/mast...rators.pm6 but I couldn't override `infix:</>` for Nums to do IEEE stuff right, because I'd have to override ALL the `infix:</>` and anything that uses `/` inside 6.c core would not get the 6.d version still 21:50
lizmat perhaps we need an "unproto" :-) 21:51
Zoffix :) 21:54
lizmat m: class A { has $.a; method TWEAK() { $!a = !$!a } }; dd A.new(:a) # not roundtripping 22:06
camelia A.new(a => Bool::False)
Geth rakudo: 8561d0ae56 | (Elizabeth Mattijsen)++ | src/core/Deprecations.pm6
Make sure the :up of DEPRECATED gets handled correctly

There seems to be a scoping issue with $_ in the case of:
   foo = $_ with bar for ^10;
22:10
rakudo: 951303f9aa | (Elizabeth Mattijsen)++ | src/core.d/operators.pm6
"Remove" (<+), ≼, (>+), ≽ from 6.d

Well, not really, actually. But it won't work anymore and it will tell you what to use instead if you *do* try to use it.
roast: a5a3969588 | (Elizabeth Mattijsen)++ | S03-operators/set_precedes.t
set_precedes tests only work in 6.c

And 'use v6' implies the most current, but that won't work anymore since
  github.com/rakudo/rakudo/commit/951303f9aa
22:13
travis-ci Rakudo build passed. Elizabeth Mattijsen 'Make Travis happy for now 22:14
travis-ci.org/rakudo/rakudo/builds/449068866 github.com/rakudo/rakudo/compare/2...f55fb61150
Geth rakudo: c04d5b7780 | (Elizabeth Mattijsen)++ | src/core/Mu.pm6
Return to the status quo wrt to Mu.perl

This turns out to be a hornet's nest. Sorry to have stirred it.
This reverts adc96837 and 20d50e07
22:16
Zoffix Oh yeah. Totally forgot about TWEAK and other of those methods. 22:25
Geth rakudo: 4c05a0b13e | (Elizabeth Mattijsen)++ | t/02-rakudo/dd.t
Revert "Make Travis happy for now"

This reverts commit 4af55fb61150e23c7ce15718cb5d103e8ccab6cd.
No longer needed.
22:29
lizmat Zoffix: will continue with ChangeLog tomorrow 22:41
sleep&
travis-ci Rakudo build passed. Elizabeth Mattijsen '"Remove" (<+), ≼, (>+), ≽ from 6.d 23:17
travis-ci.org/rakudo/rakudo/builds/449092719 github.com/rakudo/rakudo/compare/4...1303f9aaec