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:00 lizmat joined, p6bannerbot sets mode: +v lizmat 00:03 leont left 00:12 leont joined 00:13 p6bannerbot sets mode: +v leont 00:37 leont left 00:59 j3nnn1 left 01:01 Ven` joined 01:02 p6bannerbot sets mode: +v Ven` 01:06 Ven` left 01:14 Kaiepi left 01:15 Kaiepi joined, p6bannerbot sets mode: +v Kaiepi 01:19 lizmat left 01:48 cognominal-p6 joined 01:49 p6bannerbot sets mode: +v cognominal-p6 01:52 cognominal-p6 left, cognominal-p6 joined 01:53 p6bannerbot sets mode: +v cognominal-p6 02:12 ufobat_ joined, p6bannerbot sets mode: +v ufobat_ 02:13 cognominal-p6 left 02:16 ufobat left 03:38 stmuk joined, p6bannerbot sets mode: +v stmuk 03:39 stmuk_ left 03:45 fake_space_whale left 04:19 Ven` joined 04:20 p6bannerbot sets mode: +v Ven` 04:24 Ven` left 05:08 cognominal-p6 joined 05:09 p6bannerbot sets mode: +v cognominal-p6 05:25 cognominal-p6 left 05:26 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 05:33 cognominal-p6 left, ufobat_ is now known as ufobat 06:39 robertle joined 06:40 p6bannerbot sets mode: +v robertle 07:30 lizmat joined, p6bannerbot sets mode: +v lizmat 08:04 Ven` joined 08:05 p6bannerbot sets mode: +v Ven` 08:28 cognominal-p6 joined, cognominal-p6 left 08:29 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6
Geth nqp/nqp-mbc: 2f9fbb1278 | (Stefan Seifert)++ | src/vm/moar/QAST/QASTCompilerMAST.nqp
Bring back serialization string heap optimization

