Parrot 1.3.0 "Andean Swift" released | parrot.org
Set by moderator on 23 June 2009.
00:00 ilia joined
Whiteknight hey, take your time 00:01
I probably won't do any looking tonight, my wife is being all like "you need to pay attention to me eventually" and shit 00:02
:)
Infinoid if I could find a place to steal more time in the day, I would :)
Whiteknight tell me about it
purl it is in the universe repo which is not enabled by default
Infinoid forget it
purl Infinoid: I forgot it
Whiteknight I tried to do hacking at night instead of sleeping, but that ended badly
Infinoid I hack best in the early morning 00:03
japhb Whiteknight: I feel your pain
Infinoid 06:00-09:00
those are my best hours
after that I start getting distracted by shiny things
Whiteknight i'm probably about the same 00:04
japhb Server problem found and fixed. udev for the lose. 00:08
Infinoid I has a nachos!
time for debugging.
Whiteknight: pay my respects to Mrs. Whitworth :)
Whiteknight thanks! 00:09
00:11 ilia_ joined
japhb Austin_Hastings: OK, bak. Let me know if you need any info from me. 00:15
Austin_Hastings japhb: Tene put his "new API" in a nopaste, which has since expired. I'll dig it out of the Rakudo source. 00:26
00:27 eternaleye joined
japhb Austin_Hastings: Also see runtime/parrot/languages/parrot/parrot.pir 00:28
Austin Save some inches... 00:29
That's more like it. Thanks again, japhb 00:31
japhb OK, afk for dinner. bbl. 00:32
00:37 eternaleye joined 00:54 Sark joined 01:03 kurahaupo joined 01:13 amuck joined
Coke purl, \\msg is also "msg <user> <msg>" 01:16
purl okay, Coke.
Coke msg?
purl i guess msg is Monosodium Glutamate, accelerates cooking of chinese food or a flavor enhancer, to make shitty stuff taste better, increase thirst, and desire to eat more. the perfect food additive :> or Madison Square Garden or in *everything* or "msg <user> <msg>"
Coke msg NotFound (tt #785) - my failure is on feather. You can probably duplicate it there. 01:19
purl Message for notfound stored.
01:31 Austin left 01:35 cotto joined
dalek tracwiki: v21 | cotto++ | ParrotQuotes 01:40
tracwiki: particle's a luminary
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
02:06 tetragon joined 02:07 Theory joined 02:32 Austin joined
Austin wikiwikiwiki 02:33
dalek tracwiki: v22 | Austin_Hastings++ | ParrotQuotes 02:44
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
02:48 chromatic joined
dalek tracwiki: v12 | Austin_Hastings++ | Parrot%20Virtual%20Machine%20Workshop%202009 02:48
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
03:00 cotto joined
Austin howdy cotto 03:01
skids
.oO(Either Austin purposefully chose the shot where his face is blocked, or photographer too fascinated by camera)
Austin I think that was the photog saying "this (cotto's) camera is portrait, not landscape - everyone scrunch in"
cotto Hi Austin. 03:02
Austin Or maybe I have that backwards. I know there were two cameras involved...
cotto Yup. The picture from pmichaud's camera should be better.
Austin (Or maybe I'm like the neighbor on Home Improvement, and no-one will ever see my face on camera...) 03:03
Wilson?
purl Wilson is 2
cotto Austin; ?
Austin ... ?
purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
skids I forget his name, but do remember the character.
Austin So what's new at yapc? 03:04
cotto we had the dinner tonight at the Steelers' stadium and got a nice tour
Austin Wow. That is nice. 03:05
Get any cheerleaders?
cotto chromatic's talk on Modern Perl was very well attended
nope
I'm sure you'll be glad not to have missed that.
Austin Should have let RBlackwe organize it.
He would have got you cheerleaders, I'm sure.
cotto I think he did 03:06
Austin Get 'em doing the CMU cheer: "e to the x, dy/dx, e to the y, dy! Secant, tangent, cosine, sine, 3.14159..." 03:07
Changing the subject slightly, what's the worst possible thing that could happen (in code) to parrot? 03:08
Specifically, describe the severity of the worst possible bug 03:09
skids runtime, or design-wise? 03:10
japhb IO opens root instead of desired file?
socket sends naked pics from office party instead of apology to spouse?
I tease, but your question was extremely open ended. :-) 03:11
skids Arbitrary bytecode can be loaded from a malformed packet on a network socket?
Austin Background: If you go to trac.parrot.org/parrot/wiki/Yapc10Bof and look at the "How Can We Do Better" section, one of the action items is to define/specify what the severity levels are.
cotto++ for getting those snapshots uploaded like 5 minutes after the meeting 03:12
skids Oh, then I have plenty.
1) multiple developers take design in circles, subsystems never converge to satisfy all needs
Austin I'm thinking that the worst possible thing is "right now, in production, on multiple or all core languages, nobody can work." 03:13
That would be something like a y2k problem or a virus vulnerability or some such.
japhb bigger even than that would be active data corruption, I would think. 03:14
chromatic That's the big one.
japhb though perhaps just make both of those max
Austin Hmm. I was considering "corrupts data" => "noone can work", but okay. 03:15
And there's a bunch of those, and they all are essentially "Galactic Ultimate"
So how far do we back down that chain for "worst" (or "highest") severity? What's the cut-off? 03:16
japhb Austin -- Linux filesystem history shows many cases of people thinking they could work while silently corrupting their data
Austin japhb Sure, but they weren't reporting the bug. I bet when they realized what was going on, they stopped working :)
japhb heh
skids One cut off point is "you can't just revert svn to fix it" 03:17
Another is "you have to revert a whole lot of svn to fix it and reapply is going to frustrate everyone" 03:18
Austin Okay. Persistent data is corrupted.
skids Or, as you were saying, it's a bug that's been there all along but the right external factors were not there to provoke it.
japhb unicode, anyone? 03:19
Austin chromatic: I transcribed cotto's pics of the BOF results, and then injected a bunch of "here's what *I* thought was going on" on the wiki (trac.parrot.org/parrot/wiki/Yapc10Bof). Please invite someone with more clues than me to check that, and maybe tell the true story.
japhb: Everyone wants it.
skids Massive popular standard emerges that absolutely must be supported, and is completely antithetical to bas architecture.
Austin lol 03:20
That's just a major rev...
SMOP
:)
So what's a short word for "this problem goes outside parrot to affect a bunch of business-critical data or systems"? 03:22
jdv79 there was a BOF?
chromatic critical?
purl somebody said critical was good, over picky isnt... this should be a 'qcuik read up' for beginners.. i'll link to real tutorials, perldoc, etc later
Austin I think that might be too short a word, or the wrong one. 03:23
chromatic Hm, I didn't think the RCA was incomplete, even if I was hungry.
Austin Here's me not knowing Trac well enough, but can we get on-screen help to explain what the "rules" are?
skids You mean other than "something like the weak Debian SSH keys"? 03:24
Austin chromatic: I kind of had the impression that some of the other high-vote issues didn't get explored - that we focused the why/how to fix session on the "missed ... milestones" issue. 03:25
chromatic I had in mind a normal retrospective. We pick the highest priority issue, perform RCA on that, come up with some experiments to try to improve it, and call that good.
I'm not sure we can keep enough other experiments going to fix other problems. 03:26
I also think that fixing this problem will improve many of the others.
Austin Okay. That's just my expectations being different, then.
I agree that the fix list will address a lot of the issues, and I know that Patrick deliberately addressed a bunch of the others, too. 03:27
chromatic You've never seen me wear my "THIS IS PROJECT MANAGEMENT I KNOW THIS" hat before.
Then again, no one here's seen my "I CAN HAZ SHIRT WITH BUTTONZ" before. 03:28
skids thinks greatest longterm design threat is continued procrastination on concurrency and realtime issues.
Not that there aren't blockers to getting very far on that. 03:29
Austin laugh
Why is concurrency a threat, skids? 03:30
dalek tracwiki: v6 | Austin_Hastings++ | Yapc10Bof
tracwiki: trac.parrot.org/parrot/wiki/Yapc10...ction=diff
Austin chromatic: reworded
skids Because nobody codes with it in mind.
03:30 s1n_yapc joined
skids It may become an insurmountable task. Should be worked on before the codebase gets huge. 03:30
japhb "before"? 03:31
Austin :->
japhb I think it's already pretty damn large
Hell, the *docs* are a maze of twisty passages, all different.
The fact that it is taking months to refactor calling conventions makes me quite worried about doing anything even deeper than that. 03:32
skids Despite my worries over L1, I was hoping maybe it could be a starting point for that -- give each op a contract for interruptibility and at least realtime hints, if not constraints. 03:33
03:34 Andy joined
Austin skids: How hard are you hoping this will get? 03:34
(realtime, I mean)
skids Latency 2-3 orders of magnitude worse than machine IRQ.
(not timetick, IRQ) 03:35
Austin Yikes
japhb Way back in the dark ages, there was a design intent that ops be simple and fast, and that a lot of the per-op guaranteed overhead from the P5VM become, at worst, additional ops -- except that we could schedule them when we wanted, rather than doing them every op whether needed or not. Did that go the way of the dodo?
cotto Austin, the only way they'd get uploaded was if I did it right away.
Austin cotto :)
you still rock
japhb: I confess to knowing nothing of p5 internals 03:36
Can you elaborate a little?
japhb Austin: the simplest way to put it is "P5 ops are heavy"
skids Though I guess machine IRQs are probably an order of magnitude faster than last I checked :-) So let's say, green threads schedule at least a few times per slice. 03:37
japhb They're interpreter ops, with a lot of internal "brains" ... not bytecode ops in the traditional sense that do very little, and can be compiled to a handful of machine instructions by a JIT.
skids (assuming a modern HZ, not like 100 of days past)
japhb 'add' in the P5 VM is pages of code.
Years ago, part of the argument for Parrot having a bazillion ops is that they were all *tiny*. 03:39
Austin So a parrot op is generally much lighter than a p5 op already, with some suspicious exceptions like maybe mmd?
japhb Austin: yes ... but my understanding is that the intent was them to be even lighter than they are right now.
(And, BTW, I mean "semantically lighter" -- I'm not talking about actual current implementation efficiency, because P5 is the winner there.) 03:40
afk for a bit
Austin skids: In my head I'm thinking IRQ = about 1000 ops, which would make your "2 or 3 OOM worse" be O(1_000_000) machine ops, right? 03:41
skids Ops could be lighter if they were coroutineish -- either they get called multiple times until they say "enough I'm done" or they can pass state to the next op, e.g. so a setup op is followed by interchangeble middle section followed by a cleanup.
Austin Aside from interruptability, what benefit does that offer? 03:42
skids Let's put it this way: fast enough you could run a TCP stack on it without relying on the OS, and get decent throughput.
It makes the contract with the VM include things like register utilization, so JIT knows when it has what available. 03:43
Austin Is the JIT even profitable? 03:45
skids Well, I have my doubts, personally, but it's one of Whitenights reasons for wanting L1, and he certainly knows more of JIT tham me. 03:46
Austin As far as I can see, most of the pir I've seen is relatively light on I & N registers, and heavy on P & S registers. How much profit will the JIT give us when such a huge proportion of the ops are going to have to do "call function pointer indirect" immediately? 03:47
skids Good question. 03:48
purl Yeah, it is. I'm stumped.
skids But then most of the call overhead is in rearranging parms, I am to understand. 03:50
Austin Well, Java would be worse, and they get something out of JIT. So it must work.
skids wonders how much of a lexpad 16 SSE4 registers would fit.
I'm sure it works, the question is, does it rob more speed in unnecessary copies and such due to the abstractions it imposes. 03:51
Austin Well, at the C level if you're calling, you're saving and restoring CPU registers.
Which is why I wonder what JIT does... 03:52
japhb skids: That depends on whether it's a traditional JIT or tracing JIT, I believe.
Austin Maybe they put all the common ops into a big switch stmt.
cotto L1 has all kinds of benefits beside jit. Even if we assume the worst about jitting and only ever generate C from L1, it's still a significant win.
japhb Parrot had a traditional JIT design, before tracing became in vogue
sigh, afk again
Austin japhb: You're not here for the hunting, are you? 03:53
cotto but perhaps I was reading too much "L1" into "jit"
jdv79 there's a switch runcore iirc
cotto jdv79, yes
Austin cotto: What other benefits do you see from L1? 03:54
cotto there won't be a border between C and PIR that we'll get a speed penalty from crossing 03:55
we can do better analysis and optimization of L1
Austin I keep hearing that, and I keep not understanding what it means. What is this C/PIR boundary everyone is on about? PIR is written in C, how can there be a boundary?
skids I'm really up past bedtime. Parting thought Re: "How can we do better?" Leadership is showing people where to go. Generally that involves giving them a map. Ergo documentation is an intrinsic of leadership. 03:56
cotto There's no penalty when calling a simple function, but there's a big one when switching between PIR calling conventions and C calling conventions
jdv79 Austin: its beer time
Austin jdv79: For you, maybe. Are you at YAPC?
skids (For one, I'd really like to understand lexpads/stack more, but the code doesn't congeal for me.)
cotto since C and PIR do argument passing completely differently
jdv79 i am justin - the one that sat to your right at hofbrau
so, yes, i am probably mostly here 03:57
Austin jdv79: Aha! A clue! You realize I won't remember your name for more than 30 seconds. (I remember you as being very helpful, though, in that regard.)
skids Austin: BTW, yours was the best whack at S17 I read, despite it being years old. 03:58
jdv79 i try - I am off to find beer:) later.
Austin skids: thanks. I think that's the first actual response I've ever gotten
jdv79: Good hunting.
skids Like I said, a topic everyone likes to avoid.
Anyway, sleep time. 03:59
Austin niterz
cotto: What are we doing on the other side of C?
cotto converting to varargs, iirc
Austin I mean, given the multiplicity of opcodes (set_int_register_from_unicode_string_on_odd_tuesday_in_non_leapyear_parity_8n1) 04:00
cotto care to elaborate?
Austin I can't. I don't know why we cross the C/PIR boundary. 04:01
You're not talking about just going inside an opcode or vtable function, right?
cotto We have some functions in C that need to deal with PIR calling conventions. That's expensive.
04:02 s1n_yapc joined
cotto I don't know about VTABLE functions. My intuition says they shouldn't be expensive, but istr reading something that contradicts that. 04:02
Austin Can you name one? I'll got read the code and stop pestering you about it :)
s/got read/go read/
cotto Sure. Any METHOD in a PMC counts.
also note what pmc2c does to those functions (and MULTIs) 04:03
Austin So filehandle::open would be a valid example? 04:04
cotto yes, and that's why whiteknight doesn't like doing IO through methods (afaiui) 04:05
04:06 magnachef joined
Austin Okay, is the problem inside or outside the function? 04:06
cotto outside; it's in all the stuff that pmc2c has to add
Austin Back up. 04:07
Should I be looking in the "Parrot_FileHandle_nci_open()" function defined in filehandle.c, or should I be looking at whatever calls that function? 04:08
cotto Austin, Parrot_FileHandle_nci_open, especially compared to what's in the METHOD in the .pmc file 04:09
Austin Okay. Looking now.
cotto brace yourself 04:11
04:11 tetragon joined 04:12 brbrooks joined
cotto btw, chromatic++ for leading that meeting. He did a good job of drawing out what needs to happen. 04:14
dalek tracwiki: v23 | Util++ | ParrotQuotes 04:29
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
cotto Util++ #I was just going to do that. 04:31
Austin Why does the method have to create a return continuation pmc? 04:32
Shouldn't that be passed in from the interp?
Util :) 04:33
cotto If I could answer that, I'd probably be fixing pcc_rewiring.
Austin :) 04:35
cotto Hmmm. Whiteknight hasn't put up his writeup from the L1 discussion today.
Austin Okay, the PARMS SCOPE section looks fine - do some pointer-foo to get the params in local vars. 04:37
cotto I hate "50% faster". What's so hard about saying something like "twice as fast" or "a 50% decrease in running time"?
04:37 magnachef joined
Austin There's some function calls that I don't grok, and it seems like things are inside out. And there's a bunch of stuff that seems like it should be static, instead of created with each call. (Maybe not a problem for FileHandle::open, but probably a win for add-two-integers, etc.) 04:39
What's the L1 proposal for this? 04:41
50% faster means 1.5x speed, not 2x speed. And so would mean 33% decrease in run time. 04:43
cotto Austin, you're right. That's why I hate that phrasing. 04:44
Austin :)
Do you know what L1 proposes to do about the calling thing? I see some inefficiency, but it looks like the run-loop and pmc2c should be able to fix it. 04:45
cotto First, calling conventions will be massively simplified once pcc_rewiring gets merged (or something equivalent). 04:55
Second, afaiui the calling conventions will be implemented in L1, meaning that you can use L1 to call C functions directly. 04:56
My understanding starts to fade at this point. 04:57
Austin laugh
cotto s/once/after/
Austin Changing the subject completely: If you get a chance, take a look at the wiki page with the photos (if you haven't already) because I took your name in vain at least once. Make sure I'm honest, please. 04:58
cotto Austin++ for writing up your comments. 05:02
Austin <bow> 05:03
cotto I don't think your name should be on them (since it could discourage others from editing and adding), but that's an excellent start. 05:04
karma austin_hastings
purl austin_hastings has karma of 11
cotto karma austin
purl austin has karma of 4
Austin I put my name on it to separate "Austin's editorial comments" from "stuff we actually agree about". I'm hoping someone(s) will take some of the action items onto separate pages or tickets or something, and then they (or I, if they don't want to) can delete my comments. 05:06
But maybe I should just make them tickets...
cotto We didn't set up a process to make sure that the meeting items got followed up on, so it could easily not happen if none of us do it spontaneously. 05:08
iirc
Austin combust!
purl combust is the web framework / content management system for geeks that we use at perl.org. See combust.develooper.com
Austin Maybe I'll pick that up tomorrow, then. I think I'm going to go to bed.
cotto It's very close to that time for me too. 05:09
Austin Good night, then.
cotto I just want to scribble down the major points from the L1 discussion, then I'm down too.
night, Austin.
05:09 Austin left 06:09 uniejo joined 06:23 uniejo joined, Theory joined 06:37 iblechbot joined
japhb msg Austin "here for the hunting"? If you're asking if I'm at YAPC, then no, sorry. :-/ 07:07
purl Message for austin stored.
07:19 whoppix joined 07:21 viklund joined 07:47 st joined 07:48 barney joined 07:56 eternaleye joined 08:17 ArjenL joined 09:15 JC1 left 09:25 patspam joined 09:28 donaldh joined 09:32 bacek joined
bacek o hai 09:38
Infinoid :) 09:54
10:11 guru joined
Infinoid msg Whiteknight Parrot_io_write_buffer is completely broken. The crash in t/pmc/io_18.pasm is caused by it overrunning the buffer. (at src/io/buffer.c:650, buffer_size is 8192, but buffer_next-buffer_start is 21054) 10:11
purl Message for whiteknight stored.
Infinoid msg Whiteknight For what it's worth, the line-buffering patch I tried yesterday was affected by the same brokenness. I'll see if I can fix it 10:12
purl Message for whiteknight stored.
10:17 iblechbot joined
bacek *incoming* 10:24
dalek rrot: r39751 | bacek++ | branches/tt761_keys_revamp/src/pmc (2 files):
[pmc] Hash.get_string_keyed* migrated to new style
10:26
rrot: r39752 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Small fixes in Hash - don't blindly cast value to PMC*
rrot: r39753 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Reshuffle Hash code to keep related things close.
rrot: r39754 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Reshuffle Hash code more. No functional changes.
rrot: r39755 | bacek++ | branches/tt761_keys_revamp/src/pmc/hash.pmc:
[pmc] Hash.get_pmc_keyed* migrated to MULTIs.
rrot: r39756 | bacek++ | branches/tt761_keys_revamp/lib/Parrot/Pmc2c/PMCEmitter.pm:
[pmc2c] Provide PMC* return value in generated switch-optimised VTABLE for MULTIs instead of relying on arguments.
rrot: r39757 | bacek++ | branches/tt761_keys_revamp/src/pmc/namespace.pmc:
[pmc] Sigh. Replace SUPER() with hand-crafted call to INTERP->vtables[...] again.
bacek crawl out under the table 10:29
Infinoid wow! 10:32
(gdb) print buffer_size
$6 = 8192
(gdb) print avail
$7 = 18446744073709538754
small error there...
bacek welcome to 21st century! There is a LOT of space available! 10:33
Infinoid I don't think we support lazy buffer allocation yet :) 10:36
bacek :) 10:38
bacek hit another roadblock on Hash refactoring... 10:39
I can't declare "MULTI FLOATVAL foo()"... JIT doesn't support it.
Infinoid msg whiteknight t/pmc/io.t failures fixed in r39758. 10:53
purl Message for whiteknight stored.
dalek rrot: r39758 | Infinoid++ | branches/io_cleanups/src/io/buffer.c:
[io] When done flushing the buffer, mark it as empty. (I think this was a typo.)
10:54
Infinoid I/O buffering is very poorly tested at the moment, there are other bugs lurking in this code 11:03
bacek s{I/O buffering}{Parrot} 11:05
Infinoid I think Parrot overall is fairly well tested... more so than most projects
bacek yeah. But it still can be better. 11:06
Infinoid That's always true, of every project, no matter how good they get :)
bacek "GNU Hello World" is perfect example :) They have version 2.68 or something already 11:07
Infinoid GNU Hello is also an example of how the GNU way is not always the best way :) 11:08
purl okay, Infinoid.
Infinoid time to get ready for the day, seeya! 11:09
11:21 donaldh joined 11:35 guru left 11:39 whoppix joined 11:42 st joined 11:43 burmas joined 11:44 mtk joined 11:46 mtk left 12:07 cotto joined 12:09 chromatic joined
chromatic 1610–20; < L pellÅ«cidus, var. of perlÅ«cidus. See per-, lucid 12:09
12:21 Whiteknight joined
Whiteknight hello friends 12:21
pmichaud hello 12:30
12:30 Patterner joined 12:34 masak joined 12:39 kid51 joined 12:43 skids joined
Whiteknight has a lot of blogging and summarizing to do today 12:47
YAPC was quite the fun experience!
pmichaud Yes, I suspect I'll be catching up on yapc-related todo lists for weeks. :-( 12:48
12:52 kid51 joined 12:57 iblechbot joined 13:05 gryphon joined 13:08 cosimo joined 13:10 s1n_yapc joined 14:13 magnachef joined 14:16 particle1 joined 14:23 Theory joined 14:24 s1n_yapc joined
dalek tracwiki: v72 | whiteknight++ | WikiStart 14:25
tracwiki: create a page to hold info about L1 as discussed at YAPC
tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff
tracwiki: v1 | whiteknight++ | L1Recap 14:28
tracwiki: create page about L1 with info originally drafted on my blog
tracwiki: trac.parrot.org/parrot/wiki/L1Reca...ction=diff 14:29
tracwiki: v2 | whiteknight++ | L1Recap 14:32
tracwiki: removing stuff that was intended only for the blog post
tracwiki: trac.parrot.org/parrot/wiki/L1Reca...ction=diff
14:34 AndyA joined 14:45 chromatic joined
Coke needs something help enforce coding standards for cold fusion. 14:46
cotto Whiteknight++ for the L1 recap 14:48
14:50 uniejo joined
chromatic Coke, a priest? 14:51
pmichaud I was thinking "baseball bat" 14:53
Whiteknight ColdFusion coding standard #1: you should actually be using PHP instead 14:56
14:56 kid51 joined
cotto Whiteknight, does atomicity apply to L1 opcodes? 14:56
Whiteknight :)
cotto: I believe so
chromatic Atomicity at the processor level? 14:57
cotto If they're made up of more than one machine instruction (which I assume in the common case), it's perfectly possible that an L1 instruction could be interrupted.
chromatic, that's what I was thinking.
chromatic Depends on the processor. 14:58
I don't think we can guarantee automicity of every L1 op right now. 14:59
Whiteknight an L1 instruction could be interrupted by a C-level callback. But the C-level callback will register a PIR-level callback in the scheduler, which treats L1 ops as atomic
so from the high-level view, L1 appears atomic for all components in Parrot
chromatic The kernel could interrupt an L1 op though.
Coke Whiteknight: coldfusion > php, IME. 15:00
Whiteknight Coke: that's fine too
chromatic: yes, that's true, but another L1 stream will not interrupt an L1 op 15:01
Coke chromatic: I see talk about L1 bytecode. Are we going to have LBC and PBC ??
(seems like we should not be multiplying bytecode types.)
Whiteknight Coke: yes and no. PBC can be thought of as a macro layer around LBC for compactness 15:02
NotFound Coke: I just read your message. How can I access feather? 15:05
Coke ask juerd.
juerd?
purl hmmm... juerd is root or at juerd.nl/ or mailto:juerd@juerd.nl
Coke NotFound: I am running against my own copy of an installed parrot, and there's a installed version in the common area that I'm not using. 15:06
I suspect if you're not duplicating the error, the other-installed copy might be the problem
NotFound I installed in a non privileged directory, without any other installation. 15:07
Whiteknight which test target do we use to test file-level and funciton-level documentation?
is that codetests?
Coke NotFound: so it's probably the other-installed version conflicting.
(at a guess)
NotFound I'll check that locally in one of my machines first, then. 15:08
dalek tracwiki: v3 | cotto++ | L1Recap 15:09
tracwiki: basic copyediting and clarity changes
tracwiki: trac.parrot.org/parrot/wiki/L1Reca...ction=diff
Whiteknight copyediting++ 15:10
jdv79 isn't the stack getting a bit large? from HLL to the hw i mean. it seems as if optimzations may get more difficult the deeper the stack gets, no?
Whiteknight jdv79: it's counterintuitive. The more layers of abstraction we have, the more opportunities we have for major algorithmic optimizations in each 15:11
chromatic Easier actually. The better the abstractions, the easier to optimize them.
moritz but we should not forget that we also have to actually *do* them :-) 15:12
having possibilities for optimization isn't enough in itself
Whiteknight True. Very true 15:13
but we don't even have the potential right now
moritz right
chromatic STOP SAYING WHAT I'M THINKING... oh well, go ahead
cotto Simply going through a single layer instead of a PIR/C mutt is an optimization itself.
Whiteknight is tuned in to chromatic's wavelength
chromatic Tell me then, what flavor pie? 15:14
cotto btw chromatic, I've got a map I'd like you to draw me a picture of.
chromatic It looks like Florida. Creepy.
cotto particle1, where are you? 15:15
15:15 ilia joined
cotto goes off to search 15:16
pmichaud anyone seen particle? 15:18
15:18 ilia joined
pmichaud nm, found him. 15:19
chromatic How fast is he going?
pmichaud I have no idea. 15:20
Coke wave to him for me.
chromatic That's him then.
15:20 donaldh joined 15:23 eternaleye joined
Tene tene? 15:23
purl you are, like, Stephen Weeks or a madman
Tene purl: tene is also blogs.gurulabs.com/stephen/
purl okay, Tene.
15:25 ilia_ joined
cotto seen darbelo 15:30
purl darbelo was last seen on purl 17 hours, 41 minutes and 43 seconds ago, saying: <private message>
cotto apparently he's right here and he's sitting still. I'm going to write a paper about it. 15:31
(particle)
pmichaud barbie's talk is running longer than listed, so I'll be a bit longer than originally expected 15:32
Whiteknight chromatic: blackberry pie 15:34
Coke I would have picked Shephard's. ah well. 15:36
dalek TT #786 created by jkeenan++: io_cleanups branch: config step auto::gettext throws warnings on ... 15:37
Whiteknight kid51++ 15:38
karma kid51
purl kid51 has karma of 77
Whiteknight well that's bullshit, he has like several thousand commits 15:39
karma jkeenan
purl jkeenan has karma of 2229
Whiteknight that's better
jkeenan++
15:40 chromatic joined
japhb Tene: obNVidiaPing 15:45
15:57 fish joined
fish hi :) 15:57
moritz told me, here is someone who is attending the fusion festival. i'm attending too. so if anyone like to meet, i'm there ;) 15:58
dalek TT #787 created by japhb++: add vtables for: get_pmc_keyed{_int,_str,}_lvalue ; and similarly for ...
16:22 Themeruta joined 16:24 ascent joined 16:27 NotFound joined 16:32 kid51 joined 16:35 cotto joined 16:47 Psyche^ joined 16:54 cognominal joined 16:57 chromatic joined
Whiteknight allison: ping 17:01
dalek TT #788 created by jkeenan++: Audit PDD30 compliance
17:02 magnachef joined 17:15 chongax joined 17:26 jhorwitz joined 17:51 jjore joined 17:59 bacek joined
allison Whiteknight: pong 18:07
Whiteknight hey allison, how are you doing?
did you see that email I sent to the list about the io_cleanups branch? I would really like to get a thumbs up/down from you about my approach there to see if I should waste any more time on it 18:08
allison Whiteknight: didn't see the message yet, will take a look now 18:10
18:10 bobke joined
skids
.oO(Renaming Hash to AssociativePMCArray? Why not AssocativePMC array, then they can both be misspelled
18:10
18:17 soxet joined
Coke Whiteknight: my concern is why did you make Handle a PMC? 18:17
if it's abstract, and no one inherits from it... 18:18
Whiteknight Coke: Because all ATTRs of FileHandle need to be P/I/S/N in order for FileHandle to be inheritable
Coke seems like it's better modeled as a library, or as private-to-parrot c methods.
Whiteknight and it's persistent information that we want to keep for each instance of FileHandle
Coke but if Handle only being used a collection of methods, why does it need to be an attribute?
so a Handle is not just a collection of method? 18:19
"s"
Whiteknight it isn't a collection of methods, it's a collection of data
Coke ok.
Whiteknight it actually has no methods and only a small handful of vtables (although I want to add a few vtables for ease)
by separating it out this way, we can finally subclass FileHandle properly from PIR 18:21
or, we're much closer to that goal
18:23 darbelo joined
Coke Is there a ticket open for not being able to sublass something witha a non-register attribut? 18:23
"e"
Whiteknight Coke: a handful of tickets reported have that as a root cause, yes 18:24
but no one ticket for this root issue
18:26 JC1 joined 18:29 japhb joined
allison Coke: well, that was by design 18:31
Coke: on the theory that C attributes aren't particularly useful from PIR (where everything is a register) 18:32
Coke: it would be possible to inherit C structs etc, using a various proxy PMCs (like UnmanagedStruct, etc) 18:34
Coke: not entirely sure it's a good idea... 18:35
18:36 cghene joined
Whiteknight allison: the implementation in the branch is obviously very messy right now, should I spend the time to clean it up or not? 18:36
18:37 cghene joined
reezer bacek: are you there? 18:38
purl yes!
allison Whiteknight: how's the speed? 18:39
Whiteknight: we made the move to make FileHandle *not* subclassable, because making it subclassable made it really slow
Whiteknight as the implementation stands a little slower then trunk, but I'm not currently caching the Handle PMC between accesses. 18:40
allison ouch
(because trunk is already too slow)
Whiteknight Once I finish cleaning, I don' think there will be any performance penalty though
allison it needs to be faster, not equal 18:41
Whiteknight: do you have a specific range of revisions you want me to review, or all revisions since the branch started?
Whiteknight the basics got put in place in just one revision, let me get it 18:42
allison 39741?
Whiteknight yep, that's the one 18:43
pretty big though, sorry about that. it was proof-of-concept
I think I can make it faster then trunk. Won't be dramatic but I think I can make it better 18:45
(I don't want to sell you more then I can deliver) 18:46
bacek reezer: no actually
bacek trying to understand why he woke up at 5AM... 18:47
Coke allison: i would say that having un-subclassable PMCs is bad.
allison Whiteknight: side comment, don't check TODO into source code, that was an old bad habit we're still cleaning out of old code
Coke allison: I think that's fine in a branch. 18:48
Whiteknight allison: noted. Those notes are for the branch and will be definitely gone before it merges
I should probably use a wiki checklist instead though
Coke (non-subclassable) especially given all the places where subclassing fails already accidentally. (adding more on purpose)-- 18:49
allison Coke: mmm... the theory was that we'd be moving everything over to use register types (that everything should be using register types), but in actual fact the main point of the C PMCs is to act as an interface to low-level C systems
pmichaud moving to register types seems.... unlikely.
allison Coke: so, I can consider that a theory proven unworkable
Coke allison: if we're going to have PMCs we can't subclass on purpose, i think we're going to have to introduce 'final', ala java.
(using register types instead of PMC types for, say, HLL vars?) 18:50
allison Coke: it's not that they're unsubclassable, it's just that they're not subclassable from PIR
Whiteknight I agree with that, I've had a few instances of PMCs I wanted to be able to mark "not subclassable"
allison it's perfectly fine to subclass them from C
Coke ew.
allison well, it's the basic nature of our C/HLL divide 18:51
C is primitive, but we're using it to bootstrap a HLL virtual machine
this is why chromatic wants to eliminate C PMCs entirely
and write them all in some higher-level language
but, that solution also has problems, since there are times when it's really valuable (read fast and clean) to write PMCs in C 18:52
the PMC can encapsulate some low-level detail of the VM (like the interpreter, or an I/O handle) and hide the C details from the PIR user 18:53
I'm not really sure what the ultimate solution will be. 18:55
so far, it seems to be heading in the direction of making C PMCs act more like PIR PMCs 18:56
(that is, more toward chromatic's idea)
reezer bacek: am I allowed to query you? I would like to make a suggestion related to bug #758. You can read it later
moritz reezer: I'm sure he won't kill you for it, so go ahead ;-)
bacek reezer: of cause
moritz: Austria and Australia are different countries! He is just too far away to kill him (at least in person :) 18:57
moritz ;-) 18:58
Whiteknight allison: So what's your initial verdict on io_cleanups, reasonable idea or not? 18:59
(assuming I can make it faster)
bacek doughera? 19:00
.oO( Modulus of negative numbers is counter-intuitive)
19:10
Small quiz: 19:12
result of "-5 mod 3" will be:
a) -2
b) -1
c) 1
moritz -2 in C, 1 in Perl 19:13
bacek d) This poll suck, no one should mod negative numbers
Coke 1 in tcl also.
bacek Why it's "1"? 19:14
moritz bacek: because $n mod $m is usally a function mapping to the range 0..($m-1)
bacek: it's "wheen you add or substract $m sufficiently many times, what's the number you get in that range" 19:15
Coke modulous != remainder.
bacek moritz: what about "5 mod -3"?
Coke modulus.
purl Math is HARD!
bacek and "-5 mod -3"... 19:16
moritz bacek: that doesn't make sense to me.
bacek moritz: indeed...
purl indubitably
moritz well, you could interpret it as a mapping into the range -3..0 19:17
bacek but parrot's test suite expect "-1" and "-2"...
moritz: looks like your assumptions are correct 19:19
allison Whiteknight: still reading through the diff
Whiteknight: (with some interruptions)
19:20 donaldh joined
moritz Infinoid: iirc you're the one to talk to about dalek... could please bring the commit mesages from github.com/hinrik/grok/ to #perl6? 19:24
cotto grok?
purl grok is an anagram of okrg, not okra
moritz cotto: documentation tool for Perl 6 19:25
cotto good naming
Coke grok is also a documentation tool for Perl 6 19:27
purl okay, Coke.
cotto how does it relate to u4x
?
moritz masak started the u4x project, and literal decided to call the command line tool "grok", or so 19:28
cotto ok. so it's a component
moritz afaict, yes 19:29
masak it's the tool that delivers the docs on the CLI.
allison Whiteknight: I understand the reasoning behind the change, you're looking at handles from the OS perspective (particularly the linux perspective) where they're all integer descriptors
masak there might be other views as well, HTML/Web, Padre, etc.
allison Whiteknight: but this particular code rearrangement isn't buying us anything
Whiteknight: and it's costing us an extra PMC for every filehandle, expensive 19:30
Whiteknight: tweak your thinking around a bit, and you're nearly there
Whiteknight: FileHandle, Socket, and Pipe *are* the low-level PMCs, doing what your Handle PMC is doing 19:31
Whiteknight: and the way to subclass them from PIR is by delegation
Whiteknight allison: so subclassing these from PIR is a different process from subclassing any other PMC from PIR? 19:34
I don't think it's good to relegate certain PMC types to second-class status in terms of subclassability, especially when there is no check anywhere that using the subclass op on these types will fail in strange ways 19:35
allison you just did with Handle 19:36
it's okay to have some core types who's entire purpose is to act as an interface with low-level systems
Whiteknight But I specifically made it impossible to directly instantiate a Handle from PIR
you can't do that with FileHandle
allison by doing that, you made it impossible for anyone to subclass FileHandle from PIR 19:37
Whiteknight how's that?
allison since they couldn't directly instantiate the core delegate type from PIR
Whiteknight the system will allocate the Handle internally, and do it lazily
allison a subclass has to be able to override all behavior of the parent 19:38
Whiteknight (doesn't do that yet, that's one of the "cleanups" I mentioned)
allison if the subclass can't create the delegate Handle, it's no better off then not being able to create the low-level os_handle
Whiteknight that's a bit of an exaggeration, it is a little better off 19:39
certainly better then the behavior now with regards to subclasses of FileHandle
Okay, as an alternate idea, what if instead of delegating to a Handle type, we store the file descriptors in a table internal to the IO system, and store an INTVAL index into that table instead? 19:41
provides the kind of complete subclassability that I think we both want 19:42
Coke yay, global variables! 19:43
;=)
Whiteknight Coke: would be a pointer on the interpreter, so thread-local
we already have an IO-specific structure in there anyway, it would be trivial to add in a table of OS descriptors 19:45
Coke Whiteknight: I can live with interpreter-level, sure. 19:46
cotto does the idea of multiple threads per interpreter make sense? 19:47
(sanity check, not suggestion) 19:48
Whiteknight cotto: no, each thread is it's own interpreter
cotto k 19:49
Whiteknight allison: The current semantics of FileHandle are bad (subclassing is allowed, but then subclassed objects can't do any file operations). I want to fix that. 19:53
I don't think disallowing subclassing on FileHandle is the right way forward, but I could be wrong about that
allison Whiteknight: the way to fix that is to fix PMC subclassing 19:54
Whiteknight okay, good. I would rather fix the root problem in one shot. How do we go about doing that? 19:55
(I ask with the full knowledge that there may not be a satisfactory solution anywhere) 19:56
allison Whiteknight: give PIR Classes the ability to create a delegate or proxy structure for ATTRs that aren't register types
Whiteknight like a delegate PMC type? or something lower then that? 19:57
allison though, it's messier than that, since the GET_ATTR/SET_ATTR macros also need to know how to interact with the unusual types
Whiteknight that shouldn't be so hard if the delegate type has a sane interface
allison the basic problem is, attributes in PIR Classes are stored in an array
That array can only have PMC elements 19:58
so, it knows how to box and unbox the basic register types
Whiteknight so do something like box C types into ManagedStruct or something similar?
allison it doesn't know how to box and unbox other arbitrary types
C struct types can be boxed as ManagedStruct, yes
Whiteknight we can teach anything how to handle anything, we just need to know the way to do the teaching. 19:59
allison yes
the magic is all in the GET_ATTR/SET_ATTR macros
Whiteknight I'm not daunted by the challenge, so long as there is a solid goal in mind
allison the best place to start is probably with a list of C types in the current C PMCs, and how they can be represented as a PMC 20:00
mostly it's structs (which we already have a correspondence for)
some are stranger 20:01
Whiteknight anything that's stranger we could easily (though naively) put into a struct and handle that way
so that's not a problem
allison Whiteknight: we don't want to create another C struct for every C PMC 20:02
Whiteknight I said it was naive
allison they already have a C struct, which we're translating to an array
dropping them into a one-element ManagedStruct is a possibility 20:03
Whiteknight or another Managed* PMC type to handle scalar values 20:04
allison something more like a CPointer may be preferable
A generic PMC, designed to hold a pointer to any arbitrary C type 20:05
Whiteknight okay, I'll put this on my queue for now. I'll back out the Handle stuff from io_cleanups and continue working around that for now, and we can plan this idea out on the wiki. Good?
allison (with appropriate behavior for boxing and unboxing that value, depending on its type)
sounds good
Whiteknight Thanks. allison++
allison The Handle stuff was on the right track, BTW, in the sense of abstracting a C type into a PMC. 20:06
Whiteknight yeah, I figured it couldn't be entirely wrong 20:07
:)
cotto allison, have you looked at L1Recap on the wiki?
Whiteknight is heading home now. Goodbye 20:12
allison cotto: not yet
20:23 gryphon joined 20:29 chromatic joined 20:43 cotto joined 20:56 amuck_ joined 20:57 whoppix joined
Tene allison: available to chat about pynie? 21:13
21:14 HG` joined
allison Tene: sure 21:14
Tene allison: I've been wanting to work on getting clases functional in Pynie. Any guidance you want to offer, or can I just do whatever I want and ask forgiveness? 21:15
allison Tene: are there any particular obstacles to getting classes to work? 21:16
Tene Right now, the class bodies aren't even making it into the AST. I have an implementation of that working pretty well, and I made it use P6object... I figure that will be subclassed.
The major obstacle is class instantiation. To do it the right way, I'd need to be able to set :vtable('invoke') on a method 21:17
allison Tene: it seems to me that getting them to even partially work is better than what it has now, and we can always refine later
Tene but that's broken at least until after PCT refactors.
allison Tene: oooh, I see, yes that's the one thing that could be problematic
Tene I got it working when I faked it.
allison (using anything from Perl 6)
Tene P6object isn't Perl 6. 21:18
allison P6object seems like overkill for Pynie's needs
Tene eh, could be. I'm not so sure.
allison Tene: yes, and I've talked to patrick about changing the name
Tene: but using anything with P6 in the name is problematic
Tene Will it still be problematic if I subclass it first to give a different name?
allison a more likely solution, is a trimmed-down version of it for Python 21:19
strip out all the extra Perl6-ish stuff
Tene Sure, okay.
I'll investigate that. 21:20
allison basically, a PyObject
cotto Just rename it to PythonObjectThatHasNothingToDoWithPerl6
allison in fact, you could likely do fine just emulating PyObject
cotto with a boolean attribute called "comes_from_perl6" that's always false
Tene eh? explain "emulating PyObject"
allison on the whole, the data types for Parrot implementations of existing languages should mirror the types of the existing languages as much as possible 21:21
PyObject is C Python
Tene Ah.
allison docs.python.org/c-api/structures.html
Tene (see... I don't know python very much. :) 21:22
allison that's okay, deep knowledge of Python isn't needed, just treat it like a spec
cotto pmichaud, ping
Tene allison: but it's definitely not okay for me to commit anything referring to P6object. 21:25
21:26 Whiteknight joined
allison hmmmm... I guess it depends on if it's a "temporary, will remove in a month" solution or a "permanent" solution 21:26
Tene: but it's at least not worth pouring a pile of work into a P6object based solution 21:27
Tene Okay, I understand.
allison Tene: if you have one already implemented, it would seem like a waste to throw it away
Tene Speaking of :vtable('invoke'), I hear that's blocking on pcc refactors... What's the story on that branch? 21:28
allison held until after 1.4
too risky for a "supported" release
it's mainly in the phase of "fix build and test failures"
Tene last I checked, trunk wouldn't merge cleanly into the branch. 21:29
allison no, it shouldn't
Tene Shouldn't? 21:30
allison (I hope no one tried to commit a merge)
no, I'll extract a diff and apply it to a clean branch
Tene Nobody tried to commit a merge.
TWhile I've been watching, at least.
allison patrick's branching strategy is cleanest here 21:31
moritz with git-svn you can experiment with branches without ever pushing anything to the server
allison moritz: you can with svn too, just don't commit it
Whiteknight irclogs? 21:33
purl irclogs is irclog.perlgeek.de/parrot/today or see also: infrared clogs
japhb allison: (local svn branch == don't commit) That's ... suboptimal. 21:38
Tene We're not on a sub. 21:39
allison japhb: actually, I prefer it. Untangling the "locally committed" from "locally not committed" from "remotely committed" is an absolute nightmare in git 21:40
japhb: in svn it's dead easy to revert, or throw away a branch
japhb allison: I'm not sure I follow -- In git, you can branch freely, commit to whichever, and deleting branches is trivial. If that's not enough, you can make multiple local clones, and branch each of them trivially. 21:41
allison japhb: but then, that's one of those open source holy wars, so best to call it a personal preference
japhb shrugs.
Tene allison++ 21:42
japhb It's not the SVN v. Git thing that I was commenting about, it's the not ever committing a branch, just to keep it away from remote repo.
21:42 ilia joined
allison japhb: oh, agreed, long-lived changes should be committed somewhere 21:43
dalek TT #789 created by whiteknight++: Make All PMCs Subclassable
allison japhb: but moritz was talking about experimenting with merges, so a shortlived change
Tene I have trouble keeping track of which of my strong opinions are appriopriate to share, so I just try to keep all of them to myself.
japhb ah, I get it.
Tene: How about having a strong opinion about OpenGL? ;-) 21:44
japhb pushing while he still can spare tuits ....
Tene japhb: oh, sure.
lemme go back to nvidia proprietary...
and then you want me to rebuild Parrot? 21:45
japhb And don't forget to add those two extra packages ... the -libs and -devel packages for the nvidia proprietary drivers.
Tene Yes, installed.
purl installed is, like, easy as well
japhb Ah, great,
yes, so after the switchback, do a realclean/configure/make
Tene japhb: rebuilding 21:54
japhb: exactly the same failure as before 21:57
japhb goes mentally Turrett's for a minute 21:58
Dang it, I thought that was the key
... I wonder if those libs aren't being picked up properly. (linked in wrong order, or something) 21:59
Tene I can give you ssh on my box if you like
moritz opengl over ssh? teh horror :) 22:00
japhb moritz: It can be done! 22:01
Tene I was more thinking just to check out linking order... ;)
japhb (I have, actually ... because the machine I was sitting on didn't have the app, but it *did* have a much faster video card than the machine running the app, and I was on a fast network. It was a win over just sitting at the slower machine, believe it or not!) 22:02
Tene: I knew what you meant.
Whiteknight Yay! Whiteknight: 1, Warnock: 0
japhb And yes, sounds good.
Tene, are you accepting PM's? 22:05
Tene I am.
22:07 davidfetter joined 22:20 gryphon joined 22:23 chromatic joined 22:31 viklund joined 22:32 contingencyplan joined 22:34 rg1 joined
Infinoid moritz: Will do, sometime tonight 22:38
Whiteknight Infinoid: I'm backing out those changes to Handle I committed the other day 22:46
Allison helped me realize that it's not really the right solution, instead I opened TT #789 22:48
Infinoid reads #789
Ok. I think the buffer fix is valid either way (and I also have some other things to fix there) 22:49
... why can't I get to trac
22:54 bacek joined
Infinoid there we go. I love how running my server out of disk results in DNS timeouts 22:54
Whiteknight I'll check out the buffer fix then and reapply if necessary 22:58
I had a fix in there too with Socket PMC, so I need to reapply that 23:01
Infinoid oh, did the branch go poof? 23:02
Whiteknight no, not the whole branch, just the one commit
23:03 tetragon joined
japhb How do you determine the full pathname of a library loaded via 'library = loadlib "libfoo"' 23:07
?
23:20 donaldh joined 23:21 skids joined 23:25 patspam joined 23:33 cotto joined
bacek good morning 23:34
purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
bacek msg mj41 Can you setup "make cover" on TapTinder? Not for every commit though. 23:43
purl Message for mj41 stored.
23:48 mikehh joined
cotto Whiteknight, ping 23:48
23:49 kid51 joined 23:58 Limbic_Region joined