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.
01:25 vrurg joined 01:54 ggoebel joined 02:41 llfourn left 02:43 llfourn joined 04:41 ggoebel left
nine .tell pmurias My plan with Inline::Perl5 is to record all loaded modules and all executed code during precompilation and replay it at runtime in an exported INIT phaser. My last attempt at this failed though due to unrelated precomp issues with closures in my meta class. 08:24
yoleaux nine: I'll pass your message to pmurias.
Geth nqp: Kaiepi++ created pull request #558:
Make socket family handling portable
08:33
rakudo: Kaiepi++ created pull request #3008:
[IP6NS Grant] Make socket family handling portable
08:35
09:21 AlexDaniel joined
lizmat Files=1275, Tests=108134, 207 wallclock secs (26.83 usr 7.26 sys + 2896.95 cusr 263.14 csys = 3194.18 CPU) 09:31
Kaiepi the jvm takes well over half an hour to build on my openbsd machine but on my freebsd vps that's a quarter as powerful it takes only 5 minutes? what? 09:41
jnthn Maybe the openbsd w^x rules mean that its JIT doesn't run? :) 09:44
Kaiepi the jit should run, w^x is allowed on the partition i have it installed on
unless it's like the current moarvm port, which entirely disables the jit even though it would run if it were enabled 09:45
maybe it could just be a matter of hdd vs ssd
jnthn Could be that
But...that feels odd
Unless it swaps 09:46
Or if it swaps on any disk on the BSD machine
nine TBH I'd be very pleasently surprised if the JIT would be responsible for a 6x speedup 09:50
|Tux| Rakudo version 2019.03.1-640-g63b9e1fe3 - MoarVM version 2019.05-89-g5b597acc1
csv-ip5xs1.157 - 1.161
csv-ip5xs-2059.426 - 60.134
csv-parser22.785 - 23.317
csv-test-xs-200.426 - 0.427
test6.465 - 7.203
test-t1.729 - 1.742
test-t --race0.788 - 0.789
test-t-2028.484 - 29.197
test-t-20 --race9.111 - 9.177
09:52
10:29 |Tux| left 10:40 BeastieBot joined 10:48 |Tux| joined 10:49 |Tux| left 11:19 |Tux| joined
AlexDaniel ah so zscript no longer works because MOAR_REVISION moved :) 11:57
Geth nqp: 5190ce9356 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/templates/MOAR_REVISION
[MoarVM Bump] Brings 38 commits

MoarVM bump brought: github.com/MoarVM/MoarVM/compare/2...g81e5cbf2a 81e5cbf2a Merge pull request #1127 from dogbert17/fix-m1104 ee829bc29 Restore accidentally deleted call to mp_neg() 5b597acc1 Merge pull request #1125 from Kaiepi/syncsocket-mem 3241e9f54 Fix memory leak in socket_read_bytes ... (34 more lines)
12:05
rakudo: 9733471101 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/templates/NQP_REVISION
[NQP Bump] Brings 13 commits

NQP bump brought: github.com/perl6/nqp/compare/2019....g5190ce935 5190ce935 [MoarVM Bump] Brings 38 commits 4c5ec49dd [js] Allow calling methods on a wrapped js function 33ed626d4 Document missing nqp::getrusage constants ab21c2dec add missing ?, thanks bartolin++ ... (9 more lines)
12:18 epony left 12:20 ilogger2 joined
Geth rakudo: c5830f4c83 | (Aleks-Daniel Jakimenko-Aleksejev)++ | tools/releasable/Sakefile
Fix paths to *_REVISION files

