Camelia, the Perl 6 bug

IRC log for #perl6, 2014-10-25

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs

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

All times shown according to UTC.

Time Nick Message
00:03 raiph joined #perl6
00:04 timotimo (yes, i know, i can yak all day long and not do anything; i should STFU or SUAC)
00:04 timotimo (that is: Shut Up And Code)
00:40 dalek perl6-bench/stress: 8cc7a59 | (Geoffrey Broadwell)++ | analyze:
00:40 dalek perl6-bench/stress: Add documentation for --show-rates and --show-failures
00:40 dalek perl6-bench/stress: review: https://github.com/japhb/pe​rl6-bench/commit/8cc7a59333
00:40 dalek perl6-bench/stress: d8b859a | (Geoffrey Broadwell)++ | timeall:
00:40 dalek perl6-bench/stress: Fix copy pasto in timeall docs
00:40 dalek perl6-bench/stress: review: https://github.com/japhb/pe​rl6-bench/commit/d8b859a8ba
00:40 dalek perl6-bench/stress: 88d279d | (Geoffrey Broadwell)++ | analyze:
00:40 dalek perl6-bench/stress: Fix undef warning in analyze when only analyzing one compiler
00:40 dalek perl6-bench/stress: review: https://github.com/japhb/pe​rl6-bench/commit/88d279d081
00:40 dalek perl6-bench/stress: f4eca3a | (Geoffrey Broadwell)++ | analyze:
00:40 dalek perl6-bench/stress: Only double space text summary output if more than one stat is being shown for each test
00:40 dalek perl6-bench/stress: review: https://github.com/japhb/pe​rl6-bench/commit/f4eca3a091
00:43 dalek perl6-bench/stress: 4107f13 | (Geoffrey Broadwell)++ | bench:
00:43 dalek perl6-bench/stress: Add first versions of 'stress' and 'diagnose' commands to bench
00:43 dalek perl6-bench/stress: review: https://github.com/japhb/pe​rl6-bench/commit/4107f13931
00:48 japhb OK, now I need some actual stress tests ...
00:50 timotimo please be more specific in defining "stress"?
00:51 japhb timotimo: A test that will fail to run at some scale level (not just timeout -- I'm talking segfault, signal, wrong output, that sort of thing)
00:52 timotimo oh, hmm
00:52 japhb My first thought is perhaps any flappy tests we have in roast, because those would at least get wrong output sometimes.
00:52 timotimo mhm mhm
00:53 timotimo i'm not 100% sure i can think of anything new off the top of my head
00:53 japhb Well, is there a list of said flappy tests?
00:55 timotimo S17-procasync/print.rakudo.moar
00:56 timotimo at least
00:56 timotimo i don't know what the exact flappers are
00:56 japhb OK
01:00 timotimo does this set of features also give regular benchmarks more interesting data/results/analysis?
01:08 japhb timotimo: Yes, timeall is now always collecting failure information, and can diagnose several different forms of failure (including output mismatch, if an expected output is defined for a test)
01:09 japhb And analyze can now (at least in text mode) show the failure profile of each test as it scales
01:10 japhb But I need some tests that actually fail to make sure I'm doing everything right.  :-)
01:11 * japhb is considering the value of having roast as a component, and teaching timeall to be able to run a set of tests from there.
01:12 japhb I need a simplified harness that can parse TAP output just well enough to determine if all tests were run and OK.
01:13 mauke_ joined #perl6
01:14 tony-o what happened to .resume; on errors?  it seems like none of them are resumable now..
01:19 mauke joined #perl6
01:21 tony-o colomon: http server async should pass tests on moar now
01:29 leont joined #perl6
01:30 mauke_ joined #perl6
01:32 timotimo japhb: i don't think i've run nqp benchmarks in quite some time, but as late as http://t.h8.lv/p6bench/2014​-09-18-pre_release_nqp.html ← this one, the for_* benchmarks weren't removed from the output, even though there was no data at all for them
01:37 mauke_ joined #perl6
01:38 timotimo i forgot to actually write the question
01:38 timotimo how should i investigate this
01:56 immortal joined #perl6
02:02 mauke joined #perl6
02:06 mauke_ joined #perl6
02:11 colomon joined #perl6
02:12 mauke joined #perl6
02:16 erkan joined #perl6
02:39 colomon joined #perl6
02:43 noganex joined #perl6
03:01 noganex_ joined #perl6
03:09 Mso150 joined #perl6
03:13 colomon labster: ping?
03:13 labster colomon: pong
03:13 colomon hi!
03:13 colomon didn't expect a quick response
03:13 colomon IO::Path::More is failing tests
03:14 colomon looks like some of them are because the dir sub returns IO::Path now (instead of Str)
03:16 labster Yeah, I'm around, but $dayjob is very busy for about 1 more week.
03:16 labster Thanks.
03:17 colomon gotcha
03:20 colomon I'll see if I can figure out what is going on and send pull requests.  but I think I need to sleep now
03:21 labster detailed test failures would be great
03:32 colomon o/
03:35 bonsaikitten # perl6-m
03:35 bonsaikitten > asd
03:35 bonsaikitten Could not find Perl6::BOOTSTRAP in any of: ., blib, /var/tmp/portage/dev-lang/moarvm-201​4.10/image/usr/languages/perl6/lib, /var/tmp/portage/dev-lang/moarvm-2​014.10/image/usr/languages/nqp/lib
03:35 bonsaikitten looks like moarvm wrongly absorbs build-time paths
03:36 bonsaikitten and thus rakudo-m fails to do anything useful
03:42 Mso150_w joined #perl6
03:56 immortal joined #perl6
04:18 mauke_ joined #perl6
04:26 mls joined #perl6
04:27 erkan joined #perl6
04:28 darutoko joined #perl6
04:37 kst joined #perl6
04:46 ggoebel111111111 joined #perl6
05:02 azawawi joined #perl6
05:02 azawawi hi
05:03 azawawi can someone please add https://github.com/azawawi/totem to the panda ecosystem?
05:07 immortal joined #perl6
05:07 immortal joined #perl6
05:10 xenoterracide_ joined #perl6
05:44 molaf joined #perl6
06:27 kaare_ joined #perl6
06:30 lizmat_ commute to T-Dose&
06:33 petercommand joined #perl6
06:43 woolfy1 left #perl6
07:02 gfldex joined #perl6
07:06 kurahaupo joined #perl6
07:13 molaf_ joined #perl6
07:26 psch joined #perl6
07:27 psch hello #perl6 o/
07:27 rindolf joined #perl6
07:59 rindolf joined #perl6
08:01 rindolf joined #perl6
08:10 lizmat joined #perl6
08:15 vike joined #perl6
08:24 lizmat good *, #perl6 from the T-DOSE
08:26 psch hi lizmat o/
08:26 cognominal joined #perl6
08:28 lizmat psch \o
08:28 rindolf lizmat: hi.
08:29 lizmat rindolf \o
08:29 rindolf lizmat: sup?
08:31 lizmat http://www.t-dose.org
08:37 moritz \o
08:37 lizmat moritz o/
08:42 rindolf joined #perl6
09:04 lizmat joined #perl6
09:05 rurban joined #perl6
09:09 Isp-sec joined #perl6
09:10 masak morn'z, #perl6
09:11 psch masak o/
09:11 masak I'll be relatively absent during the day, but it's still my hope to get another blog post out.
09:11 FROGGS timotimo: having all reports on one page is only true for the static web page of cpantesters, there's also a dynamic page
09:11 virtualsue joined #perl6
09:12 FROGGS timotimo: and, we would not have that problem of too many reports when we start :o)
09:14 lizmat joined #perl6
09:18 rmgk_ joined #perl6
09:19 woolfy joined #perl6
09:22 * woolfy and lizmat at T-DOSE ( www.t-dose.org ).  A speaker did not show up, now lizmat jumps in and gives a nice talk about Perl 6.  Some 20 people attending.
09:27 rindolf woolfy: nice.
09:36 kjs_ joined #perl6
10:04 lizmat joined #perl6
10:04 denis_boyun joined #perl6
10:06 FROGGS lizmat++
10:06 lizmat *phew*
10:06 lizmat stretching the "A State of Perl 6" lightning talk to 1 hour, was a bit of a stretch
10:07 lizmat fortunately I had to explain a lot of things that were assumed known in the slides
10:07 denis_boyun___ joined #perl6
10:10 psch lizmat++
10:18 woolfy lizmat++
10:19 woolfy The organisers of T-DOSE already were happy with us, and display of "of course we can whip up a presentation about Perl 6' made them close to delirious...
10:28 James__ joined #perl6
10:36 lizmat_ joined #perl6
10:38 lizmat_ joined #perl6
10:38 FROGGS *g*
10:40 dalek roast: 9e509a2 | (Elizabeth Mattijsen)++ | S09-typed-arrays/arrays.t:
10:40 dalek roast: Add tests for roundtripping typed arrays
10:40 dalek roast: review: https://github.com/perl6/roast/commit/9e509a2eb4
10:47 psch $ ./perl6 ++FOO --bar=test ++/FOO -e'say %*OPTS.perl'
10:47 psch ("FOO" => " --bar=test ").hash
10:47 psch \o/
10:47 psch although we might want the value as a HLL::CommandLine::Result as well i guess
10:48 psch or something similar from perl6 land
10:48 psch S19 is rather vague on this
10:48 psch hm, and i guess i have to trim the value too
10:51 FROGGS joined #perl6
10:51 cognominal are any of the Perl 6 related presentation at APW online?
10:53 psch cognominal: they're on the APW youtube channel: http://www.youtube.com/channel/​UCB9cjCMJPZRJrYyOw0Wo-oQ/videos
10:54 psch well, two at least, and i gather there were a few lightning talks too?
10:55 cognominal psch++
11:00 lizmat_ m: say $*VM.version
11:00 camelia rakudo-moar 315ec6: OUTPUT«v2014.9.54.g.3.ac.9.a.7␤»
11:00 kjs_ joined #perl6
11:00 lizmat_ hmmm... why isn't that saying v2014.10 something ??
11:01 virtualsue joined #perl6
11:02 FROGGS m: say $*PERL.compiler.build-date
11:02 camelia rakudo-moar 315ec6: OUTPUT«2014-10-22T20:30:08Z␤»
11:02 FROGGS lizmat_: that's the reason
11:02 FROGGS moritz: camelia got stuck three days ago
11:02 lizmat ah, hmm...
11:03 lizmat locally I get: $ 6 'say $*VM.version'
11:03 lizmat v2014.10
11:03 lizmat that feels incorrect as well, as I've done 1 push after the release
11:04 FROGGS lizmat: but you did not reconfigure I guess
11:04 lizmat ah,  good point
11:04 * lizmat reconfigures
11:06 * lizmat nukes install and reconfigures
11:08 FROGGS lizmat: I never have to nuke my install folder...
11:09 FROGGS I do that instead: https://gist.github.com/FR​OGGS/850dee443aeedc6f2a58
11:09 psch i usually do git clean -xdf by now
11:09 psch but that's pretty much nuking install/ i guess
11:10 FROGGS psch: I don't, because I usually have diffs in my checkouts
11:10 FROGGS or other test scripts
11:11 psch uncommitted/added diffs get preserved in the repo clean is run in, and -xdf doesn't descent into other repos
11:11 psch but the scripts would of course get nuked
11:12 psch well, whatever works, i've learned to not put test scripts in not-repos
11:12 psch but that's because i git clean
11:12 FROGGS yeah
11:12 lizmat $ 6 'say $*VM.version'
11:12 lizmat v2014.10
11:12 lizmat :-(
11:12 FROGGS O.o
11:13 lizmat $ 6 'say $*PERL.compiler.build-date'
11:13 lizmat 2014-10-25T11:11:27Z
11:13 lizmat it is the newly built one
11:13 FROGGS I have no idea then
11:16 lizmat feels like some git magic is missing
11:44 kjs_ joined #perl6
11:45 leont joined #perl6
12:00 dalek panda: 9497994 | (Elizabeth Mattijsen)++ | / (8 files):
12:00 dalek panda: Fix 2014.10 deprecations
12:00 dalek panda: review: https://github.com/tadzik/panda/commit/9497994202
12:10 kaare_ joined #perl6
12:37 erkan joined #perl6
12:47 rindolf joined #perl6
12:49 dalek roast: 60a2bd5 | (Pepe Schwarz)++ | S19-command-line (4 files):
12:49 dalek roast: Correct a few tests for S19 and their fudging.
12:49 dalek roast: review: https://github.com/perl6/roast/commit/60a2bd5c54
12:51 spider-mario joined #perl6
12:51 spider-mario joined #perl6
12:52 psch hm, how do i deal with the accidental PR from yesterday that wants to merge the same branch i'd want to merge now?
12:52 psch does it get updated to the current state of the branch when i reopen it?
12:52 * psch .oO( maybe i shouldn't have closed it... )
12:53 denis_boyun_ joined #perl6
13:00 raiph joined #perl6
13:04 immortal joined #perl6
13:11 rindolf joined #perl6
13:13 psch https://github.com/rakudo/rakudo/pull/324
13:13 psch apparently just reopening works \o/
13:23 psch i'm still not 100% sure if i'm handling options with optional values well
13:25 psch as it is in the PR i'm only taking a optional value for those options when there's an equals sign
13:26 psch otherwise, the option simply doesn't get a value, even if there's something that could be the value, which might result in a broken invocation
13:26 psch e.g. «perl6 --doc Pod::To::HTML $somefile» would complain with 'File not found Pod::To::HTML'
13:28 psch i can't assume that the next token is always an option, because then «perl6 --stagestats $file» never runs the file
13:31 psch https://github.com/rakudo/rakudo/pull/324/fi​les#diff-c722fa19c07b584633fcb8fd94a98650R90 this is what i'm doing
13:32 psch i've thought of branching there with something like: «|| <.ws> { die "please use an =" }» but then optional values aren't optional anymore...
13:32 psch branching between line 94 and 95, that is
13:33 rindolf joined #perl6
13:37 kaare_ joined #perl6
13:45 masak lizmat++ # jumping in and giving a Perl 6 talk
13:47 colomon masak: context for that lizmat++ ?
13:47 colomon found it in the backlog, lizmat++ indeed!
13:52 breinbaas http://www.t-dose.org/,  Eindhoven - where they have the highest IQ per square km in Europe (at least, that's what they say)  :)
13:53 dalek rakudo/nom: 5f797ed | (Elizabeth Mattijsen)++ | src/core/ (2 files):
13:53 dalek rakudo/nom: s/x/tai, as x is so meaningless
13:53 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5f797ed75b
13:59 lizmat m: say try die  # does not actually die
13:59 camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
14:00 lizmat m: say try +"foo"  # this does, why ?
14:00 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in method gist at src/gen/m-CORE.setting:13672␤  in sub say at src/gen/m-CORE.setting:15862␤  in block <unit> at /tmp/HzF9JlwvI6:1␤␤»
14:01 lizmat rakudobug ?
14:03 xenoterracide_ joined #perl6
14:03 masak I'd say so.
14:03 masak please submit.
14:08 woolfy1 joined #perl6
14:11 xenoterracide_ joined #perl6
14:12 lizmat I'm told that all of YAPC::EU videos are now online
14:12 lizmat "including few small eastereggs videos, which are some jokes or announcements :)"
14:14 lizmat rakudobug submitted: #123053
14:14 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=123053
14:15 cognominal https://www.youtube.com/user/yapceu/videos
14:28 kjs_ joined #perl6
14:36 FROGGS m: m: say (try +"foo").WHAT
14:36 camelia rakudo-moar 315ec6: OUTPUT«(Failure)␤»
14:36 FROGGS lizmat: you pass a Failure to say()
14:37 FROGGS m: m: say (try +"foo").gist
14:37 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in method gist at src/gen/m-CORE.setting:13672␤  in block <unit> at /tmp/6o2Zc5kHdZ:1␤␤»
14:37 FROGGS m: m: say so (try +"foo")
14:37 camelia rakudo-moar 315ec6: OUTPUT«False␤»
14:37 lizmat m: my $a = try "foo".Numeric  # and this ?
14:37 camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/languages/perl6/r​untime/CORE.setting.moarvm:throw:4294967295)␤ from …»
14:39 FROGGS m: my $a = try "foo".Numeric; 1
14:39 camelia rakudo-moar 315ec6: ( no output )
14:39 psch m: my $a; try $a = "foo".Numeric; $!.say
14:39 camelia rakudo-moar 315ec6: OUTPUT«(Any)␤»
14:39 rurban1 joined #perl6
14:39 FROGGS lizmat: end of block will be evaluated
14:40 lizmat m: say (try "foo".Numeric).WHAT
14:40 camelia rakudo-moar 315ec6: OUTPUT«(Failure)␤»
14:40 lizmat m: say (try die).WHAT
14:40 camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
14:40 lizmat shouldn't that also be a Failure then /
14:40 lizmat ?
14:40 FROGGS m: say (try fail "foo").WHAT
14:41 camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: foo␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/languages/perl6/r​untime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680  (/home/camelia/rakudo-inst-1/languages/per​l6/runtime/CORE.setting.moarvm:sink:29)…»
14:41 FROGGS I dunno
14:41 psch it does seem somewhat leaky
14:41 FROGGS feels weird all in all
14:41 rindolf joined #perl6
14:42 lizmat I stumbled on this when Juerd was asking me about being able to do "42 + 'foo'"
14:42 lizmat having "foo" revert to 0
14:43 lizmat first attempt was:
14:43 lizmat m: say 42 + try +"foo"
14:43 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in method Numeric at src/gen/m-CORE.setting:13670␤  in sub infix:<+> at src/gen/m-CORE.setting:4472␤  in block <unit> at /tmp/SPz96lb…»
14:44 lizmat m: say 42 + try { +"foo" } // 0
14:44 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏foo' (indicated by ⏏)␤  in method Numeric at src/gen/m-CORE.setting:13670␤  in sub infix:<+> at src/gen/m-CORE.setting:4472␤  in block <unit> at /tmp/XqS7LWQ…»
14:46 lizmat I guess S04:1054 applies here
14:46 synopsebot Link: http://perlcabal.org/syn/S04.html#line_1054
14:46 lizmat "Additionally, the C<try> block or statement implicitly enforces a C<use fatal> context such that failures are immediately thrown as exceptions."
14:46 vendethiel joined #perl6
14:47 davido_home joined #perl6
14:48 vendethiel o/, #perl6.
14:49 psch vendethiel o/
14:49 lizmat so is the "use fatal" leaking outward ?
14:49 lizmat vendethiel \o
14:51 xfix joined #perl6
14:52 psch lizmat: i think try { } is wrong here
14:52 psch lizmat: cf. "A try block by default has a CATCH block that handles all fatal exceptions by ignoring them."
14:52 lizmat indeed
14:52 psch m: { +"foo"; CATCH { default { } } }; say "alive" # this is ignoring
14:52 camelia rakudo-moar 315ec6: OUTPUT«alive␤»
14:53 psch m: say 42 + do { +"foo"; CATCH { default { } } }
14:53 camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context  in block <unit> at /tmp/UJ5aTieH6L:1␤␤42␤»
14:53 lizmat m: say try fail
14:53 camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: ␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/languages/perl6/r​untime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680  (/home/camelia/rakudo-inst-1/languages/per​l6/runtime/CORE.setting.moarvm:sink:29)␤…»
14:53 psch m: say 42 + do { { +"foo"; CATCH { default { } } } // 0 }
14:53 camelia rakudo-moar 315ec6: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \v: *%_)␤  in sub infix:<+> at src/gen/m-CORE.setting:4472␤  in block <unit> at /tmp/EIBebb9ZQL:1␤␤»
14:55 psch m: say 42 + (do { +"foo";  CATCH { default { } }; } // 0) # what Juerd wanted, i think
14:55 camelia rakudo-moar 315ec6: OUTPUT«42␤»
14:55 psch slightly unwieldy
14:55 araujo joined #perl6
14:55 psch it should work with try though
14:55 Juerd psch: Slightly...?
14:55 lizmat so it seems that a *fail* is not handled by try
14:55 lizmat m: say throw try fail
14:55 camelia rakudo-moar 315ec6: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/KrCI7bYOlBâ�¤Undeclared routine:â�¤    throw used at line 1â�¤â�¤Â»
14:55 lizmat m: say try fail.throw
14:55 camelia rakudo-moar 315ec6: OUTPUT«Unhandled exception: ␤   at <unknown>:1  (/home/camelia/rakudo-inst-1/languages/perl6/r​untime/CORE.setting.moarvm:throw:4294967295)␤ from src/gen/m-CORE.setting:13680  (/home/camelia/rakudo-inst-1/languages/per​l6/runtime/CORE.setting.moarvm:sink:29)␤…»
14:55 psch Juerd: i'm writing quite a bit of java recently, i might have a bit of a warped perception... :)
14:57 xenoterracide joined #perl6
15:03 xenoterracide joined #perl6
15:05 masak I just got bitten by "passed a named param to a .new method, program compiled, error (much later) at runtime"
15:05 masak again.
15:05 masak I think we could detect this one statically. and I think there's a case for it being core, and on by default.
15:05 masak at least a warning.
15:06 masak m: class C { has $.x }; C.new(:x(1), :y(2)); say "alive, no warning"
15:06 camelia rakudo-moar 315ec6: OUTPUT«alive, no warning␤»
15:07 masak I would be 100% fine with the analysis being extremely stupid -- i.e. only cover the cases where the class is known at author time, and where we know for 100% sure that no attribute can possibly be there.
15:07 masak the above is such a case.
15:07 * masak waves the campaign flag for this concern -- vive la catching of user mistakes!
15:09 lizmat .oO( this was one of the first peeves I had with Perl 6, already 2+ years ago )
15:09 lizmat so count me in, masak  :-)
15:09 masak \o/
15:09 masak I propose doing it in a branch, as an experiment, to see what the fallout is.
15:09 masak I might even have time to dig into it myself.
15:10 masak it feels like the MOP should be up to this. #fromthedepartmentofthebleedingobvious
15:17 xenoterracide_ joined #perl6
15:18 vendethiel +1; this is a peeve as well: P
15:18 colomon +1
15:19 masak ok, just to be clear, here's the behavior I propose:
15:19 masak (a) when we parse a .new call
15:19 masak (b) to a class we know statically
15:20 masak (c) whose .new method has not been overridden
15:20 masak (d) with at least one named argument that would just get lost in space (because there's no corresponding public attribute)
15:21 masak ...warn with an error message containing the name(s) of the named(s) with missing attribute(s)
15:21 BenGoldberg joined #perl6
15:22 lizmat why limit this to .new ??
15:23 masak I guess because at some level, I still believe in S12's "Interface Consistency".
15:24 masak I just want to catch likely thinkos, not forbid extensionality outright.
15:24 vendethiel mmh.
15:24 vendethiel m: class A{has $.a;};class B{has $.b;}; say B.new(:5a).a
15:24 camelia rakudo-moar 315ec6: OUTPUT«No such method 'a' for invocant of type 'B'␤  in block <unit> at /tmp/euQL41XfFb:1␤␤»
15:24 * colomon fears this uncertainty about how to go about this is why we have no fix for this already.
15:24 vendethiel m: class A{has $.a;};class B is A{has $.b;}; say B.new(:5a).a
15:24 camelia rakudo-moar 315ec6: OUTPUT«===SORRY!===␤Could not locate compile-time value for symbol $?CLASS␤»
15:24 vendethiel wut
15:25 lizmat space?  A{  ?
15:25 colomon m: sub dummy { Nil; }; say dummy().WHAT
15:25 camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
15:25 masak colomon: no uncertainty, in my view. lizmat's is a legitimate question, but it also has a motivated answer, IMO.
15:27 colomon say $*CWD
15:27 colomon m: say $*CWD
15:27 camelia rakudo-moar 315ec6: OUTPUT«"/home/camelia".IO␤»
15:28 molaf joined #perl6
15:31 masak anyway, vendethiel: your example would of course be detected by the MOP as B having an $.a
15:31 vendethiel oke :)
15:32 masak so I foresee no ambiguity or false positives there
15:33 vendethiel .oO( let's trust masak's foreshadowings )
15:34 guru joined #perl6
15:41 colomon m: my $a = Nil; say $a
15:41 camelia rakudo-moar 315ec6: OUTPUT«(Any)␤»
15:42 colomon m: my $a := Nil; say $a
15:42 camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
15:42 woolfy1 left #perl6
15:44 lizmat m: my $a is default(Nil); say $a
15:44 camelia rakudo-moar 315ec6: OUTPUT«Nil␤»
15:44 psch m: .say if 'B' fff 'B' for <A B C B A>
15:44 camelia rakudo-moar 315ec6: OUTPUT«B␤C␤B␤»
15:44 lizmat the only way to have assignment to a var give Nil
15:44 Ven joined #perl6
15:44 erkan joined #perl6
15:44 erkan joined #perl6
15:44 psch m: $a.say if $a ~~ ('B' fff 'B') for <A B C B A>
15:44 camelia rakudo-moar 315ec6: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/MfQj5qujMfâ�¤Variable '$a' is not declaredâ�¤at /tmp/MfQj5qujMf:1â�¤------> [32m$a.say[33mâ��[31m if $a ~~ ('B' fff 'B') for <A B C B A>[0mâ�¤    expecting any of:â�¤        method argumentsâ�¤ …»
15:45 psch m: $a.say if $a ~~ ('B' fff 'B') for <A B C B A>  -> $a
15:45 camelia rakudo-moar 315ec6: OUTPUT«[31m===[0mSORRY![31m===[0m Error while compiling /tmp/E2KmAcRHVdâ�¤Variable '$a' is not declaredâ�¤at /tmp/E2KmAcRHVd:1â�¤------> [32m$a.say[33mâ��[31m if $a ~~ ('B' fff 'B') for <A B C B A> [0mâ�¤    expecting any of:â�¤        method argumentsâ�¤â€¦Â»
15:45 psch heh
15:45 psch m: for <A B C B A> -> $a { $a.say if $a ~~ ('B' fff 'B') }
15:45 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏B' (indicated by ⏏)␤  in method Numeric at src/gen/m-CORE.setting:13670␤  in sub infix:<==> at src/gen/m-CORE.setting:4522␤  in sub infix:<==> at src/gen/m-C…»
15:45 lizmat I just realized that it is the lack of 'use fatal' implementation, is what try +"foo" makes fail
15:45 lizmat m: say 42 + try (+"foo").throw
15:45 camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context  in block <unit> at /tmp/DrvFxtxJR5:1␤␤42␤»
15:46 psch m: for 1, 2, 3, 2, 1 -> $a { $a.say if $a ~~ (2 fff 2) }
15:46 camelia rakudo-moar 315ec6: ( no output )
15:47 lizmat end of day 1 of T-Dose
15:47 lizmat social event&
15:47 psch the last two should work, i feel
15:47 psch which means i probably overlooked something when patching this a few weeks back
15:48 psch vendethiel: re: "can't rebase PRs".  what exactly did you mean?
15:48 Ven psch: you can't change your branch target
15:49 colomon m: say " ".path.WHAT
15:49 camelia rakudo-moar 315ec6: OUTPUT«(IO::Path)␤»
15:49 colomon m: say " ".IO.WHAT
15:49 camelia rakudo-moar 315ec6: OUTPUT«(IO::Path)␤»
15:49 colomon m: say " ".IO.path.WHAT
15:49 camelia rakudo-moar 315ec6: OUTPUT«(Str)␤»
15:49 psch Ven: the one i want to merge from, right?
15:50 psch or the one i merge to?
15:50 Ven psch: I think neither can be changed
15:50 psch (github calls them 'base' and 'head')
15:50 colomon darn, just wanted to ask lizmat++ a question
15:51 psch Ven: https://help.github.com/articles/usi​ng-pull-requests/#changing-the-branc​h-range-and-destination-repository but i can't do that.  i suspect the merging party can decide where to merge to
15:52 psch or maybe closing and reopening locks that
15:53 psch oh
15:53 psch no, i understand, after rereading.  before creation base and head can be changed
15:53 psch but after creation they're set, because one probably knew what one was doing
15:54 erdic joined #perl6
15:56 MilkmanDan joined #perl6
15:56 rindolf joined #perl6
16:00 davido_home joined #perl6
16:02 psch m: for <A B C B A> -> $a { $a.say if $a ~~ {'B' fff 'B'} }
16:02 camelia rakudo-moar 315ec6: OUTPUT«B␤B␤»
16:04 BenGoldberg m: say 2 fff 2;
16:04 camelia rakudo-moar 315ec6: OUTPUT«use of uninitialized value of type Nil in numeric context  in block <unit> at /tmp/iHvfDghYC5:1␤␤Nil␤»
16:05 psch i think there's a .Bool call missing now
16:06 psch inside Perl6::Actions &flipflop
16:06 psch m: for <A B C B A> { say "B" fff "B" }
16:06 camelia rakudo-moar 315ec6: OUTPUT«Nil␤1␤2␤3␤Nil␤»
16:07 virtualsue joined #perl6
16:08 rurban joined #perl6
16:10 xenoterracide_ joined #perl6
16:10 rindolf joined #perl6
16:11 xenoterracide_ joined #perl6
16:15 dalek roast: 933059b | usev6++ | S04-phasers/keep-undo.t:
16:15 dalek roast: Add tests for RT #111866
16:15 dalek roast: review: https://github.com/perl6/roast/commit/933059b19f
16:15 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=111866
16:20 dalek roast: fc20e7e | usev6++ | S02-names-vars/perl.t:
16:20 dalek roast: Fudge (skip) flapping test for rakudo.jvm
16:20 dalek roast: review: https://github.com/perl6/roast/commit/fc20e7ec10
16:21 Noughb joined #perl6
16:22 Noughb How's perl6 coming along? Heading for an offical release any time soon?
16:23 timotimo we've been doing monthly official releases for over a year :)
16:23 timotimo but that's probably not what you mean
16:23 awwaiid Noughb: apt-get install rakudo
16:23 awwaiid (or better yet build the latest)
16:23 psch (building the latest)++
16:23 timotimo if you're looking for "when will we call the specification 6.0.0", there's three really big items that need resolving:
16:23 timotimo the GLR, NSA and NFG
16:23 timotimo which are the Great List Refactor (unifying and de-special-casing and also speedifying lists and iterators)
16:24 timotimo Native Shaped Arrays, which gives us tightly packed arrays of native values like ints/chars/doubles/...
16:24 timotimo and Normalized Form Grapheme, which is a way to get a string to have a single codepoint per grapheme no matter what crazy diacritics your troll users throw at you
16:24 psch hrm, i fixed $a ~~ ($x fff $y), but that breaks 16 tests in flip-flop.t :/
16:24 kurahaupo_ joined #perl6
16:25 timotimo Noughb: if you have more specific questions, we'll be happy to give you answers
16:26 timotimo for example, if you're worried about rakudo's performance, i can say that we've made a lot of headway over the last year and the GLR will give us a final, much needed boost towards not having to worry about performance any more
16:28 TimToady (we hope)
16:28 timotimo well, you better make it work right! :P
16:29 Noughb http://3.bp.blogspot.com/-CDUNCGqVadY/UOoCze​FgspI/AAAAAAAAFEM/x-buLQfCKB4/s1600/kel.gif
16:29 timotimo Noughb: feel free to ask specific questions :)
16:29 Ven joined #perl6
16:30 psch so what are ff and fff supposed to return? perl5 .. and ... return a 'boolean in item context', which we completely replace with ff and fff
16:30 TimToady p5 has no booleans :)
16:31 psch spectests currently don't look like they want Bools returned
16:31 * masak .oO( p5 has no booleans -- true or false? )
16:31 TimToady p5 returns increasing integers
16:31 psch TimToady: right, perldoc says "boolean value", i dropped the value
16:31 psch (it also says "scalar context", not "item context")
16:32 psch TimToady: does « $a ~~ ("A" fff "B") » look sensible to you?
16:32 psch m: for <A B C B A> -> $a { $a.say if $a ~~ {'B' fff 'B'} } # as here
16:32 camelia rakudo-moar 315ec6: OUTPUT«B␤B␤»
16:33 psch m: for <A B C B A> -> $a { $a.say if $a ~~ ('B' fff 'B') } # actually, this one
16:33 camelia rakudo-moar 315ec6: OUTPUT«Cannot convert string to number: base-10 number must begin with valid digits or '.' in '⏏B' (indicated by ⏏)␤  in method Numeric at src/gen/m-CORE.setting:13670␤  in sub infix:<==> at src/gen/m-CORE.setting:4522␤  in sub infix:<==> at src/gen/m-C…»
16:35 psch m: for <A B C B A> -> $a { $a.say if $a ~~ ?('B' fff 'B') } # nvm
16:35 camelia rakudo-moar 315ec6: OUTPUT«B␤C␤B␤»
16:36 xenoterracide joined #perl6
16:36 psch i'm perfectly ok with that, no need to patch anything :)
16:36 TimToady with parens you're getting a double smartmatch
16:36 TimToady since integers are not Bool, Nil, Match, or Failure
16:37 psch TimToady: and ~~ bind tighter than fff, so i need prefix:<?>
16:37 psch i just took a bit too long to think of it
16:38 psch some context: http://irclog.perlgeek.de/​perl6/2014-07-20#i_9052245
16:39 zakharyas joined #perl6
16:41 TimToady the ? returns a Bool, which prevents a subsequent 'B' ~~ 1
16:45 kurahaupo joined #perl6
16:46 tadzik timotimo: (rakudobrew spectest suite) I don't see a problem :)
16:46 timotimo cool :)
16:46 tadzik where would it upload them, the not-yet-written cpandatesters? :)
16:47 tadzik timotimo: so your talk is not yet on APW's YT channel?
16:47 * TimToady wonders if fff should return True but 1, True but 2, etc.
16:47 * TimToady wonders if people understand a bit better now what the OKness proposal was about
16:49 TimToady we have this arbitrary list of values that are primarily intended to convey success/failure along with other pertinent information
16:49 TimToady in this case, we'd like a value that can return the line count while indicating success to smartmatching
16:50 tadzik sub compsuffix is export { state $ = $*VM.precomp-ext } # <3
16:50 timotimo tadzik: it's a single video with all lightning talks in it
16:50 tadzik lizmat++ and (rakudo team)++ :)
16:50 tadzik timotimo: ah, okay
16:53 psch TimToady: "line count" means "state changes"? i like the idea of returning True but $state, but i've repeatedly been told that mixins in CORE are slow
16:54 psch although prefixing with ? or so does seem a bit magic
16:54 TimToady "how many lines in this range so far"
16:54 TimToady so in your case you get 1,2,3
16:54 psch right, for the 2nd, 3rd and 4th iteration
16:54 TimToady relative line numbers, basically
16:54 psch state change is wrong, i see
16:55 TimToady for a loose definition of "line"
16:55 TimToady sequence numbers
16:56 TimToady p5 actaully return "3e0" on the last one, do you can recognize the end, marked by the 'e' :)
16:56 TimToady *so
16:57 TimToady but that's a terrible hack, so we have ^ instead
16:57 TimToady by analogy to ^..^
16:57 timotimo https://github.com/koorchik/​formula-evaluation-benchmark - we have a new benchmark to excell at!
16:58 TimToady quick, stomp the excellerator!
17:02 timotimo huh, look at how the functions are implemented: https://github.com/koorchik/formula-evalu​ation-benchmark/blob/master/perl6/ast.pl
17:02 timotimo @ast[$i].isa('Array') - oh my
17:03 psch that looks convoluted
17:03 timotimo that is some pretty unidiomatic perl6 code
17:03 tadzik FROGGS: yt?
17:04 psch timotimo: seems like a as-close-as-possible translation of the corresponding p5 code
17:05 timotimo it's not very close, i don't think
17:05 timotimo for example, in perl5 the names are constants, in perl6 they are variables
17:06 masak s/variables/first-class package objects/
17:07 timotimo i just went ahead and invited him to our irc channel
17:08 * timotimo afk for a bit :P
17:08 psch :D
17:13 moritz after GLR,   my $c = <a b c>; $c.push: 'd'  will work, right?
17:18 timotimo i'm pretty sure it should
17:18 TimToady a stronger case can be made for .plan than for .push
17:19 timotimo i'll run the benchmark through the profiler and see what's what
17:20 TimToady doubtless there are some optimizations that could depend on knowing whether a particular list can be extended
17:21 dalek roast/glr: de481bf | moritz++ | S (6 files):
17:21 dalek roast/glr: start to get rid of Parcel
17:21 dalek roast/glr: review: https://github.com/perl6/roast/commit/de481bfc4f
17:22 TimToady so maybe we need a monadoid to manage that
17:22 psch fwiw, 100 iterations of smart-match and flipflop code above with Bool mixin clocks in at about .79 seconds on my machine.  nom is at about .38
17:23 psch i.e. "True but $seqnum" flipflop is about half as fast as current flipflop
17:24 psch although i'm sure it could be solved smarter than i solved it, but i don't know if i can make up a smarter solution
17:24 timotimo psch: since these values usually start at 0, maybe we can have a cache that keeps the boxed and mixed-in objects around and then just clones them each time?
17:25 psch timotimo: they start at 1 for flip flop, but i'd say "yes we can"
17:25 psch maybe i can figure that out, probably not this weekend though
17:25 moritz TimToady: I thought about more .map and .for methods; if we have both, I'd be weird to have 'for' as a syntactic construct but 'map' as a sub
17:25 thou joined #perl6
17:26 moritz so for @list {block}, but map {block}, @list
17:26 moritz TimToady: any plans on makiing 'map @list {block}' work too?
17:27 TimToady I think that hobgoblin lives off in a corner, and can be probably be ignored :)
17:27 psch oh, also of note: i'm not running jitted, which might make a difference with the 500 prefix:<++> that my little benchmark here runs
17:27 psch ...actually 300
17:28 TimToady as for statement control map, it would be too ambiguous with the function
17:28 timotimo ah, hm.
17:29 TimToady are you mixing the number in each time?  that sounds heavy
17:30 timotimo doesn't each mixin action cause Moar's specializer to go "okay, global deoptimization time!"
17:30 TimToady maybe we should look for bit that we can set in success/failure values that smartmatch can check very quickly
17:31 * TimToady refrains from calling it the OKness bit
17:31 TimToady but something on the level of .DEFINITE
17:32 * TimToady would like jnthn++'s opinion on that
17:33 TimToady we don't have to call it .OKness, feel free to bikeshed what a "successfulness" bit would be named
17:33 psch yeah, my implementation is as naive as it can get
17:33 timotimo let's call it the "good bit"
17:33 timotimo (like the "evil bit" that we have in networking)
17:33 TimToady well, but what if it's bad this time?
17:34 timotimo hmm
17:34 timotimo maybe we should call it something without an inherent value
17:34 timotimo like a "duck bit"
17:35 TimToady but it wants to express meta-value
17:35 psch https://github.com/rakudo/rakudo/bl​ob/nom/src/Perl6/Actions.nqp#L5333 i'm just wrapping this Op.new in another one that amounts to $state.Bool but $state
17:35 moritz any objections to me introducing method for as  self.flat.map?
17:35 moritz that way code can start to use it, and have a chance to break less during GLR
17:35 TimToady seems okay to me
17:36 timotimo there you're using that "okay" word again!
17:37 moritz m: say ((1, 2), (3, 4)).map({ say .perl; $_ })
17:37 camelia rakudo-moar 315ec6: OUTPUT«1␤2␤3␤4␤1 2 3 4␤»
17:37 moritz m: say ((1, 2), (3, 4)).map({ say .perl; $_ }).perl
17:37 camelia rakudo-moar 315ec6: OUTPUT«1␤2␤3␤4␤(1, 2, 3, 4).list␤»
17:37 moritz seems .map already behaves like .for will
17:38 dalek rakudo/nom: 081fa81 | moritz++ | src/core/Str.pm:
17:38 dalek rakudo/nom: micro-optimize Str.trans
17:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/081fa81896
17:38 dalek rakudo/nom: af9e90e | moritz++ | src/core/ListIter.pm:
17:38 dalek rakudo/nom: smaller scope in ListIter.reify
17:38 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/af9e90e2d9
17:39 TimToady moritz: yes, but .map's .flat is going away
17:39 moritz TimToady: right
17:40 virtualsue joined #perl6
17:41 timotimo oh, look, we have 18.28% of exclusive time spent in ListIter.reify ... again
17:41 tadzik in that benchmark?
17:42 tadzik funny things is, it bails out with a wrong sum at the second run
17:42 timotimo yeah, it does 10k iterations and expects the result to be the same as for 100k iterations
17:42 timotimo i set the number of iterations back up to 100k
17:42 timotimo http://t.h8.lv/p6profile/formula_profile_1.html
17:43 timotimo second most exclusive time spent is gimme, at 10.5%
17:43 timotimo damn the GLR is needed.
17:44 Ven timotimo: remember my profiling :)? (of the game of life)
17:44 timotimo yeah, how much was that again?
17:44 tadzik I like how 75% of stuff is jat
17:44 tadzik otoh, is that the reason for incorrect results?
17:44 Ven around 55% in the different list/map methods
17:44 * TimToady is looking forward to hypers on native arrays
17:45 tadzik ah, that's just a bug in the code, alrihgt
17:46 timotimo 4% exclusive time spent in isa
17:47 dalek roast: d262e2e | (Pepe Schwarz)++ | S03-operators/flip-flop.t:
17:47 dalek roast: Add a test for flip-flop with "True but $seqnum".
17:47 dalek roast: review: https://github.com/perl6/roast/commit/d262e2ed9f
17:49 FROGGS_ joined #perl6
17:53 TimToady or maybe we should just make it easier to generate fake Match objects with numeric values
17:54 TimToady not sure that would beat True but $seqnum though
17:55 TimToady it would fit into the current I-know-success-when-I-see-it scheme though
17:55 Mso150 joined #perl6
17:56 TimToady would be kinda funny to have a Match object that + return 3 for, but @ return nothing
17:56 psch fwiw, i've been thinking of True but $seqnum as a name for the semantics
17:57 TimToady maybe there's some way to optimize creation of Bool plus a payload
17:58 TimToady after all, Failure can be seen as kind of a Nil plus a payload
17:58 TimToady that's why I'm thinking leave Bool alone and muck with Match instead
17:58 timotimo COMPUTED [100000] ITERATIONS IN [87] SECONDS
17:59 timotimo waitwhat.
17:59 timotimo what did i do?
17:59 timotimo oh
18:00 TimToady ohoh
18:00 timotimo i replaced the custom sum implementation with [+] @args
18:00 timotimo http://t.h8.lv/p6profile/formula_profile_2.html
18:00 timotimo not sure if that's all that's responsible, though
18:02 TimToady [+] is one of those operators that could actually be parallelized internally, given a suitable data structure
18:03 timotimo hm.
18:03 TimToady likewise [*], though in either case one could get weirdness near the Rat->Num promotion
18:03 timotimo mhm
18:05 TimToady probably compiling those down to very tight jitted code is more useful in general
18:07 timotimo how exactly do we [+]?
18:08 timotimo that's reduce_left, right?
18:08 masak [+] and [*] could be map-reduced, because of their monoidal structure.
18:09 timotimo yeah, they could
18:09 TimToady well, it's METAOP_REDUCE_LEFT actually
18:10 TimToady but in general you can trap it at compile time since the ops are lexically scoped
18:10 timotimo right
18:10 timotimo the optimizer could know about that or we could have a trait for these operators that lend themselves to be map-reduced
18:11 TimToady well, METAOP_REDUCE_LEFT is actually called at compile time, iiuc
18:12 TimToady or at least it could be
18:12 timotimo m: say "the custom sum operation makes the program take { 339 / 87 } times longer than with [+]"
18:12 camelia rakudo-moar 315ec6: OUTPUT«the custom sum operation makes the program take 3.896552 times longer than with [+]␤»
18:13 TimToady is the custom sum routine done in natives?
18:13 timotimo maybe all we need to do for that to work is put an "is pure" trait on those
18:13 timotimo i don't think so
18:13 TimToady well, not that [+] is either
18:14 masak the operator needs to be associative.
18:16 timotimo ah, also: the code there is working with rational numbers instead of ints and stuff
18:16 timotimo that may also have strong performance implications
18:17 TimToady we've specced 'native' rats, but we don't have 'em yet
18:17 timotimo right
18:18 Sqirrel joined #perl6
18:20 dwarring joined #perl6
18:22 virtualsue left #perl6
18:27 dalek roast: 72709f1 | usev6++ | S05-metasyntax/unknown.t:
18:27 dalek roast: Add test for RT #77562
18:27 dalek roast: review: https://github.com/perl6/roast/commit/72709f1783
18:27 synopsebot Link: https://rt.perl.org/rt3//Publ​ic/Bug/Display.html?id=77562
18:29 timotimo huh.
18:29 virtualsue joined #perl6
18:29 timotimo it may very well be that i accidentally measured the changed code with only a tenth of the iterations?
18:29 timotimo that would be embarassing
18:36 dalek rakudo/nom: 96d6011 | moritz++ | src/core/Any.pm:
18:36 dalek rakudo/nom: Introduce method for
18:36 dalek rakudo/nom:
18:36 dalek rakudo/nom: it is now an alias for .map, but .map will stop to flatten its invocant
18:36 dalek rakudo/nom: eventually; .for will continue to behave as it does now
18:36 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/96d6011cb9
18:40 timotimo i didn't measure wrongly, the [+] way really is 4x faster than the custom loop
18:42 timotimo m: "and without a profiler running in the background, the ratio is { 304 / 78 }."
18:42 camelia rakudo-moar 315ec6: ( no output )
18:42 timotimo m: say "and without a profiler running in the background, the ratio is { 304 / 78 }."
18:42 camelia rakudo-moar 315ec6: OUTPUT«and without a profiler running in the background, the ratio is 3.897436.␤»
18:51 timotimo my measurements are misbehaving

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs