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
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
MasterDuke m: my @a; for ^5_000 { @a.push(PseudoStash.new) }; say @a.tail 00:44
camelia PseudoStash.new((!UNIT_MARKER => (!UNIT_MARKER), $! => Nil, $/ => Nil, $=finish => (Mu), $=pod => [], $?PACKAGE => (GLOBAL), $_ => (Any), $¢ => Nil, ::?PACKAGE => (GLOBAL), @a => [PseudoStash.new(($_ => 0)) PseudoStash.new(($_ => 1)) PseudoStash.new(…
MasterDuke c: MVM_SPESH_INLINE_DISABLE=1 HEAD my @a; for ^5_000 { @a.push(PseudoStash.new) }; say @a.tail 00:46
committable6 MasterDuke, ¦HEAD(01a3736): «PseudoStash.new(($_ => 4999))␤»
MasterDuke c: HEAD my @a; for ^5_000 { @a.push(PseudoStash.new) }; say @a.tail
committable6 MasterDuke, gist.github.com/d21714e5a39ad1d6ac...75d95c9f1d
MasterDuke c: HEAD my @a; for ^1_000 { @a.push(PseudoStash.new) }; say @a.tail
committable6 MasterDuke, ¦HEAD(01a3736): «PseudoStash.new(($_ => 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
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
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: gist.github.com/5b9f5ec5bedb2ba399...b916d37981
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: gist.github.com/2a14e30ac2bba314e3...9041682050
samcv greppable6: \~\^ 02:44
greppable6 samcv, 173 lines, 8 modules: gist.github.com/c14af5464f875d680a...ee508306a6
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
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
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
09:02
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 metacpan.org/pod/Env 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"
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
MasterDuke might be interesting to see how perl 6 compares. github.com/dyu/ffi-overhead 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
dogbert17 m: my $foo; "abcd" ~~ m/a $foo=(..) d/ 15:01
camelia ===SORRY!===
QAST::Block with cuid 1 has not appeared
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: gist.github.com/4d20b8610188c7209d...0dd54e815f
timotimo, (2016-03-04) github.com/rakudo/rakudo/commit/ea...341e986a91
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 stackoverflow.com/questions/505533...-on-perl-6 # question about NativeCall I don't know the answer to 15:39
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)
18:28
nqp: version bump brought these changes: github.com/MoarVM/MoarVM/compare/2...gfede5cf50
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 github.com/MoarVM/MoarVM/commit/5e94da0 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!
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; }; Foo.new(:foo<a>).foo.say; Foo.new.Int.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
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 github.com/niner/Inline-Perl5/comm...7b00caf8e2 wrapper classes are plain standard P6opaque classes which do the Inline::Perl5::Package role: github.com/niner/Inline-Perl5/blob...ackage.pm6
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: github.com/niner/Inline-Perl5/blob...ct.pm6#L32
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 github.com/rakudo/rakudo/blob/mast...er.nqp#L12
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
MasterDuke both github.com/vim/vim/blob/master/run...#L133-L150 and github.com/vim-perl/vim-perl6/blob...m#L99-L124 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
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