Camelia, the Perl 6 bug

IRC log for #parrot, 2010-04-16

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:07 Whiteknight branch mispredictions probably weigh a little bit more than instruction counts
00:08 Whiteknight and cache misses are much more expensive than either
00:15 darbelo Whiteknight: Yes, but how much? How do I turn the numbers valgrind spits into a 'This helped'|'This hurt' test?
00:15 darbelo I'm bitching about how the tool doesn't do everything for me ;)
00:15 davidfetter joined #parrot
00:16 darbelo It's bad enough I have to edit the code myself.
00:16 chromatic darbelo, do you use Kcachegrind?
00:17 darbelo Not regularly. I used it once or twice.
00:18 chromatic It has enough options for visualization to help.
00:18 chromatic You have to play with it a while to understand what it all means, but once you do it's very useful.
00:19 darbelo I'll look into it. I never looked very deeply into it's UI.
00:20 cotto_work The UI is kinda hard to get used to but it's a great tool.
00:20 darbelo There you go again. Effort. At this rate we'll never build skynet.
00:21 * darbelo shakes his head.
00:22 cotto_work I've got a gcc-4.5+lto parrot build.  What'd be fun to test?
00:22 darbelo Something that gets optimized at link time?
00:22 * darbelo has to read up on LTO.
00:23 cotto_work or do I?
00:23 cotto_work is this sufficient? perl Configure.pl --cc=gcc-4.5 --optimize --ccflags=-flto --linkflags=-flto
00:23 Whiteknight i really need to increase my valgrind and Kcachegrind foo
00:23 Whiteknight chromatic: you have a resource I could dig into?
00:24 chromatic Nothing helped me more than playing with the visualizations.
00:24 cotto_work +1
00:24 purl 1
00:26 Whiteknight I have to install kcachegrind again
00:27 Whiteknight ...which means I need to install all the damn kde libraries for it
00:27 Whiteknight damnit
00:27 Whiteknight we all need to write a GCacheGrind
00:27 Whiteknight or better yet, do it on Parrot with PCacheGrind
00:28 Whiteknight one day people will tell legends about my inability to give creative names to projects
00:29 darbelo We already do.
00:29 cotto_work Whiteknight may be alive, but his memory lives on.
00:30 chromatic I'll name a Roomba after him.  Someday.  Perhaps.
00:30 Whiteknight ...but we'll write it in parrot, and name it PRoomba!
00:31 Whiteknight or, Parrot-Roomba!
00:31 Whiteknight ...wait a minute, I've had these exact same ideas before! I'm going in circles!
00:31 Whiteknight okay, so how do I do this? I have to run valgrind to get a profile, and then load that profile into kcachegrind?
00:32 chromatic Right.
00:32 cotto_work yup
00:32 chromatic alias cg='time valgrind --tool=callgrind --dump-instr=yes --trace-jump=yes'
00:32 cotto_work it's usually named something like callgrind.1234123.out
00:32 chromatic kcachegrind callgrind.12345.out
00:36 mikehh joined #parrot
00:39 Whiteknight chromatic: which benchmark is your favorite?
00:41 chromatic fib.pir, because it's all about PCC.
00:43 cotto_work lto build shows a measurable improvement there
00:43 chromatic 6%?
00:43 purl 6% is ^5 for the hard of typing.
00:45 cotto_work not sure
00:47 cotto_work let's see what valgrind says
00:48 abqar joined #parrot
00:48 Coke less than o-some?
00:48 cotto_work 2442121854/2436403643
00:48 purl 1.00234698836395
00:49 chromatic That's a tiny amount.
00:50 cotto_work yes
00:50 chromatic I yawn with my lack of being impressed.
00:51 eternaleye joined #parrot
00:53 Coke nqp-rx question. how do I diagnose this:
00:53 Coke Multiple Dispatch: No suitable candidate found for 'concatenate_str', with signature 'PSP->P'
00:57 cotto_work closer to a 2% improvement if I look at the avg of 10 runs for wallclock time, which is less than the margin of error.
00:57 cotto_work so yeah, nothing to write home about
00:57 chromatic Time to work on a better STREQ macro anyway.
00:58 chromatic That'll get a lot more fun when immutable strings land.
00:59 bacek_at_work chromatic, any luck with binder?
01:00 chromatic I haven't had time to look yet; still writing.
01:00 chromatic I have a couple of ideas I'll check after dinner.
01:00 muixirt_ joined #parrot
01:01 cotto_work in that branch is it possible for two strings at different memory locations to be otherwise identical?
01:01 chromatic Yes, but that's much less likely than on trunk.
01:17 Austin coke: file?
01:18 Whiteknight in kcachegrind, which number is the instruction count?
01:18 Austin the big one?
01:18 purl Bigger than yours, Austin
01:18 * Austin gives purl a big smooch.
01:19 cotto_work This channel just got weird.
01:19 cotto_work er
01:20 Whiteknight Am I reading this correctly? Does set_args really take 21.49% of total execution effort
01:20 Austin Wow.
01:20 chromatic Inclusive, I'm sure.
01:20 cotto_work what profile are you looking at?
01:20 Austin The you-suck-o-meter is reading pretty high...
01:20 Austin fib or oofib, I'd guess.
01:22 Whiteknight chromatic: yeah, inclusive. calls Parrot_pcc_build_sig_object_from_ops, which calls Parrot_pmc_new, which is GC evil
01:22 Whiteknight so that makes more sense
01:22 chromatic Now imagine we cached those sig objects in bytecode.
01:24 Austin Heh.
01:24 Austin Isn't that what the set_args opcode is?
01:24 chromatic No.
01:25 chromatic set_args is "Here's some information representing this fixed arity, typed, compile-time known call.  Please build me an internal data structure at runtime for every call."
01:26 Austin heh
01:26 Austin higher and higher...
01:29 Austin Coke: I'm seeing mad test failures on "make test" after pulling just now. (FYI)
01:29 Whiteknight chromatic: I've been preaching that sermon for weeks now
01:30 Austin Coke: Your concatenate str problem is probably a "concat $S0, $P0" somewhere, possibly masked with a .local variable.
01:31 chromatic We need a plan to address that, but that means splitting CallContext back into CallSig and Context.
01:32 Whiteknight chromatic: I don't think so
01:33 Whiteknight I think we keep CallContext, but add a new subtype "CallArgs" that morphs into it very easily
01:33 chromatic Anything frozen into PBC has to be constant.
01:33 Whiteknight right. Freeze CallArgs to PBC, thaw it again, and use it to cheaply build a CallContext
01:34 chromatic What's the value in keeping the Call part?
01:37 Whiteknight well, maybe just an Arguments PMC that we freeze
01:37 Whiteknight I don't know, it's worth more thought
01:39 chromatic The smallest, most separate part we can freeze, the better.
01:39 Austin Coke: default.pmc, ~ line 1857 may be the problem. Are you catenating to a list or something?
01:40 Coke austin - in my uncommitted git checkout.
01:40 Coke Austin: those aren't test failures, but just noisy TODOs, yes?
01:40 Austin That vtab tries to do a PSP concat
01:43 mikehh joined #parrot
01:45 Austin Coke: Apparently many of them are noisy todos. But backslash.t has plan35/ran30, and string has plan160/ran156. (That one may be icu related..)
02:09 plobsing joined #parrot
02:10 Coke Austin: icu is required. has you it?
02:10 Austin nae
02:11 Coke perhaps I should make Configure.pl die without it.
02:11 Austin Como se llaman alguien que habla tres idiomas?
02:11 Coke Or we could smarten the tests.
02:11 Coke a tri-linguist?
02:11 Austin trilingual.
02:11 Austin Y como se llaman alguien que habla dos idiomas?
02:12 Coke bilingual ...
02:12 Austin Y como se llaman alguien que habla solamente una lingua?
02:12 * Coke wonders where this is going.
02:12 purl i already had it that way, Coke.
02:12 Coke what?
02:12 Austin American.
02:12 purl hmmm... american is not cheese.  It's pasteurized process American cheese-style food-like crap
02:12 Coke I was pretending I couldn't understand you. :P
02:12 Austin :)
02:12 Coke but I like yours better. =-)
02:13 Austin I don't *need* ICU. All my files are belong to ascii.
02:13 Coke my 13 year old will be learning Mandarin in 8th grade. whee.
02:13 Austin Yowsa.
02:13 Austin Ni-how.
02:13 Austin Knee-how.
02:13 Coke back in my day, it was english or french.
02:14 Coke xe xe neh!
02:14 Mokurai1 joined #parrot
02:14 Coke budget cuts this year, they're dropping french and keeping spanish & Mandarin.
02:14 Austin German for me. My dad tricked me into believing that they did science in some language other than English.
02:14 Coke (sorry, xie xie neh is probably closer.)
02:14 Austin shae shae nay?
02:14 Austin :)
02:14 Coke Ich kannst nicht Deutche sprochen.
02:15 Coke (or spell)
02:15 Austin "Ach, du lieber! Fledermausman, das ist ein schaussfrau!"
02:15 Austin 2 years of my life, excised with chemical precision...
02:26 Coke (ah. debugging that error is easier when not using the REPL)
02:28 Coke I think it's a problem with my grammar.
02:28 Austin What, the PSP concat error?
02:28 Austin Could be. Anything that winds up in the default.pmc.
02:29 Austin You have a backtrace?
02:29 nopaste "coke" at 192.168.1.3 pasted "why does $a(2) not trigger the array variant?" (4 lines) at http://nopaste.snit.ch/20282
02:30 Coke order of the rules?
02:30 Austin I don't think you can count on the order.
02:32 Austin But it's recursive descent. You probably want to refactor that anyway.
02:32 Austin (Although LTM in p6 would fix it.)
03:00 janus joined #parrot
03:00 tcurtis NCI doesn't support functions with struct(not pointer to struct) results or parameters, does it?
03:02 plobsing tcurtis: what abi supports that?
03:03 plobsing and what libraries use it?
03:04 tcurtis plobsing: GNU Scientific Library's complex number functions.
03:05 plobsing can you shove it into an int of sufficient size?
03:07 Coke a Rational of Unusual Size?
03:08 tcurtis Maybe on some platforms, but not in general.
03:09 tcurtis And I'm not sure of that. Does any current platform use 128-bit longs?
03:12 plobsing tcurtis: I don't perceive general struct parameters/returns as a sufficiently common occurance to justify putting in an NCI which is documented as 80/20. I would consider a special cases of "doulbe complex" and friends.
03:12 plobsing that is to say that *I* am not going to implement the feature, not that someone else won't
03:19 tcurtis plobsing: I don't think it's really necessary. I was just verifying that it wasn't currently possible. If I keep working on this wrapper and decide the complex number functions are important enough(and not possible to provide well enough in Parrot itself), I'll write a wrapper for GSL that takes and returns pointers to them instead of passing them by value.
03:21 plobsing tcurtis: if I push my plans for changes to signatures through, you could pass the real and imaginary parts by reference as doubles and then not have to wory about allocating
03:21 plobsing NCI currently doesn't support pass by reference very well, which is an important feature
03:22 plobsing that might not hit 'till the summer though, so if you want something now, returning pointers is the way to go
03:37 tcurtis Alright. Thanks.
04:07 Andy joined #parrot
04:13 dukeleto tcurtis: did you mention GSL and parrot ? I am interested in working on that as well
04:18 tcurtis dukeleto: I'm in the process of lazily(by which I mean slowly) writing a plain wrapper for the bits that aren't complicated to do with NCI.
04:22 jsut_ joined #parrot
04:34 dukeleto tcurtis: the special function subsystem has the simplest function signatures
04:34 dukeleto tcurtis: i used SWIG to write Math::GSL, the Perl 5 wrapper to GSL. It is still a work in progress
04:39 uniejo joined #parrot
04:40 tcurtis The special functions are actually what I'm working on right now, dukeleto.
04:52 dukeleto tcurtis: then you are on the right track :)
04:53 dukeleto tcurtis: The test suite here may be of use to you http://search.cpan.org/~leto/Math-GSL-0.20/
04:55 alexn_org joined #parrot
04:56 tcurtis Indeed, it will. Thank you.
05:09 Ryan52 joined #parrot
06:05 fperrad joined #parrot
06:19 fperrad_ joined #parrot
06:43 cotto Has Nat been around?
06:43 JimmyZ joined #parrot
06:44 cotto seen nat
06:44 purl nat was last seen on #sao-paulo.pm 52 days, 3 hours, 54 minutes and 34 seconds ago, saying: Nao sei manter dois servers abertos  [Feb 23 02:49:34 2010]
06:54 aukjan joined #parrot
07:00 hicx174 joined #parrot
07:08 rt7 joined #parrot
07:43 iblechbot joined #parrot
08:14 pjcj_ joined #parrot
08:30 * moritz thinks he has a different IRC nick
08:33 cotto fascinating.  There appears to be another Christoph in here.
08:33 moritz it's quite a common name
08:33 cotto I guess that wouldn't be so unusual if I hadn't spent most of my life in the US.
08:33 moritz (at least in .de)
08:33 cotto yeah
09:12 dalek parrot: r45705 | cotto++ | branches/profiling_testing:
09:12 dalek parrot: yak sufficiently shaved; branch no longer needed
09:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45705/
09:15 iblechbot joined #parrot
09:18 rt7 joined #parrot
09:19 GeJ servus.
09:22 sorear what's the correct tool for reading docs/**/*.pod?  perldoc and grok both have trouble
09:25 moritz sorear: there's a HTML version somewhere on parrot.org...
09:26 GeJ perldoc should do. maybe the book is in Pseudo Pod, nut the rest should be standard pod.
09:27 GeJ I seem to remember I had sent a patch to fix pod based on a error I had while running some tests.
09:28 sorear GeJ: what is parrot pod?
09:29 darbelo sorear: You mean Pseudo POD?
09:29 sorear no
09:30 sorear I misread
09:30 sorear I know what Pseudo Pod is
09:30 sorear but I read Parrot Pod
09:49 clinton joined #parrot
09:55 rt7 joined #parrot
09:56 darbelo joined #parrot
10:00 sorear there's an interesting impedence mismatch between P5 "hv_iternext sometimes returns NULL" and Parrot "you can always ask an iterator if it has a next element"
10:01 dalek parrot: r45706 | fperrad++ | trunk/config/auto/arch.pm:
10:01 dalek parrot: [win32] fix the following error on Windows
10:01 dalek parrot: 'uname' is not recognized as an internal or external command, operable program or batch file.
10:01 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45706/
10:04 GeJ sorear: t/codingstd/pod_syntax.t seems to check POD syntax for all files in MANIFEST*
10:05 GeJ I'd go with standard pod in docs/*/*.pod
10:12 AndyA joined #parrot
10:25 lucian joined #parrot
10:34 rt7 joined #parrot
10:47 rt7 joined #parrot
11:49 bacek aloha
11:51 darbelo o/
11:55 bacek \o
11:58 khairul joined #parrot
11:59 whiteknight joined #parrot
12:02 whiteknight good morning, #parrot
12:03 rt7 joined #parrot
12:03 bacek Good morning, Mr. Wit^W^W^W^W, aloha whiteknight
12:06 whiteknight aloha, bacek
12:12 dalek parrot: r45707 | bacek++ | branches/compact_pool_revamp:
12:12 dalek parrot: Branch for expirementing with compact_pool optimisation
12:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45707/
12:15 tetragon joined #parrot
12:26 rurban joined #parrot
12:27 rurban Hi! Is parrot now installable? (can languages be made without parrot source dir)
12:28 moritz rurban: yes. Rakudo has been doing that for a long time
12:28 rurban AFAIK rakudo downloads its own parrot. pipp cannot do that
12:29 moritz rurban: that's only an option - I personally don't use it
12:29 rurban ok, I'll try again to release a 2.0.0 on cygwin so
12:29 bacek rurban, this is optional behaviour.
12:30 bacek rurban, why not 2.2.0?
12:30 rurban stable 2.0, testing 2.2
12:30 rurban soon 2.3
12:30 rurban current stable is 0.8 (still with my installable patches, which were rejected).
12:31 rurban subsequent releases without my patches all failed to use other languages besides rakudo
12:36 rurban So far none of my fixes were applied. I had to fix it again. Lame. http://code.google.com/p/cygwin-rurba​n/source/browse/trunk/release/parrot
12:42 rt7 joined #parrot
12:47 darbelo FWIW, It's the first time I've seen that repo, and I've been hanging here for over a year now.
12:48 darbelo My guess is that you need a better publicist ;)
12:49 rurban I stopped fixing parrot over a year ago
12:49 rurban This is just for the official cygwin packages.
12:49 Coke rurban: hey!
12:50 rurban hey
12:50 Coke how goes/
12:50 rurban gerd asked me update the cygwin packages, so I'm trying again. But I'm skeptical
12:51 Coke hopefully there has been some improvement since 0.8
12:51 Coke I should really try to get a macport put together after 2.3 comes out.
12:51 Coke (well, try now so that I /can/ for 2.3)
12:53 rurban I had a ready 1.4 package but the needed patches were immense, so I didn't release it. They were rejected by some architect of yours.
12:54 rurban 2.0: t/tools/pgegrep.t Failed tests:  2-10 (Operation not supported)
12:56 Coke I presume that's an issue with how that file is exec'ing out to pgegrep.
12:57 Coke Is the first test succeeding?
12:59 rurban_ joined #parrot
13:12 rt7 joined #parrot
13:15 rurban So rakudo #26 Amsterdam (201002) matches parrot 2.0?
13:16 Coke rurban: 2.1.0
13:16 darbelo I think that's off by one.
13:16 Coke looks like 25 was 2.0
13:17 Coke http://rakudo.org/node/63 vs. http://rakudo.org/node/64
13:17 rurban parrot 2.0 released on 20.1, rakudo 25 (201001) on 2.1.
13:17 Coke (they're keying off monthly releases still, not just "stable" ones.)
13:18 rurban I see. you are right.
13:18 Coke jan 19 and feb 01, looks like, yes.
13:25 rurban unpatched rakudo #25 /usr/bin/parrot.exe  -o perl6_s1.pbc perl6.pir error:imcc:syntax error, unexpected '\n', expecting '(' in file 'perl6.pir' line 29
13:28 rurban Is there a rakudo irc channel somewhere?
13:28 darbelo #perl6 ?
13:28 purl #perl6 is at irc.freenode.net.
13:28 rurban thanks
13:35 rurban No suppot on perl6. rakudo-2010.02 says Parrot revision r44147 required (currently r0). rakudo-2010.03 says Parrot revision r44954 required (currently r0). Looks like again no chance for updates.
13:41 darbelo You can just write 0 into build/PARROT_REVISION
13:41 pmichaud TT #770 could really use some love.
13:42 ruoso joined #parrot
13:42 pmichaud the released versions of Rakudo also check Parrot version numbers, not just svn revision numbers.
13:44 pmichaud so if Rakudo is complaining about the Parrot revision, it's because the Parrot executable isn't giving a good parrot version number back
13:45 darbelo pmichaud: You should poke Coke about TT #770 (and maybe TT #584). He seems to have gotten stuck with the 'website wrangler' hat.
13:46 Coke darbelo: HEY.
13:46 darbelo Oh, there he is.
13:46 Coke I don't actually have any privs on the ftp box. Please see particle or allison. (maybe chromatic?)
13:47 darbelo So, ftp wranglers wear a different hat? I didn't know that.
13:47 Coke the ftp box is a different box than, say, the docs.parrot.org box.
13:48 particle coke: gimme your ssh pubkey, and i'll fix
13:48 Coke msg particle ..... you're one step ahead of me.
13:48 purl Message for particle stored.
13:48 darbelo TT #584 seems to be on the website side of things, rahter than ftp.
13:48 rurban 2.2.0  ./parrot.exe -o runtime/parrot/library/random_lib.pbc runtime/parrot/library/random_lib.pir error:imcc:syntax error, unexpected STRINGC, expecting '(' ('"_last_seed"') in file 'runtime/parrot/library/random_lib.pir' line 14
13:48 rurban Known error?
13:49 pmichaud rurban: what does "parrot_config VERSION"  report?
13:49 Coke rurban: you're getting that during the /build/ ?
13:50 pmichaud I suspect there's an older version of Parrot getting in the way somewhere.
13:50 rurban parrot_config VERSION 2.0.0 (in path). build dir: ./parrot_config VERSION 2.2.0
13:50 pmichaud that's a problem
13:50 pmichaud rakudo #27 is probably seeing the 2.0.0 version in the path
13:51 pmichaud and thus it reports "insufficient parrot revision"
13:51 particle coke has access now.
13:52 pmichaud when building Rakudo, you can specify --parrot-config={path_to_parrot_config}   to explicitly tell Rakudo which parrot to use to build with.
13:52 pmichaud if you don't specify, it just uses whatever parrot_config it happens to find.
13:52 rurban First I'm only trying to build parrot :)
13:53 pmichaud I have to leave for a couple of hours... bbl.
13:53 rurban This is a new failure btw. didn't happen with 2.0
13:53 pmichaud bbl
13:54 rurban I've added to my private build script check
13:55 rurban Coke: yes. at random_lib.pbc with older installed parrot
13:56 rurban I just deleted /usr/include/parrot and /usr/lib/libparrot.dll.a. These were the prev. known conflicts
13:56 Coke didn't happen with 2.0 because you didn't have a previous release installed, no doubt.
13:56 Coke (did you?)
13:56 rurban I added now /usr/bin/parrot_config also
13:57 rurban I had an old 1.4.0 installed when I build parrot-2.0.0 I think so.
13:57 Coke the _config shouldn't matter to the build,  but as pmichaud said, that's the one rakudo's going to find.
13:57 Coke huh.
13:57 rurban No problem. I just patched it away.
13:57 Coke hokay.
14:00 Coke darbelo: for throwing me under the bus, you get to verify that #770 is fixed.
14:01 * darbelo gets on the nearest bus, hoping to escape.
14:02 darbelo ftp://ftp.parrot.org/pub/parr​ot/releases/supported/2.0.0/
14:02 darbelo Looks fine to me.
14:03 Coke now make sure the all the links still work, we're not advertising stable anywhere... =-)
14:03 darbelo Also, TT #584 is still an issue.
14:05 darbelo Coke++ # New hat ;)
14:06 dalek TT #770 closed by coke++: urls for "supported releases" say "stable"
14:06 dalek TT #770: http://trac.parrot.org/parrot/ticket/770
14:07 rurban I know know where it is failing. runtime/parrot/library/random_lib.pbc is not any Makefile.
14:07 rurban /not in any/
14:07 rurban A forgotten (and rotten) target
14:08 rurban I deleted it
14:10 iblechbot joined #parrot
14:12 NordQ joined #parrot
14:14 NordQ joined #parrot
14:14 Coke darbelo: fixed.
14:14 dalek parrot: r45708 | coke++ | trunk/docs/project/release_manager_guide.pod:
14:14 dalek parrot: TT # 770 - stable vs. supported
14:14 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45708/
14:14 dalek parrot: r45709 | coke++ | trunk/DEPRECATED.pod:
14:14 dalek parrot: s/stable/supported/
14:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45709/
14:15 dalek parrot: r45710 | fperrad++ | trunk (3 files):
14:15 dalek parrot: [TAP] some fixes
14:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45710/
14:15 dalek parrot: r45711 | coke++ | trunk/docs/project/release_manager_guide.pod:
14:15 dalek parrot: link to the ftp file, not the ftp dir.
14:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45711/
14:16 darbelo Coke++
14:16 patspam joined #parrot
14:20 NordQ joined #parrot
14:22 NordQ joined #parrot
14:23 dalek TT #584 closed by coke++: ftp download links to should point to actual file...
14:23 dalek TT #584: http://trac.parrot.org/parrot/ticket/584
14:24 bubaflub joined #parrot
14:35 cognominal joined #parrot
14:37 Coke gsoc rant. i want "show me everything I haven't voted on"
14:40 particle coke: good idea, i suggest submitting to the melange mailing list/bug tracker/whatever
14:41 dalek primitivearc: c5d3fc1 | (Stefano Dissegna)++ | src/pmc/arc (2 files):
14:41 dalek primitivearc: custom destroy in sym & cons PMCs
14:41 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/c5d3fc17ca68eab1fe1a5a7f52f50c1cb014ca42
14:42 dalek primitivearc: ba9260d | (Stefano Dissegna)++ |  (9 files):
14:42 dalek primitivearc: adapted to latest parrot
14:42 Coke heh. I also cannot vote "no score". =-)
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/ba9260d6b5034b33dde304b5c1fe628e9b60686d
14:42 dalek primitivearc: 785d821 | (Stefano Dissegna)++ |  (2 files):
14:42 dalek primitivearc: fixed 'iso to work with dotted lists, fixed 'type to treat Sub and MultiSub as 'fn
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/785d821e0f07894c9619e1d217bab452bb35f571
14:42 dalek primitivearc: b3d11eb | (Stefano Dissegna)++ |  (2 files):
14:42 dalek primitivearc: implemented 'msec
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/b3d11ebe3c8e5f0d6a4fdb4a8ae9faf9559c94e7
14:42 dalek primitivearc: 4af5251 | (Stefano Dissegna)++ | compiler/ (2 files):
14:42 dalek primitivearc: alpha-conversion, 'let handled by collect-fns-and-consts, started compile-let
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/4af5251e8b4ec77ba62e2e16910c420d3e5f21d4
14:42 dalek primitivearc: 7c4d669 | (Stefano Dissegna)++ | compiler/comp.arc:
14:42 dalek primitivearc: 'let compilation
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/7c4d6692342df8b63db104437174330b8286ef5a
14:42 dalek primitivearc: b7b5ca4 | (Stefano Dissegna)++ | compiler/comp.arc:
14:42 dalek primitivearc: fixed bug in arg-names, fixed bug in des-arg
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/b7b5ca4848095e4fdaa4bcc022d399a9deb3e93f
14:42 dalek primitivearc: c726bd8 | (Stefano Dissegna)++ |  (2 files):
14:42 dalek primitivearc: added 'caar to boot.arc
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/c726bd804f59714cd1113fe83fb292d45df672dc
14:42 dalek primitivearc: 7dfc336 | (Stefano Dissegna)++ | compiler/comp.arc:
14:42 dalek primitivearc: direct access to local vars instead of find/store_lex
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/7dfc336cd80f591b2762d0f7fd7b69acfd328d39
14:42 dalek primitivearc: 974b568 | (Stefano Dissegna)++ |  (10 files):
14:42 dalek primitivearc: adapted to last Parrot, fixed some bugs, added LICENSE file, added installation instructions
14:42 Coke AIGH.
14:42 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/974b5685ed753f738f22122186602ab55466ea28
14:46 particle well, it looks like primitivearc is almost feature complete, so we shouldn't get too many more of those :)
14:46 particle http://github.com/stefano/pri​mitivearc/blob/master/README
14:47 dalek primitivearc: 5795b49 | (Stefano Dissegna)++ | INSTALL:
14:47 dalek primitivearc: fixed error in INSTALL
14:47 dalek primitivearc: review: http://github.com/stefano/primitivearc/comm​it/5795b492c2670fa8d62becef2d3abd971696d5ea
14:51 Andy joined #parrot
14:52 davidfetter joined #parrot
15:01 bubaflub primitivearc?
15:02 bubaflub welp, guess purl doesn't know.  i'm going to go read the readme
15:02 darbelo teh horrors!
15:02 bubaflub i know, right?
15:02 bubaflub research on my own... how outdated
15:04 darbelo There should be computers to do that for you.
15:05 bubaflub when i ask my snarky coworker questions sometimes he just puts a link to lmgtfy.com
15:14 particle purl, primitivearc is a primitive arc compiler for parrot or http://github.com/stefano/primitivearc/
15:14 purl OK, particle.
15:20 dalek parrot: r45712 | bacek++ | branches/compact_pool_revamp/examp​les/benchmarks/stress_strings.pir:
15:20 dalek parrot: Add GC strings stress test.
15:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45712/
15:20 dalek parrot: r45713 | bacek++ | branches/compact_pool_revamp/src/gc/gc_ms.c:
15:20 dalek parrot: Call compact_pool after gathering all live objects.
15:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45713/
15:20 dalek parrot: r45714 | bacek++ | branches/compact_pool_revamp (3 files):
15:20 dalek parrot: Initial implementation of Memory_Blocks skip list for compact_pool
15:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45714/
15:23 darbelo That sounds potentially fast.
15:29 bacek darbelo, it's only potentially...
15:29 darbelo Awwww.
15:29 bacek purl, (2535375580 - 2497491372) / 2535375580 * 100
15:29 purl 1.49422469392089
15:30 bacek about 1.5% atm
15:31 darbelo 1% is better than nothing.
15:31 darbelo And, if you collect a 100 of those you are done.
15:31 bacek purl, 1 - 0.99**100
15:32 purl 0.633967658726771
15:32 bacek heh
15:32 bacek about 35% improvements after collecting 100 of them :)
15:33 darbelo :)
15:33 moritz is that on top of the immutable strings?
15:33 bacek moritz, trunk
15:34 darbelo And as far as I'm concerned any improvement is an improvement.
15:34 moritz aye
15:36 bacek OTOH, pure performance of compact_pool is better by about 15%
15:36 dalek parrot: r45715 | bacek++ | branches/compact_pool_revam​p/src/gc/alloc_resources.c:
15:36 dalek parrot: Use more presize calculation of used memory
15:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45715/
15:36 bacek purl, (331-293)/331*100
15:36 purl 11.4803625377643
15:36 bacek 11 actually
15:37 darbelo Still nice.
15:39 bacek I do need faster way of calculating blocks used amount...
15:41 rt7 joined #parrot
15:43 darbelo Lies are pretty much O(1) for that purpose ;)
15:43 bubaflub oh sure, darbelo - lying might be computationally quicker but it requires more memory
15:44 darbelo bubaflub: Not if the lie is "I'm not using any."
15:45 bubaflub touche
15:45 darbelo Heck that even has the benefit of becomin true on the next compaction run.
15:46 darbelo We might lose some data in the process, but it's unlikely to be important data anyway ;)
15:46 moritz ah. Now I know why rakudo dies when you do too many numeric operations
15:47 khairul left #parrot
15:49 darbelo "Dude! All this math is *killing* me."
15:51 davidfetter "Math class is tough!"
15:52 TimToady MJD#11963 It's easy to get the *wrong* answer in O(1) time.
15:52 davidfetter heh
15:52 tcurtis joined #parrot
15:54 darbelo int getRandomNumber() { return 4; }
15:55 particle heck, even that's right sometimes.
15:58 bacek purl, (1542526910 - 1523515849) /1542526910 * 100
15:58 purl 1.23246219412795
15:58 theory joined #parrot
16:01 * Coke throws together an mjd script to join in the fun.
16:03 rurban Will upload an official cygwin parrot-2.2.0-1 soon, rakudo is fine
16:10 theory joined #parrot
16:10 Coke woot.
16:11 Coke any patches needed for parrot?
16:15 davidfetter Coke, um, the ones that sandbox it? ;)
16:15 Coke davidfetter: ?
16:15 davidfetter you asked about needed patches
16:15 Coke in re: < rurban> Will upload an official cygwin parrot-2.2.0-1 soon
16:25 davidfetter ah
16:42 dalek parrot: r45716 | fperrad++ | trunk/runtime/parrot/library/osutils.pir:
16:42 dalek parrot: [osutils] implement tempdir & tmpdir
16:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45716/
16:42 dalek parrot: r45717 | fperrad++ | trunk/runtime/parrot/library/TAP/Harness.pir:
16:42 dalek parrot: [TAP] do first archive
16:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45717/
16:57 cotto_work good morning, robots
16:59 darbelo Greetings, meatbag.
17:00 cotto_work As a robot, I find that remark offensive.
17:11 rurban released. sigh
17:14 Coke rurban: got a url? dukeleto can throw a tweet out and we can put a link on parrot.org
17:15 rurban wait a bit. we'll have to wait for the mirrors
17:15 Coke ok. feel free to ping me here or via email. Thanks.
17:16 rurban I will the announcement CC to perl6-announce
17:17 jan joined #parrot
17:18 Coke I just removed "maxl" from parrot-dev. in case he asks.
17:18 Coke rurban: ah, perfect, I'll grab it from there.
17:18 Coke rurban++
17:19 dukeleto rurban++
17:19 rurban It's quite difficult to formulate the huge changes. :)
17:20 Coke (maxl would know I removed him, but his removal bounced. no clue why the mailing list isn't automagically pulling him.)
17:21 Coke feedback welcome on parrot-dev post about trac tickets.
17:38 rurban when is pbc_compat planned? 3.0?
17:38 Andy joined #parrot
17:43 Coke rurban: it's still on the list. I don't think we have enough manpower to plan out past the next supported release.
17:44 rurban http://trac.parrot.org/parrot/ticket/598 ?
17:44 Coke (well, that one's in a week. I mean 2.6)
17:44 rurban 3.0 is my last knowledge about it
17:44 Coke yah. but anything later than 2.6 is basically "not right now", practically speaking.
17:45 Coke +/or realistically.
17:45 rurban Can I summarize that it got not faster, massive step in passing perl6 spec tests and many more features?
17:46 Coke er, are you summarize parrot o rp6?
17:46 Coke er, parrot or rakudo.
17:46 rurban yes.
17:46 rurban very briefly, from 0.8 to 2.2
17:46 Coke (and back from ... 0.8?)
17:46 dalek parrot: r45718 | petdance++ | trunk/src (2 files):
17:46 dalek parrot: updating annotations
17:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45718/
17:46 rurban That would be a novel
17:47 Coke I would tend not to bother summarize a "no change", but otherwise, sure. You can point to the parrot NEWS file for specifics.
17:48 Coke http://trac.parrot.org/parrot/browser/trunk/NEWS works.
17:48 rurban I pointed to http://www.parrot.org/category/news/news
17:48 Coke yah, that's prettier.
17:53 tcurtis Coke: would you consider outdated documentation a bug?
17:59 ttbot Parrot trunk/ r45720 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/266840.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
18:02 dalek parrot: r45719 | petdance++ | trunk/src/string/encoding/ucs2.c:
18:03 dalek parrot: flagging unused args
18:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45719/
18:03 dalek parrot: r45720 | petdance++ | trunk/src/string/encoding (2 files):
18:03 dalek parrot: flagged unused vars
18:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45720/
18:03 Coke tcurtis: yes, broken documentation is a bug.
18:03 tcurtis joined #parrot
18:03 Andy joined #parrot
18:09 darbelo That's why not writing documentation is a way of having less bugs ;)
18:10 Coke sadly, missing documentation is also a bug.
18:10 Coke (unlike a missing feature, which is a todo.)
18:12 * darbelo realizes that he can't win the War on Bugs.
18:16 tcurtis Documentation is also a feature, though, so missing documentation must be some kind of half-todo/half-bug chimaera.
18:16 purl okay, tcurtis.
18:16 tcurtis I
18:17 tcurtis I'm tempted to tell purl to forget that, but I think it might be more fun to leave it.
18:17 darbelo purl: Documentation?
18:18 purl Documentation is => a core attribute of attributes or a feature, though, so missing documentation must be some kind of half-todo/half-bug chimaera.
18:25 jan_ joined #parrot
18:30 joeri joined #parrot
18:43 * Coke updates his build script for corevm/coretest first to be a canary.
18:48 rt7 joined #parrot
18:49 chromatic joined #parrot
18:49 Coke trac people - how can I close a trac from svn?
18:52 Coke ah. we don't have a post-commit hook for that. isn't that one of the "big reasons" to switch to trac?
18:53 cotto_work Let's get it then.
18:56 cotto_work msg cotto http://utcc.utoronto.ca/~cks/space/​blog/programming/HowToWriteToStderr
18:56 purl Message for cotto stored.
18:57 plobsing joined #parrot
18:58 Coke msg coke install a post-commit hook for manipulating tickets via svn commits.
18:58 purl Message for coke stored.
18:58 Coke whee.
18:59 darbelo msg darbelo Enough with the self-referentia msgs!
18:59 purl Message for darbelo stored.
18:59 darbelo ;)
19:03 particle msg purl messages erase
19:03 purl Message for purl stored.
19:03 Ryan52 joined #parrot
19:03 cotto_work msg purl Hey darbelo, what about this?
19:03 purl Message for purl stored.
19:22 cotto_work we need to build something called ytrace: http://multimedia.cx/eggs/alphabet-of-tracing/
19:24 cotto_work Maybe khairul's project should take that name.
19:24 bubaflub cotto_work: agreed.
19:24 bubaflub it could just do nothing and print out "Why would you want to trace that anyways?"
19:42 dalek parrot: r45721 | fperrad++ | trunk/runtime/parrot/library/TAP (2 files):
19:42 dalek parrot: [TAP] add meta.yml in archive
19:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45721/
19:42 chromatic cc: /home/chromatic/dev/gitpar​rot/src/install_config.o: No such file or directory
19:42 chromatic linking failed
19:43 ttbot Parrot trunk/ r45721 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/266934.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
19:43 chromatic That's parallel make install.
19:43 chromatic The second time I run it, things work -- a missing dependency?
19:44 cotto_work I've seen parallel build failures recently too.
19:46 Coke anyone run checkdepend recently?
19:46 ttbot Parrot trunk/ r45722 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/266943.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
19:46 Coke also, I tend to do make -j3 ; make install
19:58 dalek parrot: r45722 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
19:58 dalek parrot: [distutils] use TAP/Harness library for step 'smoke' (instead of prove --archive)
19:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45722/
20:11 brooksbp_ joined #parrot
20:12 ttbot Parrot trunk/ r45723 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/267018.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
20:15 dalek parrot: r45723 | fperrad++ | trunk/runtime/parrot/library/TAP (2 files):
20:15 dalek parrot: [TAP] refactor with newclosure instead of clone (see TT#1550)
20:15 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45723/
20:20 allison joined #parrot
20:22 allison so, on linux, Parrot is still building libparrot.so.2.2.0 with a symlink libparrot.so, but it only installs libparrot.so (not a symlink).
20:23 allison (it's messing up the packaging)
20:24 allison I don't know when the change was made or why, and trying to figure out if I can change it back.
20:27 particle colud be a bug introduced during recent makefile changes
20:28 particle *could
20:30 ttbot Parrot trunk/ r45724 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/267063.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
20:31 dalek parrot: r45724 | fperrad++ | trunk/t/library/tap_parser.t:
20:31 dalek parrot: [TAP] now in test, see r45723
20:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45724/
20:34 Coke "recent makefile changes" == "coke's fault"
20:34 Coke I'm just changing build stuff, fwiw. =-)
20:35 particle hell, it could be gamma rays. :P
20:36 chromatic msg bacek One of the Rakudo problems is this op     substr pkgname, 1, 1, '' -- see src/glue/contextuals.pir line 12
20:36 purl Message for bacek stored.
20:38 Coke opbots, trust gerd
20:38 slavorg Ok
20:38 slavorgn Ok
20:39 Coke seen allison?
20:39 purl allison was last seen on #parrot 14 minutes and 34 seconds ago, saying: I don't know when the change was made or why, and trying to figure out if I can change it back.
20:43 Coke oooh, allison is a luminary!
20:43 Coke (yapc na 2010 marketing FTW!)
20:44 sorear plobsing: I think --hash-seed is broken in trunk, no matter what value I pass I get a segfault
20:44 sorear not passing --hash-seed at all results in intermittant segfaults (50%)
20:46 sorear however in the second case the crashes are at the end, and in the former case they are at the beginning
20:46 Coke sorear: running what code?
20:47 sorear Coke: nt/call-sv.t from the blizkost test suite
20:47 sorear I've always thought it was destruction order hell
20:48 sorear but plobsing just showed me #1499
20:49 theory joined #parrot
20:51 plobsing sorear: nopaste the output(s) ?
20:51 cotto_work joined #parrot
20:52 * allison luminesces
20:53 plobsing sorear: what values are you passing to --hash-seed? are they low? passing the same value as current localtime should give the same results as not using --hash-seed
20:53 sorear plobsing: http://pastie.org/923803
20:54 sorear passing the current localtime has no effect - still instant crash
20:54 plobsing that does sound broken
20:55 cotto_work crud.  I thought I fixed that.
20:55 cotto_work time to write some tests
20:56 plobsing I thought you did too
20:59 rurban_ joined #parrot
21:05 Coke rurban: hey, you're back. =-)
21:12 Coke allison: http://twitter.com/merlyn (last few tweets)
21:15 TiMBuS joined #parrot
21:17 rt7 joined #parrot
21:49 Whiteknight joined #parrot
21:53 dalek parrot: r45725 | chromatic++ | branches/immutable_strings_part1/src/string/api.c:
21:53 dalek parrot: [string] Fixed a POD typo.
21:53 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45725/
22:04 Austin joined #parrot
22:04 dalek TT #1558 created by kurahaupo++: Request wiki edit-access
22:04 dalek TT #1558: http://trac.parrot.org/parrot/ticket/1558
22:09 * Austin sings, "Meatwad make the money, see. Meatwad get the honeys, G."
22:17 Whiteknight yeah yeah, check check it.
22:18 Whiteknight aqua teen hunger force, number one in the hood, G
22:33 plobsing cotto_work: it appears "--hash-seed %d" got broken when "--hash-seed=%d" got implemented in r44998
22:34 Austin Because parsing arguments is harder than it looks, and it's certainly not a problem anyone has solved before...
22:34 plobsing Austin: simple brain-o. you need to null check *before* you increment
22:35 Austin See previous comment.
22:36 sorear Austin: C programmers don't do libraries
22:36 Austin Heh.
22:36 Austin Libraries are for cobol coders.
22:37 Austin Besides, parrot isn't allowed to depend on any other software.
22:38 sorear like, oh, Test::Harness
22:38 Austin Once we get everything else working, we're going to implement a set of assemblers for various platforms. Then parrot will be a fully self-hosted cross-compiler, and we get rid of that nasty gcc requirement.
22:39 Austin It'll take one hundred and eleventy seven years to compile, but parrot will be totally free of dependencies...
22:39 plobsing sorear: if you want to play around with hash-seed without updating parrot, you can use --hash-seed=12345678 which appears to be working
22:40 sorear my parrot is up to date wrt dalek
22:40 sorear did you just push something
22:40 plobsing I'm still testing
22:41 kurahaupo joined #parrot
22:42 plobsing committed
22:42 sorear yeep
22:42 sorear parrot --hash-seed=4389efbd /usr/local/lib/parrot/2.2.​0-devel/library/nqp-rx.pbc nt/callsv.t
22:42 sorear crashes every time
22:42 sorear 4389efbc works every time
22:42 dalek parrot: r45726 | plobsing++ | trunk/src/main.c:
22:42 dalek parrot: fix "--hash-seed 12345678"
22:42 dalek parrot: check for null *before* incrementing pointer
22:42 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45726/
22:42 sorear why is the hash seed affecting global destruction order? :/
22:44 plobsing sorear: if you are seeing 0s and 0x80000s in vtables, your parrot is already borked, so you're lucky to be *getting* to global destruction at all
22:45 sorear plobsing: my initial diagnosis was that the values were memory poisoning of freed vtables.
22:45 sorear I seem to be completely wrong, though
22:45 ttbot Parrot trunk/ r45726 i386-linux-thread-multi make error http://tt.taptinder.org/file/cmdout/267176.txt ( http://tt.taptinder.org//bui​ldstatus/pr-Parrot/rp-trunk/ )
22:45 sorear which puts the entire global destruction order theory into doubt
22:45 sorear there are existing crashes which don't manifest with any vtable insanity
22:47 plobsing arg. trunk is broken. consting--
22:51 tetragon joined #parrot
22:58 dalek partcl-nqp: fdf0569 | Coke++ | src/Partcl/commands/string.pm:
22:58 dalek partcl-nqp: remove commented out debug output
22:58 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/fdf05699d61dbddcd17ddf59a660eac0c5f68f78
22:58 dalek partcl-nqp: 8854c2c | Coke++ | CREDITS:
22:58 dalek partcl-nqp: Add Austin to CREDITS, other minor updates.
22:58 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/8854c2ca5cda0ddb8d8f913830f9fc6910bf12f9
22:58 dalek partcl-nqp: ec04d4f | Coke++ |  (27 files):
22:58 dalek partcl-nqp: whitespace and sub reordering only.
22:58 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/ec04d4f69a8cfd87536ee801dbd74382840e17de
22:58 dalek partcl-nqp: f2257d7 | Coke++ |  (3 files):
22:58 dalek partcl-nqp: update [set] to recognize array varnames.
22:58 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/f2257d7024f056c13d23a505c10f099c75102bad
22:58 dalek partcl-nqp: b27eb09 | Coke++ |  (2 files):
22:59 dalek partcl-nqp: First pass at converting [array] to the command-dispatch of [string]
22:59 dalek partcl-nqp: review: http://github.com/partcl/partcl-nqp/commit​/b27eb0998992a72b3c2d886d91ba71bc50538608
22:59 dalek parrot: r45727 | plobsing++ | trunk/src/string/encoding/fixed_8.c:
22:59 dalek parrot: headerizer
22:59 purl well, headerizer is making me happy
22:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/45727/
23:00 ruoso joined #parrot
23:02 plobsing sorear: how can I get that test case to work? I seem to be getting "
23:02 plobsing Class 'P5Interpreter' not found"
23:02 plobsing a lot
23:05 plobsing I'm interested in that test case, because it shows that parrotbug without waiting for 5 minutes of rakudo spectests to scroll by
23:07 sorear plobsing: that test case doesn't seem to be exactly the same issue
23:07 plobsing :-(
23:07 sorear it's just ordinary destruction ordering causing SvREFCNT_dec after perl_destruct
23:08 sorear no vtable wrecking
23:08 sorear I had a problem earlier which caused vtable wrecking, resulting in a crash from inside Parrot_pmc_gc_unregister
23:08 sorear the AddrRegistry VTABLE was getting smashed
23:09 sorear alternatively, the ->vtable field of the global AddrRegistry was pointed somewhere random
23:09 plobsing sorear: is this still a problem?
23:12 chromatic That sounds a lot like the "Why is Parrot crashing when I call Parrot_pmc_unregister() from DESTROY?" question.
23:12 sorear chromatic: indeed
23:12 chromatic Did you stop doing that?
23:13 sorear No
23:13 chromatic Then stop doing that.
23:13 sorear it has, however, stopped being a problem
23:13 sorear and I can't find out why
23:13 sorear or rather, I have no record of why
23:14 chromatic That's easy.  It's because the order of PMCs within the pools has changed.
23:15 * sorear wonders if a patch to implement simplest-thing-that-could-possibly-work destruction ordering would be acceptable
23:16 chromatic It's not going to fix your problem.
23:16 sorear tell me what my problem is
23:16 chromatic Stop calling Parrot_pmc_unregister from your destroy VTABLEs.
23:16 kid51 joined #parrot
23:17 sorear Do you have a better idea?
23:17 plobsing destruction ordering of an arbitrary object graph hurts my head
23:17 sorear Removing it with no compensation would introduce a worse bug
23:17 chromatic Then keep it, and keep complaining that you get stupid crashes.
23:19 sorear Nobody is complaining here.
23:19 sorear Try not to take my debugging efforts so personally.
23:20 chromatic Try to take debugging advice from people who know the code, who've debugged many bugs like this before, and have actually fixed bugs in the code.
23:20 chromatic Or not, either way.
23:20 sorear Introducing a memory leak is not "fixing a bug"
23:21 chromatic I said nothing about introducing a memory leak.
23:21 sorear You keep telling me to remove the one statement which is responsible for freeing my memory
23:21 sorear Why
23:21 chromatic How does Parrot_pmc_unregister free your memory?
23:22 sorear By allowing it to be garbage collected
23:22 chromatic How does calling Parrot_pmc_unregister from your PMC's destroy cause your PMC to be garbage collected?
23:23 sorear You are assuming that my destroy method is unregistering *the same PMC*
23:23 sorear This is wrong
23:23 sorear It is unregistering a different PMC
23:23 plobsing sorear: how many interpreter PMCs do you expect to go through? I would expect them to be long-lived.
23:24 chromatic Why are you registering so many PMCs that are already referrred to by registered PMCs?
23:25 chromatic So that's where W3C lost that extra R in Referer.
23:26 sorear plobsing: this isn't about the interpreters
23:26 sorear chromatic: they aren't referred to by registered PMCs
23:27 sorear there are two types of handles
23:27 sorear P5SV is a Parrot object which holds a Perl 5 reference
23:27 sorear there's also a Perl 5 object which holds a Parrot reference
23:27 sorear suppose the Parrot GC decides to free a P5SV
23:27 sorear my VTABLE destroy calls SvREFCNT_dec
23:28 alexn_org joined #parrot
23:28 sorear SvREFCNT_dec recursively frees an object graph, including a Perl->Parrot reference
23:28 sorear the Perl->Parrot reference destructor - still in the dynamic scope of VTABLE_destroy - has to somehow tell Parrot that there is no longer an external reference to its referent
23:28 sorear is this clear?
23:29 chromatic Is this Perl->Parrot reference destructor a Perl 5 DESTROY or the XS equivalent?
23:29 sorear The XS equivalent
23:29 sorear mg_free
23:29 chromatic I follow so far.
23:30 sorear it could be changed to DESTROY if you think that would help, but it would be a fair amount of work
23:30 sorear Now, Parrot goes into global destruction
23:30 sorear It frees the AddrRegistry
23:30 sorear then it frees the P5SV
23:30 chromatic mg_free should be fine.
23:31 sorear the P5SV goes into Perl and back again
23:31 sorear Parrot_pmc_gc_unregister is called
23:31 sorear but the AddrRegistry is already freed
23:31 sorear crashes right here
23:31 chromatic What types of Perl 5 data structures have this behavior in mg_free?
23:32 sorear Currently the only type of back reference implemented are callbacks, SVf_PVCV
23:33 sorear I plan to extend this to other sorts of Parrot role
23:34 sorear here is my proposal for the Simplest Thing Which Could Work destruction ordering: each vtable gets a destroy_phase field.  Objects with destroy_phase 0 are destroyed immediately, others are queued.  AddrRegistry and Library (we can't dlfree before calling dynpmc destructors) get high destroy_phases
23:34 chromatic Do you know when Parrot global destruction is about to happen?
23:35 sorear No
23:35 chromatic Why not?
23:35 sorear Nobody tells me
23:36 chromatic You don't free a ParrotInterp?
23:36 chromatic Or are you embedding Perl 5 in Parrot?
23:37 sorear I am embedding Perl 5 in Parrot
23:38 chromatic We don't really have a good way to register code to run at the end of the process, either.
23:38 chromatic If we had that...
23:39 chromatic ... you could create a ResizablePMCArray.
23:39 chromatic ... and change your callback creator to store each callback in that RPA.
23:39 chromatic ... and register only that RPA with the AddrRegistry.
23:39 chromatic ... and, at the end of the interpreter, unregister that RPA before global destruction.
23:40 chromatic Would that let you remove Parrot_pmc_gc_unregister from your mg_free code?
23:45 sorear yes, but in name only
23:45 chromatic How so?
23:45 sorear the mg_free code would still have to delete from the RPA
23:45 chromatic I don't see how.
23:45 sorear and so the destruction order dependency would still exist
23:45 chromatic Why would it need to delete from the RPA?
23:45 sorear if it doesn't delete from the RPA, the callback will be retained until the end of the interpreter
23:45 cotto_work blitzkost?
23:46 sorear for 1 .. 1000000 -> $a { perl5_func(-> $b { $a + $b}); }
23:46 sorear this creates a million callbacks but only 1 is live at a time
23:46 sorear cotto_work: yes
23:47 cotto_work where's the code live?
23:47 cotto_work mn.  no t
23:47 sorear github.com/jnthn/blizkost
23:47 cotto_work found it
23:49 chromatic What kind of data structure is the callback?
23:49 Austin blizkost?
23:49 purl blizkost is http://github.com/jnthn/blizkost/tree/master or the last Jonathan's project, an embedding of Perl 5 in Perl 6
23:49 Austin No 't'
23:49 cotto_work blitzkost is blizkost
23:49 Austin blitzkost?
23:49 purl rumour has it blitzkost is blizkost
23:50 cotto_work no, blitzkost is see "blizkost"
23:50 purl okay, cotto_work.
23:50 Austin blitzkost?
23:50 purl somebody said blitzkost was see "blizkost"
23:51 sorear chromatic: The Parrot-side callback is anything which supports VTABLE_does('callable')
23:51 kurahaupo hi
23:51 purl what's up, kurahaupo.
23:51 sorear Ideally it should also implement VTABLE_invoke but I don't actually check that yet. :)
23:51 Austin Morning, Kura.
23:51 kurahaupo Morning.
23:52 chromatic The CallContext PMC marks its sub.  Is that not sufficient to keep the callback alive from the Parrot side, or do you need it to outlast the continuation chain?
23:54 sorear I need it to be live before it is called, as well as during
23:54 sorear If perl5_func somehow triggers the Parrot collector, the callback ought to still be available
23:55 chromatic It should be until the continuation which invoked it gets collected.
23:56 sorear I'm just talking about the callbacks themselves
23:56 sorear The activation records don't need to exist.
23:57 sorear -> $b { $a + $b } in Perl 6 does not create an activation record
23:57 sorear it just returns a sub
23:57 sorear so "activation records" don't figure into this discussion at all
23:57 chromatic Sure, but if that sub gets stored somewhere, it should get marked during GC.
23:58 sorear If it gets stored somewhere in the Parrot heap, sure
23:58 sorear but if the only references to it are from the Perl 5 heap - this is why I need registration
23:58 chromatic Why would there only be references to it from Perl 5?
23:59 sorear perl5_func_which_saves_a_reference(-> { do_something; });
23:59 sorear # look here, I forgot to save a Parrot reference to the pointy
23:59 sorear # I'm about to die

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced