Parrot 1.2.0 released | parrot.org/ | Weekly Priority: Profiling | Parrot VM Workshop, Pittsburgh, June 20-21
Set by moderator on 7 June 2009.
jonathan OK, that would be my (muchly) favored option. 00:00
pmichaud being able to build against the build tree is very useful, especially when testing new features in Parrot
i.e., I use it alos.
*also
jonathan Right, I think it's valuable to have the choice.
pmichaud okay, will hopefully see you tomorrow
(errands here)
darbelo cotto: I *think* I read somewhere that Singletons were allocated out of the constant PMC pool. 00:01
jonathan Sleep here.
night all
Coke Any chance someone could poke at TT #732? 00:02
cotto darbelo, I can confirm that. 00:03
Infinoid Coke: Won't that go away when we have GCable contexts? 00:04
Coke Infinoid: perhaps. in the mean time, the memory leaks are killing me.
dalek rtcl: r447 | coke++ | trunk/docs/spectest- (2 files):
Update spec test with a recent run.
00:05
darbelo Then you are probably right about them living on. AFAICT the gc ignores the constant PMC pool.
Infinoid I just know I've tried and failed to clean up context allocations in the past. That code has dragons.
Coke Infinoid: I have an IMCC memory leak that needs love too. you want that one? =-)
Infinoid I need to pack right now, maybe next week? :) 00:06
Coke thanks for not just coming out and saying no. =-)
chromatic: started the test now. Ping me in about 2 hours. :| 00:07
cotto darbelo, you're safe. The constant PMC pool is only swept when Parrot exits.
Whiteknight, unping
darbelo So long as users thaw the context before using any decnums we're safe, then. 00:08
cotto Whiteknigh++ for making it less painful to skim through the gc code 00:09
Coke Infinoid: we're not close to getting GC-able contexts, are we?
darbelo If not, then 'undefined behaviour will occur' and it won't be our problem either.
Infinoid There's a branch, I think, but parrot keeps flapping away from it
cotto darbelo, that sounds good. I'd also recommend some sanity checks in the number PMCs' thaw VTABLE functions, in the interests of failing early. 00:10
Infinoid Coke: Guess there used to be a branch but it was removed. trac.parrot.org/parrot/ticket/596 00:11
cotto Sanity will ensue if users thaw a decContext before they thaw any decNums that depend on that decContext. Otherwise, Bad Things may happen. 00:12
kid51_at_dinner Infinoid: I got no speedup in 'make coretest' between trunk and io_rewiring branch. 00:13
trunk @ r39458: 5:22 00:14
branch @ r39460: 5:24
darbelo Actually, I'd just pmc_new() the context on DecNum's thaw too. If the context was thawed earlier, we get the right one. If the context is thawed after, we allocate it and the DecNumContext thaw() modifies it. We're safe even if you thaw a DecNum with no context. 00:15
Infinoid kid51: That's odd. coretest went from 7 minutes to 2 here 00:17
Which platform?
purl I'm running on OS/2 on an Atari, can you help?
Infinoid watches purl swapping 00:18
darbelo The only catch is: if you want to thaw both a DecNum and a DecNumContext, you have to thaw them both before performing any operations.
nopaste "infinoid" at 24.182.55.77 pasted "The '000,'-string output benchmark, courtesy of pmichaud" (20 lines) at nopaste.snit.ch/16836 00:21
Infinoid kid51: You should also see a ridiculous difference between trunk and branch, for that simple pir benchmark (like, 46 seconds -> 0.7 seconds) 00:22
00:24 eternaleye joined
kid51 Infinoid: Linux/i386 00:27
Infinoid: I'll try again. 00:28
00:28 snarkyboojum joined 00:29 Zak joined, bacek_ joined
Infinoid You should definitely see a difference on linux. I'll re-test here too 00:30
If you don't see a difference on linux, you've either got a superfast disk or you're running in a VM that doesn't propagate disk write/flush events 00:32
kid51 This time was faster: 5:06 -- but, of course, there could be a positive side-effect from additional ccache-ing 00:34
This is a Linode Linux VM.
What do you mean by "propagate disk write/flush events" 00:35
Infinoid The speedup was from removing an extra fsync() parrot was doing after every write(). In effect, it was doing the equivalent of the command line "sync" command, for the file, which meant parrot went to sleep waiting for a round-trip to/from disk before resuming execution, every time it wrote 00:36
VMs typically don't expose filesystem flushes to the host OS, so you wouldn't see any difference in one
(or at least, it sounds like Linode doesn't) 00:37
kid51 I don't understand much about VMs ... all I know is that for all of *my* purposes my Linode is a box out there in cyberspace somewhere ... even though I know it's a slice of a disk in Dallas or Nashville or somewhere. 00:38
Infinoid Looks like it's a xen instance, and it looks like xen handles fsync()'y things a lot more efficiently than real hardware does. 00:39
Coke since it's all fake anyway, makes sense. =-)
kid51 make benchmark_tests: 69 seconds in trunk; 67 seconds in io_rewiring branch 00:40
Infinoid Save nopaste.snit.ch/16836 as x.pir and try comparing that. :)
That should hit all the other things that Whiteknight++ sped up 00:41
kid51 Should that be called: ./parrot x.pir ? 00:42
Infinoid yeah
or time ./parrot x.pir
(to see how long it took)
kid51 Was it supposed to have generated output? I got nothing on STDOUT.
Infinoid It creates a file called test-pir.txt, to benchmark file I/O 00:43
or file writes, at least
kid51 trunk:
[li11-226:parrot] 534 $ time ./parrot x.pir 00:44
real 0m24.128s
user 0m11.340s
sys 0m0.220s
Infinoid Your trunk time is quite a bit better than any real hardware I have access to. Timings on my thinkpad are about twice that
kid51 Yeah, baby:
io_rewiring:
[li11-226:io_rewiring] 538 $ time ./parrot x.pir
real 0m1.992s
user 0m0.780s
sys 0m0.010s
Infinoid There we go.
Funny how in both cases, wallclock time was twice the userspace cpu time 00:45
I would have expected that from trunk but not branch
kid51 Where is the time that is neither user nor sys? 00:46
real -( user +sys ) ??
Infinoid yeah.
that's waiting for disk, executing other processes, etc 00:47
kid51 There's considerable variance. Here's another round -- one even more favorable to branch: 00:48
[li11-226:parrot] 542 $ time ./parrot x.pir
real 0m24.224s
user 0m11.730s
sys 0m0.250s
[li11-226:parrot] 543 $ cd -
[li11-226:io_rewiring] 544 $ time ./parrot x.pir
real 0m1.651s
user 0m0.810s
sys 0m0.010s
Infinoid how much RAM you got in that vm? 00:49
kid51 Tell me how to measure it.
Infinoid "free"
kid51 [li11-226:io_rewiring] 545 $ free
total used free shared buffers cached
Mem: 295528 122700 172828 0 1608 22988
-/+ buffers/cache: 98104 197424
Swap: 263160 54588 208572
Infinoid hmm. I suppose there's no telling how loaded the host OS is, but assuming all your memory is real and not being swapped, you should be able to hit disk cache for test-pir.txt, no problem 00:50
if you're seeing variance, you probably aren't operating in cache. 00:51
which means all bets are off :)
kid51 Well, I believe ccache is on ... because periodically it fills up the disk! 00:52
Infinoid ccache shouldn't affect runtime performance 00:54
oh. disk cache != ccache 00:55
Coke chromatic, Infinoid: I haven't finished yet, but it certainly /seems/ faster. 01:03
(I may be comparing my 'feel' to 4.5 months ago, though.) 01:08
Whiteknight Coke: I start work on GCable contexts as soon as the cc_rewiring branch lands
Coke Whiteknight++ 01:09
Whiteknight these io branch numbers keep looking better and better 01:11
Coke I wonder how much is attributable to just the fsync() fix. 01:13
chromatic A fair amount of wallclock time, but IO in loops in long-running programs will benefit from far fewer PMCs allocated. 01:15
Whiteknight I dont know. fsync is more expensive then PCCINVOKE, but the later was called more frequently
Infinoid It's all good. Making the parrot flap faster
Coke chromatic, Infinoid, Whiteknight: tcl's spectest took 4045s in trunk, and 4177s in branch; but for some reason the branch passed 2 more tests. I wonder if someone on feather was killing my tests earlier. 01:16
2 more test /files/
"2009-06-08 21:36",440,"r39452",57,3275,1791,866,618,4045
+"2009-06-09 02:04",440,"r39460",59,3547,1933,992,622,4177
1st is last run on trunk; second is run on io_rewiring.
"date","revision","parrot revision","files","test","pass","fail","skip","time in seconds" 01:17
Whiteknight Coke: I almost can't believe those numbers. There's no way it takes more time in branch that I can find
Coke Whiteknight: is feather.perl6.nl a virtual machine?
Infinoid Coke: Yes.
Whiteknight i have no idea what feather is
Coke Whiteknight: there you go.
feather?
purl feather is feather.perl6.nl/ or a perl6 community development server or run by juerd.
chromatic Looks like the branch passed 142 more tests. 01:18
Coke chromatic: 2 test files passed this time that failed in the run on trunk.
Whiteknight well, they're about to be passing in trunk too
Infinoid Whiteknight++
Coke chromatic: I've had people kill processes on my on feather in the past, and I already threw up the log file from the trunk run earlier. 01:19
chromatic Oh, test files. I counted something else.
Coke so it's a little slower, but it did more, and if I had known it was a virtual machine, I'd not have bothered since we now know it's a waste there. =-)
59:57, 1933:1791.
+lsearch.test: Total 101 Passed 47 Skipped 0 Failed 54 01:20
+scan.test: Total 171 Passed 95 Skipped 4 Failed 72
Infinoid sees patches of blue sky through the hail
Whiteknight hold on, I'm getting a t/pmc/undef.t failure in the branch now, a fresh checkout 01:21
Coke chromatic: any suggestions on dealing with all my memory PANICs ? 01:23
(aside from opening tickets like #732)
chromatic That's the best option I can see.
Coke (and allocating less PMCs, which I'm trying to do.)
chromatic You know what makes them easy for me to debug; any help there helps everyone.
Coke oh; someone here might be able to help with this; right now "4/-3" with tclints gives -1; it should give -2; I presume I can fix this with a strategic vtable override... 01:25
chromatic Tcl has its own math? 01:26
Tene Tcl uses floor() instead of round() 01:27
Coke and integer division stays integer. 01:28
4/-3.0 NE 4/-3
(uses floor) - ah. that gives me a clue as to where to put that. 01:29
d- VTABLE_set_integer_native(INTERP, dest, SELF.get_integer() / d); 01:30
+ VTABLE_set_integer_native(INTERP, dest, floor(SELF.get_integer() / d));
(i would have guessed that in src/pmc/tclint.pmc, but no love.) 01:31
Whiteknight Infinoid: ping
Infinoid Whiteknight: yo
Coke ah. need to do the division as float manually (was forcing it to int before then.)
Whiteknight infinoid: I'm getting a segfault test failure in the branch now suddenly. t/pmc/undef.t
Infinoid bt? 01:32
purl bt is pretty cool, as well. or Brian Transeau, one of the foremost electronica artists in the world or Just Another Evil Telco or www.btmusic.com or (: british telecom) or mp3z.darkuncle.net/electronica/trance/BT/ or "base-T" as in 100bT or BitTorrent or debt without the "de" or bluetooth or (see: pcbt)
Coke tene++
Infinoid bt is also backtrace
purl okay, Infinoid.
Whiteknight bt is weird
nopaste?
purl well, nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
Infinoid Whiteknight: It passes here (if that matters)
nopaste "Whiteknight" at 68.44.174.229 pasted "Segfault for Infinoid" (137 lines) at nopaste.snit.ch/16837 01:33
Whiteknight Infinoid: it passed for me until I did a fresh checkout
Infinoid Aaw, my favorite! How did you know? You shouldn't have.
obj=0x21 is very obviously an invalid pointer 01:34
chromatic 0x21, oh yeah. The little PMC that couldn't.
Whiteknight yeah, that jumped out at me too
no idea where it's getting set to that though
my only thought is that somewhere I borked up the last merger with trunk
because we definitely didn't do any work in the OO system
Infinoid Class is trying to mark its _class->parents 01:35
Whiteknight right, and for some reason it is not right
Infinoid I don't really know what to tell you, except to echo 0 to /proc/sys/kernel/randomize_va_space and try to set a watchpoint on it 01:37
You might get lucky with valgrind, or you might not. 01:38
chromatic Did you 'make realclean'? PBC has changed.
Infinoid This is a fresh checkout, I think
Whiteknight yeah, fresh checkout 01:39
Infinoid I'll try a fresh checkout here. Did you pass any arguments to configure? 01:40
Whiteknight no arguments 01:41
Infinoid really wants perl Configure.pl -j
chromatic That would be lovely.
dalek rtcl: r448 | coke++ | trunk/ (2 files):
Use floor for integer division, pass a TODO test.
01:42
kid51 Here's some more data, this time Darwin PPC:
trunk:
time ./parrot x.pir
real 2m24.749s
user 1m20.430s
sys 0m3.822s
io_rewiring:
$ time ./parrot x.pir
real 0m6.473s
user 0m4.049s
sys 0m0.192s
Infinoid Nice. I'd love to see your coretest timings, too 01:43
(I have no idea how much fsync bogs down darwin)
Whiteknight: Aaw, no crash here in fresh checkout 01:44
Whiteknight so what the hell is wrong with my system? 01:45
Infinoid Your system aligns the planets just right
Whiteknight: What do --gc-debug or --no-gc do?
"./parrot t/pmc/undef.t", "./parrot --no-gc t/pmc/undef.t" and "./parrot --gc-debug t/pmc/undef.t" all pass fine here 01:47
I can help you try to set a watchpoint to catch the corruption in action, but it's a time-consuming process 01:48
chromatic Are you both using 64-bits?
Infinoid yeah.
Whiteknight I am
I'm rebuilding
Infinoid By the way, sizeof(PMC) is 48 on x86-64 linux... that's always bugged me
chromatic It'd be nice to halve that. 01:49
Whiteknight sans UnionVal, we would get closer
Infinoid odd, sizeof(PMC) is 28 on x86-32. I thought these were supposed to be powers of 2 01:50
mugwump how big is a vtable these days? 01:52
chromatic Big.
Some 80 pointers.
85 maybe. 01:53
mugwump well, that's down from 144 when I first looked
Whiteknight I'm still getting the failure here. I think my system is cursed
mugwump that was gross overhead ... *rimshots*
bacek_ chromatic: 240+ pointers
chromatic Yeah, I just looked again.
Infinoid Whiteknight: Reproducable means debuggable 01:54
Coke does parrot provide the PID of the running instance?
Whiteknight Infinoid: I know, but I'm running out of time before I'm going to sleep 01:55
Infinoid Whiteknight: How long do you have? If you have at least 10 minutes, we can at least try it
If not, it'll probably crash tomorrow too :) 01:56
Whiteknight I have 5 minutes before I'm heading to bed
Infinoid Great, echo 0 to /proc/sys/kernel/randomize_va_space and get the crash in gdb 01:57
Then set a breakpoint in Parrot_Class_init if pmc == (the value of your Class PMC pointer)
Then re-run parrot and set a watchpoint on _class->parent
With any luck, that won't have a huge lifetime 01:58
If it takes too long, I'd just come back to it tomorrow... though I think this heisenbug has popped up a few times and eluded us so far 02:00
Whiteknight weird, it's telling me that Parrot_Class_init isn't defined 02:01
my whole system is retarded. this is a tomorrow-project
Infinoid it needs to run once to load libparrot.so's symbols
No problem, sleep well
Whiteknight goodnight 02:02
chromatic A modern gdb should offer to apply the breakpoint on the appropriate library load. 02:04
dalek rtcl: r449 | coke++ | trunk/runtime/builtin/pid.pir:
Return a numeric stub value instead of an empty string.
02:05
Coke feedback: worth running a tcl spec test file that only passes one test?
rtcl: r450 | coke++ | wiki/SpecTestStatus.wiki:
with [pid] stub fix, all tests skipped instead of failing.
kid51 make coretest on Darwin PPC:
trunk:
02:06 snarkyboojum joined
kid51 real 10m29.536s 02:07
user 4m39.691s
sys 2m51.736s
io_rewiring:
real 9m50.837s
user 4m32.295s
sys 2m48.847s
Not as much difference there as on x.pir
Infinoid That's on real hardware? 02:09
chromatic CPU bound, I assume.
Infinoid Still more difference than he was getting on xen 02:11
I'll take what I can get :)
kid51 It's on a 5-y-o iBook 02:15
kid51 must sleep
purl $kid51->sleep(8 * 3600);
dalek rtcl: r451 | coke++ | wiki/SpecTestStatus.wiki:
Skip the http tests; fixup init.
02:20
rtcl: r452 | coke++ | trunk/runtime/builtin/interp.pir:
[interp create] shouldn't die; make it do nothing for now.
rtcl: r453 | coke++ | trunk/library/safe.tcl:
add safe.tcl from the 8.5.6 tcl release.
02:25
rtcl: r454 | coke++ | wiki/SpecTestStatus.wiki:
added a library file, new error
02:29
rtcl: r455 | coke++ | wiki/SpecTestStatus.wiki:
fix wiki markup typo
02:30
02:35 janus joined
Coke unicode question: 02:43
purl unicode question: is 'Sx{f6}ll' the same as Söll?
Coke $S1 = unicode:"abcd\\udead"
should that be value?
"valid"? 02:44
dalek rtcl: r456 | coke++ | wiki/SpecTestStatus.wiki:
note the source of the failure.
02:53
02:56 cotto joined
dalek rtcl: r457 | coke++ | wiki/SpecTestStatus.wiki:
we have unknown, fix wiki error,
02:58
Coke :q 02:59
GeJ Good night Coke 03:04
03:08 Alias joined
Coke ww. 03:09
Alias ww?
purl ww is probably wrong window
cotto ww is also 2/3 of www 03:10
purl okay, cotto.
cotto no need to thank me
Coke wonders if alias can answer his unicode question. 03:12
Alias I seriously doubt it :)
Coke is trying to get tcl's udead to generate a valid string in parrot. 03:13
Alias just turned up to keep an eye on any conversations on packaging formats and CPAN6
03:20 kesselhaus joined, donaldh joined
chromatic Coke, yes. 03:20
Coke chromatic: I can't seem to make a string there. composing a msg to parrot-dev, but if you can show me how to create a string in parrot with that codepoint... 03:24
03:24 tetragon joined
Alias chromatic: BTW, nice comeback in www.modernperlbooks.com/mt/2009/06/...oject.html 03:24
Coke $S1 = utf16:unicode:"abcd\\udead" - Illegal escape sequence in uxxx escape - too short 03:25
Alias chromatic: Of course, some of the underlying ideas are still a bit nuts
(Removing the dual-life modules that are needed to bootstrap CPAN)
Coke $S1 = utf8:unicode:"abcd\\udead" - Malformed UTF-8 string (also the default of unicode:)
Alias chromatic: Also, the dependency graph you want already exists. Take a look at some of the code in CPANTS::Weight 03:26
Coke $S1 = ucs2:unicode:"abcd\\udead" - unimpl ucs2
Alias (Although I've never needed an outright first class Graph.pm graph, but exporting to that wouldn't be hard)
chromatic With *that* codepoint? Do you have ICU? 03:30
I never suggested removing bootstrap modules. Someone claimed I did; it's a strawman. 03:32
Coke chromatic: ~/bird/bin/parrot_config revision slash has_icu
39460/1
purl 39460
chromatic You should have it then. 03:33
Coke icu 3.4.1
03:34 snarkyboojum joined
chromatic src/string/encoding/ucs2.c is mostly unimplemented. 03:35
Coke I shouldn't need ucs2 for this, though, neh? 03:36
(I was just checking various encodings to see fi I had better luck.)
03:39 Andy joined 03:42 Eevee joined
Coke hey, c? 03:46
purl c is for cookie, and it's good enough for you.
Andy purl, c is also chromatic 03:48
purl okay, Andy.
Coke (I just mailed the list) 03:54
chromatic Thanks. 03:57
Coke of course, I just found that I'm not doing raw strings, but using chr.
chromatic Talk to the bear! 03:58
Coke (should still work)
(20 partcl spec tests failing due to memory panic) 04:00
chromatic Hm, get_byte() almost certainly does the wrong thing in UCS-2. 04:04
At least the name is wrong. 04:05
Parrot_str_unescape() looks like it should call u_unescapeAt if we have ICU and are working with a UCS-2 STRING. 04:47
dalek rtcl: r458 | coke++ | trunk/runtime/builtin/lset.pir:
[lset] should only convert its argument to a list Obj if it's successful.
04:49
rtcl: r459 | coke++ | wiki/SpecTestStatus.wiki:
This test passes now.
rrot: r39461 | petdance++ | trunk (2 files):
adding some consts, and ornamenting some parms for the headerizer
04:53
04:55 cotto joined
Coke mark biggar? 05:04
biggar?
05:07 flh joined 05:12 eternaleye joined 05:27 eternaleye joined 05:32 tetragon joined
chromatic ./src/pmc/bignum.pmc:483: warning: ‘bn’ may be used uninitialized in this function 06:00
That looks bad.
06:07 uniejo joined
Coke OOC, how long does it take to run the spectest for rakudo? 06:14
Alias sorry, meeting 06:21
chromatic: You said "all"... I took that at face value
Well, more accurately
"Remove dual-lived modules from the core."
Still without nuance or caveat 06:22
You did mention it once back at the very beginning towards the bottom of the first ever mention 06:23
But that's been lost on anyone who joined the conversation since
06:33 viklund_ joined
dalek rtcl: r460 | coke++ | trunk/docs/spectest- (2 files):
update spectest numbers
06:35
chromatic I updated that post to clarify, Alias. Thanks for the suggestion. 07:07
Tene Coke: like 20 minutes or something, I think. 07:09
07:21 donaldh joined
dalek rrot: r39462 | cotto++ | branches/pmc_pct/compilers/pmcc (2 files):
[pmcc] move vtable dump reading code into pmcc.pir, which is a much better place than in the actions
07:23
rrot: r39463 | cotto++ | branches/pmc_pct/config/gen/makefiles/pmcc.in:
[makefile] add a generated file to pmcc's make clean and reorder existing files
07:41 Zak joined
chromatic This should scare you. 07:58
dalek rrot: r39464 | chromatic++ | trunk/compilers/imcc/reg_alloc.c:
[IMCC] Plugged a memory leak in the register allocator when counting the number

terrible, I managed to knock one at least one exponent off of it, making it run slightly faster (especially for complex compilation units) and leak less memory.
07:59
08:02 clinton joined
dalek rrot: r39465 | chromatic++ | trunk/src/ops/io.ops:
[ops] Replaced expensive Parrot_sprintf_c() call in print_p_i op with a call to
08:03
cotto It's nice that candidates for that optimization are marked by INTVAL_FMT. 08:05
chromatic Very easy to find.
08:08 tetragon joined 08:17 payload joined
chromatic Hm, that cleaned up a lot of Rakudo's leaking too. 08:24
dalek rrot: r39466 | chromatic++ | trunk/src/pmc/coroutine.pmc:
[PMC] Plugged a memory leak in the Coroutine PMC, where it didn't set a

contexts if their ref counts are negative to avoid crashes, but this meant that when it was time to recycle this context, it didn't get reclaimed.
08:26
08:29 barney joined 08:35 payload joined
cotto a class of bugs soon to be eliminated 08:35
chromatic We still leak contexts, but I think I've plugged another IMCC leak. 08:36
dalek rrot: r39467 | cotto++ | branches/pmc_pct/compilers/pmcc (5 files):
[pmcc] store vtable info as a member of the emitter and don't generate VTABLE function prototypes in the header, plus a few minor fixes
08:42
Alias chromatic: BTW, I had a discussion with Larry a couple of years back about modules and Perl 6 08:43
chromatic Me too!
Alias chromatic: I believe the idea was to define the modules in "layers"
So Layer 1 are the modules you need to load modules
Layer 2 are the modules you need build modules
Layer 3 are the modules you need to run a CPAN client
chromatic That sounds right.
Alias Layer 4 is the CPAN...
And then you define a "Standard Library" over the top of that, and require it for distribution certification 08:44
chromatic I have the impression that @Larry[0] isn't sure about a "Standard Library" on top of that. 08:45
Alias Right, that last bit is mostly me :)
chromatic Certainly all(@Larry) isn't.
dalek rrot: r39468 | chromatic++ | trunk/compilers/imcc (2 files):
[IMCC] Plugged a memory leak of the C strings used to keep track of the names
08:46 tetragon joined
Alias I have some plans for Chocolate (now probably to be called "Strawberry Professional" due to inevitable brand inertia) 08:46
chromatic I think that's the way to go.
Alias They come pretty close to being a "Standard Library (Desktop)"
chromatic You have quarterly releases, right? 08:47
Or is it biannual?
Alias quarterly 08:48
chromatic Do you have magic powers?
Alias Lest I be used as part of an argument I disagree with in future, I'd like to note that the ONLY reason I can pull that off is that I don't actually create any functionality. I just package up whatever is already release by other people :)
Half my releases contain no new Strawberry features, just updated CPAN modules and tiny config tweaks 08:49
The quarterly release is as much a marketing tool as anything
chromatic Sort of like p5p does for dual-lived modules.
Alias It makes me look more magic than I am 08:50
chromatic Sure, it makes your project look alive and well-maintained.
Alias And it reminds me to update my three-page website with something new so I don't look stale
right
chromatic That tends to attract contributions. 08:51
Alias Not really
For for me at least
I've had one contributor in 2 years
But then I'm just a packager
chromatic Don't you get bug reports?
Alias Mostly wrong ones 08:52
But sure, I get a handful
chromatic I define "contribution" more broadly than you might expect.
dalek rrot: r39469 | chromatic++ | trunk/compilers/imcc (2 files):
[IMCC] Plugged a memory leak of lexical variable names used with the .lex
purl i think directive is divisible by 2, hence it is not prime.
rrot: r39470 | barney++ | trunk/tools/dev/fetch_languages.pl:
[tools] Put 'languages' into a variable.
Alias I guess I define contributor more tightly than contribution
Non-symmetrically
Anyways 08:53
chromatic I see no reason to, but as long as we know the other person doesn't speak English, we can still commuincate.
Alias Indeed (Re: "stable")
chromatic And look, I'm fixing memory leaks right now. 08:54
Releases get downloaded.
People use them.
Alias Sure thing :)
chromatic People report bugs.
I can fix reported bugs.
We make a new release, people get bugfixes. 08:55
It's a virtuous cycle.
Alias Do you have any leak tests?
(... now?)
chromatic Not really. They're difficult to write reliably.
Alias Have you seen the SQLite test suite? 08:56
chromatic I haven't.
Alias They've been particularly hardcore about testing
They claim 45million lines of test code
chromatic How much of that is fixture data?
Alias No idea 08:57
And it's in a hodge-podge of languages, some of which I assume are auto-converted to others
And the count may include the entire codebase of TCL
Hard to say
08:57 masak joined
Alias But they are probably a good project to investigate for clues 08:58
chromatic We could set up a target to run selected known-good tests through Valgrind, but it'd take hours to get decent coverage.
Alias I do this now...
chromatic We could play tricks with a debugging malloc and ld.so and get answers faster perhaps.
... but that doesn't give good diagnostics. 08:59
Alias The fuzz test for PPI runs for several orders of magnitude longer under AUTOMATED_TESTING
Just make the tests run a really cut down version of themselves except under RELEASE_TESTING or something
cotto It'll get more feasible as we decrease the amount of C in the codebase.
Alias The tests you do before release that consume 20 hours of CPU
chromatic I don't want tests that consume 20 hours of CPU. 09:00
Alias TBH, that demo case I posted to the bug tracker was almost identical to my problem case
Then you run it for 5 hours across 4 cpus
Again, take a look at how SQLite does it 09:01
chromatic If we had a compilation farm that could give us results in 60 minutes, maybe.
Alias The ramp up the testing standards as it moves closer to a release
The final hardcore heavy tests never get run except on the final validation run for a prod release 09:02
Strawberry does something similar, it always runs all tests on all variations, from scratch
Building a strawberry release takes 10-25 hours
But I only do it once or twice a quarter
10-15 09:03
purl -5
chromatic I want to be able to build a release in an hour.
That's my constraint.
Alias Even if it prevents certain types of testing?
chromatic It doesn't prevent them. 09:05
I don't want that process overhead getting in the way of producing releases.
Barring the occasional obsessive nut like you or me, I find that people avoid work that's tedious, difficult, time-consuming, or involved. 09:08
Alias It doesn't have to get "in the way" 09:09
There's nothing to stop you rolling a release without running through full QA 09:10
It's just that you'd want to provide certainty once people start relying on you
How do I know that parrot will ever run my program (which takes longer than an hour) if the parrot development process itself never runs anything longer 09:11
And yes, eventually this results in diminishing returns
chromatic That's just it. I don't believe we can provide that certainty. 09:12
Alias Then parrot is just an academic exercise
chromatic At some point all of our stochastic testing is insufficient. 09:13
Alias Testing is not a matter of absolutes
chromatic Yes, that's what I'm saying.
I believe it's infeasible to test Parrot to the degree that we can offer certainty for anything other than a few specific use cases. 09:14
Alias If testing can consume between 1 second and 1 year of CPU to validate the safety of a release, why pick one hour as the limit
You're going to need to test to the standards of the uses to which you advocate Parrot being adopted for 09:15
chromatic Nothing succeeds like success.
Nothing tests your use cases like your use cases.
Alias Except tests... 09:16
chromatic If only users could contribute bug reports and test cases....
Alias What happens when you hit an hour 09:17
Will you reject test cases?
chromatic We find a way to speed them up.
Alias And if you can't?
chromatic We reevaluate the value of the slow tests. 09:18
Alias Speed suffers from diminishing returns, testing increases incrementally
chromatic That's why the coding standards tests don't run by default now.
Alias Do you run them before releasing?
chromatic Yes.
Alias But you'll stop once the incremental additional time goes over an hour? 09:19
chromatic I'll consider it.
We may move to a weekly report or a compile farm or something similar.
If it costs us two minutes to discover that a piece of Perl 5 code uses a bareword filehandle in violation of a Perl::Critic policy, I can argue that we have better tests for those 120 CPU seconds. 09:20
Alias Sure, but what if that test is watching for leaks 09:21
Or something less obviously secondary
chromatic If we have tests watching for leaks, I don't want to run them only right before a release.
Anyone who messes with memory management a day or two before a release gets a handslap. 09:22
Alias That seems in conflict with the hour thing
You know as well as I nobody ever thinks that are impacting something important when they do the minor commit that breaks something they didn't expect 09:23
chromatic Sure, I broke Rakudo in 0.9.0 fixing a coding standards test.
That's why there's an 0.9.0.1 on the CPAN.
It didn't take an hour to release that.
Alias That only has to happen a few times before it gets embarrasing 09:24
And people start asking why they should bother downloading instead of just waiting a few days to make sure you didn't release a broken version
chromatic Sure, that's why we have a documented release process.
Alias What does that mean? 09:25
purl You're a nut! You're crazy in the coconut!
chromatic That means that I can point you to the appropriate documentation and you can make a release any time you want.
You know exactly what it takes and you know how to ensure that the release is of appropriate quality. 09:26
Alias And that will say the same thing as you just said?
That you don't have to run all the tests before releasing?
chromatic That's not what I said. 09:27
Alias So you do run all tests, even the heavy tests, even if they take longer than an hour? 09:28
chromatic They don't take an hour. Yet.
dalek rrot: r39471 | cotto++ | branches/pmc_pct/compilers/vtdumper (5 files):
[vtdumper] s/argument/parameter/ and add some methods to make this code similar to what pmcc expects from vtable_info
Alias Clearly, I've never gotten a Perl 6 script running for more than a minute in any case
chromatic Perhaps you're thinking of the Rakudo test suite, which is a separate discussion on a separate channel. 09:30
Alias I'm aware
What's the longest any parrot process has run for?
chromatic I don't know. Jeff Horwitz might be the person to ask. 09:31
I don't know how often some of the IRC bots reset either.
I suspect what you're getting at is what I would call "exploratory testing". 09:37
It's valuable, but I'm not going to make it part of the release process (as far as my opinion matters). 09:38
We can isolate bugs through good exploratory testing and create tests for them as part of our automated testing, which is part of the release process as well as the development process.
This is, in fact, the most effective way I know to develop software. 09:39
10:00 mj41 joined 10:12 payload joined 10:13 gaz joined 10:33 payload joined
dalek kudo: fa4198c | masak++ | src/builtins/io.pir:
[src/builtins/io.pir] removed 'prompt' undef warning

