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.
travis-ci NQP build failed. Daniel Green 'Unfudge now passing test for JVM' 00:07
travis-ci.org/perl6/nqp/builds/421826624 github.com/perl6/nqp/compare/da885...35d22f8b6b
tbrowder_ www.irccloud.com/pastebin/PEQay2Ty/ 01:13
.tell AlexDaniel i got following results with make spectest on release-2018.08 01:15
yoleaux tbrowder_: I'll pass your message to AlexDaniel.
AlexDaniel .
yoleaux 01:15Z <tbrowder_> AlexDaniel: i got following results with make spectest on release-2018.08
AlexDaniel tbrowder_: it says “Pastebin deleted” 01:16
tbrowder_ www.irccloud.com/pastebin/yKGf5eYO/
gut nacht 01:17
tbrowder_ *gute 01:36
AlexDaniel tbrowder_: it is clean for me
tbrowder_: is it a 32-bit system by any chance? 01:37
tbrowder_ hm, so ok to merge roast then (64-bit), may bee
AlexDaniel tbrowder_: also, let's see the output of this to double check: ./perl6 --version
tbrowder_: ah, or is it with your .pm → .pm6 changes in roast? 01:38
tbrowder_ well, it could be i guess, i’ll look there—sometimes there are weird things in test files...will report back tomorrow 01:39
perl —v gives: 2018.06-482-g11f1902 built on moarvm 2018.06-434-ge530be4 01:45
tbrowder_ a quick look shows some tests referring to explicit ‘.pm’ files; i’ll look into all tomorrow more closely, nite 01:49
Geth rakudo: fc8c7f84cb | (Jeremy Studer)++ | 2 files
Make native arrays throw when storing lazy Seq

Currently a Failure is returned when attempting to store a lazy Seq but since the result is not sunk, the Exception is not thrown. This leads to odd results like below:
   my int @geo = 2, 4, 8 ... *;
... (6 more lines)
05:17
rakudo: bb963a2504 | (Jeremy Studer)++ | 2 files
Throw when splicing lazy Seq into native array
rakudo: d08a4145ef | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | 2 files
Merge pull request #2240 from jstuder-gh/native_array_throw_on_lazy

Make native arrays throw when storing lazy Seq
lizmat good * #perl6-dev, from the Irish Sea! 06:54
AlexDaniel o/ 07:22
lizmat AlexDaniel \o 07:26
I completely lost touch with the status of the 2018.08 release
where do we stand?
AlexDaniel lizmat: I'm ready, all blockers are gone, changelog is finished (although I usually do the final proofreading pass right before committing), waiting for MoarVM release 07:29
lizmat ah, ok cool, I understand samcv is doing the last changelog bits
AlexDaniel lizmat: yes, see the log starting from colabti.org/irclogger/irclogger_log...08-28#l152 07:30
and also colabti.org/irclogger/irclogger_log...2018-08-29
lizmat AlexDaniel++ providing reading material 07:31
AlexDaniel jnthn: re: “saw it was all sections and SHA-1s, sighed and that was about the end of my motivation to help with it”
jnthn: I was not very motivated to recover shas too, but I think my solution is nice 07:32
lizmat: on the rakudo/nqp side, anyone is free to commit to master, I'm releasing from release-2018.08 branch 07:33
lizmat AlexDaniel++ yeah, I noticed :-) 07:37
AlexDaniel releasable6: status 07:42
releasable6 AlexDaniel, Next release will happen when it's ready. 0 blockers. 480 out of 494 commits logged
AlexDaniel, Details: gist.github.com/4d134aafc86e4ed8b6...8eea55f6d4
AlexDaniel hmm I need to fix this bot though
AlexDaniel or maybe the bot is obsolete and I should just steal samcv's script 07:47
Geth rakudo: d3cac14ece | (Elizabeth Mattijsen)++ | src/core/Seq.pm6
Make Seq smartmatch Iterables ok

