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:05 stmuk joined 00:06 p6bannerbot sets mode: +v stmuk 00:07 cognominal-p6 left 00:08 stmuk_ left
Geth rakudo: tbrowder++ created pull request #2460:
move pod-only code to end of their enclosing blocks
00:15
00:16 leont left 00:17 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke 00:18 MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 00:22 lizmat left 00:42 ufobat left, ufobat joined 00:43 p6bannerbot sets mode: +v ufobat
tbrowder___ Folks, please review my PR #2460 which moves pod-only code to the bottom of Grammar.nqp and Actions.nqp of their enclosing blocks. I would like to merge it after it shows testing OK but you who are actively modifying those files need to be aware of possible surprises--no real changes but code chunks being moved around. 00:45
01:00 lizmat joined, p6bannerbot sets mode: +v lizmat 01:07 cognominal-p6 joined 01:08 p6bannerbot sets mode: +v cognominal-p6 01:13 cognominal-p6 left, cognominal-p6 joined 01:14 p6bannerbot sets mode: +v cognominal-p6
tbrowder___ ok, test 01:48
ok, travis checks passed, merging...
Geth rakudo: 71ba96683c | (Tom Browder)++ | 2 files
move pod-only code to end of their enclosing blocks
01:49
rakudo: d5c3c495e2 | (Tom Browder)++ (committed using GitHub Web editor) | 2 files
Merge pull request #2460 from tbrowder/nqp-pod-split

move pod-only code to end of their enclosing blocks
01:50 Kaiepi joined 01:51 p6bannerbot sets mode: +v Kaiepi 02:20 MasterDuke left 02:51 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Tom Browder 'Merge pull request #2460 from tbrowder/nqp-pod-split 02:51
travis-ci.org/rakudo/rakudo/builds/449644644 github.com/rakudo/rakudo/compare/9...c3c495e277
02:51 travis-ci left 02:54 cognominal-p6 left 03:12 ufobat_ joined, p6bannerbot sets mode: +v ufobat_ 03:16 ufobat left 03:51 ggoebel left 04:07 ggoebel joined, p6bannerbot sets mode: +v ggoebel 05:10 b2gills left, b2gills joined 05:11 p6bannerbot sets mode: +v b2gills 05:51 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 05:59 cognominal-p6 left 06:00 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6
[Tux] www.perlmonks.org/?node_id=1225082 08:01
lizmat doesn't do perlmonks anymore 08:13
Files=1255, Tests=76368, 337 wallclock secs (15.77 usr 5.55 sys + 2371.57 cusr 229.62 csys = 2622.51 CPU) 08:23
[Tux] Rakudo version 2018.10-51-gd5c3c495e - MoarVM version 2018.10-28-ga74af5585
csv-ip5xs0.928 - 1.138
csv-ip5xs-207.844 - 8.167
csv-parser21.668 - 24.983
csv-test-xs-200.431 - 0.432
test7.854 - 8.986
test-t1.880 - 1.955
test-t --race0.844 - 0.871
test-t-2031.426 - 32.514
test-t-20 --race10.945 - 11.207
08:38
Geth rakudo: 1766435abe | (Elizabeth Mattijsen)++ | src/core/Int.pm6
Save 2 deconts for Int === Int

Only makes it less than 1% faster, but it is also better readable code
09:30
rakudo: 8e858c8d02 | (Elizabeth Mattijsen)++ | src/core/metaops.pm6
Lose unnecessary intermediate variable
10:02 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix glances at the perlmonk post... looks like a perfect thing to never reply to 10:03
TIL `$`-sigilled params aren't conted 10:30
For some reason I thought they always were, so I imagine there's a ton of routines the same thing as in github.com/rakudo/rakudo/commit/1766435abe can be done to
jnthn Zoffix: If we know they are of a type that isn't Iterable, then we indeed allow them not to be 10:45
We've had that optimization for a long while
Thus declaring `sub foo(Int $x) { }` will generate better code than `sub foo($x) { }` :) 10:46
Because it can say "oh, Int ain't Iterable", while in the second case it can't
Zoffix :o
jnthn And that has a cascade effect into spesh, because if we can lower the parameter into a local too then it doesn't need so many guards :) 10:47
I also re-worked the signature binding code-gen earlier on this year so it only has to do a single decont now too (in the past it did a bunch of them per parameter)
11:28 evalable6 left, evalable6 joined 11:29 p6bannerbot sets mode: +v evalable6 11:57 Zoffix left 12:21 brrt joined 12:22 p6bannerbot sets mode: +v brrt 12:25 leont joined, p6bannerbot sets mode: +v leont 13:33 dogbert17 joined, p6bannerbot sets mode: +v dogbert17 13:36 cognominal-p6 left
[Coke] jnthn++ 13:48
Geth roast: 10ff461f6e | (Jonathan Worthington)++ | S32-io/lock.t
Harden tests against upcoming `start` changes