The build process was changed a bit and the files are now in a different directory.
12:22
AlexDaniel greppable6: _REVISION
greppable6 AlexDaniel, 19 lines, 3 modules: gist.github.com/da7a0402c3a7bfb317...a3fe596709
12:41 pmurias joined
pmurias nine: re replaying code, won't that be a bit crazy when io side effects etc. are present 12:43
yoleaux 08:24Z <nine> pmurias: My plan with Inline::Perl5 is to record all loaded modules and all executed code during precompilation and replay it at runtime in an exported INIT phaser. My last attempt at this failed though due to unrelated precomp issues with closures in my meta class.
12:50 pmurias left 13:22 vrurg joined 13:23 epony joined 13:24 pamplemousse joined 13:42 lucasb joined
vrurg . 13:50
14:49 vrurg left 15:06 vrurg joined
vrurg releasable6: status 15:34
releasable6 vrurg, Next release will happen when it's ready. 4 blockers. 258 out of 642 commits logged (⚠ 3 warnings) 15:35
vrurg, Details: gist.github.com/ec6dd0b683624567f1...f21f954832
15:50 vrurg_ joined 15:51 vrurg left, vrurg_ is now known as vrurg 16:41 pamplemousse left
vrurg m: SetHash.new(a=>1,b=>2).perl.say 16:42
camelia SetHash.new()
vrurg m: SetHash.new(a=>1,b=>2).elems.say 16:43
camelia 0
vrurg That's weird.
masak m: say SetHash.new((a=>1), (b=>2)).perl 16:47
camelia SetHash.new(:a(1),:b(2))
masak (unparenthesized pairs interpreted as named method arguments, and ignored due to the Interface Consistency principle) 16:48
m: say SetHash.new("a" => 1, "b" => 2).perl 16:55
camelia SetHash.new(:b(2),:a(1))
masak also works
basically, anything to make the pairs not be interpreted as method arguments
vrurg masak: Argh, right. Stepped over the same mistake which was explaining to another person yesterday... ;) 16:58
masak Interface Consistency is the most frustrating design decision that I actually _agree_ with in Perl 6 17:07
17:25 ggoebel joined 17:26 pamplemousse joined 17:31 pamplemousse_ joined 17:35 pamplemousse left 17:44 pamplemousse_ left
nine .tell pmurias yes, it will. But I don't see another way without losing all the benefits. And the user still has the choice to opt out via no precompilation; 18:07
yoleaux nine: I'll pass your message to pmurias.
18:49 pamplemousse_ joined 18:51 lucasb left
vrurg ugexe: ping 18:57
19:01 vrurg left 19:15 MasterDuke joined 19:16 MasterDuke left, MasterDuke joined 19:18 vrurg joined 19:20 pamplemousse_ left 19:29 pamplemousse_ joined
AlexDaniel stares at Digest::BubbleBabble 19:48
aaa, ok 20:00
6c: [1,2,3][1..^*].say 20:01
committable6 AlexDaniel, gist.github.com/32f85b68563ebb5667...b02021530f
AlexDaniel 6c: [1,2,3][1..*-1].say
6c: [1,2,3][1..*-2].say
committable6 AlexDaniel, ¦6c (37 commits): «(2 3)␤» 20:02
AlexDaniel, ¦6c (37 commits): «(2)␤»
ugexe vrurg: pong 20:04
vrurg ugexe: nevermind, just wanted to make sure that then env var turns off JIT
20:08 pamplemousse_ left
AlexDaniel wonders why * expands to the number of elements and not the index of the last element 20:08
cuz then * and *-1 for the endpoint do the same thing… 20:09
actually I'm not even sure if this commit is right github.com/rakudo/rakudo/commit/35...c2c0643d5a
I mean, yeah, it's kinda right because *-1 is useless anyway… 20:10
20:24 ggoebel left
AlexDaniel alright, two modules fixed 20:24
m: class X::IO is Exception { } 20:33
camelia ( no output )
AlexDaniel m: class Foo { class X::IO is Exception { } }
camelia ( no output )
AlexDaniel arrr 20:34
m: say X::IO
camelia (IO)
AlexDaniel I remember this issue github.com/jonathanstowe/RPi-Devic...us.pm#L164
I think we hit it before, like months ago?
# P6M Merging GLOBAL symbols failed: duplicate definition of symbol IO 20:35
I agree with the error, actually, but somehow it used to work
how come this commit triggers it is beyond me github.com/rakudo/rakudo/commit/84...c80bd6e53b
jnthn: thoughts? 20:36
I can fix the module, of course 20:37
but is that what we want?
greppable6: ::IO 20:38
greppable6 AlexDaniel, 698 lines, 42 modules: gist.github.com/1b46ab334b70a0718a...b6e8bb0f33
20:38 vrurg left
AlexDaniel greppable6: ::IO\s 20:38
greppable6 AlexDaniel, 60 lines, 14 modules: gist.github.com/cdf771027ca7372436...3de1a177b8
jnthn AlexDaniel: Huh, that's very odd 20:40
Does getting rid of the X:: in the name of the exception that I introduced help matters?
It's lexical so it doesn't matter what it's called
But it still feels off 20:41
AlexDaniel jnthn: so you don't want me to change the module, right?
20:48 vrurg joined
ugexe vrurg: MVM_SPESH_DISABLE=1 would be another one to try next time youre on windows vm 20:55
vrurg ugexe: this helps so far. 20:57
I'll let it run for at least 1000 times to make sure.
AlexDaniel vrurg++ 21:00
ugexe anyone have an idea what could cause a test called t\04-nativecall\04-pointers.t to fail on windows if spesh is enabled? 21:01
timotimo hm, bad assumptions in optimizations? maybe regarding aligning or something?
ugexe around 4-5 months back i stop seeing it (but maybe just coincidence since i stopped at 6 months, checking *most* red builds)
just looking at the appveyor output 21:02
jnthn AlexDaniel: Well, could try changing Test.pm6 :) 21:05
AlexDaniel ugexe: 04-pointers.t or 06-struct.t? 21:06
ugexe 06-struct.t
oh wait let me go over this again heh 21:07
AlexDaniel ugexe: which test triggers the segfault? this one? github.com/rakudo/rakudo/blob/c583...uct.t#L199 21:08
if it's a segfault at all
ugexe yeah i meant 06-struct.t
AlexDaniel maybe a golf of the issue can help figure it out? 21:09
ugexe its the test after that one
AlexDaniel vrurg: I think there's something wrong with this commit github.com/rakudo/rakudo/commit/3a...a604be6fcf 21:11
vrurg: github.com/perl6-community-modules...at.pm6#L31
vrurg: github.com/Mouq/HTML-Entity/blob/5...ty.pm6#L25
vrurg: the error is “Cannot invoke this object (REPR: Null; VMNull)” 21:12
vrurg AlexDaniel: I'll have a look. Perhaps the problem needs different solution, after all. But didn't find it. 21:17
Geth rakudo: vrurg++ created pull request #3013:
Correct assignment to SetHash
21:21
roast: vrurg++ created pull request #555:
Test for SetHash assignment
21:23
vrurg ugexe, AlexDaniel More that 1150 runs of the test with MVM_SPESH_DISABLE are ok. 21:28
AlexDaniel lizmat: this is not right:
c: HEAD my $s = (1, 2, 3).Seq; say $s.iterator.pull-one; say $s[0]
committable6 AlexDaniel, ¦HEAD(c5830f4): «1␤1␤»
AlexDaniel it makes me feel that all sequences are now cached… 21:29
which sounds horrifying :)
OK two more modules left: github.com/rakudo/rakudo/issues/2998 21:34
but I think I'm done for today…
vrurg AlexDaniel: how did you get HTML::Entity to fail?
AlexDaniel vrurg: it doesn't fail directly, only through Pastebin::Shadowcat 21:35
vrurg Ok. Thanks!
Geth rakudo: AlexDaniel self-assigned Unwanted caching of Seqs github.com/rakudo/rakudo/issues/3014
AlexDaniel self-unassigned Unwanted caching of Seqs github.com/rakudo/rakudo/issues/3014