With a few tricks MoarVM can use the bytecode file's string heap for strings needed in deserialization, too. This avoids the need for setting up a string list in dependencies+deserialize.
08:35
nqp/nqp-mbc: 7694fcf901 | (Stefan Seifert)++ | src/vm/moar/QAST/QASTOperationsMAST.nqp
Use unbox_u to get at MAST::Local's $!index to avoid the coercion dance
08:52 cognominal-p6 left 09:14 dogbert2_ left 09:32 donaldh joined, p6bannerbot sets mode: +v donaldh 09:53 cognominal-p6 joined 09:54 p6bannerbot sets mode: +v cognominal-p6 10:07 cognominal-p6 left, cognominal-p6 joined 10:08 p6bannerbot sets mode: +v cognominal-p6 10:10 dogbert2_ joined 10:11 p6bannerbot sets mode: +v dogbert2_ 10:23 leont joined 10:24 p6bannerbot sets mode: +v leont 10:54 leont left
dogbert2_ there's a passing TODO in t/05-messages/02-errors.t, test #3 11:19
lizmat dogbert2_: I'm not seeing that :-( 11:27
correction: I do 11:28
Geth rakudo: 18eed380b0 | (Elizabeth Mattijsen)++ | t/05-messages/02-errors.t
Unfudge passing test, dogbert++
11:29
11:34 Ven` left 11:51 Ven` joined 11:52 p6bannerbot sets mode: +v Ven`
Zoffix There's a 6.c spec `ok Nil.ACCEPTS(Any) == Nil, 'Nil.ACCEPTS always returns Nil';` 11:58
But that's a broken test, because it's using `==` operator. Were it to use `===`, it'd fail because that method returns False
And there's a commented out piece of code in rakudo saying actually making it return Nil hangs roast: github.com/rakudo/rakudo/blob/mast...il.pm6#L12 11:59
Geth roast: ac1ad09150 | (Zoffix Znet)++ | S02-types/nil.t
Correct Nil tests

Don't use `==` for testing for a `Nil`. Correcting these tests shows Nil.ACCEPTS(Any) returns False in rakudo, so fudge that test.
I don't really see the point of making this special behaviour for ACCEPTS. IIRC only regexes return something other then True/False.
12:02
Zoffix I guess it makes sense when you consider Failures are Nilk 12:06
R#2419 12:07
synopsebot R#2419 [open]: github.com/rakudo/rakudo/issues/2419 Nil.ACCEPTS returns False and flawed spec says it must be Nil
Geth roast: bd7bdb82d5 | (Zoffix Znet)++ | S02-types/nil.t
Extra test for Nil.FALLBACK with args
12:09
12:10 pmurias joined, p6bannerbot sets mode: +v pmurias 12:12 Ven` left 12:13 pmurias left 12:15 pmurias joined, p6bannerbot sets mode: +v pmurias 12:16 Ven` joined 12:17 p6bannerbot sets mode: +v Ven`
dogbert2_ lizmat, Zoffix: do you have failing tests in t/spec/S06-currying/positional.t ? 12:24
lizmat++ (fixing tests)
Zoffix 15:58 lizmat this seems to break some tests in t/spec/S06-currying/positional.t that apparently do not expect the coerce_type to appear
15:58 lizmat imo the tests are broken
Geth rakudo: 65d4fd7144 | (Elizabeth Mattijsen)++ | src/core/Nil.pm6
Update reason for commenting out
12:26
12:34 pmurias left, pmurias joined, p6bannerbot sets mode: +v pmurias 12:36 donaldh left
tbrowder___ hi all, question on rakudo nqp: is it worthwhile to specify int type for indices? currently such is not consistent, but there is a lot of array indexing scattered throughout, many without explicit typing 12:41
12:43 pmurias left 12:49 pmurias joined, p6bannerbot sets mode: +v pmurias
Zoffix tbrowder___: theoretically yes, but I when I tried, I got slightly slower results. Someone (diakopter or maybe Ven`) commented about that on one of my NQP commits and said the slower results were due to boxing somewhere. 12:50
nine tbrowder___: yes, it is.
Ven` doesn't recall doing that(?)
nine Well, it's always a good idea to look at the spesh log. Sometimes we do crazy coercion and boxing dances 12:51
12:51 ZofBot joined, ChanServ sets mode: +v ZofBot, p6bannerbot sets mode: +v ZofBot
Zoffix Ven`: then maybe it was someone else 12:51
Ven` At least I'd be surprised, because I'm bad at this low-level stuff. 12:52
12:52 Zoffix left
tbrowder___ theoretically, most of the pod code is compile-time during parsing, so wouldn’t boxing/unboxing not apply? 12:53
the indices are typically over arrays of chars 12:54
Geth rakudo: 45eeab7876 | (Elizabeth Mattijsen)++ | 2 files
Implement Code.cando

  - which is a very simple smartmatch of the signature with the capture
  - the Routine.cando one is much more complex as it support multi dispatch
  - fixes R#2420
  - also make sure Routine.cando only takes instantiated captures
12:55
synopsebot R#2420 [open]: github.com/rakudo/rakudo/issues/2420 [RFC] Some Callables can't do .cando
rakudo: a434a187ef | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
add info
13:01
13:06 brrt joined 13:07 p6bannerbot sets mode: +v brrt
Geth rakudo: 69533b5064 | (Elizabeth Mattijsen)++ | src/core/Code.pm6
Make sure Code.cando has the same return type as Routine.cando

Even though it will always be either a zero or 1 element list
13:12
13:14 j3nnn1 joined, p6bannerbot sets mode: +v j3nnn1
Geth roast: 86dc2d14e6 | (Elizabeth Mattijsen)++ | S06-other/introspection.t
Added tests for R#2420
13:31
synopsebot R#2420 [open]: github.com/rakudo/rakudo/issues/2420 [testneeded] Some Callables can't do .cando
13:52 Ven` left 13:53 Ven` joined 13:54 p6bannerbot sets mode: +v Ven` 13:58 pmurias left 13:59 pmurias joined, p6bannerbot sets mode: +v pmurias
Geth rakudo: 4154e7447a | (Tom Browder)++ (committed using GitHub Web editor) | docs/rakudo-nqp-and-pod-notes.md
add note on pod token .ast handling
14:08
tbrowder___ another grammar/actions question: would adding classes instead of always using .ast be counterproductive? it would at least be easier IMHO to see the parse flow for persons new to the code. 14:14
14:33 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix tbrowder___: I don't understand what you mean 14:33
14:34 pmurias left 14:35 pmurias joined, p6bannerbot sets mode: +v pmurias
Zoffix Like.. what do you by classes instead of .ast? .ast is just a data store to shuttle stuff between tokens. I don't understand how classes enter the picture to replace that. 14:35
*do yo umean 14:36
14:36 pmurias left
Zoffix m: 'bark bark bark'.encode.decode('utf-c8').say 14:39
camelia Can not decode a utf-8 buffer as if it were utf-c8
in block <unit> at <tmp> line 1
Zoffix Why not? It's just bytes.
samcv Zoffix: good question. i am not against letting people do that 14:40
14:40 pmurias joined, p6bannerbot sets mode: +v pmurias
Zoffix TIL that Liskov was a woman 14:43
(just 'cause of that Slavik-sounding last name which doesn't have a feminine ending) 14:44
s/was/is/; 14:45
Filed as R#2421 14:46
synopsebot R#2421 [open]: github.com/rakudo/rakudo/issues/2421 [LTA] Cannot decode a buffer of bytes if it was produced by utf8 encode
Zoffix hm, so .decode: $encoding doesn't use the Encoding::Registry stuff yet, does it? 14:51
hm, looks like .slurping an IO::Path also doesn't see that I registerd a new encoding 14:53
IO::Handle works. Good 'nuf for now, I guess
Zoffix decides to pick another topic for 6.d teaster 14:56
15:04 brrt left
tbrowder___ Zoffix: the problem with ast, for me, is it’s harder to find its format without a lot of searching, but if it were a class instance it would be easier to (1) find its member attributes and (2) use the attributes. That would be at least a bit self-documenting, and the only question for me is how much, if any, is performance affected. 15:11
Zoffix tbrowder___: I've no idea what you mean.
You know there's a .dump method, on QAST and Match objects? 15:12
I've no idea what you mean by "its format"? 15:13
Like it's already an introspectable object. 15:15
tbrowder___ yes, but the dump method is very tedious, and doesn’t directly help change structure—it merely shows the layout of the object. 15:16
afak, the introspection is done through the dump, and can’t be seen otherwise. 15:19
*afaik
15:21 fake_space_whale joined 15:22 p6bannerbot sets mode: +v fake_space_whale
Zoffix tbrowder___: are we talking about QAST::Node objects or something else? 15:42
15:43 stmuk_ joined 15:44 p6bannerbot sets mode: +v stmuk_ 15:45 cognominal-p6 left, stmuk left 15:50 cognominal-p6 joined 15:51 p6bannerbot sets mode: +v cognominal-p6 15:59 cognominal-p6 left, cognominal-p6 joined 16:00 p6bannerbot sets mode: +v cognominal-p6
nine Oh the joy of fixing merge conflicts because of whitespace cleanup :/ github.com/perl6/nqp/commit/86362f...d3f52637bf 16:05
For future reference: please just don't 16:06
Zoffix :) 16:08
16:13 robertle left
Zoffix c: 2015.12,HEAD my @needles = 1, 2, 3, 10, 100; my @haystack = ^1000 .pick: 600; { for ^1000 { my $ = @needles ⊆ @haystack }; say now - ENTER now } 16:18
committable6 Zoffix, ¦2015.12: «20.1532034␤» ¦HEAD(74687ae): «0.4214398␤» 16:19
Zoffix i.kym-cdn.com/photos/images/newsfe...1308706785
47.82x as fast 16:20
japhb Zoffix wouldn't that potentially give different timings simply as a matter of whether @needles actually is a subset of @haystack, and how quickly that can be determined? (e.g., what if @haystack has no 1 in it?) 16:24
Since the two different versions would potentially pick different @haystacks I mean. 16:25
Zoffix *sigh* 16:28
16:28 Zoffix left
jnthn Yeah, I was annoyed by that PR doing so called "code quality improvements", which mostly meant `final` clutter, whitespace changes, style changes that aren't better just different...I didn't see a single useful thing in there. Wish I'd not been distracted with other things and could have shot the PR down before it got merged :/ 16:41
Maybe we need a tighter commit policy on NQP, as MoarVM and Rakudo have. 16:42
AlexDaniel nine: git merge -Xignore-all-space ? 16:46
nine AlexDaniel: how do I do that in a rebase? 16:59
AlexDaniel `git rebase -Xignore-all-space master` ? 17:00
or whatever the branch is
17:02 Ven` left
AlexDaniel the behavior of that stuff is somewhat dodgy, but you're reviewing the results anyway, right? :) 17:02
tbrowder___ Zoffix: i'm talking about match objects and their .ast slot. i guess they eventually become QAST objects, but I'm trying to modify things, in rakudo nqp code, that have been "made" but need to be modified before the final class definition is completed. 17:09
nine AlexDaniel: yeah, it's not like I'm merging to master today :) 17:17
AlexDaniel thanks :D 17:18
nine Except for... how are we doing on the release? I would like to merge a couple of preparatory commits to get rid of a couple of bootstrap cycles
AlexDaniel actually, yeah
AlexDaniel starts release branches 17:19
feel free to do whatever you want
in nqp and rakudo at least
lizmat: according to CI (AppVeyor) some tests are failing on Windows after your commits 17:30
Geth rakudo: fa3dc0ab52 | (Zoffix Znet)++ (committed using GitHub Web editor) | t/05-messages/02-errors.t
Use valid port number
17:35
17:37 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix That test looks bogus 17:37
AlexDaniel: I don't think the async sock issues are completely fixed. That test is meant to die with "invalid argument", but on my box it dies with "Failed to resolve host name 'localhost' with family 152. Error: 'ai_family not supported'" 17:46
hm, or at least it does with my latest version of the test :/ 17:47
Geth nqp/nqp-mbc: 60 commits pushed by (Stefan Seifert)++
review: github.com/perl6/nqp/compare/7694f...c019c98834
17:48
rakudo/nqp-mbc: 95de4e2ab4 | (Stefan Seifert)++ | src/vm/moar/Perl6/Ops.nqp
Get rid of MAST
rakudo/nqp-mbc: 994fac8612 | (Stefan Seifert)++ | src/vm/moar/Perl6/Ops.nqp
Take the list ouf of MAST::InstructionList
rakudo/nqp-mbc: 49304528ef | (Stefan Seifert)++ | src/vm/moar/Perl6/Ops.nqp
Get rid of push_ilist
nine That was one tough rebase
Zoffix ah, k, it's just one you get if you go way too high with the port
nine But rebasing gave me a .5 seconds boost in stage mast :) 17:53
Of course I expect the same boost in master...but who knows? 17:54
Zoffix tbrowder___: no, they remain Match objects. .ast methods can contain whatever you need them to contain, which in Rakudo's Grammar/Actions would most often be QAST::Node objects. You can modify them any way you want with positional and operations and assigning to attributes for named args. Also, MoarVM's remote debugger ( App::MoarVM::Debug ) can let you inspect those objects in realtime.
tbrowder___: so basically to me it sounds like you want to have custom classes in places where we already have generic classes in hopes that it'd be easier to use, but IMO having a universal set of operations (positionals/nameds access) is far more useful and easier to use than a billion custom classes. This is especially true later in the food chain, such as static optimizer where you could be combing 17:56
over a node that comes from anywhere. It's useful to have them all be QAST::Node than SomeCustomClassWithLongDescThatWeUseForBegingBlocks
hm, looks like the port argument to async sock is overwriting some data in memory: 17:58
m: start { sleep 2; exit }; react whenever IO::Socket::Async.listen: "localhost", 2¹⁷-1 { done }
camelia An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
invalid argument
in block <unit> at <tmp> line 1
Zoffix ^ Looks good
m: start { sleep 2; exit }; react whenever IO::Socket::Async.listen: "localhost", 2¹⁸-1 { done }
camelia An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
Failed to resolve host name 'localhost' with family 3. Error: 'ai_family not supported'
in block <unit> at <tmp> line 1
Zoffix family 3? Huh?
m: start { sleep 2; exit }; react whenever IO::Socket::Async.listen: "localhost", 2⁶³-1 { done }
camelia An operation first awaited:
in block <unit> at <tmp> line 1

