Camelia, the Perl 6 bug

IRC log for #parrot, 2010-07-25

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:19 AndyA joined #parrot
01:14 chromatic joined #parrot
01:17 rurban_ joined #parrot
01:21 Austin Grr. What happened to backtrace?
01:27 Austin joined #parrot
01:28 mtk joined #parrot
01:32 [1]Casan joined #parrot
01:39 Tene backtrace problems?
01:40 Tene I had a fix for backtraces for rethrown exceptions in my exceptions branch... don't think I ever got it to trunk. :(
01:53 Austin Apparently the backtrace opcode went away...
01:53 Austin :(
02:12 cotto Austin, it's a dynop now
02:12 cotto debug.ops
02:12 Austin How's that work?
02:12 cotto like any other dynop, ideally
02:12 Austin Great...
02:12 purl great is the highest degree of goodness
02:13 cotto .loadlib 'debug_ops'
02:13 cotto ...
02:13 cotto backtrace
02:13 purl well, backtrace is not sufficient?
02:13 cotto profit
02:14 Austin Hmm.. how do I do .loadlib from nqp?
02:14 Austin ISTR having this conversation once before...
02:16 cotto You could probably use the loadlib op.  .loadlib doesn't work in nqp
02:16 cotto yes, it's a familiar conversation
02:16 cotto I'm amending the support policy as we speak
02:17 Austin Not the support policy, the loadlib from nqp thing.
02:17 Austin Lemme see what happens
02:20 Austin of course loadlib returns a result...
02:20 Austin grrr
02:21 dalek left #parrot
02:21 dalek joined #parrot
02:21 tcurtis I don't think loadlib op works for dynops. IMCC has to know about dynops to parse the PIR correctly.
02:22 tcurtis And to generate the correct PBC, too, of course.
02:22 Austin Yeah, you're right.
02:22 plobsing rakudo uses dynops. how does it manage this problem?
02:23 Austin Probably loads them and the compiles the client code afterwards.
02:23 * tcurtis guesses PIR.
02:24 tcurtis One way to do it would be to write a little PIR file that just contains function wrappers around the dynops.
02:26 Austin Maybe I could just dlsym the PDB_backtrace C code...
02:26 plobsing quick hack: Q:PIR { .end \n .loadlib 'my_ops' \n .sub '' }
02:27 plobsing might work
02:29 nopaste "Austin" at 192.168.1.3 pasted "increment/compare expressions not compatible in nqp with if" (20 lines) at http://nopaste.snit.ch/22281
02:30 nopaste "Austin" at 192.168.1.3 pasted "increment/compare expressions not compatible in nqp with if (teh sourcez)" (10 lines) at http://nopaste.snit.ch/22282
02:44 dalek tracwiki: v6 | cotto++ | ParrotDeprecations
02:44 dalek tracwiki: add 2.6 through 2.9
02:44 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Parro​tDeprecations?version=6&action=diff
02:44 dalek tracwiki: v2 | cotto++ | ParrotDeprecationsFor2.6
02:44 dalek tracwiki: add descriptions
02:44 dalek tracwiki: http://trac.parrot.org/parrot/wiki/ParrotDe​precationsFor2.6?version=2&action=diff
02:48 * cotto gets ready to kick the hornet's nest a bit
02:51 Austin Do that thing where you change some fundamental feature for no clearly-defined reason and manage to somehow render useless or ill-defined a whole bunch of existing code...
02:51 Austin That's always good.
02:52 sorear If we decided to drop the deprecation policy, would we need a deprecation cycle for it?
02:52 * cotto is actually hoping to do the opposite
02:53 cotto anyone care to review an update to the support policy?
02:54 janus joined #parrot
02:54 nopaste "cotto" at 192.168.1.3 pasted "support policy updates" (48 lines) at http://nopaste.snit.ch/22286
02:54 cotto ispell++
02:58 tcurtis cotto++ no complaints from me, but then again, someone who's only been around for one supported-release cycle isn't the best person to ask about the support policy. :)
02:59 cotto all non-purl input is welcome
03:04 Austin Looks good to me, if anyone will stick with it.
03:04 pmichaud_ joined #parrot
03:05 PerlJam joined #parrot
03:05 Util joined #parrot
03:08 tcurtis Austin: cotto can get a chainsaw in case they don't. :)
03:08 Austin Heh
03:08 Austin How do you export a method?
03:09 cotto Austin, good point.  I need to add something about reverting deprecations that don't meet those criteria.
03:09 cotto That's been the plan.  I just forgot to add it.
03:09 dukeleto joined #parrot
03:23 nopaste "cotto" at 192.168.1.3 pasted "support policy updates, now with teeth" (52 lines) at http://nopaste.snit.ch/22287
03:23 tcurtis s/subject reversion/subject to reversion/
03:25 cotto fixt
03:25 cotto teeth?
03:25 purl teeth are optimal for earlobes?
03:26 cotto no, teeth is http://www.youtube.com/watch?v=Lzw6nRnaQG0
03:26 cotto teeth?
03:26 purl well, teeth is http://www.youtube.com/watch?v=Lzw6nRnaQG0
03:26 cotto got yer teeth right there
03:29 tcurtis "The single (rare) exception to this rule is any core feature which is broken or incomplete to the point that it is deemed unusable by any user." +1
03:30 cotto I call that the "Task clause"
03:39 Andy joined #parrot
03:42 cotto I think nobody will complain if such features get removed without any deprecation (and considerable proof that the system is crap), but if not at least it won't foist a useless deprecation notice on the committer.
03:44 cotto any thoughts before I go off to parrot-dev?
03:57 chromatic joined #parrot
03:58 snarkyboojum joined #parrot
03:59 cotto hio chromatic
04:00 chromatic evening
04:01 sorear ello chromatic
04:01 chromatic ~1
04:05 PerlJam joined #parrot
04:12 dalek website: tcurtis++ | Cleaning up and speeding up optimizations with Tree::Optimizer
04:12 dalek website: http://www.parrot.org/content/cleaning-a​nd-speeding-optimizations-treeoptimizer
04:27 cotto The only optimizer strong enough to optimize other optimizers.
04:32 tcurtis cotto: It should be fairly simple to implement. Traverse the PAST, checking each pattern in dependency-respecting order. If they match, apply the transformation.
04:32 cotto Yeah.  It's not actually that hard.
04:33 cotto an optimizer is just code
04:33 sorear there is a story (apocryphal?), that Nicolas Wirth considered a Modula-3 optimization worth using if it made the optimizer faster by its inclusion
04:38 cotto sounds kinda silly unless a language's primary application is to optimize itself
04:38 chromatic Depends how representative your program is.
04:39 sorear For most minor languages, the compiler *is* the main user.
04:39 cotto This is true.
04:39 sorear Or at least the largest single user.
04:42 chromatic http://lampwww.epfl.ch/papers/idealhashtrees.pdf
04:46 LoganLK joined #parrot
04:53 jsut_ joined #parrot
04:56 dalek tree-optimization: 8281693 | tcurtis++ | src/Tree/Pattern.nqp:
04:56 dalek tree-optimization: Explain the options to Tree::Pattern.ACCEPTS.
04:56 dalek tree-optimization: review: http://github.com/ekiru/tree-optimization/com​mit/8281693c10220ebb0ee62840cfa441c2db21d1da
05:43 simcop238 joined #parrot
05:47 somebody_ joined #parrot
06:49 fperrad joined #parrot
07:48 cognominal joined #parrot
08:16 Casan joined #parrot
08:25 cotto p&w?
08:25 purl p&w is http://tinyurl.com/23dfwut
08:47 TiMBuS joined #parrot
08:53 lucian joined #parrot
09:17 rurban_ joined #parrot
10:55 cotto tcurtis++ for the blagging
12:36 JimmyZ joined #parrot
12:59 Austin joined #parrot
13:43 tcurtis joined #parrot
13:59 macroron joined #parrot
14:30 JimmyZ joined #parrot
14:31 jan joined #parrot
14:54 khairul joined #parrot
15:09 Austin joined #parrot
15:09 Austin_Hastings joined #parrot
15:14 Austin_Hastings moo.
15:15 Austin_Hastings Woot
15:15 Austin ahh
15:21 darbelo o/
15:29 Austin Given a namespace, where are the methods?
15:29 darbelo Not in the namespace.
15:30 darbelo There's a hash stashed somewhere in there, but I'm not sure how kosher it is to poke it.
15:30 Austin If   7 inspect nsp, 'class' 0 is null, then the methods are in 7 inspect nsp, 'methods' 0
15:30 Austin whoops
15:30 Austin If   7 inspect nsp, 'class'  is null, then the methods are in 7 inspect nsp, 'methods' 0
15:31 Austin sorry, I keep thinking C0 when I should )
15:31 Austin *O
15:33 Austin So: if $nsp->class is null, then $nsp->methods, else $nsp->class->methods.
15:33 Austin Except that $nsp->class->methods may have methods from a different namespace, if they got exported or added or whatever.
15:34 darbelo That'd be my guess.
15:34 Austin Yeah.
15:34 Austin Traceability.
15:34 Austin We don't has it.
15:35 Austin I'm guessing you haven't seen the recent Direct TV commercial featuring the russian billionare?
15:36 darbelo Nopes. I seem to be on the wrong hemisphere for cool tv comercials.
15:37 Austin http://www.youtube.com/watch?v=AkM​sSIjQXxo&feature=youtube_gdata
15:37 Austin "Opulence, I has it."
15:37 Austin The first 10 seconds are funny, the rest is tripe. Except the giraffe
15:38 darbelo giraffes++
15:48 Austin The thing that really pisses me off about the method tax here is having to type pir:: so many times. Kakapo is supposed to be about getting away from pir. :(
15:49 darbelo Yeah, well, NQP is all about hiding away the ugly pir-y details.
15:50 darbelo It's no surprise you have to use pir:: to get at them.
15:52 darbelo And, if I recall correctly, classes have a method that returns the 'methods' hash. I think it's 'methods', but could be wrong.
15:52 Austin Where is the constants list for vtable->base_type ?
15:53 Austin Heh.
15:54 Austin core_pmcs.h
15:54 Austin enum_class_xxx
15:54 Austin 56 = HashIteratorKey
15:54 Austin Iterators fail again.
15:55 darbelo include/parrot/core_pmcs.h
15:56 Austin Should there be a "get_pmc" vtable?
15:56 darbelo If it's not one of those, it's a dynpmc and you have to inspect it.
15:56 Austin Except it wouldn't really be "get_pmc"
15:56 Austin It would be "get_value" or something.
15:56 moritz Austin: uhm, what would it return, except self?
15:57 Austin moritz: Iterators would not return self.
15:57 Austin Anything else that's a proxy, would also not return self.
15:57 darbelo Austin: What are you trying to do to that poor iterator?
15:57 moritz Austin: I guess it would be kinda hard to figure out when to call it and when not
15:57 moritz Austin: sinc parrot doesn't have a clear container/value distinction
15:58 nopaste "Austin" at 192.168.1.3 pasted "What I wanted to do" (4 lines) at http://nopaste.snit.ch/22294
15:58 nopaste "Austin" at 192.168.1.3 pasted "What I ended up doing" (7 lines) at http://nopaste.snit.ch/22295
15:59 Austin Yeah, I can easily see it being called way too much.
16:00 Austin So the add_sub code checks the type of the thing being added
16:00 Austin Not unreasonable.
16:01 Austin But the container/value thing makes it hard to really use the iterator.
16:01 Austin Is this a PAST thing?
16:02 Austin Should there be a "get rvalue" op that optimizes away for all but iterators?
16:02 darbelo Not a PAST thing, iterating over a hash return the key-value pairs.
16:02 Austin ??
16:04 Austin darbelo: can you clarify that last?
16:04 darbelo src/pmc/hashiterator.pmc
16:04 darbelo It has examples at the top that islustrate my point.
16:04 moritz Austin: nqp doesn't wrap Perl 6 semantics on top of parrot builtins
16:05 moritz in Perl 6 you'd write   for %thing.kv -> $k, $v { ... }
16:06 Austin Would I?
16:07 Austin (Ironically, kakapo includes a Hash.kv method. But I can't call it before I configure all the methods, which is what this horrible method tax is about...)
16:56 dalek TT #1718 created by Austin++: `NameSpace.add_sub($name, &sub)` does not honor given name for methods
16:56 dalek TT #1718: http://trac.parrot.org/parrot/ticket/1718
17:02 Austin left #parrot
17:02 Austin joined #parrot
17:02 Austin Bah. wrong window
17:12 eternaleye joined #parrot
17:14 s1n joined #parrot
17:17 rurban_ joined #parrot
17:31 theory joined #parrot
17:33 dalek rakudo: 1ccf35d | pmichaud++ | src/ (7 files):
17:33 dalek rakudo: Convert Nil to be a constant (finally!) instead of treating it like a
17:33 dalek rakudo: subroutine.
17:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​ccf35d54f8bd46dc0afeb9aa8adb02ffc682649
17:33 dalek rakudo: 83e0bdd | pmichaud++ |  (6 files):
17:33 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
17:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/8​3e0bdd3fe37b3784ff503136373ca97d53ad1e7
17:33 dalek rakudo: d1f2e59 | pmichaud++ |  (6 files):
17:33 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
17:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/d​1f2e59c00807a4080077c6c0f79c93778669748
17:33 dalek rakudo: e991c43 | pmichaud++ | src/ (2 files):
17:33 dalek rakudo: Merge branch 'master' of github.com:rakudo/rakudo
17:33 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/e​991c43e8c2a7321641c758a3ffc11382103eb55
17:42 plobsing joined #parrot
18:07 Andy joined #parrot
19:23 lucian joined #parrot
19:30 dalek rakudo: b46a3b3 | jonathan++ | src/Perl6/Actions.pm:
19:30 dalek rakudo: Avoid using a PAST::Var register node as the result of a smart-match, since it
19:30 dalek rakudo: ends up with the code-gen wrong if we use a PAST::Stmts to hold them. This
19:30 dalek rakudo: avoids issues that the block trick introduced.
19:30 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​46a3b3f05f24dd2909a8d7f53014225fac93d67
20:20 hercynium joined #parrot
20:26 patspam joined #parrot
20:44 tewk_ c
20:46 [1]Casan joined #parrot
20:48 whiteknight joined #parrot
20:56 wknight8111 joined #parrot
21:06 darbelo On days like this, I truly hate the tangled mass of misdirected function pointers we call our string API.
21:07 darbelo Also, can anyone come up with a benchmark where string performance isn't totally overshadowed by pcc and gc overhead?
21:12 Austin If string performance is O(irrelevant), why are you working on it?
21:13 darbelo I'm not working on performace, per se. I'm cleanin up the string API, as best I can manage.
21:14 Austin Ah.
21:14 darbelo As far as I can tell, performance is O(irrelevant) when compared to pcc or gc.
21:16 darbelo If there's a case where it isn't, I'd rather know now, before I make it slow. :)
21:19 darbelo There's also enough tangled mis-indirection in here that we might become a bit faster in the end, though.
21:21 Austin Here's a question: given that namespaces support an 'export_to' operation, what's the behavior of exporting a method?
21:21 darbelo I have absolutely no idea what you are talking about.
21:21 Austin That is, what's the "useful and works" behavior, ideally, as opposed to the current parrot behavior...
21:22 darbelo
21:22 Austin A namespace is a kind of PMC.
21:22 Austin Actually, "NameSpace"
21:23 Austin Which has  C-level method called 'export_to'
21:23 Austin Which pretends to export named entries from the namespace to a target.
21:23 darbelo That much I know.  I just have never actually called that method, nor have any expectations concerning it's correct functioning.
21:23 Austin Yeah
21:24 Austin You and every other committer, I think.
21:24 Austin Except perhaps Tene.
21:24 darbelo I intentionally stay as far away from parrot's object model as I can manage.
21:24 Austin Heh
21:24 Austin darbelo++
21:24 Austin Smart move.
21:26 darbelo I fear that if I look at it I'll see how broken it is and feel compelled to fix it.
21:27 darbelo I also know that sharpened sticks and code will do little to harm the Great Old Ones that have taken residence in there.
21:28 Tene Austin: Everything stored in the namespace (or just the named items) are exported to the destination namespace.  A method in a namespace is no different from any other PMC.
21:28 Tene IMO
21:28 Austin I'm inclined to agree.
21:28 Austin And to write the code that supports that agreement,
21:28 Austin which is becoming more and more difficult.. :(
21:29 Austin Of course, the `export_to` method (in namespace.pmc) doesn't support methods...
21:29 Tene Erm.  That sounds very wrong to me.  Let me check.
21:30 Austin It uses the hash interface, and methods aren't visible any more unless you do (something) to make them so..
21:30 Tene Um.
21:30 Tene I didn't mean those.
21:30 Tene Those are methods on a class *not* available through the namespace.
21:30 Austin ?
21:30 Tene If you want a method in the namespace, mark it :nsentry
21:30 Austin Ahh
21:31 Austin How do you do that in NQP?
21:31 Tene If it supports it, it would be: our method foo ...
21:31 jnthn If implemented, the correct syntax is "our method foo() { ... }"
21:31 Tene If it doesn't, that shouldn't be hard to add.
21:34 Austin Yeah.. not impleemtned
21:35 Tene 'k, lemme look
21:36 jnthn Mebbe just a case of spotting $*SCOPE eq 'our' and adding :nsentry to pirflags
21:36 Tene prolly
21:44 Tene Yeah, it was that simple.
21:44 Tene I can commit to nqp-rx, but I don't know how to bring updates into parrot..
21:46 Tene Austin: I just pushed to nqp-rx, any chance you could check if that does what you want?
21:47 dalek nqp-rx: 96bc191 | tene++ | src/NQP/Actions.pm:
21:47 dalek nqp-rx: Set :nsentry on our methods
21:47 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/9​6bc19114a3962c356304c11b20768ef11fe91ba
21:48 Austin I'll check it out in a bit..
21:49 dolmen joined #parrot
21:50 Tene Austin: Please let me know whatever I need to do to make this work for you. :)
21:51 Austin MAke me a sandwich.
21:51 darbelo sudo make me a sandwich.
21:52 Austin :)
21:52 Austin xkcd++
21:53 Austin http://xkcd.com/149/
21:56 Tene Austin: the gf is in the kitchen cooking lunch; you're free to come hang out here if you'd like.
21:56 Tene Bit of a commute, though.
21:57 Austin Depends on how good the sandwich is, I guess.
21:59 Austin Unicorn tongue on a gold-leaf encrusted ciabatta bun with truffles and ambergris mustard might be worth it...
22:00 * darbelo passes. Auric intolerance.
22:00 Austin If it had some bacon it would definitely be worth it.
22:01 Austin Speaking of bacon...
22:01 Austin I think it's time for Chinese food..
22:06 Tene No sandwich.  Just fried rice and vegetables.
22:07 Tene I guess I could make a sandwich.  I've got... plain wheat bread and nutella?
22:07 darbelo . o O ( Fried rice sandwich... )
22:09 Tene Yeah!  fried rice and nutella!
22:19 whiteknight Hello Austin, how are you today?
22:19 Tene Austin is AFK, I think.
22:20 Austin Howdy, Whiteknight! I'm trying to pay the method tax, and getting ready to settle for chinese food...
22:21 whiteknight Austin: I'm still fighting with kakapo. Getting slightly further every day I unintelligibly fumble with it
22:21 Austin Strange coincidence. Me too.
22:21 Austin :(
22:22 Tene whiteknight: You're also having issues with methods in namespaces?
22:22 whiteknight every day
22:22 purl every day is a good telecommute day or two werds
22:23 Austin Spam. I has it.
22:23 Austin Ok, now I'm afk.
22:23 Tene whiteknight: after my last commit to nqp-rx, 'our method foo()' should put the method in the namespace like 'method foo()' did before.
22:24 Tene I'm hoping to get confirmation from someone having trouble with methods in nqp that it works for them before I try to figure out how to get it into the parrot repo.
22:25 whiteknight Tene: that sounds fabulous
22:26 Tene I mentioned this as the right thing to do the last time I talked about it, but it apparently didn't happen, and I had a spare tuit.
22:28 whiteknight purl msg Austin I think has() also no longer works as expected, SoI've been removing it and changing around accessors to use a more "normal" syntax when I can. I'm not sure if it's been necessary, but does seem to get rid of some errors I'ce been seeing.
22:28 purl Message for austin stored.
22:34 theory joined #parrot
22:41 cotto ~~
22:42 Tene !!
22:46 [1]Casan joined #parrot
22:55 bacek joined #parrot
22:56 aloha joined #parrot
23:27 darbelo aloha, aloha. Nice to have you back.
23:38 fperrad joined #parrot
23:48 dalek parrot: r48172 | darbelo++ | branches/gsoc_nfg/src/string (2 files):
23:48 dalek parrot: Replace UNORM_DEFAULT with UNORM_NFC as ICU composition target.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48172/
23:48 dalek parrot: r48173 | darbelo++ | branches/gsoc_nfg (6 files):
23:48 dalek parrot: There's no point to having a charset function that eventually always delegates to the encoding.  Remove it and just call the encoding function.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48173/
23:48 dalek parrot: r48174 | darbelo++ | branches/gsoc_nfg (8 files):
23:48 dalek parrot: Remove the get_bytes encoding function. Most encodings didn't implement it properly and now the bytebuffer PMC has rendered it moot.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48174/
23:48 dalek parrot: r48175 | darbelo++ | branches/gsoc_nfg (3 files):
23:48 dalek parrot: Delete misleading CHARSET_ macros that forwarded to the string's encoding.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48175/
23:48 dalek parrot: r48176 | darbelo++ | branches/gsoc_nfg/include/parrot/charset.h:
23:48 dalek parrot: Remove a misnamed macro for an already removed function.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48176/
23:48 dalek parrot: r48177 | darbelo++ | branches/gsoc_nfg (2 files):
23:48 dalek parrot: Remove an uncalled function.  Our uses of ICU don't need a data directory.
23:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48177/
23:49 dalek parrot: r48178 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
23:49 dalek parrot: Obliterate trailing whitespace.
23:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/48178/
23:57 Psyche^ joined #parrot

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

Parrot | source cross referenced