was issued. Fixed this.
10:37
10:53 payload joined 10:56 payload1 joined 11:11 payload joined 11:23 donaldh joined 11:56 ruoso joined 12:12 bacek joined 12:21 payload joined 12:46 Steve_H joined 13:20 gryphon joined 13:48 sekimura joined 13:49 Whiteknight joined 13:50 sekimura_ joined, uniejo joined 13:52 sekimura joined 13:56 sekimura joined 14:00 sekimura joined 14:02 sekimura joined 14:06 Steve_H_ joined
dalek TT #748 created by coke++: memory leak in IMCC 14:18
rtcl: r461 | coke++ | wiki/MemoryLeaks.wiki:
Created wiki page through web user interface.
14:34
14:35 whoppix joined
dalek rtcl: r462 | coke++ | wiki/MemoryLeaks.wiki:
add a recent run.
14:39
14:40 snarkyboojum joined 14:47 mberends joined 14:49 kj joined
dalek rtcl: r463 | coke++ | wiki/MemoryLeaks.wiki:
The web site doesn't seem to like rendering this in the wiki. Will move it
14:53
14:53 snarkyboojum joined 14:59 Theory joined
dalek rrot: r39472 | whiteknight++ | trunk (81 files):
[io_rewiring] Merge the io_rewiring branch into trunk.
15:08
15:10 kj joined 15:20 donaldh joined 15:22 viklund_ joined, bacek joined
dalek rrot: r39473 | whiteknight++ | trunk/NEWS:
[NEWS] Create the new NEWS section for 1.3.0, and add some information about the IO refactors
15:28
15:35 jhorwitz joined
Whiteknight purl msg infinoid that error last night magically went away again. I did a fresh checkout of trunk and merged in the branch and the error was just gone. So, I merged branch into trunk and cross my fingers 15:38
purl Message for infinoid stored.
jhorwitz pmichaud: where do we stand w/ interpolated namespaces? just tried on the latest rakudo and got no love. 15:47
pmichaud last time I talked to the guy in charge (me), it still wasn't done. I think various forms of physical pain may be in order.
15:48 japhb joined
pmichaud although there _have_ been lots of type-related changes that have gone in that continually make me revise how it might work. Another set is going in today :-| 15:48
jhorwitz will bring a wet noodle to YAPC
pmichaud good idea. 15:49
purl pmichaud: Good Idea: Feeding stray kittens in the park. Bad Idea: Feeding stray kittens in the park to a bear.
jonathan Better than the bear eating you... 15:51
pmichaud: What type related changes are going in today?
pmichaud fulltypename --> typename
(assuming you did get to it today -- no real rush.)
jonathan oh, you decided to do that one?
Oh, you're assuming I'm doing it :-)
pmichaud (just another example of a change that would affect namespace interpolation) 15:52
jonathan It would?
pmichaud slightly
the parse gets affected a bit.
jonathan Ah, I didn't mean to give the impression I was going to do it today but if it's helpful to you if I do...
pmichaud oh. It's not at all critical.
jonathan (Was more working on fixing meta-class methods up.)
pmichaud meta-class ++
anyway, it's an easy change when we get to it. 15:53
jonathan Yes, I'd figured that, and figured I'd do it if a need came up. :-)
15:58 Andy joined 15:59 zostay joined 16:02 DanielC joined
DanielC Hi. Can you use numbers in a function name? e.g. .sub 'fletcher32' 16:16
I just started learning PIR. I'm roughly at the hello-world level.
16:17 NotFound joined
kj DanielC: yes, as long as the name starts with an alpha character 16:22
DanielC thanks
kj also, if you use a quoted string, i think it can even start with a number
easy to check out :-)
16:22 NotFound joined
NotFound hi 16:23
16:28 Psyche^ joined 16:32 payload joined
NotFound Debian amd64 all test pass. Good news, or someone deactivated the test that failed on 64? 16:39
mj41 seems like merging io fixed these tt.ro.vutbr.cz/report/pr-Parrot/do?...un-3835=on 16:47
16:48 darbelo joined
NotFound Good :) 16:49
mj41 but t/dynoplibs/myops.t is weird one 16:51
NotFound Is passing here 16:52
mj41 yes, but can start failing tomorrow, tt.ro.vutbr.cz/report/pr-Parrot/do?...un-1839=on 16:57
Whiteknight what test was failing on debian x674? 17:03
x64?
purl x64 is VS Professional and higher
17:06 masak joined
NotFound Whiteknight: the dynop alarm test failed for me all times I tried in the last months, for example 17:07
17:07 viklund_ joined
Whiteknight hmmm, that's weird 17:07
NotFound Not only in debian, in several linux 64 17:08
Now I have a new machine, I hope I can put sone eye on that.
jonathan wishes he could smack whoever decided that MultiSub in Parrot should inherit from ResizablePMCArray. 17:09
Tene purl: parrotsketch?
purl parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
Tene Tue Jun 9 17:10:18 UTC 2009 17:10
Whiteknight MultiSub inherits from RPA? For serious?
NotFound Users, Take Care ?
jonathan Whiteknight: Yes for serious.
17:11 coke_ joined
Tene Coke: you asked about spectest speed last night. I just ran a rakudo spectest. 'time' reports 19m8.301s 17:11
Whiteknight that's a ridiculous abuse of inheritance.
CokeZero Tene: danke.
Tene CokeZero: why?
CokeZero because it takes an insane amount of time to run partcl's. 17:12
17:12 Theory joined
jonathan Whiteknight: Damm right it is. 17:12
Tene ah
Whiteknight I merged in the IO branch this morning, so times *should* be down for most things
CokeZero code.google.com/p/partcl/source/bro...ogress.csv (last run took 4187s)
4187 / 60 ?
purl, 4187 / 60 ?
purl cokezero: no idea
CokeZero 4187 / 60
purl 69.7833333333333
Tene Nice. 17:13
CokeZero we've gotten a lot faster since parrot 0.8.1, but still.
masak Tene: do you think the new HLL is Rakudo might be why Rakudo suddenly doesn't return with 1 as the exit code on 'exit 1'? 17:14
Tene Whiteknight: what's next on your master plan after this IO branch?
masak s/is/in/
Tene masak: I'd be very surprised.
CokeZero masak: I doubt it. 17:15
Whiteknight Tene: More IO cleanups mostly. Once the pcc_rewiring branch lands (if ever) I'm on to GCable Contexts
Otherwise, AIO after 1.3.0 comes out
CokeZero tcl also used to exit properly but no longer does.
anyone here using ICU with strawberry perl? 17:16
(I just grabbed a newish ICU for win32, it doesn't come with icu-config) 17:17
oooh. chromatic's recent memory leak fixes were big. 17:18
masak Tene, CokeZero: ok, these are my observations: line 310 in perl6.pir in Rakudo, 'exit 1', quits Rakudo with exit code 0. line 125 in examples/pir/uniq.pir in Parrot, 'exit 1', quits with exit code 1. 17:19
which hypothesis could explain that?
CokeZero masak: rakudo has a top level exception handler.
to catch "everything but exit exceptions"
Tene masak: try disabling the EH
masak Tene: sure, how?
purl sure, how are you going to enforce this on the tcp level?
Tene masak: comment out lines 207 and 209 in perl6.pir 17:20
CokeZero msg chromatic - at least one of the files that was running out of memory on feather just completed with your recent memory leak plugs.
purl Message for chromatic stored.
masak Tene: ok. 17:21
CokeZero parrotsketch?
purl rumour has it parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
CokeZero clock?
purl CokeZero: LAX: Tue 10:21am PDT / CHI: Tue 12:21pm CDT / NYC: Tue 1:21pm EDT / LON: Tue 6:21pm BST / BER: Tue 7:21pm CEST / IND: Tue 10:51pm IST / TOK: Wed 2:21am JST / SYD: Wed 3:21am EST /
CokeZero
17:24 barney joined
masak Tene: yep. that did it. return code is now 1. what does that mean, in terms of fixing the problem? 17:29
jonathan masak: Ah, hmm 17:31
exit:
pop_eh
exit 0
It seems the same handler stays active and re-catches the exit exception through by exit 1 17:32
Try a pop_eh after the trap_errors: line.
But I suspect that the code I just pasted needs to look in the exception for the correct exit code to use also. 17:34
masak is lost
but it seems the problem is well understood now, which makes me happy. 17:35
CokeZero jonathan: can you proffer me a patch for code.google.com/p/partcl/source/bro...sh.pir#165 too? =-)
jonathan CokeZero: You getting a hang or something? 17:37
CokeZero: And what is .catch() - a macro?
CokeZero yes.
jonathan Which is that yes too? :-)
CokeZero if I try to exit tcl from the REPL, I stay in the loop.
[exit] also doesn't exit.
and yes, it's a macro.
code.google.com/p/partcl/source/bro...ros.pir#34 17:38
jonathan oh :-(
I was going to say "you're missing a pop_eh"
But your macro does it.
CokeZero ayup.
this used to work back around 0.9 or so. =-) 17:39
jonathan That rethrow trick looks sensible, I'd like to steal it...apart from you say it doesn't work so hmm. :-/
CokeZero eeet used to! =-) 17:42
(the only reason I have macros is because I was sick of rewriting syntax.)
17:44 chromatic joined
chromatic Hm, in the t/pmc/undef.t problem, the class being marked looks invalid. 17:44
cotto #ps in 35 17:55
CokeZero curses the internets, as he now has a box heading his way from amazon.com 18:00
cotto The internets have been suitably cursed. I'll blame you when something goes wrong. 18:03
CokeZero chromatic: only getting a few more files not running out of memory, but most of the ones still failing at least fot further. 18:05
chromatic Yeah, that context leak is the big one.
Though if you compile a lot of PIR, the IMCC leaks can add up.
CokeZero I compile a LOT of pir. =-) 18:06
chromatic The IMCC leaks are usually *really* easy to fix if you can trace it down to a small snippet of PIR.
CokeZero any procedure invocation or expression invocation will do it.
chromatic I fixed a few last night just by reading 10 lines of PIR and saying "Oh, I bet it's THAT!" and confirming it.
CokeZero chromatic: so noted. I'll see if I can duplicate it.
pmichaud #ps in 24. I may be late/distracted during #ps, so I'm pre-pasting my report. 18:07
cotto That's prepasterous.
CokeZero *groan* 18:08
chromatic The assign opcode is the problem. 18:11
... which calls set_pmc in Undef. 18:12
betcha it's pmc_reuse_by_class.
Tene masak: it means there's a problem with the exception handler. 18:13
masak Tene: ok.
any help appreciated.
Tene masak: I can't work on it right now, as I'm behind at work. I'll try to get to it tonight. 18:14
(sorry)
starting to pack up my house tonight. 18:15
masak Tene: that's still good news, by me. thanks! 18:16
jonathan oh gah I forgot about doing dinner :-/
jonathan will go after giving his #ps report 18:20
18:20 allison joined
dalek TT #5 closed by coke++: partcl's [puts hi] exposes memory leaks in r33137 18:21
kudo: b677d60 | masak++ | src/ (2 files):
moved 'prompt' into the setting
Tene I have my ps report ready ahead of time! 18:27
I think I'm missing a few things, and I don't know how much of it was actually in the past week...
It's all been since the last time I reported, though. 18:28
cotto pmichaud, ping
pmichaud cotto: pong
cotto What would it take to make a PAST iterable?
18:28 darbelo joined
Whiteknight pmc_reuse_by_class is b0rked? 18:29
cotto specifically a PAST::Block
Whiteknight #ps in 1
chromatic I commented out everything else in t/pmc/undef.t and ran it through the gcdebug core. 18:30
If I comment out the assign op, it's fine.
pmichaud cotto: it's already iterable (more)
chromatic It's either pmc_reuse_by_class or Parrot_oo_clone_object.
pmichaud cotto: just call .'iterator'() on it, and you get back an iterator. 18:31
cotto Great! Thanks.
pmichaud we could potentially make that a vtable method, too, I suppose.
cotto That'd be more intuitive. 18:32
18:32 particle1 joined
Whiteknight chromatic: When did that t/pmc/undef.t problem appear? 18:34
chromatic After the merge.
I suspect it was lying in wait though. 18:35
jonathan feels hard done by in the sort order stakes 18:37
chromatic I don't recognize the letter J. I'm like mainland and Taiwan.
jonathan :-P 18:38
jonathan can go for dinner now :-)
cotto appointment & 18:39
Whiteknight chromatic: I saw that failure before the branch merged, but I did a fresh checkout and it disappeared 18:48
so I'm sure it's some weird transient thing if it's appeared again now
chromatic Run just set_undef_to_object in t/pmc/undef.t and you'll trigger it with the gcdebug core. 18:49
Very reproducable.
CokeZero chromatic++ # memleak fixes. 18:50
Whiteknight good, reproducible is good 18:51
chromatic Not according to my neighbors. They passed around a petition.
TimToady they finally got tired of those wild parties, eh? 18:53
Tene Whiteknight: Rakudo's socket tests are now failing after the IO merge. 18:55
Method 'close' not found for invocant of class 'Socket'
CokeZero I thought rakudo was tested pre-merge-back? 18:56
dalek rtcl: r464 | coke++ | wiki/SpecTestStatus.wiki:
Recent memleak fixes in parrot were make-or-break for these tests.
Whiteknight Rakudo was tested before the merge
Tene: I hate to ask, but did you realclean?
Tene I realcleaned everything. 18:57
Whiteknight damnit. 18:59
Tene Whiteknight: however, spectest time did drop from 20m to 14m, though 19:00
Whiteknight Okay, so two questons:
1) How did we miss this failure prior to the merge and
2) do you have a small test case that demonstrates the problem? 19:01
Tene Whiteknight: looks like it just reported the message in the spectest output, but didn't report as a failure in the test summary
Whiteknight Tene: Okay, that would explain it
so I assume somebody is calling "close socket_pmc" and it's throwing an error message? 19:02
Tene t/spec/S32-io/IO-Socket-INET.t
looks like it's $client.close();
mberends Whiteknight, Tene, that was me bumbling around. Any corrections gratefully received ;) 19:05
19:05 clinton left
NotFound I don't see a close method in the socket pmc. 19:05
19:05 clinton joined
Whiteknight how does an open socket become closed then? 19:06
chromatic Velociraptors.
Whiteknight damnit, the velociraptors didn't make it into the branch
NotFound goto close;
TimToady whew, that was a close call... 19:07
Whiteknight the socket PMC doesn't look like it contains any functionality to terminate an existing connection 19:08
no close() method, no disconnect() method, nothing
Tene Whiteknight: so probably not caused by IO branch. sorry. :)
Whiteknight it's okay, it's an issue that needs resolving in any case.
will be addressed in the next IO branch 19:09
NotFound We are on line with the modern trend of 'always conneced'
Parrot_io_close defaults to PCCINVOKE 'close' 19:12
allison in general, the opcodes shouldn't be called on sockets at all 19:13
sockets use only methods
(but then, if sockets happened to have a method called 'close' it wouldn't really matter) 19:14
NotFound Looks like currently there is no way, method or not, to close them. 19:15
Whiteknight right, I shouldn't have said opcode
allison NotFound: aye, that needs to be fixed
NotFound Well, at least destroy does it.
19:16 kj joined
mberends good people, on the subject of sockets, could you perhaps look into this little test case that hangs after opening a socket? gitorious.org/net-smtp/mainline 19:18
Tene that's not a link to a useful file. 19:19
:P
Whiteknight I think a socket for some operations can be made to work with existing IO opcodes: open, close, read, print, etc 19:20
19:21 donaldh joined
Whiteknight I don't think they need any specialized opcodes though 19:21
Tene argh what's all this proto stuff?
Whiteknight like open "localhost", "L" could open a listening socket, while open "localhost", "C" could open a client socket, etc 19:22
Tene Hmm.
Whiteknight print socket, string could write data to the socket, string = read socket could read, etc 19:24
of course, these would just use basic options (TCP/IP?) so if you wanted more control you would use the methods directly.
Anyway, I'll muse about this stuff more later. I'm out for now. 19:26
chromatic src/io/api.c:123: warning: ‘filehandle’ may be used uninitialized in this function 19:28
NotFound Looks like the diagnostic is right. The last else does not set it 19:29
nopaste "Coke" at 65.91.151.194 pasted "for chromatic: leaker.pir" (20 lines) at nopaste.snit.ch/16839 19:31
chromatic Thanks, that should be relatively easy. 19:34
jhorwitz re: the PDD10 question in #ps, we should rebuild it from embed.pod (kind of backwards, but i rewrote embed.pod last year to reflect reality) 19:42
cotto chromatic, where's your attack plan for profiling? 19:44
CokeZero chromatic: was that thanks to me? 19:45
nopaste "chromatic" at 72.90.115.31 pasted "Deliverables for Profiling Core (cotto)" (21 lines) at nopaste.snit.ch/16840
chromatic CokeZero, yes. 19:46
NotFound jhorwitz: The reality that if reflected the last time I looked at it was that embedding sucks :( 19:47
jhorwitz it's actually not bad at all
CokeZero arigato, chromatic-san
jhorwitz NotFound: the hardest part is not writing the code, but figuring out the right compiler/ilnker flags from the parrot_config mess 19:48
CokeZero wow. software that makes me want to upgrade my os. 19:50
(chrome is OSX 10.5 only.)
NotFound jhorwitz: strange, that was the easy part for me ;)
jhorwitz: look at examples/embed/Makefile 19:51
dalek tracwiki: v17 | cotto++ | ParrotQuotes 19:52
tracwiki: velociraptors
tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff
jhorwitz yeah, it *can* be easy. but even after a recent svn up, my linker flags suddenly moved from libparrot_ldflags to libparrot_linkflags
(or something similar, i forget the exact name)
CokeZero jhorwitz: in our defense, adoughera cleaned up that stuff quite a bit. :|
but I feel your pain, living outside the core sucks. =-) 19:53
jhorwitz CokeZero: yep, cleaning is good. but the rug certainly can be pulled out from under you in this place. ;-)
NotFound The problem I see is that current usages of embedding just jump over the problems by including all parrot headers they want and using all available functions. That way we never knows what things the external interface needs. 19:55
chromatic Exactly. 19:56
jhorwitz agreed
the headers have always been a problem in that regard 19:57
NotFound In fact I added seevral functions after discovering that it was impossible to write even a minimal example without breaking the rules.
jhorwitz added several functions for what? 19:58
NotFound To be able to put something that works in t/src/embed.t 19:59
jhorwitz looks at that file...been a long time
NotFound All code in that file were examples of what to NOT do. 20:00
dalek rrot: r39474 | chromatic++ | trunk/compilers/imcc/pcc.c:
[IMCC] Added braces to avoid a compiler warning about an ambiguous else.
rrot: r39475 | chromatic++ | trunk/src/pmc/undef.pmc:
[PMC] Fixed Undef morph to Object code in the Undef PMC to avoid odd mark()

