Parrot 2.0.0 "Inevitable" released! | parrot.org | Priorities: merge branches, remove deprecations | Roadmap: icanhaz.com/parrotroadmap | Latest modified TT's: icanhaz.com/parrotbugs
Set by moderator on 9 February 2010.
chromatic So much for easy questions. 00:00
darbelo That would expand to "((s)->flags) & PObj_constant_FLAG" right?
chromatic yes 00:01
s is probably not a valid pointer there.
00:01 shamu left
Austin Fwiw, the problem changes if I rearrange some code, which is why I'm guessing it's a wild pointer someplace. 00:01
darbelo s=0x29 in the bt
chromatic Maybe stronger than "probably" then.
Austin But it's time to go, so I'll bang my head on this later.
chromatic The String PMC may not be a String PMC.
darbelo It may not be a String PMC, but it's for sure calling String's get_string() VTABLE. 00:11
00:16 sri joined 00:46 ash_ joined 00:48 ash_ joined 00:50 mikehh joined 01:07 patspam joined
dalek rrot-plumage: fe89202 | leto++ | t/03-util.t:
Add some basic tests for hash()
01:09
01:19 Whiteknight joined
cotto_work hi Whiteknight 01:19
Whiteknight 'ello 'ello 01:20
cotto_work it is merging time
?
Whiteknight I have to run to the store to buy eggs 01:29
then...MERGERIN' TIME
mikehh++ on the fix, by the way 01:30
cotto_work looks like that branch takes 400B off the _vtable struct on x64. 01:31
chromatic Nice. 01:35
Coke I am probably going to miss my merge window. 01:36
dukeleto Coke: merging what?
purl i guess merging is slow
Coke rm_cflags 01:37
chromatic matt.might.net/articles/writing-an-...mall-step/
mikehh rm_cflags branch: 01:39
plobsing @cbind <Ctrl>f = scroll vertical 95%
@cbind <Ctrl>u = scroll vertical -95%
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32173), fulltest) at r43920 - Ubuntu 9.10 amd64 (g++ with --optimize)
01:39 ruoso joined
plobsing oops, unintentional paste. sorry 01:40
cotto_work startup is also moderately faster in vtable_massacre, with 6% less time being spent initializing PMCs 01:42
purl okay, cotto_work.
cotto_work startup? 01:43
purl i guess startup is taking over 45 seconds... or moderately faster in vtable_massacre, with 6% less time being spent initializing PMCs
dukeleto cotto_work: how are you measuring that?
cotto_work I'll leave that. Maybe someday I too can confuse people talking about startup.
callgrind
purl i think callgrind is a very intresting profiling tool for linux with details at kcachegrind.sourceforge.net/cgi-bin/show.cgi
cotto_work it's a lovely tool 01:44
looking at total cycles, it's ~1.50M in Parrot_initialize_core_pmcs branch and ~2.55M in trunk. 01:45
Whiteknight ...back! 01:48
cotto_work wb
dukeleto i have tried many times to get kcachegrind to work on os x, but no dice. i should just put it on my dusty linux laptop 01:49
cotto_work I <3 kcachegrind.
Whiteknight I need to learn kcachegrind better 01:51
cotto_work It helps to have a large monitor. 01:52
mikehh chromatic: as I understand the article parrot is a small-step interpreter, right? 01:54
chromatic Sounds right. 01:55
dukeleto chromatic: is that similar to the difference between braod and narrow compilers?
s/braod/broad/ 01:56
chromatic I don't know that. 01:59
02:01 nbrown joined
Whiteknight who is looking at one of those OpenVMS accounts? 02:02
INCOMING 02:06
purl duck!
Whiteknight ...and vtable_massacre has landed. now to close some tickets! 02:13
dukeleto Whiteknight: coleda was looking into the openvms acct 02:14
Whiteknight I would be interested in hacking there, if hacking were needed 02:18
chromatic Ugh. 02:19
Anyone who wants something to do so badly that making Parrot work on a platform where we're likely to have no users and which gives us no benefit for other platforms, please look at the list of HLL bugs and development priorities for 2.3 first. 02:20
dalek rrot: r43921 | whiteknight++ | failed to fetch changeset:
merge vtable_massacre branch
02:21
dukeleto chromatic: i tend to agree. 02:37
chromatic I know volunteer labor and people work on what they want to, but I can't see how a VMS port has value right now. 02:38
Whiteknight depends how much effort the port is 02:54
it may slap together
chromatic It won't; I have code that runs on VMS. 02:56
Forget everything you think you know about processes and filesystems.
purl chromatic, I didn't have anything matching everything you think you know about processes and filesystems
cotto and here I was, thinking it was just another commercial unix 02:57
chromatic There's a POSIX-compatible layer, but it's not that widespread and not that POSIX. 02:58
Windows is easier to port to.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32175), fulltest) at r43921 - Ubuntu 9.10 amd64 (g++ with --optimize) 03:01
Whiteknight dukeleto: what if I want to go apeshit reimplementing unicode? 03:19
mikehh Whiteknight: you really want to re-invent the wheel :-} 03:29
chromatic In that case, we all owe Mrs. Whiteknight an apology for the beating you'll receive.
src/main.c:417: warning: cast from function call of type ā€˜long unsigned int’ to non-matching type ā€˜enum <anonymous>’ 03:31
Oh C, your attempts to have a working type system are so sad and cute at the same time.
mikehh chromatic: had to put that cast in to get it to build on g++ 03:36
chromatic Yeah, I know why we need it. It's just... poor C. 03:37
mikehh I get the warning on gcc build
chromatic Not "that's awful code" but "aww, isn't C CUTE?"
03:41 janus joined
mikehh be interesting to see where Pike, Thompson et al go with Go :-} 03:43
Whiteknight decides to start a C-on-Parrot compiler called "CUTE" 03:56
I would like to get the op_pmcs branch merged in tomorrow probably and have those PMCs marked as experimental 03:57
shouldn't affect the build at all, but does bump PBC_COMPAT
04:04 kid51 joined
kid51 trunk: r 43921: Linux/i386: PASS make test; make buildtools_tests; make codetest 04:04
Whiteknight but I have to go in to work tomorrow morning because management is bad at things like "planning" and "deadlines"
and "resource management" 04:05
kid51 reads scrollback 04:06
At PPW a couple of years ago, Schwern remarked: "I like to work on VMS from time to time. It's like visiting another planet." 04:07
Whiteknight I've never used VMS. it might be a fun learning experience 04:08
anyway, I need sleep if I have to wake up and work tomorrow 04:09
later
kid51 There's one guy who comes to Perl Seminar NY from time to time,
... trained as a physicist, but who has worked as a programmer for many decades
... who swears "I've never lost a file on VMS" 04:10
And, of course, Dan was a VMS expert in his youth.
Tried to view dukeleto's slides on Google Docs at same time as I was building Parrot on my Mac. 04:18
result: eternally spinning kaleidoscopic ball
one of the rare times I had to cut the juice entirely, then start from cold 04:19
Util My first quarter of CompSci was Pascal on Vax VMS. I ended up doing Tiger work (authorized attempted break-ins) via DCL, and became proficient, but have not touched VMS in the last 20 years. 04:21
I have heard VMS called the anti-unix. I agree with the sentiment. 04:23
kid51 had to google for DCL
Util Digital Control Language? Halfway between mainframe JCL and unix shell scripts 04:24
kid51 DCL? 04:25
purl DCL is, like, digital control language, the VMS shell or a project tracking system. see dcl.sourceforge.net/index.php
kid51 purl, DCL is also www.nationmaster.com/encyclopedia/D...d-Language
purl okay, kid51.
nopaste "kid51" at 71.246.114.173 pasted "t/pmc/bigint.t FAILed due to bad plan on darwin/ppc -- but at same rev it passed on linux/i386" (59 lines) at nopaste.snit.ch/19585 04:32
kid51 I thought that I changed the plan on that test from 34 to 45 when it was still in branch. 04:33
But it appears that someone (whiteknight?) changed it back ...
perhaps for good reason ...
but I can't tell because this is one of those files on which 'svn blame' does not work ... 04:34
due to long-ago corruption when we went from CVS to SVN.
too tired to ponder this more now 04:35
starting make fulltest and going to bed
kid51 must sleep
purl $kid51->sleep(8 * 3600);
04:40 mikehh joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32178), fulltest) at r43921 - Ubuntu 9.10 i386 (g++ with --optimize) 05:11
mikehh enough - must sleep 05:12
05:30 patspam joined 06:08 kurahaupo joined 06:10 kurahaupo joined 06:47 iblechbot joined 06:56 TiMBuS joined
dalek rrot: r43922 | bacek++ | branches/boehm_gc_2/t/op/string_mem.t:
Disable string_mem.t on non-MS GC.
07:20
rrot: r43923 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Add commented-out finalizers. Apparently they are making parrot 3x times slower
rrot: r43924 | bacek++ | branches/boehm_gc_2/t/op/gc.t:
Skip county tests for non-MS GC.
rrot: r43925 | bacek++ | branches/boehm_gc_2/src/gc/gc_private.h:
Put void* gc_private into GC_Subsystem
rrot: r43926 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Use typed allocating of PMC ans STRING.
rrot: r43927 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Use alloc/copy in reallocate_string instead of GC_REALLOC. This behavior
rrot: r43928 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Collect memory in gc_boehm_mark_and_sweep
07:34 shockwave joined
shockwave I'm in the code generation part of my compiler design. This process involves generating code Parrot code for each construct in my language. So i generate the Parrot code, and manually check it, of course. However, and this is my question, has anyone devise a way to automate part of this process? To make sure the generated code works as intended? 07:36
I know there may not be a clear answer to this, or none at all. What I'm looking for is for the machine to help me do what I'm manually doing; to make sure the generated code does what is supposed to. 07:37
Thanks.
bacek shockwave, check nqp-rx test suite. It can probably help 07:45
shockwave @bacek, I will. Thanks. 07:48
In order to define a class, newclass must be used? Just having the namespace with the class name is not enough, right? 08:14
cotto correct 08:16
shockwave Thanks, @cotto 08:18
bacek cotto, are you just woke up or going to sleep? 08:21
shockwave Let's say that I'm defining a class in file A, to be used in file B. Ideally, file B would just load file A and then instantiate the class. How can this be done if newclass needs to be used to tell parrot that a class exist? 08:24
Can one of the vtable methods help here? 08:25
bacek shockwave, can you use .include?
shockwave sure.
maybe load_bytecode, as well.
cotto bacek, I'm up. It'll be a while before my brain winds down so I can go to sleep. 08:26
it's 0030 here.
~
dalek rrot: r43929 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Alias interp->gc_sys to reduce noice.
rrot: r43930 | bacek++ | branches/boehm_gc_2/src/gc/gc_boehm.c:
Decypher Boehm GC bitmap creation
bacek cotto, sound good :)
shockwave @bacek, is .include the answer?
cotto shockwave, once you run new_class, you can do new ['your';'class';'here'] and it'll dtrt 08:27
bacek shockwave, .include erm.. include other pir file.
shockwave Right. But the issue is that I would like the 'newclass' to automagically be ran by the file that defines the class.
Not in the file that is using the class. 08:28
Am I making sense?
bacek shockwave, you can use something like ".sub 'init' :anon :immediate :load" with newclass in it 08:29
to create your classes
shockwave @bacek, Sweet. That what I was looking for. Thanks. 08:30
bacek This sub will run automatically during compilation
cotto bacek, are there any prereqs for building the boehm branch?
bacek cotto, apt-get install libgc1-dev
shockwave One more question for you guys. Should the .HLL directive be placed in all the generated files, or only on the main one that includes the other files? 08:33
cotto looks like it's libgc-dev on my box 08:34
let's see if this works
bacek shockwave, it doesn't harm to put .HLL in all files 08:35
shockwave OK
cotto looks like the boehm branch is slightly slower at parsing tools/dev/pprof2cg.nqp, but it seems to be within 10%. 08:39
It looks like it's to the point where it'll be better than the default for some workloads. 08:40
bacek++
bacek cotto, do you have svn checkout? Can you kill old boehm branch? It's useless now 08:42
cotto np 08:43
you mean boehm_gc? 08:44
bacek indeed
cotto baleeted 08:45
anyone know why vtable_massacre is still around? 08:46
It was merged earlier today.
well, yesterday
purl it has been said that yesterday is seemingly so far away
cotto seen darbelo 08:48
purl darbelo was last seen on #parrot 8 hours, 36 minutes and 33 seconds ago, saying: It may not be a String PMC, but it's for sure calling String's get_string() VTABLE.
dalek rrot: r43931 | cotto++ | branches/boehm_gc:
deleting now-unused branch
08:59
09:02 fperrad joined
cotto bacek, ooc are you thinking about implementing the sweepless gc on the wiki once boehm_gc_2 is merge-worthy? 09:11
bacek cotto, may be.
09:30 fperrad_ joined
bacek cotto, are you still alive? 09:30
cotto should the inf gc be expected to segfault in the branch? 09:31
yup
bacek cotto, can you check TT#1402?
cotto ./parrot -g inf parrot-nqp.pbc --target=pir tools/dev/pprof2cg.nqp >/dev/null
'splode
sure
dalek rrot: r43932 | bacek++ | trunk (5 files):
Remove unused CallContext.current_results. It should give small performace improvements due less allocations
bacek We basically need few functions exposed via interp->gc_sys
rrot: r43933 | bacek++ | trunk/src/main.c:
Replace Parrot_ex_throw with fprintf(stderr) in CLI parsing. Part of TT#1436.
cotto bacek, +1 to merge those functions. 09:32
actually, your moving CLI parsing out of imcc may enable me to close a bug 09:33
(unrelated but helpful to me) 09:34
dalek rrot: r43934 | cotto++ | trunk/src/interp/inter_create.c:
[interp] reorder initialization code a bit to minimize apparent dependencies between PMC initialization passes
09:48
cotto It worked! 09:49
purl What do you mean it worked? Did it run to completion? Did it bomb out early? Did it finish the job early? Did it tell your girlfriend "let's just be friends"? Be specific!
cotto msg Coke r43935 adds --hash-seed to parrot. Next time you think you have an ordering-dependent bug, you can use that to verify. 09:51
purl Message for coke stored.
09:57 kurahaupo joined
dalek TT #1383 closed by cotto++: [PATCH] add a cli option to set Parrot's hash seed 10:02
rrot: r43935 | cotto++ | trunk/src (2 files):
[string] add --hash-seed and -H to explicitly set the seed used for hashing
10:04
10:05 shockwave joined
shockwave @bacek mentioned this: shockwave, you can use something like ".sub 'init' :anon :immediate :load" with newclass in it 10:08
This works well. But, I noticed that if I have to '.include' directives with the same file, the 'init' method gets run twice. 10:09
I have two '.include'...^^^
something like:
.include 'foo.pir'
.include 'foo.pir' 10:10
The anon gets ran twice. Is there a way to limit it to only running once, in order to register the class with Parrot using 'newclass'?
chromatic Don't include it twice. 10:20
I know that sounds facile, but .include is a textual inclusion at that point in the source code.
10:21 Austin joined
shockwave @chromatic, right now, all the inclussions are on one file. My only concern would be if in the future (like, tomorrow), the inclussions needed to be in all generated files. That could cause problems. 10:21
I was just curious if there was a work-around for this. 10:22
chromatic Use load_bytecode instead, if you can't avoid multiple inclusion. 10:23
shockwave @chromatic, Ok. Thanks.
this short code: 11:00
.sub main
say 'from PROOF file'
.end
error:imcc:syntax error, unexpected $end ('ļæ½')
in file 'TestXXX.pir' line 1
Gives me that error^^^^
I don't understand what's going on. 11:01
Does anyone have an idea why errors would be issued when running the hello world example, like the first code here: docs.parrot.org/parrot/latest/html/...o.pod.html 11:05
chromatic No idea. 11:10
Works for me.
shockwave Something's fucked up on my machine. This is weird.
11:11 kjeldahl joined, nbrown joined
shockwave These are the exact contents of the file: 11:14
.sub main
say "Hello world!"
.end
Weird.
chromatic Any strange newlines? Whitespace? 11:15
shockwave I setup vim to write Unix, Windows, and Mac new lines. 11:16
But nothing.
purl i heard nothing was shared - this is why things work
shockwave I created another file, and saved it brand new from vim. 11:18
It worked.
purl What do you mean it worked? Did it run to completion? Did it bomb out early? Did it finish the job early? Did it tell your girlfriend "let's just be friends"? Be specific!
shockwave Oh you know what, Since I'm running on windows, and, originally, the previous file was created from Windows Powershell, it may have added some bogus Unicode byte mark. Maybe. 11:19
chromatic That's the only other thing that comes to mind. 11:20
shockwave Anyhow, Thanks for the help, @chromatic
chromatic You're welcome. 11:21
dalek rrot: r43936 | chromatic++ | branches/boehm_gc_2 (2 files):
[GC] Allow build to link and run on systems without Boehm GC installed.
11:42
chromatic Ugh, Boehm GC and Valgrind are NOT friends. Callgrind goes boom. 11:45
Austin_away Yow. Walking off the end of a sub is way better than doing a 'return'. 11:55
(In nqp)
Here's a nopaste that didn't seem to make it: nopaste.snit.ch/19586 12:01
12:06 joeri joined
Austin Pmichaud: What is the nqp pir:: syntax for the delete_p_k opcode - delete $P0[$P1] ? 13:05
shockwave In order to assign null to a PMC one has to: $P0 = new 'Null' ? 13:47
Or is there a null opcode
Austin There is a null opcode. 13:48
"null $P0"
shockwave How about for this form: $P0 = null ?
I'll try it.
Thanks 13:49
Austin seems to work
nopaste "Austin" at 68.37.46.53 pasted "Does ' = null' work?" (9 lines) at nopaste.snit.ch/19588 13:50
shockwave Sweet. 13:51
Austin Out of curiousity, why are you trying to nullify something?
Isn't that what undef is for?
shockwave It's for creating variables, which in my language are null.
Austin Okay. What language is that? 13:52
purl I'm not sure... but it doesn't sound like any kind of English I know.
shockwave My own custom DSL.
Austin Cool. 13:53
(Cooler if it isn't lisp.)
shockwave I agree with that. 13:54
Austin :)
About the last eleventy-six people doing HLLs were doing lisp variants. There ought to be a special page on the wiki
"How to lisp in parrot"
mikehh thsquaaak 13:56
Austin lol
mikehh++
That's dethpicable!
mikehh :-} 13:57
Austin Man, I hate it when I'm like "Whoa, I'm totally going to rewrite this gnarly code!" and I wind up with the same gnarly code. 14:06
What do you call a sub or method that returns multiple values? 14:15
14:26 TiMBuS joined
mikehh t/run/options.t is failing at r43936 - Ubuntu 9.10 i386 (gcc/g++ with --optimize) 14:27
shockwave Austin, I don't think it has a special name. 14:28
Austin Google was not my friend.
I named them "tuple_sub" and "tuple_method" respectively.
shockwave Sounds good enough. 14:29
mikehh also it is failing in make coretest and that shouldn't be in make coretest
also fails in make test 14:30
Austin I can has parse error? 14:56
dalek TT #1440 created by Austin_Hastings++: parrot-nqp does not parse { in string correctly 14:58
Austin Not a bug, but a heretofore unused feature. 15:01
Okay, why is P6object::__dump getting called when dumping a Sub? 15:08
dalek TT #1440 closed by Austin_Hastings++: parrot-nqp does not parse { in string correctly 15:14
pmichaud Austin: we don't have a syntax for that. 15:33
(delete_p_k opcode, that is)
Austin The delete_p_k?
Okay.
I'll leave that in PIR 15:34
pmichaud dealing with the _k syntaxes is a real pain.
Austin :)
pmichaud 11:54 <Austin_away> Yow. Walking off the end of a sub is way better than doing a 'return'.
yes. 'return' is very expensive.
Austin A lot of things just got converted from return ...; to ...; 15:35
pmichaud I think using 'return' in the fib.nqp benchmark makes it about 2.5x slower
user0m10.370s # fall-through 15:37
user0m23.790s # using 'return'
Austin !! 15:38
Puts pressure on developers to code 'fat' methods.
Use less infrastructure.
15:40 Psyche^ joined 15:41 whiteknight joined
whiteknight purl msg bacek the boehm numbers are looking fantastic! 15:48
purl Message for bacek stored.
15:53 mikehh joined
dalek kapo: ae5b8fe | austin++ | src/Pmc/ (3 files):
Changed some Opcode:: names

Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
15:55
Austin Woot. Kakapo P6objects now dump correctly. 16:02
dalek TT #1441 created by jkeenan++: t/run/options.t: new failures in 14 tests 16:03
TT #1442 created by Austin_Hastings++: Sub PMC should support getattribute
16:07 iblechbot joined
whiteknight t/run/options.t is failing 14 tests for me this morning 16:14
wasn't seeing those failures last night after the vtable_massacre branch merged
Ah, nevermind. I didn't see TT #1441 16:15
TT #1442 +1.
Austin: ping
Austin Whiteknight: ? 16:16
whiteknight Austin: can we get a list of what getattribute values you want from Sub?
I could put together a prototype
16:16 theory joined 16:18 jsut_ joined
whiteknight hates BigInt and BigNum, would love to see them exorcised from the repo and moved to external projects 16:19
whiteknight would like to see several things exorcised in such a way
nopaste "Austin" at 68.37.46.53 pasted "Sub attributes" (33 lines) at nopaste.snit.ch/19596
dalek rrot: r43937 | whiteknight++ | trunk/t (2 files):
fix skip numbers in t/pmc/bigint.t and t/op/arithmetics_pmc.t. Patch from Andy++
16:20
Austin Whiteknight: The 'Sub' class makes a bunch of promises. I think that the individual objects need to be able to keep 'em. 16:21
whiteknight Austin: so getattributes could just call VTABLE_inspect, build that hash, and return the keyed value from it?\\
sounds easy enough for a prototype
Austin I think the problem lies in building the hash.
My goal here is to have a consistent introspection mechanism. 16:22
whiteknight how so? you're building it in the example
or are you saying that it's needlessly wasteful?
Austin I'm not building the hash of Sub data, I'm getting a hash full of promises from class Sub.
The PMC would have to actually get that data, and I understand that some of it may be hard to get. 16:23
(I don't *know* it's hard to get, but I acknowledge the possibility)
whiteknight so that hash in your example contains all the keys, but no values? 16:25
Austin Right. I think each key foo maps to another hash, that has "name => 'foo'" in it, 16:26
It's pretty lame.
whiteknight that is pretty lame
Austin %attributes<foo> := Hash.new( :name('foo') ); 16:27
I added my nopaste to the ticket
whiteknight extend your example to say($_ + " " + %attrs[$_]) 16:28
I want to see what you are actually getting
Austin bide
whiteknight Sub.inspect calls Sub.inspect_str to get the values, but it doesn't look to me like inspect_str does anything like what we want 16:30
maybe it does, just in a roundabout way 16:31
nopaste "Austin" at 68.37.46.53 pasted "More details" (63 lines) at nopaste.snit.ch/19597
Austin It's teh suxx0rs. 16:32
whiteknight Well, looking at the code I don't think that should be the case 16:36
it should be returning at least a few integer values
Austin I don't think it does getattribute at all. It supports inspect.
whiteknight actually, no, it's not calling Sub.inspect at all 16:37
Austin Frankly, I'm not sure why we seem to have two different systems for getting instance data: inspect and getattribute.
whiteknight because Sub.inspect should be returning a different hash with different values
Austin :)
whiteknight see src/pmc/sub.pmc:760
So what the hell is "my &sub := Foo::foo" returning? 16:38
because it sure as hell isn't a Sub PMC
Austin It's a sub.
whiteknight Austin: can you dump the PIR output of the NQP compiler for me and nopaste it? 16:39
whiteknight is at work and having a hard time doing any development
nopaste "Austin" at 68.37.46.53 pasted "test.pir" (72 lines) at nopaste.snit.ch/19598 16:40
Austin look for the .annotate line 6
whiteknight okay, right 16:41
Sub is a built-in type and doesn't have a Class PMC associated with it. it does have a PMCProxy, which we might be returning 16:42
so the behavior you're looking at is in PMCProxy, not Class
and I'm not sure if we can make PMCProxy smart enough to fix it
check what "my $type = pir::typeof__sp($class)" is, I suspect it will be PMCProxy 16:43
in which case, we probably need to call "my %attrs = pir::inspect__pp(&sub)" to get the info you want 16:44
but, we should also fix Sub.getattributes to return more good data
Austin $class is a PMCProxy, &sub is a Sub 16:45
(per typeof)
The trouble is in Sub.pmc, not in the proxy.
The proxy is saying "here are the attributes that class.pmc told me to tell you about."
But Sub says "I don't support getattribute." 16:46
whiteknight ah, ok. so PMCProxy is calling getattribute internally?
Austin No.
There's no Proxy involved
whiteknight ...so...why do we need getattribute?
I
'm not following
Austin The type of &sub, per typeof__sp(), is 'Sub'. 16:47
Not 'PMCProxy'
whiteknight okay. So from your code example it doesn't look like you are calling getattributes on &sub at all
plobsing whiteknight, Austin: this appears to me to be a result of auto_attrs, which sets vtable->attribute_defs, which PMCProxy reads 16:48
nopaste "Austin" at 68.37.46.53 pasted "typeof" (28 lines) at nopaste.snit.ch/19599
Austin Right!
I'm not calling getattribute because I know better. :) 16:49
whiteknight okay, so I was looking for the problem in your example, but that's not where it is. I see now
so you want Sub.getattribute to return values for that list of strings that the PMCProxy.inspect is returning? 16:50
whiteknight sincerely wonders why the hell we need both inspect_str and getattribute
nopaste "Austin" at 68.37.46.53 pasted "error" (38 lines) at nopaste.snit.ch/19600 16:51
Austin Right. The inspect in question is "attributes".
Which suggests to me that "these are valid attributes" 16:52
I can see where you might not want certain information to be an attribute, especially since "attributes" are what objects routinely store into. But if there is an "attributes" tag in the inspect tree, then those should be attributes. 16:54
(Ditto for the "methods", "roles", etc. tags.) 16:55
whiteknight I really would like to find out what the intended differences are between getattribute and inspect_str 16:58
because I dont think there is any rule that getattribute needs to correspond directly to the list of defined ATTRs 16:59
Austin I think that inspect is a general-purpose introspection mechanism. While attributes are things that objects have.
whiteknight that may be the original intention, but in practice getattribute is often used to return things that aren't necessary defined ATTRs
Austin I'd agree that there's no required correspondence, *until and unless* you tell me, via .inspect('attributes'), that "here is a list of attributes." 17:00
whiteknight that may be the case. inspect should return the list of strings (maybe a hash of complete string+values) that getattribute responds to
but that still doesn't leave much room for inspect_str to avoid the axe 17:01
Austin Well, inspect('attributes') should.
whiteknight purl msg allison we're trying to figure out the differences between inspect_str and getattribute, and whether inspect_str is redundant. Can you shed some light? 17:03
purl Message for allison stored.
mikehh getting a codetest faiulure - assert args with - include/parrot/context.h: Parrot_pcc_set_results_func but the function and assert only seems to exist in context.h 17:04
in the headerizer section
Austin Hey, when's 2.1 going out 17:05
whiteknight tuesday, I believe
Austin Well, maybe some of these segfaults will go away.
darbelo materializes
whiteknight segfaults?
purl No whammies!
darbelo 2.1 is going out on tuesday. But my mail announcing it didn't reach the list. 17:06
Austin Yeah, it's blowing up left and right.
mikehh what about the middle?
17:06 tetragon joined
Austin mikehh: The middle is where I get some kind of progress made. 17:06
whiteknight Austin: I haven 17:07
't seen too many segfault reports recently
Austin I guess that depends on how you define "too many".
mikehh tried to run make headerizer but it failed on me - can't find HEADERIZER HFILE directive in 'compilers/pirc/src/pircompiler.c' at tools/build/headerizer.pl line 521.
whiteknight I can't recall any
Austin I'm just running everything two or three times.
To get past the segfaults. 17:08
whiteknight Austin: nopaste me an example that esplodes
Austin Hahahahahaha!
purl LOLCON 6 reached.
Austin If I had a nopasteable example, I'd submit a patch. 17:11
whiteknight oi, nevermind. I'm seeing failures in PLA now 17:13
well, looks like we have some debuggerin to do tonight 17:15
Austin :)
whiteknight which is not nearly as much like English buggering as it sounds
Austin Stop now, dude. 17:16
There's no way you're going to sound any better.
whiteknight usually i get into a hole where I can't possibly sound any worse 17:17
Austin Perhaps you should run for elected office.
dalek kapo: 2d03d94 | austin++ | src/Classes/P6 (2 files):
Changed attribute code to use '$!foo' instead of just '!foo' so that intended-type will show in dump.

