Camelia, the Perl 6 bug

IRC log for #parrot, 2008-05-20

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:27 wknight8111 joined #parrot
00:33 kid51 joined #parrot
00:39 tedkat joined #parrot
01:01 DietCoke TimToady: I'm staring at that email trying to see what you changed.
01:05 TimToady s/a/e/
01:05 cjfields joined #parrot
01:05 DietCoke ... wow. really. I even went into view raw source and I failed to see that. =-)
01:05 DietCoke thank you. =-)
01:09 Theory joined #parrot
01:24 jhorwitz pmichaud: looks like trapping the exception willl work.  should've thought of that before!
01:33 Psyche^ joined #parrot
02:07 teknomunk joined #parrot
02:31 * DietCoke gets a successfull test run on freebsd.
02:48 particl1 joined #parrot
02:49 particl1 left #parrot
02:56 rdice joined #parrot
03:16 particl1 joined #parrot
04:01 barney joined #parrot
04:09 dalek r27654 | chromatic++ | trunk:
04:09 dalek : [distro] NEWS updated; languages need more updates from language maintainers.
04:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27654
04:20 particl1 left #parrot
04:22 grim_fandango joined #parrot
04:31 dalek r27655 | bernhard++ | trunk:
04:31 dalek : More detailed NEWS on Eclectus and Plumhead
04:31 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27655
04:56 Psyche^ joined #parrot
05:03 dalek r27656 | chromatic++ | trunk:
05:03 dalek : [JIT] Temporarily disabled JIT for div_n_nc and div_i_ic ops; until PIR
05:03 dalek : optimizer throws an exception on these ops when dividing by zero (or they get
05:03 dalek : JITted to do the right thing then), they'll cause floating point exceptions.
05:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27656
05:31 Zaba_ joined #parrot
05:37 bacek_ joined #parrot
06:13 nopaste "cognominal" at 82.67.232.89 pasted "problem with unicode" (47 lines) at http://nopaste.snit.ch/13020
06:16 uniejo joined #parrot
06:16 cognominal This is perl, v5.8.8 built for darwin-thread-multi-2level btw
06:30 teknomunk_ joined #parrot
06:45 ank joined #parrot
06:48 iblechbot joined #parrot
06:53 dalek r27657 | fperrad++ | trunk:
06:53 dalek : [Lua]
06:53 dalek : - fix test with luac2pir.pir
06:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27657
06:53 dalek r27658 | fperrad++ | trunk:
06:53 dalek : [Lua]
06:53 dalek : - bytecode translation : minor refactor
06:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27658
07:06 dalek r27659 | fperrad++ | trunk:
07:06 dalek : More detailed NEWS on Lua
07:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27659
07:26 integral joined #parrot
07:28 mj41 joined #parrot
07:56 zarchne joined #parrot
07:56 dcat joined #parrot
07:56 ewilhelm joined #parrot
07:56 obra joined #parrot
07:56 cotto-work joined #parrot
07:56 DietCoke joined #parrot
07:56 Ademan joined #parrot
07:56 avar joined #parrot
07:56 Piper joined #parrot
07:56 bacek joined #parrot
07:56 rgrjr joined #parrot
07:56 contingencyplan joined #parrot
07:56 particle joined #parrot
07:56 TimToady joined #parrot
07:56 tewk joined #parrot
07:56 cxreg joined #parrot
07:56 rhr joined #parrot
07:56 cout joined #parrot
07:56 Hinrik joined #parrot
07:56 shamu joined #parrot
07:56 cotto_home joined #parrot
07:56 workbench joined #parrot
07:56 GeJ joined #parrot
07:56 zev joined #parrot
07:56 toft joined #parrot
08:38 Zaba joined #parrot
08:53 dalek r27660 | fperrad++ | trunk:
08:53 dalek : [PLATFORMS]
08:53 dalek : - update for MinGW32
08:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27660
09:15 IllvilJa joined #parrot
09:36 bacek hi there
09:39 bacek I've investigated 'cmp bug'.
09:40 bacek Actually, when we creates variables of subclass of Integer they are just Objects inside of parrot.
09:41 bacek So, PMC_get_int doesn't work as supposed in src/pmc/integer.pmc.
09:41 bacek On replacing PMC_get_int with VTABLE_get_integer everything works.
09:42 jonathan bacek: Sounds like a correct fix.
09:42 bacek But it looks like another bug: we actually call Parrot_Integer_cmp not on Integer class.
09:42 jonathan No, that is the cmp vtable method of the Integer class.
09:42 bacek But should be SELF be Integer?
09:43 bacek s/be//
09:44 jonathan Yeah, in fact maybe you should be writing SELF.get_integer, which will produce a call through real_self, but all of that lot is meant to eventually go away.
09:45 bacek jonathan, ok. I'll create patch for src/pmc/integer which will call VTABLE_get_integer instead of PMC_get_int.
09:45 bacek But it will slow down computations.
09:47 jonathan Sure, that's what abstractions do. :-)
09:48 bacek :)
09:48 jonathan We may just write out own Int PMC for Rakudo in the end or something.
09:48 jonathan We sorta-ish need it to inherit from Any, is the thing.
09:48 bacek Ho. actually all other methods uses SELF.get_integer()
09:49 bacek So looks like this is "right way" :)
09:49 jonathan Yeah, I think that dispatches by real self (as in, to the Object, not just to the Integer), so it sees any overrides.
09:50 bacek jonathan, indeed
09:51 bacek what about methods like set_integer_native? Should whey use virtual dispatch?
09:52 jonathan Does that actually dispatch?
09:52 jonathan I'd have thought that just set the value in the struct?
09:52 jonathan Oh, do you mean calls to set_integer_native rather than the method itself?
09:52 bacek jonathan, yes
09:53 jonathan Oh, yes, calls should be virtual, otherwise things go horribly wrong for subclasses.
09:53 bacek jonathan, got it.
09:53 jonathan Well, any subclass that overrides that method and expects to have it called anyway.
09:56 bacek jonathan, ok. So all 'getters' except in get_integer should call SELF.get_integer() instead of PMC_int_val. 'setters' still have to use PMC_int_val. Correct?
10:01 jonathan Hmmm. I'd have expected to be able to override set_integer as well, perhaps...
10:02 jonathan What 'setters' are you thinking of?
10:02 bacek VTABLE void thaw(visit_info *info) {
10:02 bacek IMAGE_IO * const io = info->image_io;
10:02 bacek SUPER(info);
10:02 bacek if (info->extra_flags == EXTRA_IS_NULL)
10:02 bacek PMC_int_val(SELF) = VTABLE_shift_integer(INTERP, io);
10:03 bacek or it should be changed to SELF.set_integer(...)?
10:03 jonathan I'd leave thaw as it is.
10:03 jonathan Here we're trying to deserialize and just put the data back in place.
10:05 bacek jonathan, there is total 12 places where PMC_int_val is in use (after my changes). And I have no idea should I change them or not...
10:08 jonathan I suggest, send in a patch with the ones you're sure about, and mention those you aren't and ask for opinions.
10:08 bacek http://pastebin.org/37243
10:08 bacek Looks like it is long mailqueue on RT...
10:09 moritz 12:08 < cognominal_> rakudo: my @a = (1);  say @a[0];
10:09 moritz 12:08 < exp_evalbot> OUTPUT[get_pmc_keyed() not implemented in class  'Integer'#current instr.: '_block11' pc 43
10:10 moritz that's quite nasty :/
10:10 cognominal I filed a bug and pmichaud is aware of it
10:10 bacek I'm 90% sure in patch on pastebin. I'll create another one for "im-not-definetly-that-this-is-right-thing"
10:10 moritz cognominal: ok
10:11 cognominal this is these small things known by the implementors but drives the beginner crazy.
10:13 jonathan They are also the things that look like they should be trivial to fix, but are a lot more subtle than you'd think.
10:15 bacek jonathan, exactly...
10:17 cognominal jonathan, I know because I tried :)
10:18 cognominal and my try was messy and wrong.
10:19 cognominal jonathan++ and pmichaud++  to explain me my errors
10:34 bacek jonathan, ok. There is methods: set_pmc, set_integer_same, set_integer_native, increment, decrement, thaw which uses PMC_int_val.
10:34 bacek Plus init and initialize
10:34 bacek And RT#46627...
10:37 bacek So, should be MMD_Integer_EXACT used for check or this ticket outdated?
10:39 davidfetter joined #parrot
10:44 kid51 joined #parrot
10:48 ruoso joined #parrot
10:50 bacek jonathan, ?
10:51 jonathan sorry sorry, $DAYJOB is distracting me...
10:51 jonathan Got a link to that RT ticket?
10:52 jonathan BTW, method list that touch the value directly seem reasonable to me.
10:53 bacek http://rt.perl.org/rt3/Tic​ket/Display.html?id=46627
10:53 bacek In src/pmc/integer.pmc:add() there is the todo item:
10:53 bacek * TODO
10:53 bacek * check for exact Integer type
10:53 bacek * e.g. MMD_Integer_EXACT
10:53 bacek jonathan, It's almost 9pm in Sydney :)
10:53 bacek so my $dayjob already done
10:55 jonathan Ah, about 1pm here in Slovakia, so it's very much in progress here :-)
10:55 bacek BTW, Is different contexts implemented in rakudo? like ~@list?
10:55 jonathan I know +@list works
10:55 bacek jonathan, hey. It's lunch time!
10:55 jonathan Oh yeah!
10:56 jonathan Hmmm...I guess it depends if EXACT means it really is this very same class, or if it could be a subclass.
10:56 jonathan Not 100% sure on that, sorry.
10:57 jonathan I suggest either investigate, or comment on the ticket (cc'd to list) to get an answer.
10:57 bacek Ok.
11:02 bacek http://rt.perl.org/rt3/Tic​ket/Display.html?id=54474 'cmp bug' with proposed patch
11:03 rdice joined #parrot
11:22 dalek r27661 | allison++ | pdd25cx:
11:22 dalek : [pdd25cx] Bringing the pdd25cx branch up-to-date with trunk r27660.
11:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27661
11:34 ambs joined #parrot
11:34 ambs \o/
11:37 ambs DietCoke++ #finally answered my email
11:39 cognominal (positive reenforcement)++
11:39 ambs :D
11:41 cognominal we are all pavlovian programmers
11:41 * cognominal sweeps his keyboard
11:43 iblechbot joined #parrot
11:47 jonathan cognominal: I've just over lunch thought up a temporary and small hack to make "my @a = (1);  say @a[0];" work...will give it a go later on today. Gotta sort out $dayjob stuff right now...
11:48 cognominal jonathan, check your mail
11:48 cognominal it seems there is a possibility of double room
11:49 jonathan Ah, OK
11:49 jonathan I'll take whatever I can get to sleep on! :-)
11:49 jonathan When I tried to book online I got a "no rooms available"...
11:49 cognominal my hack works if you leave out the "( )" case, second parameter of the action
11:50 cognominal I don't say it's clean
12:15 tewk joined #parrot
12:18 AndyA joined #parrot
12:19 Psyche^ joined #parrot
12:33 tetragon joined #parrot
12:56 * bacek start loving assembler again.
12:56 bacek http://rt.perl.org/rt3/Tic​ket/Display.html?id=54514
12:57 bacek Implementing mergesort on such level is old good fun.
12:57 bacek Like hacking soviet clone of PDP-11 back in 80-s :)
12:58 DietCoke bacek: any reason why you're redoing it in PIR when there's a version in C already?
12:58 DietCoke (I ask because I just threw out language/tcl's PIR version of sort in favor of the C version. =-)
12:58 bacek DietCoke, It's fun! :)
12:59 DietCoke I cannot argue with that. =-)
13:00 bacek DietCoke, and its mergesort. Not quicksort.
13:00 DietCoke If you want to see tcl's usage, check out languages/tcl/runtime/builtin/lsort.pir , look for 'sort' with the quotes. (I'm passing in a comparator function that's written in PIR)
13:00 moritz bacek++ # -Ofun
13:00 DietCoke but otherwise carry on.
13:04 Khisanth joined #parrot
13:04 spinclad joined #parrot
13:04 Tene joined #parrot
13:04 zostay joined #parrot
13:04 TonyC joined #parrot
13:04 nopaste joined #parrot
13:04 diakopter joined #parrot
13:04 purl joined #parrot
13:04 japhb joined #parrot
13:04 silug joined #parrot
13:04 Eevee joined #parrot
13:04 Sartak joined #parrot
13:04 dngor joined #parrot
13:04 jjuran joined #parrot
13:04 jjore joined #parrot
13:04 confound joined #parrot
13:04 Infinoid joined #parrot
13:04 bacek DietCoke, hmm... You invoke $P0.'sort'.
13:04 bacek DietCoke, how it call to Parrot_quicksort.
13:04 bacek I just can't find it...
13:04 pmichaud bacek:  the ResizablePMCArray PMC already knows how to 'sort'
13:05 pmichaud i.e., doing  $P0.'sort'  on a ResizablePMCArray ultimately calls Parrot_quicksort
13:06 pmichaud src/pmc/fixedpmcarray.pmc, lines 41-46
13:06 bacek > ('a',1,'b',2).sort.say
13:06 bacek Method 'sort' not found for invocant of class 'List'
13:06 bacek its in rakudo...
13:06 pmichaud well, one would have to pass a comparison function to sort
13:06 pmichaud it doesn't have a default
13:07 pmichaud still, I'm surprised that it gives "Method 'sort' not found"  -- just a sec
13:07 bacek pmichaud, ok. i'll try it
13:09 pmichaud very interesting.
13:09 purl it has been said that very interesting. is that a quote?
13:10 pmichaud Apparently the 'sort' method doesn't get inherited by subclasses of ResizablePMCArray .
13:10 pmichaud (such as 'List')
13:10 bacek pmichaud, heh...
13:11 nopaste "pmichaud" at 76.183.97.54 pasted "'sort' not inherited by subclasses of RPA" (27 lines) at http://nopaste.snit.ch/13022
13:11 bacek pmichaud, Can't find 'sort' in "Resizable"... But can in 'Fixed'...
13:12 pmichaud ResizablePMCArray isa FixedPMCArray
13:12 pmichaud see line 25 of resizablepmcarray.pmc
13:12 pmichaud pmclass ResizablePMCArray extends FixedPMCArray need_ext provides array {
13:12 bacek pmichaud, a! Got it...
13:13 * pmichaud does a double-take
13:13 pmichaud oh this is totally bizarre
13:13 Zaba joined #parrot
13:13 pmichaud big bug :-)
13:14 particle did we make the conversion from DYNSELF to SELF?
13:14 * bacek hides
13:14 particle it may be that you need to say DYNSELF.some_vtable_function for inheritance to work
13:14 nopaste "pmichaud" at 76.183.97.54 pasted "'sort' not inherited by subclasses of RPA, but 'push' is" (27 lines) at http://nopaste.snit.ch/13023
13:14 particle part of the pmc pdd is to convert DYNSELF to SELF and SELF to STATICSELF
13:15 pmichaud I'm guessing that superclass methods aren't being inherited properly
13:15 pmichaud i.e., given that RPA is a PMC class and RPA inherits from FPA
13:16 pmichaud if we create a subclass of RPA, then the methods of FPA aren't being included in the subclass
13:16 particle perhaps.
13:16 particle you can test by creating a subclass of FPA
13:16 particle see if sort works
13:16 pmichaud oh, good idea.
13:16 purl pmichaud: Good Idea: Visiting the circus. Bad Idea: Having the circus visit you.
13:18 pmichaud ah, it's more complex than that.
13:19 pmichaud bacek:  short answer:  until we get inheritance working, we need a 'sort' method for rakudo :-)
13:19 pmichaud bacek: however, you could copy all of the elements of a list into a FixedPMCArray, and then use its sort method
13:20 bacek pmichaud, oooo... Good answer :)
13:20 pmichaud and then cast that back into a List
13:20 particle that won't work with lazy lists, but we don't implement those yet
13:21 particle well, i suppose it will work... just need to make it unlazy before conversion to FPA
13:21 pmichaud correct
13:21 bacek ok. Is there anything useful that "casual developer" can implement for rakudo?
13:21 pmichaud hard to sort a lazy list :-)
13:21 pmichaud except in special cases
13:21 bacek pmichaud, why? Just use old good bubble-sort
13:22 pmichaud well, we can sort a lazy list, but it's no longer lazy.
13:22 particle bacek: look for functions from S29 that aren't implemented
13:22 bacek particle, 'sort' for example? :)
13:22 pmichaud also, note that the 'sort' method is an inplace sort
13:22 pmichaud (in FixedPMCArray)
13:22 pmichaud let me finish updating NEWS, then I'll file a ticket for 'sort'
13:23 particle pmichaud: can we implement gather/take yet?
13:23 * particle updates and checks roadmap
13:23 pmichaud particle: I haven't really looked at it yet.  That would be way down the list on roadmap, though
13:23 moritz you need some sort of dynamic scoping for gather/take
13:24 moritz even if it's just global variable in the interpreter of some sort
13:24 particle that we can do
13:24 pmichaud oh, dynamic scoping isn't too hard
13:24 pmichaud that's pretty easy in Parrot.
13:24 * bacek start thinking that implementing sort as creating FPA is good idea...
13:24 Khisanth joined #parrot
13:24 spinclad joined #parrot
13:24 Tene joined #parrot
13:24 zostay joined #parrot
13:24 TonyC joined #parrot
13:24 nopaste joined #parrot
13:24 diakopter joined #parrot
13:24 purl joined #parrot
13:24 japhb joined #parrot
13:24 silug joined #parrot
13:24 Eevee joined #parrot
13:24 Sartak joined #parrot
13:24 dngor joined #parrot
13:24 jjuran joined #parrot
13:24 jjore joined #parrot
13:24 confound joined #parrot
13:24 Infinoid joined #parrot
13:25 moritz actually sort() could return a lazy list
13:25 pmichaud bacek:  for now I'd be happy with any 'sort' implementation that works, whether it uses the one in FPA or not.
13:25 moritz than it could run in O(n) if you only take the first or first two items
13:25 moritz and O(n log n) if you take them all
13:26 pmichaud well, taking only the first item is effectively    "min"  :-)
13:27 pmichaud but yes, it would be possible for sort to return a lazy list.
13:27 particle yep, and O(n) may be very large for list items calculated from values stored in a db
13:27 dalek r27662 | allison++ | pdd25cx:
13:27 dalek : [pdd25cx] Adding new exception type.
13:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27662
13:29 dalek r27663 | pmichaud++ | trunk:
13:29 dalek : Update NEWS.
13:29 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27663
13:31 rdice joined #parrot
13:33 DietCoke pmichaud: (doesn't work) but it works in tcl... odd.
13:33 pmichaud does tcl subclass ResizablePMCArray ?
13:33 DietCoke checking.
13:33 DietCoke yes.
13:34 pmichaud is the subclass a PIR subclass or a PMC subclass ?
13:34 DietCoke PMC
13:34 pmichaud ah, that's the difference.
13:34 DietCoke ISTR there's a ticket about the PIR from PMC not quite working.
13:34 pmichaud yes, but I thought that had been resolved long ago.
13:34 pmichaud but it's not working for superclasses of PMC classes
13:34 DietCoke possibly, but if you're saying it doesn't work...
13:35 pmichaud I have a simple test case written -- just cleaning it up
13:35 DietCoke how do you superclass a PMC? =-)
13:35 DietCoke (test) hokay.
13:35 pmichaud (it's not working for methods of superclasses of PMC classes...)
13:38 nopaste "pmichaud" at 76.183.97.54 pasted "methods in PMC classes and inheritance - b0rken" (39 lines) at http://nopaste.snit.ch/13024
13:39 jonathan Segfault bad.
13:40 pmichaud hmm.
13:40 pmichaud in this case it's because 'lower'() does bad things.
13:40 pmichaud PMC * const    ret = pmc_new_noinit(INTERP, SELF->vtable->base_type);
13:40 pmichaud PMC_str_val(ret)   = s;
13:41 particle excellent test case, pmichaud
13:41 pmichaud so, segfault here is due to the 'lower' implementation, not inheritance.  Let's try...
13:42 jonathan PMC inheritance isn't working yet as PDD 17 spec'd it, I don't think.
13:42 nopaste "pmichaud" at 76.183.97.54 pasted "inheritance b0rken in subclasses of PMCs -- #2" (32 lines) at http://nopaste.snit.ch/13025
13:42 pmichaud well, it works for at least one level.
13:43 pmichaud for example, the 'push', 'pop', etc. methods defined in RPA work for PIR subclasses of RPA
13:43 bacek pmichaud, my version of 'sort' attached to ticket.
13:43 bacek pmichaud, and i try to use FPA...
13:45 jonathan pmichaud: I meant more that, the way it's implemented now.
13:48 pmichaud here we go -- this illustrates it nicely.
13:48 nopaste "pmichaud" at 76.183.97.54 pasted "inheritance b0rken in subclasses of PMCs -- #3" (43 lines) at http://nopaste.snit.ch/13026
13:49 pmichaud filing ticket(s)
13:50 bacek pmichaud, looks like I found another bug...
13:51 bacek bacek@icebolt:~/src/parrot/languages/perl6$ cat s3.t
13:51 bacek my @l = ('a', 'b', 'c', 'd', 1, 2, 3, 4);
13:51 bacek my @l1 = sort { $^b <=> $^a } , @l;
13:51 bacek say ~@l1;
13:51 bacek bacek@icebolt:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc s3.t
13:51 * DietCoke ponders asking ambs to post his script.
13:51 bacek It uses FPA sorting...
13:52 Andy joined #parrot
13:52 bacek http://pastebin.org/37282 impl.
13:56 dalek r27664 | coke++ | trunk:
13:56 dalek : update freebsd
13:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27664
14:06 dalek r27665 | allison++ | pdd25cx:
14:06 dalek : [pdd25cx] Changing name of 'dumpcore' macro to 'DUMPCORE' to match coding
14:06 dalek : standards, with additional comment for clarity.
14:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27665
14:07 jhorwitz joined #parrot
14:09 dalek r27666 | allison++ | pdd25cx:
14:09 dalek : [pdd25cx] Missed one DUMPCORE.
14:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27666
14:10 wknight8111 joined #parrot
14:11 dalek allison@perl.org | Concurrency Tasks:
14:11 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
14:11 shorten dalek's url is at http://xrl.us/bjqpy
14:11 jhorwitz pmichaud: ping
14:16 bacek $ cat s3.t
14:16 bacek my @l = ('a', 'b', 'c', 'd', 1, 2, 3, 4);
14:16 bacek my @l1 = @l.sort;
14:16 bacek say ~@l1;
14:16 bacek $ ../../parrot perl6.pbc s3.t
14:16 bacek 1 a 2 b c 3 4 d
14:16 bacek yeeek...
14:17 particle who's sort is that?
14:17 pmichaud jhorwitz: pong (but has to be quick -- have to go to a lawyer's office in 13)
14:18 bacek FPA
14:18 pmichaud (er, have to *be* at a lawyer's office in 13)
14:18 pmichaud (sort):   what comparison function is being used?
14:18 bacek http://pastebin.org/37282
14:18 bacek infix:cmp
14:18 bacek get_global $P0, "infix:cmp"
14:18 bacek sorted = 'sort'($P0, list :flat)
14:18 pmichaud oh.  perhaps infix:leg would be a better choice, since we know that parrot's 'cmp' isn't good.
14:19 jhorwitz pmichaud: catching the exception worked
14:19 bacek pmichaud, same results
14:19 pmichaud jhorwitz++  # excellent
14:19 jhorwitz all tets pass, should i commit or wait for after the release?
14:19 jhorwitz tests
14:19 pmichaud I think committing is okay.  Or it can wait for the release -- your choice.
14:20 particle be careful with core parrot changes
14:20 particle language changes are ok
14:20 pmichaud TimToady++ helped get jonathan and I set aright on how to handle the $!, $/, $! items
14:20 jhorwitz particle: this is for rakudo
14:20 particle ship it!
14:20 jhorwitz giddyup
14:20 pmichaud language changes are okay, yes, but we'd still like to make sure that rakudo passes 'make test' in a release.
14:20 * bacek voting for http://rt.perl.org/rt3/Tic​ket/Display.html?id=54514
14:20 jonathan Aye, I may well look at that tomorrow
14:20 jonathan ($1, etc, not the ticket just pointed at...)
14:20 particle pmichaud: yes, and i'll run make test :)
14:21 jonathan erm, $!
14:21 pmichaud gotta run to lawyers -- bbiaw
14:22 jonathan bacek++ # sort patch
14:22 dalek allison@perl.org | Concurrency Tasks:
14:22 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
14:22 shorten dalek's url is at http://xrl.us/bjqpy
14:23 bacek and http://rt.perl.org/rt3/Tic​ket/Display.html?id=54474
14:24 bacek oops.
14:24 Psyche^ joined #parrot
14:24 bacek compiler complains about 54474
14:27 davidfetter joined #parrot
14:30 Tene Okay, I'd really like to figure out all the issues with properly handling $_ as a block parameter.
14:31 Tene Maybe I should send mail to the list.
14:31 particle did you see timtoady, jonathan, and pmichaud talking last night about $_?
14:31 particle the answers lie within
14:32 Tene Fantastic!
14:32 NotFound joined #parrot
14:32 Tene Last night was perhaps the wrong night to take a break.
14:32 NotFound Hello.
14:32 Tene particle++ # information!
14:33 * Tene scrollback
14:33 purl scrollback is your friend
14:36 dalek r27667 | jhorwitz++ | trunk:
14:36 dalek : catch 'No such caller depth' when subs are called from embedded environment (RT #54444)
14:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27667
14:38 radhios joined #parrot
14:39 bacek 27666 crashes on make test...
14:45 Tene Okay, that's some good reading for lunch.
14:45 bacek Failed 5/584 test programs. 19/11275 subtests failed.
14:45 * bacek looser...
14:45 purl it has been said that looser is an adjective
14:48 bacek please anyone check patch in  http://rt.perl.org/rt3/Tic​ket/Display.html?id=54474. I'm not sure about correctness...
14:52 * Tene looks.
14:52 Tene integer2.diff?
14:53 bacek Tene, yep
14:54 Tene Does it cause any new test failures?
14:55 Tene I don't see any problems with it.
14:55 bacek Tene, I'm running tests right now... It takes a long time...
14:55 * Tene nods.
14:55 Tene Hm.  I've got an eight-cpu box at my office... I should run tests there.
14:55 * Tene bbiab
14:56 bacek I run them on my old laptop... 10 minutes... I... can't... wait... any... more...
14:57 bacek $ prove t/pmc/integer.t
14:57 bacek t/pmc/integer......ok
14:57 bacek All tests successful.
14:57 purl Are you feeling lucky?
14:57 dalek r27668 | allison++ | pdd25cx:
14:57 dalek : [pdd25cx] Change 'push_new_c_exception_handler' to 'Parrot_ex_add_c_handler',
14:57 dalek : and remove 'new_c_exception_handler'.
14:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27668
14:58 bacek My middle name is 'bad'...
14:58 Tene bacek: looks okay to me, then.
14:58 bacek purl, whanna cookie?
14:58 purl i don't know, bacek
14:59 bacek Tene, it's good.
14:59 bacek purl, cookie?
14:59 purl C is for cookie, it's good enough for me!
14:59 dalek allison@perl.org | Concurrency Tasks:
14:59 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
14:59 shorten dalek's url is at http://xrl.us/bjqpy
14:59 Tene purl: no, C is for lettuce, it's good enough for me!
14:59 purl okay, Tene.
14:59 Tene Hm, that was the wrong factoid.
14:59 Tene Oops.
15:00 bacek purl, say squaak
15:00 purl bacek: i'm not following you...
15:03 bacek Tene, same number of failing tests.
15:03 bacek Files=584, Tests=11275, 501 wallclock secs...
15:10 bacek ok. time to sleep.
15:21 Theory joined #parrot
15:24 pmichaud jhorwitz: ping
15:24 jhorwitz pmichaud: pong
15:24 pmichaud jhorwitz: can we close #54444 ?
15:24 jhorwitz i was thinking about that.  i guess we can, unless we want to question the behavior of $P0['lexpad';1]
15:24 jhorwitz that could be a separate ticket though
15:25 pmichaud I think it's reasonable to question $P0['lexpad';1], but that probably belongs in the parrot queue.
15:25 pmichaud so yes, it'd be a separate ticket.
15:25 jhorwitz the let's close it out!  :)
15:25 pmichaud and it may be a moot point anyway, given how $! $/ $_ are to be handled so I think we just close it.
15:25 jhorwitz sounds good to me.
15:25 * pmichaud likes seeing tickets get closed.
15:26 davidfetter mmm...closed tickets :d
15:26 * jhorwitz likes 24 hours turnarounds  :)
15:26 pmichaud it will be an interesting milestone when rakudo has more outstanding tickets than parrot :-)
15:26 * davidfetter figures outstandingness is in the eye of the beholder
15:27 particle pmichaud: 'say False' doesn't work.
15:27 particle Bool::False, sure.
15:28 pmichaud rt#54444 closed.
15:28 pmichaud where is 'False' defined?
15:28 pmichaud is it an imported global, or ... ?
15:28 particle src/classes/Bool.pir
15:28 purl src/classes/Bool.pir is where i was looking
15:28 pmichaud no, I mean in the spec.
15:29 particle ah. gotta check that.
15:29 pmichaud S12
15:29 pmichaud our bit enum *bool <False True>;
15:29 pmichaud our bit enum *taint <Untainted Tainted>;
15:29 particle hrmm. we don't do enum now.
15:29 particle or bit, for that matter
15:30 pmichaud for now, just create global entries for False and True that point to 0 and 1
15:30 particle so, for the spectests, should i modify them to use Bool::False except when explicitly testing False?
15:30 particle ...or should i create globals in Bool.pir?
15:30 particle or both?
15:30 purl both are highly experimental at this point though
15:31 pmichaud create globals.
15:31 particle forget both
15:31 purl particle: I forgot both
15:31 particle ok.
15:31 pmichaud "ack False" shows that it occurs enough in the spec that we might as well create the global.
15:32 pmichaud jonathan might be interested in implementing enums, since they're really just classes acting as roles :-)
15:33 jonathan Ooh! Shiny feature!
15:33 pmichaud but for now I think it's a reasonable workaround to create these as globals.
15:34 pmichaud how often does False appear in the spectests?
15:35 particle i'm looking at S03-operators
15:35 particle haven't looked outside there yet
15:35 particle not.t and true.t, and i'll be adding some tests, and probably false.t
15:35 particle hrmm. maybe not. is there a 'false' op?
15:35 pmichaud S12 has:
15:36 * particle acks spec
15:36 pmichaud Never compare a value to "C<true>", or even "C<True>".  Just use it
15:36 pmichaud in a boolean context.
15:36 pmichaud so, I think that S03-operators is wrong to be using False here
15:36 pmichaud if we're testing boolean-ness, we should be using ok() or nok()
15:37 particle ok, so that should be nok() yep
15:37 pmichaud if we're testing the type of the returned value, we need to use =:= or something similar
15:37 pmichaud or check the .WHAT() value, or something like that.
15:37 pmichaud (and =:= doesn't quite work in rakudo yet)
15:38 particle may i check that Bool::True != Bool::False?
15:38 pmichaud sure
15:38 particle or that True == Bool::True?
15:38 pmichaud keeping in mind that  True == Bool::True is really the same as   +(True) == +(Bool::True)
15:39 pmichaud i.e., it's a numeric comparison, not a value comparison.
15:39 particle yep
15:39 pmichaud I think more useful is to ask   Bool::True == 1
15:39 particle in not.t, i want to test explicitly that True != False, etc
15:39 particle we can't guarantee that Bool::True == 1 can we?
15:40 particle it may depend on the vm/compiler/platform's identity of truth
15:40 pmichaud it's a question of numification
15:41 particle ok, then it's +Bool::True == 1
15:41 pmichaud except that infix:<==>  implies numeric context on its arguments
15:41 pmichaud so Bool::True == 1
15:42 particle hrmm. ok.
15:42 pmichaud I can't find that explicitly in the spec, fwiw.
15:42 particle ah. === can't be tested, though
15:42 particle or =:=
15:44 pmichaud the spec does say that Order::Increase, Order::Same, Order::Decrease numerify to -1, 0, +1,   so I think it's reasonable to expect Bool::False and Bool::True to numerify to 0, 1
15:44 Tene 1, 0, -1 == Bool::True, Bool::False, Bool::FileNotFound?
15:45 pmichaud heh
15:45 pmichaud FileNotFound is likely an exception of some sort, though.
15:45 moritz lol
15:45 particle i'm kinda surprised Bool::True isn't a Failure
15:45 pmichaud Bool is, though.
15:48 dalek Michal Jurosz | RFP: Parrot Needs Better Smoke Reports:
15:48 dalek link: http://www.perlfoundation.org/parrot/index​.cgi?rfp_parrot_needs_better_smoke_reports
15:48 shorten dalek's url is at http://xrl.us/bfeof
15:52 pmichaud oh, I guess Bool is just an undefined value -- that's not necessarily a Failure.
15:56 cjfields joined #parrot
16:04 Tene Mmm.  make -j 9 test
16:09 Tene real3m6.804s
16:09 Tene user1m51.388s
16:09 Tene sys0m45.239s
16:14 particle hrmm, there's no nok() func in fudge or Test.pm
16:18 Tene Hm.
16:18 Tene I wonder if rakudo makes a new block for this: print $_ for @a;
16:21 particle i expect that what's left of 'for' is a closure
16:21 purl I hardly KNOW her.
16:21 Tene Yeah.  That makes sense.
16:25 Tene 17:07 <@TimToady> and the presence of $_ is not enough to force "I must have a parameter"
16:25 Tene A bare closure without placeholder arguments that uses $_ (either explicitly or implicitly) is treated as though $_ were a formal parameter:
16:25 Tene From S04
16:25 Tene So I guess that statement *only* applies to bare closures.
16:26 Tene Wait, formal parameter with a default of OUTER::<$_>
16:27 Tene So do I need to figure out which blocks are "bare" and treat them differently?
16:28 particle i assume bare means not a sub or pointy block
16:28 Tene Ah.
16:28 Tene So for, while, etc. are bare?
16:29 particle doesn't for take a pblock?
16:29 particle gotta check STD on that
16:29 Tene It can.
16:30 * Tene sleeps.
16:30 Tene erm... no.
16:30 * Tene teaches.
16:30 particle just half your brain sleeps, then.
16:39 DietCoke allison: ping.
16:39 allison dietcoke: ya
16:40 braceta joined #parrot
16:41 DietCoke was going to comment on r27670, but I think I need to see the whole function. moment.
16:41 DietCoke ssh to feather sloooow all of a sudden.
16:44 DietCoke would you mind a small rework on that that instead of nesting the ifs, did each comparison in sequence, failing first rather than last?
16:44 allison sure
16:44 DietCoke also, does it matter if you check base_type -and- isa ?
16:44 DietCoke doesn't base type win?
16:45 allison just the base type is good enough
16:45 DietCoke k.
16:45 allison (it was checking base_type || isa, but that was just wrong
16:46 allison also it was checking base type against a literal, which didn't allow for inheritance
16:46 Zaba joined #parrot
16:46 allison oh, do you want to make the change, or shall I
16:46 DietCoke either or.
16:47 allison go for it, I'm digging into the 'can_handle' bullet point (the last one aside from language testing)
16:48 Psyche^ joined #parrot
16:51 DietCoke is anyone logged into feather? according to ssh I'm connecting, but then hanging.
16:52 particle svn.pugscode.org is down, too
16:54 ambs joined #parrot
17:08 radhios joined #parrot
17:19 jhorwitz hm, getting "attempt to access code outside of current code segment" in my pure perl mod_perl6 code
17:20 * jhorwitz figures out where to even start deubgging that
17:21 particle the joy of embedding parrot....
17:21 jhorwitz it obviously works with the PIR version of mod_perl6
17:21 DietCoke that sounds suspiciously like the inferior runloop!
17:21 particle yes, it does.
17:21 purl if you say so...
17:21 jhorwitz inferior cuz it doesn't work?  ;-)
17:22 DietCoke Sounded like some CS term.
17:22 DietCoke me, being a lowly engineer, just nod my head.
17:22 particle inferior like the flyers.
17:23 jhorwitz that was low
17:23 particle oh, but it was fun :)
17:23 jhorwitz but all will be well when cindy is put in his place
17:27 AndyA joined #parrot
17:30 jhorwitz does each compile and load_bytecode produce a separate code segment?
17:33 particle i believe so
17:34 jhorwitz hm.  then i don't understand how code from one segment can call a sub from a load_bytecode w/o generating that error.  apparently there's lots i don't understand.  :)
17:35 chromatic joined #parrot
17:36 particle oops, i'm probably getting confused with compilation unit
17:36 jhorwitz that would make sense.
17:36 particle chromatic will tell you whether each compile and load_bytecode produce a separate code segment, jhorwitz
17:37 jhorwitz this chromatic...where can i buy one?
17:38 chromatic chromatic store, where else?
17:38 jhorwitz we don't have those out east
17:38 chromatic I *believe* they produce separate packfile structures, which mean separate code segments.
17:38 braceta joined #parrot
17:38 chromatic Okay, the first part I know.  The implication I believe.
17:44 particle remember when jonathan started the bytecode changes, and disappeared for a while?
17:44 particle seems the same thing happened to infinoid.
17:44 particle "don't touch the bytecode pdd."
17:46 * jhorwitz points fingers
17:48 Infinoid oh yeah, pdd13, I still have a stack frame pointing to that, around here somewhere
17:49 DietCoke juerd?
17:49 purl juerd is root or at http://juerd.nl/
17:49 DietCoke juerd email?
17:50 pmichaud joined #parrot
17:51 particle juerd@
17:52 particle juerd is also juerd@juerd.nl
17:52 purl okay, particle.
17:52 pmichaud joined #parrot
17:53 DietCoke emailed him.
17:54 pmichaud feather is incommunicado?
17:54 dalek joined #parrot
17:55 particle yes, so it seems
17:55 pmichaud oh, it just came back up.
17:55 particle here's dalek!
17:55 particle yay
17:55 pmichaud unless it's up-down-up-down-up-down.
17:55 particle well, i finally was able to commit to svn.pugscode.org
17:56 chromatic That's good.  It was sick of you stringing it along.
17:56 pmichaud +34 to #parrotsketch
17:56 chromatic pmichaud, all tests passed using autoboxing for that lower method call you suggested.
17:57 chromatic How urgent is the fix?
17:57 pmichaud not
17:57 pmichaud not urgent
17:57 Tene Ack, #ps in .5
17:57 jonathan joined #parrot
17:57 dalek r27673 | particle++ | trunk:
17:57 dalek : [rakudo] add 'nok' sub to Test.pm
17:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27673
17:57 * Tene svn log | grep tene
17:57 pmichaud I only noticed it while trying to find out about inheritance among pmc types, so I wanted to ticket it before I forgot about it
17:58 pmichaud but in scanning I noticed a number of places where methods are creating return PMCs for base type values and they no longer need to be (and are more robust if they don't)
17:58 chromatic Robust in the sense that PMC_x_val is not robust?
17:59 pmichaud that, plus also the fact that autoboxing honors .hll type mapping
17:59 pmichaud and the fact that it's silly to put the result into a PMC if we're just going to cast it right back to an int
17:59 pmichaud i.e.,  $S0 = $P0.'lower'()   was creating an unnecessary PMC.
18:00 Juerd joined #parrot
18:00 chromatic Makes sense.
18:03 * Tene pre-reports
18:03 Tene I'm not sure if that's the right time interval.  Didn't check the dates.  Sounds right, though.
18:05 particle http://cia.vc/stats/author/tene
18:06 particle the last week has day of week, before that is listed by date
18:06 DietCoke mmm, reduce pmc pressure.
18:06 Ivatar joined #parrot
18:07 Tene Ack, I need to commit my List::uniq patch.
18:07 Tene eh, I'll do it during the middle of the release.
18:08 DietCoke :P
18:08 chromatic If you want to commit now, go ahead.
18:16 braceta joined #parrot
18:17 dalek allison@perl.org | Concurrency Tasks:
18:17 dalek link: http://www.perlfoundation.org/pa​rrot/index.cgi?concurrency_tasks
18:17 shorten dalek's url is at http://xrl.us/bjqpy
18:18 wolverian joined #parrot
18:21 pmichaud joined #parrot
18:26 barney joined #parrot
18:28 DietCoke PS in 2
18:45 DietCoke from juerd:
18:45 DietCoke Yes, Apache2 consumed all memory again. I've stopped apache2, and am
18:45 DietCoke hoping someone will volunteer to figure out what is wrong because I
18:45 DietCoke don't have the time.
18:47 pmichaud how long is apache2 running before it eats up all memory?
18:47 Juerd A few days
18:47 pmichaud okay, looking.
18:48 Juerd If you need root access let me know.
18:48 pmichaud you might not know the answer, but is it the master process consuming all of the memory or one of the subprocesses?
18:48 Juerd I don't know.
18:48 Juerd I know that the linux kernel spits out messages about processes called apache2
18:49 Juerd See http://c14.convolution.nl/munin/per​l6.nl/feather1.perl6.nl-memory.html
18:49 shorten Juerd's url is at http://xrl.us/bkshd
18:49 pmichaud it looks to me as though apache2 is set with "MaxRequestsPerChild 0"
18:49 pmichaud this means that child processes never exit
18:49 pmichaud often that's okay, but it can also mean that memory consumption can grow big if something gets out of whack
18:49 Juerd This started a week ago
18:51 Juerd I set that to 100
18:51 pmichaud is apache2 heavily loaded on feather?  If not, then setting a MaxRequestsPerChild value might be worthwhile to make sure that child processes are recycled
18:51 Juerd pmichaud: Not at all
18:51 dalek r27674 | allison++ | pdd25cx:
18:51 dalek : [pdd25cx] Fix trailing whitespace.
18:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27674
18:51 dalek r27675 | chromatic++ | trunk:
18:51 dalek : Updated PLATFORMS for Aix/PPC and Solaris 10/gcc/cc (Paco, RT #54524).
18:51 pmichaud yes, I'd recommend MaxRequestsPerChild then.  It's not as if there's a huge cost to starting up an additional child every so often
18:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27675
18:51 dalek r27676 | allison++ | pdd25cx:
18:51 dalek : [pdd25cx] Change 'can_handle' in ExceptionHandler to allow for subclasses of Exception.
18:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27676
18:52 dalek r27677 | fperrad++ | trunk:
18:52 dalek : [RELEASE]
18:52 dalek : update LANGUAGES_STATUS.pod from languages-smoke results
18:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27677
18:52 Juerd I've started apache2. To all: if you have any time in between, please run top and evaluate apache2's memory use
18:52 dalek r27678 | fperrad++ | trunk:
18:52 dalek : [RELEASE]
18:52 dalek : update LANGUAGES_STATUS.pod from manual tests
18:52 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27678
18:52 DietCoke Juerd++
18:52 pmichaud Juerd:  I'll check in on it every few hours
18:52 Juerd Great; thank you
19:00 pmichaud Andy: how do I submit an article to rakudo.org, btw?
19:04 Zaba_ joined #parrot
19:04 pmichaud chromatic: I think you should be good-to-go as far as CPAN indexing is concerned.
19:05 chromatic Thank you.
19:10 particle thanks for doing that, pmichaud++, i got distracted by a phone call about a job
19:12 particle pmichaud: i think the mt.cgi link is on perlbuzz to login to rakudo.org
19:12 dalek r27679 | chromatic++ | trunk:
19:12 dalek : [distro] Updated scaffolding for 0.6.2 release.
19:12 pmichaud I try using the mt.cgi link, but it just cycles me back to the perlbuzz page.
19:12 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27679
19:12 particle http://perlbuzz.com/cgi-bin/mt/mt.cgi
19:14 particle well, i can't remember my password, so i'm no help
19:15 Eevee openid++
19:15 dalek r27680 | chromatic++ | trunk:
19:15 dalek : [distro] Added a missing line from NEWS.
19:15 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27680
19:19 pmichaud whenever I follow the mt.cgi link, it asks for my username and password.  I enter it, and it takes me to the "Your Profile" form.  I can go back to the original (perlbuzz) page and I appear to be logged in, but I don't see any way to post a new article.
19:19 pmichaud (and, of course, my goal is to contribute to rakudo.org, not necessarily perlbuzz)
19:20 particle yes, rakudo.org uses the same mt instance, so there's only one login iiuc
19:20 jonathan pmichaud: Maybe you have an accout, but haven't been given permissions to post on rakudo.org?
19:20 pmichaud that's my guess :-)
19:20 jonathan I can't grant you 'em, I already checked that.
19:21 particle bug andy
19:21 pmichaud 19:00 <pmichaud> Andy: how do I submit an article to rakudo.org, btw?
19:21 pmichaud :-)
19:22 particle Andy ack alester perlbuzz splint lint headerizer petdance # all points bulletin :)
19:23 particle ...if that doesn't make his irc client explode...
19:24 Andy Who's talkin' about me?
19:25 pmichaud ALL OF US!
19:25 purl I think that we're all bozos on this bus.  Except of course for the bots.
19:25 Andy CAP'N!  SHE CANNAE TAKE MANY MAR KEYWERDS!
19:25 pmichaud Andy:  how do I submit an article to rakudo.org?
19:25 Andy Let me see if you have permsssions on there.
19:25 Andy Have I given you permissions before?
19:25 pmichaud the group consensus is "probably not"
19:26 pmichaud I thought you had, but perhaps we only talked about it.
19:26 * particle needs a password reset, too
19:26 pmichaud someone suggested that I should cross-post some of my use.perl articles to rakudo.org
19:28 Andy oh yes please.
19:29 * jonathan takes blame for the suggestion
19:29 jonathan pmichaud: I was lying in bed last night trying to sleep and failing to...and thinking about :scope('context')
19:30 jonathan I'm thinking maybe we should do something more general
19:30 pmichaud ...as in?
19:30 jonathan We're already going to need to have a way to cutomize context anyway
19:30 chromatic Release tagged, tarball made and tested, uploading now.
19:31 Andy ok, you're now a contributor on rakudo
19:31 dalek r27681 | chromatic++ | RELEASE_0_6_2:
19:31 dalek : Tagged release 0.6.2 from r27680
19:31 Andy not sure I can reset your PW.  LOoking.
19:31 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27681
19:31 PerlJam joined #parrot
19:31 jonathan :scope('custom'), and some other way to say how to do a get and store
19:31 DietCoke chromatic++
19:31 jonathan chromatic++
19:31 NotFound Someone can take a look at #54384 ?
19:31 confound chromatic++
19:31 confound (everyone else involved, too)++
19:31 Andy ok, I just reset it.
19:31 pmichaud oh.  well, for :scope('custom')  someone could actually do that by deriving a new class from PAST::Val and adding their custom scope as a method
19:32 Andy Password was reset for user 'pmichaud' (user #97). Password was sent to the following address: pmichaud@pobox.com
19:32 chromatic I think creating a new function of a similar name but different behavior is a mistake, NotFound.
19:32 pmichaud Andy:  thanks!
19:32 chromatic I'm starting to wonder if disallowing NULL strings in bytecode is wise.
19:32 jonathan Yeah, true.
19:32 Andy pmichaud: Thank YOU.
19:32 Andy Rakudo.org is happy to have much content.
19:32 pmichaud okay, I have to go pick up kids from school.
19:32 pmichaud bbi30
19:32 jonathan It just seems to me like Perl 6 has very specific needs out of :scope('context')
19:32 jonathan ok, sure
19:33 NotFound chromatic: agree, but I was worried about breaking the pmc that uses the current version.
19:33 pmichaud (context)  well, perhaps Rakudo should be the case that demonstrates adding custom PAST node types then :-)
19:33 pmichaud I just know that I have enough use for context variables in implementing various tools that it has generic value
19:34 jonathan Ah, OK, that was going to be my question...is it generic enough.
19:34 pmichaud a lot of things in PGE and PCT can be made a lot simpler if there's a generic context capability available
19:34 chromatic One problem with adding NULL checks to ops (another idea) is that we have to do those checks in the JIT as well, and that's not trivial.
19:34 chromatic At least, I find modifying ops in the JIT non-trivial.
19:34 DietCoke Is it helpful to put in #line directives in the C generated from PMCs? more often than not it's getting in my way.
19:34 pmichaud I tend to agree that custom handling of null seems wrong.
19:34 pmichaud okay, gotta run. back in a while.
19:34 particle andy: could you reset my pw, too?
19:35 Andy sheesh
19:35 NotFound chromatic: the check is not done at the op level, but at a function called by the opcode.
19:35 Andy ANYONE ELSE?  HUH?
19:35 dalek r27682 | fperrad++ | trunk:
19:35 dalek : [Lua]
19:35 dalek : - bytecode translation : minor refactor
19:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27682
19:35 Tene Andy: mine too!
19:35 chromatic I know.  I'm just brainstorming different approaches.
19:35 particle chromatic++ andy++ surliness++
19:35 Andy Tene: Do you actually have one?
19:35 Tene Well, no.  You used capital letters, though.
19:36 Andy Password was reset for user 'particle' (user #131). Password was sent to the following address: jerry.gay@gmail.com
19:36 NotFound chromatic: I've fixed some days ago a problem caused by that, the opcode function checked for null but the jitted version not.
19:36 Eevee Andy: me too!  (I don't have an account but heckling you seems to be the popular thing to do)
19:36 particle thanks andy!
19:36 Andy You're welcome particle!
19:37 NotFound So doing it in the opcodes is at least error-prone.
19:37 Andy The rest of you can go jump in a lake!
19:37 Andy Rrraaarrr!
19:37 chromatic How about a creek?  I have a creek, not a lake.
19:37 Eevee I have a bathtub
19:37 PerlJam Andy: give me an account so that I too may ask that you reset my password.  :)
19:38 PerlJam and then we can all jump in a creek and splash around like school children
19:38 Eevee there are now more people without accounts asking than people with
19:39 jonathan Will if all of the people asking for them are actually going to post... ;-)
19:40 PerlJam I don't even know what accounts people are talking about, but if it's parrot or perl6 related and I have time, I'll try to post.
19:41 ambs joined #parrot
19:43 Eevee I'm not sure I have anything to say yet that others couldn't say better
19:45 NotFound Eevee: maybe the others can but doesn't.
19:46 PerlJam Eevee: Or maybe your perspective is just as valuable as anyone else's perspective (more so if you share).
19:47 NotFound And in the worst case we can have a lot of fun blaming you }:)
19:48 Eevee oh gosh so much pressure
19:48 barney quit
19:48 jonathan Eevee: If you're contributing stuff, you have a pretty good perscpective on the thing you're contributing. ;-)
19:48 jonathan pressure++ ;-)
19:49 japhb Cue Queen
19:49 NotFound Press any Eevee to continue.
19:50 Eevee they told me about this in middle school
19:50 Eevee I'm supposed to just say no
19:51 Eevee jonathan: when I manage to make it past one patch I will perhaps consider myself 'contributing'  :P
19:52 chromatic /topic #parrot Parrot 0.6.2 "Reverse Sublimation" Released | http://parrotcode.org/ | 19/674 new/open tix
19:52 Eevee but!  I will keep it in mind
19:52 Topic for #parrotis now Parrot 0.6.2 "Reverse Sublimation" Released | http://parrotcode.org/ | 19/674 new/open tix
19:53 Eevee may want to update parrotcode.org
19:53 japhb YAY!
19:53 DietCoke Eevee: one thing at a time.
19:55 * chromatic wishes crow.pir added the next release date.
19:56 particle hrmm. that'd take some doing :(
19:56 particle unless it's blind lookup in a file
19:56 particle or somebody writes DateTime.pir
19:57 ambs \o/
19:58 chromatic It's in the JSON file.
19:58 particle oh. well then, that's *simple*
19:58 chromatic ... or at least a placeholder, 'cuz I forgot it.
19:59 particle i don't remember ever announcing the next release date for a release
19:59 pmichaud (contributions)   from a marketing perspective, what makes more people likely to participate is if they see other people of about the same perceived skill level participating
19:59 chromatic step nine: Don’t forget to include the next scheduled release date.
20:00 pmichaud so posts from anyone who is working/playing with Parrot/Rakudo are helpful, even if they seem "trivial"
20:01 pmichaud so, I can start ripping out deprecated features now?
20:01 * pmichaud clicks his Code Ripper(TM) scissors menacingly
20:01 chromatic Do it.
20:02 pmichaud muwahahahaha!
20:02 NotFound And fast!
20:02 Eevee oh dear.  just don't run with those
20:02 pmichaud I never "run", I just "execute" with them.
20:02 * Eevee groan
20:02 pmichaud ("with extreme prejudice"  :-)
20:03 Eevee I concede pun defeat
20:03 NotFound Off with his head!
20:03 pmichaud I have Code Ripper(TM) scissors.  NotFound appears to have a Code Ripper Chainsaw(TM)
20:04 pmichaud of course, I think I'm the only one who can really do a "Texas Chainsaw Massacre."  :-P
20:04 chromatic Wow.  You can paste HTML into Blogger and it will still mangle your HTML all to pieces.  That's... useful.
20:04 particle chromatic: you left in 'aloha' and 'mahalo' in the announcements?
20:04 NotFound pmichaud: I think that my LOC contribution will overflow negative integer range.
20:05 pmichaud NotFound: I think that negative code contributions should be multiplied by a factor of -2
20:05 * DietCoke fixes a C bug. woot.
20:06 chromatic I pulled them out of some of the announcements.
20:06 DietCoke chromatic: can you vet my patch on #54474 ?
20:06 particle chromatic: the file to fix is tools/util/templates.json
20:07 DietCoke ... why is aloha in that file?
20:07 * DietCoke glares at particle for leaving an surprise.
20:07 NotFound pmichaud: and the bonus added is to close several tickets about fixing the dead functions.
20:07 pmichaud NotFound: indeed, bonus
20:08 chromatic ahhhhhhhh overload!
20:08 particle ...that's what happens when you release parrot while on vacation...
20:09 DietCoke chromatic: ahhhhhhh freakout?
20:09 Eevee we need to upgrade chromatic to quad-core
20:10 DietCoke ... that's like having a 64-bit leo.
20:10 NotFound Or clone it and make a cluster.
20:10 chromatic Mostly I'm trying to figure out 1) why Blogger helpfully inserts extra <p></p> tags in your HTML when you've already provided it with valid HTML and doing so actually contravenes the HTML specification and 2) who to stab in the face to get it to change.
20:11 DietCoke did you use html mode or helpful edit mode?
20:11 particle robrt's probably the closest target
20:11 DietCoke you could join google and work on it on your skunkworks.
20:11 DietCoke skunkworks?
20:11 DietCoke bad purl.
20:11 purl I'm not bad, I'm just coded that way
20:12 chromatic I used HTML mode.  It mangled my HTML.  "OH, a newline after a paragraph tag!  That must mean to add another paragraph tag!  Hooray!  Oh, a newline in an open tag!  What could possibly go wrong if I add a paragraph tag there!  Nesting tags within tags is FUN!"
20:12 Eevee s/\n//g?
20:13 chromatic Yeah, because whitespace is significant in HTML.
20:16 Eevee or replace with a space, or add <!-- at the end of a line and --> at the start of the next, or some similar such terrible hack
20:16 Eevee or blogger might have some switch or custom tag to disable its own autoformatting, like lj does
20:16 chromatic I'm going to go with the face-stabbing, just because it's less of a hack.
20:16 chromatic Coke: your patch looks fine.
20:16 PerlJam chromatic: looks like you'll just have to take time out of parrot/$job/etc. to write a nice blog tool.
20:16 PerlJam chromatic: you could even write it in parrot/perl6  :)
20:16 NotFound Are you embedding whitespace code in html?
20:17 DietCoke chromatic: danke.
20:17 chromatic Between tags, yes.
20:18 NotFound Will be nice: <script lang='whitespace'>... No need to hide the code for old browsers.
20:21 dalek r27683 | chromatic++ | trunk:
20:21 dalek : [tools] Added next release date to Crow's release notes template.
20:21 dalek : Added more Haole to the release text.
20:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27683
20:23 Tene So, if I wanted to contribute posts to planet.parrotcode.org or wherever else someone wanted blog-like contributions, where should I do that?
20:24 DietCoke planet is an aggregator.
20:24 DietCoke so if you have a blog where you post parroty things, let me know.
20:25 DietCoke creating a blog on blogspot is easy. don't know if allison intended all committers to have access to parrotblog, either.
20:25 allison parrotblog is pretty open
20:26 Tene http://use.perl.org/~tene/journal/ -- I'd post here if it were aggregated there.
20:26 allison I've been inviting anyone who wants to blog there
20:26 * japhb wishes he had time to *both* contribute code *and* prose.  Sadly, I don't really have time for either one, so I'm going with code for now.
20:26 DietCoke I'd aggregate there if you posted there. =-)
20:26 dalek r27684 | chromatic++ | trunk:
20:26 dalek : [PMC] Made lower method return a STRING, not a boxed PMC.  (Patrick Michaud, RT
20:26 dalek : #54522).
20:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27684
20:26 allison I keep meaning to post, but don't get to it
20:26 DietCoke I did one!
20:27 * DietCoke sits on his haunches and expects a biscuit.
20:27 * allison gives coke a biscuit
20:27 PerlJam allison: so how does one get a login to parrotblog?
20:28 DietCoke you need a google id, IIRC.
20:28 DietCoke (it's just bloger)
20:28 allison let me know what your gmail account email address is
20:28 DietCoke er, blogger.
20:28 allison and I'll send out an invite
20:28 pmichaud I'd like to post to parrotblog.org, if I can't already.
20:28 dalek r27685 | fperrad++ | trunk:
20:28 dalek : [Lua]
20:28 dalek : - bytecode translation : more refactor & clean up
20:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27685
20:29 DietCoke leopard?
20:29 purl leopard is a panther or not Panther or OS X 10.5 or at http://www.apple.com/macosx/leopard/
20:29 nopaste "pmichaud" at 76.183.97.54 pasted "flamebait: diff t/steps/auto_pmc-03.t t/steps/auto_pmc-04.t" (23 lines) at http://nopaste.snit.ch/13028
20:29 Tene allison: srweeks@gmail.com
20:30 pmichaud my gmail account login address is pmichaud@pobox.com
20:30 pmichaud or else patrick.michaud@gmail.com
20:30 Tene Hm.  I should set up a google account for an address I check.
20:30 pmichaud (if it requires a gmail.com address)
20:31 japhb pmichaud: (flamebait) nuke it 'til it glows!  Well, one of them, anyway
20:31 allison tene & patrick: invites sent
20:31 allison pmichaud: it does require a gmail.com address
20:31 allison (it's a single signon, so your gmail account is your blog account)
20:32 allison tene: I just have my gmail account forward to my main email account
20:33 Tene looks like I can sign up for blogger with my non-gmail google account.
20:33 Tene allison: see if you can send an invite to tene@allalone.org
20:33 dcat_ joined #parrot
20:34 allison tene: apparently yes
20:35 Eevee hm.  rakudo.org does not appear to be fed to planetsix.perl.org
20:35 * DietCoke tries to figure out what the difference is between SELF.get_integer() and VTABLE_get_integer(INTERP, SELF);
20:35 DietCoke I don't think I have the keys to planetsix, just planetparrot
20:35 chromatic DietCoke, I think they're the same; the methody-looking form rewrites to the macro form.
20:36 NotFound You came from another planet?
20:36 DietCoke just verified that, yah.
20:36 DietCoke I have no problem with Vaso;u
20:37 DietCoke Vasily's patch on 54474, then.
20:37 allison DietCode: see lib/Parrot/Pmc2c/MethodEmmitter.pm
20:37 DietCoke (but having multiple syntaxes is just confusing)
20:37 allison Emitter, that is
20:37 * Eevee subscribes to planetparrot
20:38 Eevee rss++
20:38 Tene DietCoke: could parrotblog be aggregated on planet.parrotcode.org?
20:38 DietCoke It could, sure. that might almost make sense. =-)
20:39 jonathan chromatic: I think the first form maybe does the call on real_self, but only if DYNSELF became SELF already, which I forget it happened yet.
20:39 DietCoke jonathan: it did.
20:39 allison DietCoke: it didn't used to be the same, but when DYNSELF became SELF, then only STATICSELF is odd and interesting
20:40 DietCoke ah.
20:40 DietCoke how confusing!
20:41 allison At the moment, there's not much need for the macro, but it can be used to hide magical inheritance from HLLs to low-level pmcs
20:41 DietCoke While I'm in here, should I remove chip's blog? leo's blog?
20:41 allison are they posting parrot stuff? or anything?
20:41 jonathan allison: I think at the moment, we're not fully using the new PDD17 model for inheritance, attributes and so on?
20:41 allison jonathan: correct, it's partially there, but not fully
20:42 jonathan We still instantiate the parent PMC and delegate at the mo...
20:42 jonathan OK.
20:42 allison for one thing, we haven't eliminated real_self yet
20:42 jonathan Right.
20:42 jonathan Is this on your queue, or is anyone free to take a look?
20:42 allison but, we are now generating the low_level attributes, so we're 5 steps closer than the last time we talked about it
20:42 jonathan After the current batch of conferences, my schedule is a bit lighter.
20:43 allison my queue is non-blocking :)
20:43 allison take a look, ask questions, do it if you get to it
20:43 allison (though, bytecode is probably a higher priority)
20:44 DietCoke parrotblog added to planetparrot. give it a few hours.
20:44 Tene NO I NEED IT NOW
20:44 Tene Maybe.
20:45 cjfields joined #parrot
20:47 spinclad (re flamebait): <flame> repetition is the soul of wit.  long established principle. </>
20:47 jonathan allison: Infinoid++ is taking a look at bytecode, though I may well join in helping out there too. :-)
20:48 PerlJam jonathan++
20:48 pmichaud spinclad: yes, I think I heard that somewhere.
20:48 allison I've seen that, Infinoid++,
20:58 ruoso joined #parrot
21:02 dalek r27686 | pmichaud++ | trunk:
21:02 dalek : [core]:
21:02 dalek : * Remove the 'Super' PMC, resolving RT#53968.
21:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27686
21:04 davidfetter joined #parrot
21:07 DietCoke those auto_pmc tests should probably not have a list of all the pmcs in them.
21:19 peepsalot joined #parrot
21:38 teknomunk joined #parrot
21:46 chromatic How far away is fail() support in Rakudo?
21:48 cognominal thie parentheses are are scary  cuz they are used in p5 style :(
21:48 cognominal > my $x = '0'; if $x ne $x { say 'not ok 1' } else { say 'ok 1' }
21:48 cognominal ok 1
21:48 cognominal > my $x = '0'; if ($x ne $x) { say 'not ok 1' } else { say 'ok 1' }
21:48 cognominal not ok 1
21:48 cognominal >
21:54 NotFound Will be acceptable to rename const_cast to PARROT_const_cast?
21:54 jonathan chromatic: Do you know where fail is actually defined? Just went to check in the synopses to see exactly what it requires, and didn't find a definition...
21:56 jonathan S29 just says, "TODO: Research the exception handling system."
21:58 jonathan Ah, S04 seems to define it under exceptions
21:58 pmichaud doesn't it just throw an exception?
21:58 moritz not necessary
21:58 jonathan Not really, that's die
21:59 jonathan It may under use fatal
21:59 moritz onlw when the "fatal" pragma is active
21:59 pmichaud ah.
21:59 moritz if not, it returns an "interesting undef" value
21:59 jonathan Otherwise, it "registers" itself with $!
21:59 moritz which is like an unthrown exception
21:59 jonathan And returns undef
21:59 pmichaud cognominal: that's definitely a rakudo bug -- feel free to submit it as a bug report.
22:00 cognominal that's always the same bug in another guise
22:00 pmichaud $x ne $x   and ($x ne $x) should return the same.
22:00 jonathan Indeed.
22:00 jonathan I'll try and look at that tomorrw...that's nasty.
22:01 pmichaud I'm looking now.
22:01 jonathan Oh, cool.
22:01 jonathan I would, but my slides are still not sufficiently written.
22:01 pmichaud pmichaud@orange:~/parrot/trunk/languages/perl6$ ./parrot perl6.pbc
22:01 pmichaud my $x = '0'; if $x ne $x { say 'not ok 1' } else { say 'ok 1' }
22:01 pmichaud ok 1
22:01 pmichaud my $x = '0'; if ($x ne $x) { say 'not ok 1' } else { say 'ok 1' }
22:01 pmichaud ok 1
22:01 pmichaud so I'm not seeing the same bug.
22:01 pmichaud cognominal: perhaps you still have a local () patch applied?
22:01 jonathan cognominal: You haven't still got some local diffs, e.g. theunapplied....
22:02 jonathan pm beat me!
22:02 cognominal I check
22:02 chromatic NotFound, where are you looking at renaming the macro?
22:03 NotFound chromatic: include/parrot/parrot.h
22:04 cotto_work joined #parrot
22:05 NotFound I was hoping that this change will solve a problem I have compiling with g++, but It doesn't
22:05 chromatic Hm, that *is* pretty global.  I was just going to ask about C++ problems with it.
22:05 dalek r27687 | pmichaud++ | trunk:
22:05 dalek : [pge]:
22:05 dalek : * <?foo> is now a zero-width match instead of a non-capturing subrule.
22:05 dalek : * This brings us back into closer compliance with S05.
22:05 dalek : * Resolves RT#53834.
22:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27687
22:05 cognominal yes, that my stupid patch that is kiling me
22:06 NotFound Potantially any c++ program embedding parrot will have problems with that macro.
22:07 NotFound By the way, there is a 'new' identifier in dod.h
22:07 dalek r27688 | pmichaud++ | trunk:
22:07 dalek : * Forgot to update DEPRECATED in previous commit.
22:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27688
22:08 chromatic I don't see it.
22:08 chromatic Oh, in some of the generational APIs.
22:09 NotFound In parrot_gc_gms_wb
22:10 NotFound And parrot_gc_gms_wb_key
22:11 DurableAlloy joined #parrot
22:13 chromatic I'll fix those up in a minute; I'm editing POD right now.
22:15 NotFound char ** const strings;
22:16 NotFound g++ don't like this.
22:19 dalek r27689 | chromatic++ | trunk:
22:19 dalek : [docs] Minor edits to PCT Getting Started guide, prompted by the desire to fix
22:19 dalek : its indexing on the CPAN.
22:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27689
22:21 dalek r27690 | chromatic++ | trunk:
22:21 dalek : [GC] Changed C<new> parameter to C<_new> in a couple of GMS functions to help
22:21 dalek : C++ compilation.  Reported by NotFound.
22:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27690
22:21 IllvilJa joined #parrot
22:25 NotFound I have a strange problem compiling with g++ 4.2.3, several functions claims to have a nothrow () declaration that does not match his definition.
22:26 NotFound All of them have one parameter, attributed as nonnull.
22:26 ruoso joined #parrot
22:26 dalek r27691 | pmichaud++ | rakoo:
22:26 dalek : Create a branch for refactoring rakudo base classes and objects.
22:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27691
22:27 moritz pmichaud++ # "rakoo" ;-)
22:31 pmichaud just registered rakoodo.com :-)
22:31 moritz ;)
22:35 rdice joined #parrot
22:47 Juerd What's rakoodo, besides confusing?
22:47 pmichaud I'm just reserving the name is all.
22:48 pmichaud "rakoo" is simply my branch where I'm refactoring the oo components of rakudo.
22:48 Juerd Ah :)
22:48 pmichaud it'll disappear in a day or so.
22:48 Juerd Expensive to register a domain for just a day or so :D
22:48 pmichaud oh, I might use it in the future for something. :-)
22:48 Juerd It's interesting to see that you pick .com, whereas rakudo.org is not .com
22:49 pmichaud oh, I grabbed .org as well. :-)
22:49 Juerd Heh
22:49 Juerd You're thorough :)
22:49 pmichaud I've had experience with not grabbing domain names when they were available and regretting it later.
22:49 DurableAlloy left #parrot
22:49 NotFound Is there some way to disable jit capability?
22:50 pmichaud probably an options to configure.pl
22:50 pmichaud try Configure.pl --help
22:50 NotFound There is --jitcapable to enable it.
22:51 Juerd pmichaud: I have that same experience.
22:51 Juerd That's why I got juerd.com/net/org even though I don't currently use them.
22:51 Juerd Well, they're active but I don't use them in communication
22:53 jonathan pmichaud: It appears there will be hackathon after YAPC::EU over in Sweden, arrive Sunday, hack for few days (up to Wed) or whatever of it works for you, if you're interested.
22:53 jonathan Just got email about it.
22:53 jonathan I'd forward, but your mail server always rejects my emails. :-|
22:53 pmichaud jonathan: excellent, thanks.  I'll see if I can fold it into my travel plans.
22:53 pmichaud which server rejects them?  pobox.com?
22:53 pmichaud or gmail?
22:53 purl gmail is hotmail with less suck.  NOTE: It is NOT repeat NOT (repeat: not repeat not) mutt with less suck.  It's webmail, folks.  Brilliant, well-executed webmail, but still webmail. or Google-powered suck or the best webmail Masque has ever used.  n.b., this is like saying, "It's the best wood I've ever eaten!" or scary or cartmanmail or spawn of evil
22:55 Juerd gmail is also still webmail :)
22:55 purl okay, Juerd.
22:55 jonathan pmichaud: pobox
22:55 pmichaud hrm.
22:56 Juerd I had really expected gmail to get its own mail client.
22:56 Infinoid gmail has imap support
22:56 Juerd Infinoid: Oh, that's interesting.
22:56 Eevee Juerd: it has one, it's just written in html/js
22:56 Infinoid http://mail.google.com/support/bin​/answer.py?hl=en&amp;answer=75725
22:56 pmichaud jonathan:  you could send to patrick.michaud@gmail.com, or I could whitelist you directly into pmichaud@pmichaud.com
22:56 Juerd Eevee: Where can I download it? :) (I meant offline client)
22:57 pmichaud (all of those addresses go to the same place.)
22:57 Juerd Infinoid: How do they push the advertisement through imap then?
22:57 Eevee Juerd: well, then you're in trouble  :P  but imap should be fine if that's what you want
22:57 Eevee although
22:57 Eevee I can see prism + gmail + google gears working in interesting ways
22:59 Infinoid Juerd: apparently, they don't. :)
22:59 Juerd Infinoid: Hm...
23:01 pmichaud afk # swimming
23:11 tetragon joined #parrot
23:12 confound jonathan: why does pobox reject your email?
23:16 jonathan confound: Because my (in data center) mail server has numbers in it's hostname, so it thinks it's somebody's home machine that's been 0wned.
23:16 jonathan And I ain't got onto getting reverse DNS entry changed yet.
23:17 NotFound Finally, with some tricks and using --without-gmp I've been able to compile with g++ :)
23:18 confound jonathan: what's your mail server's hostname?
23:22 NotFound ...but fail a lot of tests.
23:24 chromatic NotFound: fail as in crash, or just the wrong answer?
23:25 NotFound Failed to compile.
23:52 davidfetter joined #parrot
23:54 bacek_ joined #parrot
23:55 bacek_ morning.

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

Parrot | source cross referenced