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:28 epony joined 00:33 epony left 00:39 epony joined 01:00 MasterDuke joined, MasterDuke left, MasterDuke joined
Kaiepi so i'm almost done implementing support for getting system free/total memory 01:49
i just have one question
since $*KERNEL.cpu-cores lets you lie about how many cores the system has, should %*KERNAL.total-mem allow that too? 01:50
ugexe it should just use whatever libuv implemented 01:59
uv_get_total_memory 02:01
this has the benefit of it being what is used in node, so it makes things consistent and simple to implement on that backend as well 02:03
so when implementing the nqp js op you would map it to github.com/nodejs/node/blob/6f924b...#L153-L158 02:05
Kaiepi the moar op is just uv_get_total_memory 02:09
i was just wondering since Kernel.cpu-cores has the is raw trait
ugexe is raw isn't is rw 02:11
m: $*KERNEL.cpu-cores = 420; 02:12
camelia Cannot modify an immutable Int (4)
in block <unit> at <tmp> line 1
Kaiepi oh 02:14
i thought it was the same as ro for methods? 02:15
i know it's different for attributes but i remember reading some comment mentioning that in the source code
er
not attributes
parameters
actually it'd make more sense to make Kernel.total-mem the same as Kernel.endian since neither change 02:20
ugexe you can probably wing a jvm PR even if you can't test it. i imagine it'll be similarly simple
Kaiepi the jvm version's also a one-liner
ditto the js version
haven't tested the jvm version yet though 02:21
ugexe fwiw i'd lean towards .total-memory than .total-mem 02:22
02:48 vrurg left
Kaiepi seems reasonable 02:54
ok the jvm's version of nqp::freemem and nqp::totalmem aren't going to be one liners since the original way i was doing it was returning memory available to the jvm, not system memory 03:01
thankfully there are multiple ways to do this 03:02
03:42 Kaiepi left 03:46 Kaiepi joined 03:58 Kaiepi left 04:04 Kaiepi joined 04:58 Kaiepi left 04:59 Kaiepi joined 05:11 Kaiepi left 05:12 skids left
bartolin I don't know if it has been reported, but the JVM build is currently broken / mostly broken. 'make' still works, but 'make install' fails. As far as I can see, the problem is a native array in Rakudo::Internals::JSON being created as VMArrayInstance instead of VMArrayInstance_s: github.com/rakudo/rakudo/blob/mast...ON.pm6#L72 05:14
Because of that precompilation is broken. There was a similiar problem with a native array in ThreadPoolScheduler earlier: github.com/rakudo/rakudo/issues/1666 05:15
05:17 Kaiepi joined
bartolin I have no idea, what causes this problem. It seems to be related to internal classes. I can use a native array in normal code ... 05:17
I'll try to debug this, but any pointer where to look would be very welcomed :) 05:22
05:23 Kaiepi left, Kaiepi joined
Kaiepi bartolin are you talking about the issue with building the jvm? 05:25
bartolin yes
colabti.org/irclogger/irclogger_lo...-06-07#l43 05:26
Kaiepi i tried changing @out to nqp::list_s and nqp::atposnd_s but it didn't work
bartolin for the problem with ThreadPoolScheduler (which looks simliar to me) I've added two hacks in order to work around it: github.com/rakudo/rakudo/commit/aaacc5a453 and github.com/perl6/nqp/commit/0736a0c405 05:29
Kaiepi moar's runner also has an issue if you pass NQP_HOME/PERL6_HOME but i'm fixing that in my freemem/totalmem pullreq 05:39
06:11 Kaiepi left 06:21 Kaiepi joined
Kaiepi m: role Foo { has Int $.foo; submethod BUILD(Int :$!foo) { } }; class Bar does Foo { submethod TWEAK(:$foo = 1) { $!foo := $foo; } }; my Bar $bar .= new; say $bar.foo 06:21
camelia Type check failed in binding; expected NQPMu but got Int (1)
in submethod TWEAK at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi bisectable: role Foo { has Int $.foo; submethod BUILD(Int :$!foo) { } }; class Bar does Foo { submethod TWEAK(:$foo = 1) { $!foo := $foo; } }; my Bar $bar .= new; say $bar.foo 06:31
bisectable6 Kaiepi, Bisecting by exit code (old=2015.12 new=89f8f60). Old exit code: 0
Kaiepi, bisect log: gist.github.com/d3c66fc298cb334ecc...7eb74802a7
Kaiepi, (2016-11-05) github.com/rakudo/rakudo/commit/94...79aae73698
Kaiepi looks like it never sets Foo!foo to 1... 06:35
bisectable: role Foo { has Int $.foo; submethod BUILD(Int :$foo) { $!foo = $foo; }; class Bar does Foo { submethod TWEAK(:$foo = 1) { $!foo := $foo; } }; my Bar $bar .= new; say $bar.foo 07:04
bisectable6 Kaiepi, On both starting points (old=2015.12 new=89f8f60) the exit code is 1 and the output is identical as well
Kaiepi, gist.github.com/1b8b1ea8c8bbb83676...fb0a5c7f1e
Kaiepi m: role Foo { has Int $.foo; submethod BUILD(Int :$foo) { $!foo = $foo; }; }; class Bar does Foo { submethod TWEAK(:$foo = 1) { $!foo := $foo; } }; my Bar $bar .= new; say $bar.foo
camelia Type check failed in binding; expected NQPMu but got Int (1)
in submethod TWEAK at <tmp> line 1
in block <unit> at <tmp> line 1
07:07 patrickb joined 07:58 Kaiepi left 08:01 Kaiepi joined 08:27 Kaiepi left 08:28 Kaiepi joined
Geth nqp/master: 4 commits pushed by (Paweł Murias)++ 08:57
lizmat hmmm... we could use something like this for Perl 6 :-) 09:24
www.perl.com/article/how-do-i-open-this-/
Kaiepi m: my $foo = $*KERNEL.cpu-cores(); $foo = 4; say $foo 09:41
camelia 4
Kaiepi m: my $foo = $*KERNEL.cpu-cores(); $foo = 69; say $foo
camelia 69
Kaiepi i was right, the is raw trait is just is rw for now 09:42
Geth rakudo: e22aeafb50 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/JSON.pm6
Hopefully fix "make install" on the JVM backend