Died with the exception:
Failed to resolve host name 'localhost' with family 65535. Error: 'ai_family not supported'
in block <unit> at <tmp> line 1
timotimo that's about ipv4, ipx, ipv6, etc
Zoffix family 65535? lol.
timotimo addres family
Zoffix timotimo: yeah, but I'm not changing family. I'm changing port. 17:59
timotimo oh, that's weird
jnthn I believe the port is bitwise or'd with the shifted family to pass it down to the VM 18:00
So if the port number isn't being validated before that happens, those bits will be treated as the family
Zoffix Ah 18:01
R#2423 18:02
synopsebot R#2423 [open]: github.com/rakudo/rakudo/issues/2423 [LTA] Bad error with too high port in IO::Socket::Async.listen
tbrowder___ Zoffix: ok, thnx for yr opinion, i'll chug on and tend to documenting to the code in the meantime 18:03
Zoffix tbrowder___: Just .dump the object. It'll show you what set of positional/named operations you need to perform on it to get to the part you want to reach 18:06
eco: CoreHackers::Q
buggable Zoffix, CoreHackers::Q 'Perl 6 QAST Visualizer': modules.perl6.org/dist/CoreHackers:...fix%20Znet
Zoffix tbrowder___: and that module can make it easier to navigate the dumps from --target=ast/optimize 18:07
Geth rakudo: 6b43a22cc4 | (Zoffix Znet)++ | t/05-messages/02-errors.t
Fix/Re-fudge sock error test on Windows

  - The test was overly complicated as the error already occurs
   just from the first listen
  - On Windows, however, this test just sits there forever,
   with no response inside the whenever
   R#2424 github.com/rakudo/rakudo/issues/2424