f1512e9f97 | (Vadim Belman)++ | 2 files Do correct assignment to SetHash
Fix for rakudo/rakudo#1203
21:41
AlexDaniel ok that I can fix myself easily :)
vrurg AlexDaniel: prove6 -l passes for pastebin module 21:48
AlexDaniel vrurg: ummm… it shouldn't? 21:49
weird… you're on HEAD, right?
vrurg I am.
wait... Damn
rakudobrew didn't deactivate. 21:50
21:57 vrurg left, vrurg joined
japhb m: my $foo = "a"; my $bar = "b"; my $quux = $foo => $bar; $bar = "c"; dd $quux; # Why does $bar need to be decontainerized to avoid this WAT? 22:32
camelia Pair $quux = :a("c") 22:33
timotimo m: my %foo = :1a, :2b, :3c; for %foo { .value++ }; say %foo 22:35
camelia {a => 2, b => 3, c => 4}
japhb timotimo: You're saying my WAT exists so that your case will DWIM? 22:36
timotimo potentially 22:37
japhb hmmm
I can see that
vrurg timotimo: your case is reasonable. But I wouldn't expect a container to be stored in a hash value. That's asking for troubles. 22:45
*in a pair value 22:46
timotimo you mean when created with the => operator? 22:48
vrurg timotimo: yes
m: my %h; my $foo = "a"; my $bar = 42; %h = $foo => $bar.VAR; $bar++; say %h
camelia {a => 43}
vrurg That what I'd expect to be more valid to achieve the same outcome.
jnthn m: my $x = 42; my $p = a => $x; $p.value = 99; say $x 22:49
camelia 99
jnthn I'm quite sure this was an intended feature
timotimo oh vrurg can i get you to do something terrible to the moarvm build system? 22:50
jnthn And it specified behavior
*is
vrurg timotimo: not sure I'd want to get into that. 22:51
timotimo bitbucket.org/wolfpld/tracy/src/master/ - i only want this (its C interface to be exact) to be usable in moarvm optionally 22:52
it's a cpp library
that's the issue
vrurg jnthn: Thanks, I checked for other possible variants, and no other valid solution for your case. So, it makes sense, though still somewhat unexpected. :) 22:53
jnthn vrurg: I forget the original motivation for this, alas; TimToady++ probably remembers :) 22:54
vrurg timotimo: the point is that I never looked inside moar's build. But if nobody else takes that I could try next week. 22:55
jnthn: I could guess: for timotimo's example with the loop, perhaps. 22:56
timotimo i'd be glad if you could
vrurg timotimo: ok, I'm exhausted after TPC yet and have my flight back tomorrow. So, just remind me next week, plese. Maybe make a ticket with the details? 22:57
timotimo don't worry, i had an exhausting today, too 23:01
first a far too early flight, then a nap and another couple hours of driving, then a suddenly dead desktop pc :)
vrurg BTW, while a few people here: is it possible that a Setty could be is-lazy somehow? github.com/rakudo/rakudo/pull/3013 23:03
jnthn vrurg: Well, not of the core ones would be...whether somebody could implement that role in a module and make it lazy is another matter, though generally we've only ever associated laziness with list-y things, not associative things. 23:05
*none of
timotimo listy things are easier to make lazy, because grabbing "one specific item" lets you know exactly where to go look, whereas a "foo" in a hash that's backed by a generator-like thing can take an arbitrary amount of time, up to infinity 23:07
though of course you could have a generator that just maps a key to a value rather than a function that spits out key/value pairs
BBL
vrurg Don't want extra performance lost on an unnecessary check. Would leave it like that.
*loss
jnthn Yeah, I'd say is-lazy isn't really applicable for associative things 23:08
vrurg Thanks!
Actually, that's more/less how I considered it too. 23:10
rakudo: ed3db12c73 | (Vadim Belman)++ (committed using GitHub Web editor) | 2 files
Merge pull request #3013 from vrurg/rakudo_1203