Solves R#2233
08:18
synopsebot R#2233 [open]: github.com/rakudo/rakudo/issues/2233 Smartmatch always fails on two Seq objects.
Geth roast: 8b38c7d010 | (Elizabeth Mattijsen)++ | S03-smartmatch/array-array.t
Add tests for R#2233
08:19
lizmat_ m: module A { our sub a() {} }; for ^1_000_000 -> int $_ { A::a() }; say now - INIT now 08:45
camelia 0.38024007
lizmat_ m: sub a() {}; for ^1_000_000 -> int $_ { a() }; say now - INIT now
camelia 0.0235234
lizmat_ I'm surprised by the difference
m: 0.38024007 / 0.0235234 08:46
camelia WARNINGS for <tmp>:
Useless use of "/" in expression "0.38024007 / 0.0235234" in sink context (line 1)
lizmat_ m: say 0.38024007 / 0.0235234
camelia 16.16433296
lizmat_ 16x slower
lizmat_ Looks like the A::a() case is not handled by the static optimizer to codegen a callstatic 08:50
jnthn But you can update what's in a package? 08:51
So it's *not* static 08:52
lizmat but the package has been closed at that point already ? 08:53
jnthn Closed?
lizmat or do you mean by augment?
jnthn The Stash is just a Hash
You can poke new things into it at any point 08:54
lizmat I thought it was a Map ? 08:55
jnthn m: say Stash.^mro
camelia ((Stash) (Hash) (Map) (Cool) (Any) (Mu))
lizmat m: say PseudoStash.^mro
camelia ((PseudoStash) (Map) (Cool) (Any) (Mu))
jnthn That one is, but you can't put stuff into one of those. 08:56
lizmat guess that's where my confusion is from
jnthn It largely walks lexical scopes, and those are immutable.
Which is why that case is 16x faster :) 08:57
lizmat hmmm... turning the sub into a method, makes it quite fast again
m: cl;ass A { method a() {} }; for ^1_000_000 -> int $_ { A.a() }; say now - INIT now 08:58
camelia 5===SORRY!5===
Undeclared name:
A used at line 1
Undeclared routines:
ass used at line 1. Did you mean 'abs'?
cl used at line 1. Did you mean 'lc'?

Other potential difficulties:
Useless declaration of a has-scoped …
jnthn Yup, because those are looked up via the MOP where there are also much stronger rules than "it's just a Hash"
lizmat m: class A { method a() {} }; for ^1_000_000 -> int $_ { A.a() }; say now - INIT now
camelia 0.02996095
lizmat so why does that get so fast and the sub call doesn't ?
jnthn Yup, because those are looked up via the MOP where there are also much stronger rules than "it's just a Hash" 08:59
lizmat sorry, satellite lag
jnthn I accounted for packet loss too ;)
jnthn Anyway, I figure "it's slower to boot" can go on the long list of reasons to mostly avoid package scope for things other than package declarations themselves. 09:03
Geth rakudo: 3f10e2d136 | (Elizabeth Mattijsen)++ | src/core/control.pm6
Allow emitting Mu

