Perl 6 - the future is here, just unevenly distributed

IRC log for #p6dev, 2016-05-14

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
01:47 ilbot3 joined #p6dev
01:47 Topic for #p6dev is now Perl 6 language and compiler development
08:40 cognominal joined #p6dev
09:17 RabidGravy joined #p6dev
09:34 Ven joined #p6dev
09:37 Ven joined #p6dev
09:51 dalek rakudo/nom: 440da02 | lizmat++ | src/core/allomorphs.pm:
09:51 dalek rakudo/nom: Allomorphs don't need a .gist of their own
09:51 dalek rakudo/nom:
09:51 dalek rakudo/nom: As they inherit the Str.gist
09:51 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/440da02594
10:03 dalek rakudo/nom: ae2afdc | lizmat++ | src/core/allomorphs.pm:
10:03 dalek rakudo/nom: Make allomorph.perl show any subclass info
10:03 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ae2afdcd74
10:32 dalek rakudo/nom: 9206848 | lizmat++ | src/core/allomorphs.pm:
10:32 dalek rakudo/nom: Fix infix:<cmp> for allomorphs
10:32 dalek rakudo/nom:
10:32 dalek rakudo/nom: - because of missing :D, one of the base variants was chosen before
10:32 dalek rakudo/nom: - simplify condition, no need for given if you use ||
10:32 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/92068485c8
10:44 travis-ci joined #p6dev
10:44 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Allomorphs don't need a .gist of their own
10:44 travis-ci https://travis-ci.org/rakudo/rakudo/builds/130194084 https://github.com/rakudo/rakudo/compare/3614487bdab3...440da02594ca
10:44 travis-ci left #p6dev
10:47 RabidGravy is it me or are the jvm builds that are failing duplicates of the ones that are already in the "allowed failures"?
10:48 RabidGravy or should they be added to the "allowed failures" at least
10:49 lizmat afaics, something broke "make install"
10:51 RabidGravy for jvm only though right?
10:55 psch well, the r-j build worked, then i removed the r-j build from allowed failures
10:55 psch and then everything broke again and everyone is waiting for me to fix it... :)
10:56 lizmat ++psch  :-)
10:58 dalek rakudo/nom: 2ddac6a | lizmat++ | src/core/allomorphs.pm:
10:58 dalek rakudo/nom: Use nqp::eqat to check for occurence in string
10:58 dalek rakudo/nom:
10:58 dalek rakudo/nom: We have a dedicated nqp::op for checking whether a given string occurs
10:58 dalek rakudo/nom: at a position in another string.  So no need to substr!
10:58 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/2ddac6a8fa
10:59 lizmat which concludes my submissions for the coming days
10:59 lizmat commute to OSCON&
11:04 Ven joined #p6dev
11:21 travis-ci joined #p6dev
11:21 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Make allomorph.perl show any subclass info'
11:21 travis-ci https://travis-ci.org/rakudo/rakudo/builds/130195268 https://github.com/rakudo/rakudo/compare/440da02594ca...ae2afdcd746e
11:21 travis-ci left #p6dev
11:22 timotimo huh, how did that happen
11:23 timotimo seems like at some point it just went belly-up?
11:24 psch 1e5df4130e6 is the commit that worked on r-j, which is my it exists
11:24 psch 'cause it's the one that removes *nix r-j from allowed_failures
11:30 bartolin psch: I was curious and applied your changes from https://gist.github.com/peschwa/e82fac05cb2382a044bddb6687a15aa1
11:30 bartolin could the error during installation (class 'NativeCall::Types::void' not found) be related to precomp again?
11:31 psch bartolin: probably, yeah
11:31 bartolin running with RAKUDO_MODULE_DEBUG=1 I saw some lines about failed precompilations.
11:31 psch i mean, the error is that it doesn't recognize the type, which i take to mean that the import doesn't work
11:32 psch which could happen when it did precompile in a broken way and thus can't load it then i guess..?
11:32 bartolin yeah, that's what I thought as well
11:32 bartolin wasn't there a way to disable precompilation?
11:32 psch we have a 'no precompilation' pramga i think?
11:33 bartolin 'no precompilation' seems to have no effect.
11:33 psch where'd you put it?
11:33 bartolin I tried to put it in lib/NativeCall/Types.pm6 and lib/NativeCall/Compiler/GNU.pm6
11:33 psch i'd try it in install-core-dist.pl
11:36 bartolin m: use NativeCall::Types; say (NativeCall::Types::void).^name
11:36 camelia rakudo-moar 2ddac6: OUTPUT«Could not find symbol '&void'␤  in block <unit> at /tmp/BiE9xcmmcm line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/BiE9xcmmcm line 1␤␤»
11:36 bartolin hmm.
11:37 psch m: use NativeCall::Types; say NativeCall::Types::.keys
11:37 camelia rakudo-moar 2ddac6: OUTPUT«Could not find symbol '&Types'␤  in block <unit> at /tmp/nV3znYAc38 line 1␤␤Actually thrown at:␤  in block <unit> at /tmp/nV3znYAc38 line 1␤␤»
11:37 psch m: use NativeCall; say NativeCall::.keys
11:37 camelia rakudo-moar 2ddac6: OUTPUT«()␤»
11:37 psch m: use Test; ok 1, 1
11:37 camelia rakudo-moar 2ddac6: OUTPUT«ok 1 - 1␤»
11:38 bartolin that works locally with r-m
11:39 bartolin anyway, I'll look again and play with 'no precompilation' and some debug statements ...
12:02 travis-ci joined #p6dev
12:02 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Fix infix:<cmp> for allomorphs
12:02 travis-ci https://travis-ci.org/rakudo/rakudo/builds/130198431 https://github.com/rakudo/rakudo/compare/ae2afdcd746e...92068485c8c3
12:02 travis-ci left #p6dev
12:21 psch bartolin: fwiw, 'module Foo { our class Bar { } }' also doesn't find Foo::Bar
12:21 psch bartolin: i'm fairly sure it should... :S
12:24 psch m: module Foo { our class Bar { } }; say Foo::Bar
12:24 camelia rakudo-moar 2ddac6: OUTPUT«(Bar)␤»
12:25 psch yeah, that works in-line (so to speak) on r-j too
12:26 psch but stuff the Foo definition into a file, and it doesn't... vOv
12:36 travis-ci joined #p6dev
12:36 travis-ci Rakudo build failed. Elizabeth Mattijsen 'Use nqp::eqat to check for occurence in string
12:36 travis-ci https://travis-ci.org/rakudo/rakudo/builds/130201108 https://github.com/rakudo/rakudo/compare/92068485c8c3...2ddac6a8faef
12:36 travis-ci left #p6dev
12:36 timotimo oh come on, travis :|
12:43 psch ...why doesn't 'no precompilation' turn off precompilation?
12:43 psch for that matter, i also thought 'use lib ...' would turn it off, but that doesn't either...
12:45 timotimo use lib will not deactivate precompilation
12:45 timotimo instead you.ll end up with a precomp store in that lib directory
12:45 moritz there's "no precomp;" if you want to turn off precomp
12:45 timotimo m: no precompilation
12:45 camelia rakudo-moar 2ddac6: ( no output )
12:46 timotimo i wonder why that doesn't error out when it sees a thing we don't have?
12:47 psch m: no funny-business
12:47 camelia rakudo-moar 2ddac6: OUTPUT«===SORRY!===␤Don't know how to 'no funny-business' just yet␤»
12:47 timotimo oh
12:47 timotimo m: no precomp
12:47 camelia rakudo-moar 2ddac6: OUTPUT«===SORRY!===␤Don't know how to 'no precomp' just yet␤»
12:47 timotimo so it *is* "no precompilation"
12:47 psch m: no precomp
12:47 camelia rakudo-moar 2ddac6: OUTPUT«===SORRY!===␤Don't know how to 'no precomp' just yet␤»
12:47 psch oh, yeah
12:48 psch but it doesn't do anything.  or rather, i still get logging output from RAKUDO_MODULE_DEBUG that says precomp is happening
12:48 psch i mean, it might be doing something, but it's not turning of precomp vOv
12:48 timotimo it only prevents the module it's in from being precompiled
12:50 psch ah, yeah
12:50 psch so, apparently precomp of modules with our-scoped classes ia broken on r-j
12:51 timotimo oh crap
12:52 bartolin hmm. if I have Bar.pm6 which has 'no precompilation' and then run "perl6-m -e 'use Bar'" it looks like Bar _gets_ precompiled
12:52 psch bartolin: it aborts
12:53 psch bartolin: when it sees the pragma
12:53 bartolin (according to output with RAKUDO_MODULE_DEBUG=1)
12:53 timotimo it can hardly know not to precompile before it started trying
12:53 psch 4420 32384 RMD: /home/psch/rakudo/rakudo/Foo.pm aborted precompilation without failure
12:53 timotimo because it's not allowed to precompile the "don't precompile me" thingie
12:54 bartolin ahh, I see
12:59 psch hm
12:59 psch maybe even worse:  both "module Foo { }" and "unit module Foo;" seem broken
13:00 bartolin ok, doing the following seems to work: 1. apply psch's++ patches; 2. add 'no precompilation' to 'lib/NativeCall/Types.pm6'; 3. run perl6-j -Ilib -e 'use NativeCall::Types; say NativeCall::Types::void.^name'
13:00 bartolin oh, and remove an existing dir lib/.precomp before step 3
13:02 bartolin so, maybe your patches are good at least
13:04 psch yeah, probably
13:04 psch but precomp loading is completely busted on r-j it seems
13:05 psch Foo.pm with "class Foo { }" can't be loaded without having "no precompilation" in there
13:05 bartolin yes, looks like it :-/
13:05 psch or well, it gets loaded, and says it imports symbols, but Foo isn't found in the using mainline
13:05 psch which, honestly, even makes me doubt i'm doing the syntax right haha :)
13:13 bartolin psch: yesterday you were reluctant to put your changes to the Binder in a commit. since the new error ('NativeCall::Types::void') seems to be unrelated to that -- shouldn't your patches go in?
13:13 dalek rakudo/nom: f6bc8b7 | peschwa++ | src/ (4 files):
13:13 dalek rakudo/nom: Fix some cases of extra containers in param binding.
13:13 dalek rakudo/nom:
13:13 dalek rakudo/nom: This fixes e.g. < my $b = Buf.new; $b.push(Buf.new(1,2)) >, but doesn't fix
13:13 dalek rakudo/nom: RT #126493 for example. This might mean there's a better, more complete version
13:13 dalek rakudo/nom: around, but this is still better than nothing.
13:13 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/f6bc8b7dec
13:13 synopsebot6 Link:  https://rt.perl.org/rt3//Public/Bug/Display.html?id=126493
13:13 psch bartolin: well... :)
13:13 bartolin lol
13:14 bartolin psch++
13:14 psch bartolin: fwiw, the reluctance was because i had thought that my interpretation of "don't mess up explicit $_ binding" for the r-j Binder was wrong
13:14 psch bartolin: since the failing bit was a given/when
13:14 bartolin aha, I see
13:19 psch hmm
13:19 psch CompUnit::Loader.load-precompilation-file just does nothing on r-j..?
13:19 psch i mean, the call to loadbytecodefh is moar-only
13:25 bartolin psch: but in CompUnit::PrecompilationRepository is an '#?if moar' statement, so load-precompilation-file not called there on JVM
13:26 psch ah, alright then :)
14:02 Ven joined #p6dev
14:11 travis-ci joined #p6dev
14:11 travis-ci Rakudo build failed. Pepe Schwarz 'Fix some cases of extra containers in param binding.
14:11 travis-ci https://travis-ci.org/rakudo/rakudo/builds/130215385 https://github.com/rakudo/rakudo/compare/2ddac6a8faef...f6bc8b7dec65
14:11 travis-ci left #p6dev
14:12 psch yes travis, soon.  maybe...
14:27 [Tux] This is Rakudo version 2016.04-199-gf6bc8b7 built on MoarVM version 2016.04-134-g9879233
14:27 [Tux] test            20.853
14:27 [Tux] test-t          13.463
14:27 [Tux] csv-parser      35.589
14:34 Ven joined #p6dev
15:11 nine psch: odd. I specifically tried to make sure loading precompiled files works on the JVM before merging my branch :/
15:18 psch nine: the precomp files are jars, aren't they?
15:19 psch 'cause calling loadNew skips all the "pull the jar appart and check its serialization" stuff
15:19 psch also apparently a Buf is a VMArrayInstance_u8, not _i8
15:20 psch also loadbytecodebuffer didn't have a fail branch for that instanceof check
15:20 psch well, that's the changes i'm trying right now, fwiw :)
15:25 nine I was actually surprised when it seemed to work :)
15:43 psch m: say 4260626932.base(16)
15:43 camelia rakudo-moar f6bc8b: OUTPUT«FDF401F4␤»
15:43 psch m: say (0xffffffff - 4260626932).base(16)
15:43 camelia rakudo-moar f6bc8b: OUTPUT«20BFE0B␤»
15:43 psch hm, that doesn't immediately help me vOv
15:44 psch that's the first 4 bytes of a precomp file, fwiw
15:45 psch well, after the bitshifting and bitanding at the start of loadBuffer, which is what's after the readAllBytes call in loadFile...
15:48 psch huh
15:48 psch 0x504B0304 is what we expect at the start of a .jar file
15:48 psch $ xxd install/share/perl6/precomp/A7D2CC4F2100F2EFB26241A5A219EDE670349041.1.463240427251E9/09/09A0291155A88760B69483D7F27D1FBD8A131A35 | head
15:48 psch 0000000: 0a50 4b03 0414 0008 0808 0045 7dae 4800  .PK........E}.H.
15:48 psch but we get 0x0a504b0304
15:49 psch oh, wasn't there some "mush it together with our own delimiters" magic going on..?
15:50 nine psch: precomp files are now a combination of dependency information + the bytecode file
15:51 nine the first part is actually human readable
15:51 nine The bytecode part starts after the first empty line
15:51 psch yeah, that's what i just realized
15:52 psch i mean, the fact that we start with a line break and then comes the jar
15:52 nine That would be a file with no dependencies
15:53 psch yeah, which is a problem if we don't have anything implemented that tosses everything that's before the line break before feeding it into the ClassLoader... :)
15:53 nine But that should be taken care of by using loadbytecodebuffer instead of loadbytecodefile?
15:53 nine or loadbytecode rather
15:54 psch well, yeah, if it was implemented in loadbytecodebuffer it probably would :D
15:54 psch but currently it just feeds the whole file, including empty line (or dependency information) into the class loader
15:55 psch or, well, upstream it actually realizes its a VMArrayInstance_i8 and not _u8 and just does nothing
15:55 psch well, unless i missed an nqp bump here of course
15:55 psch s/file/buffer/
15:56 psch https://github.com/perl6/nqp/blob/master/src/vm/jvm/runtime/org/perl6/nqp/runtime/Ops.java#L5642 gets called
15:57 psch from https://github.com/rakudo/rakudo/blob/nom/src/core/CompUnit/Loader.pm#L58
15:57 psch if the caller of load-precompilation doesn't break the $buf apart...
15:59 nine This is the place: https://github.com/rakudo/rakudo/blob/nom/src/core/CompUnit/PrecompilationStore/File.pm#L41
16:00 psch m: say $*IN.get.split[*-1]
16:00 camelia rakudo-moar f6bc8b: OUTPUT«Cannot call split(Str: ); none of these signatures match:␤    (Cool $: Regex:D $pat, $limit = Inf;; :$all, *%_)␤    (Cool $: Cool:D $pat, $limit = Inf;; :$all, *%_)␤    (Str:D $: Regex:D $pat, $parts = *;; :$v is copy, :$k, :$kv, :$p, :$skip-empty, *…»
16:00 psch m: say $*IN.get.split()[*-1]
16:00 camelia rakudo-moar f6bc8b: OUTPUT«Cannot call split(Str: ); none of these signatures match:␤    (Cool $: Regex:D $pat, $limit = Inf;; :$all, *%_)␤    (Cool $: Cool:D $pat, $limit = Inf;; :$all, *%_)␤    (Str:D $: Regex:D $pat, $parts = *;; :$v is copy, :$k, :$kv, :$p, :$skip-empty, *…»
16:00 psch oh grr
16:00 psch m: say $*IN.get.comb[*-1]
16:00 camelia rakudo-moar f6bc8b: OUTPUT«l␤»
16:00 psch humm, does that chomp..? :)
16:01 nine Yes, all line reading methods should chomp
16:11 psch i am so confused right now
16:11 psch i mean, what i do know is that the buf that arrives in loadbytecodebuffer still has the line break
16:12 psch and testing around with the pattern (i.e. < $h.get; ... ; $h.slurp-rest(:bin) >) i don't get any data from the slurp-rest
16:13 psch https://gist.github.com/peschwa/7423e9802b1ba47739cb558dd77f84d1 like this
16:13 nine Maybe this combination of Str get and slurp-rest(:bin) doesn't work as well on the JVM
16:14 psch *also* scary is the new part in the updated gist
16:14 nine Shouldn't it be $h.slurp-rest(:bin)?
16:14 nine Or $h.slurp-rest: :bin
16:14 psch doesn't change anything
16:14 psch m: class A { methdo foo($) { } }; A.foo 1
16:14 camelia rakudo-moar f6bc8b: OUTPUT«===SORRY!=== Error while compiling /tmp/3JBUIlBsvD␤Unexpected block in infix position (missing statement control word before the expression?)␤at /tmp/3JBUIlBsvD:1␤------> class A { methdo foo($)⏏ { } }; A.foo 1␤    expecting any of:…»
16:15 psch m: class A { method foo($) { } }; A.foo 1
16:15 camelia rakudo-moar f6bc8b: OUTPUT«===SORRY!=== Error while compiling /tmp/mkAqX8uRQX␤Two terms in a row␤at /tmp/mkAqX8uRQX:1␤------> class A { method foo($) { } }; A.foo⏏ 1␤    expecting any of:␤        infix␤        infix stopper␤        statement end␤      …»
16:15 psch m: class A { method foo(:$a!) { } }; A.foo :a
16:15 camelia rakudo-moar f6bc8b: ( no output )
16:15 psch nameds are weird vOv
16:15 bartolin I seem to remember a bug for JVM wrt :chomp
16:15 bartolin some tests in S16-io/lines.t are fudged for JVM
16:15 bartolin .. though i'm not sure, that is related here
16:16 psch bbi20 or so o/
16:16 bartolin not ok 463 - handle 1,2: chomp => True / colons
16:16 bartolin expected: 'onetwo'
16:16 bartolin got: 'one:
16:16 bartolin :two:
16:17 bartolin ^^ that's one of the failing tests there.
16:28 nine I dare say the main issue here is different buffers used by different ways to read the file
16:43 psch well, i don't get it
16:43 psch i mean, something is weird with using a combination of .get and .slurp-rest, as the gist shows
16:44 psch i had thought it might be cause of all the ByteBuffer.flip()ing we do, but i don't grok what exactly we do in SyncHandle.read in the first place, so i don't know... :)
16:46 bartolin btw, I see no test for slurp-rest(:bin) in roast
16:48 nine psch: the weird thing is that while I can reproduce the problem with mixing get() and slurp-rest, it doesn't seem to affect precomp loading.
16:48 nine Run this twice: RAKUDO_MODULE_DEBUG=1 ./perl6-j -Ilib -e 'use Test'
16:48 nine Loading precompiled
16:48 nine /home/nine/rakudo/lib/.precomp/614C136150B073F1BC3374FAF4340A880DA97C37.1.46324436631E9/3A/3AF393AF91BDB1C86C71740C13F8E9A89BF7C3ED
16:49 nine Both times it seems to load the precompiled file just fine. I would assume that if loading was broken, it would kind of explode
16:49 psch nine: try 'use NativeCall' instead of Test
16:49 nine That looks like a different issue
16:50 nine Or maybe it really doesn't explode. I modified the precomp file so it definitely would no longer be valid and I still get no error.
16:50 psch fwiw, locally even "class Foo { }" doesn't load correctly without 'no precompilation'
16:53 nine What's the easiest way to add debug output to the Java code?
16:53 bartolin nine: and if you add '; ok 1' after 'use Test'?
17:10 nine psch: we never even tried to load the precomp due to the type difference you noticed
17:11 psch nine: yeah, but fixing that isn't enough, because the first few bytes aren't right
17:11 psch because it still has the 0x0a
17:15 nine I may have a workaround for that
17:20 nine Well, still not right there yet: java.lang.ClassFormatError: Incompatible magic value 173034243
17:21 nine Ah, a simple off by one error....another try
17:43 TimToady huh, my forest fire program is bust, something is deconting my neighbors...
17:44 TimToady (the program depends on the calculated neighbors being lvalues pointing back into the grid)
17:45 TimToady I wonder when it was borken...
17:46 sortiz joined #p6dev
18:19 TimToady m: https://gist.github.com/anonymous/5eb500b89fd6bcad63d35fdaeccd5d8d
18:19 camelia rakudo-moar f6bc8b: OUTPUT«Bad decont␤  in block <unit> at /tmp/mTNZ5_iO1d line 13␤␤»
18:19 TimToady there's a cutdown version of it
18:22 TimToady the forest fire program won't work unless we can assign back to a spot through the neighbor slice
18:23 jnthn star: https://gist.github.com/anonymous/5eb500b89fd6bcad63d35fdaeccd5d8d
18:23 camelia star-m 2016.01: ( no output )
18:25 * TimToady was planning to use the forest fire program at oscon maybe...
18:27 TimToady and it's just a lot cleaner to use a referential slice than an indirection...
18:30 TimToady I suppose if nothing is obvious, we could bisect
18:30 jnthn m: use nqp; my @spot = [rand xx 10] xx 10; say nqp::iscont($_) for (gather { take-rw @spot[0][0]; })
18:30 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:30 jnthn star: use nqp; my @spot = [rand xx 10] xx 10; say nqp::iscont($_) for (gather { take-rw @spot[0][0]; })
18:30 camelia star-m 2016.01: OUTPUT«0␤»
18:31 jnthn darn, over-recued it apparently
18:32 jnthn star: use nqp; my @spot = [rand xx 10] xx 10; for (gather { take-rw @spot[0][0]; }) <-> $_ { say nqp::iscont($_) }
18:32 camelia star-m 2016.01: OUTPUT«Parameter '$_' expected a writable container, but got Num value␤  in block <unit> at /tmp/nedoaWaoQZ line 1␤␤»
18:33 jnthn hm, if that doesn't work, how does it work on star from 2016.01 at all?
18:33 TimToady eager?
18:34 TimToady star: use nqp; my @spot = [rand xx 10] xx 10; for (eager gather { take-rw @spot[0][0]; }) <-> $_ { say nqp::iscont($_) }
18:34 camelia star-m 2016.01: OUTPUT«1␤»
18:34 jnthn m: use nqp; my @spot = [rand xx 10] xx 10; for (eager gather { take-rw @spot[0][0]; }) <-> $_ { say nqp::iscont($_) }
18:34 camelia rakudo-moar f6bc8b: OUTPUT«Parameter '$_' expected a writable container, but got Num value␤  in block <unit> at /tmp/gNaXPsd7dl line 1␤␤»
18:34 jnthn star: use nqp; my @spot = [rand xx 10] xx 10; for (eager gather { take-rw @spot[0][0]; }) <-> $_ { say nqp::iscont($_) }
18:34 camelia star-m 2016.01: OUTPUT«1␤»
18:34 jnthn aha
18:35 TimToady is that, 'aha, eager', or 'aha, I know what the problem is'?  :)
18:37 jnthn m: use nqp; say nqp::iscont (eager gather { take-rw my $a })[0]
18:37 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:37 jnthn star: use nqp; say nqp::iscont (eager gather { take-rw my $a })[0]
18:37 camelia star-m 2016.01: OUTPUT«1␤»
18:37 jnthn m: use nqp; say nqp::iscont (gather { take-rw my $a })[0]
18:37 camelia rakudo-moar f6bc8b: OUTPUT«1␤»
18:37 jnthn star: use nqp; say nqp::iscont (gather { take-rw my $a })[0]
18:37 camelia star-m 2016.01: OUTPUT«1␤»
18:38 jnthn I think that points the finger pretty strongly at eager
18:40 TimToady m: use nqp; say nqp::iscont (eager my $a)[0]
18:40 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:40 TimToady m: use nqp; say nqp::iscont (my $a)[0]
18:40 camelia rakudo-moar f6bc8b: OUTPUT«1␤»
18:41 TimToady kinda surprised we don't have a test that caught that...
18:43 jnthn Me too
18:43 jnthn m: use nqp; my \a = (gather { take-rw my $a }).list; say a.elems; say nqp::iscont(a[0]);
18:43 camelia rakudo-moar f6bc8b: OUTPUT«1␤0␤»
18:43 jnthn star: use nqp; my \a = (gather { take-rw my $a }).list; say a.elems; say nqp::iscont(a[0]);
18:43 camelia star-m 2016.01: OUTPUT«1␤1␤»
18:45 TimToady so the implicit eager in .elems is also clobbering it
18:45 TimToady explains some of my results with the big program
18:46 TimToady could fix the immediate assertion failure by removing eager, but still failed the same way later
18:47 TimToady m: use nqp; my \a = (my $a).list; say a.elems; say nqp::iscont(a[0]);
18:47 camelia rakudo-moar f6bc8b: OUTPUT«1␤0␤»
18:47 jnthn m: use nqp; my \ib = IterationBuffer.new; (gather { take-rw my $a }).iterator.push-all(ib); say nqp::iscont(ib[0]);
18:47 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:47 TimToady don't need the gather
18:47 jnthn star: use nqp; my \ib = IterationBuffer.new; (gather { take-rw my $a }).iterator.push-all(ib); say nqp::iscont(ib[0]);
18:47 camelia star-m 2016.01: OUTPUT«1␤»
18:49 jnthn star: use nqp; my \ib = IterationBuffer.new; (my $a).list.iterator.push-all(ib); say nqp::iscont(ib[0]);
18:49 camelia star-m 2016.01: OUTPUT«0␤»
18:50 TimToady star: use nqp; my \a = (my $a).list; say a.elems; say nqp::iscont(a[0]);
18:50 camelia star-m 2016.01: OUTPUT«1␤0␤»
18:50 jnthn m: use nqp; say nqp::iscont (my $a).list[0]
18:50 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:50 jnthn star: use nqp; say nqp::iscont (my $a).list[0]
18:50 camelia star-m 2016.01: OUTPUT«0␤»
18:50 TimToady star: use nqp; my \a = (my $a,).list; say a.elems; say nqp::iscont(a[0]);
18:50 camelia star-m 2016.01: OUTPUT«1␤1␤»
18:50 TimToady .list is no-oping on Scalar, seems
18:50 jnthn But that doesn't look like a change?
18:51 TimToady m: use nqp; my \a = (my $a,).list; say a.elems; say nqp::iscont(a[0]);
18:51 camelia rakudo-moar f6bc8b: OUTPUT«1␤1␤»
18:51 TimToady hmm
18:51 TimToady odd
18:53 jnthn m: use nqp; say nqp::iscont (gather { take-rw my $a }).iterator.pull-one
18:53 camelia rakudo-moar f6bc8b: OUTPUT«0␤»
18:53 jnthn star: use nqp; say nqp::iscont (gather { take-rw my $a }).iterator.pull-one
18:53 camelia star-m 2016.01: OUTPUT«0␤»
18:53 jnthn That's also odd
18:53 TimToady maybe the problem is in .push-all?
18:54 jnthn Well, except I'd expect that pull-one to give back a container there too?
18:54 jnthn star: say (gather { take-rw my $a }).iterator.pull-one.perl
18:54 camelia star-m 2016.01: OUTPUT«Any␤»
18:54 TimToady well, but if it fails in star...
18:54 jnthn Yeah, it can't be The Thing to blame but it's still odd
18:54 jnthn star: say (gather { take-rw my $a }).iterator.pull-one.VAR.WHAT
18:54 camelia star-m 2016.01: OUTPUT«(Any)␤»
18:55 TimToady might be a different bug we fixed after star
18:55 jnthn m: say (gather { take-rw my $a }).iterator.pull-one.VAR.WHAT
18:55 camelia rakudo-moar f6bc8b: OUTPUT«(Any)␤»
18:55 jnthn That seems wrong in both
18:55 jnthn There's a missing `is rw` on the pull-one
18:57 TimToady could that explain the original problem too?
18:57 jnthn We'll see :)
18:57 jnthn (Building...)
18:59 jnthn Yes, seems like it fixes the original too
19:00 TimToady looks like about a 1/3 of the method pull-one have 'is raw', and the rest are bare
19:01 TimToady did you put 'is rw' or 'is raw'?
19:02 TimToady surely 'is rw' would break some things
19:02 jnthn raw :)
19:02 jnthn Adding your case as a test, then will do a spectest run
19:03 TimToady I worry a bit about all the bare pull-ones that are out there
19:03 TimToady I suppose special ones might know there can't be an lvalue
19:04 TimToady but you'd think the lack of 'is raw' is causing unnecessary deconts in various spots
19:04 jnthn Yeah, worth reviewing them all
19:05 TimToady well, thanks for lookin' at this
19:06 * TimToady was sufficiently panicky about his oscon talk without the ohnoez
19:07 jnthn Don't think I'm up for the full audit this evening :)
19:07 jnthn But will push this fix and test provided spectest looks good
19:08 TimToady jnthn++
19:09 * TimToady is kinda glad it turned out to be a sin of omission rather than a sin of commission :)
19:09 jnthn :)
19:10 TimToady probably a "revealed check" situation, in chess terms
19:10 jnthn Up to S17 and no problems so far.
19:11 TimToady (my original plaint, that is)
19:12 TimToady hard to see how something could be relying on a premature decont...
19:13 TimToady maybe I just don't have a good enough imagination...
19:13 Ven joined #p6dev
19:15 dalek rakudo/nom: ad82657 | jnthn++ | src/core/Seq.pm:
19:15 dalek rakudo/nom: Add missing `is raw` needed to fix `take-rw`.
19:15 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/ad826574d8
19:15 dalek roast: 6fceefc | jnthn++ | S04-statements/gather.t:
19:15 dalek roast: Test for `take-rw`.
19:15 dalek roast: review: https://github.com/perl6/roast/commit/6fceefc0d5
19:15 jnthn There we go :)
19:15 jnthn Good luck with the talk :)
19:16 TimToady thanks for pulling my ox out of the ditch, whether or not you consider it the sabbath :)
19:17 jnthn :)
19:18 * jnthn wanders off to the corner shop
19:25 TimToady fyi forest fire works again, \o/
19:32 japhb TimToady: Is it the same one used in perl6-bench?  Or something different?
19:36 * moritz would guess Rosettacode
19:38 TimToady it's pretty close to RC's version
19:38 TimToady not the old one that copies arrays
19:39 timotimo how's the performance? should we put the new code into perl6-bench, or do we have to fix the one in perl6-bench?
19:40 TimToady well, the new one is always gonna be faster than the old one
19:41 timotimo not if it's purely a bugfix change
19:41 timotimo then we might have to make it slower
19:41 timotimo though what with 6.c that shouldn't be necessary often
19:42 TimToady there was some period of time between star and now that the new one wasn't working
19:43 TimToady dunno if the old one has had any dropouts
19:44 TimToady lunch &
19:45 timotimo i think we had a period of time where the rc-forest-fire in perl6-bench didn't work
19:49 japhb *sigh*
22:43 Ven joined #p6dev
23:04 nine Turns out: practically nothing about my first attempt at a loadbytecodebuffer implementation for JVM was right :)

| Channels | #p6dev index | Today | | Search | Google Search | Plain-Text | summary