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:20 lizmat left 00:24 MasterDuke left 00:35 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke, MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke
Geth rakudo: tbrowder++ created pull request #2277:
Partially implement Pod '#' alias for %config :numbered
00:41
01:33 ilogger2 joined, p6bannerbot sets mode: +v ilogger2
Geth roast: tbrowder++ created pull request #472:
add tests for pod :numbered alias
01:39
roast: bd4f14ab4f | (Tom Browder)++ (committed using GitHub Web editor) | S26-documentation/15-numbered-alias.t
add tests for pod :numbered alias (#472)
01:40
02:05 kysse13 joined 02:08 kysse13 left 02:44 mhall119 joined 02:46 mhall119 left 03:05 epony joined, p6bannerbot sets mode: +v epony 03:32 ggoebel joined, p6bannerbot sets mode: +v ggoebel 05:32 Ingersol1 joined 05:38 Ingersol1 left 06:13 jindraj8 joined 06:18 jindraj8 left 07:23 Dazzozo25 joined 07:28 Dazzozo25 left
Geth nqp: d46ad39b5d | (Bart Wiegmans)++ | t/moar/12-decodelocaltime.t
[decodelocaltime] Make test less sensitivve to timezone

Silly me, thinking the unix epoch starts at 1970-01-01 00:00:00, forgetting about timezones :-)
07:49
07:54 lizmat joined 07:55 p6bannerbot sets mode: +v lizmat
lizmat Files=1251, Tests=76126, 339 wallclock secs (15.90 usr 5.30 sys + 2388.59 cusr 222.85 csys = 2632.64 CPU) 07:56
08:00 Inv1s1ble joined 08:05 Inv1s1ble left
lizmat Q: is there a reason why the multi/onlyness of an implemented method in a role must match an implementation of a method in a consuming class ? 08:52
Geth rakudo: f1f6825b9c | (Elizabeth Mattijsen)++ | 2 files
Fix native array generator script for p6bool -> hllbool

