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 |