perl6-projects.org/ | nopaste: sial.org/pbot/perl6 | evalbot: 'perl6: say 3;' | irclog: irc.pugscode.org/
Set by mncharity on 25 March 2009.
mncharity I keep wondering if elf should have been switched earlier to multiple dispatch. Things would be much cleaner. But while elfcl would be fine with it (already is multis everywhere), the elfp5 hit is just not happy. With a cached parse, elf recompiles itself in 10 sec. To test a bootstrap, you do that 3 times. Bumping 30 s to maybe something vaguely like 45 s just to use multis... sigh. 00:00
jnthn Speed - sure, we don't have a performance focus just yet, I'll agree there.
And multiple dispatch - Rakudo I think by now it's fair to say has the most complete implementation of this out of all the implementations.
mncharity nod
jnthn Actually multi dispatch is one plase we do consider performance more. 00:01
We have a cache in place there, for example.
Tene what's the reason for multiple backends in elf? 00:02
mncharity phone 00:03
jnthn I'm uncomfortable with digging into working on the Rakudo optimizer just yet because I don't think we have enough test coverage or a full enough idea of feature interactions to be able to safely develop one.
Of course, that's a separate issue to the parser speed, which is going to improve lots in the near future.
skids jnthn: any ideas on my question above -- how to getthe equivalent of a .param string in inline PIR? 00:05
jnthn skids: tbh I didn't quite follow what you were trying to do, sorry.
Can you give me a slightly higher-level idea of what you're aiming for?
skids I was trying to use the in-place substitution form of the substr op. 00:06
But I could not get an S register to refer to the original string, only ever copies of it.
00:06 kulp joined 00:07 kulp left
jnthn Ah, was this to try and implement lvalue substr in Perl 6? 00:07
skids No, actually for some private stuff where I need buf but don't have it yet.
jnthn ah, OK 00:08
Hmm
I suspect you'll ahve to pull it out, operate on it, then $P0 = $S0 on it to put the string back into the Str again.
Hmm. Seems like Buf is kinda wanted...
skids Well, I certainly want it but I don't know if anyone else is chafing on that yet. 00:10
jnthn I think masak mentioned it recently. 00:11
skids Without at least buf, It's sorta like playing with a big set of legos when you're used to an erector set :-) 00:13
jnthn ;-)
I'll try and keep in mind that you want buf. Maybe I can give it some tuits soon. 00:14
skids if you leave breadcrumbs I MIGHT be able to figure out how to add some of the "native" types. But no promises I'm fairly incompetent :-) 00:15
jnthn tbh I didn't think too hard about some of that yet myself 00:16
But I'm certainly happy to delegate implementation work. :-)
OK, sleep time, night all 00:22
skids n8
wayland76 'night 00:23
skids not getting auth to pugs svn to work. 00:24
Changed my password to be sure, but feather doesn't seem to know me.
mncharity back, sorry 00:29
ah, bummer. 00:30
jnthn: g'night. thanks for the conversation
Tene: you had a couple of questions, let's see.. 00:31
re IR analysis?, eg, type and dataflow analysis. eg, can I make this call uncontainerized and unboxed, or does it need a full Closure, or... . 00:34
so not trying to replace say CL's compiler smarts and optimization, let alone anything remotely haskellish, but basic "I the compiler understand at least a little about p6, and so I know I don't have to do this little bit the hard/slow/general way". 00:36
Tene No, rakudo doesn't do any of that currently, but there are certainly plans for it eventually.
mncharity right. so apropos the 'what might be lost by punting elf' question, elf knew up front that fast was critical, so IR analysis was needed now rather than later. It's still an ugly rev 0, which, for instance, deals very very poorly with tree rewrites after analysis begins. Vision was, get it started, others will sketch in something better. First part happened... 00:39
re, let's see...
pigeon search capabilities-- 00:41
re "what's the reason for multiple backends in elf?", different backends have different capabilities. elfp5 compiles fast. let's you suck in cpan modules. include bits of p5 code. elfcl has a real compiler. multis are fast. there's a clear optimization path to 10x+ p5 speed. the oo system is designed to permit swapping in something like p6's instance based oo. might even manage smop like low level ops. 00:44
real debugger (SLIME is quite nice on elfcl).
elfcl regexps are often faster than p5's, and eventual regexs, especially STD.pm like things with lots of embedded code, will blaze on CL, faster than anything that will be managed on p5. 00:47
Tene but... for a real implementation you'll need everything in one backend anyway
mncharity maybe a threaded jit javascript with regexp vm instructions might match it (webkit), but otherwise. 00:48
yes, but...
00:48 Cybera left, Khisanth left
mncharity just as jruby and C ruby address different needs, and python, ironpython, and the various others, there will eventually be a jperl6, a jsperl6, and it seems likely a CL perl6, and a haskell perl6. each will have beyond spec capabilities the others lack, and each will have strengths and weaknesses with spec. 00:51
the reason I expect p6 will get a CL backend, despite neither ruby or python having one, is p6 has a compile-time story which makes it worth while. there's not much you'd be able to do with a real compiler on ruby and python. so you're left with only jit. 00:52
jit is getting quite good. arguably will displace compilation for many things. but... it's still just jit. it removes abstraction costs but doesn't understand large scale program structure enough to say "and here you don't have to even bother", let alone "I've looked at your grammar, note it can be wizzily implemented as an LALR(1) parser, and have silently built one for you". 00:55
00:56 nihiliad joined
mncharity so for now, its back to the "what is the goal" thing. If you feel the need to write non-small p6 now, backends give you a way to deal with "I really need to use a p6 regex engine faster than p5's regexp engine". or whatever. and long term, you are going to want the though that went into the assorted runtimes anyway. 00:58
pmichaud one comment from scrollback 01:00
23:24 <mncharity> I don't know how well rakudo is set up to do IR analysis. My impression is it's mostly direct-to-pir,
that's categorically not true.
rakudo goes first to an abstract syntax tree representation, which then goes to an opcode representation, which then goes to pir, which then goes to bytecode 01:01
there's room (and hooks) for optimization at the parse tree, abstract syntax tree, opcode tree, pir, and bytecode levels
indeed, part of the point of having a common-ish abstract syntax tree representation at the parrot level is that multiple languages can take advantage of optimizations that take place at the higher "what is this code doing" levels. 01:02
mncharity and compared to rakudo/parrot, these are all very low cost endeavors. iblech wrote the pugs js backend, much of it in a couple of weeks. the pugs p5 backend was me and fglock, and similar. elf is me, and dealing with parsing has been far more pain than the backends. 01:03
mncharity reads comment from scrollback...
01:03 eternaleye joined
mncharity nod. great. 01:04
pmichaud yes, things can be much simpler if one goes with an existing backend instead of creating a new one.
mncharity i sit corrected :)
pmichaud for whatever reason, the perl 6 design team chose not to take that path.
mncharity (and puzzled by the last line)
err, second to last
pmichaud sorry, I think we had a cross-conversation there.
mncharity :) 01:05
pmichaud I was responding to "backends in a couple of weeks". Yes, that's easier when there's a robust backend already in place.
mncharity ah, so building on CL/js/whatever rather than building a vm? 01:06
the cost argument was just part of the reply to Tene, "why backends?". A: you get capabilities, and it's not very expensive. 01:07
pmichaud ah, understood.
mncharity the nod. great. i sit corrected :) were pointed at the parrot IR analysis. 01:08
:)
pmichaud right -- I caught that.
I think I crossed the streams. :-)
mncharity lol 01:09
pmichaud have to go help son with his homework -- be back later.
mncharity (image of stream crossing via log/allegator hopping from some vid game seen recently comes to mind)
cheers. thanks for the conversations and help. 01:10
Tene, anyone: I think I dropped some questions as they went by. please feel free to reraise.
hmm... reraise... resumable execeptions are something unlikely to be seen outside of a CL or scheme backend. Ie, error is thrown, you catch it, fiddle with things at the point where it was raised, _and then resume execution_. :) sigh, I miss lispms. 01:13
01:13 abc joined
skids mcharity: the videogame would have been "frogger" 01:15
mncharity ok, so I need to fiddle with the status report. sigh. it's so easy when you don't have external deadlines to put things off until tomorrow, rather than just ripping at things and going with "good enough" crud. 01:16
skids: yeah, that's it. :) still don't remember context though. ah well.
thanks :)(
s/\(/ 01:17
skids Probably daily show, with a sombrero.
mncharity that's it. :)
thank you hulu.
cxreg speaking of: www.engadget.com/2009/04/01/hulu-be...wser-apps/ 01:18
skids mmm. brains. 01:19
mncharity sigh
01:20 abc left, abc joined 01:21 abc left
mncharity so one take on my wondering about rakudo is, is rakudo no longer just another pugs - nice to have, but due to hard internal characteristics, not something which will directly help with building xmas. something like that. 01:23
hmm, and since performance is a critical part of the latter, it can't yet be. 01:24
so the next question is,
should elf be put on hold for a quarter, either because I'm tired of working solo, or it removes a distraction from community focus on rakudo, or a 3 mo hit is cheap and can reeval rakudo then, or... whatever. 01:25
01:26 disismt1 joined
mncharity hmm, but the only immediate issue is what to write in the status report re current state, and my thoughts on which way to go. 01:26
that's easier. 01:27
01:27 disismt1 left
mncharity as an example of what elf could provide, while writing an rx engine in p6 is probably something which would still be painful to do in rakudo, it would be easily done in elf. and if someone did that now, pm wouldn't have to n months from now. 01:28
ah well, end of day. 01:29
thanks all.
01:29 mncharity left 01:56 kidd` joined
Tene mncharity: Parrot has resumable exceptions. 02:18
Oh, he's gone
and ENOPURL
02:19 Limbic_Region left 02:20 dKingston left 02:24 davidad joined, davidad left 02:25 davidad joined, davidad left
skids ponders why jnthn's rakudo.org is always last modified "6 min 27 sec" ago no matter how many times he reloads. 02:29
erm jnthns rakudo.org post, that is. 02:30
Oh it must update on hours server-side. 02:31
02:46 alc joined
skids rakudo: "\c[GREEK RHO SYMBOL]\c[COPTIC SMALL LETTER SHIMA]".say 02:52
p6eval rakudo 913094: OUTPUTĀ«Ļ±Ļ­ā¤Ā»
skids rakudo: "\c[GREEK RHO SYMBOL]\c[COPTIC CAPITAL LETTER SHIMA]".say 02:53
p6eval rakudo 913094: OUTPUTĀ«Ļ±Ļ¬ā¤Ā»
skids rakudo: my $case = "CAPITAL"; "\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]".say 02:58
p6eval rakudo 913094: OUTPUTĀ«perl6regex parse error: Unrecognized character name COPTIC $case LETTER SHIMA at offset 46, found 'C'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)ā¤Ā»
skids Yeah didn't think so.
03:05 davidad joined 03:07 c9s_ joined 03:15 alester joined 03:35 justatheory left 03:45 nihiliad left 03:59 payload1 left, payload joined 04:01 wayland76 joined
wayland76 Nice try with the variables in characters 04:06
my $case = "CAPITAL"; $test = "'\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]'.say"; $test.eval 04:07
rakudo: my $case = "CAPITAL"; $test = "'\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]'.say"; $test.eval
p6eval rakudo 913094: OUTPUTĀ«perl6regex parse error: Unrecognized character name COPTIC $case LETTER SHIMA at offset 55, found 'C'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)ā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; $test = '"\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]".say'; $test.say 04:08
p6eval rakudo 913094: OUTPUTĀ«Scope not found for PAST::Var '$test' in ā¤current instr.: 'parrot;PCT;HLLCompiler;panic' pc 146 (src/PCT/HLLCompiler.pir:102)ā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = '"\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]".say'; $test.say
p6eval rakudo 913094: OUTPUTĀ«"\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]".sayā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = "\"\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]\".say"; $test.say
p6eval rakudo 913094: OUTPUTĀ«perl6regex parse error: Unrecognized character name COPTIC $case LETTER SHIMA at offset 59, found 'C'ā¤current instr.: 'parrot;PGE;Perl6Regex;parse_error' pc 10552 (compilers/pge/PGE/Perl6Regex.pir:1323)ā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = "\"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]\".say"; $test.say 04:09
p6eval rakudo 913094: OUTPUTĀ«"\c[GREEK RHO SYMBOL]\c[COPTIC CAPITAL LETTER SHIMA]".sayā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = "\"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]\".say"; $test.eval
p6eval rakudo 913094: OUTPUTĀ«Method 'eval' not found for invocant of class 'Perl6Str'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)ā¤Ā»
wayland76 bah :)
rakudo: my $case = "CAPITAL"; my $test = '"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]".say'; $test.eval
p6eval rakudo 913094: OUTPUTĀ«Method 'eval' not found for invocant of class 'Str'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)ā¤Ā» 04:10
wayland76 rakudo: my $case = "CAPITAL"; my $test = '"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]".say'; $test.say
p6eval rakudo 913094: OUTPUTĀ«"\c[GREEK RHO SYMBOL]\c[COPTIC $case LETTER SHIMA]".sayā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = "\"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]\".say"; $test.say
p6eval rakudo 913094: OUTPUTĀ«"\c[GREEK RHO SYMBOL]\c[COPTIC CAPITAL LETTER SHIMA]".sayā¤Ā»
wayland76 rakudo: my $case = "CAPITAL"; my $test = "\"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]\".say"; $test.eval
p6eval rakudo 913094: OUTPUTĀ«Method 'eval' not found for invocant of class 'Perl6Str'ā¤current instr.: 'parrot;P6metaclass;dispatch' pc 637 (src/classes/ClassHOW.pir:161)ā¤Ā»
wayland76 Anyway, that's probably as good as it's going to get
rakudo: my $case = "CAPITAL"; my $test = "\"\\c[GREEK RHO SYMBOL]\\c[COPTIC $case LETTER SHIMA]\".say"; eval $test 04:11
p6eval rakudo 913094: OUTPUTĀ«Ļ±Ļ¬ā¤Ā»
wayland76 There you go :)
skids: am I right in presuming you're no longer working on S17? 04:12
04:18 payload left 04:27 iblechbot joined 04:28 kulp joined 04:42 justatheory joined 04:53 bacek_ left 04:57 vinay left 05:12 justatheory left 05:39 iblechbot left 05:47 Tene_ joined 05:51 alester left, alc left 05:55 c9s_ left 05:59 DemoFreak joined 06:18 kimtaro joined 06:26 M_o_C joined, kulp left, Kisu joined 06:27 DemoFreak left
Matt-W Morning 07:45
dukeleto mornin' 07:50
07:54 masak joined
masak greetings, fellow Perl Sixers. 07:58
(especially all M people.)
moritz_ but we don't want to discriminate against the w and d people :-) 08:01
masak of course not. 08:02
in fact, we're very tolerant towards people whose nicks start with other letters of the alphabet.
we even encourage it.
Matt-W :) 08:04
08:05 plu joined
masak finished writing the tests for Druid 08:06
and I still have this enthusiasm over Test::Ix that I haven't been able to explain to anyone. 08:07
Matt-W What's Test::Ix? 08:09
Matt-W is still abusing templates like crazy
masak Matt-W: Test::Ix is a testing... thingie... that I wrote for the tests in Druid. 08:13
it encourages this kind of workflow: list all the tests you want to write, hierarchically. 08:14
use a little script to generate empty subs for you. each sub contains a failing test with the correct description.
write the tests, one by one.
whenever you realize you need additional tests, add them to the hierarchical index and run the script again. 08:15
the result can be seen in t/01-game-rules.t in the druid repo. 08:17
I'd link to it on github, but github seems broken in some way today. 08:18
eiro hello world 08:20
masak eiro: oh hai 08:21
eiro in the perl6 doc, i try to figure out what's the $$ at the end of the grammar rules 08:27
any link to another doc ?
moritz_ S05
it means 'end of line'
rakudo: say "a\nb" ~~ m/ a $$ / 08:28
p6eval rakudo 913094: OUTPUTĀ«aā¤Ā»
moritz_ rakudo: say "ac\nb" ~~ m/ a $$ /
p6eval rakudo 913094: OUTPUTĀ«ā¤Ā»
moritz_ rakudo: say ?( "ac\nb" ~~ m/ a $$ / )
p6eval rakudo 913094: OUTPUTĀ«0ā¤Ā»
eiro lol .. i known it but i tried to understand it as a variable 08:29
thx moritz_
moritz_ most punctuation variables went away 08:32
only $!, $/ and $_ remains
08:32 ejs joined
moritz_ s/s$$// 08:33
08:33 DemoFreak joined
masak :) 08:34
well, and @_ and %_
eiro i read it ... but i write per5 every day so i have a lot of bad habits
is there a way to get/set an handler that is launched at the end of a rule ? 08:36
moritz_ {*}
eiro i mean : rule marc_dump { <marc_record>* } ...
ohhh ... like in perl6 grammar ! i have to view the jnthn talk about it 08:37
thx moritz_
08:37 mikehh joined
masak people sure like those action markers. 08:37
ihrd and I have an unresolved problem relating to those and November's HTML::Template. 08:38
we think maybe pmichaud can provide some guidance, but I haven't asked him about it yet.
moritz_ www.perlmonks.org/?node_id=755196 # asks for perl 6 solution as well 08:44
08:46 c9s joined 08:51 iblechbot joined 08:55 pmurias joined
masak should be able to use classify there somehow... 08:57
moritz_ yes, included that in my answer 08:59
%h = $in.classify: { $_ };
masak moritz_++
moritz_ actually it might even work with .classify: *; :-) 09:00
but I'm not sure
masak I suppose the push-on-empty-hash-bucket-fails problem has been RT ticketed long ago...? 09:01
09:01 DemoFreak left
moritz_ I suppose so 09:02
what we really need is a spec
ie a list of methods and what they autovivify to
eg push, unshift autoviv to Array 09:03
++ and -- to Int
etc
masak let's just write something somewhere, and let the Magic of Community unfold it into something beautiful :)
only question is "where?". 09:07
S09?
probably, under "Autovivification". perlcabal.org/syn/S09.html#Autovivification 09:08
moritz_ S12 has a section Autovivifying objects
hm, S09 looks better
masak aye. 09:09
moritz_ masak: are you doing it? 09:10
masak moritz_: in a while, I am. 09:11
moritz_ masak: ok
masak just doing some $WORK first, to ail my conscience. :)
09:11 sri_kraih joined 09:16 PZt left 09:17 NoirSoldats joined 09:21 Helios joined
wayland76 I'm wondering if the autovivification stuff doesn't belong in S32? 09:24
ie. under Array.push, document what it autovivifies to
Anyway, food time for me 09:25
moritz_ wayland76: no, it's Failure.push or Object.push or so that does the autovivificatioin 09:26
09:33 bacek joined
ruoso moritz_, wayland76, actually, the autovivification uses a lazy object 09:42
It's still not clear what triggers the autovivification
but basically
@a[0] will return an object that is a lazy lookup 09:43
lambdabot Unknown command, try @list
ruoso @a[0][1] will cause an attempt to collapse the lazy lookup 09:44
moritz_ ruoso: yes, it's specced that assigning to that does the autoviv...
ruoso moritz_, yes... right... but autovivification is not only to arrays and hashes
it applies to any object 09:45
we know that assigning is one of those things that should cause autovivification
but how it triggers the autovivification is still unclear
moritz_ ruoso: but what's missing is a list of method that cause autoviv
ruoso not really, since S12 seems to imply that an arbitrary method can autovivificate
moritz_ ruoso: but to what? 09:46
ruoso my $dog = Dog{ name => 'fido' };
say 'undefined' if not defined $dog;
# it says it
$dog.wag();
# dog is autovivified
moritz_ that doesn't answer my question 09:47
ruoso what do you mean then?
moritz_ @a[0].foo # if that autovivifies @a[0], to an object of which type?
ruoso of the type @a[0] created 09:48
moritz_ Object?
please don't
@a[0].push: $foo; # should create an Array
ruoso that's the point that is unclear in the spec yet
lambdabot Unknown command, try @list
moritz_ that's what masak++ wants to change 09:49
ruoso it seems that @a[0] needs a special whatever-like type
that can mutate itself, depending on how it is used
masak what about this? my $something; $something.push(5) 09:50
ruoso that's a plain failure
masak why? what's the difference?
it's not in a data structure?
ruoso the difference is that @a[0] is the one doing the magic
masak I'm looking for the underlying philosophical difference. 09:51
ruoso the method postcircumfix:<[ ]> returns a special lazy object
masak ok.
I see. 09:52
ruoso maybe it is a special lazy object, that when used as an array, creates an array in the target object, and start proxying all the calls to it
masak sounds like an abstraction that might easily leak. 09:53
ruoso and when used as a hash, creates a hash in the target object, and start proxying all the calls to it
masak, that only exists in the process of autovivificating the value
moritz_ maybe we need functions (not methods) that handle autovivification
ruoso after that, once you try to access it, you'll get the actual value
masak ruoso: ok. fair enough.
moritz_ I have a spark of an idea, I'll try to think about it during lunch
ruoso SMOP already has a related concept, which is the bvalue 09:54
the bvalue is this special lazy object I'm talking about
it still doesn't know how to do this deep autovivification... 09:55
but first-level autovivification is already there...
i.e. Hash of Scalar
ruoso commute & 09:56
masak I've started hanging out on PerlMonks more lately. it's amazing how people don't try to reduce their code snippets to a bare minimum. 09:59
I always figured that the smaller the code snippet, the more people will read it and try to help you.
moritz_ aye
10:00 Helios left 10:01 Helios joined 10:06 payload joined 10:13 pjcj joined, ludan joined 10:26 SamB joined 10:34 c9s_ joined, DemoFreak joined 10:35 ludan left 10:39 bacek left 10:44 ludan joined, ludan left, bacek joined 10:45 ludan joined, ludan left 10:52 c9s left 10:55 pmurias left 11:00 ruoso joined
ruoso back 11:01
11:04 riffraff joined 11:06 payload left 11:11 NoirSoldats left
ruoso moritz_, masak, thinking about a bit more... I think Array/Hash autovivification is actually unrelated with Object autovivification 11:13
S09 autoviv can be implemented with a smart proxy object, and, actually, I think that's the only way to do it...
11:13 NoirSoldats joined
ruoso S12 autoviv requires you to predefine which type you want autovivified, so it doesn't really match with S09 autoviv 11:14
as a reference, take a look at smop hash_bvalue... it already implements an interesting part of that...
11:19 meppl joined 11:21 SamB left
masak ruoso: ok, nice. 11:28
ruoso: so I'll add something to S09, then, about Arrays, Hashes and Ints autovivifying. 11:29
11:29 cognominal joined 11:35 skids left, clintongormley joined 11:41 SamB joined 11:46 [particle]1 joined 11:51 kimtaro left, kimtaro joined 11:52 kimtaro left 12:25 davidad left 12:29 skids joined 12:37 masak left 12:42 kimtaro joined 12:50 kulp joined, kulp left 12:56 riffraff left 12:58 mberends joined 13:09 ejs1 joined
TimToady surely Arrays and Hashes already know what kind of container to autoviv, if only Scalar 13:09
lambdabot TimToady: You have 1 new message. '/msg lambdabot @messages' to read it.
13:15 moritz_ sets mode: +oo TimToady ruoso, c9s joined
ruoso TimToady, do they ? 13:17
13:19 ejs left, c9s left
moritz_ TimToady: the questions was, on %h{$key}.push(...) it seems that it should autoviv an array... but where is the mapping from .push to Array defined? 13:19
13:21 jhorwitz joined
ruoso TimToady, I see what you mean... the Array contain Scalars, but the issue is with the value stored inside that scalar 13:23
i.e. the array autovivified when you do %h{$key}.push(...)
my guess is that the value returned by %h{$key} is a special lazy object that knows how to handle that autovivification 13:26
which in SMOP, is the "bvalue" object 13:27
13:41 jan_ left 13:43 mberends left 13:51 ejs1 left 13:59 alester joined
TimToady airport & 14:01
14:01 nihiliad joined 14:21 dKingston joined 14:25 davidad joined 14:32 c9s joined 14:36 brunoV joined
mikehh Hi - I was just looking at the "Official Perl 6 Wiki" at www.perlfoundation.org/perl6/index.cgi and I noticed it is NOT picking up Rakudo.org feeds any more 14:37
I know the Rakudo.org site has changed but maybe someone could look into this? 14:38
14:46 exodist joined 14:47 payload joined 14:48 c9s_ left 14:51 jcrigby left
mikehh well rakudo.org/rss.xml seens to give the same stuff so rakudo.org needs to fix the feeds 14:54
to give the latest news as per rakudo.org/tracker 14:56
14:56 Tene joined 14:58 eternaleye left 15:03 Psyche^ joined 15:08 Tene_ left
payload the talk of larry isnt online yet, isntit? 15:18
15:20 Psyche^ is now known as Patterner, PZt joined
brunoV 10 hours ago when I last checked, it wasn't 15:22
15:29 Tene_ joined
japhb Is proto still the current way to install modules for Rakudo? 15:35
15:35 Tene left
moritz_ japhb: it is 15:36
japhb moritz_: thanks. Is it your creation? 15:37
japhb about to go look for it on github ...
moritz_ japhb: no, masak's
japhb moritz_: Ah, OK 15:38
Hmmm. I get octocat trying to access github.com/masak/proto/tree 15:41
moritz_ seems to be a github error 15:43
the git clone works, though
git clone git://github.com/masak/proto.git
japhb yeah ... saw something similar last night doing a fork, but then everything worked fine a minute later. They appear to have broken something ... 15:44
PerlJam github is cool, but it's getting used enough that these little hiccups are quite annoying.
japhb PerlJam: YES
Time to leave behind the fast and free startup mentality ... 15:45
15:45 justatheory joined
PerlJam I wonder what they use to implemenet github? (I bet it's rails and the problems we see are evidence that it doesn't scale well ;) 15:46
japhb moritz_: hmmm, I guess I can clone now, then later when they fix things (and if I have something to contribute) only then fork, add a remote, and push to the fork ...
PerlJam: They are definitely Ruby guys. Beyond that, not sure.
PerlJam moritz_: your response to Xiao's second item on p6l seems to be cutoff 15:48
moritz_ PerlJam: thanks, I'll write a follow-up 15:49
15:50 kimtaro left 16:02 [particle]2 joined 16:14 dKingston left 16:29 pmurias joined
dalek kudo: 881ed3d | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 344 files, 8081 passing, 0 failing
16:35
16:42 ruoso left 16:46 mikehh left 16:52 pmurias_ joined 17:03 mncharity joined, pmurias left, pmurias_ left
mncharity masak++ # re "let's just write something somewhere, and let the Magic of Community unfold it into something beautiful" :) 17:06
17:06 [particle] joined
mncharity ruoso: re "and start proxying all the calls to it", or .becomes ? 17:09
re larry's talk, still doesn't seem to be online. :/ 17:17
could have used the "implementations" slide info.
s/could have/could/
pmichaud mncharity: from what I saw of the talk, the slides were takahashi-based 17:19
(i.e., very little info beyond the names of the implementations)
mncharity ah, ok. it was streamed, so hopefully there is vid out there. maybe I'll drop by sipb... 17:21
17:22 [particle]2 left
mncharity tnx 17:22
17:23 pmurias joined
pugs_svn r26064 | putter++ | [elf_h] Revert r26027, as it broke elfish/on_lisp. 17:30
17:36 jan_ joined
mncharity random thought: if perl6-projects.org/ doesn't have links to the rakudo and smop settings directories, that would be nifty. 17:43
moritz_ mncharity: I can add that later
mncharity: or you can, it's in the pugs svn ;-) 17:44
docs/feather/
17:47 hercynium joined
pmichaud ...is there an easy way to do links to directories in git? 17:48
er, github ?
ahhh: github.com/rakudo/rakudo/tree/master/src/setting 17:49
nice.
17:53 amoc joined
skids pmichaud: would you like me to move www.perlfoundation.org/perl6/index....erl6_tasks over to the github wiki? 17:53
17:53 clintongormley left
pmichaud skids: looking. 17:53
skids I was thinking maybe then I'd use that as a place for "standards todo" 17:54
pmichaud either the github wiki, or to rakudo.org
rakudo.org/status
skids thanks. I'll make sure it's well linked.
pmichaud but yes, we should generally be moving things away from the perlfoundation.org wiki
another place to put tasks is in RT 17:55
(arguably that's *the* place to put tasks)
skids I'll take care of it later today, back to strangling CISCO gear now. 17:56
pmurias mncharity: the smop setting lives in v6/mildew/CORE but it's not something usefull in none-smop content now 18:01
mncharity pmurias: nod. I'm scribbling on the elf status report now, alternatives section. suggesting people interested in writing Setting look to rakudo, elf, and mildew. for such, accessible pointers are nice. 18:05
You can currently write standard library (aka "setting" formerly aka 18:06
"prelude") code for rakudo, elf, and mildew/smop. They need quite
different code, but that's fine. There's a vast difference between "X has
been written for one", and "X hasn't been written for any". It's easy
enough to port from the one. So choose one, and push back the darkness.
oops, sorry.
pmurias ?
mncharity ? <- ?? 18:07
pmurias oops, sorry <- ?
:)
skids sub ? (? --> ?) 18:08
mncharity cut-n-paste direct to irc - line spewage
lol # re sub ?
pmurias: ... hmm. I was about to ask if m/smop needs C developers, but... 18:18
the question suggests I'm doing the wrong thing.
part of the elf Q1 report is turning into a general consensus "here's how to help with p6". 18:19
which doesn't seem quite the right mechanism
never the less, 18:21
pmurias: does smop "need C hackers"?
skids IMO people who really like C should be working on datastructure optimizations -- both SMOP and Parrot could use that. 18:22
pmurias mncharity: yes ;) we need mostly C or perl5 hackers 18:24
mncharity skids: you're sure of the smop part? at some phases of projects, extra hands just muddle things. r isn't online. :(
ok, tnx
skids I shouldn't answer for ruoso, you are right.
But when we get to concurrency we'll be neeeding various shades of atomicity, plus people trying large junctions will need them to be tries, etc. 18:26
pmurias smop isn't concerned with performance atm 18:28
mncharity looks forward to an erlang+X p6 backend. where X can be any other backend - smop, rakudo, whatever.
pmurias mncharity: what to you mean by erlang+X? 18:29
jnthn Woo. Seems I've solved pretty much all the hard problems with getting Callable to be parametric. 18:33
mncharity nodes in an erlang system can be written in an arbitrary language. so the idea is start with a single node p6, and attempt to offload threads into erlang, which it does more-or-less uniquely well. 18:34
!! # re Callable
pmurias mncharity: got any pointers to how something like that should be done? 18:36
mncharity erlang.org/doc/tutorial/cnode.html But, given the p6 compiler support needed, the thought was more a 'I look forward to this post-xmas thing', rather than something which seems plausible to pursue at the moment. 18:39
could be wrong though. might be a nice way to shake down concurrency support.
18:40 Tene_ is now known as Tene 18:41 barney joined
mncharity but if that's the goal, it might be worth stepping back a looking at the wide range of options, before choosing. 18:41
pmurias the perl6 node will be running a seperate process connecting with sockets to other erlang nodes right? 18:44
18:44 JD_o4u joined, JD_o4u left
mncharity re perl6-projects.org/ , perhaps link to the language-spec-style language spec someone was working on? with appropriate "not all of this is spec" disclaimers. 18:45
18:45 PhatEddy joined
mncharity re nodes, right. the big payoff would be if you could take some of your p6 threads, and emit them as erlang. 18:46
PhatEddy rakudo: my Bool $t = Bool::False; say ++$t; say $t.perl; say $t.succ 18:48
p6eval rakudo 881ed3: OUTPUTĀ«1ā¤Bool::Trueā¤Null PMC access in isa()ā¤current instr.: 'parrot;List;!flatten' pc 5960 (src/classes/List.pir:227)ā¤Ā»
mncharity tries to find the unofficial p6 language spec someone was working on... any pointers? 18:50
PhatEddy In Int.pir "succ" clones and increments. I could try to do the same for Bool but it seems easier tor just return Bool::True from the prelude. 18:51
Any one have a reason to prefer one solution over the other? 18:52
mncharity the idea being, while it has issues, it's the closest thing p6 has to what other communities thing of when you say "language spec". we'd like to attract good language folks. pointing them only at Snn... tends to yield a "WTF? what are these people thinking??" moment. supplementing it seems a good idea.
lol. an old irc log: 11:12 moritz_ barbeqq1: the problem is that Perl 6 is a very complex and very new kind of language [...] 11:12 barbeqq1 moritz_: more complex than haskell for example ? [...] 11:12 moritz_ barbeqq1: yes 11:12 barbeqq1 OMG 18:56
18:58 dKingston joined
mncharity anyone remember where that "formal language specification" like document is? i'm losing... 18:58
hmm, and this of task. but, it'd be nice if it ended up on p6-projects.
18:59 nihiliad left
kolibrie mncharity: www.dlugosz.com/files/specdoc.pdf 19:00
dalek kudo: f6886e3 | jnthn++ | src/ (2 files):
Make Signature not be dependent on List and Failure, to break a dependency chain that got in the way of the bootstrap.
19:01
kudo: b015a2a | jnthn++ | (2 files):
Remove Junction's deendence on Array and List, then move it to an earlier spot in the built-ins list.
kudo: 4a7fe22 | jnthn++ | src/builtins/guts.pir:
For registering parametric roles in the stage one set of built-ins, !meta_compose must not depend on having a constructed Perl6 Compiler object yet.
kudo: 903a782 | jnthn++ | src/classes/Callable.pir:
Callable role becomes parametric (like role Callable[::T = Object] { }).
kudo: fff26a1 | jnthn++ | :
Merge branch 'master' of [email@hidden.address]
kolibrie mncharity: except I get a Not Found
mncharity kolibrie: thanks! :) 19:03
kolibrie mncharity: this one works: www.dlugosz.com/Perl6/
19:03 nihiliad joined
PhatEddy Guessing a clone type approach might play better with inheritance ... 19:04
mncharity awesome. now if only we had a community editable version. 19:05
any objections to it going on p6-projects, tagged as "one person's ... something 19:06
moritz_ mncharity: no objects
p6-projects is "ask for forgiveness rather than permission" ;-) 19:07
mncharity audrey++ :)
pugs_svn r26065 | moritz++ | [perl6-projects.org] link to Dlugosz' spec docs 19:09
mncharity lol. svn up, open editor, find link already there. :) that's a delightful blast from the p6 past. moritz++ 19:11
moritz_ mncharity: I'm adding the setting links now
is there a good link to elf's prelude/setting? 19:12
mncharity nifty. hmm, don't know what to suggest for elf. no separate directories. maybe...
perlcabal.org/svn/pugs/view/misc/el...vesSBCL.pm and 19:13
jnthn (Note about my pre-dinner commits: if you grab them you'll need to re-Configure.) 19:14
mncharity eh, how about just that and perlcabal.org/svn/pugs/browse/misc/elf/elf_h_src
pugs_svn r26066 | moritz++ | [perl6-projects.org] setting links, mncharity++ 19:16
mncharity kolibrie++ 19:18
19:24 exodist left 19:25 exodist joined 19:28 ZuLuuuuuu joined
pasteling "ZuLu" at 193.140.225.206 pasted "Gives error on 13th line" (23 lines, 560B) at sial.org/pbot/35840 19:30
pmichaud might want <Pascal::tanimlayic_isim> 19:31
instead of dot
moritz_ ZuLuuuuuu: first you need to declare your variables
pmichaud oh, that too.
ZuLuuuuuu pmichaud & moritz_: oh ok thanks
moritz_ wohoo, thankful junctions ;-) 19:32
PerlJam heh
Though, every time I see "junctions" now I cringe a little bit because of the utterly useless (IMHO) discussions about them on list. 19:33
moritz_ PerlJam: same here 19:34
especially all these "we might not expect junctions here"
if a sub returns a junction, it better document that 19:35
where else could it come from?
not from parameters?
s/?//
because they autothread
PerlJam depends on if they are Object or Any ;) 19:36
moritz_ well, yes
but if you say Object that you can blame yourself
and it's a natural law of programming that your program does bullshit if you have wrong expectations on what a subroutine returns 19:37
</rant>
pasteling "ZuLu" at 193.140.225.206 pasted "says "expression_1 is NOT well formed."" (15 lines, 340B) at sial.org/pbot/35842
jnthn I can't say I've been following it so closely. I looked at one post recently and my eyes glazed over...
19:37 sri_kraih_ joined 19:38 ruoso joined
ZuLuuuuuu I rearranged the code now does not give error but it does not give what I expect 19:38
changed variables into english so you can understand faster :)
moritz_ ZuLuuuuuu: s/rule/token/ should help 19:39
jnthn ZuLuuuuuu: I looked and thought exactly the same as moritz_ :-) 19:40
moritz_ ZuLuuuuuu: 'rule' implies that you expect <.ws> tokens wherever there's a whitespace in the rule...
jnthn It's because rule inserts <.ws> which prevents two alphanumerics following each other (e.g. ab).
ZuLuuuuuu hmmmmm
oh ok I'll try it now
moritz_ ZuLuuuuuu: and that whitespace is *not* optional between two word letters
19:41 justatheory left
ZuLuuuuuu ok it worked now, thanks very much. Is there a broader information about the difference between rule and token? 19:41
PhatEddy It looks like Bool.pir, Int.pir and Str.pir are all trying to do about the same thing with 'pred'/'succ'.
ZuLuuuuuu I was reading the Perl 6 and Parrot essentials, does not contain info about token
19:42 sri_kraih__ joined
PhatEddy Any thoughts about trying to inherit and fix all three instead of just fixing bool? 19:42
moritz_ ZuLuuuuuu: that's a bit outdated; S05 contains all (*ALL*) the gory details
ZuLuuuuuu moritz_: thanks 19:43
ruoso while thinking about chained comparison and junctions...
i.e.
rakudo: my $x = 1|5; say "is it?" if 1 < $x < 5; 19:44
p6eval rakudo 881ed3: OUTPUTĀ«is it?ā¤Ā»
moritz_ PhatEddy: the Bool one does things quite differently
ruoso I realized that chained operations should somehow return the value that mathed the criteria
PerlJam ruoso: cool.
moritz_ PhatEddy: and as for Str/Int... it's just 3 lines ... factoring it out would probably be more code
ruoso rakudo: my $x = 1|5; say "is it?" if [<] 1, $x, 5; 19:45
p6eval rakudo 881ed3: OUTPUTĀ«get_integer() not implemented in class 'Junction'ā¤current instr.: '!MAKE_JUNCTION' pc 8875 (src/classes/Junction.pir:222)ā¤Ā»
19:45 justatheory joined
ruoso but the question is... which side to return? 19:46
19:46 sri_kraih__ left
PhatEddy moritz_: thx, ok I'll try just fixing Bool then 19:47
ruoso rakudo: say [<] 1, 3, 5; 19:51
pmichaud Bool.succ should probably return Bool::True; Bool.pred should probably return Bool::False
p6eval rakudo 881ed3: OUTPUTĀ«1ā¤Ā»
ruoso pmichaud, how does reduce work with comparison operators?
moritz_ rakudo: my $x = Bool::True; say ++$x
p6eval rakudo 881ed3: OUTPUTĀ«1ā¤Ā»
moritz_ rakudo: my $x = Bool::True; say --$x
p6eval rakudo 881ed3: OUTPUTĀ«0ā¤Ā»
pmichaud ruoso: I think it just does them pairwise (stopping at the first false comparison)
ruoso ah... but where is the exception to work with comparison? 19:52
I mean
[+] 1, 3, 5
19:52 exodist left
ruoso is simply calling the first two, getting the result and calling with the third 19:52
jnthn We take a different code-path for comparrisons...can't quite remember what controls it.
May be chaining precedence?
moritz_ that would make a lot of sense 19:53
pmichaud isn't infix:Ā«<Ā» list associative now?
oh wait, it's chain associative
that said, I suspect that chain implies list
19:53 hercynium left
pmichaud currently rakudo does it by a special codepath for chained operators 19:54
jnthn Oh, at the moment get just list the difference in get_metaop
ruoso alright... so chain operators imply that its result is a bool
moritz_ well, meta ops are sort of a hack in Rakudo right now
pmichaud I don't think the result has to be a bool.
moritz_ std: say 2 RRR+ 4
p6eval std 26066: OUTPUTĀ«ok 00:02 35mā¤Ā»
moritz_ rakudo: say 2 RRR+ 4
p6eval rakudo 881ed3: OUTPUTĀ«Statement not terminated properly at line 1, near "RRR+ 4"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
ruoso pmichaud, at least it is evaluated in boolean context 19:55
pmichaud ruoso: yes.
19:55 sri_kraih left
ruoso and when a chained op is reduced, it will return a bool 19:55
pmichaud I would think it returns the result of the last comparison.
ruoso right...
so every chained operator is a comparison operator?
pmichaud $a op $b op $c is equivalent to ($a op b and $b op c)
eiro the control code under { } aren't perl6 code ? 19:56
rule uid { (\d**1..6) { 0 <= $0 <= 66666 or fail } }
pmichaud rakudo doesn't understand closures in rules yet.
coming soon.
eiro ok... that's why :)
thanks
pmichaud (I should probably put a parse error in PGE for that.)
lucs pmichaud: Equivalent, but evaluates $b only once, I suppose? 19:57
pmichaud lucs: yes, evaluates $b only once.
the point being that the result of a chained operator (even reduced) wouldn't have to be a bool.
19:58 sri_kraih_ left
ruoso so maybe the way to get chained to work with junctions is to take the same decision taken with reduce... 20:00
pmichaud I'm curious to see if junctions in reduce will "just work" if/when we get the comparisons to be junctionized.
jnthn I'd have expected so. 20:01
pmichaud it could also be a bug in PCT's chaining code.
(since I think comparisons are already junctionized, iirc)
jnthn Yeah, actually, I was just thinking...we already special-cased operators... 20:02
pmichaud rakudo: say [<] 1, 3|5, 7;
p6eval rakudo 881ed3: OUTPUTĀ«get_integer() not implemented in class 'Junction'ā¤current instr.: '!MAKE_JUNCTION' pc 8875 (src/classes/Junction.pir:222)ā¤Ā»
pmichaud I suspect a dispatch issue somewhere.
rakudo: say 1 < (3|5); 20:03
p6eval rakudo 881ed3: OUTPUTĀ«1ā¤Ā»
ruoso maybe the autothreading code should somehow detect a chain
pmichaud I think it's just that our reduction code isn't going through normal dispatch.
20:03 exodist joined
jnthn That may be it... 20:03
Oh, but why is it failing *inside* Junction?
pmichaud it's not failing inside of Junction 20:04
it's complaining when infix:< attempts to get a numeric value from a junction
jnthn current instr.: '!MAKE_JUNCTION'
pmichaud which means that we called the wrong infix:<
oh, inside of !MAKE_JUNCTION
hmmm.
jnthn (I'd look, but in the middle of something else...) 20:06
ruoso i think maybe chained ops require a dispatcher on its own
jnthn ruoso: Not really, I think this should all just fall out of normal junction dispatch. 20:07
The presence of a junction in a chaining will just lead to a junction at the end, which then collapses in the boolean context.
pmichaud I'll look later. I'm not sure why we have separate DISPATCH_* routines for single and multiple
ruoso rakudo: say ?( 1 < 1|5 < 5 )
p6eval rakudo 881ed3: OUTPUTĀ«1ā¤Ā»
ruoso that's wrong
pmichaud it is? 20:08
jnthn It looks right to be.
*me
pmichaud I agree, it looks correct to me.
jnthn It may not be what you _expect_ otoh.
ruoso TimToady, just said that in p6l
jnthn rakudo: ?( 1 < 1&5 < 5 ) 20:09
p6eval rakudo 881ed3: ( no output )
jnthn rakudo: say ?( 1 < 1&5 < 5 )
p6eval rakudo 881ed3: OUTPUTĀ«0ā¤Ā»
literal which synopsis talks about ?( ) ? 20:10
pmichaud yes, with what larry says in p6l, we may need some specialized dispatch
literal: S02
20:10 barney left
pmichaud literal: or maybe S03 20:10
literal ok
pmichaud literal: prefix:<?> is the "boolean" operator
ruoso "I consider a chained "1 < $x < 2" to be a
single function from the standpoint of autothreading"
pmichaud ruoso: yes -- just saw that. That's a bit different. 20:11
and that's going to be a bit tricky. 20:12
jnthn pmichaud: (separate multi and single auto-threading cases) comments should make clear why, see also Perl6MultiSub, but ask if you need more.
pmichaud jnthn: yes, just haven't had an opportunity to read the comments yet.
I'm working on getting icu-skipping support in the harness.
jnthn Nice :-)
pmichaud I think I have it done -- just running a spectest now.
jnthn I'm fighting trait_verb handling in actions.pm with subs... 20:13
pmichaud if you have a quick moment, I have a question about public/private attributes.
jnthn Sure 20:14
pmichaud in src/setting/Range.pm, starting at line 8
there's a definition for ACCEPTS. It's wrong, but that's not the focus of my question at the moment.
suppose I wanted to make $.from_exclusive and $.to_exclusive private instead of public 20:15
how would I then get to the from_exclusive and to_exclusive attributes of $topic? Or is it "you can't do that"?
jnthn You mean, from outside?
(outside of the class)
pmichaud no, in the way it's currently being used int hat ACCEPTS method
jnthn Or inside of it?
oh 20:16
($.from == $topic.from) && ($.to == $topic.to) && for example would just become
Oh, I see...
You mean the $topic.from bit?
pmichaud yes, if we were to make $!from private there.
(I don't need to make $.from private, which is why I asked about $.from_exclusive 20:17
jnthn I'm not aware of a way to do that...
I mean, $topic!from_exclusive
ZuLuuuuuu rakudo: rule can :ignorecase { Can };
p6eval rakudo 881ed3: OUTPUTĀ«Malformed regex definition at line 1, near "can :ignor"ā¤ā¤current instr.: 'parrot;PGE;Util;die' pc 129 (runtime/parrot/library/PGE/Util.pir:83)ā¤Ā»
jnthn is a private method call
pmichaud ZuLuuuuuu: rakudo doesn't understand modifiers outside the braces yet.
ZuLuuuuuu hmmm 20:18
pmichaud try rule can { :ignorecase Can }
ZuLuuuuuu we can put them inside bracets?
ok
thank you very much
pmichaud or maybe just rule can { :i Can }
jnthn pmichaud: But merely declaring has $!from_exclusive is not going to give you that method.
pmichaud jnthn: right.
so we'd have to also create the private method call.
jnthn Aye
pmichaud okay, that answers my question. I suspect people will want a shortcut for that. 20:19
jnthn Yeah, me too.
pmichaud maybe I'll ask about it on p6l.
jnthn *nod*
pmichaud now we need to poke cspencer to fix the ACCEPTS method :-)
jnthn ;-) 20:20
pmichaud although (reviewing commit) it was wrong in the original he copied from, too. 20:21
ruoso pmichaud, re: chained... I think we just won yet another dispatcher... 20:22
pmichaud ruoso: we may have. 20:23
jnthn oh great just what we need...
pmichaud ruoso: that might not bother me too much, though, because Rakudo's current method of doing it through PAST isn't very clean either.
jnthn How many dispatchers do we need. :-|
ruoso but at least it is completely syntatical
pmichaud I'll have to think about it a bit more over the weekend. There are too many different things floating around my head as it is.
ruoso Chained, Multi, Method, Private
pmichaud we might be able to make it work neater if we treat chained ops as thunking ops 20:24
ruoso thunking ops? 20:25
in what sense?
20:25 sri_kraih joined
ruoso .oO( I think we'll be needing a periodic table of dispatchers soon ) 20:26
pmichaud thunking the arguments means we can get the short-circuit semantics from within the chained operator handling
i.e., we might not need a totally separate dispatcher. Or, another way of looking at it, is that the chaining function is the dispatcher (but not in the same sense as a method dispatch or function dispatch) 20:27
as I said, I'll have to think about it a bit more. Rakudo and PCT's current implementation of chaining was more "make it work" than "this is the right way to do it" 20:28
jnthn sub foo() returns Int { }; say &foo.of # Int - yay
pmichaud although TimToady's p6l post is a bit unexpected -- hadn't seen that one coming.
ruoso me neigther... but it actually makes sense 20:29
makes Junctions a lot more usefull
pmichaud I've been meaning to post this but haven't had a chance -- I think one can use functions to autothread conditionals, too.
for example, to make
20:30 REPLeffect left
pmichaud my $x = 3|4; if $x == 3 { foo } else { bar } 20:30
one might be able to do:
.... oh, never mind, it doesn't quite work :-(
ruoso yeah... the junction needs to collapse sometime 20:31
pmichaud (I was thinking sub if($x, $y, $z) { $x ?? $y() !! $z() }
and then if( $x == 3, { foo }, { bar } )
which autothreads over the if, but we don't know how the $x collapsed.
I would've figured that out while posting, I guess :-) 20:32
jnthn pmichaud: About $block.control('return_pir');
pmichaud: I want to do something Rakudo-specific in the return handling code. 20:33
skids IRC -- the braino deterrent
jnthn (namely, the type check for returns, now I've got it all in place)
However, it looks like that is a special case in PCT.
20:34 ZuLuuuuuu left
pmichaud it's overridable. 20:34
'return_pir' is PCT's default.
you can actually put a PAST tree there with whatever you want to have happen instead.
jnthn .control(...past tree here...) ? 20:35
pmichaud yes.
jnthn oh, I see, and I use the register var exception 20:36
To test if it's of the type I want.
oh no, that's done for me.
So I know ti's the CONTROL_RETURN. Win!
20:37 REPLeffect joined
pmichaud I don't think I followed all of that. 20:37
jnthn pmichaud: I thought at first I would end up catching any exception there and have to check it was a CONTROL_RETURN in my PAST.
But it seems not, if I'm following PAST::Compiler correctly. 20:38
pmichaud by that point we know it's a CONTROL_RETURN
jnthn Which makes it nice and easy.
pmichaud that is one of PCT's goals, yes :-)
jnthn ;-)
Oh, I did have one other question you might have some insight on.
I think if you declare like my Int @array you can then say @array.of and get the Int proto back. 20:39
Similarly for my Int %hash
pmichaud seems reasonable.
jnthn However, Match is a sticking point.
Because it does Positional and Associative.
I suspect Capture may be too. 20:40
pmichaud I don't see the sticking point.
jnthn I figured .of should be defined in the Positional and Associative roles.
However, you get a role composition conflict.
pmichaud I figure it's a property of the container 20:41
not of the role
jnthn Ah, OK.
In that case, it waits until later.
pmichaud i.e., all containers have .of
jnthn Because that means we gotta make the containers parametric roles too.
pmichaud but that's a guess. Again, I haven't thought much about these items yet.
jnthn Which depends on the refactor to List etc.
pmichaud well, we already know that @array needs some sort of property on it to constrain its elements to Int 20:42
I figure that's a property of @array itself.
much like if I say my Int $x; there's a constraint on the $x container 20:43
jnthn It's not quite a property, but rather a role parameter, which we have a property that can then return.
japhb pmichaud: do you guys accept github pull requests?
ruoso maybe both Positional and Associative imply a Container role
pmichaud japhb: we still prefer patches to RT
japhb aw, dang
Well, that explains the silence. ;-) 20:44
rt?
jnthn For now that'll jsut mean your array does Positional[Int] but eventually it should mean we pun an Array[Int] which in turn does Positional[Int]
(Probably transitively through List[Int])
pmichaud Array[Int] I somewhat understand. Positional[Int] I don't quite understand. But I haven't read the specs for details yet.
japhb: rt == [email@hidden.address] 20:45
jnthn quickly makes this all clear in S14. ;-)
japhb pmichaud: thanks
pmichaud japhb: so far we haven't found the fork queue on github to be at all usable for patch review
jnthn But in summary, sub foo(Int @a) { } has a first parameter of type Positional[Int]
pmichaud jnthn: okay, _that_ makes it clearer. 20:46
jnthn (A *single* type.)
(Yes, a parameterized type, but still one single type.)
pmichaud japhb: you might look at wiki.github.com/rakudo/rakudo/steps...te-a-patch
there's also wiki.github.com/rakudo/rakudo/frews...d-workflow 20:47
japhb reading ...
pmichaud and also rakudo.org/developers-guide 20:48
20:49 skids left, dKingston left
japhb pmichaud: What about the pull requests make it difficult for patch review? I had assumed you would end up just clicking on my fork name, going to the commits tab, and looking at the various commits. Is that assumption incorrect? (I've never *received* a github pull request ...) 20:50
pmichaud it's the "looking at the various commits"
for one, the fork queue shows not only the commits you've made, but all of the commits you may have pulled 20:51
in some cases that's 30-40 commits for a single pull request
so then we have to go through them all and figure out which ones are relevant to what you're submitting
japhb That's annoying 20:52
20:52 davidad left
pmichaud then, if your contribution was done locally as a series of small commits, we have to either review each one individually and mentally put them together, or do some other stuff to try to see it all as a single commit. 20:52
and if your series-of-small-commits contains places where you started down one path of development, backed up, and started down a different path, we have to follow that whole chain of logic instead of just looking at the results. 20:53
japhb ah
hence all that "smash into one commit" stuff
pmichaud exactly.
japhb It's gotten hard to think that way, since I've gotten so used to micro-commits 20:54
pmichaud micro-commits are fine -- just squash them at the end.
20:54 mikehh joined
pmichaud there's a good thread on the mailing list about this: groups.google.com/group/perl.perl6....f77e96acda 20:54
20:55 jhorwitz left
japhb Nodnod, I meant reviewing them that way ... so it's strange to think about reviewing a megacommit. :-) 20:55
pmichaud and chrisdolan posted an excellent message on the topic: groups.google.com/group/perl.perl6....5f5bfc47f0
japhb reading again ... 20:56
pmichaud as an example of what the fork queue looks like on github -- here's a screenshot: pmichaud.com/sandbox/fq-4.jpg 20:59
japhb Oh blech 21:01
jnthn fork me that's huge!
pmichaud and you can't see it from the screenshot, but at the end of that long list of red commits there's a line that says "Showing the first 50 of 134 pending commits", which means that your pull request doesn't even show up in the fork queue because leto's request from 3 days ago is eating up the first 50 slots.
so until someone resolves leto's request somehow, your request isn't even visible. 21:02
pmurias ruoso: hi 21:04
ruoso hi pmurias 21:05
dalek kudo: 07af82b | pmichaud++ | (3 files):
Update the harness to recognize icu flags on spectest.data,

Add a icu-dependent test to spectest.data (which should be skipped on platforms that don't have icu present).
21:07
japhb pmichaud: ouch
pmichaud If someone who doesn't have icu currently installed could check "make spectest" after that last commit, I'd appreciate it greatly.
pmurias ruoso: what do we need in s1p? LexicalScope,Hash,Code,AdhocSignature?
pmichaud Note that it requires a reconfigure.
jnthn pmichaud: Can do.
pmichaud (to rebuild the Makefile)
jnthn pmichaud: Just about to run a make spectest for my next commits anyway. 21:08
pmichaud jnthn: okay, great.
I think I'm going to add a rule in the Makefile to warn when the Makefile is out of date.
eiro is there a collection of perl6 snippets ? i can't figure out how to use my grammar in real life ... 21:10
pmichaud eiro: github.com/eric256/perl6-examples
see also perl6-projects.org
pmurias ruoso: i re-read the README and found the list 21:11
21:11 Limbic_Region joined
eiro pmichaud, thanks 21:11
ruoso pmurias, I'm not sure the list is completely sane... maybe we should only move what is really being used 21:12
pasteling "mncharity" at 98.216.110.149 pasted "Perl 6 project Elf - 2009 Q1 status report [DRAFT-1]" (204 lines, 9.9K) at sial.org/pbot/35843
mncharity woops, 5pm. draft ^^. comments encouraged. 21:13
/me wonders if the "So what?" section is too... something.
pmurias ruoso: Signature::Adhoc can replace Signature::BlockDefault
mncharity And the "big picture" section... sigh. 21:14
not really part of a quarterly report.
ruoso pmurias, yes, indeed... but BlockDefault is used in too many places... having it as a type on its own is probably not a bad idea 21:15
mncharity but since the whole point of elf is to attract developers... shrug.
japhb pmichaud: previous fork pull request now resubmitted as rakudobug with patch 21:17
mncharity thoughts, comments, anything? 21:20
on or off channel
pmurias mncharity: what's the connection between the education system and Perl 6? 21:21
ruoso: we can have a $BlockDefault signature 21:22
ruoso yeah... maybe... but it doesn't need to be exposed in the lexical scope
it's s1p code that needs it
pmurias the exceptions could be in perl 6? 21:23
ruoso it's mostly in mold already
but there are some fallbacks that are written in C 21:24
mncharity ok, yank that paragraph. I repeated encounter the concept, well, two variants - Hs and CL users saying "sure everyone not using our great language is screwed, who cares?", and others saying "sure there are powerful language features out there that my favorite language doesn't have, but I like it, it has a nice community, so who cares?". the paragraph was an attempt to address those.
ie, fundamentally, why does it matter that software development ceases to be a crippled disaster.
and the related, why does the "we'll just reimplement the world in our language X" not suffice. 21:26
ruoso mncharity, btw... in SMOP all the lowlevel implementations are seen as "bootstrap throwaway" (except for the native types)
mncharity awesome. good to know. 21:27
pmurias it should be possible to write the s1p in Perl 6 when we can emit sufficently native code 21:28
mncharity s1p?
pmurias looks up what the acronym means 21:29
mncharity need a lambdabot p6 abbreviation dictionary :)
pmurias i think it meant the stage 1 Perl
mncharity s/need/fun to imagine/
pmichaud for those testing the new "has icu" -- you can tell it's working if you (a) don't have icu and S02-literals/char-by-name isn't tested, or (b) have icu and S02-literals/char-by-name is tested. 21:30
pmurias we use it to call the set of classes we need in C
jnthn pmichaud: No ICU here, and no fails as a result of your patch.
pmichaud (when running "make spectest")
ruoso mncharity, yes... s1p (read swamp) is the the first stage implementation of the Perl 6 types
jnthn (And one fail as a result of my locals. fail.)
pmichaud jnthn: excellent. The only place where a failure might occur at this point is S02-literals/char-by-name. But I'm about to add another batch. 21:31
ruoso mncharity, it should be thrown away (actually, not away, just deep inside the bootstrapping) as soon as we get the typesystem bootstrapped
mncharity, which is why we already have a CORE in Perl 6, so early in the proces 21:32
eiro wow! unitary tests are usefull to understand syntax! :)
ruoso eiro, TDD people belive the test is the documentation
eiro :) 21:33
jnthn pmichaud: No, for sure no fails there.
21:34 dKingston joined
ruoso mncharity, in fact, if pmurias' proposal get accepted in SoC, it will get us much closer of having a incredibly bigger set of the CORE written in Perl 6 21:34
21:35 nihiliad left
mncharity ruoso: anything about "Big picture" you'd like changed from a smop perspective? 21:36
jnthn/pmichaud: same question vis rakudo. it ended up a rather general "come, help with p6!" monster. 21:37
pasteling "mncharity" at 98.216.110.149 pasted ""So what?" redraft pmurias++" (12 lines, 844B) at sial.org/pbot/35844 21:40
eiro rafb.net/p/vGOVMY94.html 21:44
my first (almost) working parser
failed with
> perl6 posixAccount.p6
Method 'close' not found for invocant of class 'IO'
current instr.: 'close' pc 19354 (src/builtins/io.pir:93)
lambdabot Not in scope: `perl6'Not in scope: `posixAccount'Not in scope: `p6'
mncharity lol 21:45
pmichaud mncharity: from a rakudo perspective, the new draft is much improved. Thanks for the effort.
(overall it's also much improved, but I particularly appreciate the way rakudo is presented.) 21:47
mncharity ok. danke 21:49
pmurias mncharity: you belive that by writing better educational software the school system will be improved?
japhb pmurias: I believe that is the fundamental belief of Sugar Labs ... 21:50
eiro grammar.parsefile works ?
mncharity re improved, yes, definitely. OLPC... well, olpc had lots of problems. but "python is the best language we have to work with" was a big one. 21:51
japhb Redhat influence, mayhaps?
mikehh t/spec/S02-literals/char-by-name.rakudo passes on rakudo (07af82b) on parrot r37894
pmurias shower&
mikehh t/spec/S02-literals/char-by-name.t fails on Unrecognized character name LINE FEED at offset 616, found 'L' 21:52
mncharity the difference between "repeat after me class, a virus is a ...", and surfing over to wikipedia to play with the 3d dynamic interactive models of viruses... is not small.
pmichaud I'm not sure that "LINE FEED" is a valid unicode character name. 21:54
At least, ICU (the way I'm using it) doesn't seem to recognize it as one.
I haven't found a way to make it work yet, and perhaps it needs a message to p6l. 21:55
mncharity unicode.org/charts/charindex.html
doesn't look like it
oops 21:56
wrong page. unicode.org/charts/charindex2.html 'tis.
pmichaud that's apparently a "character name alias"
21:56 PhatEddy left
pmichaud I haven't found out how to get ICU to translate character name aliases. 21:57
mncharity 000A <control> = LINE FEED (LF) = new line (NL), end of line (EOL)
eiro good nigh all
pmichaud correct -- the name is actually "LINE FEED (LF)"
eiro (thx for help)
mncharity ah
g'night
pmichaud and ICU correctly recognizes that one (as does Rakudo now)
mncharity eep. unicode - a whole world of linguistic pain. 21:58
pmichaud yes, which is why I like punting the pain to ICU.
gone for a while -- taking daughter to fencing lessons :-) 22:01
mncharity fencing++ 22:03
japhb aikido++
22:04 ejs joined
japhb "My dad can make sure your dad doesn't kick my ass." 22:04
mncharity vs rugby, which is sort of a mutual bloodletting? 22:08
japhb Any sport where you have to tape your ears to your head or risk having them ripped off ... isn't far from bloodsport. 22:09
22:10 ejs left
mikehh even in cricket you get to wear helmets these days 22:11
japhb Note: I personally think rugby is a much more "real" sport than American rules football ... but you'd not catch me playing full contact versions of either one, these days. 22:12
mncharity ok, draft off to Boston.pm for comment. 22:13
mikehh haven't played either since my schooldays - way too many years ago 22:14
mncharity fun concept: pedagogic puppet patypi. (re flexible OO). William.Ricker++
22:17 pmurias left
mncharity thanks all for the help. g'night & 22:18
22:18 mncharity left 22:30 Limbic_Region left 22:41 alester left
mikehh rakudo (07af82b) builds on parrot r37894 - make test/make spectest PASS - Kibuntu Intrepid i386 22:50
22:57 exodist left 23:04 ashizawa left 23:07 ashizawa joined 23:10 Sepheebear left 23:25 Limbic_Region joined 23:26 meppl left 23:27 ab5tract joined 23:28 wayland76 left 23:29 wayland76 joined, Guest19007 joined 23:31 Guest19007 left 23:55 kidd left