I guess emitting Junctions as is is a good thing, so let the receiving end handle the auto-threading. Fixes #2223
09:07
synopsebot RAKUDO#2223 [open]: github.com/rakudo/rakudo/issues/2223 Mu.emit seems broken
jnthn Yes, Junctions can just be carried through the pipeline, I think 09:08
Same as with `take`
Geth rakudo: db3768e356 | (Elizabeth Mattijsen)++ | src/core/Supply.pm6
Make Supply.emit also take Mu
09:33
jnthn That's Supplier.emit, no? :) 09:36
lizmat jnthn: yeah, I just looked in src/core/Supply for method 'emit' :-( 09:40
maybe Supplier should have its own file ? 09:41
Geth nqp/truffle: 86a95371b3 | (Paweł Murias)++ | 16 files
[truffle] Stub things up for deserialization

More deserialization will be filled in later
nqp/truffle: d20ed7ded3 | (Paweł Murias)++ | 7 files
[truffle] Try to resolve serialization context dependencies
nqp/truffle: ece78a4ca9 | (Paweł Murias)++ | 4 files
[truffle] Fix some NodeInfo
lizmat and maybe change the Rakudo::Internals augment into a Rakudo::Supply class / file ? 09:42
lizmat
.oO( lovely disconnect every 45 mins on the dot)
09:46
Geth roast: 20de0d4773 | (Elizabeth Mattijsen)++ | S17-supply/basic.t
Make sure Supplier.emit takes Mu
09:47
roast: 1c939c2a58 | (Elizabeth Mattijsen)++ | S17-supply/syntax.t
Make sure we can emit Mu
09:53
lizmat commuting& 10:09
[Tux] Rakudo version 2018.06-497-gdb3768e35 - MoarVM version 2018.06-442-g633604d30
csv-ip5xs0.931 - 0.972
csv-ip5xs-207.745 - 7.806
csv-parser25.096 - 25.258
csv-test-xs-200.450 - 0.496
test9.328 - 9.422
test-t2.101 - 2.234
test-t --race0.924 - 0.944
test-t-2037.745 - 38.995
test-t-20 --race11.805 - 12.593
13:16
Rakudo version 2018.06-497-gdb3768e35 - MoarVM version 2018.06-442-g633604d30
tbrowder_ good day|evening|night, #perl6-dev
.tell AlexDaniel the roast pm => pm6 failures are definitely due to the file name changes. i'm almost finished with the required fixups... 13:19
yoleaux tbrowder_: I'll pass your message to AlexDaniel.
AlexDaniel . 13:34
yoleaux 13:19Z <tbrowder_> AlexDaniel: the roast pm => pm6 failures are definitely due to the file name changes. i'm almost finished with the required fixups...
AlexDaniel cool
tbrowder_ does anyone know how to contact github’s ShimmerFairy, the pod6 SUPERNOVA author? 14:17
[Coke] I haven't seen them around since... almost Christmas, I think. 14:58
Geth nqp/truffle: 4 commits pushed by (Paweł Murias)++ 15:11
timotimo it's been a while, yeah 15:25
AlexDaniel .tell TimToady sub foo { LEAVE { say 42 } if False; 99 }; foo # do I get it right that `if False` is a noop here, and that it is LTA without a warning? 15:58
yoleaux AlexDaniel: I'll pass your message to TimToady.
AlexDaniel m: sub foo { LEAVE { say 42 } if False; 99 }; foo 15:59
camelia 42
jnthn Yes, traits are a compile-time thing 16:00
So the behavior is correct. Might well be possible to warn 16:01
TimToady m: say BEGIN { [*] 1..80 } if Bool.pick 16:14
yoleaux 15:58Z <AlexDaniel> TimToady: sub foo { LEAVE { say 42 } if False; 99 }; foo # do I get it right that `if False` is a noop here, and that it is LTA without a warning?
camelia ( no output )
TimToady m: say BEGIN { [*] 1..80 } if Bool.pick
camelia 71569457046263802294811533723186532165584657342365752577109445058227039255480148842668944867280814080000000000000000000
TimToady otoh, for entries the value makes sense at run time 16:14
m: say LEAVE { [*] 1..80 } if True 16:15
camelia Potential difficulties:
Useless use of [*] in sink context
at <tmp>:1
------> 3say LEAVE { 7⏏5[*] 1..80 } if True
Nil
TimToady m: Nil if True; 16:16
camelia ( no output )
TimToady otgh we explicitly allow Nil to be used as a no-op without warning 16:17
m: my $x = 0; Nil while $x++ < 10
camelia ( no output )
TimToady m: my $x = 0; 0 while $x++ < 10
camelia WARNINGS for <tmp>:
Useless use of constant integer 0 in sink context (use Nil instead to suppress this warning) (line 1)
16:18
TimToady but maybe we should only do that for literal Nil...
well, I guess we already do
m: BEGIN { 0 } if True 16:19
camelia ( no output )
TimToady contrariwise, we don't propagate sink into BEGINs and such currently, though I suppose we could
well, maybe we couldn't 16:20
m: BEGIN { 0 } .say
camelia 0
TimToady no, the BEGIN must fire off before we know whether the value is used
best we could do is remember whether the last thing was side-effecty, and complain lazily later 16:21
but anyway, we know a LEAVE is never going to give a useful value, so we could be a bit warnier on that 16:22
m: LEAVE { say "done" } .foo.bar.baz.say 16:25
camelia Nil
done
TimToady a little hard to imagine people using the Nil for something on purpose
AlexDaniel TimToady: but that's not what I asked? My issue is LEAVE firing regardless of what you have in the statement modifier 16:26
TimToady though nowhere else do we distinguish the sinks of 42; vs 42 if True
TimToady LEAVE doesn't work that way 16:27
TimToady as jnthn points out, it installs the hook at compile time, before it even parses the 'if' 16:28
the only place we cheat on that a bit is with my $handle will leave { .close } and such 16:29
AlexDaniel yes, and shouldn't we have a warning if you do that? I guess I'm confused, but I don't see what it has to do with sink context… 16:30
TimToady well, you're treating the LEAVE as if it's a side effect you can turn on or off
but in the context of the expression, it's just a pseudo-constant that returns Nil 16:31
AlexDaniel oh… 16:33
Geth rakudo: tbrowder self-assigned POD data blocks / POD variables not yet implemented github.com/rakudo/rakudo/issues/2242
cf1df1d787 | ryn1x++ | src/core/Regex.pm6
16:34
TimToady m: say LEAVE { say "done" } + 0
camelia Use of Nil in numeric context
0
done
in block <unit> at <tmp> line 1
TimToady that one warns
TimToady the place people usually get into trouble with this is by putting LEAVE as the last thing, and expecting it to return the value before 16:35
AlexDaniel I just had a bug in my code where I misplaced a block a bit
`LEAVE { blah } if foo` instead of `LEAVE { blah if foo }` 16:36
TimToady m: say { 42; LEAVE { say "done" } }() + 0
camelia WARNINGS for <tmp>:
done
0
Useless use of constant integer 42 in sink context (line 1)
Use of Nil in numeric context
in block <unit> at <tmp> line 1
AlexDaniel or `LEAVE blah if foo` :) 16:37
;
TimToady thing is, with Nil while $x++ < 10 we have the situation that we're explicitly not using a side effect in base expression because we want a side effect in the loop modifier 16:39
so one could conceivably use LEAVE that way, though it would be misleading
AlexDaniel yes
TimToady m: LEAVE { say "done" } while $_++ < 10
camelia done
TimToady m: LEAVE { say "done" } while $_++ < 10; say $_
camelia 11
done
TimToady but I'm not sure we have to take such antisocial code into account in our design :) 16:40
jnthn I suspect folks who write `LEAVE { stuff } if $blah` are more confused than antisocial :) 16:41
TimToady I'd be perfectly happy saying "You may not use modifiers on exiting phasers, period."
sure, it's usually confusion, but the language lawyers will argue with malice aforethought :) 16:42
TimToady is mostly just trying to think what the most awesome error message for it would be 16:44
.oO(You are confused. Stop it!)
TimToady if we say "Useless use of statement modifier on phaser", we'll draw the "while $_++ < 10" "but it's not useless" whine periodically 16:46
so I'm inclined to be a little less B and just say "You can't do that." 16:47
TimToady wonders whether anything out there is already written that way, silently not working... 16:48
AlexDaniel R#2243 16:49
synopsebot R#2243 [open]: github.com/rakudo/rakudo/issues/2243 [LTA] Using modifiers on exiting phasers
TimToady AlexDaniel++
AlexDaniel TimToady: well… uh… github.com/perl6/whateverable/blob...e.pm6#L311 16:50
I have no idea what state of mind I was in when I wrote that line
LEAVE .keep with $done; # ← that'd make more sense imo 16:51
TimToady ayup 16:52
TimToady but whatever state of mind it was, it's something we can and oughta catch 16:55
lizmat . 17:01
AlexDaniel ! 17:02
:)
lizmat ?
TimToady
AlexDaniel oh wow that exists also: ⸘ 17:03
japhb ‼︎ 17:04
AlexDaniel unicodable6: { .uniname.contains: ‘EXCLAMATION’|‘QUESTION’ } 17:17
unicodable6 AlexDaniel, U+0021 EXCLAMATION MARK [Po] (!) 17:18
AlexDaniel, U+003F QUESTION MARK [Po] (?)
AlexDaniel, 50 characters in total: gist.github.com/8dde6260c359db4e13...08cc7a7213
TimToady the bot is 🆙 17:24
lizmat continues commuting& 17:42
tbrowder_ AlexDaniel: what test target should i be using for a release? the one test file that's failing has one test with "#?rakudo skip in it and it's not being skipped (fudged??). failing test file is "t/spec/S10-packages/basic.t" 17:48
AlexDaniel tbrowder_: `make t/spec/S10-packages/basic.t` 17:49
tbrowder_: but if you're doing `make spectest` then it should fudge tests correctly too 17:50
tbrowder_ all right, i got a little farther... 17:51
tbrowder_ ok, stupid mistake fixed...tests ok singly now, trying the whole mess again... 17:58
tbrowder_ hm, another failure: t/spec/S17-supply/syntax.t (moar only), but it works singly. the original failure occurred when i use "make TEST_JOBS=2 spectest" 18:32
AlexDaniel yeah, possibly a flop 18:38
just try again
ah, it if works when running it alone, then it's fine 18:39
well, “fine”
tbrowder_ i'm trying all without TEST_JOBS 19:02
AlexDaniel if I have something like: say %*FOO; start { say %*FOO }; where the first say works just fine but inside start it gives `Dynamic variable %*FOO not found`, is it likely a bug or do I have some wrong expectations? 19:16
rakudo: 5af3c50119 | (Zoffix Znet)++ (committed using GitHub Web editor) | src/core/Regex.pm6
Merge pull request #2232 from ryn1x/master