is ideal, but it's an improvement.
rrot: r39476 | chromatic++ | trunk/src (2 files):
[src] Tidied code; no functional changes.
jhorwitz NotFound: it starts off well. pretty clean. then gets progressively uglier. 20:01
i know mod_parrot doesn't use a single internal datatype or unexported function, so it's possible to keep things clean.
NotFound jhorwitz: I let the previous content, skipping all.
chromatic Wow, CokeZero. That's a very leaky example. 20:02
Of course, if you put 'emit' in quotes, it's better.
CokeZero ... it shouldn't even allow it without quotes. whoops! 20:03
NotFound jhorwitz: we have lots of things exported that are not intended for external usage
jhorwitz understood.
purl understood. are you on schedule?
jhorwitz smacks purl
purl Oh baby, you do it so *good*!
chromatic It doesn't, but IMCC doesn't clean up allocated memory when it exits due to a parse failure.
jhorwitz purl: you know it
purl jhorwitz: excuse me?
CokeZero chromatic: will try to find you a better leaker.
NotFound jhorwitz: did you see something ugly before the '# Old tests, skipped all' ? 20:05
jhorwitz didn't see that line. looking...
NotFound Other than the lack of the last 'l' in that comment ;)
jhorwitz no, looks clean 20:06
NotFound Good :)
jhorwitz was able to grok it pretty quickly -- reads like mod_parrot. :) 20:07
NotFound So at least now we have some clean examples. 20:08
jhorwitz yes! and i used embed.pod to document the functions i was using in mod_parrot, most of which are also in those examples.
so i guess the question is, what do we want to see from PDD10? 20:10
NotFound jhorwitz: Maybe will be better to unify extend.pod and embed.pod
jhorwitz NotFound: yes, allison and i agreed on that last year.
make extend.pod disappear
ttbot chromatic: Parrot trunk/ r39476 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/30435.txt
20:11 gryphon joined
NotFound jhorwitz: I think the PDD for embedding must be very short, and refer to the extend pdd for almost all. 20:11
jhorwitz i think we also agreed to unify those PDDs
NotFound Even better.
jhorwitz they're just not separate entities
and then, maybe one day, we'll have one include file too. ;-) 20:12
NotFound Just a short paragraph about how to embed must be enough.
Or for people that really dislike the separation of concepts, on how to start a parrot interpreter from C main ;) 20:13
But if we all agree on unify those docs, I think what must be done now is to unify them now. 20:14
CokeZero chromatic: here's an interesting leak tester; run some tcl.pbc with parrot -D60; leaktest all the resulting EVAL files. 20:15
doing so now, hoping to find a culprit. 20:16
jhorwitz yep. and the pdd10 ticket for the 1.3 milestone implies unification.
NotFound That implies also pdd renumbering? 20:17
jhorwitz or maybe just deprecation
*sigh* i guess i have some work to do this weekend. 20:18
NotFound jhorwitz: Have you looked at examples/embed/lorito.c ? 20:20
CokeZero chromatic: bah. turns out that those aren't really runnable in isolation anyway. ah well.
jhorwitz hm, doesn't sound familiar
NotFound jhorwitz: I wrote it some months ago.
chromatic CokeZero, are the top culprits in IMCC? 20:21
CokeZero chromatic: let me try an actual tcl file and see.
jhorwitz NotFound: looks pretty straightforward 20:22
NotFound jhorwitz: that was the attempt on writing something that used only emebed.h and extend.h that showed me the need to add some functions to the external interface. Don't remember now what were. 20:25
jhorwitz NotFound: i maybe saw one function in there that isn't documented in embed.pod (and should be)
that's really encouraging
NotFound We're starting to have a usable interface, just need to follow that path and document it. 20:26
jhorwitz yes, that was the point of me keeping embed.pod up to date
so now we move onto the PDD and profit 20:27
NotFound It helped to figure some flaws, at least ;)
jhorwitz just a few. ;-)
nopaste "coke" at 193.200.132.135 pasted "leak output from examples/power.tcl" (4795 lines) at nopaste.snit.ch/16841
NotFound I'm not blaming, the general scheme was not bad, just lacked a few important functions. 20:28
chromatic Okay, now we just have to trim that PIR output down to the point where we can identify which part of the grammar causes a leak CokeZero. 20:29
jhorwitz i wouldn't even know where to begin blaming anyway. :)
i just documented the fallout. :)
CokeZero chromatic: trac.parrot.org/parrot/ticket/748 seems to be the biggest leaker. 20:31
(which is just the leak output, not the pir)
cotto msg Whiteknight doc.cat-v.org/inferno/concurrent_gc/ looks like it might be of interest, should you ever have the time to read it 20:32
purl Message for whiteknight stored.
chromatic CokeZero, I need to be able to say "Oh, this file has :named( 'foo' ) in it three times and leaks 18 bytes." 20:33
Then it's a trivial fix.
Do you have a lot of .macros?
CokeZero yes. 20:35
chromatic That'll do it. 20:36
CokeZero since I'm not using PCT, narrowing down the generated PIR is a pita. working on it.
dalek rrot: r39477 | NotFound++ | trunk/src/pmc/socket.pmc:
[pmc] add close method to Socket
20:46
NotFound velociraptors-- 20:47
CokeZero acceloraptors! 20:48
mugwump how do you differentiate those from velociraptors? 20:50
NotFound attrs - PMC_data(SELF); ? 20:51
udef.pmc:54
mugwump oh, dv/dt
chromatic Hm, that should be =.
NotFound mugwump: you don't care, you just run 20:52
ttbot NotFound: Parrot trunk/ r39477 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/30518.txt
NotFound ttbot: looks like the same problem 20:53
CokeZero mugwump: that's a horrible pun. it puts me in an awkward position. 20:54
dalek rrot: r39478 | chromatic++ | trunk/compilers/imcc (5 files):
[IMCC] Plugged a memory leak of (generated) labels in IMCC.
21:00
rrot: r39479 | chromatic++ | trunk/src/pmc/undef.pmc:
[PMC] Fixed a stupid typo which makes picky compilers run home to mommy. This
21:03
21:04 bacek joined
NotFound My g++ feels hurt because of that comment 21:05
ttbot chromatic: Parrot trunk/ r39478 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/30562.txt
chromatic g++ can stay. It's MSVC that goes.
NotFound Several commits with all test passing in linux amd64. Looks some recent change killed some hidden problem. 21:13
Good thing that this happens the first time I have a 64 bit OS at home :) 21:14
dalek kudo: 1ff28a3 | jnthn++ | src/ (7 files):
Lots of fixes to get method introspection mostly working. Not 100% there yet, but a whole load better than it was. Also prevents us getting quite so explodely when we're putting MultiSubs into arrays (Parrot's MultiSub inheriting from RPA is srsly stupid), and makes .name work on Multis too.
21:15
kudo: c7d4dad | jnthn++ | t/spectest.data:
Add S12-introspection/methods.t to spectest.data.
kudo: 5af9cf3 | jnthn++ | :
Merge branch 'master' of git@github.com:rakudo/rakudo
GeJ Good morning everyone 21:21
CokeZero pmichaud: spoke briefly to someone on the #tcl channel. basically, "yah, it probably shouuld throw an error, but..." 21:22
but I have a fallback plan.
21:24 Theory joined 21:48 kj left
pmichaud CokeZero: surely they could come up with a different test for that 21:51
i.e., one that uses a valid unicode char. I'm sure there are plenty to choose from... ;-) 21:52
dalek rrot: r39480 | fperrad++ | trunk/src/pmc/socket.pmc:
[codingstd] fix C parentheses
21:53
21:58 Whiteknight joined 22:00 jan joined 22:12 jan joined
dalek rrot: r39481 | bacek++ | branches/pmc_i_ops (7 files):
[pmc] Replace SELF.clone with pmc_new/set combo
22:17
bacek good morning #parrot 22:24
dalek kudo: f80f12c | jnthn++ | src/parrot/misc.pir:
Make .perl on a Parrot MultiSub not explode when we take .perl of a list containing it (yes, this patch sucks some...plan to improve .perl a bit on routines soon, though, and this is better than exploding).
kudo: 86aeafb | jnthn++ | src/parrot/ClassHOW.pir:
Fix :tree support for .^methods.
bacek pmichaud: around?
pmichaud here, briefly 22:25
bacek main argue about pmc_i_ops branch is about using VTABLE_clone or changing semantic to use i_op?
(I replaced VTABLE_clone to new/set combo in r39481) 22:26
22:26 ruoso joined
pmichaud vtable_clone was the one that caused immediate concern. I'm still not sure about the i_op semantic. 22:26
it doesn't feel right to me to think that we can/should define everything in terms of i_op
bacek But it's just math. And reduces amount of code to maintain 22:27
dalek rrot: r39482 | bacek++ | branches/pmc_i_ops (87 files):
Sync branch with trunk.
pmichaud I'm not sure it's always "just math".
bacek hm... How that? 22:28
pmichaud I can imagine that there might be scenarios where the inplace math is not the right thing to do. 22:29
22:29 contingencyplan joined
bacek But I use inplace for core pmcs only. With predefined semantic. 22:30
pmichaud if you're limiting it to core pmcs, but not affecting the ability of others pmcs to do something different, I have less concern.
bacek It's just core ops.
pmichaud ops, or pmcs?
there's a difference.
bacek pmcs.
It's still early morning there :) 22:31
jonathan s/there/here/ ;-)
pmichaud It's definitely not early morning here. :-)
bacek Derived pmcs can provide any semantic for "add"/"i_add"
jonathan hands bacek some good strong кофе
bacek accepting coffee swearing in second language 22:32
22:33 rg1 joined
bacek pmichaud: Is there other objections about branch assuming that I already changed VTABLE_clone to pmc_new/set and it affects only core pmcs? 22:34
pmichaud I'm looking now. But I'm not sure I should be the only one reviewing them. 22:35
I'd want to get allison++ approval before merging to trunk, since she's the one who most recently worked on this stuff. 22:36
bacek Ok, I'll write new message to parrot-dev requesting for review. 22:37
22:48 itrekkie joined
dalek rrot: r39483 | chromatic++ | trunk/compilers/imcc (2 files):
[IMCC] Plugged a memory leak of macro names used in PIR programs (in
22:53
bacek "No; your specific uses may rely on the presence of bugs, unspecified features, happy accidents, or other behaviors not captured in the test suite." 23:16
Speaking of which. Can I merge tt24_unicode_numifications branch to trunk? :)
dalek rrot: r39484 | chromatic++ | trunk/compilers/imcc (2 files):
[IMCC] Plugged a memory leak of the comma separating macro parameters (yes,
23:17
23:17 skids joined 23:22 Theory_ joined 23:27 sekimura joined
dalek rrot: r39485 | chromatic++ | trunk/compilers/imcc (2 files):
[IMCC] Plugged a memory leak in PIR macros using curly braces to delineate
23:36
purl arguments is what's left after action selection
23:37 mongui joined
Whiteknight chromatic++ 23:46
chromatic Want to try your hand at it? 23:47
23:47 patspam joined