Apparently the generated code was changed, but not the generator :-(
09:01
09:31 theraspberry24 joined, theraspberry24 left 09:51 gamingrobot18 joined 09:56 gamingrobot18 left
Geth rakudo: ed9b48de6a | (Elizabeth Mattijsen)++ | 7 files
Standardize use of proto's on .STORE methods

This should make sure there is no inter-class leakage of .STORE candidates. And perhaps this opens up a way to allow for a default implementation of
  .STORE in the Positional / Associative roles.
10:04
10:15 patrickz joined, p6bannerbot sets mode: +v patrickz
patrickz Hi everyone! 10:25
10:27 lizmat_ joined
patrickz Perl6 is currently not relocatable. I'd like to change that. 10:27
10:27 p6bannerbot sets mode: +v lizmat_
patrickz I guess I'll try to get it to work on moarvm on linux and only afterwards tackle other combinations. 10:28
As I'm quite new to the code base I'll probably need some help.
10:29 lizmat left
patrickz I have already looked around a bit and managed to compile a MoarVM that works in a non install path and yet a different CWD (it starts and displays the help). 10:32
NQP and Rakudo are trickier because they currently have the installation path hard coded. Setting it to a relative path helps, but then it's dependant on the CWD. 10:36
What's needed is some logic to retrieve the installation location a runtime. 10:40
timotimo mhh, people will be quite happy to have that feature :)
patrickz I'm one of them. That is currently blocking me from using P6 at work... 10:41
timotimo how often do you have to move the perl6 install around? :) 10:42
patrickz It's not about moving, but about deploying. 10:43
timotimo OK
lizmat_ ++patrickz
10:43 lizmat_ is now known as lizmat
patrickz When perl6 is relocatable I can put my program next to it, zip it up and send it to my colleagues. 10:43
The most naive way I can think of is setting config<prefix> and config<libdir> early on during rakudo startup to an absolute path. 10:46
timotimo i wonder when we'll find something that'll let us throw out old precompilation results
patrickz prefix is the install path and libdir the Perl6 internal library path.
timotimo 759M../install/share/perl6 10:48
lizmat 1.2G for me :-)
guess I do many more core setting compilations / spectests 10:49
timotimo i don't think they put very much in there actually?
like, the core setting file will be overwritten each time?
lizmat not sure: du -shc install/share/perl6/precomp/ # 1.0G 10:50
timotimo what do we have to introspect the precomp file? 10:51
folder*
lizmat nothing, afaik :-(
patrickz Is QASTOperationsMAST a simple mapping of NQP Ops to MoarVM opcodes? 10:54
timotimo it's relatively simple, but there's a few complex bits in there, too 10:55
patrickz nqp/src/vm/moar/QAST/QASTOperationsMAST.nqp that is...
lizmat FSVO simple
timotimo some ops are implemented as a little sub that emits MAST "manually", or via a different QAST tree 10:56
patrickz But that's the basic idea? (I'm totally new to the rakudo/nqp/moarvm codebases, trying to get the big picture atm)
timotimo yep, that's the idea
robertle lizmat, timotimo: aren't all precomp files organized in folders where the folder name is a hash of the compiler id? so you could just throw away all such folders that do not match the current compiler, no? 10:59
timotimo i'm grepping all the precomp files for strings and i'm seeing a whole lot of anon classes named like "<anon|114083744>" 11:00
i think the more anon classes we move out and give proper, shorter names, the more string memory we save
though of course the effect is tiny
robertle: i thought the compiler id is just a part of the hash input
cat wants cuddles on the couch, bbl
lizmat robertle: yes, and since just about everything is automatically rebuilt, I sometimes just nuke the precomp directories on my machinne
robertle not sure, but my investigations a while ago: wiki.debian.org/Perl6PreCompProposal if this is true, it should be simple to write something that removes all the dirs for not-current compilers 11:02
afk
AlexDaniel dogbert2: can you confirm that it builds properly now? 11:04
patrickz: but what's the current situation? 11:06
is moarvm relocatable?
patrickz In mainline neither moarvm nor rakudo are relocatable.
AlexDaniel do we even have a ticket for that?
it's a very well known problem, but still, it needs a ticket if there's none
patrickz I don't know. Lets see... 11:07
timotimo it might be necessary for someone who knows more about OS internals than me to check whether nuking precomp files while a moarvm process is running somewhere will cause problems 11:21
i've seen segfaults under those circumstances
patrickz AlexDaniel: RT#122752 is related. I didn't find any other ticket. 11:24
synopsebot RT#122752 [new]: rt.perl.org/Ticket/Display.html?id=122752 [STAR] [BUILD] Allow different INSTALLLOCATION for Rakudo Star MSI package
AlexDaniel create some then
patrickz That's a task that requires changes in moarvm and rakudo. Should I create two tickets then? 11:26
lizmat patrickz: can any change be done to moarvm without needing an immediate change to nqp / rakudo 11:37
patrickz I think so, yes. 11:38
lizmat then I would say different tickets :-)
patrickz I would actually try to do it that way. Work my way up.
lizmat patrickz++ # sounds like a plan 11:39
patrickz Tickets are created. 11:44
AlexDaniel patrickz++ that's a good start :) 11:46
nine On Linux at least, deleting precomp files shouldn't cause an issue even if they are in use by moar. The files are kept open and Linux will only really delete them when the last user closes them. 12:16
timotimo that's what i thought, too. 12:17
nine While the compiler id is part of what goes into a precomp files's hash, they are also stored in directories named after the compiler id.
timotimo at the time i thought it was because rewriting the files was causing the file to be truncated and rewritten
but the fix i put in didn't actually seem to fix that, i later discovered ... iirc
nine Yes, modifying the files in place would cause interesting issues for sure :)
timotimo isn't there an argument to mmap that'll COW the file contents? 12:18
but still share it between different processes?
nine MAP_PRIVATE Create a private copy-on-write mapping. Updates to the mapping are not visible to other processes mapping the same file, and are not carried through to the underlying file. It is unspecified whether changes made to the file after the mmap() call are visible in the mapped region. 12:19
timotimo that still means that potentially if the file on the filesystem changes the process might explode? 12:20
nine looks like 12:21
timotimo stumbles upon style="width: 0.1% white-space: nowrap;" 12:23
tbrowder__ hi folks 12:37
i’ve tried to change two quantifier constructs in src/Perl6/Grammar.nqp to a simple ‘?’ and am getting a build failure. 12:39
i changed the one instance of “**1” to “?” and 15 instances of “**0..1” to “?”. 12:40
akaik, those changes should not have caused a problem, but i have also seen that seemingly simple nqp changes can cause some strange results in faraway places. does anyone see an error in the changes i made? 12:44
timotimo well
going from **0..1 to ? will change what type you get
**0..1 will always give you a list, ? will never give you a list 12:45
so you'll definitely have to change the usages, too
FWIW, the performance for ? might be a tiny bit better compared to **0..1
just the tinyest bit. i haven't measured it at all. 12:46
tbrowder__ ah, ok, i thought about that at first because some just looked like a list, but thanks for that info. i’m not sure i’ve seen stated before. 12:55
that may be the key to something else i’ve been trying to do.
timotimo: thanks! 12:56
i think i’ll leave all as is, but maybe leave a note... 12:58
timotimo maybe we can have a look at the most used regexes from the perl6 grammar and replace **0..1 with ? (including the necessary changes to Actions.nqp) and see if that makes a noticable change in core setting compilation memory use 13:00
it's used in quite a few places it seems like 13:01
if i'm not mistaken, having no entry there will always cost us an empty list that has to be allocated and will stick around a long time
tbrowder__ i would love to see you do that, i think that’s beyond my skill level now 13:02
timotimo i don't know the exact changes for [ ]**0..1 actually 13:04
m: "abc" ~~ / [ <ident> ]**0..1 /; say $/.perl
camelia Match.new(orig => "abc", hash => Map.new((:ident([Match.new(made => Any, from => 0, list => (), orig => "abc", hash => Map.new(()), pos => 3)]))), pos => 3, made => Any, from => 0, list => ())
timotimo m: "abc" ~~ / [ <ident> ]? /; say $/.perl
camelia Match.new(pos => 3, hash => Map.new((:ident(Match.new(pos => 3, hash => Map.new(()), made => Any, list => (), orig => "abc", from => 0)))), made => Any, list => (), orig => "abc", from => 0)
timotimo OK
so in [ ]**0..1 we will actually get lists for the named captures inside 13:05
tbrowder__ try the **1 construct 13:06
timotimo m: "abc" ~~ / [ <ident> ]**1 /; say $/.perl
camelia Match.new(list => (), hash => Map.new((:ident([Match.new(list => (), hash => Map.new(()), orig => "abc", pos => 3, made => Any, from => 0)]))), made => Any, from => 0, pos => 3, orig => "abc")
timotimo m: "abc" ~~ / [ <ident> ] /; say $/.perl
camelia Match.new(orig => "abc", made => Any, pos => 3, hash => Map.new((:ident(Match.new(hash => Map.new(()), pos => 3, list => (), from => 0, orig => "abc", made => Any)))), list => (), from => 0)
timotimo same thing i guess?
i only see a single **1 in the Grammar 13:07
tbrowder__ that was my guess, docs say **1 is short for **0..1
yes, just one is all i’ve found, 15 of the others 13:08
timotimo what? 13:10
that seems strange
m: say "" ~~ / a ** 1 /
camelia Nil
timotimo ** 1 must be short for ** 1..1
tbrowder__ i may have misread, but i’ll recheck 13:11
timotimo if you read right we should fix that
tbrowder__ but ^^ makes more sense 13:12
in fact, that was my first thougt becaause i alway think of exponentiation with any ** 13:13
m: say “‘ ~~ / a **0..1 / 13:15
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse expression in curly double quotes; couldn't find final '”' (corresponding starter was at line 1)
at <tmp>:1
------> 3say “‘ ~~ / a **0..1 /7⏏5<EOL>
expecting any of…
tbrowder__ m: say “” ~~ / a **0..1 / 13:16
camelia 「」
13:17 ZzZombo_ joined, p6bannerbot sets mode: +v ZzZombo_
tbrowder__ m: say “aaa” ~~ / a ** 1 / 13:17
camelia 「a」
tbrowder__ m: say “aaa” ~~ / a **0..1 / 13:18
camelia 「a」
tbrowder__ looks the same?
13:19 ZzZombo_ is now known as ZzZombo
tbrowder__ m: say “aaa” ~~ /a **0..3/ 13:22
camelia 「aaa」
tbrowder__ m: say “aaa” ~~ /a**2/ 13:23
camelia 「aa」
tbrowder__ m: say “aaa” ~~ /a**0..2/ 13:24
camelia 「aa」
tbrowder__ m: say “aaa” ~~ /[a]**1/; say $/.dump 13:26
camelia 「a」
tbrowder__ m: say “aaa” ~~ /[a]**0..2/; say $/.dump 13:28
camelia 「aa」
tbrowder__ m: say “aaa” ~~ /[a]**0..2/;say $/.perl 13:30
camelia 「aa」
Match.new(orig => "aaa", pos => 2, made => Any, from => 0, list => (), hash => Map.new(()))
13:47 walterve22 joined 13:49 walterve22 left
Geth roast: 92286fae07 | (Zoffix Znet)++ | S11-modules/require.t
[v6.d REVIEW] Actually test constant has good value

