Camelia, the Perl 6 bug

IRC log for #parrot, 2008-06-10

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:09 AndyA joined #parrot
00:09 davidfetter joined #parrot
00:11 gmansi joined #parrot
00:12 bacek joined #parrot
00:13 bsb joined #parrot
00:21 particle joined #parrot
00:26 bacek morning...
00:27 kid51 good morning bacek
00:27 kid51 Very quiet here this (for me) evening.  Most of USA still in heat wave; slows down both computers and programmers.
00:28 bacek kid51: it's winter in Australia :) So it's little bit cold here
00:29 nopaste joined #parrot
00:29 silug joined #parrot
00:31 kid51 Are you still in severe drought there?
00:36 bacek kid51: officially - yes...
00:37 dalek r28212 | chromatic++ | trunk:
00:37 dalek : [src] Allowed PMCNULL as a value for all PMC-containing hashes.  Now cloning
00:37 dalek : these hashes doesn't produce a segfault when trying to clone PMCNULL.
00:37 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28212
00:41 bacek seen pmichaud
00:41 clunker3 pmichaud was last seen on #parrot 2 hours, 57 minutes and 59 seconds ago, saying: most people don't have trouble with that.
00:41 purl pmichaud was last seen on #parrot 2 hours and 58 minutes ago, saying: most people don't have trouble with that.
00:41 Eevee joined #parrot
00:42 dalek r28213 | chromatic++ | trunk:
00:42 dalek : [lib] Made the PMC emitter store PMCNULL in the vtable isa_hash member.
00:42 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28213
00:45 bacek yak.. pmichaud rejected my patch for handling PMC NULL in MMD, cause we shouldn't pass NULLs in MMD... Chromatic adds support for NULLs in other parts...
00:48 dalek r28214 | chromatic++ | trunk:
00:48 dalek : [src] Made vtable cloning clone isa_hash member, only after global
00:48 dalek : initialization has finished (that is, when isa_hash is not NULL in the source
00:48 dalek : vtable).  This gives all PIR-declared classes their own isa_hash.
00:48 dalek : Also made vtable deleting delete isa_hash member, when appropriate.  This
00:48 dalek : version looks tricky, but this is to respect that PIR-declared classes have
00:48 dalek : separate isa_hash memory between their RW and RO variants.  (That's fixable in
00:48 dalek : the Class PMC, but only if you want to violate encapsulation.)
00:48 dalek : Note that this fixes the double-free error showing up in the Perl 6 fakecutable.
00:48 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28214
00:54 japhb joined #parrot
01:07 TiMBuS joined #parrot
01:10 dalek r28215 | chromatic++ | trunk:
01:10 dalek : [PMC] Tidied Class PMC.
01:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28215
01:14 dalek r28216 | pmichaud++ | trunk:
01:14 dalek : [core]:
01:14 dalek : * Backport some CONTROL_* exception constants from the pdd25cx branch.
01:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28216
01:20 dalek r28217 | pmichaud++ | trunk:
01:20 dalek : [pct]: Initial control exception capabilities.
01:20 dalek : * PAST::Block 'control' attribute allows catching exceptions in blocks.
01:20 dalek :   The special value 'return_pir' generates inline code for catching
01:20 dalek :   CONTROL_RETURN exceptions and returning the payload.
01:20 dalek : * PAST::Op pasttype 'return' generates CONTROL_RETURN exceptions.
01:20 dalek : * These only work with a single return value for now; we may generalize
01:20 dalek :   this to multiple values in PCT, or just leave that for HLLs to
01:20 dalek :   provide their own return throwers/catchers.
01:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28217
01:21 dalek r28218 | pmichaud++ | trunk:
01:21 dalek : [nqp]:
01:21 dalek : * Add 'return' statement.
01:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28218
01:21 bacek Ho! pmichaud++!
01:34 Zaba_ joined #parrot
01:35 cjfields joined #parrot
01:42 Whiteknight when is pdd25cx getting merged back in to trunk?
01:42 Whiteknight or is that happening nowish?
01:44 bacek Whiteknight: summon pmichaud and ask him :)
01:44 Whiteknight i dont need to summon people to ask stupid questions
01:44 Whiteknight I'm just happy to watch him work!
01:45 * bacek opens next bag with pop-corn
01:46 bacek :)
02:00 tetragon_ joined #parrot
02:01 * tetragon_ wonders when tetragon will fall over
02:02 DietCoke allison is working on pdd25cx. I'm guessing it'll get finalized this weekend.
02:03 pmichaud I don't have much to do with pdd25cx, other than tremble about the merge.
02:04 pmichaud since the release is a week from tomorrow, I'm guessing the merge would be post-YAPC?
02:04 pmichaud (assuming it's finalized this weekend)
02:05 particle joined #parrot
02:06 dalek r28219 | chromatic++ | trunk:
02:06 dalek : [src] Fixed the STRING_compare signature to signify that the bucket key may be
02:06 dalek : NULL.  This fixes a segfault in the optimized build.  All tests pass.
02:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28219
02:10 DietCoke yah.
02:10 DietCoke presuming things go well at the hackathon.
02:21 particle joined #parrot
02:28 dalek r28220 | pmichaud++ | trunk:
02:28 dalek : [cardinal]:
02:28 dalek : * Fix properties on src/builtins/guts.pir .
02:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28220
02:33 cjfields joined #parrot
02:43 confound joined #parrot
02:43 confound joined #parrot
02:59 particle joined #parrot
03:13 TonyC joined #parrot
03:21 dalek r28221 | pmichaud++ | trunk:
03:21 dalek : [rakudo]:
03:21 dalek : * Add 'return'.  Only works for single-element values at the moment --
03:21 dalek :   returning lists and named elements will be available shortly.
03:21 dalek :
03:21 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28221
03:23 Whiteknight returning multiple values should be as easy as returning a ResizablePMCArray that contains those values
03:23 pmichaud ...not quite.  :-)
03:23 Whiteknight really? what snags are there?
03:24 pmichaud given   return(@a,@b)
03:24 Whiteknight i see, said the blind man
03:24 pmichaud if called with   $a = foo()  then $a should not become an Arrayref to the ResizablePMCArray
03:25 Whiteknight PCT couldn't handle the translation to/from the array?
03:25 pmichaud yes, it probably will at some point.  I just wanted to do the baby step first.
03:25 pmichaud in reality, we have to return both positional and named values
03:26 pmichaud and that doesn't fit into a ResizablePMCArray
03:26 * Whiteknight is guilty of oversimplifying
03:26 pmichaud i.e.,    return($foo, @bar, :xyz(1))
03:26 pmichaud which means that the positional and named arguments have to be rolled up into a single pmc (a Capture) that can be carried as the payload of the exception.
03:27 Whiteknight is that what a capture is, a combined array/hash?
03:27 pmichaud and then whatever catches that exception has to know how to unpack the Capture back into positional and named arguments
03:27 pmichaud essentially, yes.
03:27 Whiteknight there is so much going on in this whole project, it's hard to keep everything straight
03:27 pmichaud but on the other hand, we'd like to _not_ create an array and hash every time we're returning a single element.  :-)
03:27 pmichaud because that's a bit overkill.
03:28 Whiteknight yeah, I know. Of all people I should be weary of creating new garbage
03:28 pmichaud and, of course, other non-Perl 6 HLLs might have their own ideas about how return values work, so PCT should be flexible enough to support those also.
03:28 pmichaud (anyway, you get the point. :-)
03:29 Whiteknight thank you
03:29 pmichaud and yes, it's hard to keep it all straight.  I don't know that anyone has the full picture.  :-)
03:29 pmichaud Certainly I don't.
03:32 Infinoid japhb: ping
03:34 TonyC joined #parrot
03:34 * DietCoke spends his evening merging his various email accounts into a giant googlesink.
03:52 Infinoid is 'googlehole' a naughty word?
03:54 diakopter as in, "that meme went down the googlehole"
04:04 Infinoid more like, "if google gains too much mass it will collapse into a singularity, and the entire Bay area will fall into the googlehole"
04:08 tewk pmichaud: ping
04:22 dalek r28222 | chromatic++ | trunk:
04:22 dalek : [src] Fixed C90 violation in Parrot_destroy_vtable (my fault in r28221).
04:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28222
04:24 particle1 joined #parrot
04:30 dalek r28223 | chromatic++ | trunk:
04:30 dalek : [src] Really fixed src/vtables.c (as r28222 couldn't compile anywhere).
04:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28223
04:35 tetragon joined #parrot
04:36 rafl joined #parrot
04:41 pmichaud tewk: pong
04:43 slightlyoff joined #parrot
04:44 tewk I have an optable bug.  If i use tigheter exclusively it works, if I use equals it doesn't.  paste coming
04:44 pmichaud equals?  or equiv?
04:45 nopaste "tewk" at 155.97.237.62 pasted "proto changes" (31 lines) at http://nopaste.snit.ch/13221
04:45 japhb Infinoid: pong
04:46 tewk equal, this is old code from c99
04:46 ank joined #parrot
04:46 tewk I guess it should be equiv
04:46 pmichaud afaik it's always been 'equiv'
04:47 tewk maybe its just a bug never exposed. Like I said it is really old code.  Thanks.
04:48 tewk c99 was never really heavily exercised.
04:48 tewk pmichaud++
04:49 Tene I've seen kjs use equals() in cardinal, too.  didn't he work on c99?
04:52 tewk Yeah after I wrote the intial code.
04:55 bacek pmichaud: ping
04:56 pmichaud bacek: pong
04:56 bacek pmichaud: did you have any chance to take a look on my 'LazyList sketch' at http://nopaste.snit.ch/13208?
04:57 pmichaud yes, I did.  But I don't think it should be a separate class.
04:57 pmichaud I think it should just be List.
04:57 bacek yes, but I don't want to hack List at the moment.
04:57 pmichaud sure, that makes sense.
04:57 bacek It's just idea of how it can be implemented.
04:58 bacek And I think, that List no 'is-a' RPA, but 'has-a' RPA.
04:58 sheriff_p left #parrot
04:59 pmichaud we'll probably do something like that.  jonathan and I were discussing earlier that we'll likely have two RPAs to start with
04:59 bacek Because all access to 'get_pmc_*' and 'set_pmc_*' will be wrapped
04:59 pmichaud one for already generated items and one for items yet-to-be-generated
04:59 bacek hmm... Why we need second RPA?
04:59 pmichaud that will make indexed access a bit quicker, and it avoids a lot of splicing
04:59 bacek But it's not RPA...
05:00 bacek (second one). It's Iterator.
05:01 bacek but on each indexed access you have to check that element already generated
05:01 pmichaud how would   @a = (1, 2, 5..10, 15, 20..100) be stored?
05:02 bacek pmichaud: list of [1, 2, (Range(5..10), 15, Range(20..100)]
05:02 pmichaud ...extra paren, there?
05:02 bacek oops. Yes
05:02 pmichaud jonathan and I think that better would be
05:03 pmichaud [1, 2]   and [Range(5..10), 15, Range(20.100)]
05:03 pmichaud after asking for element [4], we would have
05:03 pmichaud [1,2,5,6,7]   and [Range(8..10), 15, Range(20..100)]
05:04 bacek so, second RPA is 'RPA of Generators'. Makes sense
05:04 pmichaud right.
05:04 pmichaud shifting a value simply removes it from the generated list (generating one if needed)
05:05 bacek It's almost same way, how it implemented in my code.
05:05 pmichaud right, but I don't think we need a '$!next_item'
05:05 Infinoid japhb: r27975 caused a bunch of warnings for me.  should I send you a tarball of my GL headers, or something?
05:05 pmichaud nor do we need a separate $!iterator
05:06 bacek we need 'next_item'. What about get_boo/shift combo?
05:06 pmichaud ...?
05:06 * purl quietly listens while the crickets chirp
05:06 bacek 'separate $!iterator' should be 'RPA of generators'
05:06 pmichaud okay, I'd go for that then.
05:07 japhb Infinoid: that's never a bad idea.  But I just got back from a trip; I need to find out what r27975 *was*.  ;-)
05:07 pmichaud essentially they're things that understand 'shift'
05:07 bacek when we check get_bool we can prefetch next item fromgenerator
05:07 pmichaud all that means is that we make sure there's at least one element in the 'generated' list.
05:07 Infinoid japhb: [OpenGL] First cut of parsing OpenGL headers
05:07 pmichaud get bool is the same thing as   exists [0]
05:07 Infinoid japhb: warning text available on RT #55530
05:07 japhb Infinoid: hmmm.  Has DietCoke not committed my patch from last week?
05:08 bacek so, we require, that generator implements 'get_bool' as well
05:08 pmichaud no.
05:08 bacek how that?
05:08 Infinoid japhb: I don't know.  I do know that every version since has emitted a bunch of warnings.  I'll send you my headers in an email
05:08 pmichaud oh, on second thought yes.
05:08 pmichaud but most generators do.
05:09 pmichaud Range does.  List does.
05:09 japhb Infinoid: thank you.
05:09 bacek pmichaud: ok. Anyway, we can create generic proxy class for generators that don't
05:09 pmichaud right.
05:10 japhb But also, can you apply the latest patch on #55228 and see if it fixes your problem?
05:10 japhb Infinoid: what platform was this?
05:10 tetragon joined #parrot
05:11 pmichaud Right now I'm writing 'fail'.
05:11 pmichaud and then we can get try and $! fixed.
05:11 bacek pmichaud: excellent.
05:12 bacek pmichaud: I tried to figure out, how to handle '$a=try{die}'... Unsuccessfully...
05:12 bacek It require more knowledge about PCT that I have...
05:14 Infinoid japhb: Linux/amd64 (gentoo) with some fresh git checkout of mesa
05:14 japhb Infinoid: gotcha.  Did the latest patch on #55228 help?
05:14 Infinoid I will check now
05:14 japhb Infinoid: thanks.
05:15 japhb I'd asked DietCoke to test and commit that patch while I was gone (since it vastly reduced warnings for several people) but it looks like he did not.
05:16 japhb Might have been nervous about committing if I wasn't there to pick up the pieces if things broke ....
05:17 Infinoid japhb: yes, it does help.  the number of warnings is greatly reduced... only 8 left
05:17 Infinoid without the patch, I get pages and pages of them.
05:17 japhb great.  paste the remainder?
05:17 bacek pmichaud: BTW, #55482 and #55484 more improvements of the List. (min/max/uniq)
05:18 nopaste "Infinoid" at 75.5.240.108 pasted "japhb: Here's what's left over." (9 lines) at http://nopaste.snit.ch/13222
05:19 japhb foomesa?!?  WTF is foomesa?
05:19 japhb Sheesh.
05:19 japhb OK, I know what to do.
05:19 Infinoid hell if I know :)
05:20 Infinoid http://webcvs.freedesktop.org/mesa/Mesa/inclu​de/GL/foomesa.h?revision=1.2&view=markup looks a lot like mine.
05:20 shorten Infinoid's url is at http://xrl.us/bmr6j
05:21 japhb Infinoid: Ah.  Example on how to write Mesa drivers.
05:22 Infinoid how ... useful for it to install that on production machines.
05:23 japhb NODNOD
05:25 dalek r28224 | chromatic++ | trunk:
05:25 dalek : [src] Refactored Continuation PMC's invoke vtable entry, extracting three
05:25 dalek : functions into src/sub.c.  This allows the RetContinuation PMC to use two of
05:25 dalek : those functions directly, rather than forcing Continuation to check if it's
05:25 dalek : really a RetContinuation.
05:25 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28224
05:26 japhb Infinoid: OK, I've attached an updated patch to your ticket (I'll point the old tickets to this one).  Give it a try.
05:27 Infinoid Looks good, you devious git user you.
05:28 Infinoid Generating OpenGL bindings.....................​.......................done.
05:28 japhb Infinoid: heh
05:28 japhb awesome
05:28 Infinoid no idea if it builds yet, but it configures nicely
05:29 cognominal joined #parrot
05:29 japhb Infinoid: give the build a try.  IF it works, I'll commit and risk not having gotten Win32 signoff, because this is the third ticket filed on this same warnings issue from various other platforms.
05:31 Infinoid Configures, builds and runs just fine.
05:31 Infinoid the triangle.pir did emit a message about "Failed to initialize TTM buffer manager.  Falling back to classic."
05:31 Infinoid otherwise, I didn't notice any noise at all.
05:33 Infinoid is the triangle bigger than it used to be?
05:35 japhb Erm ... shouldn't be.
05:36 Infinoid it's late, I'm probably just remembering it wrong.
05:36 * japhb wonders what the "TTM buffer manager" is ... some Mesa thing, mayhaps?
05:36 Infinoid window_width = display_width * parrot_version;
05:36 japhb heh
05:36 Infinoid goodnight
05:37 japhb g'night
05:38 japhb committed
05:38 purl The chicken is involved, but the pig is *committed*.
05:38 dalek r28225 | japhb++ | trunk:
05:38 dalek : Merge branch 'cognominal-ivan-fix'
05:38 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28225
05:49 bacek_ joined #parrot
06:03 Zaba joined #parrot
06:17 Psyche^ joined #parrot
06:21 iblechbot joined #parrot
06:37 uniejo joined #parrot
06:41 Zaba joined #parrot
07:47 Zaba_ joined #parrot
07:49 bacek joined #parrot
07:51 masak joined #parrot
08:14 tetragon joined #parrot
08:21 cizra http://www.parrotcode.org/docs/imcc/imcfaq.html says that Named variables are either local or namespace qualified. Currently IMCC only supports locals transparently.
08:21 cizra What does that "transparently" mean?
08:28 iblechbot joined #parrot
08:29 moritz probably "without further action from the user"
08:30 IllvilJa joined #parrot
08:43 cizra I still don't understand.
08:48 cizra Oh. Right. Emphasis on "only". That is, namespace-qualifieds aren't as well supported.
09:56 slightlyoff joined #parrot
10:17 skv joined #parrot
10:18 Ademan joined #parrot
10:20 bacek joined #parrot
10:41 jan joined #parrot
10:42 jan_ joined #parrot
11:30 bacek t/spec/S16-filehandles/connect.t................   4    4    0    0    0    4
11:31 bacek pmichaud, we should remove this test from spectest_regression..
11:31 bacek It's useless.
11:34 bacek probably S29-num/complex.t too.
11:34 bacek t/spec/S29-str/sprintf.rakudo...................  37   37    0    0    0   37
11:34 bacek yak...
11:35 bacek all 37 tests skipped...
11:35 jonathan pmichaud did some work on complex numbers recently, so we should have something in spectest_regression to check what works so far.
11:35 pmichaud I think it's already there.
11:35 bacek jonathan, ok, I'll test check it.
11:35 pmichaud t/spec/S29-num/complex.rakudo................... 129  129    3    0    1  125
11:35 pmichaud 3 pass, 1 todo, 125 skip
11:36 pmichaud the 125 skip will be a lot less as soon as I get  -> working in infix position.
11:38 pmichaud although now that I look at that (what I just wrote) I'm not sure why -> doesn't work already.
11:38 jonathan Gets parsed as infix:-
11:39 jonathan And wants a term, not a >
11:39 pmichaud but it would need another term in order for that....
11:39 jonathan I think.
11:39 pmichaud and since there's no other term available, it should backtrack.
11:39 jonathan Yeah, but it doesn't backtrack.
11:39 jonathan Oh?
11:39 jonathan I didn't think the parser backtracked...
11:39 jonathan Apart from in a few cases...
11:39 pmichaud the operator precedence parser returns the longest complete expression
11:39 jonathan Oh, OK.
11:39 pmichaud (at least, it's supposed to.)
11:39 pmichaud I'll play with that this morning.
11:39 jonathan But -> isn't known to the operator precedence parser.
11:40 jonathan It's only in the grammar.pg
11:40 jonathan Cool, would be nice to have fixed. :-)
11:40 pmichaud -> doesn't have to be known to the operator precedence parser
11:40 pmichaud all the opp needs to know if that -> doesn't parse as part of a valid expression in operator position
11:40 pmichaud s/if/is/
11:40 IllvilJa joined #parrot
11:42 jonathan OK
11:42 jonathan I'll leave you, to investigate. :-)
11:42 pmichaud don't leave me!!!!!   er.... OK.  :-)
11:43 jonathan ...
11:43 pmichaud man I have lots of email today. :-|
11:48 bacek pmichaud, (about S29-num/complex.t) all other tests depends on unpolar(), which not implemented yet.
11:49 bacek pmichaud, yak... 3 days ago..
11:50 pmichaud I added unpolar().  :-)
11:50 pmichaud even cis() depends on unpolar().  :-)
11:51 masak what's unpolar()?
11:52 pmichaud convert from polar coordinates to rectangular (in imaginary space)
11:52 purl I don't know how to convert from polar coordinates to rectangular (in imaginary space).
11:52 pmichaud purl, I do -- use unpolar!  :-)
11:52 pmichaud see S29.  :-)
11:53 masak ok
11:54 masak is 'unpolar' a more clear name than 'rectcangular'?
11:54 masak it's not too often that things are specified by what they ain't
11:54 pmichaud yes, 'unpolar' was very unfamiliar to me as well.
11:55 masak the name is doubleplus-ungood, if you ask me
11:56 Zaba_ polar2rectangular would work out :>
11:57 masak or even 'torect'
11:57 masak or even just 'rect()'
12:02 masak yes, I think 'rect()' is in the sweet spot
12:02 masak I'm afraid 'unpolar()' would become very unpopular ;)
12:02 Whiteknight joined #parrot
12:02 dalek r28226 | Whiteknight++ | gsoc_pdd09:
12:02 dalek : [gsoc_pdd09] updating to trunk r28225
12:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28226
12:03 bacek > say 4.unpolar()
12:03 bacek Method 'unpolar' not found for invocant of class 'Int'
12:03 pmichaud it's only defined on Num at the moment.
12:07 bacek pmichaud, got it...
12:07 * bacek still try to understand why Int is not a Num...
12:09 pmichaud because Parrot doesn't have it that way in the hierarchy
12:10 masak but it should be, right?
12:10 pmichaud I don't know.  I haven't investigated that part of the spec.
12:11 bacek pmichaud, copy-paster unpolar in Int works fine :)
12:11 pmichaud I don't plan to duplicate methods if I can avoid it.
12:12 pmichaud as things stand now in rakudo, 4.unpolar will probably start working when we get method fallbacks working.
12:12 pmichaud or when we figure out the relationship between Int and Num
12:12 Whiteknight "make perl6" just failed for me. Segmentation fault.
12:13 bacek pmichaud, probably Int is Num... It's DWIM-style
12:13 masak I would sure hope it is
12:14 pmichaud yes, but I don't think that Int should carry around Num's attributes.
12:14 pmichaud otherwise... what's the point?
12:14 pmichaud so it's not a simple  "Int isa Num" relationahip.
12:14 pmichaud *relationship
12:15 bacek Num-to-Int autocoercion is an explicit exception built into the
12:15 bacek language.  Perl 5 programmars would lynch us if we broke it.  But yes,
12:15 bacek it's basically cheating.
12:16 tetragon joined #parrot
12:16 bacek Guess who :)
12:16 bacek (I know that it in backward direction, but I just like this quote)
12:25 bacek pmichaud, pugs says that Int isa Num.
12:40 DietCoke Nom isa Nom
12:49 DietCoke ... lolcode needs the ... operator, except we can call it nom nom nom.
12:50 * DietCoke <- dork
12:50 TiMBuS joined #parrot
12:50 bacek probably bang bang bang is better name :)
12:54 bacek Newly passing tests:
12:54 bacek S29-list/join.t
12:54 bacek S29-list/reduce.t
12:54 particle joined #parrot
12:54 pmichaud bacek: I'm not saying that we won't fix Int to Num autocoercion, I'm just saying it's not immediately obvious how to do it.
12:56 bacek pmichaud, adding Num as parent of Int didn't brake spectest_regression :)
12:56 radhios joined #parrot
12:56 bacek but probably autocoerce Int-to-Num will work too
12:58 pmichaud bacek: where did you find that quote, btw?
12:58 bacek Larry's mail
12:58 pmichaud recent email?
12:58 pmichaud on a mailing list?
12:58 pmichaud i.e., I'd like to read the surrounding conversation
12:59 bacek just a sec. I'll find it again :)
13:00 bacek http://groups.google.com/group/perl.perl6.la​nguage/browse_thread/thread/a79c24e250dbdafc
13:00 shorten bacek's url is at http://xrl.us/bmsmg
13:00 bacek Jan, 2007
13:01 pmichaud thanks.
13:02 bacek what is semantic of '<:'???
13:02 pmichaud in what context?
13:03 bacek Int <: Num
13:03 pmichaud oh, I have no idea.
13:03 pmichaud that's often true for me when looking at things TSa writes.
13:03 pmichaud it's not a Perl 6 operator.
13:05 pmichaud original is a very long thread.
13:06 pmichaud http://www.nntp.perl.org/group/perl.​perl6.language/2007/01/msg26860.html
13:06 shorten pmichaud's url is at http://xrl.us/bmsmt
13:06 * bacek wants something like xmlschema-0 for perl6...
13:07 bacek It was so easy to implement XQuery compiler when I had full spec...
13:08 bacek s/0/2/
13:10 bacek http://www.w3.org/TR/xmlsc​hema-2/type-hierarchy.gif
13:11 pmichaud (int-to-num)   I'm guessing that fallback methods will handle a lot of this for us.
13:11 pmichaud either that or we'll explicitly import certain methods into the Int/Num/Str scopes.
13:11 pmichaud that's about all I'm prepared to worry about for now.  :-)
13:11 pmichaud (on that topic.)
13:12 DietCoke (full spec) that is exactly why I concentrated on tcl instead of perl6 for so long. =-)
13:12 bacek yep. Fallbacks should solve all this problems...
13:13 bacek DietCoke, why not Smalltalk? :)
13:13 gryphon joined #parrot
13:16 DietCoke probably would have been easier, in retrospect.
13:18 donaldh joined #parrot
13:24 bacek afk # sleep... probably...
13:25 bacek pmichaud, JFYI, there is few tickets in RT for various List improvements.
13:25 pmichaud yes, I know.  Still need to look at those.
13:26 bacek pmichaud, ok.
13:27 * bacek ... need... more... karma... :)
13:29 bacek must sleep
13:29 purl $bacek->sleep(8 * 3600);
13:30 bacek Ho. Purl is back
13:35 masak and funny, for once
13:36 DietCoke purl,funny?
13:36 purl i guess funny is at http://www.denounce.com or at http://www.pimpdaddy.com or at http://www.pimpcity.com/humor/underpants.html or [11:09] <Chris-> but can all browsers access perl files.. i expect so or at http://www.callahanonline.com/ or at http://www.userfriendly.org/ or http://www.rahoi.com/2006/0​3/may-i-take-your-order.php
13:41 nnunley joined #parrot
13:49 jhorwitz joined #parrot
14:00 Khisanth joined #parrot
14:04 iblechbot joined #parrot
14:06 DietCoke NotFound: IANACP, but shouldn't
14:06 DietCoke +    STRING *full_name = 0;
14:06 DietCoke be
14:06 DietCoke +    STRING *full_name = NULL; ?
14:08 pmichaud for better C coding style, yes.
14:09 particle1 joined #parrot
14:09 DietCoke NotFound: in general, the patch looks good to me, though.
14:13 jhorwitz DietCoke: started working on tcl registry scripts.  getting segfaults.  will debug to see whose problem it is.  ;-)
14:13 DietCoke me, you, or parrot, neh?
14:14 DietCoke I have a dynops file.
14:15 particle1 NotFound: are Parrot_string_free_cstring and *_get_* in the strings pdd, or is this an api change that requires a pdd update?
14:15 jhorwitz DietCoke: i'll make sure that's being pulled in.
14:17 particle jhorwitz: sorry about yesterday, my phone line went dead and i had to fix it
14:17 jhorwitz np
14:18 pmichaud jhorwitz: fwiw, rakudo now has 'return'
14:18 particle pmichaud: did you get multivalue return working?
14:18 jhorwitz pmichaud++
14:18 jhorwitz pmichaud++
14:18 jhorwitz pmichaud++
14:18 pmichaud not yet.  I know how to do it, just want to figure out the appropriate factoring.
14:19 * particle also had to rebuild his computer, so has lost a bunch of irc history
14:19 Whiteknight no he didnt, and he refused to use my naive and terribly inefficient methods to do it
14:19 particle but now #parrot is logged, so nbd
14:19 pmichaud :-)
14:19 particle Whiteknight: how rude!
14:19 Whiteknight i know, right?
14:19 jhorwitz particle: bad day at the office, eh?
14:19 pmichaud yes, I'm wanting to avoid creating a hash/array for every return operation :-)
14:19 particle jhorwitz: to say the least...
14:20 * particle is installing parrot development dependencies atm
14:20 * particle thinks pmichaud is lazy
14:20 PerlJam having return means we can "easily" get to gather/take I think.  (since take is a fancy return)
14:20 pmichaud it's one of my vices and virtues, yes :-)
14:21 Whiteknight which synopsis is gather/take defined in?
14:21 PerlJam Whiteknight: S04 I think
14:22 Whiteknight i like to keep up on perl6, my interest in that is what lead me to parrot in the first place
14:22 pmichaud I haven't quite figured out gather/take yet.
14:22 PerlJam It's the same one that talks about "contend" (and is the only reference to contend that I can find anywhere)
14:23 pmichaud > for 1..10 -> $a { print "$a "; }; say "done";
14:23 pmichaud 1 2 3 4 5 6 7 8 9 10 done
14:23 pmichaud yay.
14:24 dalek r28227 | pmichaud++ | trunk:
14:24 dalek : [pge]:
14:24 dalek : * Fix backtracking bug in OPTable.
14:24 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28227
14:25 PerlJam pm: I thought I understood gather/take until the description was reformulated to talk about Captures and such.  Now I'm fairly sure I don't quite understand them anymore.  :)
14:25 PerlJam But most of the magic seems to be in take and take is a fancy return AFAICT
14:26 Whiteknight From what I am gathering, the capture is implied based on the arguments you pass to take
14:26 PerlJam Whiteknight: was that a pun?  :)
14:26 Whiteknight ...not intentionally...
14:29 PerlJam Whiteknight: the last time I looked at it, it seemed the take is a no-op in a way except that it affects the return value of the gather.  i.e.   $a = $b;  is exactly the same as $a = take $b;  except that the later adds a Capture of $b to the return value of an enclosing gather.
14:29 jonathan pmichaud: That patch, looks like it was more frustrating to work out why was needed, than to write. ;-)
14:29 PerlJam but what happens when you call take without an enclosing gather?  I have no idea.
14:30 pmichaud jonathan: you would be entirely correct.
14:30 jonathan pmichaud++ # finding the bug
14:30 masak PerlJam: that would be an error, methinks
14:30 PerlJam and what if you go   gather { foo(); };  sub foo { ... take $bar }   ?
14:30 Whiteknight PerlJam, okay, I can see that
14:30 jonathan Does that mean my $x = -> $a { say $a } works now?
14:31 masak PerlJam: also, I'd not describe take as a no-op, since it's lazy, so take works a bit like yield in ruby
14:31 pmichaud was that not working before?
14:31 pmichaud (I don't know if it works now.)
14:31 masak PerlJam: that works. gather is a dynamic construct
14:31 jonathan It wasn't; I thought that was the bug you were chasing, actually.
14:31 masak I was on #perl6 when they decided that years ago
14:31 pmichaud well,   for 1..10 -> $a { say $a; }  works now and didn't before.
14:31 pmichaud my $x = -> $a { say $a; }   doesn't work
14:32 jonathan Ah.
14:32 jonathan plzicanhazfix? ;-)
14:32 pmichaud I don't know why that one would be failing.
14:32 pmichaud oh, yes I do.
14:33 pmichaud Yes, that's a different bug from the for 1..10 ->   one
14:33 pmichaud fixing  my $x = -> $a { say $a; }   will require a bit of OPTable refactoring.
14:33 pmichaud (the difference is the use of -> in term position versus operator position)
14:34 jonathan Ah, ok
14:34 jonathan If it's a pain to do now, I'm not in a huge hurry for it.
14:34 pmichaud it's a small pain.
14:34 pmichaud I was thinking the two were the same bug, but apparently not.
14:35 PerlJam masak: that feels wrong to me for some reason.
14:35 masak PerlJam: the dynamicness?
14:35 PerlJam masak: yes.
14:35 masak the feeling will pass, I hope
14:35 masak it's wonderful!
14:35 pmichaud I agree that 'take' sounds more like .yield than return.
14:35 Zaba joined #parrot
14:36 pmichaud but it's essentially the same concept.
14:36 PerlJam pmichaud: except that yield suspends execution and take doesn't, it just grabs a Capture of its args.
14:36 masak PerlJam: take essentially suspends execution, yes
14:36 pmichaud PerlJam: except that I think that gather/take is lazy, which means we don't take until we need it.  :-)
14:37 masak PerlJam: more correct to say that a request to a gather/take instigates execution :)
14:38 PerlJam gather/take,contend,async,lazy are all "do-like" things that all seem underspecced to me  (in that they evoke more questions than answers :)
14:39 masak PerlJam: in such a case, questions are exactly what is needed, so ask away
14:40 PerlJam well, I'm only going by memory rather than the spec, so I might just be way off base.
14:40 masak true.
14:40 pmichaud actually, some of us are noticing that questions on p6c are taking an awfully long time to get responses/answers.
14:40 PerlJam pm: so answer them faster!  ;)
14:41 pmichaud pj:  in many cases I'm the one asking the questions.  :-)
14:42 PerlJam I've noticed.
14:42 PerlJam But if Larry can talk to himself on mailing lists, you can too
14:42 pmichaud ...except I don't do language design.  :-)
14:44 PerlJam Larry has the toughest job.
14:51 masak indeed
14:52 masak maybe he's unusually busy right now
14:52 DietCoke another con coming up shortly.
14:53 * DietCoke hits the mailing list.
14:55 * DietCoke finds that the pdd25 branch is still horked.
14:55 pmichaud oh, I do believe he's busy, yes.
14:55 pmichaud afk, errands.
15:03 Whiteknight joined #parrot
15:11 jan_ joined #parrot
15:11 tewk pmichaud: Is there a definition of \w or <wb> anywhere?
15:18 Zaba_ joined #parrot
15:25 rdice joined #parrot
15:31 particle tewk: like a spec, or in the code?
15:31 * particle tries to get his env set up faster for parrot develoment
15:32 tewk particle: either, I guess.  I have a rule for builtin types that includes "int" however it matches against "int32_t", which it shouldn't
15:33 particle ah, you need to anchor the end of word
15:34 tewk I'd like to put  <?wb> at the end of the builtin_types rule
15:35 particle take a look at languages/squaak/src/parser/grammar.pm:191
15:35 particle token keyword { ['and'|'or']>> } # note the anchor
15:36 tewk I thought <?wb> and >> where the same but I'll try >>
15:36 particle i believe they are the same
15:44 davidfetter joined #parrot
15:44 DietCoke huh. I'm on the smolder-users mailing list.
15:46 DietCoke nifty: I am shoving all the mail from my desktop into my gmail account. I am now seeing current followup RT messages having history that wasn't there a week ago before i started this.
16:06 Theory joined #parrot
16:08 tewk Who wants to write me a chomp opcode?
16:09 confound chompcode
16:10 DietCoke substr not good enough for ya? =-)
16:10 DietCoke ah, chomp, not chop.
16:10 DietCoke I could whip up a dynop for you.
16:11 tewk I could really use it, I just don't want to get off task.
16:11 DietCoke if this were tcl, I'd put it in my pre-existing ops file.
16:12 DietCoke if you can get another committer to say we need it in core, I'll add it there. =-)
16:12 tewk You write the op, I'll get it in as a core op, unless some one objects.
16:12 particle tewk: you need an opcode, or can you use a pir lib?
16:13 tewk There are experimental core ops, it could be a pir lib too.  We have substring, chopn as opcodes.  chomp seems like a primitive string op.
16:13 tewk It is definitely usefull as a pir debugging aid.
16:13 particle i think it exists today in pir
16:13 particle that's why i ask
16:14 tewk ahh, where
16:14 purl it has been said that ahh, is there a var that holds the total number of parms ?
16:14 particle i don't have ack installed yet
16:14 particle probably under runtime/parrot/library
16:14 NotFound runtime/parrot/library/String/Utils.pir
16:14 tewk I still think it should be an op, but pir would work for the time being.
16:15 DietCoke hokay.
16:15 tewk I'm hacking PGE to provide ugly trace functionality, but I can probably find a place to generate the pir include.
16:16 tewk offtopic, but tewk loves git.  I won't ever go back.
16:16 * confound too
16:17 Zaba joined #parrot
16:17 NotFound Someone bored can try my last patch in #44499 and do some benchmarking?
16:17 tewk rebasing is so easy, backingup local branches to arbitrary locations is easy too.
16:18 cjfields joined #parrot
16:24 particle1 joined #parrot
16:27 particle1 jhorwitz, DietCoke: how's the heat?
16:27 jhorwitz brutal
16:27 particle1 SEATTLE -- A foot of new snow is expected Monday night for the west slopes of the north and central Cascades, the National Weather Service said in a heavy snow warning issued Monday morning.
16:27 particle1 that's 40mi from here
16:28 particle we had ski resorts open on memorial day
16:28 particle unreal.
16:28 * jhorwitz makes an offering to his A/C compressor
16:30 TimToady maybe I can afford to fix my A/C this year...
16:32 TimToady pmichaud: I would prefer that language design questions show up in p6l, which I tend to read more frequently than p6c
16:32 TimToady where frequently is currently defined as less infrequently...  :/
16:43 paggas joined #parrot
16:44 DietCoke it's 90 here today.
16:45 TimToady was 96 here yesterday
16:45 particle it was 59 here yesterday
16:45 DietCoke TimToady: would it help if there were a queue of some kind that had a list of "things that need larry"? or is the mailing list fine?
16:46 DietCoke whatever's easiest for you, we can adapt.
16:46 TimToady p6l is best for that
16:46 TimToady if I don't answer something there it's usually because I'm still thinking about it
16:46 TimToady as opposed to not having noticed it
16:46 particle that's no excuse!
16:46 particle :P
16:46 TimToady well, it's getting to the point where all the easy questions have been answered, so all you ever ask is hard questions :P
16:47 DietCoke "why didn't you invent tcl!?"
16:47 TimToady John beat me to it
16:48 particle let's hope you beat john to perl 6
16:48 DietCoke bah, they're coming up on tcl 9!
16:49 DietCoke is just glad we didn't go the sun numbering route.
16:49 cotto-work NotFound, what kind of benchmark were you hoping for?
16:49 cotto-work it looks like make && make perl6 are fine with the patch
16:50 cotto-work s/are/works/
16:50 particle i had no idea parrot was born of al qaeda: http://search.cpan.org/~simon/parrot-0.0.1/
16:50 NotFound cotto-work: forget it, I think now that the speedup I was seeing was an illusion.
16:50 purl NotFound, I didn't have anything matching it, i think now that the speedup i was seeing was an illusion
16:50 cotto-work done
16:52 NotFound But anyway, it avoids a lot of leaking.
16:54 * DietCoke stares blankly at particle.
16:56 DietCoke (to be clear, I obviously don't think that just because they have a higher release number that they're better. =-)
16:57 cotto-work funny that purl doesn't ignore answers addressed to other irc users
17:01 DietCoke didn't Andy define a macro for string comparison? hurm.
17:01 Andy STREQ and STRNEQ
17:01 Andy rather than using strcmp() as a boolean
17:02 DietCoke ah, there they are.... and here they are here.
17:03 DietCoke ah. those are just for cstrings?
17:04 DietCoke (for parrot stuff, I can use string_equal, etc?)
17:04 DietCoke if (string_equal(a,b)==0) seems like bad C form, though.
17:05 * DietCoke thinks that if (! string_equal(a,b) ) is more idiomatic, yes?
17:05 NotFound DietCoke: agree.
17:06 * TimToady thinks strEQ is best :)
17:09 DietCoke NotFound: if you're bored, you could patch a great deal of src/pmc/*.pmc with that style update.
17:10 particle cage ticket?
17:10 NotFound DietCoke: What update?
17:10 purl update is fine it's just that people don't apply the updates or the sql-ism for it
17:11 DietCoke NotFound: nevermind. string_equal has return values like strcmp, so that usage is better. ah well
17:12 * DietCoke thinks we should change string_equal to just return true or vfalse, there's always string_compare if we want that return value, no?
17:13 NotFound We don't have discussed yet that function name?
17:13 DietCoke NotFound: I can't parse that send.
17:13 DietCoke on a different tack, what the hell benefit does the ATTR declaration give us? =-)
17:14 NotFound The name is completely mileading with the usage.
17:14 * DietCoke throws away this patch to tcl.
17:15 Infinoid NotFound: oh, I've noticed that too.  string_equal implies that it should return true when the strings are equal, but it does the opposite.
17:15 NotFound if ((s1 == s2) || (!s1 && !s2)) ---> What?
17:16 NotFound This is not the same as (s1 == s2) ?
17:16 DietCoke if the strings are equal or they're both null... wouldn't they be equal if they were both null?
17:16 DietCoke seems like.
17:16 particle no
17:17 particle not all OSes treat null comparison as eq, do they?
17:17 particle s/eq/==/
17:17 particle i'd have to check the c89 spec
17:17 Infinoid uh, they should
17:17 Infinoid I think its a compiler thing, not an OS thing
17:17 particle oh, yeah, maybe compiler
17:17 particle that's what i think i meant. Infinoid++
17:18 particle could be a pessimization, check 'blame'
17:18 DietCoke if it's there for a reason, it should be commented.
17:18 Infinoid "Two null pointers, converted through possibly different sequences of casts to pointer types, shall compare equal." -- http://rm-f.net/~orange/devel/​specifications/c89-draft.html
17:19 Infinoid (whether that's authoritative or not, I dunno, but it matches my expectations.)
17:20 pmichaud Parrot's "string_equal" function is totally misnamed.
17:21 NotFound More questions: a null STRING * is equal to an empty string? The code says yes.
17:21 pmichaud string_equal returns 0 when the strings are equal.  But apparently it's been like that since ~r4000 or so.
17:22 DietCoke Seems like a good cage task.
17:22 Infinoid it would seem a lot more intuitive to call it "Parrot_strcmp" or somesuch
17:22 NotFound And to make the thing more funny, it returns 1 in both null-non null cases.
17:23 DietCoke HA!
17:23 TimToady anybody know if there's going to be hackathonery around OSCON?
17:23 pmichaud TimToady: if there is, it will be the saturday following.
17:23 particle aye
17:24 pmichaud I haven't heard the story for sunday yet.  I've reserved a room for Sunday night just in case (although my flights are currently booked for Sun also -- but those can be moved.)
17:24 NotFound But using strcmp style when we are interested only in equality is a vaste of time.
17:24 TimToady Glo is trying to figure out hotel dates...
17:24 TimToady .oO(strEQ)
17:24 nopaste "particle" at 98.232.7.104 pasted "win32+msvc svn head test failure report :(" (80 lines) at http://nopaste.snit.ch/13223
17:25 pmichaud the   string_equal(a,b) == 0    test is used quite a bit in Parrot.
17:25 pmichaud I agree that something like strEQ would be worthwhile, as longas there's not too much confusion with STREQ
17:26 pmichaud when I first saw   string_equal(a,b) == 0   (about 10 days ago)   my initial thought was  "What the ...?!?!"
17:26 NotFound But is a PARROT_API function, it must be prefixed.
17:27 pmichaud TimToady: okay, I'll start posting my language+spec interpretation questions to p6l
17:27 tewk With a name like string_equals one would think the result would be a boolean. instead we get a inverted boolean result.
17:27 pmichaud (instead of p6c)
17:27 NotFound Yes, to more confussion it does nor work really like strcmp: return 1;       /* we don't care which is bigger */
17:30 * pmichaud starts writing his #parrotsketch report.  60 mins for those keeping score.
17:31 * particle can't build perl 6
17:31 NotFound pdd28_strings reflects the current state?
17:31 pmichaud pdd28_strings reflects the wannabe state.
17:32 pmichaud i.e., it's a design spec but not yet implemented (iiuc)
17:32 NotFound Then the current implementation of string_equal is broken, IMO.
17:32 NotFound strlen - The length of the string, in bytes. {{NOTE, not in characters
17:33 NotFound So the string can be character-equal and string_equal report as not equal.
17:34 Tene #ps in 1 hour?
17:35 particle affirmative
17:35 NotFound And the =item says: Compares two Parrot strings, performing type and encoding conversions if necessary.
17:36 NotFound But the checked conversion is done *after* length comparaison.
17:39 barney joined #parrot
17:39 Whiteknight joined #parrot
17:50 Zaba joined #parrot
17:56 Whiteknight joined #parrot
17:58 wknight8111 joined #parrot
18:00 donaldh joined #parrot
18:06 barney Anybody knows have variable name are aliased in PAST. I tried creating an node with :pasttye('bind') and :name('infix::=') but that acted like a value assignment
18:07 pmichaud :pasttype('bind') means the :name isn't going to be used for anything.
18:07 pmichaud a 'bind' node expects a PAST::Var as its first child, and some other expression as its second
18:08 pmichaud the first child is then bound to the second
18:09 purl joined #parrot
18:09 barney And how do I distinguish between assignment and aliasing ?
18:10 pmichaud assignment is done using an 'assign' or 'copy' opcode
18:10 pmichaud i.e., replace an existing PMC with a new value.
18:12 tewk pmichaud: I've got myself in a pge corner again.  I added >> to builtin_type so int32_t wouldn't parse as int. int32_t now parses but int doesn't.  I take out the >> and int parses but not int32_t.
18:13 particle umm, huh?
18:14 particle tewk: you have included 'int32_t'|'int' ??
18:14 NotFound Again on strings, the string_substr function is called by several opcodes with unchecked string register values, but does not allow a null string argument.
18:15 particle notfound: these items would all make excellent cage tickets
18:15 particle "this looks funny, what should it be converted to?" type things
18:16 tewk No there is a rule for parsing builtin types (int) and a different rule for parsing typedefed types.
18:16 particle tewk: where's the code?
18:16 purl well, the code is "THE CODE, I NEED THE CODE!!"
18:18 NotFound particle: I think that deciding if to change the signature of public api functions is not a simple cage cleaning.
18:19 particle notfound: yeah, i guess you're right. but they're excellent list questions or rt tickets
18:19 particle much better there than over irc, because more folks will be able to respond
18:19 NotFound Agree.
18:21 chromatic joined #parrot
18:22 Topic for #parrotis now Parrot 0.6.2 "Reverse Sublimation" Released | http://parrotcode.org/ | 6/661 new/open tix | logged in http://irclog.perlgeek.de/parrot/today
18:22 NotFound I think will be better to completely drop the nonnull parameter usage. It's almost impossible to check his correct usage from jit.
18:24 barney After binding, with pasttype('bind'), a Past::Var $a to a Past::Var $b shouldn't $a change when $b is changed?
18:25 DietCoke questions can also go to the tracking with [RFC] in the subject.
18:25 chromatic NotFound, did you ever send in a CLA?
18:25 DietCoke PS in 5.
18:26 Ivatar joined #parrot
18:26 pmichaud barney: depends on how $b is being changed.  If $b is rebound, that doesn't affect $a.
18:26 pmichaud i.e., $a still remains bound to whatever $b was bound to before the rebind
18:26 NotFound chromatic: not yet, I expect to send it this week.
18:26 pmichaud NotFound: Send it in!  You may already be a winner!
18:27 pmichaud (probably only makes sense in the U.S.)
18:27 DietCoke ... if there. =-P
18:27 barney pmichaud: Yes, $b is rebound. That explains it.
18:27 DietCoke (me does get it, just poking. =-)
18:35 pmichaud #parrotsketch on now (for those who are interested)
18:36 Zaba joined #parrot
18:41 Zaba_ joined #parrot
18:50 DietCoke pf-proposals TV shield distributor wanted
18:51 Tene DietCoke: how urgently do you care about the ATTR stuff?  I just read the mails about it.
18:51 DietCoke tene: meh.
18:52 DietCoke I care more about the HLL stuff.
18:52 chromatic It's probably 90 minutes of work.
18:54 Zaba joined #parrot
18:57 DietCoke DOOOO it.
19:01 allison joined #parrot
19:02 Tene Maybe I'll try to finally churn through the builtins in the class hierarchy.
19:02 Tene for cardinal
19:03 pmichaud afk
19:04 Whiteknight allison, question for you
19:04 cognominal joined #parrot
19:06 allison whiteknight: yes?
19:06 Whiteknight would it be worthwhile, perhaps in the distant future, of turning the GC into a PMC?
19:06 PerlJam Whiteknight: and then the GC and collect itself?  :)
19:07 Whiteknight well, the scheduler is a PMC now, which is motivation for the question
19:07 allison whiteknight: I'm trying to think of the possible benefits...
19:07 Whiteknight plus, we would be able to hot-swap GCs during run time, convert GC-related opcodes to PMC methods, etc
19:07 PerlJam s/and/can/  weird brain-o there
19:08 allison GC at the moment is a pile of function pointers, and some state data
19:08 allison but, it's a different set of function pointers than the standard vtable set
19:08 Whiteknight "pile of function pointers" -> methods or vtables
19:08 allison aye
19:08 Whiteknight true, it would require a little fudge
19:08 allison so it's definitely conceptually close to an object
19:09 Whiteknight I'm mostly thinking about testing, I'm looking for interfaces that would let us look into the GC for testing
19:10 allison I think the only benefit of making it a PMC would be related to reclaiming the memory it uses, but there's only on GC "object" for each interpreter
19:10 Whiteknight Anyway, this is a long way off in any case, definitely post-1.0. I could leave a few openings to prepare for it though
19:10 Whiteknight true, but different compilers might like different GC cores, and we could hot-swap on an eval
19:10 Zaba_ joined #parrot
19:11 allison definitely keep it in mind, especially when thinking about respecting the encapsulation boundaries of the GC
19:11 allison that'll give us cleaner code, even if the GC always remains as a unique kind of "object"
19:11 PerlJam It also sounds like you could have a GCed form of "shared memory" between interpreters.
19:12 Whiteknight okay, thanks for the feedback, this isn't anything i'm going to try any time soon
19:13 cotto-work allison, will #parrotsketch be at the same time next week?
19:14 PerlJam you guys could do #ps in person if everyone goes to yapc  :)
19:14 allison cotto-work: we didn't make a final call in the meeting, we often skip the weekly meetings in the middle of conferences
19:14 cotto-work good to know
19:14 particle oops, missed parrotsketch
19:14 * particle notices tewk missed it too :(
19:16 DietCoke Executive decision, no PS.
19:16 allison okay, no PS next week
19:16 DietCoke I would like to see a writeup to the list of "what happened in parrot at yapc", though.
19:16 Tene Fine, I'll just hold #ps without you guys!
19:16 * cotto-work struggles to avoid executed parrot jokes
19:19 Zaba joined #parrot
19:20 tewk tewk:  was there just quiet.  I read parrotsketch religiously
19:20 particle tewk: you're supposed to report your weekly soc status there
19:25 tewk Will do, last week was a little slow.  I've been spending my time fighting with PGE.
19:29 wknight8111 last week was slow for me too. I've been fighting with comcast
19:33 particle why don't you two let comcast and pge fight it out?
19:44 * DietCoke finds noodles that have 0 calories.
19:44 DietCoke ... that's a lot of fiber.
19:50 NotFound joined #parrot
20:12 sjansen joined #parrot
20:17 tewk pmichaud: ping
20:20 nopaste "tewk" at 155.97.237.62 pasted "PGE >> troubles" (47 lines) at http://nopaste.snit.ch/13226
20:22 tewk particle: I have a diff you can look at, but the above nopaste is a smaller illustration of my problem.
20:23 particle tewk: why use a rule and not a token?
20:23 particle for builtin_type?
20:25 avar How is "$builtin_type <ws> >>" supposed to match "int Oid;" ?
20:25 tewk I guess I could add an explicit <ws> between unsigned and int.
20:25 tewk avar thats my problem! Thanks.
20:26 tewk so should I write <builtin_type>>> or move the >> inside builtin_type and make builtin_type a token.
20:26 particle yes
20:26 tewk the latter I take it.
20:26 particle i'd make it a token, and put >> inside
20:27 tewk I had >> inside to start with.  I made it a rule because of the whitespace between <signed> and int, but I guess I can add that <ws> explicitly.
20:27 tewk Going to try it.
20:29 tewk Works avar++ particle++.
20:29 particle use <.ws> you don't need to capture it
20:30 tewk I wasted half a day on that one.
20:30 avar That should teach you to enslave irc people to write your code for you
20:34 tewk My problem is that I write serious PGE code once every six months and I forget everything after a month of not using it.
20:35 particle yeah, that is a problem
20:35 pmichaud file an rt ticket :-)
20:36 particle to:parrotbug@parrotcode.org\nsubject:write more pge\n\ndear self...
20:36 NotFound Maybe is better to forget all, that way you can learn the changed syntax without interferences X-)
20:37 particle bank &
20:40 tewk When things click in PGE, it is one of the most productive tools I've ever used.
20:43 Tene I've never really tried using anything else for parsing.
20:43 Tene much.
20:44 barney joined #parrot
20:47 tewk There are a lot of cool parsing tools/projects out there.  Very few are maintained at production quality over time.
20:56 Zaba_ joined #parrot
21:03 tewk How do I do a charcter class in PGE these days that accepts an X or a x?    <[xX]>?
21:04 pmichaud yes.
21:07 davidfetter joined #parrot
21:07 slightlyoff joined #parrot
21:12 sjansen joined #parrot
21:18 tewk I just parsed 4880 line c program including system headers and it only took 1:30  :).
21:20 Infinoid ooo
21:25 DietCoke if I have a macro helper(.foo), and invoke it like .helper('foo'), is there a way to get that to create a named pmc called helper_foo ?
21:31 DietCoke (I'm try to remove a bunch of boilerplate that looks up something in another namespace and provides a local pmc you can use to invoke it.)
21:35 tewk I'm parsing a 8000 line program and spending all my time in gc :(
21:36 tewk 150m RSS has been running for almost 10 minutes.
21:36 Tene Hm.  It might be fun to add Role support to cardinal, even though afaict it doesn't exist in ruby.
21:37 tewk ruby has mixins, which are similar to roles.
21:37 chromatic gack
21:38 Tene Similar, eh?
21:38 * Tene reads.
21:38 jonathan You can implement mix-ins with inheritance.
21:38 chromatic "When I suggested roles, I can tell you that I did not have mixins in mind."
21:39 jonathan :-)
21:40 chromatic Nor interfaces.
21:40 * Tene teach again bbiab.
21:41 jonathan Sure, but roles can be used to provide both of those too.
21:41 tewk Could be a bug in my code as well, but I'm in GC a lot.
21:42 chromatic You can drive in nails with a dull rock, but that doesn't make it a substitute for a hammer.
21:42 chromatic Not a *good* substitute that is.
21:45 chromatic tewk, your app should spend 25-40% of its time in GC.
21:45 NotFound Adding roles to RPG will be great X-)
21:46 tewk Well its still going so it might a bug I've introduced.
21:46 cotto-work chromatic, is that typical of CG-ed (dynamic) languages?
21:46 cotto-work s/CG/GC/
21:46 Whiteknight I would hope it would be towards the low end of that count, and possibly further then that
21:47 chromatic 10% is more reasonable.
21:47 tewk Its typical of unoptimized runtimes (parrot) and naive GC implmentations.
21:47 chromatic Our sweep is very inefficient, and global stop the world mark and sweep is somewhat inefficient.
21:47 Whiteknight for applications that aren't too memory intensive, GC should be negligible
21:47 chromatic Also for long-running applications, where there are many small allocations.
21:48 chromatic (In that case, avoiding memory fragmentation is a benefit.)
21:59 IllvilJa joined #parrot
22:01 Limbic_Region joined #parrot
22:12 Khisanth joined #parrot
22:26 tewk chromatic: something must be leaking somewhere, my parser is making progress but slowly.
22:30 tewk What can I do to profile it or provide more information?
22:32 chromatic If you can pare down the parse file to something that runs in 30 seconds or so, you can run callgrind on the parse and see what happens.
22:32 chromatic A few minutes with kcachegrind should show some interesting data.
22:32 chromatic This presumes you're on a platform with valgrind and kcachegrind.
22:35 tewk It starts out fast and progressively gets slower.
22:36 chromatic We should be able to see trends though.
22:37 chromatic The problem with an O(2n) GC (and yeah, lots of handwaving to get it there) is that it gets expensive as n goes up.
22:37 chromatic ... but it's never *not really* expensive.
22:37 chromatic So it should show up in any profile that does something useful.
22:38 * tewk goes to try and find a ~30 second file to parse
22:40 cjfields joined #parrot
22:40 chromatic 15 might be better.  I've been using the Rakudo actions.pm file for profiling these past few months.
22:40 chromatic It takes about 10 minutes to run a callgrind profile, which isn't too bad.
22:46 chromatic joined #parrot
23:09 Eevee joined #parrot
23:28 ank joined #parrot
23:33 Eevee joined #parrot
23:44 TiMBuS joined #parrot
23:45 grim_fandango joined #parrot
23:57 Eevee joined #parrot

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

Parrot | source cross referenced