Parrot 1.3.0 "Andean Swift" released | parrot.org
Set by moderator on 23 June 2009.
Coke cattle mutilations 00:02
Austin I sense a certain latent hostility here... 00:03
Of course, after what happened in Pamplona the other day, your comment could be taken two ways..
(Sometimes, sen~or, the bull, he wins.) 00:04
Coke I was referring to _sneakers_ 00:06
Whiteknight hello #parrot 00:07
Austin I was referring to CNN. (edition.cnn.com/2009/WORLD/europe/0...nSTCVideo) 00:08
But yours is good, too.
Hello, Whiteknight.
Cattle mutilations II: The Bulls Strike Back
Whiteknight Good evening Austin 00:10
Austin Why ever is there an opcode for "downcase"?
Whiteknight, how modular were you saying the GC subsystem is?
NotFound Austin: not so uncommon in San FermĆ­n 00:11
Coke Austin: that's an excellent question to ask about many of our opcodes, but I'm guessing mainly because strings don't have methods.
Whiteknight Austin: it's not nearly as modular as it should be 00:12
but we don't know what changes need to be made to increase modularity until we have a second core
Austin Coke: Of course Strings have methods. Maybe 'strings' don't, but 'Strings' do. 00:13
NotFound Whiteknight: we were talking about making a second core that does nothing. 00:14
Austin Whiteknight: ^^ what NotFound said.
"Infinite Memory GC"
Coke Austin: I said strings, not Strings.
Austin Coke: yeah. I know.
Coke: It still feels wrong. 00:15
00:16 amuck joined
Coke Austin: it would take, what, six opcodes to do it without an opcode? 00:18
I'm not defending it, just pointing it out.
Austin How 6? 00:19
Whiteknight A second core that does nothing should probably be easy enough to write
Austin get_global /parrot/String/downcase; set args; get results; call 00:20
Coke Austin: P1 = new String; assign P1, S1. P1.'downcase'() . S1 = P1 00:21
so, 4 ish.
Austin Yeah. In the spirit of L1, I've been thinking about what really needs to be in C. My default answer is "not that!" and it's taken me a long ways.
NotFound Whiteknight: even if it can run few things, it can help isolate testing the interface from testing a second GC 00:22
Austin But there's a kind of chicken-and-egg problem with the GC and a couple of other systems.
Whiteknight: Where would I go to find out how to write a new GC core?
Whiteknight our current core is src/gc/gc_ms.c 00:27
so you probably want to create src/gc/gc_inf.c, and try to implement the same interface 00:28
I'm going to throw together a prototype right now unless you've already started 00:31
Austin I've got nothing. 00:32
Although I think the GC should be a PMC. 00:33
But that comes later.
One obvious think, Whiteknight, is that the IMM GC should be able to dump a summary of used memory at exit. 00:34
Whiteknight we can add that fancy-schmance kind of logic later
Austin Sure, man. Three printfs, later. 00:35
:)
Whiteknight back during GSOC I proposed that GC should be a PMC too, so I know what you mean
okay, I have the prototype of the core 00:38
just need to integrate it and test it
brbrooks Whiteknight: are you planning on commiting this new core? 00:39
Austin Nah. Nothing ever passes the tests the first time through. 00:40
Whiteknight brbrooks: maybe, it will be quite an instructive template 00:41
It's messy right now and doesn't satisfy our codingstd or anything, so needs that fixed before committing
I'll package up a patch for interested people when it's done
Austin You just deleted a bunch of stuff from the original MS gc. How can it not satisfy the coding std? 00:43
00:44 bacek joined
Austin rehi, bacek 00:45
I was just thinking of you.
Whiteknight Well, I didn't copy+paste because that would have actually been more effort
bacek Oh NOES
Austin Whiteknight: what did you do?
bacek Good localtime()
Whiteknight I wrote an entirely new file from scratch
Austin I think we should schedule an intervention for Whiteknight.
Whiteknight it's remarkably easy if the GC doesn't do anything fancy like "manage memory" 00:46
Austin Hey, it still has to provide some memory when asked for it.
brbrooks Whiteknight: that what i thought it would be good for ;) esp me
Austin This is how you know you've spent too much time in the GC - you write a new on while chatting in irc. 00:49
Whiteknight seriously, when you see how retardedly small this is you won't think it was such a big deal 00:54
Austin You're an engineer, right? 00:55
Whiteknight hah, segfault!
yeah
Austin You ever hear the joke about the guy who was an engineer at a plant for 40 years, then retired with a contract to provide support services? 00:56
One day he gets a call: the Big Important Machine is overheating, and there's metal flakes in the oil, what do we do? 00:57
So he goes in, looks over the machine, grabs a piece of chalk, and marks an 'X'. He says, "Drill a 1/32nd inch hole right here. It'll drip oil, so put in a quart of new oil every month." 00:58
He submits a bill for $20,000 to the accounting department, but they send it back: "We need an itemized invoice of services you actually provided. I heard all you did was make a chalkmark and tell them to drill a hole." 00:59
So the engineer types up a new invoice: "Made chalkmark showing where to drill hole: $1. Knowing where to put chalkmark: $19,999.00"
Whiteknight haha, nice 01:00
I've heard variants of that joke before, always priceless
Austin Yeah. So when we see how small the file is, it's going to go under "knowing which lines absolutely had to be there."
Whiteknight right 01:04
Austin brbrooks: There was talk at PVMW about creating a malloc/free GC. If you're interested in doing a GC module, that's the one to shoot for, I think. 01:05
brbrooks malloc/free GC?
Austin Ayup. 01:06
brbrooks meaning
Austin No pooling, no kind of optimization or efficiency. Just stop the world, free() whatever isn't marked, and carry on.
brbrooks what do you mean 'free() whatever isn't marked, and carry on." 01:07
01:11 allison joined
Austin I could swear I typed up something after PVMW, but now I can't find anything. Drat. 01:11
Oh well, maybe not. 01:15
brbrooks: You know the basics of what a GC does?
brbrooks Yeah 01:16
Austin Okay. Half of that is "find garbage" and the other half is "manage memory blah blah optimal blah blah allocation" 01:17
So the malloc/free GC would be just the first half.
Someone asks for memory, you call malloc. 01:18
You scan and find gargage -> call free.
Presto! Malloc/free GC.
01:18 TiMBuS joined
brbrooks So... the most basic 'stop the world' gc? 01:19
bacek Don't forget to link with ptmalloc. Otherwise it will not be bloody fast 01:20
Austin It trivializes half of the problem, but it offers value IF (IF IF IF) it gets written by somebody other than Whiteknight, and if it DOES NOT steal code from the existing GC.
Whiteknight right 01:21
Austin Because it becomes a test of the "modular-ness" of the GC interface, and it (ideally) implements a second whack at figuring out what's garbage and what's not.
brbrooks yes, and im interested in what whiteknight's working on now cause that would be a good starting pt 01:22
just making sure that it's a basic, basic stop the world gc
that you're talking about
Austin The one he's working on right now is mostly "return;" I don't think that's much of a starting point (except in as much as he has the function names right).
Whiteknight I'm getting a really weird failure right now that I'm trying to track down 01:23
Austin LOL
What failure, WK?
Is that a "compile failure"? Or a "the system secretly depends on information being passed in recycled memory" failure? 01:24
Whiteknight ah, I figured it out. I wasn't initializing the pmc_ext pool properly
brbrooks Austin: I don't think that a basic version of the current GC w/o optimizations and fancy mm would test the api very much... but it would be benefitial for the other reasons mentioned 01:25
Austin brbrooks: It tests the PVM->GC interface to the extent that there's code behind it. If the interface has low coupling, there isn't much code needed. If fancy mm is needed to test the interface, the interface is probably broke. 01:26
But yeah, getting stuff out of Whiteknight's head and into a PDD or the wiki is a valuable goal in itself. 01:27
Whiteknight haha, I fixed that last segfault and am now running into other failures
this is quite the good exercise!
Austin Tomorrow night: situps. 01:28
brbrooks low coupling and high cohesion... sounds like a marriage gone sour 01:29
Austin :)
dalek rrot: r40008 | bacek++ | trunk/src/pmc/hash.pmc:
[cage] Initialize hash->container in Hash.init
01:31
brbrooks yeah it could help with new logic and i could contrib to the docs... ive been reading the mm / gc docs and they're good, but i have a feeling they're missing stuff 01:32
new logic meaning new code instead of ripping out of gc_ms.c
Austin Ayup. 01:34
nopaste "Whiteknight" at 69.248.162.161 pasted "new GC core patch" (169 lines) at nopaste.snit.ch/17228 01:37
Whiteknight ok, that's the new core as it stands now. I'm running into a weird assertion failure in the packfile system, but you should get an idea for what I added
the problem is that some systems are depending on the free/live flags being set by the GC, and that's not good 01:38
(and some systems are checking for alive/dead status is very strange ways that I've never seen before)
anyway, I'm off to bed for the night. Talk to you gentlemen later 01:39
brbrooks How crucial is it to be on the dev mailing list? Is there much on there that doesn't float around IRC? 01:46
Austin It's low-traffic, most stuff is on IRC, sadly. 01:47
pmichaud but one can always read the irclogs 01:49
Austin Of course.
purl Indubitably.
Austin Patrick, I think we need to organize an intervention for Whiteknight. We were chatting about a trivial GC (does nothing except allocate) and he wrote one in about six minutes. 01:52
We need to pump him full of beer and discard some of those brain cells.
brbrooks Austin: did you look at the patch?
Austin I'm building it now.
pmichaud (downcase opcode) if we don't have a downcase opcode, then we need some way to do case-insensitive string compare 01:53
Austin Do we?
pmichaud PGE definitely needs one, yes.
Austin What's the difference between $S0 and $P0 ?
bacek one is $S0 is STRING* 01:54
$P0 is PMC
Austin Thanks, bacek.
dalek rrot: r40009 | bacek++ | trunk/src/gc/mark_sweep.c:
[cage] Mark HLL_info and HLL_namespace as alive.
pmichaud the major downside to moving opcodes into methods is that as of now method calls in Parrot a REALLY SLOW
s/ a / are / 01:55
Austin Yeah.
But is that because of dispatch, or call?
pmichaud like mind-bogglingly slow-as-molasses geological-time-scales SLOW
either way, operations that are done frequently need to be opcodes
and case-insensitive compares are relatively frequent
and currently we do that by downcasing things 01:56
Austin I'm not sure I agree with your premise.
pmichaud (yes, that's not a completely valid way to do it. Parrot's a bit limited there.)
Austin "Make it an opcode" isn't a universally useful way to improve performance.
pmichaud at the moment, "make it a method" is definitely a way to degrade it 01:57
Austin Sure.
pmichaud if you have some other option between the two, I'm all ears.
Austin But I wondering about the dispatch versus call overhead for a reason (more)
pmichaud it's the call overhead, primarily
Austin Really? 01:58
bacek whispering about testing GC failures in Rakudo on r40009
pmichaud Yes.
Austin I thought about caching the lookup results in the pbc.
pmichaud we already cache dispatch, yes.
but it's the call overhead, primarily.
Austin I thought the call overhead looked pretty cheap. What's going on behind the scenes that costs so much?
pmichaud the packing and unpacking of arguments 01:59
also, method calls into C are really slow
you end up with a new interpreter
Austin Ahh.
<boggle>
pmichaud (or perhaps it's vice-versa. That's a maze of twisty issues I tend to not delve into)
at any rate, there's a huge amount of expense in going between PIR and C
which is one of the reasons that calling convention refactors is high on the priority list 02:00
if method dispatch could be made faster than opcodes, I'd be Really Happy.
Like mind-bogglingly happy.
If I could have Parrot done over again, I'd request that it be optimized around method calls and dispatch. 02:01
Austin I doubt it will be faster than opcodes. But I think it could be fast enough.
pmichaud I'd even go for "fast enough"
Austin Well, there's the segfault, as advertised. 02:02
pmichaud bacek: you want me to try rakudo againt r40009?
Austin Ooh, and it's in PGE.pbc.
bacek pmichaud: yes. "./perl6 t/spec/S32-array/elems.rakudo" will be enough
pmichaud bacek: 64 bit or 32 bit ? 02:03
bacek pmichaud: 32 if I read your latest mail properly
Coke (GC should be a PMC) ... why?
pmichaud bacek: why will elems.rakudo be enough, then?
bacek [ cd] t/spec/S32-array/elems.rakudo ?? ?? ?? 02:04
pmichaud bacek: it's not nearly sufficient to test the files I report
one has to run a full spectest to know for sure
because every little change completely changes the impact on the spectests
bacek of course. But running fullspec take some time
pmichaud sure
but I can already tell you that S32-array/elems.rakudo was working as of r40000
(tested that earlier) 02:05
bacek *sigh*
pmichaud actually, it was also working as of r40004
bacek I can't reproduce any of your errors on my box...
pmichaud bacek: what os?
bacek pmichaud: Debian/Lenny, 32bit 02:06
pmichaud yes, Debian seems to have a somewhat different spectest result than Kubuntu
bacek different kernels, libc, phase of Moon, etc... 02:07
pmichaud anyway, I'll go ahead and run full 32-bit and 64-bit spectests against r40009 and see what we get. 02:08
As of 40004 I was failing a test on 32-bit.
(I forget which one now)
Coke rant. "object must be created by a class"
brbrooks Whiteknight's patch segfaults PGE.pbc -> PGE.pir 02:09
pmichaud why would the 40009 patch be necessary, anyway?
surely we don't expect the interpreter itself to be the only thing holding a reference to the hllnamespace and hllinfo 02:10
Austin brbrooks: I got the same thing. He'll probably have another patch tomorrow.
pmichaud unless HLL_namespace is actually "all of the hll namespaces"
brbrooks Cool... he said he was off to bed? What timezone is he in? 02:11
Austin (Or, you could begin your studies of the wily Neotoma Electricus...
bacek pmichaud: afaiu HLL_namespace holding all HLLs
Austin He's EST, like me. Near Philly, iirc.
pmichaud PMC *HLL_namespace; /* cache of HLL toplevel ns */
Looks like not.
I think it's a shortcut into the current HLL rather than having to go from the root every time. 02:12
brbrooks Ah... still early... im out in CA for the next 4 weeks
bacek there is also HLL_info
02:12 patspam joined
Austin What's in CA? 02:13
brbrooks internship
Austin Paid?
purl Paid is always good
brbrooks yes
Austin Sweet.
Where in CA are you?
brbrooks the valley ~_~
Austin Okay. 02:14
Be sure and ask for some good Peruvian restaurants.
brbrooks north San Jose
pmichaud bacek: did you see the note at src/hll.c:91 ?
Austin (If you can eat seafood.)
pmichaud brbrooks: going to OSCON? ;-) 02:15
bacek pmichaud: ahem... Why it's not marked?
pmichaud bacek: I don't know. I just saw the comment.
I'm guessing because "it's constant"
bacek This comment (adn idea behind) looks wrong to me. 02:16
brbrooks pmichaud: not worth the $$$... for a person in my position
pmichaud brbrooks: agreed, although I'm wondering if you could get a pass somewhere/somehow :-)
bacek HLL_info is OrderedHash. It creates keys in push_pmc. And they can get collected... 02:17
brbrooks That would be sweet. But Cisco is getting cheap these days... they just recently cut the supply of sodas / bottled water and dropped down to shittier coffee 02:19
highly doubt the would be interested in financing OSCON registrations for interns
pmichaud oh well. I'll wave to the north when I'm there :-) 02:23
...if I can figure out which way is north :-)
Austin Where's OSCON this year?
purl OSCON this year is quite cheap. < $1500 if you're speaking.
pmichaud huh? 02:24
Austin: San Jose, CA
Austin Ah.
That would be north.
pmichaud (speakers normally get free admission to oscon)
Austin Tell that to purl.
pmichaud purl, forget OSCON this year
purl pmichaud: I forgot oscon this year
pmichaud purl, I knew that you would.
purl pmichaud: sorry...
brbrooks Yeah I feel like I have a good sense of direction, but SJ can feel quite disoriented... geographically and the way streets / highways are laid out 02:25
Austin purl: Where's OSCON this year? 02:26
purl austin: no idea
Austin good girl
purl thanks Austin :)
brbrooks Is purl a bot?
Infinoid purl? 02:27
purl Infinoid?
bacek very annoying bot
Infinoid botsnack
purl thanks Infinoid :)
brbrooks but a person too? came out of nowhere: "19:23 purl: OSCON this year is quite cheap. < $1500 if you're speaking." 02:28
pmichaud purl recognized the phrase "oscon this year"
purl pmichaud: sorry...
pmichaud and so the bot responded with what it knew that matched "oscon this year" 02:29
example
my dog is brown
my dog
hmmm.
purl: my dog?
purl somebody said your dog was brown
pmichaud where's my dog?
purl i heard your dog was brown
brbrooks purl: 1+2.5
purl 3.5
pmichaud purl: forget my dog
purl pmichaud: I forgot my dog
brbrooks purl: how many ounces in a cup? 02:30
purl wish i knew, brbrooks
pmichaud purl: convert 2 pounds to ounces
purl 2 pounds is 32 ounces.
brbrooks purl: what is your name
purl i haven't a clue, brbrooks
pmichaud purl: convert 1 cup to ounces
purl I can't compare 0.000236584 meter^3 with 28.349523125 gram.
Austin purl: e**2*pi
purl Austin: huh?
pmichaud purl: convert 1 cup to fluid ounces
purl I don't know how to convert 1 cup to fluid ounces.
pmichaud purl: convert 1 cup to floz
purl 1 cup is 8 floz.
pmichaud purl: convert 1 usd to eur 02:31
purl I don't know how to convert 1 usd to eur.
brbrooks purl: $1 to eur
purl brbrooks: what?
brbrooks hmmm... neat
Austin Woo-hoo! Pmichaud with the goto ftw! 02:32
HLLCompiler::command_line requires a goto.
pmichaud (I have no clue what Austin is babbling about :-) 02:33
Austin Recoding HLLCompiler.pir into Close.
pmichaud oh.
Austin The "command_line" function as-written requires a goto. 02:34
(Because adverbs and args are not entangled, that I can see.)
Coke anyone care to suggest a fast way to figure out where in PIR my "object must be created by a class" is coming from? 02:36
Austin grep?
purl ACK!
Coke Austin: I know where in **C** it's coming from.
Austin Well, then.
Coke that doesn't necessary map nicely to the several thousand lines of tcl I have here.
Austin C -> opcode -> ack
Coke nevermind. 02:37
Austin what tcl are you running?
Coke just [parray] 02:38
except that that pulls in the stdlib.
Austin So you've got an objectPMC that is being new'ed. 02:39
As in $P0 = new 'Object'
You know which line it is? 02:40
Coke nope.
ack --nobinary "new.*Object" => nada. 02:41
Austin I mean of the parray.tcl?
pmichaud Coke: might be able to figure it out using gdb
Coke no. that's why I'm trying to find the PIR in question - it may not even be loading parray.tcl yet.
pmichaud: that'll get me an opcode, anyway; bet you 30 bucks it's "clone" 02:42
pmichaud set a breakpoint on Parrot_Object_init and Parrot_Object_init_pmc
Coke checking...
purl i think checking is just different
02:42 janus joined
pmichaud I suppose it takes too long to run Parrot with tracing enabled? 02:45
Coke I was close. assign.
so that doesn't really help. =-)
pmichaud: ... yes.
I was up to about 10m of -t4 output starting from 0.
PGE is a little... intensive in that regard.
pmichaud yes. 02:46
Austin Coke: You might want to define a built-in that does a trace for you.
Coke Austin: a built in what?
Austin A tcl builtin
Coke you mean for tcl?
Austin Yep
parrot_trace 1
parrot_trace 0
or whatever
Coke I can run inline PIR - enabling trace 4 had no effect 02:47
pmichaud Rakudo did that for a while via the parrot_trace() function.
dalek rrot: r40010 | bacek++ | trunk/src/pmc/pmcproxy.pmc:
[cage] Use constant_pmc_new in PMCProxy in the same way as in Class
pmichaud Nowadays we can just do Q:PIR { ... } :-)
Austin Yeah, 4 = function calls. You want 1.
pmichaud bacek: are you just making changes at random here or are you actually certain about the things you're shuffling around? 02:49
Austin Laugh.
brbrooks snap. they're bringing mechwarrior back
Austin Isn't the G in GC for genetic?
brbrooks: the game, or what?
bacek pmichaud: Just random checks.
Actually I'm worried about my keys_revamp branch. 02:50
Rakudo failing badly. Because of "GC issues" on this branch.
brbrooks the game. it's already in development: www.youtube.com/watch?v=sl4eI3htAuA
bacek So, instead of trying to figure out why I decided to clean as much as I can on trunk. 02:51
pmichaud I'd prefer to see a clearer explanation of what "constant PMC" means and when (not) to use it before we start switching a bunch of things around. 02:53
anyway, no gc errors in r40009 64-bit 02:54
bacek I don't have this explanation... And constant_pmc_new looks like very-very premature optimisation
Austin brbrooks: Doomed.
brbrooks doomed?
purl doomed is community.livejournal.com/so_very_doomed/
pmichaud 32-bit should be finished shortly.
Austin They've been trying to make a PC version of that game since the 80's.
bacek pmichaud: (r40010) I just made PMCProxy consistent with Class.
Austin Doooooomed.
They need to make it a Sims game. "Skin your mech" 02:55
brbrooks yeah im not sure how they're gonna make it interesting since the mechs move so slow... but damn that was a good game back when i was younger... had a joystick and everything... 02:56
Austin Laugh.
bacek I've got idea...
pmichaud I'm getting a failure in S32-io/IO-Socket-INET.t on 32-bit, but it doesn't seem to be -G related 02:57
I didn't get that failure on 64-bit, though. Interesting.
bacek Let's rename PObj_constant_FLAG in PObj_zombie_FLAG. It reflects current behaviour more precisely. 02:58
"constant" PMC are get collected. But not sweepd.
Typical zombies...
Coke Austin: if I enable trace 4 at the last possible point without modifying the standard library, I get:
./mytcl -e 'inline PIR ".sub anon :anon\\ntrace 4\\n.end\\n"; parray'
# Back in sub 'tcl;&inline', env 80e6df8
Object must be created by a class.
Infinoid hmm 02:59
Coke so, not entirely helpful. which is why I was looking for something a little more targeted.
pmichaud Coke: why trace 4 instead of trace 1?
Infinoid brbrooks: mechwarrior on DS isn't bad
Coke pmichaud: because at this point I'm just trying to narrow it down to a .sub?
running with "trace 1" now, but I expect this will take another 20m. 03:00
pmichaud Coke: it's not 'tcl;&inline' ?
Coke inline is the inline comand that turned on the trace.
Austin Coke: Could that be the upvar confusing things?
pmichaud oh, right.
Coke trace 1 is running now, I'll leave it and hope for the best.
pmichaud Coke: do you have a way of turning on trace 1 only after starting the parray stuff?
or is the error occurring before the parray processing? 03:01
Austin Doesn't parray require an argument?
nopaste "pmichaud" at 72.181.176.220 pasted "rakudo gc failure report, r40009" (20 lines) at nopaste.snit.ch/17229
Coke parray doesn't exist in a bare tcl - so that invokes [unknown] from the stdlib, which goes through a LOT of contortions to try to load it. 03:02
austin:yes.
Austin So this should be exercising only the first 2 or three lines, yes?
Coke and that should autoload parray, invoke it, and give me my error about the wrong # of args.
03:02 GeJ_ joined
pmichaud summary for the nopaste -- as of r40009, Rakudo isn't exhibiting any errors that are -G related 03:02
Austin Coke: Does parray work if you pass it something? 03:03
bacek pmichaud: thanks a lot!
pmichaud I'm not sure what the io error is, though.
Bisecting now.
Coke Austin: mostly, yes. 03:04
(pretty sure I have an extra newline in there somewhere)
Austin So does this mean the problem lies in the scope of the "if {...}" at the top?
(plus maybe the upvar...) 03:05
Infinoid Does anyone know what the current plan is with regards to the huge list of vtables we have? 03:07
If we're still encouraging rampant expansion, I'd love to add some more to speed up common I/O operations
Coke Infinoid: pretty sure it's 03:08
"more of the same"
or, better put, "status quo"
Infinoid great. I wasn't sure whether it was a limited resource (like ops) or not
Coke .. wait, ops are limited resources?
Infinoid the huge number of ops gets in the way of JIT. otherwise, no 03:09
Coke ah. from my standpoint, we don't have JIT, so I tend to ignore it. =-)
Infinoid same here :)
Coke if I'm reading the -t1 output right, looks like I'm dying on "$I0 = defined $P0", where P0 is the result of an 'open' call. 03:10
03:10 patspam joined
Austin Well, that's unusual. 03:11
Coke hurm. output from -t1 and output from gdb don't seem to agree about where the error is.
Austin Nopase the last 10 lines or so?
Did you try to catch the exception? 03:12
(Also, if -t1 is running on the same process as GDB, have you flushed the output?)
Coke nopaste.snit.ch/17230 03:13
no, two separate instances. 03:15
in one, I enabled the t1 as late as possible (at least from the command line). in the other, I ran the parray unmolested. 03:16
you seem to be somewhat knowledgable about tcl. I'd be happy for another hacker. =-)
Austin For very small values of somewhat. I toyed with it in the 90's. 03:17
Coke you didn't work at enron, did you? =-)
Austin But I remember thinking the up... functions were really cool.
No.
But a friend of mine was working for DEC before Compaq bought them, before HP bought them.
And they wrote their installers in tcl.
Jess told me he added a callback to the "progress" indicator, which was a Tk slider, so that you could drag the progress bar forward and it would skip operations. 03:18
Coke ... special. =-)
Austin I thought that was cool as hell, in a "be very careful what you ask for" way .. 03:19
Infinoid Coke: Does gdb die at the same point even when you run it with -t (within gdb)?
Coke Infinoid: I hope so. =-)
checking.
purl checking is, like, just different
Infinoid no, checking is <reply> 03:20
purl okay, Infinoid.
Austin checking.
checking...
checking
Infinoid chiggida check 03:21
03:21 kid51 joined
Coke Infinoid: surprisingly, yes. 03:23
Austin Next question: can you edit your trace call into parray.tcl?
(Start the trace after landing inside parray.) 03:24
bacek wrote mumbling mail about constants in Parrot...
Coke Austin: Yes, I can do all this the hard way. =-) 03:25
And I am.
That's not what I was asking in the beginning though. =-)
Austin Sure.
But the trace stopping in open is suspicious.
Coke I'm not sure I trust parrot's trace diagnostics there. I suspect it's not flushing the output. 03:26
Austin Any other opcode... 03:27
You didn't override filehandle pmc with TclFilehandle, did you?
Coke nope.
Austin Hey, in your mappings function (tcllib.pir) it sets core_string to "get_class 'Float'". Is that right? 03:29
Coke nope. I have that fixed in a branch. moment.
Austin Okay.
Just me being out of date.
dalek rrot: r40011 | jkeenan++ | branches/darwin2hints/config/init/hints/darwin.pm:
Move some configuration information to %defaults.
03:30
Austin Riding that svn rev# pretty hard, aren't you? 03:31
39992 03:32
Coke it was "later than I needed"
whatever parrot happened to be when I last merged back a branch.
bacek purl: next parrot release?
purl next parrot release is scheduled begin of Nov ;-)
bacek ouch... Useless bit
Coke purl, forget next parrot release
purl Coke: I forgot next parrot release
bacek s/bit/bot/
Coke bit? 03:33
purl bit is either 0 or 1
Austin So does parray ever get reached?
Coke shouldn't. 03:34
purl shouldn't is => undef be is => 'bare' to align with "normal" moose?
Coke not the tcl source, anyway.
the wrapping parrot function should get invoked and then carp about the # of args.
(since we can't customize the "bad arguments" exception, we have to allow anything and then carp ourselves.
bacek Who can add Parrot's release schedule to google calendar used on www.parrot.org?
Coke hides. 03:35
I'll do it.
cotto Coke, it's a week from Tuesday.
bacek purl: parrot next release is next release is 21 July 2009
purl OK, bacek.
cotto bacek, testing purl for ltm? ;) 03:36
bacek heh :)
Coke tuesday the 21st?
bacek parrot next release?
purl i heard parrot next release was next release is 21 July 2009
bacek Coke: looks like 03:37
Coke bacek: done 03:38
bacek Coke++
Coke no, parrot next release is 21 July 2009 03:39
purl okay, Coke.
bacek failing to find difference 03:41
Coke bacek : s/next release is/
bacek Ah! "was"/"is"
:)
Coke no, you just duplicated the key.
I mean, was/is too, but that's not why I shortened it. 03:42
bacek Yeah... Too much copy/pasting
dalek rtcl: r527 | coke++ | trunk/runtime/tcllib.pir:
Fix bug - map the String type properly in the _tcl HLL.
03:44
03:44 Andy joined 03:52 Theory joined
dalek rrot: r40012 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
More tests for corner cases.
03:57
04:31 Khisanth joined 04:49 Zak joined
cotto mythryl? 04:55
mythryl is mythryl.org/
has anyone looked at that?
05:02 Theory joined
Zak Yes, cotto. It looks like ML with shell syntax. 05:05
cotto Zak, do you think it'd be worth learning as an ML-family language? 05:14
05:25 Ehtyar joined
Zak cotto: It depends on why you want to learn it. 05:42
If you're interested in learning a language from the ML family so that you know an ML dialect, you should probably learn Standard ML or OCaml.
cotto It'd be more to learn a functional language than something ML-like. 05:43
Zak I'm rather fond of Clojure and Haskell. ML always felt a bit awkward to me. 05:44
What languages are you currently comfortable with?
cotto in the functional paradigm, none 05:45
for procedural C, Perl, PHP (I know), Python 05:46
I did some functional programming in a college class, but not much since
Zak You can do FP in Perl or Python. 05:47
cotto Yes, but it'd be better if that was the purpose of the language rather than one possibility among many 05:48
Zak There's a trend in functional languages to have very strong and expressive static type systems. These are as hard to learn as FP itself if you're used to dynamic, imperative languages.
Tene cotto: have you read Higher Order Perl?
cotto Tene, about half-way through. It's amazing.
Tene srsly, very good book 05:49
Zak If you just want the FP part of it, you might give Clojure a try. Of course, you'll still have to get used to Lisp syntax, and interact with not-so-fun JVM libraries if you're trying to get work done.
Haskell has been getting most of the FP attention lately, and it's an amazing language. Quite a challenge to learn, and you'll have to deal with a lot more new concepts than just FP. 05:50
Which is not to say that it isn't worth the effort. It will expand your mind in ways you might have thought required drugs.
cotto Haskell sounds nice (having gotten some publicity from Pugs). 05:51
Can you recommend a good tutorial that introduces the concepts gently?
It's easy to find tutorials but also tricky to know which ones are worth pursing. 05:52
Maybe the O'Reilly book? 05:53
Zak Learn you a Haskell is good, and very gentle. 05:54
Real World Haskell is good (maybe a bit better), and slightly less gentle.
A Gentle Introduction to Haskell is not gentle.
cotto That site reminds me of ypgtr
clock? 05:55
purl cotto: LAX: Sat 10:55pm PDT / CHI: Sun 12:55am CDT / NYC: Sun 1:55am EDT / LON: Sun 6:55am BST / BER: Sun 7:55am CEST / IND: Sun 11:25am IST / TOK: Sun 2:55pm JST / SYD: Sun 3:55pm EST /
Zak There's also one where you write a Scheme interpreter in Haskell.
en.wikibooks.org/wiki/Write_Yoursel...rs/Parsing <-- not sure how good this is as an introductary tutorial, but it's a cool idea. 05:56
Err... drop the Parsing part from the URL. 05:57
cotto I'll try to settle myself on Haskell.
Thanks for the tips. Zak++
Zak It and Clojure are my current favorite languages. I have a lot to learn about Haskell though. It's very different from anything you know. 05:59
06:04 mikehh joined
Coke note to self; when converting a while loop in C to PIR, don't forget to translate the trailing } to a goto. :| 06:06
cotto sounds like you had a very fast "loop" 06:09
Coke it finished quickly, ayup. 06:13
I can't believe I'm translating this C /back/ into PIR (I translated it into C many moons ago.) 06:14
cotto Zak, what's your interest in Parrot? 06:15
Zak cotto: I have a crazy idea for a new programming language and Parrot seems like a good fit for it. I don't know if or when I'll get around to doing serious work on it though.
cotto Do tell. We like craaazy new ideas. 06:17
Zak Are you at all familiar with multimethods as found in Common Lisp, Dylan and Clojure? 06:18
Coke wonders if those tests-are-available messages are not considered spam by someone.
cotto no 06:19
Zak Ok... this is going to take a bit of explaining then. 06:20
In the languages that you're used to, classes can have methods.
cotto yup 06:21
so far, my eyes remain unglazed
Zak When the runtime sees foo.bar(baz), it looks for a bar method for whatever class foo belongs to.
cotto k
Is this similar to mmd?
Zak With multimethods, classes do not have methods; functions do. To be specific, a subset of functions called generic functions do. 06:22
mmd?
purl rumour has it mmd is multi-method dispatch
Zak Yes, looks like it.
Coke wishes again for a PIR formatter. 06:23
cotto: parrot has both multi-subs and multi-methods, IIRC.
zak;though I'm not sure multi-method in parrot-land means what you just said. 06:24
Zak So with multimethods, typically one can dispatch on any or all the arguments type and/or value.
cotto Ok. that sounds a lot like what Perl6 does. 06:25
afaiui
Zak I've heard this somewhere.
cotto which isn't very
chromatic posted a nice example that implements Paper, Rock, Scissors using that. 06:26
www.oreillynet.com/onlamp/blog/2008...lease.html
Zak Clojure takes multimethods a step farther by allowing a user-specified dispatch function, so you could dispatch based on literally *anything* 06:27
Usually, it's some characteristic of the arguments to your generic function, but it could be some bit of state or any combination...
Anyway, we have single-dispatch OO languages where everything is an object, and some (Ruby probably being the best known) where one can add fields and methods to classes and objects at runtime. 06:28
What we don't have is a language where every function is generic and can have new methods defined for it at any tim. 06:29
time
cotto Does Perl6 not do that? 06:30
Zak Common Lisp also has this nifty feature where you can add methods that run before, after or "around" (which is best described as before and optionally instead of) the standard method.
cotto You might head over there and ask.
I think perl6 has that too, but I forgot the term.
Coke parrot supports overriding dispatch as well.
(which perl6 does, as it's dispatch model isn't quite parrots) 06:31
Zak chromatic told me it does something kind of like it, but not quite on the level I'm describing.
I should look up the email so I don't go misquoting him.
cotto but it does sound like Parrot would be a good platform for such a language 06:33
Zak It seems Perl6 has lexical overrides of global functions, but in practice that's not as convenient as before/after/around.
cotto You could probably steal a lot from Rakudo. Everybody's doing it.
06:34 davidius joined
Zak It goes without saying that being able to modify the behavior of built-in functions like say... addition could be used for stupid, but I think it would also create opportunities to extend and improve existing code without making a mess. 06:35
eternaleye Zak: Perl 6 has .wrap() - sub foo() {True}; my $cookie = &foo.wrap: { say 'hi'; callsame; } foo # says "hi"
And you can call &foo.unwrap( $cookie ) to remove that wrapper 06:36
Wrappers can be removed in a different order than they were applied, too
cotto If Perl 6 gets as popular as Perl 5 it's going to take some serious discipline not to make a total mess, but the resultant code will be amazing.
eternaleye, that's what i was thinking of. Thanks.
*I 06:37
Zak eternaleye: that looks an awful lot like an around method.
Coke (modify builtin functions) tcl wins. :| 06:38
eternaleye Zak: you can use 'callsame' to call the wrapped function with the same arguments, or 'callwith' to specify arguments. Similarly, 'nextsame' and 'nextwith' call the next-best-fit function/method in terms of dispatch suitability 06:39
Zak eternaleye: I think someone working on Perl6 has used Common Lisp.
But in general, it sounds a lot like the sort of thing I want to do. What's method dispatch like? 06:41
eternaleye Well, Perl 6 has gradual typing, so you _may_ specify type constraints, but don't have to. Dispatch is based on required positional/named parameters, optional positional parameters, and types. I recommend reading the Synopses related to Subroutines at perlcabal.org/syn/ - they are the official spec, and I don't think I fully understand them yet 06:44
dalek rtcl: r528 | coke++ | trunk/ (5 files):
Convert TclString's getListValue method from C to PIR.
06:45
Zak eternaleye: it looks like Perl6 has more of what I want than I realized. This is actually making me excited about the language, when I previously didn't have much interest. 06:47
cotto Zak, you should hang out in #perl6 in FreeNode. You wouldn't be the first to want something from Perl 6 without knowing it. 06:48
Zak cotto: I may start doing that. The language I have in mind is probably more focused and smaller than Perl6. It would strongly encourage users to make heavy use of multimethods. 06:50
It would also probably be mostly functional and look like Lisp. 06:51
cotto My impression is that there are only a handful of languages that *aren't* smaller than Perl 6. ;) 06:53
Firefox is disturbingly crashy of late.
Zak That may be. What I have in mind looks quite a bit like Clojure, but with every function generic (and no way to make one that isn't), the option to use mutable data structures (and get compiler warnings about their misuse), keyword arguments, before/after/around and probably some stuff I'm forgetting. 06:56
dalek rtcl: r529 | coke++ | trunk/library/init.tcl:
remove accidentally committed debug output
07:05
07:10 chromatic joined
cotto time for sleep 07:11
Coke chromatic: kon ban wa
cotto night all
Coke someone should throw our JS implementation at code.google.com/p/sputniktests/wiki...ingSputnik 07:17
07:47 iblechbot joined 07:49 mokurai left 08:31 Ryan52 joined 08:53 barney joined 09:26 MoC joined 09:33 mikehh_ joined
mikehh All tests PASS (pre/post config, smolder, fulltest) at r40012 - Ubuntu 9.04 amd64 09:55
09:58 iblechbot_ joined 10:11 mikehh joined 11:51 Whiteknight joined
Infinoid good morning 11:53
purl And good moroning to you, Infinoid.
Infinoid Whiteknight: So I went on a tear in the io_cleanups branch, but I'm not sure I went in the right direction 11:54
Whiteknight okay, I'l check it out
are pipes working?
Infinoid I haven't committed it yet 11:55
Pipes are closer to working, but not all the way yet. They'll work as soon as virtually all of the filehandle-specific stuff is pushed down into the handle layer
The question is where to put the code. In a way, I really hate all the Parrot_io_*_filehandle() functions, but that kind of interface is the only way to make I/O calls from C fast 11:56
...other than converting all these METHODs to VTABLEs, I guess
I was initially trying to push this code into handle.pmc, but we're going to have to go through PCCINVOKE to get there, and it'll be slow. 11:57
11:57 masak joined
Infinoid so there is a definite difference between what's "right" and what's "fast", and it is confusing me :) 11:58
Whiteknight ok
why do you want to push functionality into Handle? 11:59
why not have that functionality in src/io/api.c or src/io/filehandle.c?
Infinoid because things like buffering, basic I/O and all of that are not in any way file-specific
they apply equally well to sockets, pipes and ttys 12:00
the only ATTRs I left in filehandle.pmc were for the filename and seek position 12:01
the rest of the functionality is generally applicable and so I pushed it down into handle.pmc 12:02
Whiteknight okay, I had done a lot of work like that before, but was doing it for a different reason 12:04
12:06 bacek joined
Infinoid anyway, the features need to be at the Handle layer, but the code doesn't 12:07
bacek waves from future
Infinoid so now I have to undo some of the code movearound
hi bacek
bacek hi Infinoid
Infinoid: git rebase -i HEAD~10 for undoing something is quite handy :)
I use it a _lot_ 12:08
Infinoid that's one of the base features of stgit and I use it heavily too, but I still have a bunch of editing to do :)
the end result is that the ATTRs move and the methods move, but the backend API will stay more or less intact 12:10
and I'll be renaming a bunch of Parrot_io_*_filehandle() functions to Parrot_io_*_handle()
bacek Hey! You've lost kittens!
Infinoid chews inconspicuously 12:11
Whiteknight nice
Infinoid but it means I have a bit more work to do before I commit, and I doubt I'll get it done this weekend :( 12:12
bacek Whiteknight: how hard it will be to implement generational GC for parrot? For average developer? 12:15
Whiteknight I really don't know to be honest. 12:17
bacek How that? 12:18
bacek just lost last hope...
Infinoid we're talking about generational mark & sweep, right? 12:27
bacek Infinoid: for simplicity sake - yes 12:28
Infinoid I've pretended to read a GC book a couple of times while bored in airport terminals, but I'm pretty clueless overall 12:29
to make GMS parrot, I guess you'd need to expand the "mark" flag to specify which generation marked it, so you don't expire the older generation marks as much (and upgrade existing marks if necessary) 12:30
and then you'd only have to do partial mark, but still full sweep. Does that seem sane? 12:31
the next problem is determining which generation an object is from, to decide whether to mark it or not. since we aren't doing a collector, I'm not sure how to solve that 12:32
uh, s/collector/copying collector/
bacek Just save "collection" in PObj. 12:33
In "mark" don't call VTABLE_mark for older PMCs
Infinoid or don't call them as often... 12:34
minefield GC: only mark some PMCs, at random, but still do full sweep 12:35
bacek smell old #define TRUE FALSE joke 12:36
Infinoid scorched earth GC: if you mark everything in the arenas, you never have to sweep
bacek Parrot's GC with constant pool: You'll spend ~10-12 hours trying to understand why Rakudo crashing :/ 12:38
Infinoid I was following the discussion about that, yesterday... sounds pretty broken 12:39
bacek constant pmcs are "hand crafted, poorly specified, ... implementation of 2 generations Generational GC"...
Infinoid hmm, that's an interesting way of looking at it 12:40
bacek It's pretty accurate technical description of constant PMCs. 12:41
Infinoid does "constant PMCs" really mean "you can't change them"? or does it mean "you can't free them"? 12:42
bacek s/constant/zombie/
They can be changed
They can be swept.
But they still "alive"
Infinoid ok, so it really means "zombie" or "tenured" or "immortal" 12:43
bacek And dead children falling from their dead bodies
Whiteknight so colorful 12:44
bacek Hey! It's called tracing_children!
Whiteknight as I've been working on this new GC core I'm starting to realize that the GC still needs a lot of cleanup work 12:45
bacek Parrot_gc_trace_children
Infinoid yeah. the GC code definitely has some API layering issues
Whiteknight the MemoryPool management and compacting functions especially are terrible 12:46
dalek rrot: r40013 | whiteknight++ | trunk (7 files):
[gc] add a new 'infinite memory' GC core, which is basically as simple a GC core as we can make. It is for demonstration purposes only, it should not be used for anything and actually fails some tests by design (timely destruction, closing/flushing of filehandles at finalization, etc).
12:47
Whiteknight they're very closely tied in to the MS collector, and can't really be reused for anything else
bacek Huh. "compacting"???
Whiteknight the STRING pools are managed by a separate collection/compacting facility in src/gc/alloc_resources.c 12:49
which is a nightmare of premature optimization and messy pointer logic
That is actually one of the biggest areas that needs to be cleaned up right now for the GC API to be pluggable 12:50
dalek rrot: r40014 | whiteknight++ | trunk/src/gc/gc_inf.c:
[gc] add a little bit more documentation to the gc_inf core explaining how to activate it
bacek omg... Why I even open this file??? 12:52
12:53 riffraff joined
Whiteknight what file? 12:57
oh, alloc_resources.c? Yeah, it's a beast
but it "works", so long as you don't change anything or try to add a new GC core, or anything like that 12:59
masak ext/SQLite3/Makefile.PL seems to have bit-rotted somewhat. it gives me 'Can't locate object method "slurp" via package "Parrot::Configure::Data" at Makefile.PL line 4.' 13:24
according to svn blame, I should talk to either simon, tewk or Infinoid. 13:25
Infinoid hi, masak. trac.parrot.org/parrot/changeset/34947/ looks suspiciously like what you're after 13:29
dalek rrot: r40015 | whiteknight++ | trunk/src/gc/gc_inf.c:
[gc] add some more helpful documentation to gc_inf to explain what each function is used for
13:30
masak Infinoid: hi. since I tried to change password for the trac page, it only gives me redirect loops. :/
NotFound Whiteknight++
Whiteknight bacek: it might be interesting to implement immutable strings like .NET and Java have, for performance and simplicity
masak Infinoid: but I'll look at that commit locally instead. 13:31
Infinoid masak: urk. ok, I think the method is called get_Pconfig() now
make that get_PConfig()
masak oki.
NotFound Now that we have the infinite memory model we just need to invent the NaN memory model X-)
Infinoid volunteers to implement the nomemory model (doesn't successfully allocate, ever) 13:32
pmichaud good morning, #parrot 13:33
Infinoid hi pm 13:37
pmichaud something broke Rakudo sockets in 32-bit; bisecting now 13:38
Infinoid is pretty sure it wasn't him, as he's only breaking the io_cleanups branch 13:40
Whiteknight: Is there an important reason to throw an exception from Handle.init()? Otherwise there's a bunch of base class init I'd like to do there 13:41
masak if someone would be so kind as to commit these bitrot fixes to the DBDI example: gist.github.com/145637 13:43
Whiteknight no, I was just trying to make sure a Handle wasn't created directly from PIR 13:44
pmichaud masak: committing 13:51
purl committing is so much effort!
masak purl: no, committing is <reply>
purl okay, masak.
pmichaud looks like a typo in the patch, though 13:52
+ PERL6LIB=../../languages/rakduo $(PERL6) t/test.p6
Whiteknight committing? 13:53
pmichaud also, I'm getting an error when applying the patch 13:54
hmmm.
masak I got an error too.
pmichaud oh, it's the tabs 13:55
they seem to get lost in github
masak :/
pmichaud or at least when I copy/paste them
checking
masak they can be seen through some raw mode, IIRC.
pmichaud clicks "raw"
ah, that fixes it. 13:56
dalek rrot: r40016 | pmichaud++ | trunk/ext/SQLite3 (2 files):
[examples] Some patches to avoid bitrot from masak++ .
13:57
masak ok, so next problem: gist.github.com/145641 13:59
pmichaud: you don't get this error when you run 'make'?
13:59 Andy joined 14:02 kid51 joined
pmichaud masak: I didn't test it :-| 14:06
masak please do. and then please explain what the error means. :) 14:07
pmichaud I'm not exactly set up for it at the moment :-|
let's see if I can get something going on my other system
masak oki, no rush. 14:08
just curious to see if I can get the DBDI module working again. 14:09
dalek rrot: r40017 | jkeenan++ | branches/darwin2hints (2 files):
Refactor some code into internal sub _add_to_flags(), then write tests for it. This handles some more edge cases.
14:10
Coke_zzz Infinoid: hey, once you're doing making pipes work, you want to tackle them for partcl? =-) 14:18
Coke Infinoid: hey, once you're doing making pipes work, you want to tackle them for partcl? =-) (resend as real me) 14:19
Coke has to remember to use /away instead of /nick foo_afk
Infinoid Coke: What does partcl need? I was honestly hoping that the parrot base types would work for all HLLs without much extra work (I'm utterly clueless about the HLL layer of things) 14:20
Infinoid is hoping to tackle nonblocking sockets and aio types of things next
Coke Infinoid: oh, mainly just a translation of the syntax here: www.tcl.tk/man/tcl8.5/TclCmd/exec.htm 14:21
basically, I'm just being lazy. =-) 14:22
Infinoid we support a subset of that right now, specify "p" in the "flags" string you pass to open()
Coke Right now, I'm not supporting ANY of the shell-like syntax for [exec]. Just needed enough to get the autoloader to dispatch to the real shell. 14:23
Infinoid There's a lot more work we can do to the subprocess opening stuff. My goal here was to separate the IPC use case from the subprocess use case
and reuse code where appropriate
NotFound Coke: I think we need bidiretional pipes to be able to implement all that freatures. 14:24
Infinoid we don't support any of that fancy stderr and bidir stuff yet
does tcl support the handle redirection syntax on win32? 14:25
it looks like it's designed to just hand it off to the shell
NotFound The stderr part will not be so hard, I think.
Infinoid It would be easier if we had a Parrot_dup2(). 14:26
Coke Infinoid: not sure if tcl supports that. there is a PORTABILITY section there, but it's quite long and all about windows.
Infinoid Right now we call dup(), which is like playing whack-a-mole. The stdout stuff will miss if stdin was closed
Parrot_dup2() was a minor addition, but at some point I needed to minimize the number of yaks I was shaving 14:27
s/was/should be/
Coke bah. something broke tcl's dispatch to shell anyway. :| 14:29
(now ls gives: "Object must be created by a class"...)
pmichaud masak: I get the same error as you. I have no idea what it means, or where it's coming from. 14:30
masak good. then I feel less inept. 14:31
pmichaud my best guess at the moment (which isn't very good) is that it's coming from somewhere in compilers/ncigen
ls
masak aye. 14:32
pmichaud Looks like r39993 is the one that broke t/spec/S32-io/IO-Socket-INET.t in Rakudo (32-bit) 14:42
*why* that breaks it, I have no idea. 14:43
Whiteknight that's very weird 14:45
pmichaud I've confirmed it twice -- r39992 passes, r39993 fails. And only on 32-bit kubuntu. 14:46
64-bit it passes.
Coke sighs, as his recent conversion of C to PIR seems to have missed some edge cases in the spectests. 14:55
Whiteknight pmichaud: and the only new test failure is in the sockets test? 14:59
dalek TT #828 created by whiteknight++: Separate out GC String Core 15:01
15:01 davidfetter joined
NotFound $ perl t/harness t/spec/S32-io/IO-Socket-INET.t 15:07
t/spec/S32-io/IO-Socket-INET....ok 15:08
All tests successful.
purl ship that sucker
NotFound Ubuntu 9.04 i386
moderator www.parrotcode.org/ 15:11
mikehh manifest_tests FAIL - # Failed test 'No need to regenerate MANIFEST' - All others PASS (pre/post config, smolder, fulltest) at r40017 - Ubuntu 9.04 amd64 15:16
dalek TT #829 created by pmichaud++: r39993 breaks t/spec/S32-io/IO-Socket-INET.t on Rakudo 15:18
pmichaud NotFound: hmmm, that's odd. You're correct that it's now passing for me also.
(with r40017)
retesting 15:19
15:23 bacek joined 15:27 AndyA joined
dalek TT #829 closed by pmichaud++: r39993 breaks t/spec/S32-io/IO-Socket-INET.t on Rakudo 15:28
pmichaud I'm guessing that for r40017 I was seeing load issues (the test has an alarm timer on it)
15:30 iblechbot joined
Infinoid hmm. $P0 = new 'Handle' doesn't call Handle.init(), and I can't seem to call it directly from pir, either. I think I'm misunderstanding something really basic here 15:40
dalek rrot: r40018 | jkeenan++ | trunk/MANIFEST:
Somebody forgot to update the MANIFEST.
15:41
kid51 is out of coffee filters
kid51 thought he had a lifetime supply
What does this say about my life expectancy? 15:42
Infinoid Coffee must be good for you
Coke needs to go brew another pot, danke for the reminder. 15:44
dalek rrot: r40019 | jkeenan++ | branches/darwin2hints/config/init/hints/darwin.pm:
Add documentation to package.
16:00
16:05 Psyche^ joined 16:26 Theory joined
dalek rrot: r40020 | jkeenan++ | branches/darwin2hints/lib/Parrot/Test.pm:
Correcting some hard tabs (coding standard error) inherited when branch was
16:43
16:56 chromatic joined 17:03 kid51 joined, ruoso joined
moritz re 17:13
17:33 mokurai joined
dalek kudo: 38a7fea | moritz++ | src/setting/List.pm:
List.rotate

  ... "suboptimal"
17:40
kudo: 08928df | moritz++ | t/spectest.data:
[t/spectest.data] run split.t; restore alphabetical order
kudo: d6f9537 | moritz++ | src/setting/Any-str.pm:
:all flag for Str.split
kudo: 4403ec7 | moritz++ | t/spectest.data:
test Array.rotate
17:44 einstein joined
einstein hi 17:47
i have got some question about the nqp language
I have been busy for a while with parrot and now made a nqp actions.pm which is compiled by nqp itself and added array and hash initializers taken from squaak
For my own use i will make my own variation off nqp but i thougth you migth be interrested in some input from my for a better nqp, but i don't know who manages the nqp implementation in parrot
moritz einstein: I think pmichaud does... maybe send an email to the list? (parrot-dev@lists.parrot.org) 17:48
sounds like a cool idea btw
einstein i did see their was some bootstrap code, but as far i can see this code does not pass the nqp test cases, but i will send a email to the parrot dev list 17:52
moritz working code is always welcome ;-) 18:03
NotFound The alarm dynop has been deleted? 18:32
Coke NotFound: yes. 18:57
it was in a file schedule for deletion since post 1.1 18:58
"scheduled"
NotFound Coke: the I suppose we can close all tickets realted to it ;)
Coke if it needs to be saved, it can be resurrected.
but yah; I'd just close the other tickets and refer to the tt that removed it. 18:59
dalek kudo: 0bca00c | masak++ | (3 files):
implemented skeletal Buf type

