Camelia, the Perl 6 bug

IRC log for #perl6, 2009-07-06

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:09 ihrd joined #perl6
00:10 ihrd left #perl6
00:25 amoc joined #perl6
00:30 jedsen joined #perl6
00:35 Whiteknight joined #perl6
00:39 hercynium joined #perl6
01:19 cls_bsd joined #perl6
01:28 scottp joined #perl6
01:30 scottp perl6: my $x = 6; say "testing pastebot for perl{$x}";
01:31 p6eval elf 27433: OUTPUT«testing pastebot for perl{$x}␤»
01:31 p6eval ..pugs, rakudo 0e8a86: OUTPUT«testing pastebot for perl6␤»
01:59 KyleHa joined #perl6
02:03 jjore In http://gist.github.com/141232, I'm getting a null PMC exception in get_string() while running a regexp. What should I be looking at to debug this?
02:09 KyleHa Null PMC is always a bug.  The best thing to do is narrow it down to the minimum code that produces it and submit rakudobug@perl.org (or look for an existing bug first).
02:10 scottp I am converting some code from pugs and have an example - $false = //= 0; - what does the '//' do as it does not compile in Rakudo
02:11 KyleHa Well "//=" is "defined or equal", but I don't know about "=//=", if that's what you have there.
02:11 jjore Presumably the same thing it does in perl 5? defined-or?
02:11 jjore er, oh.
02:12 jjore gosh. = // = in perl5 would be a really perverted but legal thing.
02:12 scottp perl 5 would be ||= 0 - i.e. pipe not forward slash.
02:12 scottp perl6: $false //= 0; say 'it worked';
02:12 p6eval pugs: OUTPUT«*** ␤    Unexpected " //="␤    expecting "::"␤    Variable "$false" requires predeclaration or explicit package name␤    at /tmp/0QHdQGSbaL line 1, column 7␤»
02:12 p6eval ..elf 27433: OUTPUT«Unknown rule: infix_postfix_meta_operator:=␤It needs to be added to ast_handlers.␤ at ./elf_h line 2850␤»
02:12 p6eval ..rakudo 0e8a86: OUTPUT«Symbol '$false' not predeclared in <anonymous> (/tmp/Fwh6L6WVvI:2)␤in Main (src/gen_setting.pm:3340)␤»
02:13 jjore scottp, 5.10 has //=.
02:13 scottp jjore: ta - had not tried that.
02:13 KyleHa rakudo: my $false //= 0; say 'yay';
02:13 p6eval rakudo 0e8a86: OUTPUT«yay␤»
02:13 scottp oh... I found my error, it was somethwere else - here it is - $defined //= [//] ($true,$false,$string,$defined,$last);
02:14 KyleHa That's a little beyond me.
02:14 jjore but fyi, $false = //= 0; could possibly also mean $false = ( $_ =~ m// ) = 0; which is the horribly perverted thing.
02:15 KyleHa I think the "[//]" construct applies "defined or" to each thing in the list, but I'm not sure.  It would be called a hyperoperator by the documentation.
02:15 KyleHa Oh, I think I get it.
02:15 KyleHa rakudo: my $sum = [+] (1, 2, 3);
02:15 p6eval rakudo 0e8a86:  ( no output )
02:16 KyleHa rakudo: my $sum = [+] (1, 2, 3); say $sum;
02:16 p6eval rakudo 0e8a86: OUTPUT«6␤»
02:16 KyleHa So your $defined assignment takes the first item in the list that's defined and discards the rest.
02:17 KyleHa rakudo: my $defined //= [//] (1, 2, undef, 3); say $defined;
02:17 p6eval rakudo 0e8a86: OUTPUT«Statement not terminated properly at line 2, near "//= [//] ("␤in Main (src/gen_setting.pm:3340)␤»
02:17 scottp yes I get that error as above.
02:17 KyleHa I'm guessing the [//] operator isn't implemented yet.
02:17 scottp Yes my guess too
02:18 jjore Is there a "dump" method for objects to get at their implementation details? .perl lossily thunks to perl source which isn't enough.
02:19 KyleHa What does .perl lose?
02:19 jjore Doesn't work for Regexp objects for one.
02:20 KyleHa There's a test for [//] in S03-operators/reduce-metaop.t that's fudged for Rakudo.
02:20 jjore I /guess/ getting the pmcs and their data would ideal.
02:21 KyleHa jjore: There are some things that .perl doesn't work for because they haven't defined what its output should be in cases where one could write the same thing lots of different ways.  That may be the case for Regex.
02:22 jjore So, in perl 5 there is Devel::Peek to show the C implementation. Is there an equivalent for rakudo that sees through to the parrot implementation?
02:23 KyleHa rakudo: my $x = /foo/; say $x.perl;
02:23 p6eval rakudo 0e8a86: OUTPUT«{ ... }␤»
02:24 KyleHa rakudo: my $x = /foo/; say $x.PARROT;
02:24 p6eval rakudo 0e8a86: OUTPUT«Regex␤»
02:24 KyleHa That's not exactly detailed.
02:24 KyleHa You're past my depth, jjore, sorry.
02:24 jjore I'd be glad to go read source. Any idea where to start looking?
02:25 KyleHa I'm not familiar with Rakudo source at all.  I spend most of my time in the spec tests.
02:25 KyleHa There's a whole directory, S12-introspection, that would be my first target.
02:26 KyleHa Here's the corresponding documentation:  http://perlcabal.org/syn/S12.html
02:26 jjore woot
02:27 jjore ah, well, that is Perl 6 introspection which ought to be different than introspection into implementation.
02:28 KyleHa I agree.  I wish I had a better answer for you.
02:28 jjore Ok, well thanks for what you've got.
02:28 KyleHa You're welcome.
02:29 jjore No wait, I think this is where I troll "Why aren't you *perfect*?!"
02:29 KyleHa Heh.
02:29 KyleHa We haven't implemented that part of the script either.
02:30 jjore .DOES?( 'Perfect' ) ? ... : false;
02:30 scottp joined #perl6
02:56 twigil joined #perl6
02:59 jjore Am I doing it wrong? 'abc' ~~ /$<a>=(.) $<a>/ # produces null pmc error.
02:59 jjore rakudo: 'abc' ~~ /$<a>=(.) $<a>/
02:59 p6eval rakudo 0e8a86:  ( no output )
03:00 jjore okays.... on the rakudo I fetched earlier today anyway. Huh.
03:03 FCO joined #perl6
03:04 jjore rakudo: 'abc' ~~ / $<a> = (.) $<a> /
03:04 p6eval rakudo 0e8a86: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block51 (/tmp/A4j44bVpKG:1)␤called from Main (/tmp/A4j44bVpKG:2)␤»
03:04 jjore rakudo: 'abc' ~~ /$<a> = (.) $<a>/
03:04 p6eval rakudo 0e8a86: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block51 (/tmp/c6gfnhA0Uu:1)␤called from Main (/tmp/c6gfnhA0Uu:2)␤»
03:04 jjore rakudo: 'abc' ~~ /$<a> =(.) $<a>/
03:04 p6eval rakudo 0e8a86:  ( no output )
03:04 jjore rakudo: 'abc' ~~ /$<a>= (.) $<a>/
03:04 p6eval rakudo 0e8a86: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block51 (/tmp/AZFL4K099j:1)␤called from Main (/tmp/AZFL4K099j:2)␤»
03:04 jjore rakudo: '' ~~ /$<a>= (.) $<a>/
03:04 p6eval rakudo 0e8a86:  ( no output )
03:05 eternaleye jnthn: re learning hiragana, has someone shown you the 'a ka sa ta na, ha ma ya ra wa' trick yet?
03:06 jjore Ah.
03:07 jjore rakudo: 'a' ~~ /$<a>= (.)$<a>/; # minimal
03:07 molaf joined #perl6
03:07 molaf_x joined #perl6
03:07 p6eval rakudo 0e8a86: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block51 (/tmp/wYUb0HxL6M:1)␤called from Main (/tmp/wYUb0HxL6M:2)␤»
03:07 jjore apologies for spam.
03:08 pmichaud I think PGE might not like spaces around the '=' there.
03:08 pmichaud rakudo:   say 'aa' ~~ /$<a>=(.) $<a>/;
03:08 p6eval rakudo 0e8a86: OUTPUT«aa␤»
03:08 pmichaud rakudo:   say 'aa' ~~ /$<a> =(.) $<a>/;
03:08 p6eval rakudo 0e8a86: OUTPUT«aa␤»
03:08 pmichaud rakudo:   say 'aa' ~~ /$<a> = (.) $<a>/;
03:08 p6eval rakudo 0e8a86: OUTPUT«Null PMC access in get_string()␤in regex PGE::Grammar::_block51 (/tmp/nbZHs9R6xM:1)␤called from Main (/tmp/nbZHs9R6xM:2)␤»
03:08 jjore orly? I thought the examples usually used spaces.
03:09 pmichaud they might.  PGE (the regexp engine) might not handle it well though.
03:10 eternaleye rakudo: say 'ab' ~~ /$<a>=(.) $<a>/;
03:10 p6eval rakudo 0e8a86: OUTPUT«␤»
03:10 eternaleye rakudo: say ?('ab' ~~ /$<a>=(.) $<a>/);
03:10 p6eval rakudo 0e8a86: OUTPUT«0␤»
03:10 jjore So what is a good way to step into the part of pge that is potentially having an issue?
03:10 pmichaud it would be PGE's Perl6Regex parser that is having difficulty
03:12 pmichaud oddly, I only find one example in S05 where the equals has spaces around it :-)
03:12 jjore I infer from your answer that knowing "PGE:Grammer:_block51" is not interesting to inspect the failing thing.
03:13 pmichaud well, _block51 is just the name of the (anonymous) regex
03:13 pmichaud rakudo:  /$<a>= (.) $<a>/
03:13 p6eval rakudo 0e8a86:  ( no output )
03:13 jjore So, to dump it or trace it to see where the problem lies?
03:13 pmichaud rakudo:  say /$<a>= (.) $<a>/
03:13 p6eval rakudo 0e8a86: OUTPUT«_block50␤»
03:13 pmichaud hmmm.
03:14 pmichaud actually, I'm guessing that it's mis-generating the code for $<a>= (.)
03:14 pmichaud it must be generating it as   $<a>=<.ws> (.)
03:17 pmichaud if it sounds like I'm not answering your question, it's because I'm not sure how to answer them.
03:17 pmichaud Basically when PGE parses the alias, it's misparsing it.  As a result, the generated code for the regex is wrong.
03:17 jjore Fair enough. I guessed that maybe reading --target=past would be useful or at least potentially enlightening to read.
03:18 pmichaud fixing it will require updating PGE's parser to skip over whitespace after finding '='
03:18 pmichaud well, PGE doesn't go through PAST
03:18 pmichaud so you'd just end up seeing a node representing the regex, but no details
03:19 pmichaud (PGE pre-dates the compiler toolkit and PAST)
03:20 jauaor joined #perl6
03:20 jjore --target=pir is lower than --target=post, right?
03:21 pmichaud it comes after post, yes.
03:21 pmichaud post is the precursor to PIR
03:21 pmichaud past->post->pir
03:21 pmichaud except for regexes, which basically have their own special comipler
03:21 pmichaud *compiler
03:22 pugs_svn r27434 | kyle++ | [t/spec] Move 2 tests from class.t to class2.t, rm class.t, and mv class2.t class.t
03:22 pmichaud those go directly from regex source to a regex parse tree to PIR
03:22 jjore asking --target=pir is highly uninformative for regexp contents.
03:22 pmichaud right
03:22 pmichaud because it's the compiled code for the regexp
03:23 jjore no, it seems to be missing it.
03:23 pmichaud oh, it's there
03:23 pmichaud wait, are you expecting to see the regexp source in the --target=pir output?
03:24 pmichaud as in, the actual  "$<a> = (.) $<a>"  part?
03:24 jjore well... maybe? or the alias for $<a>.
03:24 pmichaud would you expect to see something called   $xyz<abc>[0]   in Perl 6 compiled output?
03:25 pmichaud (assuming that was in the source)
03:25 jjore Yes, because the information would need to be available for programatic introspection.
03:26 pmichaud we aren't doing anything like that yet.
03:26 pmichaud afaik, there hasn't been anything in the spec to indicate we absolutely need to do that.  If we do, then I suspect we just have to embed a copy of the full source into the compiled output.
03:27 pmichaud which we may indeed have to do, but I'm waiting for verification of that fact before committing to doing it.
03:27 * jjore supposes it *ought* to be in the spec for the reason that he also never wants his operations staff to deploy to prod w/o -g symbols.
03:28 jjore but that's merely policy.
03:28 pmichaud anyway, the short answer then is "no, the full source is not embedded into the compiled output"
03:29 pmichaud nor the individual source tokens, at the moment.
03:30 * jjore can more reasonably find the regexp components by using something more striking like 'X'.
03:30 pmichaud sure
03:30 jjore So even it's its fully destructured I can still get there.
03:30 pmichaud in the case of $<a>=(.)    it's going to be a captured named 'a'
03:30 pmichaud *capture
03:31 jjore It is ... strange to read my regexp turned into "assembly."
03:31 pmichaud :-)
03:32 pmichaud at the time, we expected that would be the fastest way to run regexes
03:32 pmichaud i.e., to have them compile directly down the code
03:32 pmichaud *down to code
03:35 jjore I just tried `perl5 --target=pir xxx.p6 > xxx.pir; parrot xxx.pir` but got several imcc syntax errors. Is there a better way to go from perl 6 -> pir -> running it?
03:36 pmichaud there's a bug in Parrot right now that is preventing that from working.
03:36 pmichaud the imcc syntax errors are part of the Parrot bug.  I'm trying to find a good workaround but have had limited success with it.
03:36 jjore Bummer. O.
03:36 jjore er, ok.
03:36 TimToady jjore: re run(), the main reason its name is changed is becuase it returns true for success rather than false
03:37 jjore re-run, that's fine. It's still surprising not to have system().
03:37 pmichaud TimToady: is it generally expected that    regex foo { ... };   say &foo.perl;   would give back the source of the regex?
03:37 pmichaud same for any other closure?
03:38 jjore even if no one really /likes/ that 0==system() is success.
03:38 pmichaud ("yes" is an okay answer :-)
03:38 TimToady I think that should be the default behavior, suppressable fof poeple who want to keep secrets
03:38 TimToady *for
03:38 pmichaud okay.
03:38 pmichaud do you think that embedding the source would be an efficient or inefficient mechanism for doing that?
03:39 jjore I missed scrottie's perl in Vegas talk but I heard he's used Enbugger on compiled perl to get it to spill its secrets.
03:39 TimToady I think the size of the source will typically be outweight by the rest of the mechanism
03:39 TimToady outweighed even
03:40 pmichaud right, so that keeping a copy of the source is fairly efficient, then?
03:40 jjore which thrilled and surprised me. that he took something supposedly perl2exe'd and still got in w/ it.
03:40 TimToady and one big happy string is hard to beat for efficiency
03:40 pmichaud right.
03:40 pmichaud okay, I have the same opinion.
03:40 pmichaud I'll start seeing what I can do to aim in that direction.  Thanks.
03:42 pmichaud I suspect that also helps with embedded pod streams and the like.
03:42 mikehh joined #perl6
03:43 pmichaud so, jjore, looks like you'll get your wish :-)
03:44 jjore You're so kind. :-)
03:48 jjore oh say, diffing the pir seems to pull up useful things, if I normalize those pointer-looking things that are /^\d\d_\d{9,}$/
03:49 pmichaud \d{9,}  ?
03:49 jauaor hello
03:49 pmichaud p5 regexp, or ... ?
03:49 jauaor anybody on mac here?
03:50 mikehh joined #perl6
03:50 jjore << .const 'Sub' $P22 = "12_1246851932" >>
03:50 pmichaud oh.
03:50 pmichaud the "unique" identifiers for each sub.
03:50 jjore I don't know the id's real meaning now but if I look past those differences, the pir seems useful to diff.
03:51 pmichaud their meaning is simply to unique identifiy parrot subs
03:51 pmichaud since "name" isn't a good unique identifier
03:51 pmichaud and yes.... it's just a unique number followed by a (gasp) timestamp.
03:51 pmichaud (I cheated for now.)
03:51 jjore oh, timestamp. ok.
03:51 jjore Thanks.
03:52 jjore so the difference, fwiw, is captscope["a"] vs captscope[0]
03:52 pmichaud yes.
03:52 pmichaud $<a>=(.)  causes it to capture to 'a' instead of 0
03:53 jjore yes, well, this is the space vs no-space.
03:53 pmichaud hmmm, interesting, but I can believe it.
03:54 pmichaud because    $<a>= (.)   ends up acting like   $<a>=<.ws> (.)
03:54 jjore anyhow, thanks for being an idea instigator. I've got to switch bars to get a power outlet.
03:54 pmichaud so the (.) ends up being "capture to $0"
03:54 pmichaud instead of being aliased.
03:54 jjore oh, that's an explanation behind your explanation. cool.
03:55 pmichaud an interesting test would be  $<a>=[.]  versus $<a>= [.]
03:55 pmichaud I'm guessing the latter wouldn't have a captscope[0]
03:55 pmichaud it might not have a captscope['a'] either, which would mean that the <.ws> is being factored out inside of regexes (as it should)
03:58 pjcj joined #perl6
04:02 azawawi joined #perl6
04:03 jjore No, the latter is captscope["a"]. Apparently the lack of space indicates something very different since I was just grepping for capt but `perl6...|grep captscope|wc -l` is 0 w/ space but 12 w/ space.
04:03 azawawi hi
04:03 lambdabot azawawi: You have 1 new message. '/msg lambdabot @messages' to read it.
04:03 azawawi @messages
04:03 lambdabot literal said 6h 21m 20s ago: I fixed that bug you mentioned
04:03 pmichaud that's... odd.  I think I want to investigate this a bit more myself :-)
04:05 pmichaud anyway, it's worth filing a rakudobug for.
04:07 Pismire joined #perl6
04:10 edpratomo joined #perl6
04:28 pugs_svn r27435 | kyle++ | [t/spec] Test for #57336 (needs review)
04:30 scottp joined #perl6
04:48 tann joined #perl6
05:19 Molaf joined #perl6
05:23 drbean_ joined #perl6
05:46 pugs_svn r27436 | pmichaud++ | [t/spec]: Fudge out odd failure in S02-literals/types.t .
05:47 pugs_svn r27437 | pmichaud++ | [t/spec]:  Not sure how or why, but subtypes.t now reports only 50 tests instead of 51.
05:59 eternaleye_ joined #perl6
06:16 eMaX joined #perl6
06:19 Matt-W Woooo my patch went in!
06:20 moritz_ Matt-W: yes, I applied it
06:21 Matt-W moritz_++
06:21 Matt-W git++
06:22 Matt-W ^ clever enough to not complain that you'd pushed the patch I already made
06:22 rfordinal joined #perl6
06:30 azawawi joined #perl6
06:30 azawawi hi
06:35 DemoFreak joined #perl6
06:37 pugs_svn r27438 | azawawi++ | [S:H:P6] emit multi-sigs
06:42 tann_ joined #perl6
06:43 sparc__ joined #perl6
06:50 iblechbot joined #perl6
06:50 fridim_ joined #perl6
06:56 sparc joined #perl6
06:58 sparc___ joined #perl6
06:59 tann joined #perl6
07:00 sparc____ joined #perl6
07:00 zamolxes joined #perl6
07:02 sparc__ joined #perl6
07:02 jedsen left #perl6
07:06 M_o_C joined #perl6
07:07 rfordinal joined #perl6
07:10 last joined #perl6
07:32 icwiener joined #perl6
07:38 eternaleye joined #perl6
07:46 mberends joined #perl6
07:52 dakkar joined #perl6
08:00 synth joined #perl6
08:15 |MoC| joined #perl6
08:41 ejs joined #perl6
08:42 ejs0 joined #perl6
08:56 cotto joined #perl6
08:58 pmurias joined #perl6
09:14 pmurias_ joined #perl6
09:15 pmurias_ ruoso: hi
09:18 jnthn morning
09:19 moritz_ oh hai
09:19 jnthn phenny tell eternaleye no, nobody showed me that...got a link? :-)
09:19 jnthn phenny ?
09:19 moritz_ maybe phenny needs to be 'phenny:' or so?
09:20 jnthn phenny: tell eternaleye no, nobody showed me that...got a link? :-)
09:20 phenny jnthn: I'll pass that on when eternaleye is around.
09:20 jnthn moritz_: Thanks! :-)
09:20 moritz_ jnthn: np
09:30 payload joined #perl6
09:33 pmurias ruoso: i have a problem with compiling CORE.pm with --yeast in that the function a m0ld code is compiled to segfaults when called from the runloops but runs when called from the init function in the loaded library
09:34 pmurias ruoso: gdb doesn't know what called the segfault
09:43 xinming joined #perl6
09:53 zamolxes joined #perl6
09:54 donaldh joined #perl6
10:05 mberends jnthn++ # "Six days mostly in front of the computer from waking up to sleeping"
10:17 pmurias ruoso: dlclose seems to be the culprit
10:22 payload joined #perl6
10:29 PZt joined #perl6
10:32 meppl joined #perl6
10:35 payload joined #perl6
10:46 last joined #perl6
11:01 digitalise joined #perl6
11:06 icwiener_ joined #perl6
11:07 xinming joined #perl6
11:19 payload joined #perl6
11:21 donaldh joined #perl6
11:26 pugs_svn r27439 | kyle++ | [t/spec] Remove icky test for exact matching error message.
11:42 mikehh I tried running t/spec/S02-literals/string-interpolation.t using both ./perl6 and perl t/harness
11:43 mikehh using ./perl6 t/spec/S02-literals/string-interpolation.t it passed 4 times and failed 5
11:45 Chillance joined #perl6
11:45 mikehh perl t/harness t/spec/S02-literals/string-interpolation.t it passed 2 times and failed 6
11:48 mikehh I ran make spectest 3 times and it passed twice
11:59 masak joined #perl6
12:06 sri_kraih joined #perl6
12:16 masak http://use.perl.org/~jjore/journal/39233 # help poor jjore!
12:16 masak hm, I haven't backlogged yet. maybe he already got help here...
12:17 jnthn I may implement rename to help him out. ;-)
12:19 * masak backlogs
12:20 moritz_ it would help to know what kind of input triggered the errors
12:20 icwiener-_- joined #perl6
12:20 jnthn aye, but he said in the post that it wasn't a bug report.
12:20 jnthn So hopefully we find out here. :-)
12:21 moritz_ my second suspicion are the $<foo> = (...) things
12:21 jnthn std: sub say($x where $x eq "w00t") { say "Bah!" };
12:21 p6eval std 27439: OUTPUT«##### PARSE FAILED #####␤Unable to parse multisig; couldn't find final ')' at /tmp/CkOP5pu91I line 1:␤------> [32msub say($x where $x [31meq "w00t") { say "Bah!" };[0m␤    expecting any of:␤    infix or meta-infix (with precedence tighter than chaining)␤      infix stopper␤
12:21 p6eval ..param_sep␤       p…
12:21 moritz_ it seems to work fine without those.
12:24 skids joined #perl6
12:32 ruoso joined #perl6
12:34 ruoso Hello!
12:34 moritz_ hi ruoso
12:40 masak g'day ruoso
12:41 pugs_svn r27440 | masak++ | [README] kill comment re grok being written in Perl 6
12:41 pugs_svn r27440 | masak++ |
12:41 pugs_svn r27440 | masak++ | Turns out (at least in the short term) that writing grok in Perl 5 is
12:41 pugs_svn r27440 | masak++ | much more feasible.
12:41 pugs_svn r27441 | masak++ | [u4x] fleshed out documentation for Pair
12:41 pugs_svn r27442 | masak++ | [u4x] lots of small changes and additions
12:45 masak ok, so I want to do test coverage using Rakudo. is there any way, however cumbersome, to make Rakudo reveal which statements in the source code were run?
12:45 masak rakudo: subset Positive of Num where { $^n > 0 }; my Positive $p; $p = -42
12:45 p6eval rakudo 0e8a86: OUTPUT«Assignment type check failed; expected , but got Int␤in Main (/tmp/pW2gVtsbd4:2)␤»
12:45 moritz_ yes, you can write a coverage runcore for parrot that looks at the file anotations
12:45 * masak submits rakudobug
12:45 jnthn bug?
12:46 masak moritz_: excellent. just what I needed to hear.
12:46 jnthn oh, less than awesome error message
12:46 masak aye.
12:46 jnthn wow. That was some LOUD thunder.
12:46 * moritz_ didn't hear anything
12:46 * masak really likes the attribute 'less than awesome'
12:46 masak sets the right expectations, if you ask me.
12:46 moritz_ can't have been *so* loud :-)
12:47 masak so, next question: how do I write a runcore for Parrot? is there documentation somewhere?
12:48 Matt-W Hi
12:48 masak Matt-W: good day, sir.
12:49 Matt-W jnthn: well you know how Perl 6 has unicode for real representation of anything you like, now it also has a truly empty type complete with empty name!
12:49 moritz_ masak: I think chromatic wanted to encapsulate that somewhat to make it easier
12:49 Matt-W masak: good day. I am happy, as my patch is now in rakudo. I should write another one
12:49 masak Matt-W++ # and yes, you should
12:49 moritz_ Q: how do we implement Perl 6? A: One  patch at a time
12:50 masak with git, many patches at a time. :P
12:50 Matt-W I am however also unhappy, as I'm trying to persuade a recalcitrant, bizarrely-configured solaris box to compile things
12:51 icwiener joined #perl6
12:52 jnthn masak: What moritz_ said - it would get easier in the future.
12:52 jnthn masak: They ain't pluggable at the moment.
12:52 masak EWANTFUTURENOW
12:53 mberends EWANTWANTWANT
12:54 jnthn masak: I suspect a runcore may be the way to do it though.
12:54 jnthn masak: It may be that the profiling runcore gives enough info mind.
12:54 jnthn Since it'll need to know, where it's been.
12:55 masak oh, there's a profiling runcore? \o/
12:55 masak how do I invoke it?
12:56 masak jnthn++ # catching up on blogging -- I want to know what you've been up to! :)
12:57 masak (er, promising to catch up on blogging, at least)
12:58 jnthn masak: No, there's a proposed one. :-(
12:58 jnthn masak: I think chromatic and cotto are planning to work on it.
12:58 * masak also makez teh :-(
12:58 masak EWANTFUTURENOW
12:59 jnthn "The future will be better tomorrow."
12:59 PerlJam masak: but the future belongs to skynet.
12:59 moritz_ masak: a coverage report for rakudo and would also make me very happy
12:59 moritz_ s/and//
12:59 * masak heads over to #parrot to urge the future on
13:00 mberends masak: parrot -R trace program.pbc # is probably the profiling runcore
13:01 masak mberends: g'day. thanks, I'll try that.
13:02 masak there's also a -p (profile) option for parrot.
13:04 last joined #perl6
13:05 takadonet joined #perl6
13:05 takadonet hey everyone
13:06 PerlJam greetings takadonet
13:07 masak hey takadonet -- done anything cool with Rakudo yet?
13:09 takadonet masak: Not really, mostly just playing around with Grammar's to parse out  file formats and  wrappers in the bio-informatics field
13:09 masak oh, it's you! :)
13:09 masak I think that qualifies as something cool, by the way. :)
13:09 takadonet hehe. Planning to help re-do http://www.bioperl.org/wiki/Main_Page
13:09 * masak is a bioinformatician
13:09 * Tene isn't!
13:09 takadonet WOW really
13:10 masak yes, really. I'll have my degree any year now.
13:10 takadonet I just have an undergraduate in CS but been working in the field for almost 2 years now
13:11 takadonet Masak: Have you heard of annotation pipeline called gendb?
13:11 masak rakudo: subset DNA of Str where { all(.comb) eq any<A C G T> }; my DNA = "GATTACA"
13:11 p6eval rakudo 0e8a86: OUTPUT«Malformed declaration at line 2, near "DNA = \"GAT"␤in Main (src/gen_setting.pm:3340)␤»
13:11 masak rakudo: subset DNA of Str where { all(.comb) eq any<A C G T> }; my DNA $dna = "GATTACA"
13:11 p6eval rakudo 0e8a86: OUTPUT«Assignment type check failed; expected , but got Str␤in Main (/tmp/vZU6KjvkxT:2)␤»
13:11 krunen ffdddddddddd~.
13:12 masak krunen: toddler?
13:12 jnthn Or cat? ;-)
13:12 skids or ferret.
13:12 masak takadonet: no, I don't think I have.
13:13 takadonet masak: http://www.cebitec.uni-bielefeld.d​e/groups/brf/software/gendb_info/
13:13 moritz_ uni bielefeld - that city doesn't even exist :-)
13:14 moritz_ http://en.wikipedia.org/wiki/Bielefeld_Conspiracy
13:14 * masak gasps
13:14 takadonet masak: We have that pipeline locally and I'm in charge of developing it with one other
13:15 masak takadonet: haven't been on any genome projects yet, so I haven't had the opportunity to use something like this. :)
13:17 takadonet masak: This is my first large project that I was assigned to but the last few years I have done small application for biologist at our lab. Also little script to help automate blasting, multiple alignment etc..
13:18 masak takadonet: in my employed life, I develop a Java-based bioinformatics platform called Bioclipse.
13:19 moritz_ masak: you're one of these guys? I didn't know that...
13:19 moritz_ I log their IRC channel, IIRC
13:19 masak moritz_: yes, I was the one who arranged that. :)
13:20 moritz_ masak: I don't remember that either :/
13:20 moritz_ local insomnia?
13:20 masak amnesia, even.
13:20 PerlJam moritz_: They say that your memory is the first thing to go ...
13:21 masak PerlJam: if you're lucky. :)
13:21 moritz_ masak: classical case of amnesia, mis-remembering words :-)
13:21 moritz_ PerlJam: ah well, it's already on the road down hill
13:22 pmichaud Good morning, #perl6
13:23 moritz_ oh hai
13:23 takadonet morning
13:23 masak good pmorning.
13:25 masak by the way, passing '-R trace' to parrot didn't do anything that I could see. passing '-p' spewed out interesting statistics about the frequency of internal Parrot calls, but nothing about source code annotations.
13:26 jnthn morning, pmichaud
13:28 amoc joined #perl6
13:31 frew_ joined #perl6
13:35 masak moritz_: clicking "Article: Encodings and Unicode" on http://perlgeek.de/ gives a 404. seems there is one 'en/' too many in the URL.
13:36 alester joined #perl6
13:39 moritz_ masak: thanks, fixed locally. It will take soem time for the update to percolate through
13:39 masak great; no problem.
13:40 cls_bsd joined #perl6
13:41 takadonet masak: Did you go to ISMB?
13:42 masak 'fraid not.
13:46 jauaor joined #perl6
13:50 KyleHa joined #perl6
13:52 rfordinal joined #perl6
14:01 daemon joined #perl6
14:07 DemoFreak joined #perl6
14:14 lucs joined #perl6
14:22 KyleHa I branched Rakudo locally, and implemented a couple of operators in setting/Operator.pm (I think).  What's the best way to submit that for someone smart to have a look at it and maybe make it part of Rakudo?
14:24 masak a TODO rakudobug, I think.
14:24 masak aye, that's what the README says.
14:25 masak 'unified diff from the C<git> command is greatly preffered'
14:25 KyleHa Gack.  I should have looked there.  Thank you, masak++
14:25 masak unkown unknowns are the hardest. :)
14:26 pmichaud I really think I need to change the name of the README file to something more appropriate.
14:26 masak pmichaud: it's not your fault.
14:26 masak people just don't end up on a path where they scan the repo for developer hints.
14:26 pmichaud I just find it incredibly ironic.
14:26 masak aye, I know. :)
14:27 masak it is ironic.
14:27 pmichaud and we shouldn't let a good source of irony go to waste :-)
14:27 KyleHa GOREADSOMETHINGELSE
14:27 pmichaud Maybe a lightning talk about creating the ultimate hidden file
14:28 pmichaud Do you have important secret details (e.g., credit card numbers) that you want to protect from hackers?  Place it in a file called README, as they'll *never* look there.
14:28 masak Pugs has README, READTOO and READTHEM. actually following the advice in those files will take years (and possibly make your head asplode)
14:29 masak pmichaud: maybe add a friendly notice at the end of the 'make' process to go read the README file if one thinks there might be a risk that one will be submitting patches?
14:32 masak oh noes, rgs resigned! http://twitter.com/perlbuzz/status/2497451316
14:32 alester I knows, I knows!
14:32 alester I posteds!
14:32 alester :-P
14:32 Front_slash joined #perl6
14:33 masak I'm sorry to see the discussion resulting in that.
14:35 jnthn Me too. :-(
14:35 alester I'm less and less interested in p5 development every day.
14:35 alester Not because of this, but because I think that Perl 6 is where we should be putting our energy.
14:36 masak I've had the opposite experience; from being almost only Perl 6-oriented, I now find more and more places where Perl 5 excels.
14:36 KyleHa OK, there's my patchy patch.
14:36 pmichaud speaking of which...  I'm revamping my "Hacking Rakudo Perl" talk a bit for oscon and yapceu
14:36 masak but the design of the core or the release cycle are not such things.
14:37 takadonet I'm in the same boat there Alester
14:37 pmichaud does anyone here have suggestions/comments for what really need to go in the talk?
14:37 pmichaud i.e., I'm wanting to step up the presentation a notch if I can :-)
14:38 jnthn more lolcats
14:38 alester pmichuad: Two words: Animated Transitions
14:38 masak pmichaud: "job openings" -- bug wrangler, RT supervisor, test suite masseur, etc.
14:38 pmichaud "job openings"++
14:38 lambdabot joined #perl6
14:38 alester yeah, I like that
14:38 alester You know
14:38 masak things that are pretty easy to get into but require a constant supply of tuits.
14:39 skids .oO(maybe we should have a directory for not-quite-there-yet p6 implementations of builtins/setting that can't be applied)
14:39 alester Come up with those job openings and I'll run 'em as a Perlbuzz article.
14:39 pmichaud I had something like that in my earlier version but not as explicit as "job openings"
14:39 masak pmichaud: the sense should be, "we'd love to have you in the community, here's what you could do to help"
14:39 pmichaud for those who are curious, my slides for yapcna are at http://www.pmichaud.com/2009/pres/yapc-rakudo
14:40 masak \o/
14:40 pmichaud masak: that's pretty much what I tried to do at npw (the talk hasn't morphed much since then)
14:41 masak pmichaud: love that picture of 'tormented pm' :)
14:42 iblechbot joined #perl6
14:42 pmichaud heh
14:42 pmichaud yes, definitely need more pictures.
14:42 Matt-W I like the TimToady quote about torturing implementors
14:44 icwiener_ joined #perl6
14:44 masak pmichaud: maybe the different tasks should have RPG-like stats next to them, so that people get a quick sense of what skillz are required. for example, both 'writing tests' and 'writing applications' require Perl 6 knowledge, but the former maybe a bit less. writing synopses require a bit of English and a great bit of Courage.
14:45 skids And pictures of hobbits
14:45 pmichaud ooooooh!  I like RPG-like states.
14:45 pmichaud *stats
14:45 alester RPG
14:45 alester RPG?
14:45 pmichaud "role playing game"
14:45 alester ah, right
14:45 pmichaud Strength, Dexterity, Intelligence, Wisdom, Charisma, etc
14:45 alester Some geek I am.
14:45 alester yes, yes, I know.
14:46 skids .oO(not "rocket propelled grenade")
14:46 alester I rolled a natural 18 in Awesomeness.
14:46 pmichaud oh, here I thought it was  "Report Program Generator"
14:46 nihiliad joined #perl6
14:46 pmichaud one of the predecessors to Perl :-)
14:46 * pmichaud remembers programming in RPG in college
14:46 skids The rocket propelled grenade?
14:47 pmichaud http://en.wikipedia.org/wiki/RPG
14:50 KyleHa Stats:  Tuits, Asbestos, Brane, Verbal Comprehensibility   That last one needs some brevity.
14:51 pmichaud "Eloquence"?
14:51 pmichaud not quite right...
14:51 masak Clarity.
14:52 PacoLinux joined #perl6
14:53 jnthn Don't forget "Insanity" :-)
14:53 * Matt-W constructs a One Roll System character structure for Perl 6 hackers
14:55 Matt-W Certain things just instantly fit. Tuits are obviously modelled similarly to Godlike's Will points
14:56 KyleHa jnthn: Reminds me of the 'san' stat from Call of Cthulhu.
14:58 Matt-W Godlike has a stat called 'Cool', there's a useful skill to go with it called Mental Stability. It's what governs if you go insane in the middle of a pitched battle
14:58 Matt-W ooh , home time
14:59 masak Matt-W: when does the next cool feature in Form land?
15:02 * jnthn has finished various of his $other_tasks for today
15:02 jnthn Quick break, then some Rakudo hacking :-)
15:02 justatheory joined #perl6
15:02 masak \o/
15:04 stepnem joined #perl6
15:13 moritz_ nice backlog :-)
15:14 masak we like to keep busy. :)
15:15 jnthn OK time for me to do something useful.
15:20 donaldh joined #perl6
15:22 TimToady rakudo: subset DNA of Str where { all(.comb) eq any <A C G T> }; my DNA $dna = "GATTACA"; say $dna;
15:22 p6eval rakudo 0e8a86: OUTPUT«GATTACA␤»
15:22 masak rakudo: subset DNA of Str where { all(.comb>>.uc) eq any <A C G T> }; my DNA $dna = "gattaca"; say $dna;
15:23 p6eval rakudo 0e8a86: OUTPUT«gattaca␤»
15:23 masak \o/
15:23 TimToady need space after any
15:23 masak ok.
15:23 masak why?
15:23 TimToady listop
15:23 takadonet more bio-informatics i see....
15:23 masak TimToady: listops need space after them?
15:23 TimToady foo<bar> turns into foo()<bar>
15:24 masak oh!
15:24 masak that explains it.
15:25 pyrimidine joined #perl6
15:26 TimToady surely .uc.comb is more efficient
15:27 masak oops, aye.
15:27 jnthn Surely.
15:27 masak rakudo: subset DNA of Str where { all(.uc.comb) eq any <A C G T> }; my DNA $dna = "gattaca"; say $dna;
15:27 p6eval rakudo 0e8a86: OUTPUT«gattaca␤»
15:28 jnthn rakudo: subset DNA of Str where { all(.uc.comb) eq any <A C G T>}; my DNA $dna = "lolnotdna"; say $dna;
15:28 p6eval rakudo 0e8a86: OUTPUT«Assignment type check failed; expected , but got Str␤in Main (/tmp/7SYiN7AlvS:2)␤»
15:28 jnthn (just checking :-))
15:28 masak ELOLNOTDNA
15:28 TimToady course, where not /<-[ACGTactg]>/ might beat all those
15:28 pyrimidine Thought I saw bioinformatics going on
15:28 masak pyrimidine: it is you!
15:29 pyrimidine o/
15:29 moritz_ but it involves no junction, so it can't be any good :-)
15:29 takadonet ?
15:29 masak takadonet: this time, it was a joke. :)
15:29 takadonet hehe
15:29 TimToady ttaggg &
15:30 jnthn pmichaud: ping
15:30 masak halp, TimToady is speaking in DNA bases!
15:30 masak is my hunch right, and that actually means something as amino acids?
15:30 * masak checks
15:30 pyrimidine yes
15:31 masak TimToady++
15:32 * takadonet wishes that amino acids were only 4 characters, stupid sequencers introducing others
15:33 pmichaud jnthn: pong
15:33 jnthn pmichaud: moment to talk about lexicals and scalars?
15:34 jnthn s/^/Got a /
15:34 pmichaud sure
15:34 jnthn OK.
15:34 jnthn For lexpads. I'm wondering if we could maybe prototype the concept from PIR first somehow.
15:35 pmichaud I have trouble seeing how that might work.
15:35 * skids notes camelia is one l short of being caffienated.
15:35 jnthn Hmm, maybe not.
15:35 pyrimidine takadonet: I see you're a bioinformat... err, computational biologist
15:35 jnthn pmichaud: How much effort do you think the Parrot change would be?
15:36 skids .oO(bioinformant?)
15:36 jnthn For someone reasonably experienced in Parrot guts but didn't do the last lexicals refactor?
15:36 pmichaud The lexicals refactor itself is/was very straightforward.
15:36 pmichaud I can explain it very quickly.
15:36 takadonet pyrimidine: Somewhat.... just have a degree in CS. Been working in the field for almost 2 years now
15:36 jnthn OK.
15:36 jnthn I sort of what to get the traits on variables stuff done right, that's all.
15:37 pmichaud What made lexicals such a pain to do was (1) understanding what needed to be done, and (2) working around all of the other Parrot crap that kept the straightforward implementation from working
15:37 jnthn w/what/want/
15:37 takadonet pyrimidine: Are you one?
15:37 pyrimidine yes
15:37 pyrimidine http://github.com/cjfields/bioperl6/tree/master
15:37 pmichaud i.e., it wasn't the lexicals implementation itself that was hard, it was the Parrot GC
15:38 pyrimidine (just getting started there, it's still in the works)
15:38 takadonet pyrminidine: YOU! I e-mailed you about helping out on that project
15:38 pmichaud so, I think the parrot change itself shouldn't be too difficult.... but here are the places where things would likely go wrong
15:38 pmichaud (1) imcc has to be updated to create a LexPad structure instead of a LexInfo
15:39 jnthn OK. Before we go further - allison essentially approves of this plan?
15:39 pmichaud (2) ongoing issues with gc and context management
15:39 pyrimidine really? If you want I'll add you as collab
15:39 pmichaud (3) there is no #3
15:39 pmichaud when I've briefly discussed it with allison she seemed agreeable to it.
15:39 takadonet That would be great.
15:39 jnthn OK.
15:39 pmichaud but we didn't get into details.  I should probably make it into a more formal proposal and submit to parrot-dev and then corner allison for an opinion on it.
15:40 jnthn So, outline to me what you see being done. Particularly, I'm interested to know where we store the "initial" value when there's no register frame active.
15:40 jnthn That is, right now a lexpad stores register numbers.
15:40 pmichaud should we move to #parrot?
15:41 pyrimidine takadonet: Done
15:41 pyrimidine takadonet: I also have biomoose if you want in on that
15:43 masak rakudo: my $dna = "ttaagg"; sub translate($dna) { "FFLLSSSSYY!!CC!WLLLLPPPPHHQQRRRRIIIMT​TTTNNKKSSRRVVVVAAAADDEEGGGG".comb[map { :4($_) }, $dna.trans("tcag" => "0123").comb(/.../)] }; say translate($dna)
15:43 jnthn pmichaud: OK, lets
15:43 p6eval rakudo 0e8a86: OUTPUT«LR␤»
15:43 masak that's what I got too.
15:44 pyrimidine masak: nice!
15:44 masak I know! :)
15:44 masak I should blog about it.
15:44 masak "The Genetic Code one-liner in Perl 6"
15:45 takadonet pyriminidine: Thanks for adding me. I will just stay with bioperl6 only
15:46 moritz_ for the unintiated, what does it do?
15:46 pyrimidine takadonet: np.
15:46 masak moritz_: ok, so you know about DNA and amino acids?
15:46 moritz_ masak: roughly, yes
15:46 masak moritz_: there's a way the body converts from the former to the latter, called the "Genetic Code".
15:46 pyrimidine moritz_: http://en.wikipedia.org/wiki/Cen​tral_dogma_of_molecular_biology
15:46 masak basically, it's a 64-entry hash table.
15:47 masak each entry consists of 3 DNA bases.
15:47 masak 4 * 4 * 4 = 64
15:47 moritz_ ok
15:47 moritz_ now it starts to make sense to me
15:47 moritz_ thanks masak++
15:47 masak np
15:47 takadonet http://en.wikipedia.org/wiki/Genetic_code
15:50 masak one of the things about Nature that I find really fascinating is that the Genetic Code is nearly universal, but has small changes in some organisms -- and those changes might not be random, because there's great stability in such a hash table in the center of everything. the changes might be optimisations.
15:50 pyrimidine masak: yes.  there are also unusual amino acids not apparent in the coding; selenocysteine, pyrrolysine, etc.
15:51 pyrimidine all of these have some function
15:51 masak ah, yes.
15:51 masak post-processing.
15:52 pyrimidine in some cases yes, but selenocysteine has a specific tRNA IIRC
15:52 AzureStone joined #perl6
15:52 pyrimidine it complicates matters, but it's rarely used (requires a SECIS element)
15:52 justatheory joined #perl6
15:52 * pyrimidine are we in #bioperl?
15:53 masak :)
15:54 masak no, but Perl 6 people are omnivores, and proud of it.
15:54 takadonet well there are at least 3 Bioinformatician here...
15:54 * pyrimidine assimilate!  assimilate!
15:57 masak pyrimidine: no need. by the end of this century, everything will be bioinformatics. :)
16:03 PacoLinux joined #perl6
16:08 Snublefot_Work *PoFF*
16:14 justatheory joined #perl6
16:16 masak http://use.perl.org/~masak/journal/39238 # The Genetic Code one-liner in Perl 6
16:16 StephenPollei joined #perl6
16:17 Tene masak: html escaping plz
16:17 Tene &lt; &gt;
16:17 tann joined #perl6
16:17 masak Tene: where? looks right to me.
16:18 Tene subset DNA of Str where { all(.uc.comb) eq any };
16:18 masak oh! thanks!
16:18 * masak fixes immediately
16:19 jnthn masak: heh, I often get caught out by that one too
16:20 masak jnthn: I'm pondering making my own offline client for making use.perl.org posts, so I won't have to author them in crippled HTML.
16:20 masak writing them in Perl 6 Pod would be kinda nice, for example.
16:20 alester masak: Why bother posting them on use.perl.org at all?
16:21 cdarroch joined #perl6
16:21 masak alester: because I like it there? :)
16:21 alester Except for thebad HTML. :-)
16:22 masak and a bunch of other things, yes.
16:22 alester Fair 'nuff.
16:24 masak in fact, I was planning to blog about that too -- how, unlike for many others, the advantages outweigh the pains on use.perl.org
16:26 pyrimidine would be a nice aside from the many 'I am leaving use.perl for other pastures' posts of late
16:27 pyrimidine masak: Saw your previous post as well (Str and Buf).  Now I get it as well!
16:28 masak pyrimidine: glad to hear that. :)
16:28 masak pyrimidine: ok, I'll see if I can put an "I'm staying post" together tonight.
16:29 alester masak: What are those advantages?
16:29 PerlJam masak++
16:29 masak alester: the domain name.
16:29 alester How do you find that to be an advantage?
16:30 masak I like the fact that I can blog from a subdomain of perl.org
16:30 alester Do you find that helps?
16:30 masak I don't know about "helps", but I like that.
16:31 * pyrimidine thinking we need a blog.perl.org
16:31 moritz_ pyrimidine: feel free to set one up.
16:31 * masak wishes blogging software for Perl 6 were further along
16:31 Psyche^ joined #perl6
16:33 masak alester: another advantage: I have all my posts so far there. and all the comments to those posts.
16:33 masak I guess exporting them is possible, but I'm not sure it'd be fun.
16:34 masak alester: a third advantage: the lack of features actually makes me concentrate on the contents of the post. lots of things can be said about the Slash codebase, but it doesn't distract me from authoring the post.
16:35 masak (it distracts me in the authoring process itself, but that's another issue)
16:35 pyrimidine moritz_: Everything would devolve into bioinformatics-related stuff, which would probably annoy everyone to no end
16:35 pyrimidine moritz_: (not to mention the boss would get mad)
16:35 Jedai joined #perl6
16:35 alester masak: I never write anything in an online form if it's more than a paragraph.
16:35 pyrimidine ;)
16:36 takadonet pyrimidine: I would probably read it
16:36 masak alester: sorry, I didn't understand that.
16:36 takadonet well maybe
16:37 * masak goes swimming
16:37 pyrimidine alester: I take that to mean you like to be concise?
16:38 alester I like to be concise, but that wasn't what I was getting at.
16:38 alester The web tool doesn't affect what or how I write, because I do it in vim, separate from the web form.
16:38 masak alester: oh, same here. but Emacs.
16:39 masak I don't like to edit text for a long time in a small textarea.
16:39 * pyrimidine hopes masak doesn't get electrocuted chatting while swimming
16:40 masak pyrimidine: :) not quite there yet.
16:40 masak but thanks for your concern.
16:42 masak & really
16:55 edpratomo joined #perl6
16:55 hercynium joined #perl6
17:09 abra joined #perl6
17:16 pmichaud (blogging software)  -- currently I have my wiki engine so that it will output markup in use.perl.org-compatible HTML
17:17 pmichaud so then I can write my posts using PmWiki markup (which I like) and let it convert into use.perl/drupal/movabletype/blogger/whatever
17:17 jhorwitz joined #perl6
17:17 moritz_ or in other words: you use a compiler to write blog posts ;-)
17:17 pmichaud sure.
17:17 pmichaud all programs are really just compilers of one form or another :-)
17:18 moritz_ a random generator is not, IMHO
17:19 TimToady when all you have is a compiler...
17:20 moritz_ .. every tree looks abstract to you.
17:32 mdxi "Why is your compiler generating random opcodes?" asked the Master. "Because," said the student, "I did not want it to have any preconceptions of the underlying architecture."
17:34 mberends joined #perl6
17:41 pyrimidine joined #perl6
17:43 FurnaceBoy joined #perl6
17:50 amoc joined #perl6
17:52 pyrimidine_ joined #perl6
17:53 ruoso joined #perl6
17:54 * jnthn finally starts to get a grip, after hours of hunting, on why crony.t broke.
17:56 jnthn pmichaud: About?
17:56 pmichaud here.
17:56 jnthn ok
17:56 jnthn I'm looking at ACCEPTS on a proto-object.
17:56 jnthn Basically it ends up punning a role.
17:56 jnthn I've not worked out quite what blows it but I did notice this:
17:57 jnthn topichow = topic.'HOW'()
17:57 jnthn topicwhat = topic.'WHAT'()
17:57 jnthn $I0 = isa topicwhat, parrotclass
17:57 jnthn if $I0 goto end
17:57 jnthn $I0 = does topic, parrotclass
17:57 jnthn goto end
17:57 jnthn Is it me, or is topichow completely unused here?
17:57 pmichaud I remember seeing that once before also
17:58 pmichaud what line is that?
17:58 jnthn 765
17:59 pmichaud what file?
17:59 pugs_svn r27443 | lwall++ | [smartmatch.t] fix bad scoping found by STD
18:00 pugs_svn r27443 | lwall++ |     (and shouldn't be using context vars when lexicals will do)
18:00 pmichaud it's obviously not used.  I think it's left over from some previous versions of .ACCEPTS
18:01 jnthn Even better, it appears that commenting that line out clears up the bug.
18:01 pmichaud I can believe that.
18:01 pmichaud Feel free to remove it.
18:01 pmichaud (and bump PARROT_REVISION)
18:01 jnthn OK
18:01 jnthn Yep
18:01 KyleHa So it's having a side effect?
18:02 jnthn aye
18:02 KyleHa Should it have a side effect?
18:03 pmichaud that's a good question :-)
18:03 pmichaud afk for a while (planning)
18:03 jnthn KyleHa: I fear not.
18:04 jnthn rakudo: role Foo { }; Foo.HOW
18:04 p6eval rakudo 0e8a86:  ( no output )
18:04 jnthn rakudo: role Foo { say "ouch" }; say 1; Foo.HOW; say 2
18:04 p6eval rakudo 0e8a86: OUTPUT«1␤2␤»
18:04 jnthn rakudo: role Foo { say "ouch" }; say 1; Foo.HOW; say 2; Foo.new; say 3;
18:04 p6eval rakudo 0e8a86: OUTPUT«1␤2␤3␤»
18:05 pmichaud I like "ouchless" code.
18:05 jnthn rakudo: role Foo { say "ouch" }; say 1; Foo[].HOW; say 2; Foo.new; say 3;
18:05 p6eval rakudo 0e8a86: OUTPUT«1␤2␤3␤»
18:05 pmichaud "Perl 6:  Code that doesn't hurt.  (Unless you're the compiler implementor.)"
18:06 jnthn sub prefix:<[//]>(@a) {
18:06 jnthn return ();
18:06 jnthn }
18:06 jnthn KyleHa: That looks wrong.
18:06 KyleHa What should it return if it receives an empty list?
18:07 KyleHa ...or nothing in the list is defined?
18:07 jnthn undef I guess
18:07 jnthn But it should probably return the first defined item.
18:07 pmichaud it should also probably have a slurpy param
18:07 jnthn That also.
18:07 KyleHa It does that as written.  The only way to get to 'return ()' is if there's nothing defined in the list.
18:07 pmichaud possibly a slice slurpy param
18:08 pmichaud although I guess slurpy would be sufficient
18:08 jnthn oh wait, I@m confused
18:09 jnthn How many patches were meant to be attached to that mail?
18:09 KyleHa I don't understand "slurpy" and "slice slurpy".
18:09 KyleHa Well, I did two commits in my repo, so it may have come out as two patches.  I just used git-patch-format, or whatever it says in the README.
18:09 pmichaud KyleHa: the patch you submitted seems to only have the [||] implementation.
18:09 pmichaud and normally we like the patches to get squashed
18:10 pmichaud we probably need to fix the README
18:10 KyleHa You're right, it only has [||] in it.
18:10 pmichaud I think the more up-to-date guide is http://wiki.github.com/rakudo/​rakudo/steps-to-create-a-patch
18:11 KyleHa Aha, that's helpful.
18:13 pmichaud althugh I'm not sure about all of the "fork repo" and "push branch" stuff.
18:13 KyleHa Like, ha ha, and stuff.
18:14 KyleHa I'm now less embarrassed about not reading the README before asking on channel.
18:20 Pismire joined #perl6
18:23 jnthn crony.t passes again \o/
18:23 pmichaud yay
18:24 pmichaud after you bump PARROT_REVISION, I'll send an updated list of gc-related failures to parrot-dev
18:24 jnthn pmichaud: Running full spectest now.
18:24 jnthn Then will push.
18:26 pmurias joined #perl6
18:26 pmurias hi
18:26 lambdabot pmurias: You have 3 new messages. '/msg lambdabot @messages' to read them.
18:32 tann joined #perl6
18:33 azawawi joined #perl6
18:33 azawawi hi
18:34 pmurias azawawi: hi
18:37 azawawi pmurias: what's new with mildew these days?
18:43 pmurias joined #perl6
18:44 pmurias azawawi: atm i'm trying to speed up mildew by making it compile code to C
18:52 pmurias ruoso: is there anything in mildew which may start new thread?
18:52 pmurias * threads
19:01 ruoso pmurias, why do you ask?
19:02 japhb joined #perl6
19:02 ruoso pmurias, there was a test that initialized different threads
19:03 pmurias_ joined #perl6
19:04 pmurias_ ruoso: i forgot to turn on reference counting and multi.t was segfaulting
19:04 pmurias_ (due to lack of memory)
19:04 pmurias_ gdb was printing some messages about threads
19:08 Pismire2 joined #perl6
19:10 Matt-W @tell masak The next cool feature in Form will arrive some time after somebody writes it.
19:10 lambdabot Consider it noted.
19:12 pmurias joined #perl6
19:16 * pmurias is running make test for a yeastish CORE
19:17 jnthn pmichaud: dinner now; pushed changes
19:17 jnthn (inc rev bump)
19:17 jnthn bbiab
19:19 pmichaud jnthn++
19:19 dalek rakudo: 1340dd4 | jnthn++ | src/ (3 files):
19:19 dalek rakudo: A few s/new/root_new/ for the (minor) win.
19:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​340dd4d15e3cc8978875a427ec924988921d69a
19:19 dalek rakudo: ec0a594 | jnthn++ | src/parrot/P6role.pir:
19:19 dalek rakudo: Oops, last patch had an issue.
19:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​c0a594a6b8b4274909f39aa5b2eb6102edbb1dd
19:19 dalek rakudo: 68fd939 | jnthn++ | src/parrot/P6role.pir:
19:19 dalek rakudo: Another new that should have been a root_new.
19:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/6​8fd939b81c0294205c13b41b352b685dcd383f7
19:19 dalek rakudo: c70c241 | jnthn++ |  (2 files):
19:19 dalek rakudo: Bump PARROT_REVISION, unfudge crony.t.
19:19 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​70c241b687858715f9397842ce3f5a38be4b088
19:20 donaldh joined #perl6
19:21 pmurias ruoso: is it ok if i have the CORE be compiled by yeast once yeast passes all the tests?
19:24 ruoso pmurias, sure it can
19:26 pugs_svn r27444 | pmurias++ | [re-smop] copied over some more methods into YeastFrame
19:26 pugs_svn r27444 | pmurias++ | fixed the way yeast compiles goto
19:26 pugs_svn r27445 | pmurias++ | [re-smop] added an old version of t/spec/S06-signature/positional.t i
19:26 pugs_svn r27445 | pmurias++ | use as a (random and flawed) benchmark
19:27 pugs_svn r27446 | pmurias++ | [re-smop]
19:27 pugs_svn r27446 | pmurias++ | yeast passes all tests - use it to compile the CORE
19:27 pugs_svn r27446 | pmurias++ | fix test count in t/benchmark.t
19:29 finanalyst joined #perl6
19:29 finanalyst @seen pmichaud
19:29 lambdabot pmichaud is in #perl6. I last heard pmichaud speak 10m 40s ago.
19:30 ruoso pmurias, is it noticeable if yeast makes mildew faster?
19:30 finanalyst pmichaud: hello
19:30 pmichaud finanalyst: hello
19:31 finanalyst pmichaud: i was using sub infix: to define a matrix operator and found I have to predefine it before using the operator. Is this always going to be the case?
19:32 pmichaud likely yes.
19:33 jnthn Single pass parsing would require that I guess.
19:33 pmichaud although you might be able to get away with a stub declaration or proto or something.
19:33 pmichaud but something has to tell the parser "this is a new operator" before it encounters it.
19:33 jnthn proto you can probably get away with now.
19:34 jnthn (stub is nyi)
19:34 finanalyst i used a stub with { ... } but i got a message "routine redefined"
19:34 finanalyst stub worked for me
19:35 finanalyst also i want the definition of the operator to be in the same file (not in a module), but not at the front of the program, so a stub is the preferred solution
19:36 pmurias_ joined #perl6
19:36 KyleHa joined #perl6
19:36 finanalyst except the redefined routine message seems wrong
19:37 jnthn Erm, that's why stubs don't work. :-)
19:38 pmurias ruoso: not sure, could you check that?
19:38 pmichaud I suppose it wouldn't be too difficult to detect when a sub contains only a stub.
19:38 ruoso pmurias, trying to..
19:38 pmichaud and mark it as "redefinable"
19:38 pmurias_ joined #perl6
19:41 jnthn pmichaud: Indeed, but also we most likely don't want to emit a PAST::Block for it at that point either.
19:41 pmichaud sure we do.
19:41 jnthn erm?
19:41 pmichaud sub foo() { ... };   foo();
19:41 jnthn oh, hmm
19:41 pmichaud that should give an error other than "foo not found"
19:42 jnthn perhaps, yeah.
19:42 finanalyst or as now "routine foo is redefined"
19:42 pmichaud S03:  The C<...> operator is the "yada, yada, yada" list operator, which
19:42 pmichaud among other things is used as the body in function prototypes.
19:42 pmichaud It complains bitterly (by calling C<fail>) if it is ever executed.
19:43 jnthn erh, ok
19:43 finanalyst rakudo: sub foo () { ... }; my $x=1; sub foo () { say 'yeah' }
19:43 p6eval rakudo 0e8a86: OUTPUT«Redefinition of routine foo␤»
19:43 jnthn We're gonna have to be careful that we don't end up with it as a bogus multi candidate.
19:43 pmichaud well, it's still not a multi :-)
19:44 jnthn Not in this case, no
19:44 pmichaud finanalyst: we agree with you that rakudo does the wrong thing right now with respect to ...
19:44 finanalyst rakudo: sub foo () { !!! }; my $x=1; foo()
19:44 p6eval rakudo 0e8a86: OUTPUT«Unable to parse block; couldn't find final '}' at line 2, near "!!! }; my "␤in Main (src/gen_setting.pm:3340)␤»
19:44 jnthn I meant more like how to handle multi foo() { ... }
19:44 finanalyst why would you want multi foo() { ... }?
19:45 pmichaud same reason you'd want sub foo() { ... }  -- to stub something in for later.
19:45 pmichaud the canonical example would be    multi infix:<something>($a, $b) { ... }
19:46 pmichaud although one could potentially use 'proto' for that.
19:46 finanalyst but why 'multi' when simply 'foo' would be sufficient?
19:46 pmichaud it might not be sufficient
19:46 pmichaud if one wants to multi-dispatch on the operator
19:46 pmichaud (or on the sub)
19:47 finanalyst how would you accomplish a multi-dispatch on something that isnt redefined?
19:48 pmurias ruoso: any results?
19:48 finanalyst wouldnt sub foo() { ... } be sufficient for the compiler to know that a foo() exists, and then later multi foo() { # more code }?
19:48 pmichaud No.
19:48 pmichaud Declaring foo() as a "sub" means it can't be "multi" later.
19:49 pmichaud (in the same scope)
19:49 finanalyst ah
19:49 pmurias_ left #perl6
19:49 ruoso pmurias, still getting a comparision value with the non-yest core
19:49 pmichaud rakudo:  sub foo() { say 'ok'; };   sub foo() { say 'huh'; }
19:49 p6eval rakudo 0e8a86: OUTPUT«sh: ./perl6: No such file or directory␤»
19:49 pmichaud oops.
19:49 pmichaud rakudo:  sub foo() { say 'ok'; };   sub foo() { say 'huh'; }
19:49 p6eval rakudo 0e8a86: OUTPUT«sh: ./perl6: No such file or directory␤»
19:50 TimToady std: sub foo() { say 'ok'; };   sub foo() { say 'huh'; }
19:50 p6eval std 27446: OUTPUT«##### PARSE FAILED #####␤Illegal redeclaration of package routine foo at /tmp/Qk6jH8UhpL line 1:␤------> [32msub foo() { say 'ok'; };   sub foo[31m() { say 'huh'; }[0m␤    expecting new name to be defined␤FAILED 00:02 37m␤»
19:50 TimToady std: sub foo() { say 'ok'; };   my sub foo() { say 'huh'; }
19:50 pmichaud std:  sub foo() { say 'ok'; };  multi foo() { say 'huh'; }
19:51 p6eval std 27446:  ( no output )
19:51 p6eval std 27446: OUTPUT«##### PARSE FAILED #####␤Illegal redeclaration of package routine foo at /tmp/iW7ZLzij9h line 1:␤------> [32msub foo() { say 'ok'; };  multi foo[31m() { say 'huh'; }[0m␤    expecting new name to be defined␤FAILED 00:02 37m␤»
19:51 pmichaud rakudo:  sub foo() { say 'ok'; };   sub foo() { say 'huh'; }
19:51 p6eval rakudo 0e8a86: OUTPUT«sh: ./perl6: No such file or directory␤»
19:51 TimToady std: sub foo() { say 'ok'; };   my sub foo() { say 'huh'; }
19:51 p6eval std 27446: OUTPUT«##### PARSE FAILED #####␤Illegal redeclaration of lexical routine foo at /tmp/WvV3wi5sIE line 1:␤------> [32msub foo() { say 'ok'; };   my sub foo[31m() { say 'huh'; }[0m␤    expecting new name to be defined␤FAILED 00:02 37m␤»
19:51 pmichaud (p6eval -- perpetuating the myth that perl6 is vaporware)
19:52 TimToady note you can get a collision in either the package or the lexical scope
19:52 ruoso pmurias, there's a small improvement
19:52 ruoso pmurias, but I think the most expesive part now is the bootstrap of the CORE
19:53 TimToady std: sub foo() { say 'ok'; }; { my sub foo() { say 'huh'; } }
19:53 p6eval std 27446: OUTPUT«ok 00:02 37m␤»
19:53 TimToady std: sub foo() { say 'ok'; }; { sub foo() { say 'huh'; } }
19:53 p6eval std 27446: OUTPUT«##### PARSE FAILED #####␤Illegal redeclaration of package routine foo at /tmp/ken6ORz1Hz line 1:␤------> [32msub foo() { say 'ok'; }; { sub foo[31m() { say 'huh'; } }[0m␤    expecting new name to be defined␤FAILED 00:02 37m␤»
19:55 pmurias ruoso: any solutions for that?
19:56 ruoso pmurias, don't know... but a simple "1;" takes 9 seconds here... while with --empty-setting is immediate...
19:57 ruoso it surprises me that loading a yeast core is almost the same as loading a mold core
19:57 ruoso since mold requires that every bytecode is read immediatly...
19:58 ruoso while in yeast it simply points to the function
19:58 ruoso pmurias, hmm... interesting...
19:59 ruoso the yeast functions are not part of the shared interface
19:59 pmichaud jnthn: S03-operators/smartmatch.t gives me a non-gc related failure
19:59 TimToady I just revised it, so not surprising
19:59 pmichaud oh, I missed that.
19:59 pmichaud checking.
20:00 ruoso TimToady, after your last changes in STD regarding '::', am I wrong to understand that the final S11 won't be much far from the current version?
20:00 pmurias ruoso: shared inteface = ?
20:00 TimToady ruoso: still working on that
20:00 ruoso pmurias, it means that it is being loaded into the program space
20:01 azawawi joined #perl6
20:01 ruoso pmurias, probably because you're declaring it as static
20:01 azawawi http://ahmadzawawi.blogspot.com/2009​/07/whats-new-with-padre-perl-6.html
20:01 pmurias ruoso: that's bad?
20:01 jnthn pmichaud: I noticed that, but had put it down to GC.
20:01 jnthn pmichaud: 'cus I did once have a GC fail in that test.
20:02 ruoso pmurias, it might be related to the slow startup
20:03 pmichaud it's due to TimToady++'s changes to the test file
20:03 pmichaud I'll see if I can clean them up a bit
20:03 pmurias the slow startup might be related to multis being in the CORE
20:03 pmurias and they are slow (try running t/multi.t)
20:03 ruoso pmurias, there's one other thing... you never reuse any idconst
20:04 ruoso the generated C code have tons of SMOP__NATIVE__idconst_createn
20:04 ruoso and several of them are the same
20:04 ruoso pmurias, but during the CORE startup no multi is invoked
20:04 ruoso they are simply created
20:05 pmichaud TimToady: I'm confused a bit by
20:05 pmichaud ok(%hash1 ~~ any(%hash3), "intersecting keys");
20:05 ruoso a hash in list context return the list of pairs?
20:05 pmichaud Would   any(%hash3) be a junction of Pairs?
20:05 TimToady I didn't look at the semantics of the test to see if they made sense specwise
20:06 pmichaud so  ~~ any(%hash3)  would seem to be a smart match against a Pair
20:06 TimToady I supposed it would
20:06 TimToady probably wants a .keys in there
20:06 pmichaud oh, wait, it's
20:06 pmichaud Hash      Pair      test hash mapping       $_{Xkey} ~~ Xval
20:07 TimToady that's not what the comment says though...
20:07 pmichaud okay, so smart matching a Hash against  a Pair then.    I suspect Rakudo only knows the filetest meaning of smart matching against a Pair
20:08 pmichaud but yes, that's not what the test description says
20:09 TimToady but anyway, my change was motivated primarily by the fact that someone slapped {...} around some my declarations and expected them to work outside
20:09 ruoso pmurias, one thing that would improve a lot the performance would be to get all idconsts and initialize them once, reducing the number of registers used, by simply using them directly inside each yeast function
20:09 TimToady confusing the issue was that they were declared context
20:09 pmichaud right
20:09 masak joined #perl6
20:09 TimToady but that couldn't have worked either, even if rakudo supported it
20:09 pmichaud rakudo was skipping them because of the 'is context'
20:09 pmichaud correct.
20:10 pmichaud okay, we'll work on cleaning that up.
20:10 pmichaud later, in
20:10 pmichaud ok((%hash1 ~~ any(<foo bar>)), "any key exists (but where is it?)");
20:10 pmichaud that looks completely wrong to me.
20:11 TimToady yes, it looks like the old reversible semantics, I think
20:11 TimToady a string on the right always does eq
20:13 pmichaud right.
20:13 pmichaud okay, so a lot of cleanups to do there.
20:13 pmichaud Perhaps I'll just remove it from spectest regression until it can be properly corrected and fudged
20:13 ruoso pmurias, also, inner yeast frames are being created prematurely, it seems
20:14 TimToady it was almost entirely fudged before anyway
20:14 pmichaud agreed
20:14 pmurias ruoso: created prematurely?
20:15 ruoso pmurias, the inner yeast frames could be created only when the code was called, which means inside the yeast function... they are currently being created as constants in the registers
20:15 ruoso ah... that are not the frames
20:17 ruoso would it be too hard to consolidate the idconst initialization?
20:17 ruoso pmurias, I think that would make it clearer on what we could do later
20:17 pmurias no that should be very hard
20:17 pmurias ruoso: i'm wondering if running gprof would helpfull
20:18 ruoso pmurias, I'm not sure it would... but you could try... but there's one thing gprof will say that I'm already saying... SMOP__NATIVE__idconst__createn is being called too many times
20:20 masak .oO( inner yeast frames?! )
20:20 lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
20:20 masak @massage
20:20 lambdabot Matt-W said 1h 9m 38s ago: The next cool feature in Form will arrive some time after somebody writes it.
20:20 masak Matt-W: :P
20:20 ruoso masak, yeast is the mold version of lost ;)
20:21 * masak is the masak version of lost
20:21 ruoso pmurias, in fact, the Yeast object is not really needed... you could create the frame directly and have the constants available in the C scope...
20:22 ruoso and then simply use them inside the yeast function
20:22 ruoso (hopefully some beer should come out of all that yeast)
20:22 ruoso (or at least some bread)
20:22 pmurias or a tasty cake
20:23 dalek rakudo: cf851ca | pmichaud++ | t/spectest.data:
20:23 dalek rakudo: Remove S03-operators/smartmatch.t from spectest.data -- it has several spec errors.
20:23 dalek rakudo: It needs to be re-examined for correctness and refudged for Rakudo.
20:23 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​f851caba20f1f70d9c0f1650aec42f0b0989abc
20:24 moritz_ pmichaud: could you elaborate on the errors please?
20:24 pmichaud moritz_: many of the smart matches don't test what they claim to be testing
20:24 pmichaud because the spec has changed, likely.
20:26 pmichaud a quick-glance review
20:26 pmichaud ok(%hash1 ~~ any(%hash3), "intersecting keys");
20:26 pmurias ruoso: the Yeast object is needed as somethings (like Code) expect a factory for making frames
20:26 pmichaud ok(%hash1 !~~ any(%hash4), "no intersecting keys");
20:27 pmurias ruoso: but getting rid of constants from a Yeast is a good idea
20:27 pmichaud ok((%hash5 ~~ @true), "value slice true");
20:27 pmichaud ok((%hash5 ~~ @sort_of), "value slice partly true");
20:27 pmichaud ok(!(%hash5 ~~ @false), "value slice false");
20:27 pmichaud ok((%hash1 ~~ any(<foo bar>)), "any key exists (but where is it?)");
20:27 pmichaud ok(!(%hash1 ~~ any(<gorch ding>)), "no listed key exists");
20:28 pmichaud ok((%hash1 ~~ all(<foo blah>)), "all keys exist");
20:28 pmichaud ok(!(%hash1 ~~ all(<foo edward>)), "not all keys exist");
20:28 pmichaud ...etc...
20:28 moritz_ ok, I'll take another look
20:28 molaf_x joined #perl6
20:29 pmichaud clearly out of the first batch more tests are wrong than correct.
20:29 moritz_ should [||] and [//] short-circuit?
20:29 pmichaud I think the spec says they lose their short-circuitness as reduction ops
20:30 TimToady to the extent the list is lazy
20:30 ruoso pmurias, I see, because you need a SMOP__Object and not just a function pointer... but yeah... the constants could be removed from that...
20:30 pmichaud TimToady++ # ah yes, laziness rules
20:31 TimToady but it can't be relied upon to suppress side effects, since lists are only mostly lazy
20:31 TimToady unless we treat those reductions specially and enforce strict laziness
20:31 pmichaud would something like    [//] @array, foo()     always result in foo() being called?
20:31 pmichaud even if @array is lazy ?
20:32 TimToady not predictable
20:32 pmichaud okay.
20:32 TimToady the impl is allowed to batch things as it sees fit
20:33 TimToady could even be controlling the batch size from /dev/urandom :)
20:33 TimToady or /dev/catbox :)
20:33 mikehh_ joined #perl6
20:33 jnthn "Why is my program fast only sometimes?"
20:33 pmichaud "The cat is asleep."
20:33 jnthn "We batch randomly and sometimes get lucky."
20:34 pmichaud "The cat left its review of your code in the catbox."
20:34 TimToady your program is pining for the fjords some of the time
20:34 TimToady actually, that would explain a lot about parrot...
20:35 TimToady why couldn't it have been Schroedinger's Parrot?
20:35 pmichaud new lightning talk:  "Schroedinger's Parrot"
20:36 TimToady of course, then parrot would have been named cat instead...
20:36 KyleHa Cat ate the parrot.
20:36 pmichaud "Schroedinger's Parrot" explains why Rakudo gives different results depending on the state of garbage collection.
20:36 pmichaud and GC of course gets us right back to the catbox analogy.
20:36 TimToady and people would be given "Useless use of parrot" awards
20:37 pmichaud "Useless use of parrot"   # yet another terrific lightning talk title
20:37 TimToady funny thing is, it makes sense to say "parrot /etc/passwd"
20:37 sjohnson does anyone here get to do perl fulltime at work, 100% job description, and get paid decently?
20:38 TimToady define "perl", "fulltime", "work", and "paid"
20:38 pmichaud depends on what you mean by "perl fulltime".  I've never seen any job where 100% of the work was code.
20:38 TimToady and 100% while you're at it
20:38 sjohnson writing in Perl 5 to do backend kind of stuff, for a regular 8 hour a day shift, and gets paid well enough to live comfortably
20:38 pmichaud where I worked, there was this phrase "...and other duties as assigned"
20:39 sjohnson right now i get 5% Perl and 95% PHP and i am in a very serious "bad place" in my life
20:39 TimToady some days the cat pines for the fjords more than other days...
20:39 sjohnson because i can hardly will myself to work
20:40 KyleHa1 joined #perl6
20:40 pmichaud anyway, about 50-75% of my week is Perl.
20:41 pmichaud but the "paid decently" part is suspect.
20:41 hercynium joined #perl6
20:41 sjohnson i get paid 18 Canadian an hour
20:41 pmichaud (assuming one speaks primarily in terms of monetary payment)
20:41 sjohnson with no benefits
20:41 sjohnson so at least better than that
20:43 RonOreck thats better than what i make, i get $9.5 an hour
20:45 pmurias does gprof measure time spent in libraries?
20:46 sjohnson RonOreck: is it because you are young? i was offered many compuer jobs at 8 an hour
20:47 masak I once suggested that the $format param in .fmt have defaults corresponding to what .Str would output. is anyone wildly opposed to that idea? I'm willing to change both the spec and Rakudo to conform. :)
20:48 moritz_ masak: please also change the tests (if they exist ;)
20:48 masak oh, right.
20:48 masak probably only need to add a few tests.
20:48 RonOreck sjohnson: partially, but its mostly that i live in the backwoods and computer jobs are scarce
20:49 moritz_ from the S03 smartmatch table:
20:50 jnthn TimToady: oh hai
20:50 moritz_ Any       *         block signature match   block successfully binds to |$_
20:50 jnthn TimToady: I'm wanting to get trait tests in shape.
20:50 moritz_ which block is that talking about
20:50 jnthn Like http://svn.pugscode.org/pug​s/t/spec/S14-traits/basic.t
20:50 moritz_ ?
20:50 jnthn TimToady: I see a test like
20:50 jnthn role testtrait1 {
20:50 jnthn method exists-only-in-test-trait {
20:50 jnthn 42;
20:50 jnthn }
20:50 jnthn multi trait_auxiliary:<is>(testtrait1 $trait, $container) {
20:50 masak moritz_: whatever block? ;)
20:50 jnthn $container does testtrait1;
20:50 jnthn }
20:50 jnthn }
20:51 jnthn So OK it should become trait_mod
20:51 jnthn And also, $container comes first
20:51 jnthn But also, would this not put the multi sub only in the testtrait1 package, as testtrait1::trait_auxiliary:<is> and not affect the "main" one?
20:52 payload joined #perl6
20:52 moritz_ jnthn: that was an open question at the time I wrote that test
20:53 jnthn moritz_: It may still be an open one now ;-)
20:54 moritz_ so it needs to go into a separate file, because multis are exported by default?
20:56 pugs_svn r27447 | moritz++ | [t/spec] first stab at reorganizing smartmatch.t
20:56 pugs_svn r27447 | moritz++ |
20:56 pugs_svn r27447 | moritz++ | I started to bring those in the same order as the spec lists them, and also
20:56 pugs_svn r27447 | moritz++ | added one test there $obj ~~ .method return a False value
20:57 jnthn moritz_: That feels...odd.
20:57 jnthn That you'd have to do that
20:58 jnthn But interesting point.
20:58 moritz_ well, you could also call BEGIN That::Package.IMPORT; or so
20:58 Gothmog_ joined #perl6
20:58 moritz_ or however this is spelled today
21:00 eternaleye joined #perl6
21:04 Pismire joined #perl6
21:05 ruoso http://daniel.ruoso.com/cate​goria/perl/dice-game-perl-6
21:06 masak ruoso: nice post.
21:08 pugs_svn r27448 | moritz++ | [t/spec] more smartmatch moving; tests for $sub ~~ .()
21:10 masak ruoso: I read an earlier blog post title "How do we get out of this mess?" as "How did we get out of this mess?" and found it wonderfully backward, until I realized I had read it wrong. :P
21:11 ruoso masak, heh
21:13 pmichaud ruoso++  # excellent post, thanks
21:17 jnthn Yes, nice post
21:18 masak oh, and about .fmt: there's one other thing I'd like to fix.
21:18 ruoso thanks ;)
21:18 masak right now the default separator between entries in %hash.fmt is "\n"
21:19 masak however, when you do say %hash, the separator is ''
21:19 masak I'd like to change either of those so the outputs become equal.
21:20 masak rakudo: my %hash = 1 => 2, 3 => 4; say %hash.fmt("%s\t%s"); say %hash
21:20 p6eval rakudo cf851c: OUTPUT«1  2␤3      4␤1      23        4␤»
21:20 pugs_svn r27449 | moritz++ | [t/spec] hash slice smartmatch tests
21:20 pugs_svn r27450 | moritz++ | [t/spec] "simple truth" smartmatch tests"
21:20 masak (note '2␤3' vs '23')
21:21 masak this is not a big thing, but it's one of those unexplainable incosistencies which we would be better off without, IMO.
21:22 moritz_ +1
21:22 moritz_ rakudo: say "01" ~~ 1
21:22 p6eval rakudo cf851c: OUTPUT«1␤»
21:22 moritz_ rakudo: say "01" ==1
21:22 p6eval rakudo cf851c: OUTPUT«1␤»
21:23 masak fwiw, I think .fmt has the nicer separator (since a "\n" makes the entries more separated than the key/value within them), but I could go either way.
21:23 moritz_ it's nicer
21:24 * masak goes ahead, then
21:24 moritz_ but traditionally a hash is just a list of pairs
21:24 moritz_ so say %foo would interpolate the hashes in the list context
21:24 moritz_ in perl 5, at least
21:24 masak even then, there should be a ' ' between them
21:24 moritz_ rakudo: say <a b c>
21:24 p6eval rakudo cf851c: OUTPUT«abc␤»
21:24 moritz_ no.
21:24 masak rakudo: say a => 'b'
21:24 p6eval rakudo cf851c: OUTPUT«␤»
21:25 masak o_O
21:25 moritz_ but I think it's fine to break that kind of backwards compat
21:25 moritz_ rakudo: say 'a' => 'b'
21:25 p6eval rakudo cf851c: OUTPUT«a  b␤»
21:25 moritz_ masak: say() doesn't know what to do with named args
21:25 masak oh, of course. :/
21:25 masak there's a "\t" in pairs, so there should probably be one in hashes, too.
21:26 masak but it looks visually wrong to have "\t" inside pairs and '' between them.
21:26 masak a ' ' between would be consistent with arrays; that's something, I guess.
21:27 * ruoso decommute &
21:28 allbery_b joined #perl6
21:34 eternaleye rakudo: my %hash = 1 => 2, 3 => 4; say ~%hash
21:34 phenny eternaleye: 09:20Z <jnthn> tell eternaleye no, nobody showed me that...got a link? :-)
21:34 p6eval rakudo cf851c: OUTPUT«1  2␤3      4␤␤»
21:34 eternaleye masak: ^^^^ You're forgetting that 'say' takes a list
21:35 masak yes, so it seems.
21:35 eternaleye jnthn: It's the first hiragana in each group. It has a nice cadence, which makes it easier to remember - Until a friend showed me, I kept mixing up where the 'ha'  and 'ma' groups went
21:35 masak good, then I don't have to change the stringification of hashes. :)
21:37 jnthn eternaleye: Thanks...I'll stare at them a bit until I see it. :-)
21:37 pugs_svn r27451 | moritz++ | [t/spec] numeric comparison smartmatch
21:37 eternaleye jnthn: http://happygold.com/japan/language/lesson3/ explains it (warning: uses the 'wide' variants of English letters)
21:38 eternaleye I'll see if I can find a less-eye-destroying example
21:38 eternaleye jnthn: Aha! http://babelhut.com/languages/japanese/a-mnemoni​c-device-to-remember-japanese-dictionary-order/
21:39 eternaleye Has a nice chart of the hiragana sounds too (though it doesn't have the symbols)
21:40 mizioumt joined #perl6
21:40 eternaleye jnthn: I have a kvtml (flashcards) file with the hiragana, and another with the katakana if you want them
21:41 jnthn I already grabbed an iPhone app that does the flashcards thing quite nicely, but thanks! :-)
21:41 jnthn Heh, that's a nice mnemonic.
21:42 jnthn Though "Ramen won't nourish" is maybe a better follow on after the first sentence. ;-)
21:42 eternaleye Nice
21:44 pugs_svn r27452 | moritz++ | [S03] use real Perl 6 syntax where possible
21:46 masak really, they won't.
21:46 pugs_svn r27453 | moritz++ | [t/spec] fixed syntax error
21:46 pugs_svn r27454 | moritz++ | [t/spec] smartmatch string comparison
21:48 masak TimToady: what's the status of viv, relative to gimme5?
21:49 moritz_ man, that smartmatch table is looong
21:53 justatheory joined #perl6
21:53 japhb joined #perl6
21:55 moritz_ ruoso++ # very nice blog post indeed
21:55 dduncan joined #perl6
21:56 dduncan question ... when currying a Perl routine, does it make sense to curry reference parameters or just readonly parameters?
21:56 dduncan as a concept
21:57 moritz_ it makes sense, but it's evil action at a distance
21:57 masak mwhaha.
21:58 dduncan can you think of a useage example where it would be a good idea?
21:58 jnthn Obfuscation.
21:59 dduncan I'm thinking for example as a way of implementing state
21:59 pugs_svn r27455 | moritz++ | [S03] uhm, I should read more carefully what I "correct"
21:59 moritz_ dduncan: for example a series of substr() calls that all modify the same string
21:59 moritz_ as a matter of convenience, why not?
21:59 jnthn .subst calls might be a better example.
21:59 moritz_ or that, yes
22:00 jnthn (or at least, I've more code that does a few of thsoe)
22:00 masak rakudo: set-to-five($var is rw) { $var = 5 }; my $oh-noes-don't-change-me = 42; my &hehe = &set-to-five.assuming($oh-noes-don't-change-me); hehe; say $oh-noes-don't-change-me
22:00 p6eval rakudo cf851c: OUTPUT«Statement not terminated properly at line 2, near "($var is r"␤in Main (src/gen_setting.pm:3340)␤»
22:00 dduncan okay
22:00 masak rakudo: sub set-to-five($var is rw) { $var = 5 }; my $oh-noes-don't-change-me = 42; my &hehe = &set-to-five.assuming($oh-noes-don't-change-me); hehe; say $oh-noes-don't-change-me
22:00 p6eval rakudo cf851c: OUTPUT«5␤»
22:01 jnthn rakudo++
22:01 moritz_ masak++ # calling a variable $oh-noes-don't-change-me
22:01 masak it's a variable, but a very shy one.
22:01 Limbic_Region joined #perl6
22:02 justatheory_ joined #perl6
22:06 masak anyone else get "Missing test file: t/spec/S12-attributes/class2.t" when running the spectests?
22:07 moritz_ rakudo: class A { method b { say "b" } }; A.new ~~ :b
22:07 p6eval rakudo cf851c: OUTPUT«Method ':b' not found for invocant of class 'A'␤»
22:07 moritz_ rakudo: say "README" ~~ :e
22:07 p6eval rakudo cf851c: OUTPUT«1␤»
22:10 pugs_svn r27456 | masak++ | [S32/Str] added $format defaults to .fmt methods
22:11 pugs_svn r27457 | masak++ | [t/spec] allowed .fmt to be called with no arguments
22:15 justatheory joined #perl6
22:16 dalek rakudo: 99ad1eb | masak++ | src/ (4 files):
22:16 dalek rakudo: added $format default to all .fmt variants
22:16 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/9​9ad1eba788968e9d758e4a381c691691b96286e
22:16 masak the commit trifecta: spec + spectest + Rakudo. :)
22:17 masak I don't think I've done that since I implemented .fmt ...
22:28 moritz_ rakudo: my %a = a => 2, b => 3; say any(%a).perl
22:28 p6eval rakudo cf851c: OUTPUT«any("a" => 2, "b" => 3)␤»
22:28 moritz_ rakudo: my %a = a => 2, b => 3; say any(%a).eigenstates.perl
22:28 p6eval rakudo cf851c: OUTPUT«["a" => 2, "b" => 3]␤»
22:31 justatheory_ joined #perl6
22:33 masak rakudo: my %a = a => 2, b => 3; say %a.fmt
22:33 p6eval rakudo cf851c: OUTPUT«No applicable candidates found to dispatch to for 'fmt'␤in Main (/tmp/tYJIAxmuN1:2)␤»
22:33 masak hm. too early.
22:35 justatheory joined #perl6
22:36 masak jnthn++ # @pets>>.?lick($guest); # The dog will, the fish won't
22:37 moritz_ rakudo: sub e($x) { eval $x }; { my $a; say e('$a') }
22:37 p6eval rakudo cf851c: OUTPUT«␤»
22:37 moritz_ rakudo: sub e($x) { eval $x }; { my $a = 5; say e('$a') }
22:37 p6eval rakudo cf851c: OUTPUT«␤»
22:37 moritz_ should that print 5\n?
22:38 masak no?
22:39 masak there's no $a in the e sub.
22:39 cls_bsd joined #perl6
22:39 masak it'd be another thing entirely if $a were dynamically scoped...
22:39 masak ...but it isn't. it's lexical.
22:39 jnthn masak: Where was that from? :-)
22:40 masak jnthn: http://use.perl.org/~Jonath​anWorthington/journal/39072
22:40 jnthn oh, damm
22:40 jnthn I don't even remember writing that example.
22:40 jnthn :-)
22:40 * moritz_ remembers some weird rules about eval tied to some block scope... damn, too late in the night
22:41 jnthn moritz_: Rakudo is correct there, I'm sure.
22:41 jnthn Somebody has brought this up before.
22:41 moritz_ rakudo: sub e($x) { eval $x };  my $a = 5; say e('$a')
22:41 jnthn The lexicals are those at the point of the eval, not at the point you created the string to eval.
22:41 p6eval rakudo cf851c: OUTPUT«5␤»
22:41 jnthn If you want those kinds of semantics, pass a closure containing the eval.
22:42 jnthn And invoke the closure.
22:42 moritz_ and is *this* one correct?
22:42 moritz_ I guess the 'my $a' takes effect before eval() runs
22:42 jnthn Right.
22:42 jnthn And more importantly, the assignment to it.
22:42 masak rakudo: class Pet {}; class Dog is Pet { method lick($person) { say 'The dog licks ', $person, '!' } }; class Fish is Pet {}; my Pet @pets = Dog.new, Fish.new; my $guest = 'the surprised gentleman'; @pets>>.?lick($guest);
22:42 p6eval rakudo cf851c: OUTPUT«The dog licks the surprised gentleman!␤»
22:43 masak just had to try it. :P
22:43 * jnthn akshually lols
22:43 pugs_svn r27458 | moritz++ | [t/spec] Any ~~ Pair
22:44 pugs_svn r27459 | moritz++ | [t/spec] more sanity for smartmatch.t
22:44 masak jnthn: well, you said "Have fun" in your blog post, so...
22:44 * jnthn finally finsiehd a blog post...now to proof read and post it
22:44 moritz_ pmichaud: ok, smartmatch.t is in a *much* better shape now, although I didn't get around to review it all. I think it's up to you to decide if you include it again
22:45 justatheory_ joined #perl6
22:45 masak jnthn: is it a grant blog post?
22:46 * masak looks forward to another song lyric, see
22:49 jnthn yes
22:49 masak \o/
22:56 jnthn http://use.perl.org/~Jonath​anWorthington/journal/39239
22:59 masak rakudo: bless {}, A
22:59 p6eval rakudo 99ad1e: OUTPUT«Could not find non-existent sub A␤»
22:59 masak rakudo: bless {}, A::B
22:59 p6eval rakudo 99ad1e: OUTPUT«Null PMC access in invoke()␤in Main (/tmp/JlfbdUneZ6:2)␤»
22:59 masak rakudo: A::B
22:59 p6eval rakudo 99ad1e: OUTPUT«Null PMC access in invoke()␤in Main (/tmp/YhRSLqeEuz:2)␤»
22:59 * masak submits
22:59 masak jnthn: appropriate lyric :)
23:00 TimToady did you just make .fmt a synonym for .Str?
23:00 masak TimToady: no. :) but the default is the same as .Str
23:01 moritz_ jnthn++ # nice post
23:02 masak TimToady: it would be possible to pass $separator as a named to .fmt, right? so I maintain the $format default can have some use, besides emulating .Str
23:02 * masak does a o_O at the mention of 1.0
23:03 masak there will be a 1.0 release of Rakudo?
23:03 jnthn Well presumably some day.
23:03 jnthn ;-)
23:03 masak I thought the release would be 6.0.0
23:03 jnthn My point was that I consider this the last time we'll have to significantly re-visit this area of the implementation.
23:04 jnthn In the path to 6.0.0.
23:04 masak aye.
23:04 masak that's nice.
23:04 moritz_ jnthn: so you don't think that calling positionals by name is going to change much?
23:05 jnthn moritz_: While I can appreicate from a Perl 6 user perspective that looks like a related topic, it's actually (apart from one C-level function in the multi-dispatcher) quite orthogonal.
23:05 jnthn moritz_: I guess I can explain it best as, "that's about signature binding".
23:06 jnthn It's not really a factor in deciding which method to call.
23:06 moritz_ right.
23:06 jnthn So yes, that is an issue that certainly needs to be fixed because Rakudo is very wrong there. But that's a Diferent Problem.
23:06 masak jnthn: are there two words 'deference' in English, one with stress on the 1st syllable, and one with stress on the 2nd?
23:07 jnthn I don't *think* so.
23:07 masak so you mean the 1st-syllable one in your post?
23:07 masak because to me that word means 'humility' or some such.
23:07 jnthn gah, let me grab a dictionary
23:08 jnthn I'm a native speaker and thus have no clue at all about English. I jsut speak it. :-)
23:08 jnthn 1. respectful submission or yielding to the judgment, opinion, will, etc., of another.
23:08 masak aye.
23:08 jnthn That fits.
23:08 masak ok, good.
23:08 jnthn We're choosing to defer/yield to the will of another method.
23:09 ruoso joined #perl6
23:09 jnthn But yes, there is a definition of "Courteous respect" too.
23:09 masak I would have thought that was called 'deferal'
23:09 masak er, 'deferral'.
23:09 TimToady deferral is putting something off till later
23:09 masak or 'deferment'.
23:09 masak ah, ok.
23:09 masak like I'm doing with sleep right now.
23:10 jnthn ;-)
23:10 TimToady a deferment is what you acquire when you don't have to do something till later
23:10 nacho_ joined #perl6
23:10 masak nice to know there's still English left to learn. :)
23:10 moritz_ TimToady: should $obj ~~ :nonexistingmethod die?
23:11 ruoso using "when * <= 50 {...} when..."  in place of "if $_ <= 50 {...} elsif..." in rakudo takes more twice the amount of time to execute
23:11 jnthn Anyway, I hope that the post clarifies why we did the refactor, and what I actually did.
23:11 ruoso s/more twice/more than twice/
23:12 jnthn ruoso: Not so surprising.
23:12 masak ruoso: well, there are exceptions and stuff involved.
23:12 jnthn ruoso: * <= 50 constructs a closure.
23:12 jnthn Which we then invoke.
23:12 jnthn $_ <= 50 just the call to infix:<< <= >> straight off.
23:12 masak jnthn: yes, it does. jnthn++
23:12 moritz_ bed&
23:12 jnthn schlaft gut
23:13 TimToady moritz_: I suppose
23:13 jnthn .oO( I hope that means what I think it means )
23:14 masak now that we have language interop (Tene++), will we soon have Perl 6 closures in PGE regexes?
23:14 * masak hopeful
23:14 jnthn pmichaud has been suggesting he's going to be digging into PGE stuff a lot more in the near future.
23:15 Tene I could do it, as long as you're really really careful if you ever try to use them in the perl 6 grammar itself.
23:15 masak jnthn: oh, and I haven't actually tried to compile November, Druid, proto et al after your refactor, so that _might_ be why you haven't heard any complaints... :)
23:15 jnthn masak: Oh.
23:15 jnthn masak: But I did it before the last release!
23:16 Tene masak: how much do you want that ASAP?
23:16 masak jnthn: oh, ok.
23:16 masak Tene: no hurry, actually.
23:16 jnthn Are you using Pittsburgh?
23:16 masak Tene: it's just something I've always wanted.
23:16 jnthn If so, you're using 'em.
23:16 Tene masak: would you have a use for them if i did it tonight or tomorrow?
23:16 masak jnthn: yes, all those projects use at least Pittsburgh.
23:16 ruoso TimToady, would the compiler be allowed to optimize such when constructs into if/elsif? or is there some extra expectation on the use of Whatever?
23:17 masak Druid uses bleeding, because it has no users.
23:17 Tene I haven't actually gotten much of anything at all done since I've moved into my new place.  I'm feeling kind of grumpy about that.
23:17 masak proto uses whatever people config it to use.
23:17 masak ruoso: Whatever could have been augmented.
23:18 * s1n is finally back to the grind
23:18 masak or some of the operators with * as an argument could have.
23:18 ruoso hmmm...
23:18 masak Tene: moving takes a lot of mana.
23:20 TimToady ruoso: multi dispatch is based on a static candidate list known to the compiler, so if * <= 50 finds only one candidate, it can be inlined
23:20 donaldh joined #perl6
23:22 masak time to actually go to bed.
23:22 masak o/
23:22 ruoso right...
23:22 * ruoso feels curious on how such an optimization could be done in rakudo....
23:29 ihrd joined #perl6
23:34 dduncan left #perl6
23:40 frew_ joined #perl6

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

Perl 6 | Reference Documentation | Rakudo | Niecza | Specs