Parrot 2.6.0 | parrot.org Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | fix 'make html' (talk to Coke), update tutorial (talk to tcurtis)
Set by moderator on 21 July 2010.
00:19 AndyA joined 01:14 chromatic joined 01:17 rurban_ joined
Austin Grr. What happened to backtrace? 01:21
01:27 Austin joined 01:28 mtk joined 01:32 [1]Casan joined
Tene backtrace problems? 01:39
I had a fix for backtraces for rethrown exceptions in my exceptions branch... don't think I ever got it to trunk. :( 01:40
Austin Apparently the backtrace opcode went away... 01:53
:(
cotto Austin, it's a dynop now 02:12
debug.ops
Austin How's that work?
cotto like any other dynop, ideally
Austin Great...
purl great is the highest degree of goodness
cotto .loadlib 'debug_ops' 02:13
...
backtrace
purl well, backtrace is not sufficient?
cotto profit
Austin Hmm.. how do I do .loadlib from nqp? 02:14
ISTR having this conversation once before...
cotto You could probably use the loadlib op. .loadlib doesn't work in nqp 02:16
yes, it's a familiar conversation
I'm amending the support policy as we speak
Austin Not the support policy, the loadlib from nqp thing. 02:17
Lemme see what happens
of course loadlib returns a result... 02:20
grrr
02:21 dalek left, dalek joined
tcurtis I don't think loadlib op works for dynops. IMCC has to know about dynops to parse the PIR correctly. 02:21
And to generate the correct PBC, too, of course. 02:22
Austin Yeah, you're right.
plobsing rakudo uses dynops. how does it manage this problem?
Austin Probably loads them and the compiles the client code afterwards. 02:23
tcurtis guesses PIR.
One way to do it would be to write a little PIR file that just contains function wrappers around the dynops. 02:24
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 '' }
might work 02:27
nopaste "Austin" at 192.168.1.3 pasted "increment/compare expressions not compatible in nqp with if" (20 lines) at nopaste.snit.ch/22281 02:29
"Austin" at 192.168.1.3 pasted "increment/compare expressions not compatible in nqp with if (teh sourcez)" (10 lines) at nopaste.snit.ch/22282 02:30
dalek tracwiki: v6 | cotto++ | ParrotDeprecations 02:44
tracwiki: add 2.6 through 2.9
tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff
tracwiki: v2 | cotto++ | ParrotDeprecationsFor2.6
tracwiki: add descriptions
tracwiki: trac.parrot.org/parrot/wiki/ParrotD...ction=diff
cotto gets ready to kick the hornet's nest a bit 02:48
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
That's always good.
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
anyone care to review an update to the support policy? 02:53
02:54 janus joined
nopaste "cotto" at 192.168.1.3 pasted "support policy updates" (48 lines) at nopaste.snit.ch/22286 02:54
cotto ispell++
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:58
cotto all non-purl input is welcome 02:59
Austin Looks good to me, if anyone will stick with it. 03:04
03:04 pmichaud_ joined 03:05 PerlJam joined, Util joined
tcurtis Austin: cotto can get a chainsaw in case they don't. :) 03:08
Austin Heh
How do you export a method?
cotto Austin, good point. I need to add something about reverting deprecations that don't meet those criteria. 03:09
That's been the plan. I just forgot to add it.
03:09 dukeleto joined
nopaste "cotto" at 192.168.1.3 pasted "support policy updates, now with teeth" (52 lines) at nopaste.snit.ch/22287 03:23
tcurtis s/subject reversion/subject to reversion/
cotto fixt 03:25
teeth?
purl teeth are optimal for earlobes?
cotto no, teeth is www.youtube.com/watch?v=Lzw6nRnaQG0 03:26
teeth?
purl well, teeth is www.youtube.com/watch?v=Lzw6nRnaQG0
cotto got yer teeth right there
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:29
cotto I call that the "Task clause" 03:30
03:39 Andy joined
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:42
any thoughts before I go off to parrot-dev? 03:44
03:57 chromatic joined 03:58 snarkyboojum joined
cotto hio chromatic 03:59
chromatic evening 04:00
sorear ello chromatic 04:01
chromatic ~1
04:05 PerlJam joined
dalek website: tcurtis++ | Cleaning up and speeding up optimizations with Tree::Optimizer 04:12
website: www.parrot.org/content/cleaning-and...eoptimizer
cotto The only optimizer strong enough to optimize other optimizers. 04:27
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.
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
cotto sounds kinda silly unless a language's primary application is to optimize itself 04:38
chromatic Depends how representative your program is.
sorear For most minor languages, the compiler *is* the main user. 04:39
cotto This is true.
sorear Or at least the largest single user.
chromatic lampwww.epfl.ch/papers/idealhashtrees.pdf 04:42
04:46 LoganLK joined 04:53 jsut_ joined
dalek ee-optimization: 8281693 | tcurtis++ | src/Tree/Pattern.nqp:
Explain the options to Tree::Pattern.ACCEPTS.
04:56
05:43 simcop238 joined 05:47 somebody_ joined 06:49 fperrad joined 07:48 cognominal joined 08:16 Casan joined
cotto p&w? 08:25
purl p&w is tinyurl.com/23dfwut
08:47 TiMBuS joined 08:53 lucian joined 09:17 rurban_ joined
cotto tcurtis++ for the blagging 10:55
12:36 JimmyZ joined 12:59 Austin joined 13:43 tcurtis joined 13:59 macroron joined 14:30 JimmyZ joined 14:31 jan joined 14:54 khairul joined 15:09 Austin joined, Austin_Hastings joined
Austin_Hastings moo. 15:14
Woot 15:15
Austin ahh
darbelo o/ 15:21
Austin Given a namespace, where are the methods? 15:29
darbelo Not in the namespace.
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
whoops
If 7 inspect nsp, 'class' is null, then the methods are in 7 inspect nsp, 'methods' 0
sorry, I keep thinking C0 when I should ) 15:31
*O
So: if $nsp->class is null, then $nsp->methods, else $nsp->class->methods. 15:33
Except that $nsp->class->methods may have methods from a different namespace, if they got exported or added or whatever.
darbelo That'd be my guess. 15:34
Austin Yeah.
Traceability.
We don't has it.
I'm guessing you haven't seen the recent Direct TV commercial featuring the russian billionare? 15:35
darbelo Nopes. I seem to be on the wrong hemisphere for cool tv comercials. 15:36
Austin www.youtube.com/watch?v=AkMsSIjQXxo...tube_gdata 15:37
"Opulence, I has it."
The first 10 seconds are funny, the rest is tripe. Except the giraffe
darbelo giraffes++ 15:38
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:48
darbelo Yeah, well, NQP is all about hiding away the ugly pir-y details. 15:49
It's no surprise you have to use pir:: to get at them. 15:50
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 ?
Heh. 15:53
core_pmcs.h 15:54
enum_class_xxx
56 = HashIteratorKey
Iterators fail again.
darbelo include/parrot/core_pmcs.h 15:55
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.
Austin Except it wouldn't really be "get_pmc"
It would be "get_value" or something.
moritz Austin: uhm, what would it return, except self?
Austin moritz: Iterators would not return self. 15:57
Anything else that's a proxy, would also not return self.
darbelo Austin: What are you trying to do to that poor iterator?
moritz Austin: I guess it would be kinda hard to figure out when to call it and when not
Austin: sinc parrot doesn't have a clear container/value distinction
nopaste "Austin" at 192.168.1.3 pasted "What I wanted to do" (4 lines) at nopaste.snit.ch/22294 15:58
"Austin" at 192.168.1.3 pasted "What I ended up doing" (7 lines) at nopaste.snit.ch/22295
Austin Yeah, I can easily see it being called way too much. 15:59
So the add_sub code checks the type of the thing being added 16:00
Not unreasonable.
But the container/value thing makes it hard to really use the iterator. 16:01
Is this a PAST thing?
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.
Austin ??
darbelo: can you clarify that last? 16:04
darbelo src/pmc/hashiterator.pmc
It has examples at the top that islustrate my point.
moritz Austin: nqp doesn't wrap Perl 6 semantics on top of parrot builtins
in Perl 6 you'd write for %thing.kv -> $k, $v { ... } 16:05
Austin Would I? 16:06
(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:07
dalek TT #1718 created by Austin++: `NameSpace.add_sub($name, &sub)` does not honor given name for methods 16:56
TT #1718: trac.parrot.org/parrot/ticket/1718
17:02 Austin left, Austin joined
Austin Bah. wrong window 17:02
17:12 eternaleye joined 17:14 s1n joined 17:17 rurban_ joined 17:31 theory joined
dalek kudo: 1ccf35d | pmichaud++ | src/ (7 files):
Convert Nil to be a constant (finally!) instead of treating it like a
17:33
kudo: 83e0bdd | pmichaud++ | (6 files):
Merge branch 'master' of github.com:rakudo/rakudo
kudo: d1f2e59 | pmichaud++ | (6 files):
Merge branch 'master' of github.com:rakudo/rakudo
kudo: e991c43 | pmichaud++ | src/ (2 files):
Merge branch 'master' of github.com:rakudo/rakudo
17:42 plobsing joined 18:07 Andy joined 19:23 lucian joined
dalek kudo: b46a3b3 | jonathan++ | src/Perl6/Actions.pm:
Avoid using a PAST::Var register node as the result of a smart-match, since it

avoids issues that the block trick introduced.
19:30
20:20 hercynium joined 20:26 patspam joined
tewk_ c 20:44
20:46 [1]Casan joined 20:48 whiteknight joined 20:56 wknight8111 joined
darbelo On days like this, I truly hate the tangled mass of misdirected function pointers we call our string API. 21:06
Also, can anyone come up with a benchmark where string performance isn't totally overshadowed by pcc and gc overhead? 21:07
Austin If string performance is O(irrelevant), why are you working on it? 21:12
darbelo I'm not working on performace, per se. I'm cleanin up the string API, as best I can manage. 21:13
Austin Ah. 21:14
darbelo As far as I can tell, performance is O(irrelevant) when compared to pcc or gc.
If there's a case where it isn't, I'd rather know now, before I make it slow. :) 21:16
There's also enough tangled mis-indirection in here that we might become a bit faster in the end, though. 21:19
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.
Austin That is, what's the "useful and works" behavior, ideally, as opposed to the current parrot behavior...
darbelo 21:22
Austin A namespace is a kind of PMC.
Actually, "NameSpace"
Which has C-level method called 'export_to' 21:23
Which pretends to export named entries from the namespace to a target.
darbelo That much I know. I just have never actually called that method, nor have any expectations concerning it's correct functioning.
Austin Yeah
You and every other committer, I think. 21:24
Except perhaps Tene.
darbelo I intentionally stay as far away from parrot's object model as I can manage.
Austin Heh
darbelo++
Smart move.
darbelo I fear that if I look at it I'll see how broken it is and feel compelled to fix it. 21:26
I also know that sharpened sticks and code will do little to harm the Great Old Ones that have taken residence in there. 21:27
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
IMO
Austin I'm inclined to agree.
And to write the code that supports that agreement,
which is becoming more and more difficult.. :(
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.
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.
I didn't mean those.
Those are methods on a class *not* available through the namespace.
Austin ?
Tene If you want a method in the namespace, mark it :nsentry
Austin Ahh
How do you do that in NQP? 21:31
Tene If it supports it, it would be: our method foo ...
jnthn If implemented, the correct syntax is "our method foo() { ... }"
Tene If it doesn't, that shouldn't be hard to add.
Austin Yeah.. not impleemtned 21:34
Tene 'k, lemme look 21:35
jnthn Mebbe just a case of spotting $*SCOPE eq 'our' and adding :nsentry to pirflags 21:36
Tene prolly
Yeah, it was that simple. 21:44
I can commit to nqp-rx, but I don't know how to bring updates into parrot..
Austin: I just pushed to nqp-rx, any chance you could check if that does what you want? 21:46
dalek p-rx: 96bc191 | tene++ | src/NQP/Actions.pm:
Set :nsentry on our methods
21:47
Austin I'll check it out in a bit.. 21:48
21:49 dolmen joined
Tene Austin: Please let me know whatever I need to do to make this work for you. :) 21:50
Austin MAke me a sandwich. 21:51
darbelo sudo make me a sandwich.
Austin :) 21:52
xkcd++
xkcd.com/149/ 21:53
Tene Austin: the gf is in the kitchen cooking lunch; you're free to come hang out here if you'd like. 21:56
Bit of a commute, though.
Austin Depends on how good the sandwich is, I guess. 21:57
Unicorn tongue on a gold-leaf encrusted ciabatta bun with truffles and ambergris mustard might be worth it... 21:59
darbelo passes. Auric intolerance. 22:00
Austin If it had some bacon it would definitely be worth it.
Speaking of bacon... 22:01
I think it's time for Chinese food..
Tene No sandwich. Just fried rice and vegetables. 22:06
I guess I could make a sandwich. I've got... plain wheat bread and nutella? 22:07
darbelo . o O ( Fried rice sandwich... )
Tene Yeah! fried rice and nutella! 22:09
whiteknight Hello Austin, how are you today? 22:19
Tene Austin is AFK, I think.
Austin Howdy, Whiteknight! I'm trying to pay the method tax, and getting ready to settle for chinese food... 22:20
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.
:(
Tene whiteknight: You're also having issues with methods in namespaces? 22:22
whiteknight every day
purl every day is a good telecommute day or two werds
Austin Spam. I has it. 22:23
Ok, now I'm afk.
Tene whiteknight: after my last commit to nqp-rx, 'our method foo()' should put the method in the namespace like 'method foo()' did before.
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:24
whiteknight Tene: that sounds fabulous 22:25
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:26
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
cotto ~~ 22:41
Tene !! 22:42
22:46 [1]Casan joined 22:55 bacek joined 22:56 aloha joined
darbelo aloha, aloha. Nice to have you back. 23:27
23:38 fperrad joined
dalek rrot: r48172 | darbelo++ | branches/gsoc_nfg/src/string (2 files):
Replace UNORM_DEFAULT with UNORM_NFC as ICU composition target.
23:48
rrot: r48173 | darbelo++ | branches/gsoc_nfg (6 files):
There's no point to having a charset function that eventually always delegates to the encoding. Remove it and just call the encoding function.
rrot: r48174 | darbelo++ | branches/gsoc_nfg (8 files):
Remove the get_bytes encoding function. Most encodings didn't implement it properly and now the bytebuffer PMC has rendered it moot.
rrot: r48175 | darbelo++ | branches/gsoc_nfg (3 files):
Delete misleading CHARSET_ macros that forwarded to the string's encoding.
rrot: r48176 | darbelo++ | branches/gsoc_nfg/include/parrot/charset.h:
Remove a misnamed macro for an already removed function.
rrot: r48177 | darbelo++ | branches/gsoc_nfg (2 files):
Remove an uncalled function. Our uses of ICU don't need a data directory.
rrot: r48178 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
Obliterate trailing whitespace.
23:49
23:57 Psyche^ joined