#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