Orig: github.com/perl6/roast/commit/6aa2290b4
13:52
13:55 patrickz left 13:57 savoca14 joined
Geth roast: 322694eb2e | (Zoffix Znet)++ | S32-io/io-special.t
[v6.d REVIEW] Be explicit about IO::Special.Str/.what values

Otherwise they might contain garbage and test would still pass, the way it's written.
Orig: github.com/perl6/roast/commit/43ec5437d
14:00
14:01 savoca14 left
Geth roast: 02ab716ce1 | (Zoffix Znet)++ | S32-io/io-spec-unix.t
[v6.d REVIEW] Expand IO::Spec::Unix.basename

Include a test with backslash, which isn't a path separator on *nix
14:05
roast: c91244ef1a | (Zoffix Znet)++ | S32-io/io-spec-win.t
[v6.dt REVIEW] Expan IO::Spec::Win32.basename

Include test with backslash in path, which is a path sep on Win32
Orig: github.com/perl6/roast/commit/c3c51ede0
14:07
roast: cf255ba920 | (Zoffix Znet)++ | S32-io/null-char.t
[v6.d REVIEW] Add &open to list of NUL test subs

Orig: github.com/perl6/roast/commit/b16fbd3b2
14:11
roast: c3b40394b8 | (Zoffix Znet)++ | S02-types/native.t
[v6.d REVIEW] Move int test to runtime