18:10
synopsebot R#2424 [open]: github.com/rakudo/rakudo/issues/2424 [Windows] High port in IO::Socket::Async.listen appears to hang on Win32
Zoffix AlexDaniel: ^ that fixes the AppVeyor issue. Not quite sure how it was passing in the past, considering it hangs on 2017.07 18:11
AlexDaniel hmmm
Zoffix Oh, it was todo-ed all along 18:13
And now passes on Linux
Geth rakudo: 532c12c95a | (Zoffix Znet)++ (committed using GitHub Web editor) | .travis.yml
Use verbose `make test` on travis

  "Failed test 42" is rarely useful, especially when you can't repro locally.
Verbose tests will give more info on how the failing test fails
18:18
18:19 MasterDuke left
Geth rakudo: 54483d1fdb | (Zoffix Znet)++ (committed using GitHub Web editor) | appveyor.yml
Use verbose `make test` on appveyor

  "Failed test 42" is rarely useful, especially when you can't repro locally.
Verbose tests will give more info on how the failing test fails
Not quite sure this syntax is right, but maybe it is.
18:20
18:21 cognominal-p6 left 18:36 donaldh joined 18:37 p6bannerbot sets mode: +v donaldh 18:43 commavir_ joined 18:44 p6bannerbot sets mode: +v commavir_ 18:46 dct joined, p6bannerbot sets mode: +v dct 18:48 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build errored. Zoffix Znet 'Use valid port number' 18:48
travis-ci.org/rakudo/rakudo/builds/445788309 github.com/rakudo/rakudo/compare/7...3dc0ab5203
18:48 travis-ci left
buggable [travis build above] ✓ All failures are due to: timeout (6 failures). 18:48
18:48 pmurias left, ufobat left, |Tux| left, b2gills left, commavir left, btyler_ left, pmurias joined, p6bannerbot sets mode: +v pmurias 18:50 |Tux| joined 18:51 p6bannerbot sets mode: +v |Tux|, btyler joined 18:52 b2gills joined, p6bannerbot sets mode: +v btyler, p6bannerbot sets mode: +v b2gills 18:54 ufobat joined 18:55 Zoffix left, p6bannerbot sets mode: +v ufobat 19:02 fake_space_whale left 19:03 brrt joined, p6bannerbot sets mode: +v brrt 19:07 Kaiepi left 19:08 Kaiepi joined 19:09 p6bannerbot sets mode: +v Kaiepi
Geth rakudo: 64693a213d | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals.pm6
Make internal encoding sanity lookup about 6x as fast
19:16
rakudo: lizmat self-assigned Cannot decode a buffer of bytes if it was produced by utf8 encode github.com/rakudo/rakudo/issues/2421
078b05f646 | (Elizabeth Mattijsen)++ | src/core/Buf.pm6
19:18
19:23 dct left 19:29 AlexDaniel left 19:30 AlexDaniel joined, p6bannerbot sets mode: +v AlexDaniel 19:31 pmurias left 19:37 pmurias joined, p6bannerbot sets mode: +v pmurias
19:48 pmurias left 19:50 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6 19:53 pmurias joined, p6bannerbot sets mode: +v pmurias 20:20 dct joined, p6bannerbot sets mode: +v dct 20:23 cognominal-p6 left 20:24 cognominal-p6 joined, p6bannerbot sets mode: +v cognominal-p6
Geth rakudo: 790d4c7ae2 | (Elizabeth Mattijsen)++ | src/core/Buf.pm6
Remove check on encoding type when decoding utfX

  - basically, let the Blob.decode do the work
  - which, incidentally, adds :replacement and :strict optional nameds
  - in response to R#2421
  - makes the core setting about 3K smaller
  - no spectests were hurt during this operation
20:28
synopsebot R#2421 [open]: github.com/rakudo/rakudo/issues/2421 [LTA][RFC] Cannot decode a buffer of bytes if it was produced by utf8 encode
20:30 brrt left
Geth rakudo: lizmat self-unassigned Cannot decode a buffer of bytes if it was produced by utf8 encode github.com/rakudo/rakudo/issues/2421
5f3da88c65 | (Zoffix Znet)++ | 2 files
20:37
20:43 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Zoffix Znet 'Use verbose `make test` on appveyor 20:43
travis-ci.org/rakudo/rakudo/builds/445810085 github.com/rakudo/rakudo/compare/5...483d1fdb60
20:43 travis-ci left
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 20:43
20:47 dct left 20:55 leont joined 20:56 p6bannerbot sets mode: +v leont 21:04 cognominal-p6 left 21:05 cognominal-p6 joined 21:06 p6bannerbot sets mode: +v cognominal-p6 21:13 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build failed. Elizabeth Mattijsen 'Remove check on encoding type when decoding utfX 21:13
travis-ci.org/rakudo/rakudo/builds/445868523 github.com/rakudo/rakudo/compare/0...0d4c7ae292
21:13 travis-ci left
buggable [travis build above] ☠ Did not recognize some failures. Check results manually. 21:13
lizmat The command "make install" exited with 0. 21:14
Done. Your build exited with 1.
WAT?
21:17 tbrowder___ left 21:18 tbrowder___ joined, p6bannerbot sets mode: +v tbrowder___
21:30 pmurias left 21:32 pmurias joined, p6bannerbot sets mode: +v pmurias 22:01 ggoebel left 22:09 travis-ci joined, p6bannerbot sets mode: +v travis-ci
travis-ci Rakudo build passed. Zoffix Znet 'Do verbose test after finalizing install' 22:09
travis-ci.org/rakudo/rakudo/builds/445894647 github.com/rakudo/rakudo/compare/7...3da88c65c1
22:09 travis-ci left 22:46 dct joined, p6bannerbot sets mode: +v dct 23:16 dct left
Geth rakudo: c717b62be9 | (Zoffix Znet)++ | 2 files
Add missing verbose arg to prove
23:25
23:43 j3nnn1 left 23:54 leont left