adds stubbed .encode and .decode methods to Str and Buf, respectively.
19:02
19:10 Whiteknight joined
dalek kudo: d9bf358 | masak++ | t/spectest.data:
[spectest.data] added t/spec/S32-str/encode.t
19:20
jdv79 einstein: you could put it up somewhere; gitub maybe. 19:28
einstein later this week i probably will put it up somewhere when i have added some more items 19:32
dalek rrot: r40021 | NotFound++ | trunk/src/thread.c:
[cage] avoid a 'might be clobbered' warning by declaring the variable volatile
19:35
kudo: f55d489 | moritz++ | src/builtins/any-list.pir:
make one-item List.pick() return a scalar

it only stores a single scalar. Since we don't have captures at the moment, this seems to be a sensible workaround for people using the result of
  @numbers.pick as array index.
tann++ for bringing this to our attention again.
19:37
19:42 szabgab joined
dalek rrot: r40022 | NotFound++ | trunk/compilers/imcc (2 files):
[cage] avoid some 'might be clobbered' warnings in imcc by declaring the variables volatile
19:45
mikehh Whiteknight: src/gc/gc_inf.c is causing codetest and manifest_tests failures 20:12
Whiteknight ah, i did forget to add it to the manifest 20:15
NotFound This was not fixed some commits ago?
parrot: r40018 | jkeenan++ | trunk/MANIFEST: 20:16
20:23 chromatic joined
NotFound luanumber.pmc has several unitialized const variables. 20:30
mikehh Whiteknight: sorry that was codetest and distro_tests 20:31
Whiteknight okay, let me look at it 20:32
20:32 kid51 joined
mikehh I think the one test is duplicated in codetest and distro_tests 20:33
t/distro/file_metadata.t 20:35
purl t/distro/file_metadata.t is sad
NotFound Uh, I don't understand why compiling C that problem is not warned 20:36
s/C/with C
kid51 mikehh Can you make a recommendation (e.g., TT) as to which one it should be in?
NotFound Ah, yes, with C++ I was using --optimize 20:37
mikehh I think it usually solved by setting svn properties, which is why it was included in codetest although it was originnaly in distro_tests only 20:41
Notfound: do you find there is much difference compiling with g++ rather than gcc 20:48
NotFound mikehh: it helps catch problems 20:49
dalek rrot: r40023 | whiteknight++ | trunk/src/gc (2 files):
[gc] fix some codetest failures in the new file
mikehh I was wondering - I haven't tried it - maybe I should 20:50
20:50 davidius joined
ttbot whiteknight: Parrot trunk/ r40023 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/48933.txt 20:50
mikehh is there much difference with the generated code?
or any?
purl i heard any was being done as a particular language feature
kid51 has coffee filters (5 hours later)
NotFound mikehh: just use: perl Configure.pl --cc=g++ --cxx=g++ --link=g++ --ld=g++ 20:51
mikehh I'll give it a try 20:52
kid51 On Darwin/PPC, I use: perl Configure.pl --cc=gcc --cxx=g++ --link=g++ --ld=g++ 20:53
NotFound Uh, building with C and --optimize doesn't warn. I don't understand why.
kid51 But on Linux/i386, I just use perl Configure.pl
mikehh I nearly always add --optimize --test
NotFound kid51: using --cc=g++ it compiles the .c files as c++, which is helpful to catch some problems. 20:54
mikehh letI have all the necessary libraries
s/let/let me check / 20:55
kid51 NotFound: I add those options. When I was a Parrot noob I was having a lot of problems compiling. 20:56
Coke showed me those options. It worked. It continues to work. So, out of force of habit, I continue on.
Whiteknight I use a bunch of configure options now 20:57
kid51 I once made the mistake of trying to compile my own GCC
biiiig mistake
mikehh he he - took me a whole day
kid51 yup
Whiteknight I need to go in and compile a new LLVM because apparently if I recompile I can use it to build Parrot 20:58
kid51 And I learned the hard way that that's one thing you really can't do better than your vendor.
Fortunately, at some point Apple upgraded Developer's Tools to include a gcc 4. I had been using gcc-3.3.
Whiteknight why is GCC so hard to compile? 20:59
mikehh Well I was using Intrepid, I think, and I wanted to mve on to 4.3 - and now 4.4 is around - but I'll wait
dalek rrot: r40024 | whiteknight++ | trunk/src/gc/gc_inf.c:
[gc] Actually fix errors, and avoid build errors. Whiteknight--
mikehh well let's see what happens 21:00
21:06 dukeleto joined 21:16 mtk joined, mtk left
dalek rrot: r40025 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Write test for one last condition.
21:19
21:22 mtk joined, mtk left
mikehh whiteknight: it's a sort of bootstrap build - it's incremental - it recompiles itself a few times 21:25
Whiteknight oh, wow
nopaste "NotFound" at 213.96.228.50 pasted "c++ fixes for lua" (350 lines) at nopaste.snit.ch/17231 21:34
mikehh Whiteknight: src/gc/gc_inf.c is still failing t/distro/file_metadata.t and t/codingstd/svn_id.t - I think you have to set the svn properties 21:38
dalek rrot: r40026 | NotFound++ | trunk/src/gc/gc_inf.c:
[cage] metadata fixes
21:43
NotFound mikehh++
Whiteknight yeah, I need to do that after dinner 21:44
NotFound Whiteknight: forget it, I take care 21:46
purl NotFound, I didn't have anything matching it, i take care
21:46 skids joined
dalek TT #830 created by gerd++: [PATCH] Configure.pl disable-rpath option 21:49
rrot: r40027 | NotFound++ | trunk/src/gc/gc_inf.c:
[cage] fix Id tag
21:50
moritz 'make test' is all clean on latest parrot with latest clang+llvm 21:52
(without libgmp, that is) 21:53
NotFound Whiteknight: the Infinite Memory problem with JSON is showing a potential problem: not checking for errors on close output compilers/tge/tgc.pir 22:05
Fixing this, a lot more of test can pass. 22:06
dalek rrot: r40028 | Infinoid++ | branches/io_cleanups/src/pmc/pipe.pmc:
Pipe needs a destroy function to free its attr structure.
22:13
rrot: r40029 | Infinoid++ | branches/io_cleanups/src/pmc (5 files):
Push FileHandle's flags, mode and encoding attrs into the base Handle class.
rrot: r40030 | Infinoid++ | branches/io_cleanups (2 files):
Convert open()'s pipe handling to return a PipeHandle object.
rrot: r40031 | Infinoid++ | branches/io_cleanups (9 files):
Pipehandle needs some extra infrastructure to clean up child processes properly.
rrot: r40032 | Infinoid++ | branches/io_cleanups/src (3 files):
Push buffering down into the Handle layer. Seek positions are passed through