Signed-off-by: Austin Hastings <Austin_Hastings@Yahoo.com>
kapo: 4fd0e18 | austin++ | (14 files):
Slamming code to try to show segfaults.
Austin Well, all that work for a "die" op 17:19
dalek rrot: r43938 | fperrad++ | trunk/src/ops/math.ops:
the opcode pow must honor HLL types
17:26
a: cdc873f | fperrad++ | dynext/pmc/lua (3 files):
vtable pow & i_pow are gone, since the merge of branch vtable_massacre

currently, we lost the support of metamethod __pow.
17:29
dukeleto 'ello 17:40
whiteknight heya duke 17:41
dukeleto whiteknight: how goes it? what are you up to now that vtable_massacre has merged? 17:42
whiteknight dukeleto: Austin has clued me into the fact that we've got some instability issues. Parrot-linear-algebra fails all tests apparently
so once I get home it's debugging time 17:43
dukeleto whiteknight: on trunk and 2.0.0 ?
whiteknight on trunk. Everything built and tested fine that I'm aware of for 2.0
dukeleto Austin: have you looked at Util.nqp in plumage? it might have some useful stuff for kakapo 17:44
whiteknight: did vtable_massacre cause the breakage?
Austin duke: I haven't looked recently, but I already know there's a bunch of stuff I'd like to steal in there.
dukeleto Austin: it is even tested, to boot! although i think some bugs may still lurk 17:45
Austin :)
whiteknight dukeleto: I'm not sure. need to test
I'm still at work, so when I get home I'll check things out more 17:46
dukeleto Austin: gitorious.org/parrot-plumage/parrot...b/Util.nqp 17:47
whiteknight Austin: any insight into when these errors started happening?
dukeleto Austin: tests are here: gitorious.org/parrot-plumage/parrot.../03-util.t
Austin whiteknight: Not usefully. I'm catching up on back taxes from before the new year, so it could have been anytime from 1.7 17:48
dukeleto Austin: git bisect is your friend
whiteknight well, PLA was working fine about a week ago when I last tested it 17:49
Austin Actually, dukeleto, I've got very little opportunity to git bisect, since part of paying my taxes is adopting the new nqp-rx.
That's killing me, since it's a bunch of syntax changes, and I've got a pretty large code base.
whiteknight I've got to pay the nqp-rx tax in Matrixy soon
I'm thinking that might be the opportunity for me to do the big dispatch refactor I have planned 17:50
dukeleto Austin: gotcha 17:51
whiteknight Okay, I'm heading home now. Should be at the debugging station within 2 hours. 17:58
later 17:59
18:13 chromatic joined
dukeleto chromatic: ahoy 18:14
chromatic morning
Austin Yay! Another nqp problem.
Whoa. 18:41
I think I just made 'progress'.
darbelo Austin++
Austin I think I just made 'progress'. 18:42
Whoops. Wrong window. 18:43
shockwave --Austin
Austin Well, so much for that. 18:50
nopaste "Austin" at 68.37.46.53 pasted "Class creation quandary" (15 lines) at nopaste.snit.ch/19602 19:02
Austin Why does this keep happening to me?
Coke chromatic: my openvms testing wsa going to amount to "hey, look that, it <does|doesn't> work!" 19:28
chromatic Sure. Like I said, I think the amount of work beyond that will be non-trivial. 19:32
Austin Any idea why a class woud appear non-existent to the oo code, but be accessible otherwise? 19:44
shockwave Is the current Parrot PIR compiler an optimizing compiler? 19:51
darbelo Not as such. 19:53
chromatic Hm, the naive GC-per-MB patch (a couple of lines of changes) runs fib.pir 12.894% faster. 19:54
darbelo Nice. 19:55
chromatic Let me verify that number; I want to isolate the changes.
darbelo Any percentage above 2 is nice. 19:56
chromatic 12.855%
purl 0.12855
chromatic Still worth doing.
darbelo Indeed. 19:57
chromatic Let me review the KCachegrind visualizations. 19:58
darbelo That reminds me...
You once mentioned that we might benefit from setting the 'special' flag when we attach metadata to PMCs in order to reduce branching in the gc code. Is that still worth investigating?
Austin What's the gc-per-mb patch do? 19:59
chromatic Austin, run the GC only after we've allocated a megabyte of memory, not whenever we run out of free objects.
Austin Ahh
chromatic Huge difference in number of GC runs. 20:08
3.895% improvement in an NQP benchmark. 20:13
This all depends on the ratio of easily recyclable GCables to live GCables.
darbelo I wonder if NQP-generated code holds on to GCables we could recycle. 20:14
chromatic Possibly. 20:15
How do you feel about a 4 - 13% performance improvement this close to a release?
darbelo I'm all for it.
chromatic Incoming. 20:16
purl duck!
20:23 Whiteknight joined 20:25 nbrown joined
chromatic dukeleto, benchmarks before and after r43939 will be informative. 20:26
Whiteknight what happened at r43939? 20:27
darbelo The world changed.
darbelo pokes dalek with a stick.
chromatic I closed one world and opened the nexT.
Whiteknight ah, I see. chromatic's magic GC magic
chromatic We have *less* code in the GC with that tiny patch. 20:28
dalek rrot: r43939 | chromatic++ | trunk/src/gc (3 files):
[GC] Changed the mark/sweep GC so that it runs a GC only if it's allocated a

