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.
buggable 🎺🎺🎺 It's time for the monthly Accidental /win Lottery 😍😍😍 We have 1 ballots submitted by 1 users! DRUM ROLL PLEASE!... 00:00
And the winning number is 5! Congratulations to Ulti! You win a roll of duck tape!
00:10 patrickb left 00:18 cognominal-p6 left, cognominal-p6 joined 00:19 p6bannerbot sets mode: +v cognominal-p6 00:48 cognominal-p6 left 01:18 ggoebel joined 01:19 p6bannerbot sets mode: +v ggoebel 01:27 fake_space_whale joined 01:28 p6bannerbot sets mode: +v fake_space_whale 01:46 j3nnn1 left 02:05 leont left
Geth rakudo: donaldh++ created pull request #2454:
Unbust t/*/*.t rule in generated Makefile
02:23
02:50 MasterDuke left
Geth rakudo: donaldh++ created pull request #2457:
Unbust literal \ in tr///
03:09
roast: ccd5a0caf7 | (Donald Hunter)++ | S05-transliteration/trans-tr-lowercase-operator.t
Add test for literal \ in tr/// for R#2456
03:13
synopsebot R#2456 [open]: github.com/rakudo/rakudo/issues/2456 Literal \ broken in tr/// and TR///
03:44 cognominal-p6 joined 03:45 p6bannerbot sets mode: +v cognominal-p6 03:48 lizmat left 03:56 cognominal-p6 left, cognominal-p6 joined 03:57 p6bannerbot sets mode: +v cognominal-p6 04:09 cognominal-p6 left
Geth rakudo: 85107ec0c7 | (Donald Hunter)++ | src/Perl6/Grammar.nqp
Unbust literal \ in tr///

This fixes R#2456
04:55
rakudo: 549f53e4c9 | (Aleks-Daniel Jakimenko-Aleksejev)++ (committed using GitHub Web editor) | src/Perl6/Grammar.nqp
Merge pull request #2457 from donaldh/backslash-in-tr

Unbust literal \ in tr///
synopsebot R#2456 [open]: github.com/rakudo/rakudo/issues/2456 Literal \ broken in tr/// and TR///
rakudo: d2c7e32735 | (Donald Hunter)++ | Configure.pl
Unbust t/*/*.t rule in generated Makefile
04:56
rakudo: 0bdf51809b | (Aleks-Daniel Jakimenko-Aleksejev)++ (committed using GitHub Web editor) | Configure.pl
Merge pull request #2454 from donaldh/makefile