isn't possible to make seekable subclasses yet.)
22:14
rrot: r40033 | Infinoid++ | branches/io_cleanups/src/io/unix.c:
Handle closed stdin/stdout/stderr on UNIX.
NotFound Infinoid: Are you hungry of karma? ;)
nopaste "infinoid" at 173.75.243.238 pasted "[PATCH] [HALFBAKED] [IO_CLEANUPS] push-methods-into-handle.patch: currently moves way too much code around, and adds extra PCC overhead for no good reason" (1195 lines) at nopaste.snit.ch/17232 22:15
"infinoid" at 173.75.243.238 pasted "[PATCH] [HALFBAKED] [IO_CLEANUPS] buffer-stdout.patch; turns on line-buffering for stdout, but causes some test failures, apparently line buffering does not work yet?" (25 lines) at nopaste.snit.ch/17233
Infinoid No, I just won't have any more parrot time for a while, so I decided to flush out the queue.
Whiteknight Infinoid++ Nice little commit marathon! 22:17
Infinoid That's the last week's worth of work; hopefully it will make I/O suck a little bit less
Whiteknight NotFound: that's not a "problem" because it's a known behavior and I'm not fixing it 22:18
the core doesn't keep track of pointers in order to destroy them later
NotFound Whiteknight: failed to check a close has caused us problems before.
Whiteknight so it doesn't make sense to think that we would be able to finalize any PMCs 22:19
NotFound: it's not a production core. It's not intended to be used for anything besides a demonstration
It's just a template for people to follow to make "real" cores later
NotFound Whiteknight: anyway, if fixing the problem has the secondary effect of allowing the IM test more things, double win 22:20
Whiteknight NotFound: if the win is easy enough, good. But if the INF core starts getting complicated, it has failed in it's primary purpose
it is just a teaching tool
NotFound Whiteknight: no, is a tge problem, not a IM problem. And the fix is easy, I'm about to commit it. 22:21
Whiteknight okay, awesome
mikehh All tests PASS (pre/post config, smolder, fulltest) r40027 - Ubuntu 9.04 amd64 (built with g++) 22:25
NotFound Ooooops 22:26
mikehh sounds ominous 22:27
dalek rrot: r40034 | NotFound++ | trunk (2 files):
[TGE] check the closing of output file
22:27 dukeleto joined
NotFound Please wait... 22:28
dalek rrot: r40035 | NotFound++ | trunk/include/parrot/settings.h:
Revert accidental change of default GC
22:30
Whiteknight yay! I just built Parrot with clang/llvm 22:32
22:32 darbelo joined
NotFound Ooooops solved 22:34
22:35 bacek joined 22:36 rg joined
Whiteknight yeah, we don't want to accidentally set INF to be the default 22:43
dalek rrot: r40036 | whiteknight++ | trunk/PLATFORMS:
[PLATFORMS] update platforms, amd64-gcc4.3.3 and amd64-clang
22:44
rrot: r40037 | jkeenan++ | branches/darwin2hints/t/steps/init/hints/darwin-01.t:
Set correct plan for testing.
22:47
NotFound Whiteknight: what do you thing about the t/op/string.t failure with the GCIM 22:51
?
Whiteknight GCIM?
NotFound GC Infinite Memory
Whiteknight oh, right
i didnt know that one was failing
no wait, I knew about it 22:52
NotFound The collect opcode is erasing a string
Whiteknight yeah, the string handling stuff is a goddamn mess 22:55
I had to turn off the MemoryPool compactor to make this core work at all 22:56
mikehh I can't seem to connect to smolder.plusthree.com
Whiteknight it's probably down again 22:57
it goes down pretty often unfortunately
mikehh it's been pretty good until today - for the last couple of weeks - maybe it's maintenance time 22:58
dalek rrot: r40038 | allison++ | trunk (2 files):
[install] Install install_config.o as parrot_config.o in the installed
23:01
rrot: r40039 | allison++ | trunk/tools/dev/pbc_to_exe.pir:
[install] Change pbc_to_exe to use configured paths for accesing lib/
23:04
NotFound The other test failures with the GCIM looks reasonable. 23:07
dalek kudo: d153cdc | pmichaud++ | src/classes/Num.pir:
Clean up Num.succ and Num.pred, which were infinite looping.
23:13
kudo: 4024702 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to take advantage of latest gc cleanups.
NotFound I'm going to test if I can build rakudo with the GCIM 23:15
23:16 zak_ joined
NotFound It builds and pass tests. Amazing. 23:19
nopaste "mikehh" at 86.148.252.18 pasted "building with gcc vs g++" (15 lines) at nopaste.snit.ch/17235 23:23
dalek rtcl: r530 | coke++ | trunk/ (2 files):
Fix a bug in list to string shimmering.

to make sure we don't regress. (Noticed the failures running the spectests.)
23:25
mikehh NotFound++
NotFound A lot of spectest are passing, but I must kill it because it eats lots of memory 23:26
mikehh I think I will give it a try - maybe tomorrow - must set it up 23:27
jdv79 why is json in compilers and not languages? 23:33
whoppix jdv79, what? 23:34
oh, you mean on parrot.org?
jdv79 in trunk 23:35
whoppix ah. 23:36
dalek cnum-dynpmcs: r105 | darbelo++ | trunk/ (10 files):
Put all the Makefile.in templates in the 'cfg' directory, use the 'build'
23:42
rtcl: r531 | coke++ | wiki/ParrotIssues.wiki:
This parrot bug has been resolved.
23:45
darbelo is resisting the urge to rewrite those bloody makefile templates. 23:46
Coke nothing is really in languages/ anymore. 23:52
compilers/ was always more of a "languages that ship with parrot" dir. 23:53
dalek rtcl: r532 | coke++ | trunk/config/ (2 files):
Re-enable build of 'tclsh'
23:55
cnum-dynpmcs: r106 | darbelo++ | trunk/cfg/Makefile.in:
Oops. Forgot to clean up the build dir.
23:57