MasterDuke timotimo: would the spesh log have anything useful? 00:07
timotimo not entirely sure 00:11
MasterDuke it changes if i do `<...> for ^N` vs `for ^N { <...> }` 00:12
timotimo the spesh log or the behaviour?
MasterDuke behavior
the infini-looping happens around 2k instead of 6k
but lower counts still give `Too few positionals passed; expected 3 arguments but got 2 at SETTING::src/core/Mu.pm6:582 (/home/dan/Source/perl6/install/share/perl6/runtime/CORE.setting.moarvm:gistseen)` 00:13
00:17 shareable6 left
MasterDuke oh, that's cause i added self.gistseen to Map.gist, but i did give the wrong number of arguments. odd that it only dies on low iterations... 00:18
00:23 pmurias left 00:31 lucasb left
MasterDuke m: my @a; for ^5_000 { @a.push( }; say @a.tail 00:44
camelia!UNIT_MARKER => (!UNIT_MARKER), $! => Nil, $/ => Nil, $=finish => (Mu), $=pod => [], $?PACKAGE => (GLOBAL), $_ => (Any), $¢ => Nil, ::?PACKAGE => (GLOBAL), @a => [$_ => 0))$_ => 1))…
MasterDuke c: MVM_SPESH_INLINE_DISABLE=1 HEAD my @a; for ^5_000 { @a.push( }; say @a.tail 00:46
committable6 MasterDuke, ¦HEAD(01a3736): «$_ => 4999))␤»
MasterDuke c: HEAD my @a; for ^5_000 { @a.push( }; say @a.tail
committable6 MasterDuke,
MasterDuke c: HEAD my @a; for ^1_000 { @a.push( }; say @a.tail
committable6 MasterDuke, ¦HEAD(01a3736): «$_ => 999))␤»
MasterDuke nqp::ctx, nqp::ctxouterskipthunks, and nqp::ctxcallerskipthunks are all marked :noinline, but not ctxouter, ctxcaller, ctxlexpad, or ctxcode 00:50
is that correct? 00:51
jnthn, timotimo: ^^^ 00:52
timotimo MasterDuke: i'ven't got an intuition about that and my brain's kinda running on low capacity 01:29
MasterDuke timotimo: no worries 01:31
fwiw, i tried adding :noinline to all the ones without, but everything still seems the same
01:33 Kaiepi left
timotimo hm, it might be that the way PseudoStash gets the frames in question is sensitive to inlining of the frame that calls it 01:37
so the instructions for PseudoStash, like ctx* instructions, wouldn't matter as much with regards to their inlining behaviour 01:38
bedtime for me, seeya! 01:40
01:43 Kaiepi joined 01:47 ilbot3 left 01:57 ilbot3 joined, ChanServ sets mode: +v ilbot3
samcv i just found a pretty big bug in an op probably 0 people use 02:03
m: "\c[canada]" ~& "\c[brazil]"
camelia WARNINGS for <tmp>:
Useless use of "~&" in expression "\"\\c[canada]\" ~& \"\\c[brazil]\"" in sink context (line 1)
samcv m: say "\c[canada]" ~& "\c[brazil]"
camelia 🇧🇷
samcv m: "\c[canada]" ~& "\c[brazil]"; "\c[canada]" ~& "\c[united states]" 02:04
camelia WARNINGS for <tmp>:
Useless use of "~&" in expression "\"\\c[canada]\" ~& \"\\c[united states]\"" in sink context (line 1)
Useless use of "~&" in expression "\"\\c[canada]\" ~& \"\\c[brazil]\"" in sink context (line 1)
samcv m: say "\c[canada]" ~& "\c[brazil]"; say "\c[canada]" ~& "\c[united states]"
camelia 🇧🇷
MoarVM oops: MVM_nfg_get_synthetic_info call requested a synthetic codepoint that does not exist.
Requested synthetic 15 when only 9 have been created.
at SETTING::src/core/Encoding/Encoder/Builtin.pm6:24 (/home/camelia/rakudo-m-ins…
samcv it doesn't work on a codepoint bases but works on a grapheme basis. so for synthetics it just &'s the two synthetics together 02:07
(if anybody actually uses this op someone please inform me) 02:09
MasterDuke greppable6: \~\& 02:10
greppable6 MasterDuke, 29 lines, 6 modules:
samcv also issue 2 is that it doesn't retain normalization after the op 02:11
but these caveats also make me realize why nobody uses it as it is pretty silly
i'm still going to fix it though :P 02:12
i'm suprised that +& op doesn't work on Buf's though 02:14
greppable6: \~\| 02:43
greppable6 samcv, 38 lines, 9 modules:
samcv greppable6: \~\^ 02:44
greppable6 samcv, 173 lines, 8 modules:
samcv omg i found someone that uses 02:45
just the ~^ op
maybe i'll add a condition to only renormalize after processing if codepoints are above the first significant NFC character 02:49
03:05 Kaiepi left 03:49 BenGoldberg left 04:03 PufferBot joined 04:07 Kaiepi joined
samcv ok question for people. currently the ~& (string AND op) performs differently than the ~^ or ~| op in that the ~& op's result is the length of the shortest string 04:44
while the other two ops, the result is the length of the longest string 04:45
because ~& op, i'd just end up being null's, so i guess it just shortens it. but does this make sense to have them act differently 04:47
though i guess it's specced so. i have to leave it as is
05:32 robertle left 06:00 robertle joined
samcv night o/ 06:07
AlexDaniel m: say ‘foo’ ~| ‘bar’ 07:39
camelia fo^H
[Tux] Rakudo version 2018.05-25-g01a373649 - MoarVM version 2018.05-27-gaed4e3886
csv-ip5xs0.881 - 0.882
csv-ip5xs-208.474 - 9.355
csv-parser24.434 - 25.035
csv-test-xs-200.429 - 0.472
test8.670 - 9.104
test-t2.325 - 2.355
test-t --race0.983 - 1.013
test-t-2042.118 - 43.012
test-t-20 --race14.550 - 14.996
lizmat Files=1239, Tests=76363, 320 wallclock secs (15.49 usr 5.28 sys + 2209.15 cusr 223.06 csys = 2452.98 CPU) 09:25
so, do we have a way to find to what PseudoStash we're exporting to when we'er inside an EXPORT sub ? 11:31
jnthn moritz timotimo Zoffix ^^^ 11:32
moritz I'm not aware of one, but that doesn't mean much 11:33
jnthn lizmat: Pretty sure there's no way to do that. 12:01
lizmat jnthn: yeah, slowly coming to that conclusion 12:02
what I want to do is to bind to $_ of the scope we're exporting to
jnthn o.O 12:04
Can't you just stick a `$_` into the Map returned by EXPORT?
Maybe that's a redecl error though
lizmat yup 12:05
that's what I'm trying to prevent
and I can't CATCH the error either :-(
jnthn Well no, because you've already returned the Map by that point :)
lizmat FWIW, I'm trying to port to Perl 6 and handling the case of %*ENV<_> 12:06
jnthn That'd be an...interesting...choice of env var name :P 12:08
lizmat it's pretty common in shells
it's usually the last command you've executed in the shell ? 12:09
m: dd %*ENV<_>
camelia Str <element> = "/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin/perl"
jnthn heh, wow :)
TIL 12:10
I'm doubtful that getting hold of the pseudostash would actually be a solution here though
Compile-time bindings don't actually quite work that way
lizmat so I wouldn't have been able to bind to the <$_> anyway, is what you're saying? 12:13
m: $_ = 42; sub a() { CALLERS::<$_> := 666 }; a; dd $_ # guess not 12:14
camelia This case of binding is not yet implemented
in sub a at <tmp> line 1
in block <unit> at <tmp> line 1
lizmat ok, thanks for thinking about it... will circumvent by prefixing names with "env_" 12:15
which would be read better anyway
jnthn Honestly, it's one of those places where I'd just say "if you want 'use Env qw($FOO $BAR)', just write 'my (:$FOO, :$BAR, *%) := %*ENV;'" :P 12:16
lizmat I will put that in the pod :-) 12:17
m: my (:$_, :$PATH, *%) := %*ENV; dd $_, $PATH 12:20
camelia 5===SORRY!5=== Error while compiling <tmp>
Redeclaration of symbol '$_'
at <tmp>:1
------> 3my (:$_7⏏5, :$PATH, *%) := %*ENV; dd $_, $PATH
expecting any of:
shape declaration
lizmat :-(
m: no worries; my (:$_, :$PATH, *%) := %*ENV; dd $_, $PATH 12:21
camelia 5===SORRY!5=== Error while compiling <tmp>
Redeclaration of symbol '$_'
at <tmp>:1
------> 3no worries; my (:$_7⏏5, :$PATH, *%) := %*ENV; dd $_, $PATH
expecting any of:
shape declaration
lizmat hmmm
jnthn m: given %*ENV -> (:$_, :$PATH, *%) { dd $_, $PATH }
camelia Str $_ = "/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin/perl"
Str $PATH = "/home/camelia/perl5/perlbrew/bin:/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
12:40 Zoffix joined
Zoffix m: no strict; :(:$_, :$PATH, |) := %*ENV; dd $_, $PATH 12:40
camelia Str $_ = "/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin/perl"
Str $PATH = "/home/camelia/perl5/perlbrew/bin:/home/camelia/perl5/perlbrew/perls/perl-5.20.1/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
MasterDuke jnthn: did you see any of my PseudoStash-related ramblings last night? 12:43
Zoffix m: BEGIN '/tmp/20180527'.IO.mkdir.add('Foo.pm6').spurt: 「sub EXPORT { $*W.install_lexical_symbol: $*W.cur_lexpad, '$_', 42; {} }」; use lib </tmp/20180527>; use Foo; say $_ 12:56
camelia 42
Zoffix lizmat: ^
lizmat Zoffix: wow 12:57
samcv good * 13:14
AlexDaniel o/ 13:28
Zoffix \o
13:28 Zoffix left
MasterDuke might be interesting to see how perl 6 compares. 13:37
timotimo tup ... that's a name i haven't heard in a long time 13:41
MasterDuke don't think i've ever heard of it before 13:42
timotimo it's cute
i think it's also really really fast
14:59 shareable6 joined
dogbert17 m: my $foo; "abcd" ~~ m/a $foo=(..) d/ 15:01
camelia ===SORRY!===
QAST::Block with cuid 1 has not appeared
15:16 robertle left
dogbert17 m: say (1,2,3).map({$^a + $^b}) # should this work ? 15:18
camelia Too few positionals passed; expected 2 arguments but got 1
in block <unit> at <tmp> line 1
timotimo m: say (1,2,3).map(-> $a, $b? {$a + $b}) 15:19
camelia Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
timotimo m: say (1,2,3).map(-> $a, Mu $b? {$a + $b})
camelia Type check failed in binding to parameter '<anon>'; expected Any but got Mu (Mu)
in block <unit> at <tmp> line 1
timotimo weird.
where did that "anon" come from? 15:20
dogbert17 strange
timotimo m: say (1,2,3).map(-> $a, Mu $b? {$a + $b with $b})
camelia (3)
timotimo it's because + isn't happy when it's passed a Mu 15:21
bisectable6: say 1 + Mu
bisectable6 timotimo, Bisecting by output (old=2015.12 new=01a3736) because on both starting points the exit code is 1
timotimo, bisect log:
timotimo, (2016-03-04)
lizmat weird commit message :-) 15:23
timotimo but + with a Mu always failed
did map always pass Mu for a missing parameter? 15:24
dogbert17 there are skipped tests in roast which expect this to work 15:25
lizmat # question about NativeCall I don't know the answer to 15:39
15:39 AlexDaniel left 15:40 AlexDaniel joined 15:53 robertle joined 15:54 BenGoldberg joined 16:16 robertle left 17:31 MasterDuke left 17:41 MasterDuke joined
nine Turns out, our meta model code assumes that meta classes are written in NQP in quite a few places 18:20
Geth nqp: 67c8b96dd1 | (Samantha McVey)++ | tools/build/MOAR_REVISION
Bump MoarVM for str bitwise op fixes and .words speed impv.