Unbust t/*/*.t rule in generated Makefile
05:00 fake_space_whale left 05:35 fake_space_whale joined, p6bannerbot sets mode: +v fake_space_whale 05:39 fake_space_whale left 07:05 cognominal-p6 joined 07:06 p6bannerbot sets mode: +v cognominal-p6 07:07 cognominal-p6 left, cognominal-p6 joined 07:08 p6bannerbot sets mode: +v cognominal-p6 07:30 cognominal-p6 left 07:53 dalek left 08:01 cognominal-p6 joined 08:02 p6bannerbot sets mode: +v cognominal-p6 08:08 cognominal-p6 left 08:09 cognominal-p6 joined 08:10 p6bannerbot sets mode: +v cognominal-p6 08:16 Geth left 08:30 ufobat joined, p6bannerbot sets mode: +v ufobat 08:39 cognominal-p6 left 08:42 lizmat joined, p6bannerbot sets mode: +v lizmat, [Tux] left 08:48 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 08:49 [Tux] joined, robertle joined, p6bannerbot sets mode: +v [Tux] 08:50 p6bannerbot sets mode: +v robertle 08:54 Zoffix left, cognominal-p6 left, cognominal-p6 joined 08:55 p6bannerbot sets mode: +v cognominal-p6 09:36 ufobat left
lizmat Files=1255, Tests=76385, 337 wallclock secs (16.00 usr 5.34 sys + 2370.49 cusr 227.21 csys = 2619.04 CPU) 09:40
hmmm. did we lose Geth ? 10:16
10:27 ufobat joined 10:28 p6bannerbot sets mode: +v ufobat 10:31 SourceBaby left, dalek joined, ChanServ sets mode: +v dalek, Geth joined, ChanServ sets mode: +v Geth, p6lert_ joined, synopsebot_ joined, ChanServ sets mode: +v synopsebot_, p6lert left, synopsebot left 10:32 SourceBaby joined, ChanServ sets mode: +v SourceBaby, p6bannerbot sets mode: +v dalek, synopsebot_ left, p6bannerbot sets mode: +v Geth, p6bannerbot sets mode: +v p6lert_, p6lert_ left, synopsebot joined, ChanServ sets mode: +v synopsebot, p6lert joined, p6bannerbot sets mode: +v SourceBaby 10:33 p6bannerbot sets mode: +v synopsebot, p6bannerbot sets mode: +v p6lert
Geth rakudo: cec1f511a8 | (Elizabeth Mattijsen)++ | src/Perl6/Optimizer.nqp
Set $*FOLDING when attempting to constant fold

This should help with cases like R#2459
10:34
rakudo: 7a1a186884 | (Elizabeth Mattijsen)++ | src/core/set_precedes.pm6
Die when constant folding

  - so that things work out wrt to v6.c / v6.d and deprecation
  - also make sure we get a single deprecation messay for Any (<+) Any
synopsebot R#2459 [open]: github.com/rakudo/rakudo/issues/2459 [6.d review] Constant-folder does not see 6.d stuff
rakudo: 81474bf9fa | (Elizabeth Mattijsen)++ | src/core.d/operators.pm6
Expand v6.d removal message

Mention that it is an option to just run the code in v6.c also.
roast: f4546115f0 | (Zoffix Znet)++ | 2 files
SAP coercers in return type constraints

There are problems with this feature[^1] and we might wish to disallow it instead.
  [1] github.com/rakudo/rakudo/issues/2452
10:35
roast: cce0733489 | (Zoffix Znet)++ | 2 files
SAP Array.flat

Until we resolve github.com/rakudo/rakudo/issues/2442
roast: 053576ac0f | (Zoffix Znet)++ | APPENDICES/A04-experimental/01-misc.t
Add issue links for further discussion on tests
roast: 3214ad4a59 | (Zoffix Znet)++ | 3 files
SAP $?BIT-using stuff

Until github.com/rakudo/rakudo/issues/2367 is fully resolved
roast: d3d02978d6 | (Zoffix Znet)++ | 3 files
SAP .grab/.pick/.kxxv with undecided semantics

Until github.com/rakudo/rakudo/issues/2109 is fixed
10:50 brrt joined 10:51 p6bannerbot sets mode: +v brrt
Geth rakudo: 5598f37df5 | (Elizabeth Mattijsen)++ | src/core.d/operators.pm6
Make alternative stand out a bit more.
11:00
[Tux] Rakudo version 2018.10-43-g81474bf9f - MoarVM version 2018.10-27-gcd4f98aff
csv-ip5xs0.956 - 1.008
csv-ip5xs-207.763 - 8.191
csv-parser22.120 - 23.332
csv-test-xs-200.437 - 0.445
test7.629 - 8.751
test-t1.858 - 1.901
test-t --race0.839 - 0.892
test-t-2032.511 - 32.596
test-t-20 --race10.681 - 11.826
11:03
Geth rakudo: 5f1a81e0fa | (Elizabeth Mattijsen)++ | 7 files
Change some blocks returning True/False to use return value

In the hopes that these will one day optimize even better, cause it can be observed from the code block that the return value is constant (rather than monitoring return values as they are being returned).
11:27
nqp/master: 8 commits pushed by (Paweł Murias)++ 11:58
11:58 pmurias joined, p6bannerbot sets mode: +v pmurias 12:37 leont joined 12:38 p6bannerbot sets mode: +v leont
Geth 6.d-prep: 65d4249569 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
Some elaboration on set operator changes

  @zoffixznet : is this what you were thinking about? did I miss something?
12:52
lizmat afk again
13:08 j3nnn1 joined, p6bannerbot sets mode: +v j3nnn1 13:10 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Change some blocks returning True/False to use return value 13:10
travis-ci.org/rakudo/rakudo/builds/449291800 github.com/rakudo/rakudo/compare/5...1a81e0fa91
13:10 travis-ci left
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 13:10
13:13 ufobat left, ggoebel left
Geth 6.d-prep: 6fefee0328 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
Finish sentence
14:05
tbrowder___ hi, #perl6-dev 14:58
I have been working on some pod NYI code and want to raise an issue that has been discussed before about making pod a slang (sublang?). I have proposal for moving toward that goal by doing it incrementally and minimizing major disruptions for a code base that is so active. Essentially, the first step is to move code around in existing Actions.nqp and Grammar.nqp so pod-only code is at the end of the Perl6::Grammar and 15:06
Perl6::Actions block. I'm going to try that now just to make sure there are no internal dependencies involved to cause trouble. The current state of my proposal is at this gist: <gist.github.com/tbrowder/e85575502...3a020e>
15:18 fake_space_whale joined 15:19 brrt left, p6bannerbot sets mode: +v fake_space_whale
lizmat tbrowder___: sounds like a plan to me 15:26
jnthn heh, I accidentally used my more aggressive lexical to local lowering branch for my dev work for the last couple of days, and I only just noticed when I Ctrl+C 15:27
'd `cro run` and got a weird error (and recognized it as one in a spectest) :)
So I guess it can't be all that broken :)
japhb That seems like a very good sign indeed. :-) 15:29
jnthn Yeah...then I'll be able to make it happy to lower `$_` when it's 6.d :) 15:33
Well, and find a solution for the P5blah modules :) 15:34
tbrowder___ lizmat: thnx, don't want to surprise anyone or step on any toes :) 15:36
Geth rakudo/more-local-lowering: 25df092a18 | (Jonathan Worthington)++ | src/Perl6/Actions.nqp
Make sure %REQUIRE_SYMBOLS doesn't get lowered
15:37
lizmat jnthn: twitter.com/jmaslak/status/1056749233355681792 15:38
jnthn yay, that fixed the `cro run` crash too 15:39
I don't understand *why* :)
lizmat: Yes, the fact some people use them is why I want to find a solution that lets us have our opt and keep those going :) 15:40
lizmat so not so blah after all :-) 15:41
jnthn Oh, that wasn't a comment on the modules, just a placeholder name :)
lizmat some people find judgment in "blah" 15:42
japhb "P5foo"
jnthn Some people find judgement in anything these days :P
lizmat that's also true
I guess I've been looking at Twitter too much in the past weeks
jnthn But yeah, I didn't mean it that way; P5foo would indeed have not carried that risk :) 15:43
So now down to 2 spectests, plus the throws-like thing
japhb I'm beginning to wonder if it isn't just the mental state of *actively* trying to be sensitive to people that is the greatest value in being careful with language, because changing that head space makes a lot of difference to other attitudes and decisions 15:44
jnthn japhb: It's also a case of actively learning new things that need sensitivity, as well as unlearning attitudes that rubbed of on us but aren't really justified. 15:49
*off
oh...interesting test 15:52
sub foo2 (*%p) {
is(%p<a>, 'b', $test);
my %p; #OK
}
I guess our redecl might be doing a bit too much there...
japhb jnthn: Yeah, true 15:58
16:06 cognominal-p6 left 16:07 cognominal-p6 joined 16:08 p6bannerbot sets mode: +v cognominal-p6 16:09 ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy
jnthn Got a fix for that spectest, but need another run to make sure it doesn't break anything else :) 16:10
uh...loads more fail, but I'm behind master 16:13
16:14 cognominal-p6 left
jnthn Shoulda thought of that first 16:14
16:14 cognominal-p6 joined 16:15 p6bannerbot sets mode: +v cognominal-p6
jnthn Darn, still two broken things. 16:20
Well, that's an interesting problem... 16:29
If you have `sub foo($x is copy) { my $x }` then at the moment we scribble over the descriptor with a new one, and a bunch of other things, when we should I think just warn and go onwards. 16:30
However, check_default_value_type trips over the fact that `$x` has a constraint type of Any, not Mu 16:32
Ah, actually it seems %sym<type> ain't set in that case, and that might be part of it 16:33
AlexDaniel grep: use v6.c 16:37
greppable6: use v6.c
hello…
greppable6 AlexDaniel, 1298 lines, 228 modules: gist.github.com/d22420b9efba06af3b...d0bbbf98e8
AlexDaniel, 1298 lines, 228 modules: gist.github.com/1fc6dccc32b992ad4d...35bb7d97c8 16:38
jnthn Ah goody, one fix seems to deal with both the regressions. 16:43
oh wtf 16:44
Grrr...forgot to apply the stashed change after rebase 16:45
jnthn builds/tests yet again :)
16:56 ufobat joined, p6bannerbot sets mode: +v ufobat
Geth rakudo/more-local-lowering: 6 commits pushed by (Jonathan Worthington)++ 17:02
rakudo/more-local-lowering: 822dbaadfd | (Jonathan Worthington)++ | src/Perl6/World.nqp
Mark parameter symbols with their type
rakudo/more-local-lowering: 8524081efc | (Jonathan Worthington)++ | src/Perl6/Actions.nqp
Do a lot less work upon a redeclaration

The variable is already there, so we don't need to go and do all of the things we would were it not. This also avoids scribbling over the things the optimizer uses to tell the difference between a parameter or declared variable, fixing an issue introduced by the lexical to local lowering.
jnthn m: say $CALLER::no-such-var 17:04
camelia Nil
jnthn oh, darn
We have a test "not ok 5 - vars not declared "is dynamic" are not accessible via $CALLER:: 17:05
And yeah, they still aren't after my work: the leixcal is simply *gone* 17:06
Unfortunately, not existing doesn't throw, but existing but not being marked `is dynamic` did
The immediate fix is to leave the lexical there and not use it but...urgh, loads of memory saving for lexical space lost if we do that. 17:07
Geth rakudo/more-local-lowering: a25a638da1 | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Don't retain lexicals for contvar lowerings

We retain parameter ones so we can use them in forming errors, but we needn't do that for variable declarations.
17:09
lizmat jnthn: so you're saying that you'd like to have say $CALLER::no-such-var throw? 17:11
fwiw, I could live with that :-) 17:12
jnthn Or just behave as if the thing didn't exist
Um, sorry
Or to have the "found but not marked dynamic" case behave like the thing doesn't exist
So it'd return Nil instead of throwing 17:13
lizmat but perhaps that case should continue searching then
or is that what you mean with "doesn't exist"?
jnthn Hmm
lizmat the fact that some sub in the stack happens to use a lexical that exists outwards as a dynamic 17:14
shouldn't prevent an inner scope from finding it
jnthn Indeed
Taken that way, what we have today is a bug
lizmat indeed
given that dynamics typically are uppercase and lexicals lowercase 17:15
I don't think it will cause much breakage
jnthn Yeah, I'm not worried about userland impact here
We just need to decide what to do with the spectest 17:16
And perhaps to fix it up more properly and add some more
Also there's throws-like 17:17
Though we can special-case that in the optimizer
japhb jnthn: Meaning that a user module would not be able to replicate throws-like? 17:19
Or are you special-casing it's technique?
*its
jnthn japhb: The EVAL form of it, no. There's been a ticket for a while pointing out that it uses non-spec behavior
japhb ah, gotcha
jnthn japhb: An ecosystem grep showed that form of throws-like is barely used in the module (in fact, I think they were all by one author) 17:20
*module ecosystem
japhb nodnod
jnthn 470 more lexical => local lowerings take place in CORE.setting with the new opt 17:22
And CORE.setting is written in ways that mean it's less likely to have them than most user code.
Geth rakudo/more-local-lowering: 0749626d9f | (Jonathan Worthington)++ | src/Perl6/Optimizer.nqp
Include hack for `throws-like` for now

It doesn't harm much, and will be easy to discard when the EVAL-abusing form of `throws-like` goes away.
17:29
rakudo: d964e8eac0 | (Elizabeth Mattijsen)++ | src/core/Mu.pm6
We should decont for nqp::addr on aliases
17:34
rakudo: fb9a0454c5 | (Elizabeth Mattijsen)++ | src/core/Int.pm6
Add shortcut for eqv of int / Int

  - makes Int eqv Int about 8x as fast
  - makes int eqv int about 5x as fast
  - can now check allocation free
rakudo: 5120d3d206 | (Elizabeth Mattijsen)++ | src/core/ObjAt.pm6
Add shortcut for ObjAt eqv ObjAt

This was one of the cases that broke R#2449. By shortcutting it, it is faster, without any allocations and no longer in the way of a better solution to R#2449;
synopsebot R#2449 [open]: github.com/rakudo/rakudo/issues/2449 `eqv` with classes that have custom `.new` and no `.perl` is now always True
jnthn Enough for today. Tomorrow will look at the `start` in sink context thing and play some with lowering $_ to make sure it has the performance value I expect it to. 17:36
lizmat m: say 0 eqv False 17:40
camelia False
lizmat arghs, I brokes it
m: dd False ~~ Int 17:41
camelia Bool::True
17:42 ggoebel joined, p6bannerbot sets mode: +v ggoebel
Geth rakudo: 94dd0a411d | (Elizabeth Mattijsen)++ | src/core/Int.pm6
Ensure that enum eqv enum are also handled correctly

  - because they maybe Ints as well (eg. Bool)
  - makes Int eqv Int 2.8x slower
  - but still almost 3x as fast compared to before fb9a0454c5
17:52
lizmat m: use nqp; sub a(\a,\b) { dd nqp::eqaddr(nqp::decont(a),nqp::decont(b)) }; my $a = 4671287628120739122; my $b = $a; a $a, $b # actually surprised this works 17:58
camelia 1
lizmat off for some Bohemian Rhapsody & 18:38
18:38 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Add shortcut for ObjAt eqv ObjAt 18:38
travis-ci.org/rakudo/rakudo/builds/449452677 github.com/rakudo/rakudo/compare/5...20d3d20613
18:38 travis-ci left
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 18:38
19:01 brrt joined 19:12 ggoebel left 19:27 ggoebel joined, p6bannerbot sets mode: +v ggoebel 19:35 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Ensure that enum eqv enum are also handled correctly 19:35
travis-ci.org/rakudo/rakudo/builds/449464101 github.com/rakudo/rakudo/compare/5...dd0a411d53
19:35 travis-ci left
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 19:35
19:50 brrt left 19:52 ExtraCrispy left 20:37 brrt joined 20:38 p6bannerbot sets mode: +v brrt 21:02 cognominal-p6 left 21:13 dogbert17 left 21:22 brrt left 21:51 pmurias left 21:52 pyrimidine left
Geth 6.d-prep: 030dda30da | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | ChangeLog.md
)o
21:54
AlexDaniel lizmat: I'm confused by that commit :) 21:55
lizmat afk again&
22:33 ufobat left 22:42 cognominal-p6 joined 22:43 p6bannerbot sets mode: +v cognominal-p6, ufobat joined 22:44 p6bannerbot sets mode: +v ufobat 23:13 robertle left, robertle joined 23:14 p6bannerbot sets mode: +v robertle