To avoid any future optimizations making this code die prematurely
Orig: github.com/perl6/roast/commit/a8a968499
14:15
jnthn Ahh...home at last. :) 14:19
AlexDaniel samcv: hello, how is it going?
btw, we saw no toaster results so far. I'll see if I can get new toaster going today, if not then probably will run the old one 14:20
14:25 ZzZombo left 14:26 ZzZombo joined, p6bannerbot sets mode: +v ZzZombo
samcv AlexDaniel: heyo 14:36
14:56 tinoco15 joined 15:00 tinoco15 left 15:38 lizmat left
Geth roast: 9f50f42d11 | (Zoffix Znet)++ | S32-io/io-path.t
[v6.d REVIEW] Remove fudged .child-secure

We're not doing this stuff in 6.d, and I'm increasingly leaning towards never doing it and instead securize .open
Orig: github.com/perl6/roast/commit/f3c5dae28
15:57
roast: 0766c4617a | (Zoffix Znet)++ | fudge
Teach fudger new Test::Util routines
15:59
roast: 4124c1b592 | (Zoffix Znet)++ | S12-introspection/attributes.t
[v6.d REVIEW] Test actual value instead of .gist of Attr shape

Orig: github.com/perl6/roast/commit/0b199e1a4
16:03
16:03 DyDyMan12 joined
Geth roast: 3b5fad4897 | (Zoffix Znet)++ | S32-io/dir.t
[v6.d REVIEW] Use is-path helper for $*CWD tests

Orig: github.com/perl6/roast/commit/41b7f9f6a
16:04
16:07 DyDyMan12 left
Geth roast: 32c3c97c4e | (Zoffix Znet)++ | 2 files
[v6.d REVIEW] Appendicise .match: Nil test

Orig: github.com/perl6/roast/commit/0a67c4316
16:07
roast: dcadfbcec9 | (Zoffix Znet)++ | S16-io/words.t
[v6.d REVIEW] More precise test for words()

Orig: github.com/perl6/roast/commit/8f78ca604
16:08
roast: c327c01e0d | (Zoffix Znet)++ | S02-literals/radix.t
[v6.d REVIEW] Remove references to particular impls

Orig: github.com/perl6/roast/commit/ea1aa6721
16:11
16:12 semarie14 joined 16:15 semarie14 left
Geth roast: 8858608e2a | (Zoffix Znet)++ | S16-io/home.t
[v6.d REVIEW] Polish $*HOME tests

  - Don't rely on $*TMPDIR
  - Use is-path for path testing
Orig: github.com/perl6/roast/commit/71a6423a9
16:38
[Tux] Rakudo version 2018.08-105-ged9b48de6 - MoarVM version 2018.08-79-gda2072b57
csv-ip5xs0.884 - 0.901
csv-ip5xs-207.235 - 7.361
csv-parser23.919 - 24.861
csv-test-xs-200.425 - 0.432
test8.947 - 8.956
test-t2.089 - 2.124
test-t --race0.923 - 0.925
test-t-2035.828 - 36.839
test-t-20 --race12.029 - 12.087
16:45
Geth roast: ba05946b54 | (Zoffix Znet)++ | S03-operators/andthen.t
[v6.d REVIEW] Clarify andthen test desc

Not all impls might use `andthen` to handle `with`
Orig: github.com/perl6/roast/commit/e036c4e28
16:46
roast: 341d655725 | (Zoffix Znet)++ | S03-operators/notandthen.t
[v6.d REVIEW] Clarify desc of notandthen test

Not all impls might use notandthen to handle `without`
Orig: github.com/perl6/roast/commit/50b54916d
16:47
roast: c2e247d880 | (Zoffix Znet)++ | S32-io/io-path.t
[v6.d REVIEW] Use is-path routine for IO::Path.perl.EVAL test

Orig: github.com/perl6/roast/commit/1ed18b431
16:54
roast: a3181cfa7b | (Zoffix Znet)++ | S02-types/sethash.t
[v6.d REVIEW] Fix bad Set key container test

Original test doesn't actually cover the bug in the ticket
Orig: github.com/perl6/roast/commit/0e018d48b
17:08
roast: bf3a2159bb | (Zoffix Znet)++ | S02-types/sethash.t
[v6.d REVIEW] Cover Bag|Mix in cont key test too

