|
Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 17 May 2011. |
|||
| whiteknight | how long is pprof2cg.pl supposed to take? | 00:06 | |
| cotto_work | It can be slow. | ||
| That's the reason I want to implement direct valgrind profile output. | 00:07 | ||
| whiteknight | awesome, pawesome | ||
| cotto_work | kcachegrind doesn't display it well, but callgrind_annotate does ok | 00:08 | |
| whiteknight | what is callgrind_annotate | 00:10 | |
| cotto_work | it comes with valgrind, iirc | ||
| it post-process callgrind output | 00:11 | ||
| tcurtis | ~~ | ||
| whiteknight | hello tcurtis | 00:12 | |
| tcurtis | hello, whiteknight | 00:13 | |
| whiteknight | tcurtis: my tokenize library is just a hack-together now | 00:14 | |
| so if you have any specific requirements or ideas, let me know | 00:16 | ||
|
00:16
baest left
|
|||
| tcurtis | whiteknight: I'm not too fond of either limiting the data member of tokens to strings or of integer token type tags. | 00:19 | |
| The former is an aesthetic issue involving the division of labor between parser and lexer. | 00:20 | ||
| The latter is because it seems like it may force more coupling between parser and lexer. | 00:21 | ||
| whiteknight | the Token class I have was basically an afterthought to the tokenizer | ||
| when I woke up this morning, the tokenizer was only returning bare strings | 00:22 | ||
| so at least I have a wrapper class now that can hold metadata | |||
| This also isn't quite intended to be a full, general-purpose lexer library, at least not yet | 00:23 | ||
| it's all very prototypical, so I need to figure out where to take it from here | 00:24 | ||
| tcurtis | One approach I've thought about is using isa as my way of distinguishing tokens, with a special class for tokens like '(' and such where you really just care about the character value. | 00:26 | |
| whiteknight | token subclasses is a fine idea, if the different token types have different behaviors | 00:27 | |
| it's trivial to use an abstract factory object to create multiple types of token | 00:28 | ||
| tcurtis | Alternately, if you want Rosella's tokenizing library to just break the input up into tokens, without user-supplied semantic actions and such, a string type tag would be preferable to an integer one for me. | 00:29 | |
| Although, slower, no doubt. | |||
| whiteknight | The whole Rosella mantra is to provide good, general functionality. So the default Rosella library probably won't be what you need out of the box, but all the bits will be subclassable | 00:30 | |
| all attributes are PMCs, so Token can easily have any arbitrary data attached to it | |||
| it's just a matter of changing the signature on the constructor | |||
| I could give Token a hash-like interface, and let you store arbitrary named metadata | 00:32 | ||
| tcurtis | Okay. I'm going to just pick some convention and expect it. If it ends up differing from what Rosella adopts, I'll either figure out a way to make Rosella do what I want, or change what I want. | ||
| whiteknight | the Rosella String library is early alpha. I'll take feedback and make changes | 00:33 | |
| the goal was to have any kind of basic tokenizer available, to help you get to the hard part of parsing | |||
| I'm sure we'll have a "real" lexer around later | 00:34 | ||
| tcurtis | Indeed. And it can have a fancy DSL parsed by a parser generated using my GSoC project with itself as a lexer. | 00:36 | |
| tcurtis laughs evilly. | |||
| Not really evilly; just cyclically. | |||
| whiteknight | I'm signing off for the night | 00:39 | |
| later | |||
| cotto_work | 'night | 00:40 | |
|
00:40
whiteknight left
00:52
soh_cah_toa left
00:53
soh_cah_toa joined
01:01
soh_cah_toa left
01:09
jevin joined
|
|||
| dalek | Heuristic branch merge: pushed 627 commits to parrot/tewk/select by cotto | 01:37 | |
| cotto_work | no karma? | 01:38 | |
| pmichaud: could you have the people interested in Select take a look at github.com/parrot/parrot/blob/tewk...select.pmc ? I'd like to know what they think about the interface. | 01:41 | ||
| cotto_work afk | |||
| dukeleto | cotto++ # bringing tewk/select back to life | 01:42 | |
|
02:16
lateau joined
|
|||
| davidfetter | oh hai | 02:35 | |
| lateau | good morning parrot :) | 02:37 | |
| PerlJam | good evening lateau | 02:38 | |
|
02:43
kid51 joined
02:46
Andy joined
|
|||
| kid51 | seen cygx | 02:50 | |
| aloha | Sorry, I haven't seen cygx. | ||
| dalek | TT #1722 closed by jkeenan++: osx build failed caused by errant '\\c' | 02:53 | |
| TT #1722: trac.parrot.org/parrot/ticket/1722 | |||
|
03:17
kid51 left
03:27
bubaflub joined
03:33
lateau left
03:43
bubaflub left
04:04
krunen left
04:05
krunen joined
04:06
PerlJam left,
PerlJam joined
04:08
JimmyZ joined,
JimmyZ left
04:09
JimmyZ joined
04:11
JimmyZ left
|
|||
| cotto | ~~ | 04:24 | |
| I'm finding that I'm not a fan of the Select dynpmc's interface. Does anyone know of a language or library that has an intuitive select implementation? Python's seems nice. | 05:01 | ||
| pmichaud, ping | 05:08 | ||
| bacek_at_work | cotto, ping. | 05:21 | |
| cotto | bacek_at_work, pong | ||
| what's up? | |||
| bacek_at_work | cotto, I've got beta invitation to dotCloud and going to deploy codespeed onto it. | ||
| So we can have "canonical" way of submitting benchmarks | 05:22 | ||
| cotto | bacek_at_work, cool | ||
| bacek++ | |||
| bacek_at_work | (We can migrate it to OSL later if we want) | ||
| Unfortunately I don't know python, wsgi, etc :) | |||
| cotto | me neither, as far as wsgi | 05:23 | |
|
05:23
ShaneC joined
05:27
preflex left,
Andy left
|
|||
| cotto | bacek_at_work, I'm looking forward to seeing what codespeed can do. | 05:29 | |
|
05:30
preflex joined
|
|||
| dalek | rrot: 0004e42 | petdance++ | / (65 files): Make the headerizer not propagate SHIMness to function declarations. The SHIMness of an argument is internal to the function, and outside functions should not know that the argument is unused. |
05:47 | |
| ttbot | Parrot 0004e42d i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/9597 | 05:48 | |
|
05:50
davidfetter left
06:05
fperrad joined
06:15
fperrad_ joined
06:17
fperrad left,
fperrad_ is now known as fperrad
06:20
he joined
06:23
woosley joined
06:33
UltraDM joined
|
|||
| cotto | trac-- | 06:55 | |
| cotto sleeps and dreams of github issues | |||
| KaeseEs | in his house on git'hub, dead cotto lies dreaming | 06:58 | |
|
07:10
baest joined
|
|||
| dalek | rrot/m0-prototype: 178b878 | dukeleto++ | t/m0/m0_assembler.t: Add a test for a valid m0b file magic number |
07:13 | |
| dukeleto | msg cotto must the variable table in M0 have indices in increasing order? If so, why have the indices at all? | 07:23 | |
| aloha | OK. I'll deliver the message. | ||
| KaeseEs | bacek_at_work: didn't dotcloud hire miyagawa and start supporting psgi a while back? we might have more folks familiar with that due to the provenance of most parrot devs :v | 07:29 | |
| bacek | KaeseEs, they did. But codespeed is implemented in python. | ||
| KaeseEs | my reading comprehension skills failed me :/ | 07:33 | |
| bacek | aloha, codespeed? | 07:37 | |
| aloha | bacek: Search me, bub. | ||
| bacek | aloha, codespeed is look at speed.pypy.org | ||
| aloha | bacek: Okay. | ||
| bacek | KaeseEs, ^^^ | ||
| dukeleto | msg cotto how badly do we want to support escaping double quotes in variable tables strings? Is it really necessary? Seems like a convenience for writing M0 by hand, which we shouldn't be catering to. | 07:41 | |
| aloha | OK. I'll deliver the message. | ||
|
07:49
mj41 joined
07:51
rurban_ joined
|
|||
| dalek | rrot/m0-prototype: 9147221 | dukeleto++ | src/m0/m0_assembler.pl: Improve the parsing of M0 variable tables and the calculation of their bytecode segment length |
07:51 | |
| dukeleto | 18 digits in a row in that SHA1. Must be my lucky day. | 07:52 | |
| dukeleto sleeps | |||
|
07:52
rurban left,
rurban_ is now known as rurban
|
|||
| moritz | (10/16)**18 | 07:57 | |
| aloha | 0.000211758236813575 | ||
| moritz | (10/16)**18 * (40 - 18 + 1) | 07:58 | |
| aloha | 0.00487043944671223 | ||
| moritz | half a percent chance... dukeleto++ just needs to commit more often :-) | ||
| bacek | YAY! | 08:12 | |
| speedcenter.parrot.dotcloud.com/ | |||
| It works :) | |||
| moritz | bacek: it's eternally "loading" for me | 08:18 | |
| (firefox 3.6) | |||
| bacek | moritz, I know. I didn't setup DB behind yet :) | 08:19 | |
| moritz | bacek: heh, "works" always depends on context :-) | ||
| bacek | moritz, of course. But before I had only 404s and 500s :) | ||
| tadzik | yay, speedcenter | 08:21 | |
| bacek | tadzik, do you have time to play with it? Submitting of results looks pretty straight forward. I can give you admin access to console so you can create environments/projects/whatever | 08:29 | |
| tadzik | bacek: I shouldn't be having time for this, but I know I'll bootstrap some if you give me the access | 08:30 | |
| aka I should be studying | |||
| bacek | tadzik, privmsg :) | 08:37 | |
| tadzik | fun fun fun fun | 08:38 | |
|
09:04
gerd joined
09:07
gerd left
09:15
jjore_ left
09:26
contingencyplan left
09:37
dodathome joined
09:38
woosley left
09:50
eternaleye_ is now known as eternaleye
09:57
pjcj left
10:20
woosley joined
10:50
jjore joined
11:02
Psyche^ joined
11:07
Patterner left,
Psyche^ is now known as Patterner
11:20
woosley left
11:25
lucian joined
11:26
jjore left
11:27
darbelo joined
|
|||
| xenoterracide | poke particle | 11:32 | |
|
11:33
pjcj joined
11:38
mtk joined
11:42
jjore joined
11:47
mtk left,
davidfetter joined
|
|||
| dalek | website: lucian++ | HELO GSOC | 11:50 | |
| website: www.parrot.org/content/helo-gsoc | |||
|
11:52
mtk joined
|
|||
| lucian | dalek: also honeyweb.wordpress.com/2011/05/18/helo-gsoc/ | 11:59 | |
|
12:07
whiteknight joined
12:08
whiteknight left,
whiteknight joined
12:19
davidfetter left
|
|||
| whiteknight | good morning, #parrot | 12:20 | |
| lucian | whiteknight: finally wrote that blog post ... | 12:37 | |
| whiteknight | I've had it written but trapped in the queue | 12:45 | |
|
12:45
davidfetter joined
|
|||
| whiteknight | my plan is to queue up several posts, so when I go a day or two without an idea I can post one that's already done | 12:45 | |
| but then I go a whole week without posting anything, then I get ideas, and things never leave my queue | 12:46 | ||
| atrodo | down with queues! | 12:54 | |
|
12:55
bubaflub joined
|
|||
| dalek | rrot: b7811d7 | fperrad++ | runtime/parrot/library/distutils.pir: [disutils] fix on Windows |
12:59 | |
| ttbot | Parrot b7811d7e i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/9654 | 13:00 | |
| whiteknight | wtf | 13:02 | |
| I have no idea what is wrong with that stupid macro | 13:08 | ||
| I hate ASSERT_ARGS | |||
|
13:08
bluescreen joined
13:39
JimmyZ joined
13:52
he left
14:02
alester joined
|
|||
| alester | Hey, look! I broke the build! | 14:03 | |
| Aha, part of the headerizer is unhappy about ARGIN( SHIM () ) | 14:07 | ||
|
14:09
dngor left,
dngor joined
|
|||
| dalek | rrot: b3b7652 | petdance++ | / (8 files): make headerizer handle ARGIN(SHIM(...)) properly |
14:13 | |
| ttbot | Parrot b3b76526 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/9708 | 14:15 | |
| whiteknight | ttbot makes me angry | 14:29 | |
| how dare it point out our mistakes? | |||
| like it's better than us | |||
| I'd love to see ttbot try, if it thinks it can do better | 14:30 | ||
| atrodo | whiteknight++ | 14:31 | |
| I agree. ttbot is too smug. we should jump him next time he comes in | |||
| alester | well, shoot, I'll have to figure out later what the bummer is. | 14:36 | |
|
14:37
UltraDM left,
theory joined
|
|||
| pmichaud | cotto++ # review of Select PMC, thanks! | 14:46 | |
|
14:53
theory left
|
|||
| whiteknight | www.complang.org/colm/ | 14:58 | |
|
15:04
theory joined
|
|||
| dalek | rrot: 6d1a1fc | petdance++ | / (8 files): ASSERT_ARGS_xxx macros have to use the shimmed var names |
15:13 | |
| dukeleto | ~~ | 15:17 | |
| alester | yay, is fixed. | 15:18 | |
|
15:21
hercynium joined
|
|||
| dalek | TT #2114 created by whiteknight++: getprop op is strange | 15:42 | |
| TT #2114: trac.parrot.org/parrot/ticket/2114 | |||
| rrot: db11dcb | petdance++ | src/platform/generic/socket.c: We should be freeing cstring, not host |
15:43 | ||
| alester | That fix should fix the solid red 5 column in tt.taptinder.org/buildstatus/parrot/master/4 | 15:44 | |
|
15:52
rurban_ joined
15:53
rurban left,
rurban_ is now known as rurban
|
|||
| alester | It fixed PART of the problem. | 16:00 | |
| cotto | has someone responded to karsten on parrot-dev? | 16:03 | |
| Tene | whiteknight: I think I want to do 6model work tonight; let me know sometime today if there's anything specific you'd like from me, otherwise I'm going to start on the new pass of the ruby object model | 16:05 | |
| tadzik | Tene: how much of a priority is a Cardinal -> nqprx migration? | 16:06 | |
| JimmyZ | ->nqprx? not new nqp? | ||
| tadzik | I don't think that matters much in this particular case, the point is the PGE->PCT migration | 16:07 | |
| JimmyZ | oh | ||
| tadzik | I brought cardinal on nqprx to a stage where it compiles, but doesn't even run iirc | ||
| Tene | tadzik: 1) nobody is relying on cardinal, and there's no organized plan for it, so the only priorities that matter are those of whomever is doing the work | ||
| tadzik | haven't touched that branch ever since | ||
| Tene: ok | 16:08 | ||
| Tene | 2) I thought that cardinal was already running on new nqp, but still using PGE instead of nqp grammars | ||
| tadzik | hmm, probably | ||
| Tene | 3) My personal top priority is getting a good object model in place; I haven't done any consideration of relative ordering of priorities after that | ||
| tadzik | I see | 16:11 | |
| cotto | responded | ||
| Tene | tadzik: does that answer your question? | 16:12 | |
| tadzik | Tene: yes | ||
| cotto | petdance++ for fixing the build | ||
| alester | I fixed the main build, but column 5 here tt.taptinder.org/buildstatus/parrot/master/4 still needs love | 16:13 | |
| Looks like he's running some native c++ compiler to BSD? | |||
|
16:13
benabik joined
|
|||
| Tene | tadzik: Personally, I'd expect to work on that after I'm done with object model stuff, and after that I'd start working on importing stdlib from one of the other ruby impls, like rubinius, which I think is the ruby-in-ruby one? | 16:13 | |
| tadzik | Tene: I think so, yes | 16:14 | |
| Tene | The big problem with re-using other ruby impl work is that they tend to rely on a complete object model even for basic shit like testing | 16:15 | |
| like, they use a testing library that requires monkey patching and shit, which isn't helpful for an implementation that's just starting | 16:16 | ||
| so, not like the Perl 6 tests, which are designed to be gradually helpful. | 16:17 | ||
| It makes sense, given the context, because they started out trying to test a fully-functional (by definition) impl, but it's inconvenient for me. :) | 16:18 | ||
| afk commuting | |||
| whiteknight | Tene: no, nothing specific. I'll follow along with your commits | 16:19 | |
| I'm very interested just to see what you're planning | 16:20 | ||
| dukeleto | cotto: no one has replied, but I thought about it :) | 16:21 | |
| cotto: did you get my msg's from last night? | |||
| dalek | rrot: 7be1a8d | petdance++ | src/platform/generic/sysmem.c: must pass a size_t pointer to sysctl, not a ulong. Also localized and consted the error message pointer |
16:22 | |
| cotto_work | ~~ | 16:34 | |
| dukeleto: cotto thought that I'd have more tuits to respond. ;) | 16:35 | ||
| dukeleto: the indicies in the variables table are to increase readability for humans. | 16:36 | ||
| whiteknight | those silly humans | 16:37 | |
| cotto_work | dukeleto: if you want, you can say that the chunk name is anything between ".chunk " and the newline | 16:39 | |
| dukeleto: feel free to update the spec | |||
| Tene | whiteknight: my plan is to first write a stub class with the same methods as ruby's Module class, and then start filling them in. | 16:43 | |
| whiteknight | Tene: okay, awesome plan. I'll be following the commit stream in earnest | ||
| dukeleto | cotto_work: you misunderstood my question about quotes | ||
| cotto_work: i am talking about double quoted strings in the variable table | 16:44 | ||
| cotto_work | alester: apparently you fixed it | ||
| dukeleto | cotto_work: i have already implemented allowing the escaping of double quotes, but just wanted to ask you if you were sure we wanted that | ||
| cotto_work looks at the spec | |||
| alester | yay me! | ||
| dukeleto | cotto_work: also, we need to hammer out the exceptions section of the M0 spec | 16:45 | |
| whiteknight | alester++ | 16:46 | |
| alester | Would like to know what compiler that is. | ||
| or maybe it's a config issue. | |||
| s/issue/difference/ | |||
|
16:48
mj41 left
|
|||
| cotto_work | dukeleto: wrt double quotes, do you have an alternative? What's there is just what seemed like a good idea at the time. | 16:49 | |
| dalek | nxed: r1009 | NotFound++ | trunk/winxedst1.winxed: more improvements in scope search, specially for namespace constants |
16:50 | |
| sella: 9f68dcb | Whiteknight++ | src/unstable/string/tokenizer/Token.winxed: allow more dynamic storage of metadata in tokens, on suggestion from tcurtis++ |
16:54 | ||
| sella: 9e2db22 | Whiteknight++ | s (10 files): rearrange some stuff in the prototype library. I honestly have no idea what I want to do with some of this stuff |
|||
| cotto_work | dukeleto: exceptions are something I expect to will become clearer as we figure out how CPS and M0 intersect. | 17:10 | |
| benabik | cotto_work: Matt Might had an excellent article on using continuations for exception handling. matt.might.net/articles/implementing-exceptions/ | 17:13 | |
| whiteknight | I've said many times that our exceptions system needs a major revam | 17:14 | |
| revamp | |||
| if M0 is the catalyst for that, all the better | |||
| that's a case where we should be willing to throw the baby out with the bathwater | |||
|
17:15
bluescreen left
17:16
bluescreen joined
|
|||
| atrodo | Sometimes I get the feeling that whiteknight just wants to rewrite all of parrot | 17:18 | |
| whiteknight | that's not too far from the truth | ||
| Many parts of Parrot are either very organic or very prototypical. We have a massive amount of technical debt because of that | 17:19 | ||
| there are many places, exceptions is a great example, where a complete rewrite could help us in a number of ways | 17:20 | ||
| better code, better encapsulation, better pluggability, more features for the user, etc | |||
| right now the exceptions system is feature-bare. It doesn't offer what most people need, and the performance is horrid | |||
| dukeleto | This is why Parrot needs t-shirts: yfrog.com/gy3kafbj | 17:27 | |
| And they have stickers, too: yfrog.com/h81oarsj | 17:28 | ||
| dukeleto grumbles | |||
| tadzik | . o O ( Parrotius, use Parrot ) | ||
| I'd wear a simple white one with the "Speaks your language" logo | 17:29 | ||
| although that's not to truthish | |||
| lucian | tadzik: or has ever seen a picture of the truth | 17:31 | |
| tadzik | I miss language interoperability | ||
|
17:32
bluescreen left
|
|||
| tadzik | even though I've seen it only in history books :) | 17:32 | |
| lucian | i've almost given up on the concept | ||
|
17:32
bluescreen joined
|
|||
| lucian | every implementation i've seen so far sucks (COM, XPCOM, titanium's thing, etc.) | 17:32 | |
| dbus and gobject-introspection are the only mildly reasonable ones | 17:33 | ||
| tadzik | are we talking about the same thing? | ||
| lucian | yeah, i guess | 17:34 | |
| it sucks in parrot too, as it is now | |||
| i'm waiting to see if 6model does it better | |||
| tadzik: even .net and jvm sort of suck at it :) | 17:38 | ||
| it's sad | |||
| tadzik once seen a Tene's blog post showing how Ruby and Perl6 interoperate | |||
| lucian | whiteknight: about rewriting things, i've still been thinking about using something other than C | 17:39 | |
| whiteknight | lucian: for all of parrot? | 17:40 | |
| lucian | tadzik: yes, that was pretty cool. i haven't seen it scale, though | ||
| whiteknight: not necessarily | |||
| Tene | tadzik: That's something of a sore point for me; I'd be glad to talk to you about it in /msg if you'd like, but I don't want to spam the channel yet again about it. | ||
| lucian | want to rewrite something? (exceptions) use something better | ||
| whiteknight | Tene: spam away | ||
| lucian nods | |||
| whiteknight | Tene: we need to be reminded of things that aren't right | ||
| atrodo | Tene> please do, i've yet to see the rant ;) | ||
| tadzik | Tene: go ahead | ||
| whiteknight | I'm still not entirely sure I know what the status of interop is, or why it's a problem | 17:41 | |
| tadzik | I think the problem is that the status is "not" | ||
| Tene | atrodo: I put in a big pile of work to get HLL interop working, and nobody seemed to care. I then spent the next six months or so repeatedly fixing HLL interop and updating all the languages to deal with other Parrot people breaking it, and I couldn't get anyone else to care. | 17:42 | |
| lucian | whiteknight: afaik, the status is that the interop point is 'Object', which sucks | ||
| whiteknight | Tene: see, that's what I don't understand. What part of it is broken? How does it break? | ||
| Tene | After the third? fourth? time that HLL interop was broken and nobody else cared, I gave up. That was... 2.5 years ago? 3 years ago? | ||
| whiteknight | and more importantly, can we make tests to demonstrate when it is and is not broken? | 17:43 | |
| lucian | Tene: while i understand your frustration, i can understand why people keep breaking it | ||
| Tene: it's because parrot's object system is useless, and in this case even worse than that | |||
| Tene | whiteknight: there are bugs with the load_language opcode and .HLL PIR declaration, but the big issue is the interop API, primarily library loading. | 17:44 | |
| lucian should prepend more disclaimer acronyms | |||
| Tene | lucian: object system doesn't have anything to do with it, actually. | ||
| lucian | Tene: i see | ||
| sorear | the logical conclusion here is that nobody but you actually wants HLL interop | ||
| is this not correct? | |||
| lucian | again guessing, it's possible that not having enough useful languages also contributes | 17:45 | |
| Tene | sorear: No, the logical conclusion is that nobody involved in parrot at the time valued HLL interop higher than their other work. | ||
| whiteknight | Tene: okay, those are serious things. We should have tests for load_language and .HLL declaration in the test suite | ||
| although, I imagine load_language is particularly hard to test | |||
| we have NQP in the repo now. If we snapshotted winxed into the repo too, we could load_language between them | |||
| Tene | whiteknight: the real solution, that I've been told dukeleto is working on, is HLL smoke testing. Once we have a good HLL smoke tester running, we can have integration tests that do real HLL interop. | 17:46 | |
| whiteknight | although I don't think either of them use .HLL declarations by default | ||
| atrodo | Tene> I can agree with that. My experiences with load_language were less than enjoyable | ||
| whiteknight | Tene: do you have any notes or recollection about what is broken with load_language? | ||
| dukeleto | Tene: my plan is that jitterbug will be used to smoke HLL's. It needs a few more bugfixes before it is ready, but it is damn close | 17:47 | |
| Tene | whiteknight: What I remember is that there are at least two parts that both do shit with HLL namespaces, and they mangle case differently from each other | ||
| whiteknight | oh great | ||
| the Parrot policy on mangling case for HLLs is stupid | |||
| Tene | or, one mangles case and the other doesn't? or one is case-insensitive, one mangles case, and the other doesn't mangle and is case-insensitive? or something. | 17:48 | |
| whiteknight | HLL developers should be able to case their namespaces however they want | ||
| dukeleto | ... smokin' test suites, sippin' on gin and juice ... | ||
| whiteknight | let's change that policy, and rip out all case mangling | ||
| dance around a fire and yell "kaluu, kaleh!" at the sub | |||
| sun | |||
| Tene | whiteknight: I'd like that. You'll need to update languages to ensure that their installed pbcs use the same case as their HLL namespace, etc. | 17:49 | |
| whiteknight | that's a small nit | ||
| Tene | Sure. | ||
| Oh, I think that compreg was involved too | |||
| whiteknight | in reality, most of them are probably using lower-case right now as a matter of convention | ||
| Tene | lower-case .pbc, title case HLL namespace, iirc. | 17:50 | |
| and then something mangles it to lowercase in some place, maybe? | |||
| whiteknight | if that's all it is, that should be a relatively easy project to fix | 17:52 | |
| tadzik | that could be raised on #ps or PDS | 17:53 | |
|
17:53
contingencyplan joined
|
|||
| whiteknight | I'll raise the issue next time I'm at #ps. In about 5 months | 17:54 | |
| dukeleto | whiteknight: arg! | ||
| whiteknight: sucks that you can't make #ps | |||
| whiteknight | it's the way the cookie crumbles | 17:55 | |
|
17:55
benabik left
|
|||
| lucian | whiteknight: are you visiting mars or something? | 17:56 | |
| whiteknight | lucian: #ps happens exactly during my commute. I can attend after daylight savings time | ||
| lucian | ah, i see | 17:57 | |
| whiteknight | I post reports while I'm at work, then backlog when I get home. | ||
| lucian | whiteknight: btw, about other languages | 17:59 | |
| i've shopped around a bit. apparently there are only three choices that work well with C | |||
| 1) C++, 2) ooc 3) vala posix | 18:00 | ||
| or perhaps 3.1), vala gobject | |||
| dalek | rrot/m0-prototype: d73e836 | cotto++ | t/m0/hello.m0b: add hand-assembled version of hello.m0 |
18:01 | |
| whiteknight | I can't imagine we move to ooc. or vala. We do prize at least a certain level of portability and ease of building | 18:03 | |
| besides perl, Parrot does try not to have too many prerequisites | 18:04 | ||
| C++ is certainly always a choice, but I'm extremely weary of it | |||
|
18:04
lucian left
|
|||
| Tene | whiteknight: those are minor issues. The big issue is an HLL interop API. When I've said ever since dropping it was that I won't do any more work on it until there's sufficient infrastructure in place that I can feel confident that if it breaks, someone besides me will notice and care about fixing it, but I'm glad to talk at any length about design choices, how to implement, etc. with anyone intereste din working on it themselves. | 18:05 | |
|
18:05
lucian joined
|
|||
| lucian | bah, someone restarted my router | 18:05 | |
| whiteknight | Tene: that's fair. You are right that the rest of the project needs to pick up some slack | ||
| lucian | whiteknight: ooc is very immature, so certainly out of the picture | ||
| vala's posix profile? i'm not sure | |||
| whiteknight | does vala have enough of a presence on windows? | 18:06 | |
| lucian | vala posix works wherever C does | ||
| vala glib/gobject may not work on some embedded devices, appears to work fine on windows though | 18:07 | ||
| it does seem to me that quite a few of parrot's problems stem from either C or not using enough libraries | |||
| but i wouldn't know whether vala posix is actually the right thing to use | 18:08 | ||
| and using glib/gobject would certainly be controversial | |||
| whiteknight | yes, I don't think we're willing to rely on glib/gobject right now | 18:09 | |
| lucian | so if glib is out of the picture, vala's position is a bit different | 18:10 | |
| it would have to be determined whether vala's posix profile is enough of an improvement over C | 18:11 | ||
| which i don't know if it is | 18:12 | ||
| but certainly use a threading library! not doing so is almost criminal :) | |||
| whiteknight | I do like the idea about having gobject as an available, pluggable alternate object system. I've always liked that idea. But I don't think we can have that as the standard or the default | 18:16 | |
| lucian: I've been warm to the idea of using a threading library. The real question is which one to use | 18:17 | ||
| plobsing suggests that we not use any by default, and allow the ecosystem to come up with pluggable variants | |||
| I'm warming up to that point of view considerably | |||
| lucian | so no threads at all? | ||
| whiteknight | we definitely shouldn't brew anything ourselves | ||
| lucian | but you still need to be thread-safe | ||
| whiteknight | of course. Thread-safety is priority | ||
| lucian | which often means using threading libs | 18:18 | |
| whiteknight | plobsing has been exploring that. He's working on a project to bring zeromq bindings to Parrot, and needs it for that purpose | ||
| lucian | or a subset of their functionality | ||
| whiteknight | lucian: the current idea is that we can use a locking abstraction where necessary, and fill in the details with multiple possible backends | ||
| many libraries implement basic locks, and many of them do it interchagably well. | |||
|
18:19
JimmyZ left
|
|||
| lucian | uh, i don't like that idea | 18:19 | |
|
18:19
ShaneC left
|
|||
| lucian | i think it's likely to produce another crappy threading/concurrency system | 18:19 | |
| and i don't see the benefit it brings | |||
| whiteknight | what brings? | 18:21 | |
| lucian | pluggable lock/threading libs | ||
| whiteknight | the benefit is that different languages need different semantics. | 18:22 | |
| lucian | sure, but parrot itself needs locks to be thread-safe | 18:23 | |
| whiteknight | Perl6 for instances needs light-weight autothreading capabilities for some of its list ops | ||
| some languages need full heavy-weight threads, other stuff, etc | |||
| lucian | yes, but which locks will parrot use? | ||
| whiteknight | does it matter? a thread-safe lock is a lock | 18:24 | |
| lucian | sure it matters, there's all sorts | ||
| whiteknight | what's most important for us to do is to limit the number of places where locks are necessary | ||
| lucian | how will the threading block be chosen? at build-time? | ||
| yes, that's a good goal | |||
| whiteknight | lucian: if threading is implemented as a dynpmc, or through NCI, we load it in at runtime | ||
| it's like how we do NCI now. you can load in a custom thunk builder at runtime | 18:25 | ||
| lucian | hmm | ||
| whiteknight | most of this idea is plobsing's and I'm sure I'm not doing justice to it | ||
| like I said, what I care about most is how users use it | |||
| lucian | hmm. users see what they're shown, i'm not particularly worried about that | 18:27 | |
| but parrot-the-vm needs locks of some sort, and a few other things. it seems a simple choice to me to just use posix threads | 18:28 | ||
| or w/e other library developers prefer, which hides win32 weirdness | 18:29 | ||
| dalek | rrot/m0-prototype: 98c720c | cotto++ | src/m0/m0_interp.pl: stub out set_var enough to show that t/m0/hello.m0b is correct |
||
| whiteknight | We definitely want concurrency details to be pluggable, because different HLLs and their libraries need different things | ||
| the question is, does Parrot try to provide a default and then allow HLLs to override? | |||
| nopaste | "cotto_work" at 192.168.1.3 pasted ""run" some M0 bytecode" (5 lines) at nopaste.snit.ch/46340 | ||
| cotto_work | dukeleto: ^ | 18:30 | |
| whiteknight | or, is that the job of the VM at all? The platform and the libraries provide threading primitives, we should let users tap those directly | ||
| lucian | whiteknight: will that work with two languages using two different threading libs at the same time? | ||
| whiteknight | and then what does it look like when you can operate threading from the PIR level? What does the VM have to do to stay out of the way? | ||
| lucian | i don't think they try to be compatible | ||
| whiteknight | lucian: if the threading libraries are encapsulated in a series of objects and NCI functions, the choice of which functions to use is easy | 18:31 | |
| lucian | the way i see it, there are 3 types of "threading": OS processes, OS threads, user-level | ||
| whiteknight | however, if Parrot makes one set of assumptions internally, and the user does something else at the PIR level, FAIL | ||
| lucian | i don't see an advantage to having more than one way of interacting with OS threads, or processes | ||
| whiteknight | I don't see an advantage to mandating "one true way" and forcing HLL authors to deal with the decisions I make on the point | 18:32 | |
| I don't know what all existing languages need, much less what future languages need | |||
| and the libraries that people will want to come up with for those languages | |||
|
18:33
bacek left
|
|||
| lucian | i really don't see what other way there is to interact with OS threads | 18:33 | |
| whiteknight | The more decisions Parrot makes, the more hackjob workarounds our HLL devs are going to have to invent to get around them | ||
| lucian | all languages that use OS threads target posix threads | ||
| whiteknight | lucian: so then why are there so many threading libraries, if they all can only do the same things in the same ways? | ||
| lucian | when it comes to user-level threads (green threads) then yes, parrot's choice matters | ||
| whiteknight | the fact that we have so many options is an argument that it's not so simple | 18:34 | |
| lucian | whiteknight: language runtimes, platform specifics | ||
| whiteknight | lucian: Even in the green thread case, there's no reason Parrot needs to provide that either, really. | ||
| All Parrot needs to do is provide the mechanism to save and interrupt a current execution flow, and any library can build anything on top of that | |||
| lucian | whiteknight: of course, i was just saying that's the only point where parrot's choice (or none) would matter at all | ||
| whiteknight | right | ||
| lucian | all OS threads are just OS threads | 18:35 | |
| the differences are either because of 1) os differences 2) language runtimes or 3) reinvented wheels (nspr vs apr) | |||
| dukeleto | cotto_work: whoa, is that your interp running bytecode generated from my assembler? | 18:36 | |
| cotto_work | dukeleto: not quite | ||
| dukeleto | cotto_work: fsvo "run" | ||
| lucian | whiteknight: and all languages that use OS threads use pthreads at some level | ||
| dukeleto | cotto_work: but you are using the bc generated by my assembler? | ||
| lucian | (some reimplement their win32 threads, but many don't even do that) | ||
| cotto_work | dukeleto: I used bytecode generated by t/m0/m0_bytecode_loading.t | 18:37 | |
| lucian | whiteknight: whatever languages do on top (or inside, or beside) OS threads is really a different issue entirely | ||
| cotto_work | dukeleto: with the right number of ops and hand-hacked their values to be correct | ||
| dukeleto: the code that the assembler generates doesn't have all the needed segments | 18:38 | ||
| dalek | rrot: 4b9b5e1 | petdance++ | src/packfile/output.c: check encoding match before checking the entire string |
18:39 | |
| rrot: 734de09 | petdance++ | / (2 files): Update cursor argument annotation |
|||
| nxed: r1010 | NotFound++ | trunk/winxedst1.winxed: allow using constants in function level 'using' |
|||
| dukeleto | cotto_work: yes, i know :) But it is getting closer | 18:40 | |
| cotto_work: i would like to see what happens when you try to read my partial bc, tho | |||
| cotto_work: in the name of science | |||
| cotto_work | dukeleto: I already tried. It spits out an lta error about not finding the right segment | ||
| dukeleto | cotto_work: hokey dokey. The other segments will come soon. | 18:41 | |
| nopaste | "cotto_work" at 192.168.1.3 pasted "running generated M0 bytecode" (14 lines) at nopaste.snit.ch/46341 | 18:42 | |
|
18:46
soh_cah_toa joined
|
|||
| whiteknight | What we really need is a Parrot wrapper library for the github API | 18:50 | |
| lucian | whiteknight: no worries, there's a python one. talk to me in 2 months :) | 18:52 | |
|
18:57
darbelo_ joined
19:00
darbelo_ left
|
|||
| dalek | nxed: r1011 | NotFound++ | trunk/t/advanced/10scope.t: test scope resolution for functions |
19:00 | |
|
19:01
darbelo left
|
|||
| NotFound | whiteknight: take a look at this commit and enjoy. | 19:01 | |
| whiteknight | NotFound: I enjoy every winxed commit :) | 19:02 | |
| what does __FUNCTION__ return? | |||
| NotFound | This one can explode your mind. | ||
| whiteknight: Full name of the function. | 19:03 | ||
| whiteknight | oh, nice | ||
| I'll have to use that in Rosella now | |||
| Foo.foo calls foo in Foo namespace? | |||
| NotFound | Is intended for diagnostics only, but I'm open to ideas. | ||
| tadzik | I like "using extern Test.More plan, is;" | ||
| NotFound | whiteknight: it searchs the scope. If Foo is an accesible namespace, yes. | 19:04 | |
| Static binding, the horror. | |||
| whiteknight | when does it search the scope? At runtime or at compile time? | ||
| NotFound | Compile time. | 19:05 | |
| whiteknight | damn. so close | ||
| NotFound | whiteknight: compile time is more necesary, runtime can already be done with parrot means. | 19:08 | |
| whiteknight | NotFound: my problem is that rosella uses many different files, so I can't call functions in other files directly | 19:09 | |
| it's really not that big a deal | |||
| I'm obviously doing okay without it | 19:10 | ||
|
19:10
ShaneC joined
|
|||
| NotFound | whiteknight: well, in different files a runtime access is needed even if we knew the locations. The static binding uses :subid | 19:11 | |
| whiteknight | okay | ||
| NotFound: all I really want is a nicer syntax for using remote functions | |||
| NotFound | I'll add something, but it will not be so static anyway. | ||
| whiteknight | having to use "using" every time clutters the code | 19:12 | |
| NotFound | Give me time ;) | ||
| whiteknight | NotFound: Of course! I'm not impatient. This namespace lookup stuff will keep me busy for a long time :) | ||
|
19:13
Coke left,
Coke joined
19:15
benabik joined
|
|||
| benabik | ~~ | 19:16 | |
|
19:18
dodathome left
19:19
ShaneC left
19:20
dodathome joined
|
|||
| dalek | nxed: r1012 | NotFound++ | trunk/pir/winxed_compiler.pir: update installable files - significant changes, cross your fingers |
19:21 | |
| alester | I thinkk I get an inordinate amount of happy out of hunting down stupid little C problems. | 19:39 | |
| dalek | sella: b58ca3f | Whiteknight++ | src/unstable/string/ (2 files): rearrange the Tokenizer interface a little bit so we can more readily customize the behavior in subclasses. Add a token map, which can be used to map certain character strings to pre-defined tokens |
19:48 | |
|
20:06
alester left
|
|||
| NotFound | No NCI thunk available for signature `STRING (ptr, ptr)' | 20:09 | |
|
20:09
alester joined
|
|||
| NotFound | So I can't use Parrot_str_from_platform_cstring fot nci | 20:09 | |
| whiteknight | hmm | 20:10 | |
| NotFound | The same for Parrot_str_new_init | 20:16 | |
| Coke_ skips review! | 20:17 | ||
|
20:24
mj41 joined
|
|||
| whiteknight | Add the thunk | 20:25 | |
|
20:28
jevin left
20:30
whiteknight left
20:40
lucian_ joined
20:42
lucian left
20:44
mj41 left
20:45
benabik left,
dodathome left
20:52
wknight-phone joined
20:53
wknight-phone left
20:58
theory left
21:04
davidfetter left
21:05
bacek joined
|
|||
| tcurtis | ~~ | 21:05 | |
| dalek | nxed: r1013 | NotFound++ | trunk/examples/Mysql.winxed: upadte example Mysql to recent changes in parrot NCI |
21:07 | |
|
21:12
perlite_ joined
21:15
perlite left,
perlite_ is now known as perlite
21:20
bluescreen left
21:27
fperrad left
|
|||
| dalek | nxed: r1014 | NotFound++ | trunk/examples/Xlib.winxed: upadte example Xlib to recent changes in parrot NCI |
21:28 | |
|
21:33
theory joined
21:36
benabik joined
21:41
theory_ joined
21:45
theory left,
theory_ is now known as theory
|
|||
| dalek | rrot/m0-prototype: ad540b2 | cotto++ | src/m0/m0_interp.pl: make the m0 interp run hello.m0b less improperly |
21:46 | |
|
21:48
benabik left
21:53
bacek left
21:56
davidfetter joined
22:00
benabik joined,
benabik left
22:04
whiteknight joined,
bacek joined
|
|||
| pmichaud | Latest benchmark results (with updated toolset): gist.github.com/979705 | 22:12 | |
| cotto_work | pmichaud: nice to see that not getting worse (though I really want to see it go down) | 22:14 | |
|
22:14
alester left
|
|||
| cotto_work | fuzz-box.blogspot.com/2011/05/resig...terns.html | 22:15 | |
| pmichaud | I chose this set of builds to see how much change is attributable to parrot and how much to rakudo | 22:20 | |
| so, the difference from 2011.04/3.3.0 to 2011.04/3.4.0 is parrot improvmenet | |||
| whiteknight | needs more improvement | ||
| pmichaud | the difference from rakudo-master-3.3.0 to rakudo-master is rakudo improvement | ||
| er, wait | 22:21 | ||
| wrong | |||
| the difference from 2011.04/3.3.0 to rakudo-master-3.3.0 is rakudo improvement | |||
| (since both are running on the same parrot) | |||
| the difference from 2011.04/3.3.0 to rakudo-master is overall improvement -- what our users will see | |||
| etc. | 22:22 | ||
| you can see where 2011.04/3.3.0 (used in the star release) is generally less performant than the 2011.01 star release, and why we're looking for another star release soon :) | 22:23 | ||
|
22:26
bubaflub left
|
|||
| whiteknight | i'm going to valgrind it now, run it during dinner | 22:32 | |
| cotto_work | me too, but I'm not sure if core.pm will be done before I leave for the day | 22:51 | |
| whiteknight | blah, I just built the wrong version of Parrot | 23:02 | |
|
23:05
hercynium left
|
|||
| cotto_work | ow | 23:06 | |
| bacek_at_work | ~~ | 23:07 | |
| whiteknight | hello bacek_at_work | 23:08 | |
| bacek_at_work | aloha, whiteknight | ||
| whiteknight | bacek_at_work: I'm valgrinding core.pm now. Any particular results you think I should look for? | ||
| I *really* wish this compile had some kind of status information | 23:10 | ||
| if it could print out the name of each function it compiles, that would be fantastic | |||
| bacek_at_work | whiteknight, I'm usually look at "self" adn "total" columns in kcachegrind. | 23:11 | |
| pmichaud | benchmark results for plum: gist.github.com/979705 | 23:14 | |
| whiteknight: are you valgrinding core.pm? | 23:15 | ||
| whiteknight | yes | ||
| pmichaud | omg | ||
| whiteknight | hence my desire for some kind of status printouts | ||
| pmichaud | I think I'd start with something smaller | ||
| that's why I used the opsc stuff to begin with :) | 23:16 | ||
| cotto_work | whiteknight: if it printed anything out, you'd be tempted to stare at it instead of doing something useful | 23:17 | |
| whiteknight | cotto_work: I believe that is useful. If there are certain places where it is obviously hanging for a long time, that's suspect | ||
| if things seem to pass by quickly, it's just a matter of volume | |||
| pmichaud | I guess I don't mind instrumenting NQP to have a "print as compiled" function. I guess it'd need to go to stderr | 23:18 | |
| whiteknight | it doesn't need to be everywhere, it can be a temporary thing on my machine only | 23:19 | |
| pmichaud | well, if it's useful one place, it's useful many | ||
| whiteknight | I'm just very interesting in trying to figure out why the core.pm build takes so long | ||
| pmichaud | lots of lines of code, I suspect | ||
| oh, wait | 23:20 | ||
| nqp doesn't compile core.pm | |||
| rakudo does | |||
| whiteknight | I suspect so too, but if we can find someplace that is inexplicably O(N^5), that would be interesting too | ||
| pmichaud | so we'd have to put it into rakudo | ||
| that would be a bit trickier, since it's not just one place that subs and methods get parsed/compiled | 23:21 | ||
| whiteknight | ==7668== More than 1000 different errors detected. I'm not reporting any more. | ||
| ==7668== Final error counts will be inaccurate. Go fix your program! | |||
| stupid valgrind | 23:22 | ||
|
23:23
GeJ_ joined
|
|||
| pmichaud | anyway, it's a 7800 .pm file that is being compiled into 178K of PIR | 23:23 | |
| so, lots of memory use | |||
| whiteknight | we seem to be accessing a lot of uninitialized memory locations | 23:24 | |
| that's worisome | |||
| pmichaud | note: 7800 lines of .pm being compiled into 178K lines of .pir | ||
| anyway, yes, there's a way to view progress, now that I think about it | 23:25 | ||
| just a sec -- let me build an up-to-date rakudo and test | |||
|
23:26
tty234 left,
GeJ left,
tty234 joined
|
|||
| whiteknight | is core.pm monolithic, or does it include files? | 23:27 | |
| pmichaud | it's pretty monolithic, iirc | ||
| whiteknight | okay, so monitoring use/require wouldn't be too informative | ||
| I have to suspect that at least some of the grammar rules are less than optimal | |||
| if we can find functions or blocks that take longer to compile than others, we might be able to target a search for the particular offenders | 23:28 | ||
| or, find the parrot features which are used the most heavily in the slow parts | |||
| pmichaud | pass the --parsetrace option to the perl6.pbc compiler | 23:29 | |
| whiteknight | git pull? | ||
| pmichaud | no | ||
| whiteknight | oh, it's in htere? | ||
| there | |||
| pmichaud | it's already built into Rakudo | ||
| yes | |||
| it's already in nqp-rx | |||
| it will output a line every time it starts a new grammar rule | |||
| whiteknight | okay, I'll do that after I'm done valgrinding | ||
| so...somewhere after the heat death of the universe | |||
| pmichaud | (warning: lots of output ahead) | ||
| whiteknight | oh wow, that's a lot of output. Maybe even more than I need | 23:30 | |
| I might have to grep it | |||
| pmichaud | if you just pipe that to gr... right | ||
| for example, you could look for "PASS *statement" and you'll only see the lines where a statement has been successfully parsed | |||
| whiteknight | oh, ok | 23:31 | |
| pmichaud | note that the trace output goes to stderr, though | ||
|
23:31
kid51 joined
|
|||
| pmichaud | so you may have to do a few tricks with pipelining | 23:31 | |
| whiteknight | which grammar rules are responsible for functions and methods? | 23:32 | |
| reading through Actions.pm is like reading a foreign language | |||
| pmichaud | routine_declarator ought to be good enough | 23:33 | |
| it won't tell you *what* routine it's just finished, but you'd get a line everytime one was finished | |||
| (it also reports the offset within the file in the debug output, so that gives an idea of progress) | |||
| gist.github.com/979836 # example cmd + trace | 23:35 | ||
| the timestamps also tell you time between parsing each routine | |||
| whiteknight | ok | 23:37 | |
| pmichaud | a perlscript could parse the trace output and tell you the actual routine names | 23:38 | |
| the format of the trace line is: timestamp offset/line# result rule | |||
| so, the number after the slash is the number of lines processed | |||
| whiteknight | ok | 23:39 | |
| that's extremely useful information | |||
| ...I really wish I hadn't started valgrinding core.pm | 23:42 | ||
| blah | |||
| pmichaud | of course, one downside of using the trace is that we're then valgrinding the trace, too | ||
| afk, dinner | 23:43 | ||
| whiteknight | yeah, I don't have trace on right now | ||
| dalek | rrot: a115d7c | (Gerd Pokorra)++ | lib/Parrot/Configure/Options/Conf.pm: update "perl Configure.pl --help" output |
23:46 | |
|
23:50
rurban_ joined
|
|||
| dukeleto | www.readmespot.com/question/o/31614...the-future | 23:52 | |
|
23:52
bacek left,
rurban left,
rurban_ is now known as rurban
|
|||
| cotto_work | dukeleto: I guess it's official. Time to rest on our laurels. | 23:56 | |
| whiteknight | no, our laurels are too crufty. I propose we deprecate and rewrite our laurels | 23:57 | |