stick around for longer, but reduces the amount of time marking and sweeping live GCables. Note that we may have to reduce the tunable for the maximum size of a GCable pool.
rrot: r43940 | chromatic++ | trunk/src/gc (2 files):
[GC] Tidied some code and fixed some typos. No functional changes.
Whiteknight I'm seeing failures in t/pmc/hash.t now 20:29
and t/run/options.t
purl t/run/options.t is failing 14 tests for me this morning
chromatic I had the latter before.
I'm not sure how the GC tuning would affect the former. 20:30
darbelo same here with the options.
bacek good morning
purl What's so good about it?
bacek options.t is my fault. I'll fix it soon.
darbelo --bacek++ # decrement for breaking, increment for fixing. 20:32
Damm is decnum-dynpmcs full of FAIL today. 20:33
Whiteknight PLA is building on this computer now. I need to check it on an x86 machine now
yay! I think VirtualBox fixed my Xorg bug! I should be able to run Fedora12 again 20:40
dalek rrot-data-structures: 49a435d | Whiteknight++ | t/pmc/ (3 files):
fix test plans. All tests pass
20:41
darbelo Whiteknight: ping 20:43
Whiteknight darbelo: pong 20:45
darbelo Say, how did the vtable massacre affect PIR's "z = x ** y" pow syntax?
Should that still be valid? 20:46
chromatic It should be, yes.
Whiteknight should be 20:47
darbelo From what I see here, it's still is. But doesn't dtrt for decnum-dynpmcs, which I expected.
Just wanted to check.
Whiteknight darbelo: right, calls VTABLE_get_number, calls pow() in libc, then VTABLE_set_number_native for result PMC
chromatic bacek, looks like -R is broken. 20:50
bacek chromatic, tt#1441 20:51
darbelo Whiteknight: Yeah, I kinda guessed that when the pow() tests started failing horribly.
chromatic That's the one.
Whiteknight darbelo: probably best to convert pow() to a METHOD 20:52
darbelo Just did that.
But I was curious about the ** syntax staying. 20:53
I was expecting an altogether different kind of FAIL. 20:54
Whiteknight yeah, the ** syntax just gets translated to the pow opcode 20:55
so that still works because the opcode still exists
darbelo I'm guessing you'll go after the opcode on the next cycle, eh? 20:56
chromatic Ah, there's the fix.
Whiteknight darbelo: the opcode is, I believe, intended to become a dynop along with several other math ops 20:57
dalek cnum-dynpmcs: r196 | darbelo++ | trunk/ (2 files):
After the VTABLE massacre, pow() is no longer a VTABLE, rather than lose the
Whiteknight so it will still exist, and may eventually get smarter, but will be a dynop
chromatic bacek, fix coming in a moment.
dalek rrot: r43941 | chromatic++ | trunk/src/main.c:
[parrot] Added missing curly brackets to "No runcore found, bailing out!" case
21:01
rrot: r43942 | chromatic++ | trunk/t/run/options.t:
[t] Added diagnostic output to display failed command when testing command-line
chromatic All tests pass for me again on trunk. 21:02
dalek TT #1441 closed by chromatic++: t/run/options.t: new failures in 14 tests 21:03
Whiteknight okay, pla passes all tests on x86 again too 21:05
no idea why it failed earlier, must have been a fluke
chromatic If you don't trust me to delete code from the GC now... GOSH! 21:09
dalek rrot: r43943 | mikehh++ | trunk/include/parrot/context.h:
remove lines that headerizer keeps even though function has been removed
21:34
Whiteknight what needs to get done prior to the release? Just test reports?
any serious bugs need a look?
21:36 AndyA joined
chromatic Anything reported in the last few weeks, I'm sure. 21:39
21:42 hercynium joined
mikehh t/pmc/hash.t is failing (Segmentation fault) - Parse errors: Bad plan. You planned 168 tests but ran 79. - r43942 - Ubuntu 9.10 amd64 (gcc with --optimize) 21:47
Whiteknight urg
chromatic mikehh, can you bisect? 21:51
mikehh chromatic: I will in a minute 21:53
chromatic Thanks. A backtrace will be informative too. 21:55
mikehh chromatic: passes at r43938 - fails at r43940 - trying r43939 22:05
chromatic That's not a good sign. 22:07
mikehh fails at r43939 22:10
how do you get a backtrace again? - I've done it it before but I cat't recall how 22:11
chromatic Run it within gdb, let it segfault, then do bt. 22:13
mikehh hmnn - sure I did something else, but anyway 22:14
chromatic: it don't seg fault under gdb or ./parrot -v 22:33
chromatic Does it segfault under prove?
or perl t/harness t/pmc/hash.t ? 22:34
If the latter, there's an extra command line argument in there.
Whiteknight I'm seeing the hash.t failure here too, under --optimize 22:41
mikehh chromatic: yes for both and ./parrot t/pmc/hash.t
it fails with both gcc and g++ (with --optimize) havcen't tried without yet 22:43
haven't
nopaste "Whiteknight" at 68.46.29.192 pasted "t/pmc/hash.t segfault backtrace" (20 lines) at nopaste.snit.ch/19607 22:45
Whiteknight for that, I ran gdb --args ./parrot t/pmc/hash.pmc 22:46
no other args
ImageIO->buffer is null for some reason 22:49
I don't know enough about the PMC to tell if that's an acceptable condition
do Buffer* objects need to be marked for FC? 22:51
GC?
purl GC is the boehm conservative garbage collector at reality.sgi.com/boehm/cg.html or a really really bad perl "programmer" or GrandCentral.com or branches/gsoc_pdd09 or a travesty against god
chromatic Looks like it can be NULL. 22:54
nopaste "chromatic" at 173.50.130.127 pasted "mikehh, Whiteknight try this patch" (16 lines) at nopaste.snit.ch/19608 22:55
Whiteknight I wonder why an error doesn't appear in non-optimized version
chromatic Address space randomization. 22:56
Whiteknight I'm already building with a variation on that patch 22:58
...and works
committed 22:59
23:06 payload joined 23:10 lucian joined
mikehh ok - looks good 23:12
dalek rrot: r43944 | whiteknight++ | trunk/src/pmc/imageio.pmc:
fix ImageIO.mark() to not try to mark a NULL buffer. Patch inspired by chromatic++, mikehh++
rrot: r43945 | whiteknight++ | trunk/src/pmc/imageio.pmc:
add a const modifier like I should have originally
23:28
23:29 hercynium joined
dalek TT #1443 created by jonathan++: Segfauts possibly caused by pool compaction bug 23:31
23:33 dukeletoz joined
dukeletoz 'ello 23:35
Whiteknight hello
chromatic dukeletoz, benchmarks before and after r43939 will be informative. 23:42
Whiteknight, can you poke at TT #1443?
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32187), fulltest) at r43944 - Ubuntu 9.10 i386 (g++) 23:44
dalek rrot: r43946 | whiteknight++ | trunk/src/pmc/imageio.pmc:
fix indenting in ImageIO to be like all other .pmc files
23:45
dukeletoz chromatic: i will try to make that happen 23:46
chromatic Thanks.
I expect between a 4 and 13% performance improvement.
dukeletoz chromatic: ok. are there any specific benchmarks, or just the usuals, like oofib and friends? 23:47
chromatic The usuals. 23:49
dalek tracwiki: v2 | chromatic++ | GCSizeTuning 23:51
tracwiki: Implemented.
tracwiki: trac.parrot.org/parrot/wiki/GCSizeT...ction=diff
23:53 payload joined