For some reason, the JVM backend doesn't grok native str arrays in the setting. Spotted by bartolin++
09:48
10:16 Kaiepi left
Geth rakudo: Kaiepi++ created pull request #2958:
Fix another use after free in the moar runner
10:31
nqp: Kaiepi++ created pull request #553:
Implement freemem and totalmem ops
10:39
rakudo: Kaiepi++ created pull request #2959:
Implement support for Kernel.free-memory and Kernel.total-memory
10:40 Kaiepi joined 11:36 Kaiepi left 11:37 Kaiepi joined
lizmat m: "\xd83cdded" 11:38
camelia MoarVM oops: MVM_nfg_get_synthetic_info call requested a synthetic codepoint that does not exist.
Requested synthetic 667099667 when only 6 have been created.
at src/Perl6/World.nqp:2873 (/home/camelia/rakudo-m-inst-1/bin/../share/nqp/lib/Perlā€¦
11:45 Kaiepi left 11:50 ggoebel left 11:51 Kaiepi joined 11:59 Kaiepi left 12:00 Kaiepi joined
jnthn heh, bet that overflows and goes negative :) 12:10
12:30 epony left 12:37 Kaiepi left 12:38 Kaypie joined 12:39 Kaypie left 12:40 Kaypie joined 12:45 gfldex left 12:47 gfldex joined 13:03 vrurg joined
kawaii m: my %a = 1 => a; 13:31
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
a used at line 1
kawaii gah
quotes
13:43 AlexDaniel joined
lizmat Hmmm... maybe .subst should be a method on Match 13:54
so one could do:
when /foo bar/ { .subst( $replacement, :g } 13:55
and not have to do the initial match twice
and Str.subst would be a frontend to just this
timotimo m: $_ = "hello"; /ll/; say $/.prematch 13:56
camelia he
timotimo m: $_ = "hello"; /ll/; $/.prematch = "BLEEP"; say $_
camelia Cannot modify an immutable Str (he)
in block <unit> at <tmp> line 1
timotimo ^- could also be rw if we wanted it to
would be important for it to also move the match around, so that a second assignment to the .prematch (or .postmatch) won't b0rk hilariously 13:57
lizmat hmmm... are you seeing additional opts? or something that prevents this type of opt ? 13:58
timotimo hm?
lizmat m: say ":\x[300]oo" ~~ / :ignoremark <[ : a..b ]> / # I think this should work and show ļ½¢:Ģ€ļ½£ 14:21
camelia Nil
lizmat seems like a character range is interfering with the ignoremark
m: say ":\x[300]oo" ~~ / :ignoremark <[ : a. ]> / # without range 14:22
camelia ļ½¢:Ģ€ļ½£
lizmat m: say ":\x[300]oo" ~~ / :ignoremark <[ : a ]> / # without range
camelia ļ½¢:Ģ€ļ½£
lizmat m: say "a\x[300]" ~~ / :ignoremark <[ a b c ]> / # golfed, works 14:26
camelia ļ½¢Ć ļ½£
lizmat m: say "a\x[300]" ~~ / :ignoremark <[ a b..c ]> / # using range, doesn't 14:27
camelia Nil
14:29 epony joined
lizmat bisectable6: say "a\x[300]" ~~ / :ignoremark <[ a b..c ]> / 14:36
bisectable6 lizmat, On both starting points (old=2015.12 new=e22aeaf) the exit code is 0 and the output is identical as well
lizmat, Output on both points: Ā«Nilā¤Ā»
lizmat so, that one's been in there like forever :-(
bisectable6: say "a\x[300]" ~~ / :ignoremark <[ a b c ]> /
bisectable6 lizmat, On both starting points (old=2015.12 new=e22aeaf) the exit code is 0 and the output is identical as well 14:37
lizmat, Output on both points: Ā«ļ½¢Ć ļ½£ā¤Ā»
16:18 Kaypie is now known as Kaiepi 16:31 patrickb left
Kaiepi m: say do { POST my $a = 1 andthen my $b = 2 } 17:00
camelia Nil
Kaiepi m: say do { LEAVE my $a = 1 andthen my $b = 2 }
camelia Nil
Kaiepi m: say do { LEAVE my $a = 1 and my $b = 2 }
camelia Nil
Kaiepi m: say do { LEAVE my $a = 1 orelse my $b = 2 }
camelia Nil
Kaiepi m: say do { LEAVE my $a = 1 or my $b = 2 }
camelia Nil
Kaiepi m: my ($a, $b); do { LEAVE $a = 1 andthen $b = 2 } 17:01
camelia ( no output )
Kaiepi m: my ($a, $b); say do { LEAVE $a = 1 andthen $b = 2 }
camelia Nil
Kaiepi m: my ($a, $b); say do { POST $a = 1 andthen $b = 2 }
camelia Nil
Kaiepi m: my ($a, $b); say do { LEAVE $a = 1 and $b = 2 }
camelia Nil
Kaiepi m: my ($a, $b); say do { LEAVE $a = 1 orelse $b = 2 }
camelia Nil
17:29 robertle joined 17:31 patrickb joined
Kaiepi m: do { LEAVE return 1 } 17:41
camelia Attempt to return outside of any Routine
in block at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi m: do { { LEAVE return 1 } }
camelia Attempt to return outside of any Routine
in block at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi m: do { LEAVE return 1 } 17:42
camelia Attempt to return outside of any Routine
in block at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi m: do { LEAVE return 1 }
camelia Attempt to return outside of any Routine
in block at <tmp> line 1
in block <unit> at <tmp> line 1
Kaiepi weird
i had that crash on me
bartolin lizmat++ # fixing 'make install' and precompilation for the JVM backend 17:49
ugexe but she broke it in the first place! :P 17:53
lizmat
.oO( wouldn't be the first time :-)
moritz still deserves a lizmat++ for fixing it :D 18:09
ugexe lizmat++ for making JSON parsing faster is the correct answer
18:18 Kaiepi left, Kaiepi joined 18:24 MasterDuke left 18:29 MasterDuke joined, MasterDuke left, MasterDuke joined
Geth rakudo: ee2f2d2df5 | (Elizabeth Mattijsen)++ | src/core/Rakudo/Internals/JSON.pm6
Completely rethink R:I:JSON.str-escapes

  - makes to-json about 2x as fast for a stucture from a 5MB JSON
  - uses decomposed NFD instead of regular expressions
  - creates fast path for common ASCII characters
  - also optimize tear-off-combiners and to-surrogate-pair
  - also reduces core size by about 11MB
18:36
timotimo lizmat: core size by 11 MB? that sounds wrong
lizmat eh... indeed... :-) oops 18:37
11K
added a comment to the commit on Github
timotimo phew 18:38
but still, that's a great win
lizmat yes... from 6.8 seconds to 3.2 seconds for that 5MB JSON
so it's actually a bit more than 2x 18:39
timotimo: I guess you need to merge again :-) 18:40
s/again// 18:41
github.com/timo/json_fast/pull/58
timotimo merged it, will make a release soon 18:44
lizmat cool! 18:45
timotimo done 18:54
19:08 squashable6 left 19:11 squashable6 joined
japhb .ask nine Is there any chance of a python3-compatible Inline::Python this year? (Asking because of the global deprecation of python2 at EOY, and because my $dayjob is switching over presently.) 19:40
yoleaux japhb: I'll pass your message to nine.
vrurg which nqp op checks for both null and NQPMu? 19:46
lizmat vrurg: if nqp::isnull doesn't do it, I'm not sure what would 19:47
vrurg lizmat: It only checks for VMNull. Ok, thanks! 19:48
ugexe reduces core size 11MB? 20:03
lizmat 11K 20:04
:-)
unfortunately not possible to change commit messages... but there's a comment on the commit on Github
ugexe i can still be the first to write the 11MB json parser then 20:05
lizmat ugexe: yes you can...
fwiw, I'm trying to re-imagine 'from-json' now
ugexe json::fast is going to be slower than rakudo::internals at this rate 20:08
lizmat ugexe: the same code runs in JSON:Fast now
20:11 robertle left
timotimo yes, lizmat was friendly enough not to keep the code of the rakudo-internal jsonifier secret 20:28
21:33 AlexDaniel left 21:44 AlexDaniel joined
Geth rakudo: patzim++ created pull request #2963:
Use a static exec path with non-reloc builds
21:54
22:21 AlexDaniel left 22:39 patrickb left
Geth rakudo: vrurg++ created pull request #2964:
Make `is export` export role's group
22:44
timotimo is there any reason not to have a DOC END phaser? 23:03
vrurg timotimo: foot generation? 23:10
*footer 23:11
Geth roast: vrurg++ created pull request #549:
Test for exported role
23:21
timotimo not only that, but also to concatenate other file's doc contents after the current file's contents 23:24
say, if you use mi6 and want to have the readme contain the pod of many files 23:25
you'd put a DOC END phaser in your "main lib file" that spits out the other files stuff
Geth rakudo: 120b8d9509 | (Vadim Belman)++ | src/core/traits.pm6
Make `is export` export role's group

rakudo/rakudo#2955
23:29
synopsebot RAKUDO#2955 [open]: github.com/rakudo/rakudo/issues/2955 A role is exported from a module as ParametricRoleHOW instead of ParametricRoleGroupHOW
Geth rakudo: 163f0a0366 | (Vadim Belman)++ (committed using GitHub Web editor) | src/core/traits.pm6
Merge pull request #2964 from vrurg/rakudo_2955

Make `is export` export role's group
roast: f24a6d0741 | (Vadim Belman)++ | S11-modules/export.t
Test for exported role

rakudo/rakudo#2955 rakudo/rakudo#2964
synopsebot RAKUDO#2964 [closed]: github.com/rakudo/rakudo/pull/2964 Make `is export` export role's group
roast: 0490392daf | (Vadim Belman)++ (committed using GitHub Web editor) | S11-modules/export.t
Merge pull request #549 from vrurg/rakudo_2955

Test for exported role
vrurg timotimo: What difference would it make against, say, INIT phaser? 23:32
timotimo well, the --doc=Foo will at the end of parsing grab the $=pod and output it 23:45
so you have no way to put code after that happens at the moment