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