perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
jnthn I seem to remember that I started taking us in that direction - creating a PMCProxy object at the point the PMC's vtable was built. 00:00
IIRC allison then felt we shouldn't be creating all of those PMCs up front but instead should create them on-demand.
pmichaud it's okay with me if it's done at the point where it's first needed... but mro really shouldn't be a list of names.
jnthn yeahbut we gotta know the list of parents in terms of _something_ 00:01
pmichaud where does mro come from in the first palce?
*place?
jnthn And it can't be in terms of class objects if we...y'know...ain't creating them.
Look at any .c file generated from a .pmc file 00:02
And grep for VTABLE_push_string(interp, mro
pmichaud I presume it's more interesting for a PMC that actually has parents :-) 00:03
jnthn yes ;-)
pmichaud okay, here's what really doesn't make sense then. 00:04
Capture PMC doesn't have any parents.
so we shouldn't even be in that loop to begin with.
or we're looping on something _other_ than the Capture PMC 00:05
jnthn I suspect the latter.
pmichaud looks like Hash.
jnthn What has Hash as a parent... 00:06
pmichaud so.... let me throw Hash into the mix
or Maping
jnthn Oh, lots of things.
Yeah, try that.
oh, we'll need a few other bits to throw taht in. 00:07
pmichaud lots of dependencies for those 00:08
jnthn yeah
'cus you pull in the whole parametric role fun.
pmichaud which means we need the dynops 00:09
jnthn Oh?
Maybe
pmichaud because we need guts.pir
jnthn Ah, yes.
pmichaud it gets kinda ugly from there. 00:10
00:10 DemoFreak left
japhb jnthn: sorry to interrupt. I saw a commit that you worked on constant decls. Did you get 'constant foo is export' working also? 00:11
jnthn japhb: No, not is export just yet.
But otherwise constant is working.
Or should be working enough.
Will do export later in the week, all being well.
pmichaud trying to add Hash into the small example doesn't seem like a fruitful path at the moment. 00:12
japhb jnthn: OK, cool, thanks!
jnthn pmichaud: Sure. Though I wonder if sticking a Hash entry in the namespace is enough? 00:13
Just faking something up
pmichaud I've just been using the PAST::Op protoobject :-)
japhb What is the current easiest way in Rakudo to insert a file (textually) into the currently compiling file? (I'm looking for the equivalent of cpp #include, more or less) 00:14
pmichaud since Hash ends up being a protoobject :-)
jnthn Syre
pmichaud japhb: require ?
jnthn require isn't so much textual though?
pmichaud I don't think there's a textual include in Perl 6.
cspencer rakudo: my @a = <a b c d>; say @a.exists(*-5)
jnthn Aye, me either...and I suspect that's what japhb is really needing.
japhb pmichaud: What jnthn said. 00:15
p6eval rakudo c76d8d: OUTPUTĀ«Use of uninitialized valueā¤0ā¤Ā»
jnthn japhb: I suspect for now you can't do stuff in modules until is export is in place.
japhb But thanks, I had also forgotten that require was working. :-)
jnthn is export for constants, that is
cspencer rakudo: my @a = <a b c d>; say @a.exists(*-4) 00:16
p6eval rakudo c76d8d: OUTPUTĀ«Use of uninitialized valueā¤1ā¤Ā»
jnthn pmichaud: Getting quite tired (late here and still catching up on sleep) so 'fraid I'll have to leave this bug hunting for now. 00:17
pmichaud jnthn: no problem, I will have to leave also.
But at least we've identified the loop.
jnthn Sure. 00:18
And fixed some stuff that was making us fail earlier.
pmichaud a-ha! 00:19
nopaste coming!
nopaste.snit.ch/16433 # now with segfaults!
and if I comment out the include of Capture.pir, it doesn't segfault. 00:20
*this* is something we can work with.
Later. Or tomorrow.
Or maybe Tene++ can pick it up. 00:21
jnthn Excellent.
OK, posted Rakudo day report at use.perl.org/~JonathanWorthington/journal/38888
and now, sleep time
night
pmichaud I'm a little surprised that -G exposed the bug more readily. 00:22
jnthn: bug in rakudo report
my $x = 42; # ok
should be
my answer $x = 42;
jnthn oops 00:23
fixed, thanks!
pmichaud dynnertyme here :-) 00:24
jnthn enjoy!
cu
Tene I can look at it after Miscellaneous Events with the girlfriend. 00:25
00:30 hercynium joined, meteorjay left 00:32 meteorjay joined 00:38 cspencer left
japhb rakudo: eval "say 'foo'" 00:41
p6eval rakudo c76d8d: OUTPUTĀ«fooā¤Ā»
japhb rakudo: "say 'foo'".eval
p6eval rakudo c76d8d: OUTPUTĀ«Method 'eval' not found for invocant of class 'Str'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā» 00:42
japhb std: "say 'foo'".eval
p6eval std 26545: OUTPUTĀ«ok 00:04 35mā¤Ā»
01:08 eternaleye joined 01:22 ispy_ joined 01:26 payload left 01:27 kimtaro left 01:39 broquaint left 01:52 ispy_ left 01:56 alanhaggai joined 02:00 PhatEddy left 02:03 nihiliad joined 02:13 cognominal left 02:19 wknight8111 left 02:23 cognominal joined 02:31 meppl joined 02:33 bacek_ joined, bacek__ left 02:42 alanhaggai left
pmichaud Tene, jnthn: nopaste.snit.ch/16436 02:55
a very small, simple test case leading to a segfault with .HLL
Remove the .HLL line and it runs just fine.
Tene Nice.
pmichaud and yes, it goes into an infinite loop. 02:57
03:00 FurnaceBoy joined
Tene Yeah, it's capture.pmc:550 03:05
pmichaud I wonder if there's some other way we can get to the proxy object. 03:06
or the Capture PMC
(the classobj)
Tene can list() get_global [parrot;Capture] ? 03:07
pmichaud yes, that's what I'm wondering.
Tene want me to try? 03:08
pmichaud sure 03:09
I'll have to take a break in a moment.
03:11 meppuru joined
pmichaud looks to me like Parrot_get_namespace_keyed_str(INTERP, root_ns, 'Capture') 03:12
er, no.
hmm.
looks to me like Parrot_get_namespace_keyed_str(INTERP, root_ns, 'parrot') 03:13
and then after that 'Capture'
unless there's an easy way to build a key
03:14 meppl left, meppuru is now known as meppl, jaye joined
pmichaud it's also possible that the whole PObj_is_object_TEST(self) conditional can be avoided now. 03:17
that may be left-over from earlier versions of parrot where such subclassing had to be explicitly tested and worked around 03:18
so it might be worth checking other PMCs that have methods and see how/if they handle it.
Tene can I put decl in an if{} in C89?
then Parrot_oo_get_class(INTERP, namespace); 03:20
It works. 03:22
I'm testing it now
pmichaud might be nice to only do the ns lookups inside the if() 03:26
since they aren't used outside
Tene Can I declare ns in the if{} ?
in C89?
pmichaud sure -- there are other declarations there
Tene ... wow
pmichaud - STRING *classname = CONST_STRING(INTERP, "Capture");
Tene Thank you. 03:27
pmichaud that's a declaration.
but the declarations all have to be at the beginning
so you can't have the two ns = Parrot... statements followed by another declaration
Tene except... unless I mix that entire thing into one line, I need to declare all of them, and then do the lookups...
so twice the lines.
pmichaud no
just a sec 03:28
Tene anyway, all tests pass
03:37 orafu left, orafu joined 04:09 eternaleye_ joined 04:30 eternaleye left 04:45 FurnaceBoy left 04:46 hercynium left, skids_ left 04:47 hercynium joined 04:51 alester joined 04:55 mberends joined 05:01 nihiliad left 05:15 rewt left, rewt joined 05:16 wayland76 joined
eternaleye_ (re threads) You know, the most elegant solution might be to get these Peng Li and Steve Zdancewic people hooked on Perl 6 and let them help hammer out the spec. 05:27
(the ones who wrote the Unify paper) 05:28
05:29 masak joined
masak good morning, parsercamels. 05:29
05:30 japhb left
wayland76 eternaleye_: Where do they hang out? 05:31
lambdabot wayland76: You have 3 new messages. '/msg lambdabot @messages' to read them.
eternaleye_ wayland76: I dunno. I'm gonna try and track them down.
wayland76 www.cis.upenn.edu/~stevez/ 05:34
mberends masak: good morn, I think there may be some sockets test (unix only) working soon based on forking in a little shell script. 05:35
masak mberends: good morrow. that sounds nice indeed. 05:36
05:36 mberends left
Tene do we have fork in parrot? 05:36
Looks like no. 05:38
wayland76 (and just a minute ago, when I said "Where do they hang out", I was thinking of the quote from the Connecticut Yankee where Sandy say " 'Where do they hang out?' Verily, it trippeth from the tongue with lightess and...." (I forget the rest, and even lightness may be wrong)
05:39 japhb joined 05:42 mberends joined 05:45 alanhaggai joined 05:49 jaye left
masak std: UnknownType 05:54
p6eval std 26545: OUTPUTĀ«Undeclared name:ā¤ UnknownType used at 1 ā¤ok 00:02 35mā¤Ā»
masak std: KitchenSink
p6eval std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā»
masak std: class KitchenSink {}
p6eval std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā» 05:55
masak std: class Int {}
p6eval std 26545: OUTPUTĀ«ok 00:02 35mā¤Ā»
masak TimToady: any reason it doesn't warn for those last two?
Tene masak: I have many tests passing in rakudo in the hll branch. 05:58
A few failures... but mostly passes.
I can probably merge it soon.
masak Tene: hm, that was the blocker for things like playing around with Hitomi and PCT, right? 05:59
Tene kinda, potentially.
It meant that no other HLL could use Perl 6 code. 06:00
06:00 cognominal_ joined
Tene pmichaud, jnthn: i have rakudo passing many tests in the hll branch. Still a few failures left. 06:01
masak Tene: what causes the failures?
Tene Dunno yet! It's a mystery! 06:02
:)
masak :)
Tene I expect some of them are from unfudged tests in master 06:03
masak well, try merging then.
Tene success! 06:04
building again...
06:06 cognominal left
wayland76 I'm working with POE (on P5) at the moment, and I've noticed that NFA is supposed to be a drop-in replacement for Session, but it isn't. I'm hoping this will improve in P6 06:07
Tene wayland76: I've started work on a poe-alike in perl 6.
wayland76 Tene: Yeah, I'm backlogging, and that's why I mentioned it :)
Tene wayland76: I'd love some help on it, or even just feedback, once I get it more fleshed out. 06:08
wayland76 I suspect you're probably not doing NFA yet, but I thought I'd mention it in case you need to design Session to suit that somehow
Tene Thanks. :)
wayland76 Tene: I'd love to after I get a working Rakudo RPM, but I'm not doing any other P6 work until then :)
Tene wayland76: very important work... thank you for doing it. 06:09
wayland76 And I don't expect to get the time to work on that for at least another week
pugs_svn r26546 | masak++ | [u4x/TODO] added statement prefix 'lift' 06:12
r26546 | masak++ |
r26546 | masak++ | [u4x] removed line-ending spaces
r26546 | masak++ |
r26546 | masak++ | [u4x] s/data/documentation/
r26546 | masak++ |
r26546 | masak++ | The latter is more informative, IMHO. *Everything* in a computer is data.
wayland76 Tene: Am I right in presuming that you saw the recent S17/threads discussion and had at least some grasp of its relevance to your POE model?
masak: I hadn't thought of that way of getting extra karma before :o) 06:13
Tene i didn't see it.
perl6-language?
masak wayland76: sorry about that. it's the way git lays out commit comments. :/ 06:15
06:15 bacek left, justatheory left
wayland76 masak: Note clown face after last comment to show I was being silly :) 06:15
Tene wayland76: where was it? 06:16
masak wayland76: aye.
wayland76: I thought I would actually save y'all some noise by squashing three commits.
06:17 wayland joined
wayland Argh; server died again 06:17
Tene wayland: where was the S17 discussion? 06:18
wayland Tene, not p6l, but IRC backlog. I'l find the link when my server comes back up (about 5 minutes unless it's too cold; then double that)
pugs_svn r26547 | azawawi++ | Upgraded dependencies of YAML::Syck to 1.07 and Moose to 0.76.
Tene ah
wayland No, I'll do it now. Wait a few minutes
Tene no hurry 06:19
wayland Well, I can't do much else until the server comes back up 06:20
It's my NFS server, and I'm planning on replacing it, but until then, I have to keep it warm
I think the keyboard IO chip is faulty
06:21 alanhaggai_ joined
wayland irclog.perlgeek.de/perl6/2009-04-28#i_1099607 06:21
There and following for a while. Threading talk continues until 12:39 06:22
...with a few final comments at 13:37 06:23
06:26 alester left
wayland (Tene -- actual effect on what you're doing may be minimal, but it'll give you some idea of what people are thinking) 06:26
06:28 sri_kraih joined
eternaleye_ wayland76: Hm, neither of them seemed to have visited the #haskell channel prior to making that paper, so I can't track them down that way. Best option for contact seems to be locating Steve Z, who seems to have been Peng Li's thesis advisor. He's faculty, and therefore has a upenn email address. 06:28
Matt-W jnthn++ - better type error messages helping me track down a problem in Form with much less hair loss
06:29 alanhaggai left
moritz_ rakudo: my Str $x; $x = 4; 06:30
p6eval rakudo c76d8d: OUTPUTĀ«Type mismatch in assignment; expected something matching type Str() but got something of type Int()ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
wayland eternaleye_, he also has a Facebook
eternaleye_ That works.
masak jnthn: cool.
moritz_ wohoo 06:31
wayland I just googled Steve Zdancewic, and his Facebook was 3rd on the list
masak jnthn: I know it's specced to be "Str()" and "Int()", but does it have to be there? it feels redundant somehow...
jnthn: yes, I'm never satisfied :)
06:31 agentzh left
eternaleye_ wayland: Now we just need to get him and Peng Li hooked on Perl 6. 06:33
wayland eternaleye_: I don't think it's going to happen, but don't let me dissuade you from trying :) 06:34
Btw, he seems to be supervising more than one student. 06:35
Also, it seems like Tene is working on one facet of it, so I'm not as worried as I was; it may end up not needing to be specced at all (much like Form.pm) 06:37
moritz_ reddit++ # I put a non-working reddit widget on my blog (relative vs. absolute URL), and one of the reddit admins saw that and wrote me a mail about it
wayland That's kinda cool
wayland76 Yay, real keyboard again :)
06:39 agentzh joined 06:46 jhuni joined 06:47 iblechbot joined
Tene ... oops. I was going to work on my PCT presentation tonight. 06:47
Instead I spent the whole night on rakudo.
masak Tene, moritz: any insights into Match tree traversal? 06:49
moritz_ masak: yes
06:49 ejs joined
moritz_ thought not very good ones 06:49
I'll get you two links, just a sec... 06:50
06:50 DemoFreak joined
moritz_ masak: here <nopaste.snit.ch/16420> I tried a different approach, and wrote down how it didn't work. pmichaud's answer: nopaste.snit.ch/16427 06:51
masak excellent, thanks.
moritz_ slaps forehead 06:53
I know what's wrong
masak even better. :)
moritz_ .chunks thinks that .from and .to are zero-based
but of course they are based on self.from
masak ah. 06:54
moritz_ rakudo: ' foo' ~~ /.*?<ident>/; say $/<ident>.chunks.perl
p6eval rakudo c76d8d: OUTPUTĀ«["~" => "foo"]ā¤Ā»
moritz_ rakudo: ' foo' ~~ /.*?(.(.)+)/; say $0.chunks.perl 06:55
p6eval rakudo c76d8d: OUTPUTĀ«["~" => " ", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => " ",ā¤ text => " ",ā¤ from => 1,ā¤ to => 2,ā¤), 1 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => " ",ā¤ text =>
.." "...
moritz_ rakudo: ' foo' ~~ /.*?f(.(.)+)/; say $0.chunks.perl 06:56
p6eval rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā»
06:56 ejs left
moritz_ see, it produces two three 'o's altogether 06:56
06:56 ejs joined
moritz_ although all o's should add up to 2 06:56
masak I don't follow yet, but that's because I'm a bit disctracted right now. 06:57
moritz_ rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl
p6eval rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā»
masak is it a bug? :)
moritz_ sure
masak submits rakudobug
moritz_ title '.chunks doesn't work on submatchs' </humblesuggestion> 06:59
masak fine.
pugs_svn r26548 | moritz++ | [t/spec] tests .caps and .chunks on submatches 07:03
moritz_ tests are in t/spec/S05-capture/caps.t
... and a fix is currently being tested 07:05
man, why does it take so long to compile the setting? </sigh>
masak moritz_: you keep giving all these closing tags... where do you open them? :P 07:07
07:08 Jedai joined
moritz_ masak: in a paralllel universe, of course 07:08
masak should have seen that one coming
moritz_: I'd like to see an XML parser that handles that.
"Error: no corresponding opening tag, exhausted parallel universes." 07:09
moritz_ masak: give me a quantum computer and port Perl 6 to it, and I'll do that ;-)
masak quantum computing ā™„ Perl 6. 07:10
(and yes, I've studied the former enough to know that's the case.)
moritz_ and yes, I've studied the later enough to know that's the case ;-) 07:11
masak if we can only keep the idea of junctions pure until we get commercial quantum computing...
07:11 japhb_ joined
masak "You did that in O(1) !? but... how?" "Well, this junctive construct sends things off to the QPU..." 07:12
07:12 japhb left
moritz_ you know that you can do primality test with junctions? 07:12
masak aye.
talk about "disruptive tech" right there. 07:13
moritz_ for 2..6 -> $x { say ?(none(2..$x) * any(2..$x) == $x) }
rakudo: for 2..6 -> $x { say ?(none(2..$x) * any(2..$x) == $x) }
p6eval rakudo c76d8d: OUTPUTĀ«1ā¤1ā¤0ā¤1ā¤0ā¤Ā»
masak nice. 07:14
moritz_ it's such a cool application of autothreading that I couldn't resist adding it to the test suite ;-)
masak :P
relatedly, this article is sometimes a source of inspiration for me: c2.com/cgi/wiki?PimcPiflPire 07:15
moritz_ afk 07:16
07:21 zostay left, zostay joined
moritz_ rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl 07:28
p6eval rakudo c76d8d: OUTPUTĀ«["~" => "oo", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā»
moritz_ not updated yet 07:29
masak realizes that lazy lists make pimc pifl pire less necessary, if not less impossible 07:31
um, scratch that. I just saw the Fermat example. 07:32
man.
moritz_ rakudo: ' foo' ~~ /.*?f(.(.))/; say $0.chunks.perl 07:36
p6eval rakudo 654500: OUTPUTĀ«["~" => "o", 0 => Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "o",ā¤ text => "o",ā¤ from => 5,ā¤ to => 6,ā¤)]ā¤Ā»
07:38 azawawi joined
azawawi hello 07:38
szabgab olleh 07:39
masak ehllo
moritz_ rakudo: say 'hello'.split('').pick(*)
p6eval rakudo 654500: OUTPUTĀ«lloheā¤Ā»
masak :)
wayland76 Nice. I didn't know * could be used that way :) 07:44
masak it can be used in whatever way you like. :)
wayland76 rakudo: pony(*) 07:45
p6eval rakudo 654500: OUTPUTĀ«Could not find non-existent sub ponyā¤current instr.: '_block14' pc 66 (EVAL_16:44)ā¤Ā»
wayland76 Hmm. Lets try something simpler
rakudo: money(*)
p6eval rakudo 654500: OUTPUTĀ«Could not find non-existent sub moneyā¤current instr.: '_block14' pc 66 (EVAL_16:44)ā¤Ā»
wayland76 I guess not :)
rakudo: class Christmas { * } 07:47
p6eval rakudo 654500: ( no output )
wayland76 Oh, wait, I see...
masak when Perl 6 is out, Christmas will be whatever.
wayland76 rakudo: use Wishful_Thinking; class Christmas { * } 07:48
p6eval rakudo 654500: OUTPUTĀ«Can't find ./Wishful_Thinking in @INCā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
masak Rakudo doesn't work on wishful thinking. :)
wayland76 Well, it was worth a go :) 07:49
rakudo: use things_Even_if_theyre_written
p6eval rakudo 654500: OUTPUTĀ«Can't find ./things_Even_if_theyre_written in @INCā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
wayland76 There we go. Successful error message golf, anyway :) 07:50
07:51 broquaint joined
moritz_ masak: nopaste.snit.ch/16441 there you go. 07:52
masak moritz_++
masak tries locally 07:53
moritz_ masak: needs the newest rakudo
masak ah, Match.pm changed. thanks. 07:54
living on the edge.
wayland76 Cool. Where's the action class idea specced? 07:55
moritz_ yes, I've closed the .chunks ticket 07:56
wayland76: I don't think it's really specced yet... one of my TODO items
wayland76: but it's used extensively in PCT based compilers
Matt-W Morning
wayland76 Oh, ok
Is there a reason it's separate from the grammar?
o/ 07:57
Matt-W So you can have another set of actions for the same grammar, I would have thought
moritz_ yes 07:58
or none at all
wayland76 Ah, of course
moritz_ speaking of which, my JSON grammar now produces the corret data structure for '{ "a" => 1}' 07:59
wayland76 I was wondering if there was some way of integrating Form.pm with grammars, so that you could create an AST tree, and then output from it something semantically equivalent to the original
And it looks like this will be how :)
moritz_ string escapes aren't done yet, so "a\t' won't work
and it needs many more tests 08:00
but since pmichaud++ fixed a segfault that was blocking me, it's very, very nice hacking
wayland76 I think this also means that I'll need less monkey patching to make Tree work :)
Btw, can we do aspect-oriented programming? 08:05
moritz_ is there any paradigm we can't? :-) 08:06
(except purity, perhaps)
wayland76 Well, I know we can, but is there a better way to do it than what you did in your class there? :) 08:07
By "Better", I mean, more automatic, less code involved
moritz_ hey
you could try
you could try to use 'handles' to do it 08:08
wayland76 Oh, yeah, that would be cool, I think. 08:09
(Well, I know it would, if it works like we want it to :) )
moritz_ class A { method h($/, @*params) { code from $h here } }; class Actions { has A $h TOP => 'h', FOO => 'h', ...;}
wayland76 Does this still work? class A { method h($/, @*params) { code from $h here } }; class Actions { has A $h handles *; } 08:11
...and then just override the ones you want to?
masak rakudo: if 1 {} elsif 2 {}
p6eval rakudo 654500: ( no output )
masak rakudo: if 1 {} elseif 2 {}
p6eval rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near "elseif 2 {"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» 08:12
masak submits a rakudobug about a nicer error message for that one
wayland76 if 1 {} else if 2 {}
rakudo: if 1 {} else if 2 {} 08:13
p6eval rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near "else if 2 "ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā»
Matt-W wayland76: please explain 'integrate Form.pm with grammars'
masak yes, let's include that one too.
08:13 alanhaggai_ is now known as alanhaggai
wayland76 Well, that's the thing -- I wanted to figure out some way to glue them together ("integrate" was probably poorly chosen), but I hadn't got further than thinking about it before I was sidetracked :) 08:14
Matt-W I'm not sure what you'd be wanting to achieve 08:15
wayland76 Have a look at Moritz' nopaste from a few lines before I made that statement (if you haven't already) --
Matt-W: Neither am I, but it sounds like the sort of thing that some instinct tells me will be useful. 08:16
Ah, I know
moritz_ wayland76: you mean in terms of implementation? or exposing a grammar based API?
wayland76 XML to JSON converter
pugs_svn r26549 | szabgab++ | smartlink updates 08:17
wayland76 Have a grammar for each, and an action class for each. Then parse a document of each, and output the AST via the action class (which uses Form.pm); presto -- auto conversion
Well, I'm assuming here that an action class can be applied to an AST, rather than passed to parse(), but it'd work either way 08:18
Matt-W Hmm
Form's use case is quite different
What you need is some sort of generic framework for converting ASTs into string representations of themselves
wayland76 Yeah, I know. Maybe I should suggest FormAlike.pm :)
Matt-W backwards actions
wayland76 Yes, yes, exactly 08:19
Matt-W Form could provide some of the mechanism, but you're better off looking at some sort of layout combinator library
There's a good one in Haskell
wayland76 But we already have printf, pack, and Form.pm doing the same thing for different specialised domains
So maybe something general that does all 3 of those, plus the tree outputting thing
ok, do I google "layout combinator"? 08:20
Matt-W I'll find it
We may need to see if we can unify this stuff
But it might nto be possible without breaking the simple stuff
wayland76 Well, I should warn you, I'm not planning on working on it within the next month, so there's no pressure from my direction. 08:21
Matt-W good 08:22
I want to make Form work as specced first :)
masak wayland76: I've heard jnthn talking about something along the lines of a backwards Perl 6 grammar. you might want to discuss with him too.
Matt-W haskell.org/ghc/docs/latest/html/li...hesPJ.html <- that's the API reference, with a link to a paper about it
wayland76 ok, thanks. jnthn may well get to it before I do :) 08:23
masak rakudo: class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar") } }; A.new.foo 08:25
p6eval rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā»
azawawi moritz_: regarding nopaste.snit.ch/16441 ; std seems to complain about it. 08:26
masak is this kosher behaviour? or is it a known bug? or did I just discover something?
moritz_ azawawi: what does it complain about? 08:27
wayland76 masak: What did you expect it to do?
moritz_ masak: I think it should print 42 again
azawawi moritz_: make [~] gather { ... }
masak moritz_: do you know if it's reported?
moritz_ masak: don't think so
azawawi: so what's wrong with that?
masak submits rakudobug, just in case
wayland76 rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("otherbar") } }; A.new.foo
p6eval rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā»
azawawi moritz_: let me check it again via tryfile... 08:28
wayland76 rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("say otherbar") } }; A.new.foo
p6eval rakudo 654500: OUTPUTĀ«42ā¤ā¤Ā»
masak rakudo: sub bar() { return 12 }; class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar") } }; A.new.foo
p6eval rakudo 654500: OUTPUTĀ«42ā¤12ā¤Ā»
moritz_ rakudo: class A { sub bar() { return 42 }; method foo() { say bar; say eval("bar"); say "error: $!" } }; A.new.foo 08:29
masak for some reason the eval resets to the outer namespace.
p6eval rakudo 654500: OUTPUTĀ«42ā¤ā¤error: Could not find non-existent sub barā¤Ā»
wayland76 Good idea :)
rakudo: class A { sub bar() { return 42 }; sub otherbar() { return 43 }; method foo() { say bar; say eval("A::otherbar") } }; A.new.foo
p6eval rakudo 654500: OUTPUTĀ«42ā¤43ā¤Ā»
moritz_ ok, eval doesn't pick up outer namespaces 08:31
pasteling "azawawi" at 212.38.130.254 pasted "std complaints..." (13 lines, 304B) at sial.org/pbot/36268 08:33
08:33 cognominal_ left
azawawi moritz_: same thing; std does not parse it... 08:34
moritz_ azawawi: well, I don't bother for now
azawawi moritz_: so is it an STD parsing bug? 08:36
moritz_ azawawi: I don't know 08:37
as I said, I don't bother for now
azawawi moritz_: thx :)
moritz_ masak wants a working example, I gave him one :-)
masak azawawi: I don't see anything syntactically wrong with 'make [~] gather { ... }' 08:38
azawawi: if STD.pm has problems with that, it can talk to me about it.
azawawi masak: all i wanted is to see it in Padre Perl6 outline view :)
masak azawawi: I'm sure you'll be able to make the appropriate changes locally. 08:39
azawawi masak: im checking if it is a whitespace problem...
pugs_svn r26550 | szabgab++ | improved liniking from X<> tags 08:40
azawawi masak: yup, whitespace bug!
08:42 hanekomu joined
masak azawawi: good catch. 08:42
azawawi: is the problem with STD.pm or Rakudo, would you say?
azawawi masak: i think std... 08:43
masak: for $/.chunks{ needs 2 spaces after chunks to work... 08:44
pugs_svn r26551 | szabgab++ | adding smartlinks and X<> tags 08:45
masak sounds very much like a bug.
azawawi masak: needs one space to be exact... 08:46
masak moritz_: ok. I went with your latest paste, and made it react correctly on 'pe:if' attributes. gist.github.com/103668 08:50
moritz_: two things: (1) I'd like to reproduce the <ol> tag but with the 'pe:if' attribute removed. how do I do that? 08:51
azawawi TimToady: STD needs a space after $/.chunks (line 32) to parse nopaste.snit.ch/16441
08:53 DemoFreak left
moritz_ masak: you could try to extend $h to accept an optional $exclude parameter, and then prefix the take() with 'unless $exclude && $exclude eq .key' or so... 08:54
masak moritz_: (2) at this point, actions again feel wrong, being bottom-up, whereas a template works top-down. I think your idea was to put some special objects in the match tree, representing if and for directives. did I get that right? these could then be iterated upon. but then I again have the problem of traversing a Match tree, something which I haven't succeeded in doing yet.
moritz_: interesting idea. will try.
moritz_ masak: well, if you want to do it top down, you can always make() lists of chunks, not strings... 08:55
masak moritz_: this is the part I still feel very uncertain about.
moritz_ masak: and then you traverse $/.ast, which is just a tree made of lists
not a match tree 08:56
masak ok.
moritz_ the problem with buttom is that you run into trouble with things like if $variable { $do_soemthing_with_variable }
masak yes. 08:57
that's my point.
moritz_ if it's done buttom up, and immediately cast into strings, you don't have $variable available
s/buttom/bottom-up/
masak well,
variables are another of those things that should be cast into special objects in the match tree. 08:58
moritz_ so remove the [~]
in $h
and you're mostly done
masak so we have: if and for directives, and variables.
masak is re-inventing PAST
moritz_ indeed :-) 08:59
masak I picture Hitomi, the real one, eventually being built on top of PAST somehow. 09:00
with custom PAST Node types. pmichaud++ for the idea.
moritz_ masak: well, PAST is not Perl 6, it's PCT 09:01
masak: you're on your best way to tying Web.pm to Rakudo
masak moritz_: well, perhaps.
moritz_: that doesn't bother me very much. 09:02
moritz_ doesn't like that
masak moritz_: let's aim for making Hitomi two-modal then.
moritz_ masak: it bothers me, because pugs showed us that implementations can die, even if they seem very lively while you code from them
masak moritz_: one mode that does things slowly, in pure Perl 6.
moritz_ s/from/for/
masak moritz_: one mode that precompiles down into fast PIR. 09:03
I think we'll want something like that anyway.
moritz_: what worries me is speed. here I am trying to replace a working templating system (HTML::Template) with one that does advanced tricks with XML, and essentially trades speed for purity. 09:04
moritz_ ok
masak moritz_: if I could get a purity boost _and_ a speed boost, that'd be awesome. 09:05
when it comes down to it, a template is just a bunch of loops, conditionals and variable accesses. that can be compiled down directly to PIR, and many of the checks and casts and stuff done in Rakudo can be thrown away. 09:06
=> fast
09:17 azawawi left 09:23 iblechbot left 09:25 agentzh left, agentzh joined
masak moritz_: so, Hitomi will be a two-implementation project. making both implementations pass the same test suite will hopefully keep them from drifting away from each other. 09:30
moritz_ masak: same as with Perl 6 :-) 09:31
masak aye, a nice bit of symmetry there. :)
moritz_ fractals :-)
masak November is also dual-impl, but it doesn't do the test suite thing.
moritz_ the combinations explode exponentially :-) 09:32
masak no wonder performance goes south. :P 09:33
09:35 jhuni left 09:46 masak left
wayland "bimodal" is the word you want :) 09:53
arnsholt std: <a b c>>>.uc; 09:54
p6eval std 26551: OUTPUTĀ«ok 00:05 42mā¤Ā»
wayland rakudo: <abc>>>.uc
p6eval rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near ">>.uc"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā»
wayland oops :)
rakudo: <a b c>>>.uc;
p6eval rakudo 654500: OUTPUTĀ«Statement not terminated properly at line 1, near ">>.uc;"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā»
arnsholt I tested it in rakudo first (doesn't work) 09:55
09:55 amoc joined
arnsholt But it's a fun construct. Replaces some tedious map expressions 09:55
09:55 riffraff joined
wayland Great :) 09:55
I think it's going to take me months to stop thinking like a P5 programmer :) 09:56
arnsholt Months? Years! 09:57
wayland Calvin (&Hobbes) once suggested that life should have a cover charge, to keep the riffraff out :) But we don't want that here
arnsholt: agreed :)
(for those who missed it, riffraff just joined the channel) 09:58
arnsholt Calvin and Hobbes are fun. I especially like that they're named after philosophers
wayland I have the 3-volume boxed set. That has almost everything except the fun comments in the 10th anniversary edition 09:59
arnsholt Cool
wayland For some reason, Larry Wall reminds me of Bill Watterson 10:00
jnthn ahojte
wayland hail jnthn!
I presume that's slovak for "Ahoy"?
arnsholt Argh. For some reason I can't get rakudo to call my ancestor's implementation of an overloaded method 10:01
wayland Most of my ancestors were born before computers :). My classes' ancestors, OTOH... 10:02
jnthn wayland: It's "hi", but to many people. 10:03
wayland arnsholt: What does it do, error, or fail silently...?
jnthn wayland: If it's just to one person it'd be just "ahoj" :-)
wayland Right
But would it be more formality-suitable, as in "hello"? 10:04
jnthn No, ahoj[te]? is informal.
wayland ok
jnthn More formal is like "dobry den"
wayland den = day? 10:05
jnthn yes, dobry = good
wayland ok
mberends similar to Croatian 'dobor dan' :) 10:06
jnthn mberends: Yes.
wayland Doesn't one of the Germanic languages also have den=day?
hanekomu in vienna, some younger people use a kind of slang: "das ist dobre" to mean "this is good"
mberends NL=dag, DE=tag 10:07
hanekomu but not widely used; maybe not widely understood
wayland mberends, guess I'm wrong then, unless it's Scandinavian, which I doubt
hanekomu: is that 2 German words and one Slovak? (I'm monolingual English here, so I know nothing; sorry :) ) 10:09
jnthn wayland: yes 10:10
wayland76 ok. Well, maybe I know something then. But not much :)
jnthn das ist = that is (or similar, my German ist nicht dobre ;-))
Matt-W precisely that, actually :)
mberends hanekomu: the 'dobre' might also have slipped in from Slovenia 10:11
Matt-W my German's pretty awful, but I remember the basics
hanekomu wayland: yes, "das ist" = "that is", dobre comes from Slovenia or Slovakia
wayland76 The closest I get is a dobro en.wikipedia.org/wiki/Dobro :) 10:12
"Das ist dobre" has a certain alliteration to it :)
hanekomu actually, come to think of it, i personally have only heard it said in this office, where the programmers have a rather earthy humour :)
jnthn These things have to start somewhere... ;-) 10:13
mberends Slovenian slang for "excellent" borrows English to make "full dobor" :) 10:15
they sound quite funny saying it
arnsholt wayland: Depends on how I do it. callwith, callsame, nextsame and nextwith all fail (looks like rakudo doesn't implement that yet)
jnthn arnsholt: No, not yet. May, all being well. :-) 10:17
arnsholt Saying Grammar.parse(@_, |%_) fails because that makes the invocant in Grammar.parse the Grammar protoobject, not my class
I've tried some variations on self.$stuff, but none of them seem to work either 10:18
wayland76 Is there a way arnsholt can call his ancestor method?
jnthn grammar Foo { ... }; Foo.parse(...) ?
wayland: From where? Within a subclass?
You can do tricks with the meta-class. 10:19
wayland76 jnthn: I think that's what he wants -- hopefully he'll address the question
jnthn rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.^dispatch($x, "x"); 10:20
p6eval rakudo 654500: OUTPUTĀ«2ā¤Could not locate a method 'B()<0xb6a06fc0>' to invoke on class 'A'.ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
arnsholt I've got a grammar, and I'd like its parse() to set the action class automatically before handing control over to the real parse() in Grammar
jnthn rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.^dispatch("x", $x); 10:21
p6eval rakudo 654500: OUTPUTĀ«2ā¤too many arguments passed (3) - 1 params expectedā¤current instr.: 'parrot;A;x' pc 171 (EVAL_24:73)ā¤Ā»
jnthn gah, I should actually go look at the signature...
Matt-W Calling your parent class' version of the method you're in the middle of overriding should be fairly simple, shouldn't it? 10:22
jnthn Matt-W: Sure, when we get the things in place to do that.
wayland76 Matt-W: yes, but not implemented, if I understand correctly
Matt-W Ahah
jnthn rakudo: class A { method x { say 1 } }; class B is A { method x { say 2 } }; my $x = B.new; $x.x; A.HOW.dispatch($x, "x"); 10:23
p6eval rakudo 654500: OUTPUTĀ«2ā¤1ā¤Ā»
jnthn That one.
jnthn needs coffee
10:24 riffraff left
Matt-W So that says get me A's metaclass, and tell it to find method x and call that with $x as the invocant 10:32
?
jnthn Matt-W: Yes. 10:33
Matt-W And so of course it finds A's x, because it only knows about that
jnthn Right.
Matt-W Looking forward to the proper syntax for that :)
And I love the new type mismatch errors 10:34
jnthn Implementing it is in my next Hague Grant application...
news.perlfoundation.org/2009/04/hag...t_tra.html for anyone interested in commenting, btw
Matt-W I haven't fixed it yet, but it gave me a much better idea of a bug in Form once it started complaining about Ints and Strs
jnthn Great. masak++ for asking for them 10:35
Matt-W That looks like a great grant 10:37
Serious improvements to Rakudo
I always get a good feeling about people wanting to pull hacks out of things and implement it properly 10:38
10:40 eMaX_ left 10:41 cognominal joined
arnsholt Hmm. Calling Grammar.HOW.dispatch(self, "parse") in my grammar's parse() gets me a deep recursion error 10:41
jnthn :-S 10:44
arnsholt: Reduce and file rakudobug, if you can.
arnsholt I'll try to remember that this evening. Unfortunately I have some schoolwork that desperately needs my attention =) 10:46
wayland76 Sacrelige! Rakudo takes precedence over everything! :)
(which is why I'm currently writing P5 code unrelated to P6) 10:47
arnsholt Heh 10:48
jnthn is doing $other_day_job and just encountered a 400+ line stored procedure. 10:50
wayland76 SQL?
jnthn Yes.
wayland76 Sounds like it needs plperl :) 10:52
jnthn MS SQL server. ;-) 10:54
Matt-W Ouch 10:55
Matt-W is writing up horrible forms requesting permission to use open source software we've been using for years, because some lawyer's decided we need to.
jnthn MS SQL Server ain't so bad IMO. 10:56
Granted I didn't play with many DBMS, but after MySQL it's an improvement.
Matt-W It's certainly more capable 10:57
baest jnthn: well, almost anything is nice after MySQL :) PostgreSQL is really nice
Matt-W The only thing that stops people writing 400+ line stored procedures in MySQL is it not supporting them
SamB Matt-W: are they brain-dead ?
the lawyers, I mean
Matt-W SamB: I think they're trained in the Microsoft Way
SamB the permission is already there 10:58
you should have insisted that they read it
Matt-W Also they don't understand how these things work
10:58 wayland__ joined
Matt-W And some of them think all open source is GPL 10:58
10:58 wayland76 left, wayland__ is now known as wayland76
Matt-W One day I'll work for a more enlightened company... 10:59
SamB still, you shouldn't let them bully you like that!
Matt-W Oh for now I just waste my time doing that
And use it as an excuse when they demand to know why bugs aren't being fixed
Let my management turn up the heat on theirs
Although my management tend to just say 'oh yes we need to do that'
SamB :-(
Matt-W On the bright side... it's lunchtime! 11:00
SamB no, breakfast!
wayland76 9pm here :)
SamB 7am here
11:04 payload joined 11:12 Whiteknight joined, wayland left 11:14 iblechbot joined 11:15 agentzh left 11:17 wayland joined 11:27 Whiteknight left 11:43 ruoso joined
ruoso Hello! 11:47
moritz_ hi there
wayland o/ hi and goodnight 11:53
11:53 wayland left, nbrown left 12:03 sri_kraih left 12:07 sri_kraih joined 12:10 amoc left 12:22 abra joined 12:32 amoc joined 12:35 alanhaggai left 12:47 synthetic joined 12:48 synthetic left 12:49 synthetic joined 12:53 alanhaggai joined, smtms joined 12:56 PhatEddy joined 12:58 iblechbot left
pmichaud Good morning #perl6 13:01
moritz_ good day 13:02
PhatEddy TimToady: if you are still interested and are around we have all parties needed to discuss where to put those ticket tests ... 13:03
PerlJam good morning pmichaud 13:04
pmichaud it's still a little early in TimToady.tz
jnthn morning pmichaud 13:06
Matt-W hi pmichaud
TimToady well, except my current tz is somewhere rather east of here. :) 13:08
effective tz, not actual tz
PerlJam you live in the land of the rising sun if only in your mind? 13:09
PhatEddy good morning everyone
Matt-W Time zone, apparently, is just a state of mind 13:10
TimToady compared to my usual schedule, I running about EDT at the moment
went to bed at 9:00 last night, usually 12:00
synthetic Good morning everybody 13:11
I've been checking out rakudo lately and am impressed by it's feature completeness, but wondering why it's so slow. Is this due to parrot or is it just rakudo itself being pretty unoptimized currently? Hope some of the internals hackers could share some thoughts on that 13:13
pmichaud synthetic: it's a combination of things
synthetic: parsing is still on the slow side, we know how to fix that
moritz_ basically rakudo contains no optimizations 13:14
except multi dispatch caching
pmichaud synthetic: execution speed is slow on the Parrot side -- some things which used to be fast were slowed down quite a bit with recent changes to Parrot, and I'm not sure when that will take place
but overall we've been focusing on feature completeness more than execution speed (more) 13:15
that's likely important, because as we add more features we often discover that any optimizations we might have spent time implementing would be invalidated by a later feature revision
synthetic so you're still confident that perl6 is gonna be one of the faster "agile" languages out there? Because this was one of the original goals of the implementation if got that correctly
pmichaud I'm confident that we can make it much faster than it is today, yes.
synthetic hehe 13:16
pmichaud "one of the faster 'agile' languages" will depend on how someone wants to measure speed
synthetic I believe in you
13:16 alanhaggai left
TimToady we've been planning for speed in providing the needed information to the optimizer, but nobody's written the optimizer yet. :) 13:16
moritz_ I'm pretty sure that we'll never beat Perl 5 in terms of compilation speed
pmichaud otoh, we have more opportunities for pre-compilation :-) 13:17
Matt-W I can live with that if we can run fast
TimToady probably not, but p5's compiler is mad
PerlJam perl6 will do things that are nigh impossible in other languages. For these things, that it can do them at all is amazing, so speed doesn't so much matter. :)
TimToady we plan to be disruptive in many ways, so there are some things that will take a hit
and one of them is short-term performance
moritz_ Matt-W has a point - rakudo can precompile modules today, which perl5 can't
synthetic absolutely, perl6 is going to be one of if not THE most beautiful and compact languages of all time imho 13:18
PerlJam moritz_: sure it can!
Matt-W Form's tests run massively faster if I precompile Test.pm
and all the Form modules
moritz_ PerlJam: how?
PerlJam moritz_: sure ... make me figure out how to do it again ... :-)
moritz_ PerlJam: afaict there was a mechanism to dump and reload bytecode, but it was slower than compiling again 13:19
moritz_ is most interested to find out about it
synthetic does static typing help in going for performance? I'm wondering beacuse as I understand it type-checking is done completely at runtime!? Or can the JIT use that information in a good way?
jnthn fwiw, part of the dispatch work I'm planning for May should win us some speedups.
PerlJam I haven't tried it in about 8 or so years. I tried compiling several .pm to .pmc to see if it was an improvement. I'm pretty sure it wasn't or I would have remembered how to do it. 13:20
jnthn synthetic: I expect that we'll be able to use the type information do eliminate a bunch of runtime checks, once we have an optimizer.
As well as give more compile time errors about stuff that will innevitably fail at runtime.
13:21 skids joined
PerlJam moritz_: in any case ... I can precompile modules ... with PAR ;-) 13:22
pmichaud jnthn: oooh, Tene's patch in r38395 looks really good to me. Tene++
moritz_ PerlJam: which makes startup even slower :)
pugs_svn r26552 | szabgab++ | create index of both X<> and C<> tags in the synopsis 13:23
13:23 DemoFreak joined
PhatEddy TimToady emailed some concerns yesterday evening about including RT ticket tests in the spec hierarchy ... 13:24
jnthn pmichaud: Nice :-)
pmichaud: So does .HLL work now? ;-)
pmichaud jnthn: from scrollback it appears that Tene got it mostly working, yes.
PhatEddy: url or message id? 13:25
pugs_svn r26553 | ruoso++ | [re-smop] start of p6opaque... missing the DESTROYALL part...
TimToady well, I just noticed first that some Q:PIR had snuck into the t/spec, and of course STD doesn't like that
pmichaud I totally agree, Q:PIR doesn't belong in spec.
TimToady but there are also t/spec/ticket files
where ticket seems to be RT specific 13:26
if it's considered a temporary I don't know where to put this in the spec directory
PhatEddy all of the things you mention are scheduled for removal as of now ...
TimToady that's okay, but we already have an unclassified dir, I think
pmichaud I think there's an unclassified dir in t/ -- not sure about t/spec/
I hadn't noticed t/spec/ticket/ 13:27
looking
PhatEddy the things in the spec/ticket directory have now been integrated into the actual spec tests ...
TimToady yeah, it's t/xx-unclassified
PhatEddy is that integration a problem?
TimToady *uncategoriezed
moritz_ prefers integration
TimToady bleah
need coffee
synthetic Would it make sense to have something like a NativeInt type, in addition to the regular Int? Where you would say: "I don't want any overflow checking and the kind of safeties that make Numbers slowish in interpreted languages normally! I know what I'm doing, just make it fast!" 13:28
moritz_ we already have too many test files
pmichaud synthetic: "int"
moritz_ synthetic: we have, it's called 'int'
pmichaud synthetic: my int $a = 3;
synthetic 'int' as opsed to 'Int'?
pmichaud synthetic: yes. Also "num", "bool", etc.
synthetic ah nice
PerlJam synthetic: aye, lowercase types are "native"
synthetic getting more exited about perl6 every day ;) 13:29
read an article in he german CT last month, from moritz. Seems like it'S slowly getting real ;) 13:30
13:30 abra left
Matt-W Oh it is 13:30
Sometimes I forget most people don't know it
PerlJam I think it's fairly real already.
Real enough for a web server for instance. :) 13:31
13:31 abra joined
pmichaud No, it's vaporware. I'm pretty sure I've read that somewhere. 13:31
PerlJam pmichaud: don't believe everything you read on wikipedia
synthetic hehe, I have, but didn't believe for a second ;)
good things take time 13:32
pmichaud PerlJam: oh, it wasn't on wikipedia. I think it was in the San Diego Union-Tribune
and use.perl, and digg, and slashdot :-)
oh, and reddit.
Matt-W There was an amazing discussion on LinkedIn about it
In which someone claimed Perl 6 has abandoned being Perl
TimToady PhatEddy: to me, 'integration' means testing holistically, which doesn't really mean 'miscellaneous' or 'unclassified'
pmichaud ah, I must have missed the LinkedIn discussion. 13:33
Matt-W because it's not based on regular expressions anymore
PerlJam Matt-W: what does that even mean?
perl 5 isn't "based on regular expressions" either :)
pmichaud that means someone hasn't been looking very closely at Perl 6.
PhatEddy TimToady: unfortunately I don't understand the matter at that level of sophistication
pmichaud Given that its parser is heavily based on regular expressions far more than anything else :-)
moritz_ synthetic: actually there are two more Perl 6 articles to come (both in iX) 13:34
PhatEddy TimToady: I just meant that all the tests are now in existing spec test files
Matt-W PerlJam: The best I could comprehend, he thought Perl 5 was based on regexps like Haskell is based on the lambda calculus
PhatEddy TimToady: and the spec/ticket files can all be removed without loss of tests
literal Matt-W: odd, one might argue that Perl 6 is more based on regular expressions (at least as Perl 6 understands them)
Matt-W PerlJam: Which, I know, makes no sense at all
literal what with the Perl 6 grammar and all 13:35
Matt-W Mmm
synthetic moritz_: we get them on the job so I'll definitely not miss them
Matt-W I explained what was really going on
moritz_ PhatEddy: then remove them
Matt-W I'm not sure it was worth the effort, but now maybe at least one more person knows what's being done here
PerlJam literal: so ... perl 5 is like perl6's illiterate younger brother? :)
literal something like that
skids pmichaud: what's the disposition of inplace string ops in Parrot? I see various meanderings about getting rid of them. 13:36
literal I think TimToady usually refers to Perl as female, though :)
TimToady moritz: but if the tickets are things that need to go into the spec somewhere...
PerlJam literal: like timezone, gender is a state of mind :)
pugs_svn r26554 | szabgab++ | add some X<> tags 13:37
TimToady I can see a use for a holding area in t/spec that is not rt specific 13:38
13:38 eric256 joined
TimToady then people who don't have rakudo access can work on moving the tests 13:38
moritz_ TimToady: they are in the spec tests already
TimToady course, if rakudo wants to keep the rt tests around anyway
ah, okay 13:39
just part of spec that rakudo turns off?
moritz_ probably fudged
TimToady gotcha
in that case, yes, they don't need to be there
ah, missed what PhatEddy said above, sorry for the confusion 13:40
moritz_ I keep t/spec/integration around for things that I can't figure out where to put them
or things that aren't specced, but are common sense 13:41
TimToady I read that as "testing the integration", not as things needing to be integrated
moritz_ well, for example it tests the integration between 'if' and modules
the spec doesn't say "an 'if' statement also works in modules", but we test for it nonetheless 13:42
TimToady I will at least admit that "integration" sounds classier than "miscellaneous" :P
moritz_ [particle]++ for the name
PhatEddy Just quickly - there is no place for the PIR test to go for the moment afaik - so in that one case I just plan to tack it on to the ticket - OK?
TimToady but if it means that, I'm okay with it
moritz_ PhatEddy: OK
TimToady backlogging, so don't say anything interesting :) 13:44
pugs_svn r26555 | ron++ | removing ticket/ directory. tests now part of regular spec tests 13:46
TimToady @tell masak I just need to implement the warning on class redefinition with a tuit of some sort 13:49
lambdabot Consider it noted.
pmichaud PhatEddy: PIR tests can go into Rakudo's test dir 13:50
can I see the Q:PIR test in question?
TimToady t/spec/S12-class/basic.t
pmichaud oh, that test definitely does not belong in t/spec 13:51
it's clearly testing something about Rakudo, not about Perl 6
TimToady we all have our little mental aberrations :)
pmichaud I'm not certain that the original ticket is actually a bug. 13:52
it really speaks more to Parrot design than Rakudo design, anyway.
13:53 azawawi joined
azawawi hi 13:53
pmichaud at the moment I think I'm going to declare RT #60496 "not a bug" and let it slide for now. We don't currently make any guarantees that Rakudo objects play nicely with Parrot 'isa' opcodes. 13:54
pugs_svn r26556 | szabgab++ | add links to syn index
PhatEddy The ticket seems to ask whether parrot class isa should work like Perl 6 class isa. It might be sort of nice if it did but not necessary ...
pmichaud I agree it would be nice if it does. Eventually it hopefully will. But Parrot vtables don't map cleanly to Perl 6's methods. 13:55
We currently have to do lots of vtable-specific workarounds.
Matt-W Didn't I see something about that in jnthn's Hague Grant proposal? 13:59
pmichaud I didn't see anything about it 14:00
14:01 wollmers joined
jnthn Only that method dispatch will layer better on top of Parrot. 14:01
14:01 zamolxes joined 14:02 alester joined
pugs_svn r26557 | pmichaud++ | [t/spec]: Remove Rakudo/Parrot-specific test. 14:02
eric256 when you do a perl6 -v, where does the revision number come from? and shouldn't it list the git SHA-1 ?
pmichaud currently the revision number is coming from Parrot. 14:03
Yes, it should be something more useful.
I'm open for patches or other suggestions. :-)
wollmers TimToady: I agree with moritz, that something like integration tests - cross specs - are necessary.
TimToady wasn't arguing with that
pmichaud I don't know how to get the git SHA-1 into the code. 14:04
eric256 ahh okay, i was just reading wincent.com/a/about/wincent/weblog/...bers_i.php and it kind of recommends using (data "+y-%j") in addittion to the SHA-1, that would make it easier to look at too builds of perl6 and at least see which is newer
eric256 goes to look
wollmers But at the moment the tests are incomplete and partly - more or less - in the wrong place.
moritz_ pmichaud: git log --pretty=format:%h|head -n1 14:05
or %H if you want the full hash
pmichaud moritz_: that gets me the hash, yes -- how do I get that into the compiled code? ;-)
I guess I need to make it part of gen_builtins.pir or some other generated file. 14:06
TimToady I also am not arguing with integration/ being used for misc pre-classified tests, as long as it's culturally understood
moritz_ pmichaud: yes, something like that
pmichaud we'll be refactoring src/gen_builtins.pir soon, so perhaps I can make it part of that. 14:07
There's also the tricky issue that not everyone gets Rakudo via git.
moritz_ pmichaud: `git log -1 --pretty=format:%h' actually
hurm.
PerlJam write the SHA1 to a file in the tarball.
wollmers TimToady: We can put a note into README
pmichaud PerlJam: sure, but then we need to know when to read the SHA1 from the tarball and when to get it from git. 14:08
s/tarball/file/
azawawi TimToady: STD needs a space after $/.chunks (line 32) to parse nopaste.snit.ch/16441. Any ideas why it is not parsing it?
PerlJam always get it from the file and make the build process regen the file each time. :)
pmichaud azawawi: Rakudo misparses that.
azawawi: without the space, the brace would be a postcircumfix brace (like on a hash) 14:09
the space is required to be valid Perl 6.
azawawi pmichaud: thx...
wollmers Ciao, servus to all - have to catch my train from Vienna to Erlangen. 14:10
moritz_ wollmers: have fun...
wollmers: if you told me that earlier, we could have met in Erlangen :-)
pmichaud PerlJam: which "build process"?
moritz_ I'll be there from Fr to Sun 14:11
pmichaud PerlJam: you mean the Makefile should regen the file?
PerlJam: or Configure.pl?
PerlJam: or ... ?
TimToady wayland76: actually, .wrap was aimed squarely at AOP
pmichaud "was"? ;-) 14:12
wollmers moritz_: I am from Vienna, but live in Erlangen since 2007. But this WE I will be in Albstadt.
14:12 wollmers left
moritz_ wollmers: ok, we have to meet some time - I'm in Erlangen roughly twice a month 14:13
TimToady azawawi: yes, what pmichaud said 14:14
wayland76: NOT what pmichaud said. :)
szabgab perlcabal.org/syn/index_C.html and perlcabal.org/syn/index_X.html
pls check them out and let me know which way to improve them 14:16
moritz_ szabgab: some links occur multiple times under the same bullet point 14:18
pmichaud szabgab: some of the titles have < > in them that probably need conversion to &lt; &gt;
moritz_ szabgab: it would be nicer to remove duplicates
14:18 km2 left
TimToady a lot of the early S* have bullets where they ought to have headings, I expect 14:18
yowser 14:19
std: if 1 {} elseif 2 {}
p6eval std 26557: OUTPUTĀ«##### PARSE FAILED #####ā¤Statements must be separated with semicolon at /tmp/DnBx1H8YRq line 1:ā¤------> if 1 {} elseif 2 {}ā¤ expecting spaceyā¤FAILED 00:02 35mā¤Ā»
TimToady there's a bogus message...
pmichaud looks like 'else' needs a >> or a <.nofun> or something
PerlJam pm: Hmm. As long as you don't put the .git dir in the tarball, you can use the presence of the .git to determine if you've got a tarball or a clone. for a tarball, use the value in the file, for a clone, regen the file at Configure.pl time. 14:20
TimToady well, that's what "spacey" is supposed to be looking for
pmichaud PerlJam: does Windows use ".git" for its subdir?
TimToady but it must have backtracked and decided "else" is starting a new statement
jnthn pmichaud: yes
pmichaud the tarballs definitely don't get ".git". No need to include the entire history of Rakudo in the tarball :-) 14:21
TimToady at least it's pretty clear *where* it failed
jnthn (expecting spacey)++
pmichaud I was thinking of testing explicitly for "elseif" and issuing a message.
since that's a common typo.
maybe "else if" as well. 14:22
jnthn And common in other languages.
As is else if
TimToady else if is more informative
jnthn Perl always felt like the odd one ut to me with using elsif
TimToady std: if 1 {} else if 2 {}
p6eval std 26557: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed block at /tmp/jZ9w8tiLdI line 1:ā¤------> if 1 {} else if 2 {}ā¤ expecting parameterized blockā¤FAILED 00:02 35mā¤Ā»
moritz_ that is also confusing.
TimToady troo 14:23
moritz_ it's not a malformed block, it's not a block where a block is expected
pmichaud I think "use 'elsif'" would be more helpful there.
TimToady pot, kettle :P
PerlJam or change the language def to make "elseif" and "else if" forms equivalent to "elsif" ;) 14:24
14:26 iblechbot joined
jnthn Indeed! That Perl 5 only lets you write elsif is a clear violation of TMTOWTDI. 14:26
;-)
TimToady every time we add more tokens, the parser is going to slow down more, so there's a tradeoff between perfect error messages and performance, unless we can do an elseif check lazily after it has failed already
pmichaud in this case, it would only slow down after parsing 'if', yes? 14:27
TimToady yes
pmichaud as opposed to the general case where we introduce a slowdown on every term or something like that.
TimToady well, but also we have to recompile STD.pmc every time, currently
and it gets longer
but precompilation will fix that, mostly
pmichaud it's a reasonable consideration, I agree.
14:28 synthetic left
moritz_ that's why I suggested a more general (but still helpful) error message 14:31
pugs_svn r26558 | szabgab++ | remove duplicate links from index_X.html pages 14:36
14:37 justatheory joined 14:38 kidd left 14:42 ejs left 14:43 sri_kraih_ joined 14:44 mmpf is now known as mattp 14:47 ejs joined
pugs_svn r26559 | lwall++ | [STD] be clearer about else\s*if and missing blocks 14:49
14:52 nihiliad joined 14:53 sri_kraih left, masak joined 14:55 azawawi left, LylePerl left 14:57 PhatEddy left 15:01 km2 joined 15:02 ejs1 joined
pugs_svn r26560 | szabgab++ | smartlinks: by default hide snippets 15:03
15:03 Psyche^ joined
Tene pmichaud: we could ask git to write out the revision ID, date of the commit, or whatever else you want to a file when it's checked out. 15:04
pmichaud: I can set that up if you want.
pmichaud ooh, that would be nice.
Tene Just tell me what information you want
pmichaud: the hll branch is up to date with master and passes most of the tests. Lemme nopaste the test summary report... 15:05
pmichaud have git write src/builtins/revision.pir 15:06
in that, have it do
.const str RAKUDO_REVISION "<value>"
er
.const string RAKUDO_REVISION "<value>"
15:07 [particle] joined, [particle] left
pmichaud Tene: (test summary) that's quite a few failures... but I suspect it's due to hll branch being from an older version of Rakudo 15:07
my approach would be to start migrating some of the changes from hll back into master, but leave things running in 'parrot' 15:08
Tene pmichaud: no, I pulled the updates from master.
15:08 [particle] joined
Tene I tried running a few of those tests directly, and they segfaulted partway through. 15:08
pmichaud brb 15:09
back 15:10
it seems to me as though we _ought_ to be able to make changes to trunk, and simply switch .HLL on/off to try things out 15:11
Tene pmichaud: there are several files that currently have mixed Perl6 and parrot content
15:11 ejs left
pmichaud hmm. Perhaps we should refactor those. 15:12
Tene and ClassHOW.pir currently needs to grab some items from the perl6 HLL namespace
9or needs better refactor, as discussed in its header POD
pmichaud I guess what would help is seeing a diff of the hll branch from master 15:13
15:13 exodist joined
moritz_ git diff master 15:14
15:14 ruoso left
PerlJam Tene: how do you tell git to create a file on clone? 15:15
pmichaud wouldn't it need to also update the file on 'pull' ?
PerlJam that too.
AFAIK, when you clone a repo, you don't get the hooks in your clone.
Tene PerlJam: you can set a filter that can intercept and modify the contents when git is updating the file. 15:16
pmichaud + info = get_root_global ['parrot'], 'Hash'
that looks wrong to me.
I think it should be get_root_namespace
Tene PerlJam: you can also set an attribute on a file telling git to do keyword expansion on a file when you export an archive with git-archive 15:17
PerlJam Tene: Oh! I know about that, but I blocked it out because I associate it with trying to do the equivalent of $Id$ and such from RCS/CVS
15:17 hercynium left
PerlJam yes, evil keyword expansion 15:17
Tene PerlJam: there's something specific for $id$
and there's something else for generic filtering
15:18 pmurias joined 15:19 Patterner left, Psyche^ is now known as Patterner
pmichaud Tene: The call to "!fixup_routine_type" is probably better done with a subid anyway. 15:20
Tene Sure, okay. I didn't know what to do there.
pmichaud that eliminates the need for the 'perl6' lookup in ClassHOW.pir
PerlJam git attributes. I still don't think I get how they'll be applied on clone or fetch. But it gives me something to look at .
15:23 ejs1 left
pmichaud Okay. All of the places where new 'Hash' was converted to get_root_global need to be using get_root_namespace instead. 15:24
Tene I'd really prefer the output of 'git describe' instead 15:25
Hmm... maybe during the build process.
pmichaud: how does "<most-recent tag>-<numbe of commits since that tag>-<short git id>" look to you? 15:26
i.e.
2009-04-45-g7d37176
pmichaud 2009-04-45 looks too much like a date.
maybe commas or colons or semis or something?
moritz_ 2009-04:45:g7d37176
Tene That's what you get for using dates as tags. ;)
yeah, I'll play around with it. 15:27
[particle] get rid of the dash
pmichaud dates often make the best tag. It's real easy to say "how old is the 2009-04 release", it's much harder to say "when was Rakudo #3 released"?
Tene pmichaud: yes, I know. i was teasing. :)
pmichaud and, of course, everyone knows exactly when Parrot 1.9 will be coming out, right? ;-) 15:28
one potential problem with "most-recent-tag" is that when I build the tarball I might not have tagged it yet. 15:29
I suppose we could build the tarball twice -- once for testing and then again for the official one. 15:30
PerlJam pm: how do you build the tarball?
pmichaud pj: "make release VERSION=2009-04"
PerlJam you could have the makefile tag it for you.
pmichaud see also docs/release_guide.pod
PerlJam: we generally want to make a "test tarball" to make sure the tarball is correct before tagging anything. 15:31
i.e., we should only tag *after* we've verified that the tarball is correct, builds properly, etc.
15:31 M_o_C joined
moritz_ pmichaud: tagging can be easily reverted, unless you've pushed it 15:32
pmichaud even so, I'm not sure I see a huge benefit to auto-tagging.
We also tag the release names.
moritz_ ok
15:32 Patterner is now known as Guest97338, Guest97338 is now known as Patterner
pmichaud at some point it might end up being "make release VERSION=2009-04 NAME=Bratislava" 15:32
PerlJam pmichaud: mediate the tagging with an environment variable. :)
pmichaud but that's *really* low priority at the moment. 15:33
15:33 eMaX joined
pmichaud i.e., the current 'make a release' process isn't terribly onerous or broken, so I don't see a strong need to introduce more things to worry about. 15:33
eMaX moin
moritz_, cool article series in IX tnx for that
moritz_ eMaX: is the May issue out already? 15:34
eMaX yes got it today
moritz_ cool 15:35
pmichaud moritz++
moritz_ I'm going to submit the last one (on regexes and grammars) tonight or tomorrow 15:36
pmichaud oh, that reminds me -- I need to make my yapc::eu talk submissions.
jnthn oh noes, I forgot about that too... 15:38
pmichaud anyone doing the "cool stuff in Perl 6" talk?
jnthn I'm not sure what to talk about.
15:38 eMaX left
pmichaud aka "The Perl 6 Express"? ;-) 15:38
jnthn Dare I submit a talk about a Perl 6 module I didn't write yet?
Well, I could give a talk like that there... 15:39
pmichaud jnthn: why not? I submitted talks about a compiler I hadn't written yet :-)
jnthn I pondered submitting one on roles...
hehe!
moritz_ "role plays"
pmichaud I'm planning to submit a regexes/grammars talk, unless someone else wants to do that. 15:40
a talk on roles would be excellent.
I think it's often a good idea for there to be an introductory Perl 6 talk aimed at P5 programmers
as in "here's cool stuff you can do in Perl 6 today" 15:41
masak so far, I've submitted two talk proposals. one on Web.pm, one on grammars and rules.
lambdabot masak: You have 1 new message. '/msg lambdabot @messages' to read it.
masak ooh, a message!
@messages
lambdabot TimToady said 1h 52m 14s ago: I just need to implement the warning on class redefinition with a tuit of some sort
literal what's the difference between roles/traits and mixins? 15:42
masak TimToady: ah.
pmichaud masak: if you're doing grammars and rules, I won't step on that talk then.
masak literal: compile time and run time, respectively.
pmichaud: well, supposing it gets accepted.
pmichaud masak: I'm sure that some talk on regexes and grammars will be accepted.
literal masak: but in Perl 6, a trait is compile time while role is runtime? 15:43
mberends I'm willing to talk about P6 for P5 programmers if nobody else does.
masak pmichaud: I think I'll focus on whole parser examples, picking them apart and showing the neat stuff.
mberends: nice!
pmichaud I have so many things I _can_ talk about, so I prefer not to take the stage away from others who might give talks. 15:44
masak literal: no, I think the reverse is the case.
literal ok
PerlJam pm: talk about how there's going to be an alpha "production release" of rakudo by the end of the year ;) 15:46
pmichaud pj: that sounds like a lightning talk. :-)
moritz_ or a general rakudo roadmap/vision talk
pmichaud already submitting that one "Hacking Rakudo Perl"
TimToady traits are applied at compile time, roles are applied at either compile or run time
moritz_ another nice lightning talk woudl be the "the #perl6 eco system" 15:47
pmichaud oooh, I like that.
I still think I'd like to put together a lightning talk about "the waterbed theory of Perl 6 pain"
moritz_ lol
masak :)
"pain is pushed towards the implementers" 15:48
PerlJam pm: the waterbed is really filled with acid, so watch where you push and how hard?
jnthn <picture of tormented implementers>
masak o_O
pmichaud pj: well, in some sense our goal is going to be to cut a hole in the waterbed to let the pain out :-)
jnthn OK, I will submit one on roles, and Grammar::Generate;
(that is total two talks)
pmichaud I'll submit "Hacking Rakudo Perl", and a "blank slot"
TimToady "vicarious suffering" is the theological term 15:49
pmichaud where I'll let the organizers choose a topic
I wish more of my suffering was vicarious. :-)
PerlJam pmichaud: all you have to do is find more people to delegate to. 15:50
pmichaud s/more people/some masochists/ # ??
TimToady vicars :)
PerlJam one of the criticisms I've heard about rakudo is that it's tied to parrot and that parrot is somehow broken. (I've heard this a few times, but never with any specifics) I wonder if this is another "perl is dead" meme on the rise. 15:51
TimToady maybe we need to start a "perl is undead" meme 15:52
15:52 jradzuweit joined, jhorwitz joined
TimToady vampiric suffering... 15:53
PerlJam "zombie perl" sounds like a good title for a talk :)
[particle] about pugs?
pmichaud "We the implementors will bear any burden, pay any price, to meet the Perl 6 vision. We shall conduct ourselves so that a thousand years from now, when Perl 6 is finally released, people will look back and say 'This was their finest hour.'" (Okay, did I mix too many speeches in that? ;-)
PerlJam lol
diakopter Perl skipped Christmas and went straight to Easter
TimToady what about "Ask not..."
pmichaud I learned to "Ask not..." a long time ago.
TimToady but still, a pastiche would be a great lightning talk 15:54
[particle] p5p and p6p are one community separated only by a common language.
[particle] mixes in more quotes 15:55
pmichaud okay, Perl 6 quotes is my lightning talk for the year :-)
with special emphasis on pain management :-)
unless I come up with yet another really cool technical hack like LOLPAST :-) 15:56
jnthn PerlJam: Parrot sure ain't perfect, but it's hardly like there aren't people improving it and it's not like the Rakudo devs are incapable of fixing it either.
literal are you guys talking about the YAPC::EU on August 3rd?
jnthn And it ain't, well, *that* bad.
pmichaud literal: yes. Call for presentations ends tomorrow. 15:57
TimToady if it ain't broke, unbork it...
Tene pmichaud: a solution that only works when you generate your tar with git-archive wouldn't be good enough, right?
[particle] parrot is the worst virtual machine for perl 6, except all the others.
pmichaud Tene: I'm more interested in something that works when people do git-checkouts. 15:58
Tene right, okay.
pmichaud generating the tar is low-volume, and doesn't affect anyone but the person generating the tar.
so I don't care if that's automatically built.
indeed, in some sense the "make release" target can override whatever git does.
masak wouldn't mind seeing more vicars in Perl 6 development
TimToady we'll settle for suckers who might develop into vicars 15:59
Tene okay, I can get the id in like: "$Id: 035c8abedeb532b38bf9ed1399e054896bca9e20 $"
which would need to be trimmed before printing
pmichaud Tene: that's fine. 16:00
trimming is easy.
as is any other sort of manipulation we might want to do.
Tene include it from gen_builtins.pir ? 16:02
pmichaud sure. 16:03
Tene oh, that happens automatically.
pmichaud or even if it just generates the file, I can put the include in
right now I'm primarily interested in getting the id generated.
Tene pushed 16:04
you might need to rm it and then git checkout src/builtins/revision.pir this time, as the gitattributes file came down in the same commit 16:05
PerlJam ls 16:06
oops
16:06 ejs joined
pmichaud oops: command not found 16:06
Tene ... huh
That's totally not what we want at all
that shows the git id of the blob that holds that file 16:07
not what we want at all. :)
PerlJam Tene: and it *only* works on checkout, not on clone or fetch. (AFAICT)
16:10 masak left
eric256 i haven't backlogged yet, but wouldn't it make the most since to do the git at make/compile time? that way if i checkoutone version, modify it and then make, i'll have a different revisino number than anyone else? 16:10
PerlJam gets the feeling that the bang/buck ratio is only decreasing. 16:11
pmichaud eric256: we have to handle the case where someone didn't obtain rakudo via 'git'. (But PerlJam's "check for .git directory" works for that.)
eric256: and you're probably describing where someone checks out a version, modifies it, commits, and then builds 16:12
eric256 PerlJam: it definitly sounds more difficult than i was expecting ;)
pmichaud: thats exactly what i was describing ;)
Tene okay, really need to get to work now, srsly 16:13
[particle] cute overload: www.getmiro.com/adopt/ 16:19
16:26 Umeaboy joined
mberends @tell masak nice quick intro: developer.apple.com/tools/rubyonrails.html 16:31
lambdabot Consider it noted.
16:38 ZuLuuuuuu joined 16:50 zamolxes left 17:00 alanhaggai joined, pmurias left 17:06 abra left 17:12 japhb_ left 17:16 hanekomu left 17:23 kidd joined 17:26 alanhaggai left, iblechbot left 17:27 alanhaggai joined
pugs_svn r26561 | lwall++ | [multidimensional.t] typo in plan 17:30
17:34 eMaX joined
eMaX re 17:34
moritz_, is it possible to have these articles electronically? 17:35
pugs_svn r26562 | lwall++ | [t] junctional types not currently allowed before param var 17:44
r26563 | lwall++ | [STD] combine fulltypename with typename 17:45
moritz_ eMaX: no, I had to assign the copyright to Heise 17:47
eMaX: and if they don't put it online, I can't
eMaX: but of course you can write them a mail and ask if they'd publish it
17:56 barney joined 17:59 M_o_C left 18:03 japhb joined 18:07 eMaX left 18:12 eMaX joined 18:16 amoc left 18:19 alanhaggai left 18:20 ruoso joined 18:21 iblechbot joined 18:23 amoc joined 18:24 eMaX left 18:43 clkao left, hcchien left, clkao joined 18:45 hcchien joined
pugs_svn r26564 | lwall++ | [STD] hack in duplicate checking for typenames 18:46
18:48 hcchien left, clkao_ joined, clkao left 18:51 hcchien joined
TimToady @tell masak interestingly, now that I actually implemented the warning, class Int {} is not a redef of CORE::Int; it just hides it 18:51
lambdabot Consider it noted.
jnthn TimToady: ...does that apply to all core classes? And why?
18:52 eMaX joined
jnthn Is CORE::Int actually lexical and a lexical import? And if so, does defining a class Int { ... } both install it in the namespace and the lexpad? 18:52
pmichaud afaik, all "core" items are actually lexical. 18:53
TimToady if you say class Int, it defaults to our, which adds Int to both MyCurrentPackage and MyCurrentLexpad 18:54
jnthn OK, I wasn't aware of the second bit.
TimToady but doesn't intersect with any outer definition 18:55
if you say my class you only get the lexical
jnthn So basically most class lookups are lexical?
TimToady yes
moritz_ rakudo: say (hash ( 2 => 3 )).WHAT
TimToady even ones starting GLOBAL::
[particle] my class lookups are lexical
p6eval rakudo 5646df: OUTPUTĀ«Hash()ā¤Ā»
pmichaud in general, most name lookups are lexical, I think.
18:56 LylePerl joined
[particle] our class lookups are lexical { ... } 18:56
TimToady and (pretty much) all the package names visible to your scope are visible via their lexical aliases
[particle] std: our class lookups are lexical { ... }
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed ourā¤Malformed classā¤Unable to parse class definition at /tmp/slmj9TJDIM line 1:ā¤------> our class lookups are lexical { ... }ā¤ expecting traitā¤FAILED 00:02 56mā¤Ā» 18:57
pmichaud all(our base is :belong<us>)
[particle] ah, i thought there was an 'are' alias for 'is'
std: our class lookups is lexical { ... }
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
moritz_ std: our class stuff is weird { ... } 18:58
TimToady std: class Int {}
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
TimToady std: class Int {}; class Int {}
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/2DtZFMSQ03 line 1:ā¤------> class Int {}; class Int {}ā¤ Name Int redeclared at /tmp/2DtZFMSQ03 line 1:ā¤------> class Int {}; class Int {}ā¤ok 00:02 35mā¤Ā»
18:58 clkao_ left
TimToady std: class CORE::Int {} 18:58
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/COdLncinab line 1:ā¤------> class CORE::Int {}ā¤ok 00:02 35mā¤Ā»
18:58 hcchien left
moritz_ if we warn twice it's more effective. 18:58
18:59 hcchien joined
TimToady warns once for the package conflict and once for the lexical 18:59
jnthn TimToady: GLOBAL doesn't imply namespace even?
TimToady std: my class Int {}; my class Int {};
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name Int redeclared at /tmp/6T3DCGnL8A line 1:ā¤------> my class Int {}; my class Int {};ā¤ok 00:02 35mā¤Ā»
TimToady see, only one 19:00
should probably say which symbol table the conflict was in...
jnthn Is CORE::Int thus Int in the namespace CORE?
TimToady or anywhere inside it
jnthn And it's imported lexically as Int by default?
TimToady remember that the Setting is *outside* of everything lexically
19:00 clkao joined
TimToady no importing is necessary 19:00
pmichaud jnthn: we run inside the setting's lexical scope. 19:01
jnthn OK, but class CORE::Int { } puts Int into the lexical scope?
19:01 barney left
pmichaud so CORE::Int is Int in the CORE namespace, and it's "imported" into the setting. 19:01
i.e., it appears in the setting as lexical "Int"
jnthn oh, so some importing needed after all.... 19:02
TimToady only if Int is declared outside of CORE
19:02 zamolxes joined
pmichaud I'm not sure I follow that last statement. 19:02
TimToady CORE can define things inline in its lexical scope if it wants to 19:03
if CORE says 'my class Int' there's no importing necessary into Int
s/Int/CORE
pmichaud sure, but then the Setting is lexically nested inside of CORE?
TimToady CORE *is* the outermost setting 19:04
no nesting
pmichaud okay.
how do we get to GLOBAL, then?
TimToady CORE::GLOBAL
pmichaud got it.
and GLOBAL isn't really at the "root" of our package space
TimToady depends on how you define "package" 19:05
pmichaud so if a p6 program does: class Int { ... } it really becomes CORE::GLOBAL::Int
TimToady but note that CORE::PROCESS is also not in GLOBAL
only if they do it in the main program 19:06
that is, where GLOBAL is the current package
pmichaud right.
(I meant in "main", didn't make it explicit)
19:06 keta joined
TimToady anyway, you can see how most of these names fit together in CORE.pad 19:06
pmichaud so, could one do... class Int is CORE::Int { ... } ? 19:07
TimToady which is presumably a representation of (part of) the compiled output of CORE.pm
which isn't there yet
that would derive from CORE::Int, presumably
pmichaud it would be a lexical/package form of augmenting Int? 19:08
TimToady yes
pmichaud as opposed to "augment", which does monkeypatching? Cool.
I think I actually start to understand some of this. :-|
TimToady std: augment Foo {}
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augmentā¤In "augment" declaration, typename Foo must be predeclared (or marked as declarative with :: prefix) at /tmp/wqV5oLcr7i line 1:ā¤------> augment Foo {}ā¤FAILED 00:02 35mā¤Ā»
TimToady std: augment Int {}
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augment at /tmp/B8sChRTiLR line 1:ā¤------> augment Int {}ā¤ expecting any of:ā¤ multi_declaratorā¤ typenameā¤FAILED 00:02 35mā¤Ā»
TimToady std: augment class Int {} 19:09
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
TimToady std: augment class Foo {}
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed augmentā¤Malformed classā¤Can't augment a non-existent type at /tmp/ZSDkYTsszC line 1:ā¤------> augment class Foo {}ā¤ expecting nameā¤FAILED 00:02 35mā¤Ā»
TimToady that's more like it
std: supersede class Foo {}
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Malformed supersedeā¤Malformed classā¤Can't supersede a non-existent type at /tmp/X6n0imRGPN line 1:ā¤------> supersede class Foo {}ā¤ expecting nameā¤FAILED 00:02 35mā¤Ā»
TimToady std: supersede class Int {}
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
moritz_ std: augment role Int { }
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
jnthn That'd not pass the semantic checker. :-) 19:10
TimToady doesn't do the semantic check
std: constant foo = 42; augment subset foo {} 19:11
p6eval std 26564: OUTPUTĀ«##### PARSE FAILED #####ā¤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/1rLvag7hb2 line 1:ā¤------> constant foo = 42; augment subset foo {}ā¤ expecting any of:ā¤ infix or meta-infixā¤ infix stopperā¤
..standard...
PerlJam TimToady: heh! I was just typing that up
TimToady std: constant foo = 42; augment subset foo where {}
p6eval std 26564: OUTPUTĀ«ok 00:02 35mā¤Ā»
TimToady std: enum Foo <bar baz>; supersede subset baz where 42; 19:13
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name bar redeclared at /tmp/cIkCjQqLoC line 1:ā¤------> enum Foo <bar baz>; supersede subset baz where 42;ā¤ Name baz redeclared at /tmp/cIkCjQqLoC line 1:ā¤------> enum Foo <bar baz>; supersede subset baz where 42;ā¤ok 00:02
..35mā¤Ā»
TimToady ooh, a bug
std: enum A <b c> 19:14
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name b redeclared at /tmp/0gBmPos8rr line 0:ā¤------> ā¤ Name c redeclared at /tmp/0gBmPos8rr line 0:ā¤------> ā¤ok 00:02 35mā¤Ā»
TimToady cool
std: role Foo[::T] {...} 19:15
p6eval std 26564: OUTPUTĀ«ok 00:02 37mā¤Ā»
TimToady std: role Foo[::T] {...}; role Bar[::T] {...}
p6eval std 26564: OUTPUTĀ«Potential difficulties:ā¤ Name T redeclared at /tmp/tU8HpoN4bA line 1:ā¤------> role Foo[::T] {...}; role Bar[::T] {...}ā¤ok 00:02 37mā¤Ā»
TimToady another buglet
moritz_ is there anything implemented in rakudo that lets me convert a hex string to a number? 19:16
ie "FF" -> 255
s/ie/eg/ 19:17
pmichaud rakudo: say +":16<ff>"
TimToady yes, ord() :P
p6eval rakudo 5646df: OUTPUTĀ«255ā¤Ā»
pmichaud rakudo: my $x = 'ff'; say :16($x);
p6eval rakudo 5646df: OUTPUTĀ«255ā¤Ā»
TimToady rakudo: my $x = 'ff'; say :16($x)
p6eval rakudo 5646df: OUTPUTĀ«255ā¤Ā»
TimToady looks like that works too 19:18
pmichaud s1n++
PerlJam moritz_: URL decoding? 19:19
moritz_ PerlJam: JSON decoding
pmichaud Fargo, North Decoding.
(nm.) 19:20
TimToady keep trying
or better yet, don't
moritz_ ;-)
19:21 bacek_ left 19:22 JarJarBinks left 19:23 mikehh_ joined
[particle] steals pmichaud's dakoda ring 19:23
speling--
jnthn loves the smell of garlic bread cooking 19:24
jnthn -> dinner, back in a bit
TimToady FNORD is actually short for Fargo, North Dakota
which is why neither of them are really there
moritz_ if <foo>* matches zero times in a regex, should $<foo> be an empty array? or undef? 19:25
rakudo: '' ~~ m/<ident>*/ && say $<ident>.WHAT
p6eval rakudo 5646df: OUTPUTĀ«Failure()ā¤Ā» 19:26
TimToady should probably just be Nil
moritz_ but why? then $<ident> is false even though the rule match 19:27
TimToady it's also funny to ask what it matches if the pattern matches multiple times
pmichaud well, $/ could be true even if $<ident> is false. 19:28
you're really asking for two different things.
moritz_ not quite
when the top level regex matches the empty string, $/ is true
when <ident>* matches the empty string, $<ident> is false
pmichaud But I don't think of <ident>* as "matching" the empty string. 19:29
in the sense that it matched zero times.
which means "no matches"
moritz_ why not?
TimToady it returns a Nil
it's not matching a string in any case
suppose
[ <ident> xxx ]* /
er, with a / on the front 19:30
it can match 0 or more idents, but they aren't even contiguous
so you can't argue that $<ident> should return the string convered
*coverd
*
(not that the pattern makes sense...) 19:31
moritz_ i think I see your point
TimToady $<ident> is known statically to return a list of some sort
but that list might be Nil
moritz_ ok
TimToady question is, suppose it matches 2 idents
does $<ident> then match *either* of them? 19:32
[particle] especially if <ident> has subrules with alternations
TimToady as if you said @$<ident>
moritz_ why should $<ident> match *anything*? it's not a regex
TimToady arrays do literal disjunctive match
same as < a b c >
moritz_ ah, inside the regex
TimToady so @ident could match any of a list of idents 19:33
moritz_ I was thinking about closure all the tiime
TimToady should $ident work the same?
if it happens to be a list?
moritz_ do you mean $<ident>?
if yes, sounds sane 19:34
if not, you lost me ;-)
TimToady I meant any scalar variable containing a list
including $<ident>
moritz_ ok
TimToady we already look at $foo to see if it's a Regex
moritz_ sounds sane, but I haven't put much thought into it
TimToady and if not, treat as a string
so we could special-case other types too 19:35
moritz_ "smart interpolation"
TimToady alternately, we could force people to say @$foo if they mean it
moritz_ speaking of which... is interpolation of hashes still in S05?
TimToady since the disjunction is a bit surprising if they don't expect it
which goes without saying...
pmichaud :-) 19:36
19:36 mikehh left
TimToady um, I'm not terribly interested in regex hashes these days 19:36
pmichaud me neither :-)
TimToady we should probably just reserve them
pmichaud +1
moritz_ +1
19:37 eternaleye_ left
moritz_ rakudo: '' ~~ m/<ident>*/ && say $/.perl 19:37
p6eval rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "",ā¤ text => "",ā¤ from => 0,ā¤ to => 0,ā¤)ā¤Ā» 19:38
moritz_ rakudo: 'a' ~~ m/a<ident>*/ && say $/.perl
p6eval rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "a",ā¤ text => "a",ā¤ from => 0,ā¤ to => 1,ā¤)ā¤Ā»
19:38 Gothmog_ joined
moritz_ rakudo: 'ab' ~~ m/a<ident>*<foo=ident>/ && say $/.perl 19:39
p6eval rakudo 5646df: OUTPUTĀ«Match.new(ā¤ # WARNING: this is not working perl codeā¤ # and for debugging purposes onlyā¤ ast => "ab",ā¤ text => "ab",ā¤ from => 0,ā¤ to => 2,ā¤ named => {ā¤ 'foo' => Match.new(ā¤ ast => "b",ā¤ text => "b",ā¤ from => 1,ā¤ to => 2,ā¤ ),ā¤ },ā¤)ā¤Ā»
pugs_svn r26565 | lwall++ | [S05] reserve hash notation 19:40
literal hm, :16<ff> interpolates? as part f what? :scalar? 19:42
rakudo: say Q:scalar/:16<ff>/
p6eval rakudo 5646df: OUTPUTĀ«Colons cannot be used as delimiters in quoting constructs at line 1, near ":scalar/:1"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā» 19:43
literal rakudo: say Q :scalar / foo :16<ff> bar /
p6eval rakudo 5646df: OUTPUTĀ«Colons cannot be used as delimiters in quoting constructs at line 1, near ":scalar / "ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā»
pmichaud rakudo only understands a few of the adverbial quoting modifiers 19:45
that said, :16<ff> doesn't interpolate.
+":16<ff>" isn't interpolation, it's numification. 19:46
rakudo: say ":16<ff>";
p6eval rakudo 5646df: OUTPUTĀ«:16<ff>ā¤Ā»
pmichaud rakudo: say +":16<ff>";
p6eval rakudo 5646df: OUTPUTĀ«255ā¤Ā»
literal oh, I see
pmichaud rakudo: say +":16<ff> bottles of beer on the wall";
p6eval rakudo 5646df: OUTPUTĀ«255ā¤Ā»
jnthn rakudo: say "{+":16<ff>"} bottles of beer ont he wall"; 19:57
p6eval rakudo 5646df: OUTPUTĀ«255 bottles of beer ont he wallā¤Ā»
jnthn nice, plenty spare for me...
pmichaud rakudo: say "{:16<ff>} bottles of beer on the wall"; 20:00
p6eval rakudo 5646df: OUTPUTĀ«255 bottles of beer on the wallā¤Ā»
TimToady phone
20:01 keta left, FurnaceBoy joined 20:10 ispy_ joined
meppl good night 20:15
20:16 meppl left 20:18 hercynium joined
arnsholt pmichaud: You mentioned that you had a patch for double quoted strings in regexes the other day. Does that handle variable interpolation? 20:37
20:41 ruoso left, angoladon joined 20:45 Umeaboy left 20:46 angoladon left, jhorwitz left 20:51 ispy_ left
pmichaud arnsholt: no. (also we don't even handle bare scalars in regexes yet) 20:53
I'm not sure what it would take/require to get double-quoted strings to do that.
20:54 ejs1 joined
pugs_svn r26566 | moritz++ | [t/spec] correctet test for .chunks on submatches 20:55
r26567 | moritz++ | [t/spec] tests for RT #62838
20:56 bacek joined
pugs_svn r26568 | moritz++ | [t/spec] tests for RT #65096, autothreading over Array parameters 21:00
arnsholt pmichaud: Yeah, I've been juggling that problem about in my head lately 21:02
jnthn At the very least, emiting a find_lex for 'em and setting the outer properly, I'd guess. 21:03
arnsholt The fact that double quotes should inherit interpolation semantics from the enclosing language makes it even more interesting 21:04
21:04 payload left 21:07 Limbic_Region joined
TimToady in the long run, you have to do it like STD does... 21:07
21:08 ejs left
arnsholt Which means I should probably go look at STD.pm 21:08
Be right back =)
TimToady yeah, sure
[particle] there you go, scaring off contributors again.... 21:10
21:10 FurnaceBoy left 21:12 skids left
arnsholt Not scaring off. To be entirely honest, I quite like grammars actually 21:13
21:13 ZuLuuuuuu left
moritz_ too 21:14
but they are a bit tricky, at time
s
TimToady especially this one, when it comes to polymorphic quoting languages passed down through regexen 21:15
pugs_svn r26569 | moritz++ | [t/spec] tests for make() in action stubs
TimToady the important thing to note is $*LANG
pmichaud in the case of PGE and Rakudo, we need Rakudo to override PGE's default double-quote rule and instead make a call to the double-quote parsing routine inside of Rakudo's grammar 21:17
and after it's parsed, return it back as something that PGE can then convert to code to evaluate the double-quoted string at runtime and perform a match on the result
Tene pmichaud: did you notice a difference in spectest speed in the .HLL branch? 21:18
or was it just my imagination?
pmichaud Tene: haven't gotten quite that far yet. Still trying to get rakudo to build.
I don't know. Was your imagination faster or slower?
arnsholt Yeah, that's the direction my brain was headed as well. PGE has to be given the information needed to parse double quoted strings, closures and the like
Tene it seemed like hll branch was slower.
BUT, it was late at night. 21:19
pmichaud I think I might expect that.
moritz_ rakudo: say eval 'module A { if 3 { 5 } else { 6 } }' 21:20
p6eval rakudo 39e45d: OUTPUTĀ«_block34ā¤Ā»
pmichaud merging this back to trunk (and getting it to work) is proving to be a pain
moritz_ rakudo: say eval 'module A { if 3 { 5 } else { 6 } }'.WHAT
p6eval rakudo 39e45d: OUTPUTĀ«ā¤Ā»
moritz_ huh?
any idea what's going on here?
Tene moritz_: it returned the module.
which is a block
moritz_ hm 21:21
ok
jnthn rakudo: say (eval 'module A { if 3 { 5 } else { 6 } }').WHAT
p6eval rakudo 39e45d: OUTPUTĀ«Code()ā¤Ā»
PerlJam rakudo: say eval "string".WHAT # is what you asked for the first time.
p6eval rakudo 39e45d: OUTPUTĀ«ā¤Ā»
Tene rakudo; my $x = eval 'module A { 1 }'; say $x()
PerlJam rakudo: "string".WHAT.say
p6eval rakudo 39e45d: OUTPUTĀ«Str()ā¤Ā»
pmichaud rakudo: "string".WHAT.eval.say
p6eval rakudo 39e45d: OUTPUTĀ«Method 'eval' not found for invocant of class ''ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā» 21:22
Tene rakudo: my $x = eval 'module A { 1 }'; say $x()
p6eval rakudo 39e45d: OUTPUTĀ«1ā¤Ā»
Tene see?
pmichaud I think it'll be easier for me to make modifications to master going forward than to try to backpatch them in from the hll branch and wonder what's breaking. 21:23
(and why)
jnthn (scheduling) I will do my other catch-up Rakudo Day this week on Friday. (not tomorrow...too many distractions...) 21:26
pugs_svn r26570 | moritz++ | [t/spec] tests for "if" and "eval" iin packages, RT #64072 and RT #65238 21:27
Tene pmichaud: okay, I will get branch merged into master 21:28
pmichaud Tene: I still think it's easier to go the other way. 21:29
working on it now.
Tene oh, "it will be easier"
I misread.
TimToady rakudo: "string".WHAT.perl.eval.say 21:30
p6eval rakudo 39e45d: OUTPUTĀ«Method 'eval' not found for invocant of class 'String'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 662 (src/classes/ClassHOW.pir:171)ā¤Ā»
pmichaud at some point I think we had decided .eval wouldn't be a method on Any. 21:31
TimToady rakudo: "string".WHAT.perl.say
p6eval rakudo 39e45d: OUTPUTĀ«Str()ā¤Ā»
pmichaud (we can of course switch back)
moritz_ pmichaud: re my grammar/actions methods from last night, I've fixed .chunks a few hours ago, and prepared a small demo for masak
TimToady .perl of a protoobject probably *shouldn't* have the ()
pmichaud moritz_: excellent. Are things working better now? 21:32
moritz_ yes.
TimToady unless we guarantee that .() on a protoobject returns the protoobject itself
pmichaud I agree, shouldn't have the ().
rakudobug.
jnthn Agree.
And the type errors will be nicer as a result. ;-)
PerlJam speaking of which ... how do I get the class name without the () now?
pmichaud jnthn: oh, the type errors use .perl ?
moritz_ the problem was that when I wrote .chunks, I didn't have in mind that on sub matches .from and .to aren't aligned with the start of the string
pmichaud moritz_: I guessed that was the case :-) 21:33
jnthn pmichaud: aye
pmichaud cool.
PerlJam: class name w/o () is .perl, probably
jnthn rakudo: sub foo(Int @x) { }; my Str @a = <a b c>; foo@a) 21:34
p6eval rakudo 39e45d: OUTPUTĀ«Statement not terminated properly at line 1, near "@a)"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:86)ā¤Ā»
jnthn rakudo: sub foo(Int @x) { }; my Str @a = <a b c>; foo(@a)
p6eval rakudo 39e45d: OUTPUTĀ«Parameter type check failed; expected something matching Positional[Int()] but got something of type Array() for @x in call to fooā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
jnthn Once Array is parametric, it should report Array[Int]
I think.
:-)
PerlJam rakudo: class X {}; my $x = X.new; $x.perl.say; 21:35
p6eval rakudo 39e45d: OUTPUTĀ«X.new()ā¤Ā»
PerlJam no, that appears to be worse :)
[particle] rakudo: class X {}; my X $x .= new; $x.perl.print
p6eval rakudo 39e45d: OUTPUTĀ«X.new()Ā»
moritz_ PerlJam: X.WHAT.perl should do it 21:37
PerlJam: but does not, as per bug above
so, did anybody submit that?
pmichaud actually, X.perl is sufficient
since X is already a protoobject 21:38
moritz_ right
pmichaud I'll submit.
submitted. 21:39
[particle] you mean 'masaked'. 21:41
much like when a ticket is done and awaiting tests, it's 'moritzed'.
moritz_ ;-) 21:42
jnthn is glad he picked a vowelless nick so it can't be turned into a catchy-sounding verb.
pmichaud I suspect that it's not far from "jnthn" to "hackathon" 21:43
moritz_ jnthnd?
pmichaud masaked can be "submitting blog post with no verbs"
[particle] when someone submits a grant report and request at the same time, it's 'jnthning'
pmichaud jnthnd can be "submitting blog post with no vowels"
Tene edit distance of 6
between jnthn and hackathon 21:44
jnthn [particle]: It wasn't exactly at the same time. There were approx 2 minutes between the two.
moritz_ pmichaud: sbmittng blg pst wth n vwls?
pmichaud *submttng
*sbmttng
moritz_ arg!
jnthn ts hrd t wrt wtht vwls.
Tene try wrtng n hbrw 21:45
pmichaud $blog_post .= subst( /<[aeiou]>/, '')
PerlJam nt f y dsbl thm n y kybrd
jnthn hbrw r rbc
[particle] shouldn't that be missing every other y?
moritz_ M N R BLGPST TNG R VWLS!
[particle] hrmm, a vowelless lolcode variant... 21:46
PerlJam [particle]: no, but s:2nd/y/yr/
[particle] M N YR CD, TN YR VWLS! 21:47
PerlJam [particle]: honestly, I see very little difference without the vowels ;)
moritz_ code vs. blogpost 21:48
21:48 payload joined, iblechbot left
moritz_ or did you mean difference between normal lolspeak and vwllss? 21:48
PerlJam aye
jnthn CN HZ CHZBRGR? 21:49
[particle] MGWTF?
jnthn kplzthnx
.oO( OH HAI doesn't work out too well without vowels )
21:50
PerlJam jnthn: it just become a new meme 21:51
jnthn Well, #perl6 creating a new meme makes a change from 4chan...
moritz_ H H? 21:52
PerlJam H H! 21:53
pmichaud In wiki.github.com/rakudo/rakudo/steps...te-a-patch , didn't we determine that using git send-email wouldn't play well with RT headers? 21:55
moritz_ we did 21:56
which is why I wrote the mail-patch branch
pmichaud can we fix the instructions there somehow?
or update them, or whatever?
I'm not sure how to do that.
(I'm not sure what it should be updated to)
(I know how to update the wiki page :-) 21:57
PerlJam Does rakudo grok class data?
moritz_ just change it to "write a mail to [email@hidden.address] and attach that file"
until I've got the mail script sorted out 21:58
Tene moritz_: we have sockets in rakudo now... we could write a little script to send mail.
:)
pmichaud updated. moritz++ 21:59
moritz_ ... unless we want to report broken sockets
and might I add that sockets aren't tested atm?
and I can't see how I could test them...
qx would help
or non-blocking sockets 22:00
Tene if we had fork, it would help...
moritz_ fork. on windows. I don't even want to think about that
Tene can has fork opcode in parrot?
no?
is windows non-forkable? 22:01
moritz_ afaict windows doesn't come with work.
s/work/fork/
jnthn I often find windows pretty forked.
moritz_ ;-)
jnthn ;-)
moritz_ perl 5 emulates fork() with threads.
japhb moritz_: I think your original spelling was correct
jnthn But now, it's process model doesn't really do forking as such.
*no
moritz_ japhb: ;-) 22:02
22:02 kane_ joined
mberends I'm trying to finish a sockets test script that runs a few bash & lines to fork into client and server processes. Tricky. 22:02
PerlJam rakudo: class X { my $.x = 5; method foo { $.x++ }; }; my $x = X.new; $x.foo; say X.x; 22:04
p6eval rakudo 96de99: OUTPUTĀ«Cannot assign to readonly variable.ā¤current instr.: 'die' pc 17704 (src/builtins/control.pir:225)ā¤Ā»
PerlJam That should work, right?
moritz_ no 22:05
PerlJam por que no?
moritz_ with $!x inside the method it should work
$.x means "use the accessor"
and that is read-only
pmichaud $.x is a read-only accessor
moritz_ another Perl 6 FAQ entry.
PerlJam I don't know why I was thinking that $.x made things rw. That's an odd thing to just suddenly get stuck in your head. 22:09
22:09 eric256 left
Tene is there a reason that it defaults to ro? 22:09
moritz_ it's not that odd. You declare '$.x', then you expect that you can modify that somehow
Tene: sanity ;-) 22:10
Tene i've always felt that that's a kind of sketchy decision to require 'is rw' instead of 'is ro'.
moritz_: explain?
pmichaud generally we should explicitly give permission for external agents to modify the value.
instead of assuming they modify the value and having to explicitly close it off. 22:11
moritz_ Tene: same reason why you use lexical variables - to protect your data from being changed accidentally
Tene that's what $! vs $. is for, in my mind.
pmichaud that's different.
$. says "give me an accessor"
$! says "don't provide an accessor
Tene Exactly. 22:12
so you're already saying "I want to share this with the world'.
pmichaud but an accessor doesn't have to default to being a rw accessor.
22:12 ejs1 left
moritz_ actually they don't, in most programming languages 22:13
pmichaud sharing something with the world doesn't mean "I want to let the world modify it" :-)
Tene "i want to share, but only kinda" is a middle ground that I don't think I'd see very often.
pmichaud actually, providing read-only accessors is the more common case, to my mind.
well, perhaps not.
Tene BUT, sure, my programming style or experience or whatever might be unusual. I make no claims to normality.
:)
moritz_ Tene: for the user there's no difference between a method and a ro-accessor...
pmichaud anyway, I'm find with saying "is rw" as opposed to "is readonly" 22:14
moritz_ Tene: so it's much easier for the programmer to change the implementation later on without changing the interface if it's ro
Tene OK
22:14 mberends left 22:17 kane__ left 22:25 [particle] left 22:30 wknight8111 joined 22:32 justatheory_ joined 22:45 wknight8111 left 22:47 justatheory left 22:48 skids joined 22:52 fridim_ joined 22:55 ben joined 23:04 rocket_guatemala joined
rocket_guatemala hey, I saw the camelia logo on the perl6-projects.org/ site and I thought of doing another interpretation, i have uploaded it on www.flickr.com/photos/58912287@N00/3487448432/, comments are welcomed 23:07
fridim_ what about www.ardensgames.com/www_root_isbent...270x87.png ? :) 23:09
rocket_guatemala I tried to get the same spirit of this one, svn.pugscode.org/pugs/misc/camelia.svg 23:11
fridim_ yes, horrible 23:12
rocket_guatemala :) 23:13
23:22 nihiliad left, exodist left 23:27 jradzuweit left 23:50 km2 left, km2 joined, km2 left 23:51 DemoFreak left 23:58 hercynium left