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