Orig: github.com/perl6/roast/commit/0e018d48b
17:10
17:18 Fumler joined 17:24 Fumler left
TimToady m: say “a” ~~ /(b)? a/; say $0 17:37
yoleaux 13 Sep 2018 18:36Z <Zoffix> TimToady: there's an Issue revolving around something you said about `returns`, if you wanted to comment: github.com/rakudo/rakudo/issues/2274 R#2274
camelia 「a」
Nil
synopsebot R#2274 [closed]: github.com/rakudo/rakudo/issues/2274 Future removal of returns?
TimToady m: say “a” ~~ /(b) ** 0..1 a/; say $0
camelia 「a」
[]
TimToady tbrowder__: ^^^ here is the actual difference 17:38
that is, it doesn't make a difference when quantifying a mere string, only when capturing 17:41
m: say “ba” ~~ /(b) a/; say $0 17:43
camelia 「ba」
0 => 「b」
「b」
TimToady m: say “ba” ~~ /(b) ** 1 a/; say $0
camelia 「ba」
0 => 「b」
[「b」]
TimToady basically quantified captures always produce lists of captures 17:44
so we use ** when we plan to feed the result to a "for", whereas ? is more for intended for "if" or "with" processing, hence a scalar the defined match or Nil is more appropriate 17:47
hmm, that's almost English...
...a scalar thing, the defined match or Nil, is... 17:49
as for why it uses ** 0..1 in the grammar, ? used to return a list, so that was a quick hack to continue to feed the results to action routines that expected a list 17:53
as you discovered :)
tbrowder__ Thanks! 18:05
18:45 kilogram joined, ohama17 joined 18:47 lizmat joined 18:48 kilogram left, p6bannerbot sets mode: +v lizmat 18:51 ohama17 left
lizmat sometimes I feel our methods in Positional / Associative miss a CLEAR method to reset the whole thing 19:21
timotimo like binding a new nqp::list or nqp::hash to the storage attribute? 19:28
lizmat yeah 19:32
I'm now working on an Array::Agnostic role that will do all the stuff that Arrays do
but without needIng to know how the representation is 19:33
if I want to do something like .STORE, then I need to do repeated DELETE-POS's from the end back
samcv b2gills: i'm working on a streaming utf16 decoder fyi 19:36
b2gills \O/ 20:05
samcv yay it works 20:10
b2gills 「\O/」 xx 16 20:11
samcv b2gills: would you mind testing it? 20:12
b2gills I was just reporting something I found while responding on the users mailing list
samcv ah ok
i thought it was you who needed it
b2gills I put utf16 data into a file and used `run <cat test.in>, :out, :enc<utf16>` 20:13
The other people were saying to remove the nulls after decoding which is a good way to end up with mojibake 20:15
samcv b2gills: is there an online place i can read the mailing list? also just pushed the utf16 decodestream code 20:29
i think i might bump nqp later 20:30
so now we'll be able to do decodestream, so .lines and others, plus i fixed the issue of writing a 16 bit buffer 20:31
b2gills www.nntp.perl.org/group/perl.perl6...g5551.html
samcv though i'm guessing utf16 at least worked some amount?
b2gills Str.decode and Str.encode 20:32
samcv i never tested: open 'foo', :w, :enc<utf16>; $fh.print('blah')
^or did this not work due to unimplemented functionality i fixed yesterday?
b2gills All I was did was test `run(<cat test.in>, :out, :enc<utf16>).out.lines` 20:33
I put the data into test.in using echo on the command line
samcv m: my $fh = open 'test', :w, :enc<utf16>; $fh.print('testing')
camelia open is disallowed in restricted setting
in sub restricted at src/RESTRICTED.setting line 1
in sub open at src/RESTRICTED.setting line 9
in block <unit> at <tmp> line 1
samcv let me roll back my moarvm and test all these so i know where we were at before 20:34
timotimo evalable6: my $fh = open 'test', :w, :enc<utf16>; $fh.print('testing')
evalable6 (exit code 1) Too many positionals passed; expected 1 argument but got 2
in block <unit> at /tmp/74S6p5EZlH line 1
samcv ok. .print did not work at all.
timotimo evalable6: my $fh = open 'test', :w, :enc<utf16>; say $fh.perl
evalable6 Failure.new(exception => X::AdHoc.new(payload => "Failed to open file /home/bisectable/git/whateverable/test: Read-only file system"), backtrace => Backtrace.new)
samcv ok well that's good that our utf16 enncoding is now functional 20:35
timotimo evalable6: my $fh = open '/tmp/test', :w, :enc<utf16>; $fh.print('testing')
evalable6 (exit code 1) write_fhb requires a native array of uint8 or int8
in block <unit> at /tmp/0j1rpfRQtc line 1
samcv goes to bump nqp and rakudo
Geth nqp: cb3d9562e2 | (Samantha McVey)++ | tools/build/MOAR_REVISION
Bump MoarVM to get utf16 fh write and decodestream support