We'll now be reporting errors in sunk `start` blocks; doing so made these tests fail, since they expected silent discarding of exceptions inside of `start`. (Note that the semantics only change for 6.d, so this will not cause breakage for the test as it originally was in 6.c, if it indeed was part of 6.c.)
14:31
14:37 lizmat left
Geth rakudo: 15c16e35ad | (Jonathan Worthington)++ | 2 files
Report unhandled exceptions of sunk `start` blocks

In 6.d only. They are reported using the `handle_uncaught` method of the scheduler the code was run under, providing a way to handle such application-level errors (and also to test this functionality).
Since this is done with the `sink` method, then something like: ... (17 more lines)
14:44
roast: 9cf31a99c6 | (Jonathan Worthington)++ | S17-promise/start.t
Test 6.d sunk `start` exception behavior
jnthn Finally got to it :) 14:46
14:49 Zoffix joined, p6bannerbot sets mode: +v Zoffix
dogbert17 are you already done? 15:01
jnthn dogbert17: With the `start` changes? Yes. Still got to play with the $_ changes some more :) 15:04
dogbert17 impressive speed there 15:05
dogbert17 note that t/spec/S17-supply/supplier-preserving.t has started flapping 15:09
jnthn Yeah, I noticed that :/ 15:11
Though I think it has been before now anyway
ah, finally managed to make it fail 15:12
Unhandled exception in code scheduled on thread 4
ok 8 - Received expected messages (7)
emit without supply or react
in block at t/spec/S17-supply/supplier-preserving.t line 15
dogbert17 yep, got the same 15:13
jnthn Interesting. 15:14
hoelzro o/ 15:15
hey Perl 6 people! I wanted to follow up about this PR I made: github.com/rakudo/rakudo/pull/2415
dogbert17 sadly both asan and valgrind are silent 15:16
hoelzro after reflecting on it, I couldn't find documentation that mentioned that placeholder vars aren't allowed in methods; if anyone knows where that is off of top of their head, could they please direct me to it?
jnthn Lots more details with --ll-exception, not sure if useful
15:25 ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy
dogbert17 jnthn: ig I run with MVM_SPESH_NODELAY=1 and MVM_SPESH_BLOCKING=1 the error is simply ignored, i.e. the error is written out but the test file continues to run untile completion claiming that all tests were OK 15:27
s/ig/if/ 15:28
jnthn I suspect that might just be a timing curiosity
hoelzro: I don't see any such docs right off
hoelzro: I'm also not sure if the design docs actually mandated this, or if it was an implementation decision 15:29
hoelzro ah ha
the fact that the test was requested for the rakudo tests rather than spec kind of points in that direction 15:30
then again, I would assume anything around error messages would be bound for rakudo tests regardless
jnthn I dunno, I think there's some push to maybe not spec too many exception types until they've had more review, though I'm not sure if that isn't letting the perfect be the enemy of the good. :) 15:31
dogbert17 it happens even if spesh is turned off
jnthn (I mean, if that happens, sure, but if we're still saying this in a couple more years...)
dogbert17: Yeah. It's weird. Here: `nqp::atpos($snapshot, $i).emit()(value);` occasionally the nqp::atpos comes back with a `Mu`
I can't see how that could ever happen 15:32
But the result is we do `Mu.emit` which is like `emit Mu` and thus get the error
But I just don't see how we could ever end up with something that's not a `TapListEntry` inside of that list
oh, unless it's a dupe close, hmm 15:35
oh, I...
Yeah, I think I see it :)
Zoffix hoelzro: I didn't look at the Issue when I commented on that PR, so my comment there is wrong, the placeholders in that context aren't `*%_`/`*@`, etc, it's as you later commented: the @_ and %_ used inside the body of the method, and yes `%_` is not disallowed because all methods have an implicit `*%_` slurpy already 15:36
dogbert17 jnthn++ detective work 15:37
jnthn I know a fix but...hmm
Zoffix hoelzro: and I don't know the original reason, but I'd guess @_ is not allowed because it's not entirely obvious whether `{ $^a.foo: $^b }` is equivalent to `{ self.foo: $first-pos-arg }` or to `{ $first-pos-arg.foo: $second-pos-arg }` 15:38
jnthn The problem is that we must send the "this was tapped" notification before anything is emitted
But that might in some cases result in immediate tap closure
And the close might try and remove the thing from the list before it gets inserted 15:39
So we'd instead of iterating a list iterate Mu and put that into the list 15:40
So the immediate fix is to not do that
But that doesn't totally solve it
Since then we end up with a closed tap entry in the list because the removal preceded the insertion
dogbert17 sounds like the problem has been there for quite some time
jnthn Yeah 15:41
I've seen it flap before, but very occasionally
Think I've got a proper solution 15:42
dogbert17 cool 15:44
it was beginning to sound like a catch 22 problem 15:45
jnthn Yeah, took a bit of thought
Zoffix hoelzro: as for the PR, do you think we're going a bit too far with that error in the part that tries to guess what the signature should be? It's a whole paragraph of code, all for the sake of a marginally better error that may or may not produce bogus suggestions. The same thing happened when we tried to improve radix errors and it was a page of code that kept reporting off-by-one offsets for various 15:49
special cases.
hoelzro: that was just a food for thought. I don't have a problem with the PR going in the way it is now. 15:50
15:55 pmurias joined, p6bannerbot sets mode: +v pmurias
Geth rakudo: 68d79e70fb | (Jonathan Worthington)++ | src/core/Supply.pm6
Fix an add/remove race in Supplier::Preserving

