FROGGS I believe there is a precomp issue... 05:56
m: use NativeCall; my CArray[Str] $prefixes.=new;
camelia ( no output )
FROGGS that doesnt work when being precompiled
damn, it is not easy to golf down 05:58
(only fails in one of my modules)
interesting... 06:07
X::TypeCheck::Assignment.new(symbol => "\$prefixes", operation => Any, got => NativeCall::Types::CArray[Str].new, expected => NativeCall::Types::CArray[Str])
FROGGS the issue seems to be near rakudo/src/vm/moar/ops/container.c:101 06:27
FROGGS_ yeah, either the cache or the condition to throw is borken 06:32
FROGGS jnthn: do I need to do anything to update STABLE(obj)->type_check_cache? 07:17
FROGGS_ in CArray.^parameterize we do: my $what := arr.^mixin: TypedCArray[Str]; 07:20
and that might not be enuff
dalek arVM/even-moar-jit: 985bb59 | brrt++ | src/jit/tile. (2 files):
Publish tile construction API

So we can create pseudotiles in the register allocator too
07:34
arVM/even-moar-jit: 168e11a | brrt++ | src/jit/ (5 files):
Add preliminary register spilling

This is work-in-progress, doesn't work yet
FROGGS I wonder if nqp::settypecache(arr, [arr.WHAT]) would help... 07:52
jnthn FROGGS: It's highly unlikely to be a real type check failure, and more likely to be a type interning failure 08:41
FROGGS: Does NativeCall use the parametric type ops? 08:45
Or the wrappers around them in Metamodel::Primitives?
If not you can end up producing two copies of the same type, breaking identity
konobi jnthn: github.com/Microsoft/checkedc 08:59
pretty interesting read
jnthn Yeah, it's already open in a browser tab for me to read when I get a spare moment ;) 09:00
(Saw the link from elsewhere)
FROGGS github.com/rakudo/rakudo/blob/nom/...s.pm6#L138 09:11
jnthn Yeah, that ain't using it 09:14
There's an example using the NQP ops in github.com/rakudo/rakudo/blob/nom/...OW.nqp#L49 09:15
FROGGS ohh awesome
jnthn But it'd be really nice to add some wrapper methods around those ops into github.com/rakudo/rakudo/blob/nom/...mitives.pm and use that 09:16
(Though feel free to make it work at all first, then do that later)
It's basically in interning mechanism that can be keyed on other types, and it unifies common keys when loading precomps
FROGGS I guess I have to read these sentences several times :o) 09:30
(as usual)
FROGGS ohh, forgot to mention: thanks 11:14
psch m: use QRegex::P6Regex:from<NQP>; use QAST:from<NQP>; my $rx-qast = QAST::Regex.new( :rxtype<altseq>, QAST::Regex.new(:rxtype<literal>, "foo"), QAST::Regex.new(:rxtype<literal>, "bar")); say "foo" ~~ /$x/ 12:20
camelia rakudo-moar d92722: OUTPUT«===SORRY!===␤While looking for 'QRegex/P6Regex.moarvm': no such file or directory␤»
psch m: use QAST:from<NQP>; my $rx-qast = QAST::Regex.new( :rxtype<altseq>, QAST::Regex.new(:rxtype<literal>, "foo"), QAST::Regex.new(:rxtype<literal>, "bar")); say "foo" ~~ /$x/
camelia rakudo-moar d92722: OUTPUT«===SORRY!=== Error while compiling <tmp>␤Variable '$x' is not declared␤at <tmp>:1␤------> rxtype<literal>, "bar")); say "foo" ~~ /⏏$x/␤»
psch m: use QAST:from<NQP>; my $x = QAST::Regex.new( :rxtype<altseq>, QAST::Regex.new(:rxtype<literal>, "foo"), QAST::Regex.new(:rxtype<literal>, "bar")); say "foo" ~~ /$x/
camelia rakudo-moar d92722: OUTPUT«X::TypeCheck::Binding exception produced no message␤ in block <unit> at <tmp> line 1␤␤»
FROGGS m: use QAST:from<NQP>; my $x := QAST::Regex.new( :rxtype<altseq>, QAST::Regex.new(:rxtype<literal>, "foo"), QAST::Regex.new(:rxtype<literal>, "bar")); say "foo" ~~ /$x/ 12:31
camelia rakudo-moar d92722: OUTPUT«X::TypeCheck::Binding exception produced no message␤ in block <unit> at <tmp> line 1␤␤»