Changes: 2018.08-70-g1d68871d0..2018.08-80-g578c2f762 578c2f762 Add support for utf-16 decodestream 3388d1229 Fix wrong field in exprjit cast and add macro 51f2db579 Add support in write_fhb op for writing 16 bit VM arrays 848f74e37 Add exprjit macros for register type constants 18cb687c4 Add ^zero/^one exprjit macros for 0 and 1 integers 2025a47da Use SIZEOF_MEMBER instead of literal in exprjit 7567696e2 Pass MVMRegister to lexical-binding fn for exprjit ccf3dd373 Fix alignment of nursery allocations
20:36
¦ nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...g578c2f762
samcv tbh i assumed we had working utf16, otherwise i would have fixed this earlier :P but i never tested it
well we had encode and decode support, but never tested the other ones. so glad you brought that to my attention b2gills++ 20:37
b2gills I assume it was just overlooked when the streaming API was added
Geth rakudo: 8fcebb8615 | (Samantha McVey)++ | tools/build/NQP_REVISION
Bump Moar/NQP to get utf16 decodestream and fh write support

Changes: 2018.08-52-g000fea1..2018.08-63-gcb3d9562e cb3d9562e Bump MoarVM to get utf16 fh write and decodestream support d46ad39b5 [decodelocaltime] Make test less sensitivve to timezone a7351c4a0 put the name of the SC in every type's extra info 88e732216 bump moarvm to get new profiler data structure ... (6 more lines)
20:38
¦ rakudo: version bump brought these changes: github.com/perl6/nqp/compare/2018....gcb3d9562e
roast: aaa23d062e | (Zoffix Znet)++ | S32-array/pop.t
Remove trailing whitespace
20:48
roast: 5eba41d42f | (Zoffix Znet)++ | S32-array/pop.t
[v6.d REVIEW] Reformat ghost el tests + add plan

Orig: github.com/perl6/roast/commit/2973f845c
20:49
roast: e5a48ebc39 | (Zoffix Znet)++ | S32-array/pop.t
[v6.d REVIEW] Cover :delete in ghost el test

Orig: github.com/perl6/roast/commit/2973f845c
samcv b2gills: would you mind responding and say utf16 has been added to the latest master? 20:50
since i'm not on the mailing list
b2gills I did 20:51
samcv ok cool :)
Geth roast: 589f65b788 | (Zoffix Znet)++ | S32-io/io-handle.t
[v6.d REVIEW] Toss IO::Handle.new.encoding test

There are several indications[^1][^2][^3] that we might want to remove .new in the future entirely or at least not set up the encoding until the open call, and this test would interfere with that.
  [1] colabti.org/irclogger/irclogger_log...07-11#l201
  [2] github.com/rakudo/rakudo/issues/2039 R#2039
  [3] github.com/rakudo/rakudo/issues/2049 R#2049
  [4] github.com/rakudo/rakudo/issues/2050 R#2050
21:02
synopsebot R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup
synopsebot R#2049 [open]: github.com/rakudo/rakudo/issues/2049 [IO] IO::CatHandle.encoding mismatched with IO::Handle.encoding
synopsebot R#2050 [open]: github.com/rakudo/rakudo/issues/2050 [IO] IO::[Cat]Handle.open missing some encoding options
21:05 oldlaptop22 joined, oldlaptop22 left 21:12 PufferBot joined 21:13 p6bannerbot sets mode: +v PufferBot
Geth roast: e730fb0781 | (Zoffix Znet)++ | S32-io/io-handle.t
[v6.d REVIEW] Fix IO::Handle.flush test

We make the first write unbuffered to test if we can write to a handle at all, so to trigger buffering we have to perform two separate writes and only the second one will buffer.
Orig: github.com/perl6/roast/commit/449561528
21:50
roast: 4c89683050 | (Zoffix Znet)++ | S32-io/io-spec-win.t
[v6.d REVIEW] Loosen IO::Path::Win32.absolute test

Do not force implementations to use the same path separator that was used during path's creation. Simply test the combiners on existing seps don't cause addition of another sep before it.
Orig: github.com/perl6/roast/commit/8ee0a0a6a
21:57
roast: 1f26d0b796 | (Zoffix Znet)++ | S32-io/io-handle.t
[v6.d REVIEW] Toss .nl-in on unopened handle tests

There are several indications[^1][^2][^3] that we might want to restrict functionalities of unopened handles. Remove these proptests to ensure they don't interfere with that plan in the future
  [1] colabti.org/irclogger/irclogger_log...07-11#l201
  [2] github.com/rakudo/rakudo/issues/2039 R#2039
  [3] github.com/rakudo/rakudo/issues/2049 R#2049
  [4] github.com/rakudo/rakudo/issues/2050 R#2050