Correct assignment to SetHash
synopsebot_ RAKUDO#1203 [open]: github.com/rakudo/rakudo/issues/1203 [data types] Would be nice to have an easy way to work with SetHashes and its kin
roast: 12298da5a6 | (Vadim Belman)++ | S03-operators/assign.t
Test for SetHash assignment

Support for rakudo/rakudo#3013
roast: 2924a0cf71 | (Vadim Belman)++ (committed using GitHub Web editor) | S03-operators/assign.t
Merge pull request #555 from vrurg/rakudo_1203

Test for SetHash assignment
synopsebot_ RAKUDO#3013 [closed]: github.com/rakudo/rakudo/pull/3013 Correct assignment to SetHash
vrurg m: use nqp; sub foo { }; my &f = &foo; say nqp::decont(&f).WHAT 23:41
camelia (Sub)
vrurg use nqp; sub foo { }; my &f = &foo; say nqp::decont(&f).VAR.^name
evalable6 Sub
vrurg m: use nqp; sub foo { }; our &f = &foo; say nqp::decont(&f).VAR.^name 23:43
camelia Out-of-sync package detected in LANG1 at .VAR.^name
Sub
(value in braid: GLOBAL, value in $*PACKAGE: GLOBAL)
vrurg m: module Foo { use nqp; sub foo { }; our &f is export = &foo; }; import Foo; say nqp::decont(&f).VAR.^name 23:44
camelia 5===SORRY!5=== Error while compiling <tmp>
Could not find nqp::decont, did you forget 'use nqp;' ?
at <tmp>:1
------> 3&foo; }; import Foo; say nqp::decont(&f)7⏏5.VAR.^name
vrurg m: use nqp; module Foo { sub foo { }; our &f is export = &foo; }; import Foo; say nqp::decont(&f).VAR.^name 23:45
camelia Callable
vrurg Why??
m: use nqp; module Foo { sub foo { }; our &f is export = &foo; say "iscont=", nqp::iscont(&f); }; import Foo; say nqp::decont(&f).VAR.^name
camelia iscont=1
Callable
vrurg m: use nqp; module Foo { sub foo { }; our &f is export = &foo; say "iscont=", nqp::iscont(&f); say "cont:", &f.VAR.^name }; import Foo; say nqp::decont(&f).VAR.^name 23:46
camelia iscont=1
cont:Scalar
Callable
vrurg Anybody around to tell me this is ok for &f to be a Scalar container?? 23:48