Changes: 2018.05-13-gec9deabcb..2018.05-28-gfede5cf50 fede5cf50 Fix the bitwise ops so STRAND_CHECK is done on result string aed4e3886 Handle synthetics and normalization property in string bitwise ops 7411fb4c9 Remove an unneeded variable from grapheme_is_cclass e7f5f64a7 Use the Unicode db defines instead of querying property codes on init ... (11 more lines)
nqp: version bump brought these changes:
628d70fa51 | usev6++ | 2 files

Rakudo expects additional parameters (peer-host, peer-port, socket-host, socket-port) in async sockets since commit 76af17a8b1. This set of changes tries to port to the JVM backend and makes most tests from S32-io/IO-Socket-Async.t pass.
samcv i'm headed to a movie. will bump rakudo when i get back, unless someone else wants to bump it
nine samcv: have fun!
18:36 BenGoldberg left
bartolin hurries to put in some nqp fixes for async stuff on the jvm backend before the bump 18:37
nine Can I derive a class with P6opaque repr from a class with CPointer repr and still access the pointer? 18:44
Doesn't look good: 18:47
m: use NativeCall; class Foo is Pointer { has $.foo; };<a>).foo.say;;
camelia (Any)
This type cannot unbox to a native integer: P6opaque, Foo
in method Int at /home/camelia/rakudo-m-inst-1/share/perl6/sources/51E302443A2C8FF185ABC10CA1E5520EFEE885A1 (NativeCall::Types) line 33
in block <unit> at <tmp> line 1
19:20 shareable6 left
jnthn nine: An object has one representation 19:22
nine So I'm gonna have to figure out how to actually get that attribute storage working 19:23
jnthn What're you trying to do? :)
jnthn can't figure it out from the questions 19:24
nine I'm trying to give the wrapper classes Inline::Perl5 creates for Perl 5 classes a new meta class. This should give me more control over e.g. the method cache. With that I can simply add methods to the cache as I discover them through usage at runtime. 19:26
jnthn Following so far. What repr does the wrapper class have today? 19:30
Hm, and are you wanting an attribute on the object to hang the cache off? I'd maybe expect the method cache to live in the meta class... 19:32
nine As of wrapper classes are plain standard P6opaque classes which do the Inline::Perl5::Package role:
jnthn Ah, OK 19:33
nine The method cache is in an instance of the meta class. The only data those wrapper classes have is the pointer to an underying Perl 5 object. Hence the idea to use a CPointer repr. But then classes inheriting from such a wrapper won't be able to have attributes anymore
jnthn Ah, I see 19:34
Yeah, probably they want to have an attribute containing the CPointer instead 19:35
nine On current master, objects passed from Perl 5 to Perl 6 are all wrapped by Inline::Perl5::Object instances. And optimized candidates for discovered methods are added to those objects by mixing in roles:
jnthn I guess all the roles get costly with time :) 19:36
nine Not to mention that it's just a terrible hack :)
jnthn That too. Are you going to do the method caching by using the built-in method cache mechanism? 19:37
I think Metamodel::Primitives exposes something to update that
Doing that should mean spesh can resolve the method dispatches 19:38
nine Yep, Metamodel::Primitives makes this job a lot easier :) I'm just discovering the missing parts. E.g. the callers of .method_table all expect it to return a VMHash which Perl 6 code has a bit of a hard time doing
jnthn Ah.
Yeah. 19:39
nine And issues like getting a "This representation (Null) does not support associative access (for type VMNull)" in
Which I suspect is because %!attribute_lookup is not automatically initialized when a Perl 6 class does the Perl6::Metamodel::AttributeContainer role. 19:40
Nope....still P6opaque: no such attribute '$!wrapped-perl5-object' on type Foo in a Foo when trying to bind a value 19:57
Despite doing Metamodel::AttributeContainer and self.add_attribute to add that attribute and running self.compose_attributes($type) later on 19:58
Oooh...sprinkling some nqp::decont in compose_repr helps 20:20
21:08 Kaiepi left 21:09 Kaiepi joined
MasterDuke both and have a lot of things that aren't actually types (any more at least) 21:15
am i missing something, or do those need a lot of correcting? 21:18
21:32 PufferBot left
AlexDaniel yea they need to be corrected I think 21:38
MasterDuke it looks like official vim isn't pulling in updates from vim-perl6 anymore also 21:41
lizmat .tell nine perhaps "my class Rakudo::Internals::IterationSet is repr('VMHash') { }" could be of help? 22:08
yoleaux lizmat: I'll pass your message to nine.
lizmat .tell nine or perhaps we need to generalize this a bit like IterationBuffer 22:09
yoleaux lizmat: I'll pass your message to nine.
samcv MasterDuke, i think tyil knows the current status on vim-perl6 atm. when he wakes up again he'll probably know 23:56