The tap list was vulnerable to a situation where the `tap(...)` call could result in a sequence of actions that would `close` that tap, but the tap had not been added to the tap list yet. This could result in us having a taplist containing `Mu`, and `Mu.emit` would blow up
  (the call meaning to target a TapListEntry`. Even if the `Mu` insertion
... (9 more lines)
15:55
pmurias I need to add a hook to overide what sort of CompUnit::Repository a 'use lib' installs 15:56
what would be a good way to expose this
? 15:57
15:57 lizmat joined, p6bannerbot sets mode: +v lizmat
pmurias (I need that because when I'm compiling stuff when bundling something for use in the browser in rakudo.js I register by own custom CompUnit::Repository to record stuff that's loaded at compile time 15:58
)
jnthn Turns out that Supplier is also vulnerable to such an issue; patching that too 15:59
dogbert17 interesting 16:00
Zoffix jnthn: question about sunk start: we had these tests for sunk start and one of them tests that sunk-start exceptions respect our PERL6_EXCEPTIONS_HANDLER env var for custom exception handlers. That test fails now. Should that feature work or should the test be removed?": 16:01
These tests I meant github.com/perl6/roast/commit/592b0b5cfbbf
jnthn Zoffix: Ah. Well, it's probably that the handle_uncaught mechanism should be taught about that 16:04
Zoffix ok
16:04 robertle left
pmurias Zoffix, hoelzro: Would it be possible to throw a structured exception for the placeholder problem? 16:04
jnthn m: Thread.start({ die "oops" }); sleep 1; # I bet this doesn't respect it either 16:05
camelia No exception handler located for catch
at SETTING::src/core/Exception.pm6:57 (/home/camelia/rakudo-m-inst-1/share/perl6/runtime/CORE.setting.moarvm:throw)
from SETTING::src/core/control.pm6:178 (/home/camelia/rakudo-m-inst-1/share/perl6/runtā€¦
jnthn oh, right, not that one
m: $*SCHEDULER.cue({ die "oops" }); sleep 1; # I bet this doesn't respect it either
camelia Unhandled exception in code scheduled on thread 4
oops
in block at <tmp> line 1
jnthn That's the one I was thinking of
Though the first could also do with being improved :)
Zoffix They both don't
jnthn Right
So, I'd fix the handle_uncaught in the scheduler to respect the env var, and then it'll fix it for sunk `start` implicitly 16:06
Geth roast: 909b59a238 | (Zoffix Znet)++ | MISC/misc-6.d.t
Remove old sunk `start` tests

The feature is now better specced (without relying on sleeps) in
  github.com/perl6/roast/commit/9cf3...6e68519999
Closes github.com/rakudo/rakudo/issues/2436 R#2436
16:07
synopsebot R#2436 [closed]: github.com/rakudo/rakudo/issues/2436 [6.d review][fudged tests committed] Crash in 6.d with sunk start
dogbert17 jnthn: do you think that e.g. R#2224 is squashed by your fixes? 16:08
synopsebot R#2224 [open]: github.com/rakudo/rakudo/issues/2224 [hyper/race] hyper/race sometimes fails with 'emit without supply or react'
jnthn dogbert17: ooh, very possibly 16:09
dogbert17 searching for the word emit emong the issues yielded 40 hits
jnthn oh, actually looking at the stack trace, I don't think so
dogbert17 *among
darn
jnthn oh hang on
I misread a line number
Zoffix Filed as R#2462 16:10
synopsebot R#2462 [open]: github.com/rakudo/rakudo/issues/2462 [NYI] Unhandled Exceptions Handler doesn't respect PERL6_EXCEPTIONS_HANDLER env var
jnthn Yes, I think with the fix I'm currently working on for Supplier
dogbert17 ah
hoelzro pmurias: I'm in favor of that - would we create a new exception type for that situation? 16:11
pmurias hoelzro: I think so 16:13
X::Signature::Placeholder seems to be an exception for a different scenario
hoelzro indeed
Zoffix: I see what you're saying - it's a good chunk of code for a "pretty" error 16:14
I thought about maybe lifting that suggestion code out into its own sub/method
16:14 brrt left
Geth rakudo: 7ee1f3c50e | (Jonathan Worthington)++ | src/core/Supply.pm6
Fix tap add/remove race in Supplier

This applies a similar fix as was done to Supplier::Preserving in 68d79e70fb. This may well resolve #2224.
16:14
synopsebot RAKUDO#2224 [open]: github.com/rakudo/rakudo/issues/2224 [hyper/race] hyper/race sometimes fails with 'emit without supply or react'
hoelzro that's a good point about %_, though - I forgot that methods were implicitly named parameter slurpy 16:15
jnthn haha...github doesn't understand the conditional tense :P
hoelzro re: @_ - I wonder if that's just a side effect of the way the compiler was checking for placeholders?
Zoffix I have a vague memory of being told there was a proper reason, but I don't know if I'm confusing it with being told about why %_ slurpy is in the sig 16:17
pmurias hoelzro: also you might want to use the same code/exception for Placeholder variables cannot be used in a regex 16:20
hoelzro nods
16:20 brrt joined 16:21 p6bannerbot sets mode: +v brrt 16:29 Zoffix left 16:31 robertle joined, cognominal-p6 joined, p6bannerbot sets mode: +v robertle 16:32 p6bannerbot sets mode: +v cognominal-p6 16:41 cognominal-p6 left 16:42 cognominal-p6 joined 16:43 p6bannerbot sets mode: +v cognominal-p6 16:56 cognominal-p6 left 16:58 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Jonathan Worthington 'Fix an add/remove race in Supplier::Preserving 16:58
travis-ci.org/rakudo/rakudo/builds/449905757 github.com/rakudo/rakudo/compare/1...d79e70fbf4
16:58 travis-ci left
lizmat m: dd :{ "a" => 42 } Ā«+Ā» :{ "a" => 42 } 17:27
yoleaux 12:23Z <brrt> lizmat: if apple releases a laptop with an A12/A14 chip, that's finally going to be a good reason for me to buy an apple laptop ;-)
camelia :{:a(84)}
lizmat dd :{ 1 => 42 } Ā«+Ā» :{ 1 => 42 }
m: dd :{ 1 => 42 } Ā«+Ā» :{ 1 => 42 } 17:28
camelia Cannot resolve caller HYPER(Sub+{is-pure}+{Precedence}, Mu, Mu, :dwim-left(Int), :dwim-right(Int)); none of these signatures match:
(&op, \left, \right, :$dwim-left, :$dwim-right)
(&op, Associative:D \left, Associative:D \right, :$dwim-lefā€¦
lizmat looks like hypers don't handle object hashes / quanthashes that well :-(
m: dd <a b c>.Set <<+>> <a b c>.Set 17:29
camelia Cannot modify an immutable Set (set())
in block <unit> at <tmp> line 1
lizmat that's also bogus, as creating a new Set should just work
m: dd <a b c>.SetHash <<+>> <a b c>.Bag # more of a policy question 17:30
camelia SetHash.new("a","c","b")
lizmat with set operators, this would have upgraded to a BagHash 17:31
so, hypers between two QuantHashes, should that work the same as set operators or not ? 17:32
17:42 SyrupThinker left 17:46 SyrupThinker joined, p6bannerbot sets mode: +v SyrupThinker 17:57 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Jonathan Worthington 'Fix tap add/remove race in Supplier 17:57
travis-ci.org/rakudo/rakudo/builds/449914931 github.com/rakudo/rakudo/compare/6...e1f3c50e95
17:57 travis-ci left
lizmat m: dd <a 1 c 2>.Map <<+>> <a 1 c 2>.Map 18:02
camelia Cannot modify an immutable Map (Map.new(()))
in block <unit> at <tmp> line 1
lizmat bogus :-) 18:03
18:08 ExtraCrispy left, ExtraCrispy joined, p6bannerbot sets mode: +v ExtraCrispy 18:09 brrt left
Geth rakudo: bfe2ad63f8 | (Elizabeth Mattijsen)++ | src/core/metaops.pm6
Make Associative <<op>> Associative work a bit better

  - no longer throws if left side is an immutable type like Map
  - directly call STORE rather than going through the assign magic
  - call STORE with :INITIALIZE (so that it can work on immutable types)
This does *not* fix the issue with objects hashes and QuantHashes of the keys are not strings.
18:14
roast/6.c-errata: dc2ec0a005 | (Elizabeth Mattijsen)++ | S02-types/set.t
Remove bogus tests

Immutable types on the left are ok
18:20
roast: 72c5861b80 | (Elizabeth Mattijsen)++ | S02-types/set.t
Remove bogus test

Immutable types on the left should be fine
18:38 patrickb joined 18:39 p6bannerbot sets mode: +v patrickb, cognominal-p6 joined 18:40 p6bannerbot sets mode: +v cognominal-p6 18:48 cognominal-p6 left 18:49 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 18:52 patrickb left 18:54 fake_space_whale left 19:06 dct joined, p6bannerbot sets mode: +v dct 19:14 ExtraCrispy left 19:30 dct left 20:28 patrickb joined, p6bannerbot sets mode: +v patrickb
tbrowder___ i'm building master and getting two "make test" failures: t/09-moar/Line_Break__LineBreak.t and t/09-moar/General_Category__extracted-DerivedGeneralCategory.t 20:32
perl6 -v: Rakudo version 2018.08-706-gbfe2ad6 built on MoarVM version 2018.10-26-g318e1ec 20:33
anyone else seeing same thing?
timotimo that looks like unicode database changes that aren't in your moarvm, but in the nqp test suite 20:35
or rakudo test suite
tbrowder___ ok, thanks, timotimo, checking closer... 20:36
20:36 cognominal-p6 left
tbrowder___ tests working now 20:49
timotimo glad to hear it
20:52 patrickb left 21:04 lizmat left 22:01 pmurias left 22:12 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke 22:22 lizmat joined, p6bannerbot sets mode: +v lizmat
AlexDaniel TimToady: so Raku is the final decision, is that right? 23:17
23:32 cognominal-p6 joined 23:33 p6bannerbot sets mode: +v cognominal-p6 23:38 cognominal-p6 left 23:39 cognominal-p6 joined 23:40 p6bannerbot sets mode: +v cognominal-p6 23:52 Zoffix joined, p6bannerbot sets mode: +v Zoffix, Zoffix left 23:53 Zoffix joined, p6bannerbot sets mode: +v Zoffix 23:56 cognominal-p6 left