22:01
synopsebot R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup
synopsebot R#2049 [open]: github.com/rakudo/rakudo/issues/2049 [IO] IO::CatHandle.encoding mismatched with IO::Handle.encoding
synopsebot R#2050 [open]: github.com/rakudo/rakudo/issues/2050 [IO] IO::[Cat]Handle.open missing some encoding options
roast: 92be0841ac | (Zoffix Znet)++ | S32-io/open.t
[v6.d REVIEW] Remove 6.d TODO comment for .encoding

Yes, it's inconsistent, but likely in a fairly heavy use and we have a million other inconsistent things too, so we'll delay doing anything breaking about this until the Great Inconsistencies Refactor some time in the future
22:18
roast: ebcf115187 | (Zoffix Znet)++ | S32-io/io-handle.t
[v6.d REVIEW] Toss unopened handle .encoding tests

There are several indications[^1][^2][^3] that we might want to restrict functionalities of unopened handles. Remove these proptests to ensure they don't interfere with that plan in the future
  [1] colabti.org/irclogger/irclogger_log...07-11#l201
  [2] github.com/rakudo/rakudo/issues/2039 R#2039
  [3] github.com/rakudo/rakudo/issues/2049 R#2049
  [4] github.com/rakudo/rakudo/issues/2050 R#2050
22:21
synopsebot R#2039 [open]: github.com/rakudo/rakudo/issues/2039 [IO][LTA] LTA IO::Handle.encoding can have a value, but no valid decoder is setup
synopsebot R#2049 [open]: github.com/rakudo/rakudo/issues/2049 [IO] IO::CatHandle.encoding mismatched with IO::Handle.encoding
synopsebot R#2050 [open]: github.com/rakudo/rakudo/issues/2050 [IO] IO::[Cat]Handle.open missing some encoding options
roast: 40adba0df9 | (Zoffix Znet)++ | S32-io/io-path.t
[v6.d REVIEW] Don't lock path sep for Win32 .parts

Permit either \ or / sep used
Orig: github.com/perl6/roast/commit/fb61306aa
22:26
AlexDaniel what is Zef actually doing when it says 22:32
===> Searching for: CSS::Grammar
in others words, why does it take so long? 22:33
Geth roast: 205aa81d1c | (Zoffix Znet)++ | S32-io/io-spec-unix.t
[v6.d REVIEW] use more precise test for .path

Orig: github.com/perl6/roast/commit/726652269
22:42
roast: 84da99b988 | (Zoffix Znet)++ | S32-io/io-spec-unix.t
Fudge .path test as it gives improper empty Seq

R#2281 github.com/rakudo/rakudo/issues/2281
22:43
synopsebot R#2281 [open]: github.com/rakudo/rakudo/issues/2281 [6.d review] Problems with `EmptySeq`
Geth roast: f1839e7831 | (Zoffix Znet)++ | S32-io/io-spec-unix.t
Revert "Fudge .path test as it gives improper empty Seq"

This reverts commit 84da99b98819dc2e5e742486cd33862503ae0bcf.
Invalid fudge
22:45
roast: d0f6ba70dc | (Zoffix Znet)++ | S32-io/io-spec-unix.t
Fudge .path test as it gives improper empty Seq

R#2281 github.com/rakudo/rakudo/issues/2281
synopsebot R#2281 [open]: github.com/rakudo/rakudo/issues/2281 [6.d review] Problems with `EmptySeq`
Geth roast: 81382e15fd | (Zoffix Znet)++ | S32-io/io-spec-win.t
[v6.d REVIEW] Loosen IO::Spec::Win32.path tests

Allow either separator to be used in the result
Orig: github.com/perl6/roast/commit/6ac3b4aab
22:50
rakudo: b1a07f0935 | (Zoffix Znet)++ | t/02-rakudo/99-misc.t
[v6.d REVIEW] Move IO::Handle.perl.EVAL test to rakudo suite

Handles are a bit of a weird thing to roundtrip through eval and we don't keep the openness, file descriptor, nor file position, so it's possible in the future we'd die, similar to how (1...*).perl dies.
Orig: github.com/perl6/roast/commit/dbbea1572
23:12
roast: d65abd546e | (Zoffix Znet)++ | S32-io/io-handle.t
[v6.d REVIEW] Move IO::Handle.perl.EVAL test to rakudo suite

