Parrot 1.1.0 Released | parrot.org/ | 325 RTs left | Weekly Priority: Remove Deprecated Items
Set by moderator on 28 April 2009.
Coke reads chromatic's send. 00:03
00:07 tetragon joined 00:15 bacek_ joined
bacek_ hi again 00:16
purl oh, you're back!
kid51 Does anyone have any opinion on trac.parrot.org/parrot/ticket/440, i.e., does 'pbc_info' serve any useful purpose? 00:25
rg cotto: it seems like you would want to bump PBC_COMPAT. after svn up, my existing perl6.pbc stopped to work. worked again after rebuild. 00:26
kid51 And, does anyone have complaints/comments about trac.parrot.org/parrot/ticket/577 ?
rg kid51: fyi there's also notfound's pbc_checker.cpp in examples/tools. 00:32
the difference is that pbc_checker.cpp does not use parrot's code, so it tests that the pbc conforms to spec, whereas pbc_{dump,info} is more of an example how to use the same functions parrot uses (or at least that's my guess). 00:34
kid51 rg: Hmm, I didn't know it was a 3-way choice. 00:42
00:42 eternaleye joined
kid51 But if pbc_info ... or any of these executables ... is merely example code, should it really be included in every call to 'make'? 00:42
To my untrained eye, pbc_dump did look useful -- whereas pbc_info did not. 00:43
00:43 Casan joined
rg i haven't really looked at either of them. i guess since the ticket even suggests moving it to examples, that's fine. i really can't say if there's anything to be learned from it. maybe bacek can tell? 00:47
dalek rrot: r38474 | chromatic++ | trunk/docs/book/ch03_pir.pod:
[book] Revised the first quarter of Chapter 3.
00:50
rrot: r38475 | jkeenan++ | trunk/config/gen/makefiles/root.in:
Reformat inline comment to fit in 78-char screen better.
01:19
kudo: r4d7fe56 | pmichaud++ | src/ops/perl6.ops:
Revise d86c014 (NotFound++) a bit so that we're not mixing our types as much.
01:20
mikehh smolder is reporting an error in uploading even though it does so successfully 02:03
rg mikehh: filed a ticket today.
mikehh rg: good - I've been having problems since it went down last weekend and then again this weekend 02:05
02:11 s1n joined
mikehh also if I click on the download link in the report it sends me to an error page 02:14
Error - You shouldn't be here. Consider yourself warned. 02:15
cotto can anyone confirm that the vtinit merge breaks pbc compatibility? 02:17
rg cotto: you mean anyone else than me? 02:18
02:18 petdance joined
bacek_ cotto: it shouldn't break it. 02:19
petdance Im' looking at splint's handling of memory leaks
dalek rrot: r38476 | chromatic++ | trunk/src/oo.c:
[oo] Reduced the number of PMCs created in Parrot_ComputeMRO_C3, which is a
02:21
rg i guess many people here won't keep pbcs around. i only did because my cron job updated parrot for me ;)
cotto bacek_, that's what I'm thinking, but rg's evidence suggests otherwise. 02:32
Hmm. I'll see if pbc from pre-merge can be used post-merge. 02:35
02:35 darbelo joined
rg cotto: i don't think there have been any other significant commits in the previous 8 hours, that's why i'm suspecting the merge. i could be wrong though. 02:37
cotto darbelo, will you want to report at #ps this week?
darbelo I might be a bit late for it, but if I am there I'll do it. 02:39
cotto ok 02:40
I'll consider it your responsibility from this point on, unless you say otherwise. 02:43
darbelo ok 02:45
02:54 janus joined 03:00 janus` joined 03:14 petdance joined
dalek rrot: r38477 | chromatic++ | trunk/src/pmc/class.pmc:
[PMC] Revised MRO generation so that the (relatively expensive C3) MRO

substantially from any parent's MRO. A class with no parents needs no MRO calculation. A class with one parent can borrow its parent's MRO calculation.
03:16
bacek_ cotto: ping 03:19
dalek rrot: r38478 | chromatic++ | trunk/src/oo.c:
[oo] Replaced a method invocation with the equivalent VTABLE invocation when

previous optimizations, Rakudo starts up over 10% faster now.
03:29
cotto bacek_, pong 03:33
bacek_ cotto: I want one more commit or tt528 branch :) 03:40
cotto ?
bacek_ marking vtable functions as static and remove them from headers 03:41
cotto if it works, I don't see the need to make a branch for that (and the vtinit branch was already merged)
bacek_ ok. It doesn't work. Someone calling functions directly. 03:46
cotto That shouldn't be happening anymore. 03:47
03:47 tetragon joined
bacek_ e.g. line 414 in object.pmc 03:48
cotto easy fix 03:50
purl easy fix is just to change the type to Str
bacek_ this one - yes.
src/pmc_freeze.c. lines 39, 43, 1367, 1753
cotto you got it? 03:51
bacek_ what do you mean?
cotto are you going to fix it? 03:52
bacek_ Can do. But I'm at $dayjob now. And going to another meeting... 03:53
cotto ok 03:54
I'll let you get it whenever you can.
afk
dalek rrot: r38479 | petdance++ | trunk (10 files):
Added some more splint instrumentation in the headerizer
04:18
rrot: r38480 | petdance++ | trunk/config/gen/makefiles/root.in:
Ignore the splint warning about str*() functions being reserved
04:47
rrot: r38481 | petdance++ | trunk (2 files):
Parrot_warn() does nothave to have its function result checked
rrot: r38482 | petdance++ | trunk/src/debug.c:
use size_t instead of unsigned int in one place
04:57
rrot: r38483 | allison++ | trunk/docs/pdds/draft/pdd30_install.pod:
[pdd] Cleaning up install PDD, preparing to launch out of draft.
05:00
rrot: r38484 | allison++ | trunk (1 files):
[pdd] Launching install PDD out of draft.
05:03
rrot: r38485 | petdance++ | trunk/config/gen/makefiles/root.in:
working on more splint flags
05:36
Infinoid since we've already released 1.0 and then 1.1, the eventual goal of "Parrot 1.0 release" on www.parrot.org/foundation/grants/nlnet-grant seems a little confusing 05:37
cotto we have a stub security model implementation? 05:41
afk_coke Infinoid: that grant is over.
dalek rrot: r38486 | petdance++ | trunk/src/spf_render.c:
assign characters to characters
05:58
06:20 uniejo joined 06:21 masak joined 06:52 iblechbot joined 06:53 petdance joined, petdance__ joined
dalek kudo: r4d3a38f | (Moritz Lenz)++ | t/spectest.data:
run socket tests, mberendes++
07:14
rrot: r38487 | chromatic++ | trunk/src/pmc/class.pmc:
[PMC] Fixed a compiler warning introduced by accident in r38477.
07:26
rrot: r38488 | chromatic++ | trunk/src/oo.c:
[oo] Removed an unnecessary PMC creation from C3_merge. This is a very modest
07:39
rrot: r38489 | cotto++ | trunk/lib/Parrot/Pmc2c/PMC/default.pm:
[pmc2c] avoid a compiler warning by using an int as a PMC id
07:45
l: rb5782d4 | (Francois Perrad)++ | (2 files):
check duplicated attributes
07:59
08:00 cotto joined 08:17 donaldh joined 08:21 elmex joined 08:44 elmex joined 09:03 HG` joined 09:16 donaldh_ joined 09:29 HG` joined 09:55 fperrad joined 10:14 muixirt joined
muixirt the maximum sub recursion depth is hardwired, will that change? Or is there a command line option to override it? 10:17
moritz muixirt: there was a thread on that by Coke on parrot-dev 10:22
muixirt moritz, ok
moritz muixirt: iirc allison answered that it can be changed by a method call on the interpreter object, or so 10:23
groups.google.com/group/parrot-dev/...bfe2?fwc=1
muixirt the usage info of parrot --help says something about a --jit-core option that seems to be vanished 10:25
a few months ago "./parrot languages/perl6/perl6.pbc did work, but not anymore (for me at least) 10:29
moritz that's because rakudo doesn't live in languages/perl6/ anymore, I guess 10:30
rakudo.org/how-to-get-rakudo 10:32
muixirt yeah i meant languages/rakudo of course :-) 10:33
moritz so, what's wrong then? 10:35
did you update rakudo and did a 'make clean; make' there?
muixirt I get: PackFile_unpack: This Parrot cannot read bytecode files with version 3.34. 10:36
i try a distclean
moritz a clean/realclean/whatever in parrot won't help 10:37
you need to chdir to languages/rakudo
and there
git pull
purl git pull is not slow.
moritz make clean
perl Confingure.pl
make
muixirt i did that (i read the howto) 10:38
moritz then you should be able to run ./perl6 10:39
if that still fails => bugreport
(assuming your parrot is new enough, compared to build/PARROT_REVSION)
muixirt the perl6 executable doesn't accept optimization options (for parrot), right? 10:41
moritz no 10:42
but the error you get indicates that rakudo's and parrot's version don't match
muixirt so running the perl6 executable gives you bad performance 10:43
moritz so does running a parrot without --optimize 10:44
but with optimize it regularly segfaulted for me
muixirt i solved it, i ran make distclean in the parrot dir. and rebuilt it, it now works
moritz great 10:45
muixirt so, your rant about performance is ... premature? ;-) 10:46
moritz how so? 10:48
muixirt switches to #perl6 10:49
bacek good evening 11:05
moritz actually rakudo's 'make spectest' works pretty well with an optimized parrot, I've just tried it 11:14
muixirt what do you mean "by optimized parrot"? proper optimizations options while compiling parrot or executing bytecode? 11:20
11:21 donaldh joined
moritz while compiling parrot 11:22
11:35 HG` joined
jonathan If any Parrot folks fancy some GC debugging (ya rly) then see rt.perl.org/rt3/Ticket/Display.html?id=65396 :-) 11:42
muixirt command line option for parrot like --jit-core or --fast-core vanished, but they are listed in the usage info 11:47
what is the general state of these "cores"? 11:48
moritz I think you can run them with -R $core_name 11:49
moritz recompiles with --jitcapable 11:50
muixirt moritz, the usage info provided by parrot --help and documentation should reflect that 11:52
moritz muixirt: yes 12:00
muixirt: care to open a ticket?
muixirt moritz, *innocent looking* I don't know how ... 12:01
moritz muixirt: trac.parrot.org/parrot/newticket (you have to create an account first) 12:02
12:05 ruoso joined 12:10 davidfetter joined
muixirt moritz, ticket created, please have a look 12:11
12:19 contingencyplan joined
moritz muixirt: looks good, thank you 12:20
12:31 donaldh left
moritz $ ./parrot/parrot -R jit perl6.pbc -c -e '3' 12:39
Segmentation fault
purl (Core dumped)
12:39 rg1 joined
muixirt moritz, :-) 12:40
moritz and 'make testj' in parrot produces lots of errors 12:43
and is sloooow 12:44
muixirt wonders where it stuffed that '3' in
moritz hm?
the line above tries the Perl 6 program which consists of a single digit 12:45
muixirt testj?
purl testj is jit?
moritz testj is jit.
12:45 particle joined
moritz a normale 'make test', but uses the jit runcore 12:45
muixirt if compiled with --jitcapable? 12:46
moritz yes
12:47 Whiteknight joined
muixirt I reckon straighten out the bugs of jit hasn't a high priority 12:48
Whiteknight Tene: Ping 12:52
moritz and probably no fun 12:53
muixirt moritz, what brings me to what Lars Bak said ... :P 12:55
dalek kudo: rd500f20 | jnthn++ | src/pmc/p6invocation.pmc:
More work on P6Invocation. There'll be room for optimization, but this serves well as at least a POC.
12:57
13:01 gryphon joined
Whiteknight Coke: ping 13:16
dalek kudo: ree10f59 | jnthn++ | (2 files):
Method on P6Invocation to check if we have more candidates, and tests for it.
13:20
13:24 Casan joined 13:28 dalek joined 13:34 dalek joined
Infinoid cotto: There. I know this is the 5th time I've said it in the past week and I've yet to be correct, but dalek should work now 13:38
Whiteknight Infinoid++
Infinoid hi Whiteknight
Whiteknight hello
mikehh make -k fulltest - codetest and examples-tests failures - Kubuntu Jaunty (9.04) Amd64 - all others PASS 13:44
Coke Whiteknight: pong 13:46
messages erase
Whiteknight Coke, you can update the list of blogs at planet.parrotcode.org?
Coke As I said earlier, yes.
Whiteknight Robert gave me access to it, but I can't run the updater on this box 13:47
I'm sorry, I didn't know you said that before
mikehh apart from copyright test line length failures in docs/book/ch03_pir.pod and pdd30_install.pod
Tene Whiteknight: pong
Whiteknight Tene: I need the feed URL of your blog posts with the label "Parrot" 13:48
I lost it last night
Coke I think tene already has a blog in there.
moment.
Tene Coke: yes, but it's grabbing everything, not just parrot-related
blogs.gurulabs.com/cgi-bin/mt-searc...p;limit=20 13:49
Coke now I can't find my planet checkout.
mikehh the pdd30_install.pod is a url type - I dont see how to get it down in size
Coke [blogs.gurulabs.com/stephen/atom.xml] 13:52
name = Stephen Weeks
mikehh afk for a bit 13:53
Coke tene, going to go with: blogs.gurulabs.com/cgi-bin/mt-searc...tag=Parrot
13:54 PacoLinux joined
Whiteknight Coke, and can you add this: 13:54
[wknight8111.blogspot.com/feeds/posts/-/Parrot]
name = Andrew Whitworth
Coke Whiteknight: "invalid content type: -"
Whiteknight shoot, sorry
[wknight8111.blogspot.com/feeds/post.../-/Parrot]
I'll decide what is and is not valid 13:55
Coke Whiteknight: added.
it'll take a bit to propogate.
Whiteknight Coke++ # Thanks!
Coke planet? 13:56
purl i heard planet was a universal mystery, methinks.
Coke planet parrot?
purl planet parrot is probably an aggregate of any parrot-related blogs.
Coke planet parrot is also editable by coke
purl okay, Coke.
Coke planet parrot is also changable with a trac ticket. 13:57
purl okay, Coke.
Whiteknight it should also be edited by me eventually, once I get my damn act together
14:02 donaldh joined 14:36 particle1 joined 14:51 frodwith joined 15:08 fperrad joined
dalek kudo: 8009acf | jnthn++ | src/parser/actions.pm:
Add lexical slot for dispatcher to store candidate list holder in methods.
15:10
15:12 riffraff joined 15:20 donaldh joined 15:43 iblechbot joined
dalek rrot: r38490 | NotFound++ | trunk/examples/nci/xlibtest.p6:
[examples] more idiomatic perl6 in xlibtest.p6
15:55
16:01 cognominal joined 16:10 Theory joined, donaldh left 16:20 uniejo joined
moritz #ps in 121 16:29
jonathan I was about to ask how far away that was...
This probably means dinner before #ps.
Coke me wonders why the installed libparrot.1.1.0.dylib has a dependancy on libparrot in the build dir. 16:30
particle1 that's just Wrong. 16:37
purl Fire and brimstone coming down from the skies. Rivers and seas boiling! Forty years of darkness, earthquakes, volcanos. The dead rising from the grave! Human sacrifice, dogs and cats living together... mass hysteria!
Infinoid Do we do a test install (into a tmpdir or somesuch) during "make test"?
16:40 fperrad left
Infinoid I don't see such a thing, but it sounds like something we need. I'll see if I can knock something together 16:41
dalek rrot: r38491 | NotFound++ | trunk/src (2 files):
[core] fix some external declarations of vtable functions, TT #640
16:44
16:44 gryphon joined 16:51 gryphon joined
Coke comedy of errors. 16:56
I despair of being able to build partcl against 1.4
NotFound Can I say again that I don't think that rpath usage was a good idea? ;) 16:57
Coke is osx even using rpath?
particle1 just use path like normal OSes, mkay? 16:58
Coke rpath seems to be in linux and mebbe solaris.
NotFound Coke: I don't know nothing about Mac OS, but looks like we are using some way of fixing the path for the dynamic libs. 16:59
Coke yes, I wrote that. it's post install, a workaround for NOT using rpath. 17:00
s/wrote/stole
dalek rrot: r38492 | jonathan++ | trunk (2 files):
[p6object] Add variants of some meta-class methods that take the object to operate on as the first parameter, as is Perl 6 spec. Move the main implementation to these, have the existing variants forward to them and document them as deprecated.
Coke do the build. the build links against everything locally; copy it all out and then switch out the lib deps.
except that blib/lib/libparrot* seems to depend on itself.
$ ldd blib/lib/libparrot.dylib 17:01
blib/lib/libparrot.dylib: /Users/coke/research/parrot/blib/lib/libparrot.dylib (compatibility version 0.0.0, current version 0.0.0)
NotFound Coke: maybe that is related to the problem mentioned in my last commit?
Coke (where ldd is otool -arch all -L $*)
ldd?
purl ldd is another useful thingie that comes with linux or doesn't really do anything on GNU/Linux systems except exec the program with magical environment variables that make the dynamic loader show its dependencies or the Linux Device Drivers book or "otool" on OS X.
Coke r38491 ? 17:02
NotFound O'Tool?
Coke: yes
Coke wouldn't libparrot depending on itself be a linking issue?
Coke ups and rebuilds to check. 17:03
NotFound Coke: fake declarations can be the cause of linking issues
17:03 barney joined
dalek rrot: r38493 | Infinoid++ | trunk/docs/book/ch03_pir.pod:
[cage] Wrap text to pass linelength.t.
17:03
Infinoid There's an additional pdd_format failure in pdd30_install which I'm not sure how to fix. 17:04
Coke jonathan: don't forget to create tickets and add notes to DEPRECATED.pod when deprecating things. 17:05
NotFound: no change in ldd blib/lib/libparrot.dylib 17:06
NotFound Blame Steve Jobs, then ;-) 17:07
Infinoid That's a workaround, not a fix. :) 17:08
Coke alright, on linux, libparrot.so has no such self-referential crap. at least that gives me something to look at. 17:17
Whiteknight is #ps in 5 or 65? 17:25
Infinoid 65
Tene Tue May 5 17:25:26 UTC 2009
purl: ps?
purl hmmm... ps is postscript or process status or see "parrotsketch" or non-vector?! or annoying.
Tene purl: parrotsketch?
purl i guess parrotsketch is a status meeting for parrot core committers held every Tuesday at 18:30 UTC in #parrotsketch
Whiteknight my damn clock here on Windows is broken 17:26
the GMT clock says that it's 18:25 right now, which it's obviously not
NotFound Whiteknight: there is a registry key to tell windows to use UTC time in the hardware clock. It makes things easier on mixed use machines. 17:28
17:29 estrabd joined
Whiteknight oh great. I get to monkey around in the registry 17:29
17:30 fperrad joined 17:34 Casan joined
Coke clock? 17:39
purl Coke: LAX: Tue 10:39am PDT / CHI: Tue 12:39pm CDT / NYC: Tue 1:39pm EDT / LON: Tue 6:39pm BST / BER: Tue 7:39pm CEST / IND: Tue 11:09pm IST / TOK: Wed 2:39am JST / SYD: Wed 3:39am EST /
17:44 darbelo joined
darbelo cotto: ping 17:51
cotto darbelo, pong
darbelo I looked at pmc2c. Adding ATTR union whatever * was easier than expected :) 17:52
dalek rrot: r38494 | NotFound++ | trunk/src/dynext.c:
[cage] avoid some usages of STRING internals, TT #630
17:53
cotto Yeah. I'm pretty sure it'd be a 1-line change.
darbelo It is.
cotto so, no blog yet? 17:54
It'd be nice to have something to point to at #ps. 17:55
darbelo Blog, yes. Posts, no. I was going to post something after #ps.
cotto your call 17:56
darbelo is nopaste down? 17:57
cotto nopaste?
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl i heard nopaste was at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
cotto tup
yup 17:58
darbelo I'll mail you the patch then.
17:59 fperrad joined
cotto allison, ping 17:59
darbelo, send it to the list. I'll see it there and it'll be easier for others to comment. 18:02
darbelo ok
Infinoid I won't be here for #ps, but I didn't do much this week anyway. I'll read the log later 18:19
18:20 chromatic joined
NotFound What is the reason to have union in ATTRs? How can they be accessed? 18:21
darbelo They're accessed just like any ATTR. Right now you can have "ATTR struct structy *val;", but not "ATTR union uniony *val;" 18:25
Whiteknight I think adding a struct or union definition creates a typedef somewhere, doesn't it?
oh no, nevermind. You have to previously define the struct/union, but you don't need to typedef it 18:26
NotFound Right now we have enough unsolved problems with inheritance from PMCs.
Whiteknight NotFound: You can't inherit struct/union ATTRs anyway 18:27
cotto Agreed. "Don't do that" is not a good long-term solution.
although I don't think it affects darbelo's patch either way 18:28
Coke wonders how long it's been since partcl trunk worked as intended.
NotFound You don't have to previously define, the struct usage works as a forward declaration,.
chromatic #ps in 2 18:29
NotFound But you probably have headerizer and c generation problems without a declaration.
18:29 jderque joined
cotto allison, unping 18:32
allison Coke: a while, I submited a patch sometime around 0.9.0 that updated it to the current string function names, so at least... 4/5 months? 18:36
Coke allison: it was rhetorical. 18:37
allison Coke: btw, make install works as intended, it's the new make install-dev that's broken
Coke ... sorry, yes, install-dev.
allison largely because it's installing things that were written as if they'd never run outside the build directory 18:38
(which is nutty-pants, but there you go)
Coke allison: latest fun. "make" generates a blib/lib/*.dylib that depends on itself. 18:41
(on osx)
allison Coke: how is that even possible?
Coke dunno. I can only assume that the output from otool is not what I expect. 18:42
allison Coke: oh, must be some horrible recursion in the build/link flags?
Coke but, when those get installed, the link to the build dir is still there. whee.
allison a different link than rpath?
Coke osx isn't using rpath. 18:43
allison at all?
Coke (just linux and maybe solaris)
ack -i rpath config tells me no.
there's an rpath /config/ option, but no -rpath 18:44
allison that's good
Coke which is why the portfile is rewriting the lib paths.
allison except that it's keeping a static link to the build directory instead, which is bad
pmichaud Util: I'm very eager to see the patch. 18:48
NotFound rakudo make tells me that there is no rule to build parrot, If I try with an installed parrot after renaming the build directory
pmichaud NotFound: did you reconfigure rakudo? 18:49
NotFound pmichaud: yeah
Coke it, "make install-dev", or the portfile?
Util pmichaud: OK, I will post a rough-cut in a few minutes. 18:50
Coke allison: I cannot seem to rewrite the lib deps inside the libs themselves using install_name_tool as we do for the executables.
NotFound realclean, git pull, configure, make, same result
chromatic pmichaud, runtime/parrot/library/P6object.pir line 226 is the source of half of Rakudo's startup slowness. 18:51
jderque hello ! 18:54
Coke ~~
pmichaud chromatic: parrotclassns.'add_sub'($S0, $P0) 18:55
?
Tene chromatic: I'm going to be in Salem, OR next week.
chromatic pmichaud, that's the one.
dalek rrot: r38495 | coke++ | trunk/ports/macports/Portfile:
When installing on OSX, fixup not only the executable library links, but

this doesn't address the issues in the actual libparrot.*dylib shared library, though, which seems to still depend on the build directory.
pmichaud I wonder why that would be such a big bottleneck.
chromatic It trips a lot of "Adding a vtable entry which already exists" and "adding a method which already exists" in the namespace exceptions.
Salem's about an hour by car. 18:56
Tene chromatic: I'll have a car, and plenty of time.
jderque the following file makes parrot crash : pastebin.com/m59781b65
(v 1.0.0 and 1.1.0)
pmichaud chromatic: I don't have many ideas at the moment for avoiding it. 18:57
cotto jderque, welcome to parrot
Whiteknight jderque: that shouldn't even parse
Coke Whiteknight: sure, it's a keyed creation.
chromatic It looks like it's doing unnecessary work, but I'm not sure how you use it.
Coke Whiteknight: try new ['Integer']
Whiteknight ah
Coke jderque: can you open a trac ticket with that? 18:58
jderque sure !
Coke danke.
good catch.
Whiteknight Coke: There should be a difference between a string key and an int key in IMCC
I'm surprised that there isn't
pmichaud chromatic: it's used to enable PIR classes to act like parents of Proxy PMCs 19:01
chromatic Is there any reason it would add subs to the same namespace multiple times?
particle- jderque: you need to create a trac account, and respond to the confirmation email before you can post
Whiteknight on that note, I'm still not entirely sure why we have Proxy PMCs in the first place?
pmichaud chromatic: yes. 19:04
I *might* be able to get it to avoid that.
but essentially, it's having to walk the mro hierarchy and add parent methods, and there could be duplicates there in the hierarchy. 19:05
chromatic It's flattening all dispatch candidates into a single class?
jderque particle-: yeah, i've just registered (but the site is slooooooow) 19:06
pmichaud it's basically "promoting" methods into the ProxyPMC. Yes, it is very Evil, but otherwise there doesn't seem to be a way to 'add_parent' on a Proxy PMC and have it dtrt.
But I can at least make sure that for any given method name, it does i.... oh, no I can't. Grr.. MultiSubs. 19:07
chromatic Is this something we can fix in Proxy?
pmichaud somehow I doubt it.
it may end up being avoided at any rate, as we start to refactor the proxy-manipulating evilness out of Rakudo anyway. 19:09
Oh, I know.
chromatic I temporarily removed the exception-throwing from the two spots it gets called, and Rakudo starts up over twice as fast.
pmichaud I could test for MultiSub-ness first, and then avoid repeats.
that might help avoid some unnecessary work. 19:10
Of course, more and more rakudo builtins are becoming MultiSubs
19:10 Coke left
chromatic In theory, add_method shouldn't throw an exception if you add another multi variant. 19:10
pmichaud well, the call to 'add_sub' is supposed to be handling that. 19:11
Theory chromatic: bitch what?
purl is nobody's bitch!
pmichaud I think I patched it to work like that sometime last year.
chromatic src/pmc/class.pmc:712
allison drat, I needed to ask Coke a question
pmichaud although, I wonder if we ever have vtable functions that are also :multi 19:12
I think not.
so if the problem is "adding vtable entry which already exists...", that's not likely to change. 19:13
particle- vtable functions that are also methods that are :multi?
pmichaud particle-: currently all vtable functions have the :method flag, I think.
particle- hrmm, to get self?
pmichaud (except for VTABLE_invoke)
Well, there was some talk at one point that :vtable would imply self... but I don't remember how far that got. 19:14
chromatic Everyone wants it, but no one has done it.
pmichaud is there a way (in PIR) to find out if a Sub PMC has its :vtable flag set?
particle- seems odd that 'all' vtable functions get :method
pmichaud We could avoid adding those.
19:15 donaldh joined
particle- my best guess is something like interpinfo .???_CURRENT_SUB, ??? 19:15
chromatic I'm still not exactly sure I understand the problem P6object is trying to solve here. 19:16
pmichaud chromatic: P6object is attempting to allow Parrot core PMCs to map directly to HLL types. 19:17
In Rakudo's case, we want a Parrot Integer to act like a Rakudo Int
which means that Integer needs to get all of the methods defined on Int
so, we take all of the methods of Int (and its parent classes) and add them to the Integer PMC 19:18
this is *not* intended to be long term behavior or correct -- it's just to deal with the fact that we can't yet do HLL_map .
so many times Parrot promots something into an Integer, and Rakudo needs that to act like an Int. 19:19
chromatic HLL-specific autoboxing of a sort? 19:20
pmichaud Yes.
Tene and why can't we do HLL_map ?
19:20 donaldh joined
pmichaud Tene: because we couldn't get .HLL 'Perl6' to work. 19:20
thus, no HLL_map.
But even when we have HLL_map, we may have cases where Parrot types "leak" into the program, so it might be useful to map them somehow (still as a shortcut measure). 19:22
19:23 donaldh joined 19:35 donaldh left
Util moritz: thanks 19:36
pmichaud: sial.org/pbot/36403 19:38
pmichaud Util: so, you're changing the initialization to be string literals instead of array of int ? 19:39
moritz actually I thought about the exact same change a while ago ;-) 19:40
chromatic Me too, but I couldn't get it to work in an hour. 19:41
That should cut file size in half.
Util pmichaud: Yes, exactly so. Large arrays of chars are slow during GCC compilation, which true C strings are lightning fast.
pmichaud Is "hello" " " "world" valid C89? 19:42
moritz iirc yes 19:43
two strings in a row are simply concatenated
Util FYI, I did get a speedup of the old `255,0,0` technique by saying `program_code[real_size_here]` instead of `program_code[]`, but nowhere near the true C strings speed.
moritz (gcc compiles it with --std=c89 -ansi -pedantic) 19:44
Util The patch leaves a empty "" at the end when size%32==0, but that does not seem worth fixing until someone show me a compiler that chokes on it. 19:45
chromatic If VS handles it, I'm not too worried. 19:46
pmichaud anyway, the patch looks good to me.
jonathan I'm happy to try it on MS VC++. 19:47
Util With the old technique, perl6's 3MB of PBC took 460MB of rsize. Causes 10 minutes of thrashing on my 1GB MacBook. 19:48
jonathan: that would be great!
jonathan Util: Is it checked in somewhere in a branch?
Or did I miss a link to it? 19:49
Util sial.org/pbot/36403
jonathan Util: trying it 19:51
purl somebody said trying it was quicker than talking on IRC about not trying it ;>
jonathan omfg 19:53
perl6.c(2051) : fatal error C1091: compiler limit: string exceeds 65535 bytes in length
moritz oh my.
PerlJam jonathan: that's on windows? 19:54
jonathan yeah
surprise ;-)
PerlJam I think if you just chooose a bigger memory model, that'll go away.
chromatic Or we could make an array of strings. 19:55
pmichaud I wonder if there's a way to ... what chromatic said.
chromatic All we need is a chunk of adjacent, gapless memory.
jonathan PerlJam: I don't see an option for increasing maximum string lenght. :-|
Util Another approach is to pre-init many smaller blocks, then at run-time allocate the right-sized chunk, and copy all the small blocks to it.
19:55 fperrad left
pmichaud Ick. 19:56
chromatic Run time copying... sounds slow.
pmichaud That sounds like we're moving things from code space into data space.
Util Ick, indeed!
jonathan I wondered if upgrading my compiler would help...and just read: 19:57
"On VC++ 2003 compiler the limit is even smaller, 16 Kb."
pmichaud bwahahahaha
"640K is all the memory you'll ever need." 19:58
davidfetter 16Kb. wow. just wow.
um, would that be KB?
jonathan I guess. 19:59
:-S
davidfetter recalls an embarrassing incident with gnu units involving millibits per second
chromatic 16k strings in an array would still be a lot smaller and simpler than what we have now.
pmichaud Agreed, but are we guaranteed that the strings will be gapless/in order in an array?
chromatic In a C array? Should be.
pmichaud what would the declaration look like? 20:00
chromatic Otherwise char arrays and strings wouldn't work in C.
Util pmichaud: especially if all but the last string in sized in large power-of-two
chromatic const char const ** [] = { };
Util s/in/is/
pmichaud but with char const ** [] = { "abcdefghijklmnop", "abcdefghijklmnop", ... } 20:01
why do the strings have to be contiguous?
afaict, they don't.
hey, what about....
moritz because array[a] is the same as *(array + a) 20:02
pmichaud moritz: that doesn't violate what I just said.
in the case of char ** [], the elements of the arrays are pointers.
in particular,
purl in particular, is that where i should listen to find out if a socket is closed?
moritz ah
now I understand
purl: forget in particular, 20:03
purl moritz: I forgot in particular,
pmichaud but what about...
char foo[<>][16] = { "abcdefghijklmnop", "abcdefghijklmnop", ... }
chromatic Sure, something like that should work. 20:04
pmichaud replace <> with the number of items in the array (which we can compute from the length of the .pbc)
that would be contiguous.
Oh, but null terminators would be an issue.
dalek rrot: r38496 | cotto++ | branches/tt528_vtinit:
deleting merged tt528_vtinit branch
20:07
kudo: cfc5e82 | pmichaud++ | docs/spectest-progress.csv:
spectest-progress.csv update: 379 files, 11011 passing, 0 failing
20:11
20:28 bsdz joined
particle- grumbles loudly at alester for breaking parrot builds on win32 20:42
Andy eek how, I'm sorry!
what borked?
purl rumour has it borked is that a swedish perl
particle- SPLINTFLAGS += foo
nmake doesn't grok += 20:43
Andy oooh, ooops.
I'm sorry.
Y'know, I think I knew that.
particle- easy fix
purl easy fix is just to change the type to Str
Andy now that I think about it.
how?
particle- don't use += !
Andy Well, yeah
cotto no, easy fix is <reply>
purl okay, cotto.
Andy but suggestions on acheieving the effect in the file?
of building upt he string? 20:44
particle- i know no method by which to achieve that without stupid-workaround-ery
cotto If it's temporary anyway, why not just go with a quick stupid fix? 20:53
Andy It's not temporary 20:54
particle-: Just slap it all together, i'll come up with something else.
Wsorry to mess you up. :-(
can you ifdef it out or something similar?
You'll never be able to use the splint stuff anyway
maybe I just oughta have a cage makefile
or just a splint makefile, for that matter 20:55
since I really don't need to rerun config every time
muixirt hi 21:04
purl what's up, muixirt.
muixirt what is the parrot option -R trace good for, and what is the difference between that and option -t|--trace? 21:05
21:09 iblechbot_ joined
Infinoid Yeah. Splint really needs to act like a separate platform/target/config anyway 21:12
21:12 pfig joined
Infinoid muixirt: -t lets you define which kind of stuff to trace (the flags argument is a bitmask), and enables the trace runcore internally. -R just lets you set the runcore 21:14
without looking at the code, I would think -R trace would be like -t 0 21:15
muixirt Infinoid, thanks
dalek kudo: 9a1cacd | jnthn++ | (2 files):
Add .^methods and .^isa introspection methods. Also bump us up to the Parrot build where I put in the P6object changes that are needed to go with this.
21:19
kudo: c77bd19 | jnthn++ | :
Merge branch 'master' of git@github.com:rakudo/rakudo
21:22 jderque left 21:35 amoc joined
darbelo cotto: ping 21:35
cotto darbelo, pong 21:38
darbelo I'm implementing set/get_rounding_mode for decnum PMCs and I want to map decNumber's enum rounding to parrot constants. Is '.macro_const' the only way to do it? 21:41
cotto I think so, but you can write some code to munge C-level #defines or enums into pir-level macros. 21:43
darbelo Once I generate the pasm, how do I tell parrot to load it? 21:47
cotto .include it
Hmmm. That won't work for just a pmc. 21:48
lemme check some stuff
21:52 Whiteknight joined
darbelo Also, this will probably need some testing on platforms with INTVAL != int32_t. 21:52
Infinoid my sizeof(INTVAL) is 8, how can I help? 21:56
cotto darbelo, it looks like you might be able to hack something out, but the code is obvious not intended for external use. 21:57
You should file a feature request on trac for a function to define pir constants at runtime. 21:59
*obviously
dalek kudo: 53f7059 | jnthn++ | src/parser/ (2 files):
STD tracking: handles trait verb followed by noun, not EXPR.
particle- cotto: can you eval them? 22:00
darbelo particle: Don't think so. We're building a dynpmc. 22:01
particle- sorry, you want to define constants in pir at runtime, while building a dynpmc? 22:02
that makes no sense. 22:03
purl Chewbacca!
Infinoid I think pir constants are handled at the parser level, not the vm level
particle- so eval them! 22:04
darbelo I want to do: $P0.'set_rounding_mode'(.CONSTANT)
Or maybe I'll just use strings.
22:04 tewk joined
particle- see the open modes in the io pdd 22:04
darbelo Saw them. They're defined in a pasm file. I can generate that from the headers, but can't load it. Or can I? 22:06
particle- huh?
it's there to be loaded. 22:07
.include
purl hmmm... .include is like if you'd just copy and pasted the code from the other file where the .include is.
cotto right, but the dynpmc doesn't have any pir or pasm, unless there's a way to make sure such code is loaded at the right time
Infinoid maybe it should ship with a bit of pir or pasm which defines the constants *and* loads the dynpmc, so users just include that to get the feature? 22:09
(feel free to ignore me, I have no clue how dynpmcs work.)
cotto It'd be nice if loadlib could take care of that 22:10
particle- i don't understand. all the examples i've seen are pir code.
do you want to use these constants in c code?
cotto .loadlib
Infinoid I'm suggesting maybe the primary interface to get the decnum feature should be .include, not loadlib 22:11
cotto I think he wants them to be defined in PIR/PASM so that PIR-level .FOO_CONFIG is the same as C-level FOO_CONFIG
22:11 gryphon joined
particle- well, for that, you define them in a header file and config generates pasm files from it 22:11
then they're available in c and pir/pasm 22:12
darbelo particle: Also, we're developing out-of tree. We don't have access to anything not installed with parrot. 22:13
But I'm liking Infinoids idea. ".include decnum" loadlibs us and defines our constants. 22:14
allison hmmm... .include means you get a complete copy of the code everywhere it's used 22:16
not exactly efficient
cotto What if .loadlib looked for appropriately-named pir or pasm files and .included those? 22:17
particle- what's wrong with two statements? 22:19
darbelo The user has to type them both :) Looks less magical.
cotto too much work
particle- it's an assembler. 22:20
create a dynop, if you want a fix.
then load the dynop lib, so you can load the dynpmc lib in one line :) 22:21
cotto sounds magically delicious 22:22
particle- heads to nyc 22:23
darbelo Too much work for a throwaway prototype. I'm going with strings. Once we decide on the semanitcs of contexts we can revisit this. 22:24
cotto sounds like a good decision until you know which route you'll go for certain 22:25
22:29 TonyC joined
darbelo It's temporary. Doing string compares, the way to efficiency, is not. 22:30
22:31 nopaste joined
dalek rrot: r38497 | pmichaud++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
[pct]: Fix PCT to evaluate program result for definedness instead of truth.
22:34
22:51 amoc joined 22:53 kid51 joined 23:31 bsdz joined
nopaste "jonathan" at 85.216.157.73 pasted "example code for pmichaud" (30 lines) at nopaste.snit.ch/16479 23:40