Fix Regex.ACCEPTS: NDF does not set $/ #2176
synopsebot RAKUDO#2176 [closed]: github.com/rakudo/rakudo/issues/2176 [easy to resolve][good first issue][regex] Regex.ACCEPTS: NDF does not set $/
AlexDaniel unfortunately it does not golf that easily 19:23
AlexDaniel weird. 19:38
well, I just did this: my $x = %*FOO; start { my %*FOO = $x; … } 19:50
it works 🙈
timotimo why though 19:58
AlexDaniel timotimo: if you're really interested, you can try to golf it :) 20:01
AlexDaniel Zoffix: doesn't work? 20:02
Zoffix No
yoleaux 19 Aug 2018 03:27Z <AlexDaniel> Zoffix: this list is not perfect and probably needs to be tweaked, but it's better than nothing (single apt command on the bottom of the page): github.com/perl6-community-modules...aster/wiki
19 Aug 2018 03:42Z <AlexDaniel> Zoffix: I think there are some packages from `testing` and `unstable`, and even with these repos added I see libcurl refusing to install… just skip packages that do not want to install
19 Aug 2018 06:28Z <AlexDaniel> Zoffix: “184 out of 1127 (16.33%) appear to be unusable” that's an improvement :)
AlexDaniel it is identified correctly, so maybe changing the voice command is easier 20:03
as in github.com/zoffixznet/perl6-banbot...-414639683
AlexDaniel timotimo: github.com/perl6/whateverable/comm...dc562655b4 20:09
clone the repo, `zef install --deps-only .`, then t/evalable.t should pass its tests
timotimo maybe it's important that you copy it?
AlexDaniel (if it doesn't maybe try again)
revert the commit and it will fail this command: `master: say 42` (on #whateverable channel, or in t/evalable.t) 20:10
timotimo my brain is a little bit on ze fritz today, i'm hopefully gonna get the blog post done that i started yesterday, though
AlexDaniel ah, the bot will join #whateverable if you run `sake debug:evalable` 20:11
doesn't have to be you, anyone can give it a try :)
timotimo for debug's sake 20:12
AlexDaniel committable6: sleep 15; say ‘hello’ 20:17
committable6 AlexDaniel, ¦sleep: «Cannot find this revision (did you mean “all”?)»
AlexDaniel committable6: HEAD sleep 15; say ‘hello’
committable6 AlexDaniel, ¦HEAD(5af3c50): ««timed out after 10 seconds» «exit signal = SIGHUP (1)»»
AlexDaniel committable6: vars
committable6 AlexDaniel, timeout=10
AlexDaniel committable6: timeout=20
committable6 AlexDaniel, timeout is now set to “20” (default value is “10”)
AlexDaniel committable6: HEAD sleep 15; say ‘hello’ 20:18
committable6 AlexDaniel, ¦HEAD(5af3c50): «hello␤»
AlexDaniel committable6: timeout=default
committable6 AlexDaniel, timeout is now set to its default value “10”
AlexDaniel something like that
actually my main goal was to be able to switch the branch in releasable6… but that won't work yet :S 20:19
AlexDaniel statisfiable6: vars 20:19
statisfiable6 AlexDaniel, background=white; height=800; range=2014.01..HEAD; width=1000
AlexDaniel but hey look, custom background colors… 20:20
AlexDaniel statisfiable6: help 20:21
statisfiable6 AlexDaniel, Available stats: core (CORE.setting size), install (size of the installation), libmoar (libmoar.so size) # See wiki for more examples: github.com/perl6/whateverable/wiki/Statisfiable
AlexDaniel statisfiable6: background=red
statisfiable6 AlexDaniel, background is now set to “red” (default value is “white”)
AlexDaniel statisfiable6: install
statisfiable6 AlexDaniel, OK! Working on it…
tbrowder_ i just had to move to another machine because of limited ram for jvm build. problems still: new machine (deb9) has only javacc (not javac) and i can't get it to work (tried linking to /usr/bin/javac. that didn't help) 20:24
any suggestions?
AlexDaniel tbrowder_: just test moar only?
tbrowder_ that's what i'm doing, but still, is there a work-around? 20:25
AlexDaniel tbrowder_: sure, just install openjdk? sudo apt install default-jdk 20:28
AlexDaniel 💤 20:31
tbrowder_ er, i mistakenly installed *java* packages...thanks for keeping me on the right path, AlexDaniel
tbrowder_ still having spectest problems on release-2018.08. i’ve given up on jvm, but some moarvm tests are hanging...among them supply.t... 23:56