Handles are a bit of a weird thing to roundtrip through eval and we don't keep the openness, file descriptor, nor file position, so it's possible in the future we'd die, similar to how (1...*).perl dies.
Orig: github.com/perl6/roast/commit/dbbea1572 Moved to: github.com/rakudo/rakudo/commit/b1a07f0935
AlexDaniel --debug doesn't tell much 23:22
there's a delay before that step and after, without any output
s/after/during/ 23:24
23:30 Zoffix joined, p6bannerbot sets mode: +v Zoffix
Zoffix AlexDaniel: I'm 40% sure that it's reading its local database of things is what it's doing 23:31
and another 20% is it's parsing the p6c ecosystem JSON
actually swap that, 40% the eco JSON and 20% little database
AlexDaniel shouldn't be the JSON because it doesn't do that every time
timotimo AlexDaniel: you know, if you can step to the place you're interested in, and to after it, you can make a perf record
AlexDaniel at least it doesn't fetch it every time
Zoffix AlexDaniel: well, it caches it right? That's what zef update does; to update the things? 23:32
timotimo that'll show what C functions inside of moarvm are doing stuff
also, valgrind's callgrind can be started "inactive" and activated/deactivated at any point with callgrind_control
23:32 Zoffix left
AlexDaniel timotimo: I'm interested in a high level explanation 23:34
looked at the source, it's Zef::Repository doing *something*
timotimo so you were using the debugserver and stepping through?
hey, btw, can we have a bot where i can just say "hey give me a file of this name" and it'll just DWIM? 23:35
like, could i ask for Zef/Repository.pm6 and, like, it'll go to the right repo and make a link to github?
AlexDaniel can be done, yes
timotimo using perl6-all-repos (which is on the whateverable server already anyway, right?) and rakudo's and nqp's sources
and why not also moarvm's
AlexDaniel in fact I wanted to do something like this for a long time, at least for the commit shas and stuff
timotimo let's call it travelable 23:36
or locatable, or scryable
FWIW, it could also be merged into SourceBaby 23:37
just from what else it does
and the name
AlexDaniel timotimo: no I'm not using the debugserver, I was just wondering why this first seemingly trivial step takes 10 seconds which is like… half of the installation time (the rest being running tests and other reasonable stuff) 23:38
I was thinking maybe everyone else knows :)
timotimo ah
maybe strace can show something, though it's not very likely it's system time 23:39
AlexDaniel ugexe++ did add some parallelization recently: github.com/ugexe/zef/commit/b59692...e14c0c8720
I guess to resolve that exact issue
timotimo what command should i use to get the same "benchmark" you're getting? 23:40
AlexDaniel timotimo: time zef install JSON::Fast :)
timotimo my ram is, once again, almost filled to the brim :\ 23:41
AlexDaniel “Speeds up `zef update` from 4.3s to 7.8s ( and consequently anytime `zef install ...` runs an auto update )”
23:41 PufferBot left
timotimo All candidates are currently installed 23:41
AlexDaniel the numbers are other way round, but it makes sense
timotimo 5.25user 0.07system 0:04.48elapsed 118%CPU (0avgtext+0avgdata 133956maxresident)k
AlexDaniel timotimo: uninstall, then install again
timotimo ok 23:42
AlexDaniel you can use --dry so that it doesn't install every time
so it's doing something for cpan, and something for the github ecosystem
.race basically made it run stuff in two threads, so it halved the time 23:43
timotimo it could probably get the mirror updates in parallel, too
AlexDaniel but still, what is it doing
timotimo so we're interested in the time between start and "==> Searching for: JSON::Fast"? 23:44
or for the time after that?
AlexDaniel timotimo: between `Searching for` and the next step
timotimo: there's also a delay before it gets to that point, which also feels like it shouldn't be there 23:45
timotimo --debug only?
let me see if i can/should update zef 23:46
i seem to have 0.4.4
AlexDaniel if you want to see parallelization in action then yes, likely
you also need rakudo 2018.08 or later
timotimo i'm on HEAD, or something close by 23:47
AlexDaniel timotimo: fwiw it's already does fetching in parallel, or so it seems
timotimo it didn't in my ooooold version ;)
AlexDaniel time zef --dry --/test --/build install JSON::Fast 23:48
timotimo: ↑ try this
no tests, no building, no installing
essentially a noop
10 seconds on my machine
because it does “searching” 23:49
the reason I'm interested to see that get faster… is that if you have 1000 modules and you do nothing but that 23:50
m: say 1000 × 10 ÷ 60 ÷ 60
camelia 2.777778
AlexDaniel ↑ 2.7 hours?
timotimo whoops :) 23:51
AlexDaniel ok surely I'll run multiple processes so it'll faster, but still 23:52
timotimo oh, my moarvm is currently built without optimization, so it'll be a bit slower 23:53
trying to --profile it, it makes something related to nfas EXPLODE 23:54
MoarVM panic: Memory allocation failed; could not allocate 27021889821999112 bytes
turning spesh off makes it go away, brilliant 23:55
haha, i can't analyze the profile because i don't have JSON::Fast installed :D 23:57
AlexDaniel heh
can be any other module
Color is a good choice probably cuz no deps 23:58
timotimo sounds good
AlexDaniel it does test-depend on Test but IIRC zef should just ignore that
23:58 MasterDuke joined, p6bannerbot sets mode: +v MasterDuke
AlexDaniel also we're not testing… :) 23:59
23:59 MasterDuke left, MasterDuke joined, herbert.freenode.net sets mode: +v MasterDuke, p6bannerbot sets mode: +v MasterDuke