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