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.
dalek rrot: r43836 | mikehh++ | branches/gc_encapsulate_part2/src/gc/gc_ms.c:
fix codetest failures - unused assert macros - further attempt
00:05
mikehh at r43836 in gc_encapsulate_part2 branch I get everything passing except codetest failure in src/gc/gc_private.h - assert args - up to fulltest - Ubuntu 9.10 amd64 (g++ with --optimize) 00:07
cotto_work mikehh, that commit broke the build 00:08
I think the culprit is "gc_ms__allocate_pmc_attributes"
00:09 kid51 joined
mikehh oh dear - I tested before commiting 00:09
one to many underscores - I'll check
00:09 Austin joined
Austin seen darbelo? 00:12
purl darbelo was last seen on #parrot 54 minutes and 14 seconds ago, saying: I also disagree with Integer->BigInt autopromotion, but that's a mostly unrelated phenomenon.
Austin Thanks, darbelo 00:13
cotto_work now go forth and commit stuff
Austin I don't want to commit anything. I'm 41 and single. I fear commitment. 00:14
I just don't want to be ostracized for not having a bit any more.
Austin sniffs.
darbelo Just add yourself to CREDITS, that's the way to fame and fortune. 00:15
Austin Just one little commit...
darbelo Yes. Just one, you can control it, you can stop any time you want. 00:16
Austin Hello, ladies. Look at your man. Now back at me. Back at your man. Now back at me. Sadly, your man isn't me. But if he had a commit bit, he could code like me.
cotto_work You can put yourself in charge of a major fictitious subsysten. The dynamic derectifier doesn't currently have a maintainer.
Austin Maybe I could add a C2 linearization system.
darbelo Why bother? I'm sure C1 is enough. 00:18
00:20 mikehh joined
Austin I'm thinking that my new C2 system would bridge the gap between the C1 and C3 layers. 00:20
dalek rrot: r43837 | darbelo++ | trunk/config/gen/makefiles/root.in:
Add a missing dependency. This fixes parallel building with BSD make.
00:21
Austin Make some simplifying assumptions for the expected cases. Preoptimized caching by using predictive metrics based on expective human capital configuration. 00:22
darbelo nods attentively as his eyes glaze over. 00:23
mikehh cotto_work: ok I think it's fixed now - make test PASS - running fulltest 00:25
cotto_work fulltest is happy on the gc part 2 branch on Ubuntu 9.04 x64 00:35
mikehh gc_encapsulate_part1 branch:
All tests PASS (pre/post-config, make corevm/make coretest, make test, fulltest) at r43838 - Ubuntu 9.10 amd64 (g++ with --optimize)
bah thjat's part2
looks good - just need some tests on other platforms 00:36
mikehh needs sleep 00:37
dalek rrot: r43838 | mikehh++ | branches/gc_encapsulate_part2/src/gc/gc_ms.c:
fix previous commit - removed extra underscores
cotto_work I like the new gc idea. I'm also I glad I'm not the one who'll be doing most of the debugging. 00:38
00:39 eternaleye joined
Whiteknight is exercising the nuclear option on the bitwise vtables 00:47
00:49 eternaleye joined
Whiteknight is there a "get_ulong" vtable? 00:50
darbelo Not that I know of. 00:51
Austin $little_doggie->get_ulong() ?
darbelo And src/vtable.tbl doesn't know either. 00:52
00:53 abqar joined, cotto_work joined
darbelo Also, given that PIR wouldn't know what to do with an ulong if it ever got one. I'm guessing there shouldn't be. 00:53
But I'm going to sleep now, so take my advice with a grain of salt. 00:54
cotto_work It could be that the PMC is trying to get some oolong tea.
Yeah. Rip that out. 00:55
darbelo Salted tea? Ugh.
cotto_work I have a friend who likes to put soy sauce in green tea.
Tene does he also like to drink it, or does he just add the soy sauce and expect someone else to drink it? 00:56
cotto_work Nope. He actually likes to drink it.
I found out that I don't.
Whiteknight who the hell uses the bitwise string functions 00:59
I would be *thrilled* to find an actual, honest-to-god use for them
cotto_work It'd be interesting to graph loc vs commit # over Parrot's history. 01:00
Austin cotto_work: You mean total loc or delta loc? 01:03
cotto_work something like cloc.pl would make it nice and non-interactive 01:04
Apparently the openSUSE guys have solved the boolean satisfiability problem: lwn.net/Articles/373668/ 01:07
Whiteknight these functions are stupid 01:08
seriously
purl i guess seriously is that for real
Whiteknight who uses bitwise_not on strings?
or bitwise and?
purl bitwise and is fine ... it's the un-named constant '2' that's the problem :)
Whiteknight SHUTUP PURL
purl "Mind your own business, Mr. Whiteknight! I'm tired of your half-breed interference!"
01:08 cotto_work joined
Whiteknight ... 01:08
Austin purl++
Whiteknight well, I got told.
Austin botsnack
purl :)
Austin lol
cotto_work purl wins 01:09
purl MENTALITY!
Austin Whiteknight, the bitwise stuff is aimed, I think, at managing buffers.
Remember that Parrot is the ultimate VM for Perl 5.
dalek rrot: r43839 | plobsing++ | branches/opengl_dynamic_nci:
creating branch to explore building opengl without dependency on core nci (src/nci.c)
01:10
rrot: r43840 | plobsing++ | branches/opengl_dynamic_nci (3 files):
build parrot without opengl signatures and add opengl thunks to build of runtime/parrot/dynext/libglutcb.so
01:12 mikehh joined
plobsing anyone know how to get the CONST_STRING macro to behave nicely outside of core? 01:12
cotto_work It requires some magic and postprocessing by an external perl script. You can manually create a string constant with Parrot_str_new_constant(interp, "ohai"); 01:14
01:23 eternaleye joined
Whiteknight my brain hurts 01:44
plobsing cotto_work++ it works! 01:45
cotto_work what does?
nm. the string constant
karma cotto_work 01:48
purl cotto_work has karma of 11
kid51 gc_encapsulate_part2 branch: Linux/i386: PASS make test, buildtools_tests, codetest 01:54
Whiteknight karma cotto 01:55
purl cotto has karma of 1115
dalek rrot: r43841 | plobsing++ | branches/opengl_dynamic_nci/tools/build/nativecall.pir:
add --core option to create nci thunk files suitable for core. handle CONST_STRING correctly outside of core.
01:59
rrot: r43842 | plobsing++ | branches/opengl_dynamic_nci/config/gen/makefiles/root.in:
actually link glut_nci_thunks.o into glut_callbacks.so
Austin seen pmichaud? 02:01
purl pmichaud was last seen on #parrot 8 days, 10 hours, 32 minutes and 21 seconds ago, saying: okay, excellent work. [Feb 1 15:29:13 2010]
Austin Hmm. Does anyone else know about the innards of P6object, and how they relate to PMCProxy? 02:02
cotto_work You could check svn blame on some of the files. 02:07
Austin point 02:08
Svn blames pmichaud, jonathan, tene, for the most part. 02:12
seen jonathan?
purl jonathan was last seen on #parrot 92 days, 45 minutes and 9 seconds ago, saying: Full marks for another refactor that's probably made Parrot slower again though. :-/ [Nov 10 01:27:23 2009]
Austin Tell me he's got a different irc id 02:13
seen tene?
purl tene was last seen on #parrot 1 hours, 16 minutes and 58 seconds ago, saying: does he also like to drink it, or does he just add the soy sauce and expect someone else to drink it?
Austin tene: ping
cotto_work He usually hangs out in #perl6 on Freenode as jnthn
kid51 seen jnthn?
purl I haven't seen 'jnthn', kid51
bacek_at_work seen jonathan 02:14
purl jonathan was last seen on #parrot 92 days, 46 minutes and 45 seconds ago, saying: Full marks for another refactor that's probably made Parrot slower again though. :-/ [Nov 10 01:27:23 2009]
bacek_at_work nice...
Austin No esta alla. 02:16
cotto_work you mean jnthn? He's there.
Austin cotto++ Good idea with the blam.e
*e.
cotto_work I like that tool.
Austin svn++
cotto_work It doesn't make me dislike svn more. 02:20
eternaleye git++ # Bisect and blame go together very well 02:31
dalek rrot: r43843 | coke++ | branches/rm_cflags (7 files):
avoid more unused warnings.
02:33
Whiteknight these bitwise ops are maddening 02:51
there are about a hundred more of them than anybody needs
2-argument forms, 3-argument forms, and every permutation of PMC and INTVAL parameters that you can imagine 02:52
I wish somebody could explain to me the use case for all this garbage
who the hell uses bitwise ops so much that they need all these options
or, maybe somebody was on a grant and was getting paid per op, so he wrote up a bajillion of them 02:53
cotto_work worst grant ever, unless you're the one getting paid
Whiteknight echo "All the bullshit, unnecessary bitwise ops" >> DEPRECATED.pod
Austin Oh look. More snow.
Whiteknight </rant>
Austin: if snow were money, we'd be kicking butt 02:54
Austin Whiteknight, I have another GSOC suggestion for you.
Whiteknight Austin: shoot
Austin Currently, the OO system is committed to C3 linearization. IMO, this is a mistake. Not because it's buggy, but because the linearizer is a language choice. C3 is not the linearizer used in Dylan (96), CLOS, etc., as pointed out in the C3 paper (which says, "here's C3 compared to these other ones"). Ergo, linearization should be configurable, just like calling conventions. 02:55
In general, I think we need a pluggable MOP 02:56
Whiteknight so, a pluggable linearizer 02:57
Austin Linearization is a part of class management.
cotto_work it's in line with 'pluggable everything'
Austin Pmichaud implemented P6object, for example, which builds on top of Parrot-oo. But that's probably a special case. 02:58
02:58 hercynium joined 02:59 JimmyZ joined
Coke feather is running 99% 'readproctitle'. wtf. 03:00
MRO is pluggable already, no?
(in that you can do what rakudo did.) 03:01
Austin What did rakudo do?
Coke ... plugged in an MRO? (he said, circularly.)
I have no specifics for you. 03:02
Austin :)
03:02 mikehh joined
Austin For all we know they may have implemented the entire thing in PIR. 03:02
(Which is, IMO, the right answer for 95% of PMC types.) 03:03
Coke ugh. feather is pretty much unusable.
dukeleto 'ello
Austin Hey, duke.
cotto_work hi dukeleto
Coke will let make test run overnight instead of in 3m.
dukeleto Austin: howdy
dukeleto is working on a "intro to parrot" talk for PDX.pm tomorrow 03:04
Austin What's PDX.pm?
purl Do you mean portland.pm.org?
cotto_work dukeleto++
dukeleto Austin: Portland Perl Mongers
Austin Ah
cotto_work will it be recorded? 03:06
dalek rrot: r43844 | whiteknight++ | branches/vtable_massacre (13 files):
nuke the bitwise VTABLEs from all the PMC types. Start the conversion process on the ops to get us building again, but it's taking time and I don't want to leave it uncommitted overnight
Austin No way!
Then everybody from parrot-dev will be looking at it and telling him all the stuff he *should* have said.
cotto_work and then it'll improve 03:07
dukeleto cotto_work: usually there is audio. video is being talked about 03:08
cotto_work Cool. Post the audio here when it becomes available.
dukeleto cotto_work: will do 03:10
cotto_work I look forward to listening to it. 03:11
dukeleto ok, so somebody says "what is parrot?" What is your one sentence answer? 03:15
cotto_work It's a VM built from the ground-up for dynamic languages and interoperability. 03:16
s/-// 03:17
something like that
Austin "Parrot is how I get frustrated when I don't have enough money to visit the strip club."
03:18 mikehh joined
dalek rrot: r43845 | whiteknight++ | branches/vtable_massacre/src/ops/bit.ops:
update the shr ops. Also, remove an 'evil' lvalue cast. Seriously, it was easy to get rid of, so why write a paragraph-long explanation about why it's evil but we're living with it anyway?
03:22
rrot: r43846 | whiteknight++ | branches/vtable_massacre/src/ops/bit.ops:
convert lsr ops
dukeleto Austin: awesome. 03:23
this is the meeting info: calagator.org/events/1250458251
Austin Hmm...I didn't know we were "still reeling". Did you know that, Whiteknight? 03:26
cotto_work Austin, ? 03:27
purl Austin, is there one that builds with Rakudo's current required version (r41447)?
Austin laugh
I think purl's quoting you, cotto. 03:28
cotto_work I think you
Austin According to CNN, we're still reeling from last week's snow.
cotto_work 're right
Whiteknight still reeling?
Austin Meanwhile, in DC the federal gov't told federal workers to stay home for the second day. 03:29
cotto_work I also think it's high time I went home.
Austin We need more snow in DC.
Whiteknight needs a government job
like 30 paid holidays, terrible customer service and a horrible attitude are the norm, and whenever it snows we get to stay home with the kids
get to sit on a 30,000$ toilet seat 03:30
feel like a king
Austin NWS now predicting 8-14 inches of snow here. I'm starting to feel ripped off. A few days ago, they were promising 20-30 inches. 03:31
Whiteknight sounds like some of the promises I made to women back in college 03:32
OH SNAP
...and on that note. It's off to bed. 03:33
goodnight
kid51 must sleep 03:39
purl $kid51->sleep(8 * 3600);
03:48 janus joined
dalek tracwiki: v26 | kurahaupo++ | ArrayTasklist 03:53
tracwiki: Link to WhiteKnight++ 's Array splintering on GitHub
tracwiki: trac.parrot.org/parrot/wiki/ArrayTa...ction=diff
03:55 jsut joined
Austin So what's the protocol for committing failing tests? 04:12
plobsing I would todo them and refer to (open if necessary) a relevent ticket 04:18
04:19 jsut_ joined 04:53 bacek joined
Austin plobsing++ # Thanks for the pointer. (Man, is it hard to do "todo" in pir) 05:02
dalek rrot: r43847 | Austin_Hastings++ | trunk/t/oo/mro-c3.t:
Added test for TT#1426
cotto todo in pir isn't especially clever 05:06
Austin It's the "catch the exception thrown by C3" that was messing me up.
Anyway, woo. My first commit. 05:07
cotto woo indeed 05:10
mikehh add another woo 05:11
dalek tracwiki: v152 | Austin_Hastings++ | WikiStart 05:17
tracwiki: Added c3 link
tracwiki: trac.parrot.org/parrot/wiki/WikiSta...ction=diff
dukeleto Austin_Hastings++ # congrats on your bit 05:40
Austin: did you add yourself to CREDITS? 05:41
Austin Not yet.
I found another way to commit something.
dukeleto Austin: make sure to add Austin as with a U: so your karma it properly counted
Austin Could you say that in english?
dukeleto Austin: ug. bad grammar
Austin: you should have two U: lines in CREDITS 05:42
Austin: U: Austin and U: Austin_Hastings
Austin: that lets the karms bots know that Austin++ and Austin_Hastings++ are the same
s/karms/karma/
Austin Ahh
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32133), fulltest) at r43847 - Ubuntu 9.10 amd64 (g++ with --optimize)
Austin Would that be U: or A:, or does it matter? 05:43
dukeleto Austin: you are right, it is an A: 05:45
mikehh++
Austin karma g
purl g has karma of 917
Austin :)
dukeleto karma c
purl c has karma of 8360
dukeleto c--
treed c-- 05:47
dukeleto Austin: twitter.com/parrotvm/status/8890150873 05:48
Austin :)
dukeleto i really need to work on my parrot talk for tomorrow. FOCUS! 05:49
did anybody know about this? www.programmersheaven.com/2/Parrot-...r-Everyone 05:52
Austin What's the level of detail of the talk? 05:53
dukeleto Austin: i am going to do half the time as a brief intro, then I want to break out onto the command line and actually run the create language script and then explain the files that it creates 05:54
Austin So it's "your probably know what parrot is, but here's how to get started on it" ?
Okay, this is just totally wrong. 05:55
oo.c line 1173: An intval "list_count" is declared inside a for loop, masking the "list_count" in the outer block. 05:56
petdance-- 05:58
06:00 kurahaupo joined
Austin Hmm... not for nothing, but given that candidate classes are prohibited from being in the tail (index > 0) of other lists, couldn't we optimize this later search to only look in position 0? 06:01
(Effectively optimizing from O( [n - 1] **2 ) down to O( n-1 ), in a scenario where the most common value of 'n' is 2. 06:02
06:03 particle joined
dukeleto Austin: sounds reasonable. it might be good to mail the list about that 06:06
Austin :)
dukeleto Austin: is listcount masked on purpose?
Austin O(1 **2) vs O(1) you mean?
Ahh, list count.
Clearly it's on purpose, but it's "here's a list-of-lists with its count, and here's one of them, with its count" 06:07
dalek rrot: r43848 | plobsing++ | branches/opengl_dynamic_nci (3 files):
cause OpenGL.pbc to load nci signatures from libglutcb on load.
06:24
plobsing It's a little crude, but I've got opengl working without compiling thunks into parrot. 06:25
dukeleto plobsing: sounds cool! 06:31
plobsing: japhb will probably be interested. i haven't seen him lately
plobsing msg japhb I've got opengl to work without adding opengl signatures to src/call_list in the opengl_dynamic_nci branch
purl Message for japhb stored.
06:54 szabgab joined
dukeleto does anybody actually use parrotbug? 06:59
07:07 cognominal joined 07:15 uniejo joined 07:16 chromatic joined
cotto dukeleto, nobody's used or mentioned it in recent memory 07:22
I think whiteknight got a little excited in vtable_massacre. 07:28
It'd be easier if he'd converted the ops before nuking the VTABLE functions. 07:29
Austin sings, "Well he's just an excitable boy..."
dalek tracwiki: v1 | Austin_Hastings++ | C3%20linearization 07:30
tracwiki: Created while trying to comprehend C3 code.
tracwiki: trac.parrot.org/parrot/wiki/C3%20li...ction=diff
dukeleto cotto: well, it is in my talk, so I hope it works :) does it have tests? 07:36
cotto dukeleto, the bitwise ops/vtable functions are in your talk? 07:37
nm. parrotbug
07:39 eternaleye joined
cotto I don't think it has any tests. 07:44
Austin Heh.
Given that one PMC type "extends" another PMC type, should the init method of the child do its own init, or should it call its parent init function? 07:46
*method => vtable
dalek tracwiki: v2 | Austin_Hastings++ | C3%20linearization
tracwiki: Added source links
tracwiki: trac.parrot.org/parrot/wiki/C3%20li...ction=diff
07:47 iblechbot joined
chromatic It should do its own init and redispatch to the parent manually. 07:48
Austin Meaning that child.pmc's init() should call parent::init(), or what?
chromatic yes 07:50
Austin Okay.
chromatic *Iff* that PMC requires it.
Austin What's the difference between init and init_pmc?
chromatic The latter takes a PMC as an initializer.
See, for example, PMCProxy taking an Integer PMC containing the value of the type of the core PMC to proxy. 07:51
Austin So they're called in similar contexts, but init is "default values" while init_pmc is "and copy stuff from here", right?
That's what I'm looking at now. 07:52
chromatic That's right.
Austin Trying to get my head around PMC proxies and P6object classes.
Given that PMCProxy extends Class, if the Class PMC has a methcache, doesn't Proxy also have that? 07:53
chromatic Yes.
Austin Proxy doesn't do anything with it in init(). 07:54
chromatic Tattletale.
Austin For that matter, Class doesn't appear to use it, either.
Just declare it, init, and mark.
chromatic PMCProxy's init() could get a lot shorter if it called the parent implementation. 07:55
Austin There's meth_cache, and also Class sets "is_anon" on itself
Whatever that means.
chromatic The Object PMC manipulates the meth_cache attribute. 07:56
Austin Ahh. 07:57
(!!!)
About C3 MRO 07:59
Do you recall how an MRO can be null?
$_PARROT/src/oo.c:1244 08:00
dalek rrot: r43849 | cotto++ | branches/vtable_massacre/src/ops/bit.ops:
[bitwise] convert the remaining bitwise ops to avoid the bitwise VTABLE functions
08:02
nopaste "cotto" at 96.26.227.153 pasted "test failures in vtable_massacre as of r43850" (13 lines) at nopaste.snit.ch/19529 08:14
cotto msg whiteknight The following test failures remain in vtable_massacre: nopaste.snit.ch/19529 08:15
purl Message for whiteknight stored.
cotto time for slep
dalek rrot: r43850 | cotto++ | branches/vtable_massacre/src/ops/bit.ops:
[bitwise] fix some bugs found by reading the code, sadly several test failures remain
08:19
Austin Oh good grief. 08:21
Is there a lisp coder in the house? 08:22
08:42 cosimo joined
dukeleto has 12 slides! 08:47
Austin That should be an hour, at 5 minutes per.
eternaleye Austin: What about thceme? (sorry for the pun, I know neither language) 08:48
Austin eternaleye: Too late. We're boned.
You can never find a lisp coder when you really really need one.
chromatic Austin, I don't know. 08:49
Austin "It's not a bug, it's a feature." 08:57
08:57 mj41 joined
dalek TT #1426 closed by Austin_Hastings++: C3 linearizer fails on two plain (P6object) classes 09:04
09:14 cosimo joined
dukeleto parrot.org/people really needs an overhaul 09:24
chromatic Wow. 09:30
09:35 bacek joined
dukeleto msg whiteknight what plans do you have for parrot-math-functions? i am all about it 09:37
purl Message for whiteknight stored.
bacek me again 09:42
any objections to merge gc_part2 branch? 09:43
09:47 fperrad joined
dukeleto o hai 09:52
bacek: if it passes the test suite, no.
bacek dukeleto, unfortunately our test suite isn't 100% comprehensive... 09:53
moritz that's an euphemism :-) 09:54
bacek moritz, :) 09:55
moritz, can you test rakudo on gc_encapsulate_part_2 branch?
(and rakudo can't be built with c++) 09:56
moritz bacek: will do 09:57
bacek moritz, thanks. I'm testing ng branch on Linux/i386 now 09:58
moritz, is make test enough or I need spectest?
moritz bacek: I'm doig 'make spectest' in the 'ng' branch 09:59
bacek moritz, ok
moritz master is nto very well tended these days
10:00 cognominal joined
bacek moritz, ouch... How much of spectest expected to pass? 10:04
nopaste "moritz" at 131.188.70.66 pasted "spectest summary of ng on parrot trunk" (22 lines) at nopaste.snit.ch/19530 10:05
moritz no idea about rakudo master 10:06
bacek 4 failed tests, 1 segfault... 10:07
sigh...
t/spec/S32-num/abs.rakudo (Wstat: 0 Tests: 60 Failed: 0) 10:08
TODO passed: 9-10, 14-15, 29-30, 34-35
t/spec/S32-str/split-simple2.rakudo (Wstat: 0 Tests: 41 Failed: 0)
TODO passed: 39
Files=113, Tests=3049, 200 wallclock secs ( 1.30 usr 0.21 sys + 317.80 cusr 7.59 csys = 326.90 CPU)
Result: PASS
interesting. This is on my box...
nopaste "moritz" at 131.188.70.66 pasted "test summary of ng 'make spectest' on gc_encapsulate_part2" (22 lines) at nopaste.snit.ch/19531 10:09
moritz this is amd64 linux (Debian Stable) 10:10
bacek moritz, results are same
but why it's 2x faster on part2 branch??? 10:11
moritz bacek: because I had more cores available
during the run on trunk I built the branch in parallel
bacek moritz, ah, ok
so, no objections from Rakudo and Lua 10:12
I can deal with Coke later :)
moritz wait
there are differences
bacek merge part^W^W
where???
moritz wait 10:13
sorry
I was confused by different order of output
bacek it crashed with SEGFAULT instead of SIGBUS on sign.t
moritz it's ok
bacek merge party! 10:14
:)
r43851 10:15
bacek poke dalek with stick
bacek offer cheap karma for deleting branch from svn 10:22
And gc_encapsulate as well 10:24
... as _part_2
dalek rrot: r43851 | bacek++ | trunk (7 files):
Merge branch gc_encapsulate_part_2 back to trunk.
10:29
10:30 fperrad joined
moritz done 10:31
10:33 payload1 joined
dalek rrot: r43852 | moritz++ | branches/gc_encapsulate_part2:
Delete gc_encapsulate_part2 branch as requested by bacek++
10:45
rrot: r43853 | moritz++ | branches/gc_encapsulate:
Deleting brnach gc_encapsulate as requested by bacek++
bacek msg whiteknight I probably broke GC_INF. Feel free to fix it :) 11:07
purl Message for whiteknight stored.
11:15 mikehh joined 11:24 payload joined 12:08 ruoso joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32139), fulltest) at r43853 - Ubuntu 9.10 amd64 (gcc with --optimize) 12:09
12:33 barney joined
dalek rrot: r43854 | bacek++ | trunk (4 files):
Split handling of command line args into 2 parts.

  - C<imcc_handle_flag> contains IMCC specific handling
This will give us ability to easily replace IMCC with PIRC. Work isn't finished yet because we still have longopt_opt_decl with all options, but it's good start.
12:40
13:03 lucian joined 13:06 Whiteknight joined 13:07 tetragon joined
ttbot Parrot trunk/ r43858 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/192102.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) 13:08
dalek rrot: r43855 | bacek++ | trunk (3 files):
Split make_interpreter into allocate and initialize parts. It will give
13:13
rrot: r43856 | bacek++ | trunk (2 files):
Rerun headerizer
rrot: r43857 | bacek++ | trunk/src (2 files):
Fix codetest failures
rrot: r43858 | bacek++ | trunk/src (2 files):
Move setting default GC type from init_gc into allocate_interpreter.
bacek msg whiteknight I definitely broke INF GC. Now you can test it with "./parrot --gc inf foo.pir" 13:25
purl Message for whiteknight stored.
bacek On this positive note I'm going to bed 13:26
Whiteknight bacek: awesome
bacek Whiteknight, ah, you are here!
Whiteknight just woke up!
bacek C'mon! It's midnight already. You sleep too much! 13:27
Whiteknight bacek++ 13:28
bacek Anyway, starting from r43860 it's possible to set GC from CLI.
Whiteknight yes, I see. Very awesome! 13:29
can you set it in make test?
dalek rrot: r43859 | bacek++ | trunk/src (2 files):
Fix previous commit - allocate interp->gc_sys in allocate_interp.
rrot: r43860 | bacek++ | trunk/src/main.c:
Add handling of CLI GC switching.
bacek Whiteknight, yes, why not? 13:30
Whiteknight how?
"make test --gc inf"?
bacek ah 13:33
You have to update makefiles (and probably t/harness to support it)
Whiteknight ok. I can do that
bacek oh.. SET_TRACE called too early. 13:39
fixed. 13:45
dalek rrot: r43861 | coke++ | branches/rm_cflags/src (3 files):
Cleanup more unused
13:46
rrot: r43862 | bacek++ | trunk/src/main.c:
Don't use Parrot_exit in Parrot_version. Interp ins't initialized yet.
rrot: r43863 | bacek++ | trunk/src/main.c:
Fix handling trace CLI options
13:48 kjeldahl__ joined
Coke wonders how long it will be until someone gets the bright idea to rewrite the test harness in nqp-rx. 13:55
"<@bacek> I can deal with Coke later :)" RAWR! 13:57
Whiteknight we can't rewrite parrot's harness in nqp-rx, unfortunately
we can't even completely rewrite it in PIR if we wanted 13:58
Coke not all of it, no. but you could write the majority of things using nqp to wrap the actual bits you're testing to simplify test writing.
(since you can drop down to PIR to test actual opcodes, etc.) 13:59
(this was in response to someone complaining in backscroll about how hard it is to write a TODO test in pir.) 14:00
Whiteknight you can't write the test in NQP until you've tested all the parts that NQP uses
Coke fair enough, but you can reduce that amount by compiling it to PIR and then just using that PIR. 14:01
dalek rrot: r43864 | plobsing++ | branches/opengl_dynamic_nci (3 files):
svn:ignore and clean new files
14:03
Whiteknight you can, through a bootstrapping step, yes.
Coke bemoans again how slow feather is. 14:06
Coke needs to get a machine he can compile on locally again.
feather? 14:08
purl somebody said feather was feather.perl6.nl/ or a perl6 community development server or run by juerd.
Coke pings juerd. 14:11
dalek rrot: r43865 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
Promote a warning that the build is clean on.

  --This line, and those belffow, will be ignored--
M config/auto/warnings.pm
14:20
mikehh bacek: I am getting serious test failures all over the place - make corevm/make coretest 14:22
mj41 mikehh: r43863 seems ok on TapTinder tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk 14:24
mikehh might be related to --optimize 14:25
Whiteknight on the branch? 14:27
mikehh got to go out for as bit - bbl
dalek rrot: r43866 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
Don't bother probing for a fake warning.
14:37
rrot: r43867 | mikehh++ | trunk/src/main.c:
add cast to src/main.c to allow g++ to build
rrot: r43868 | whiteknight++ | branches/vtable_massacre (3 files):
fix two tests. arithmetics_pmc.t had a bad plan. bitint.t had some tests for shift left and right, but those vtables no longer exist and tests are not valid. If BigInt wants that capability still, we can re-add it using method calls
14:38 bacek joined 14:46 plobsing joined
dalek rrot: r43869 | whiteknight++ | branches/vtable_massacre/t/pmc/multidispatch.t:
multidispatch.t had a bad plan
14:54
Whiteknight vtable_massacre passing coretest now after removing bitwise ops. 15:10
NEXT!
dalek rrot: r43870 | whiteknight++ | branches/vtable_massacre (2 files):
my editor auto-removed whitespace from string.t Fix the bnots ops to not get the pointer voodoo so wrong. string.t passes now
rrot: r43871 | coke++ | branches/rm_cflags/config/gen/makefiles (2 files):
Don't need CFLAGS manipulation, just turn off these warnings.
15:17 cognominal joined
dalek rrot: r43872 | coke++ | branches/rm_cflags/lib/Parrot/Docs/File.pm:
This file is gone...
15:43
15:49 theory joined 15:56 Psyche^ joined
Tene Austin: pong 16:03
Coke Juerd++ 16:05
szbalint what did Jesus^WJuerd do? 16:06
dalek rrot: r43873 | whiteknight++ | branches/vtable_massacre (10 files):
remove *pow* vtables. Update all tests and PMC types. Notice that I replaced pow() in Complex BigInt, and BigNum types with experimental methods that perform the same operation. If we like this, we can add tests for them. Otherwise, delete them
16:16
Coke szbalint: he made feather go. go fast. 16:18
szbalint \\o/
Coke wonders if this looks like a zombie chasing you: 16:20
fof
szbalint hehe 16:22
Coke yapc 2010 call for papers. 16:27
Whiteknight resists the urge to rip out a few dozen other of his least favorite vtable methods 16:28
Coke ponders something perly.
16:31 kjeldahl joined 16:34 darbelo joined
dukeleto good localtime() 16:41
16:43 kjeldahl joined
Whiteknight hello duke 16:46
dalek rrot: r43874 | whiteknight++ | branches/vtable_massacre (3 files):
remove set_bignum_int vtable from Integer.pmc. Last vtable I think we need to remove. Passes all tests
16:48
Whiteknight wasn't the splice vtable deprecated and supposed to have been removed? 16:51
I thought it was 16:52
dukeleto Whiteknight: howdy!
Whiteknight: you have been quite busy lately. I just saw your parrot-math and parrot-data-structures projects 16:53
Whiteknight: i will definitely help with both
darbelo dukeleto: ping 16:57
Whiteknight dukeleto: awesome! you want commit bits?
dukeleto Whiteknight: yes please! 17:10
darbelo: pong
Coke anyone here building on cygwin that could help the poor guy on perl6-compiler?
I just tried to build and can't even make it past "which compiiler should you use" 17:11
darbelo dukeleto: I'm scouting projects for SoC and saw the link Parrot on RTEMS. Do you know if that's going to be handled by Parrot or RTEMS? 17:12
darbelo strikes a pose and shouts "PARROTS IN SPACE!"
dukeleto darbelo: it has not been decided yet, but it shouldn't matter much which org "hosts" the project 17:13
darbelo It does when looking for mentors ;)
dukeleto yes, and joel sherril's idea of a parrot with a space helmet is awesome
darbelo: the mentors for the project will most likely be Chris Johns, Joel Sherril, me and/or some other RTEMS peeps 17:14
NotFound Who has experience in creating parrot .deb packages? 17:16
17:16 theory joined
darbelo NotFound: allison did the ubuntu packaging IIRC 17:17
17:17 cotto_work joined
NotFound I have parrot built in the scratchbox of the Maemo sdk, but don't know how to package it to install in the N900 17:17
And I want a parrot in my phone :) 17:18
darbelo dukeleto: Good to know. I'm still building my RTEMS toolchain, but I intend to be all over this project. 17:19
dalek TT #1432 created by whiteknight++: Remove 2-argument math ops 17:20
TT #1433 created by whiteknight++: Add a vtable function to get arithmetic mode
particle Whiteknight: how do you set the numeric mode? is this a dynamic thing that can change during the life of the pmc instance, or something that's constant over all pmcs of that type? 17:22
Whiteknight: it seems like a role to me.
Whiteknight particle: I'm thinking it's a properly of the PMC class. Very much like a role, yes 17:23
maybe a role is the way to do it
but an overridable vtable will have better performance and still give good flexibility for user-defined types
cotto_work good morning internets
Whiteknight hello cotto_work
do you wake up at work?
internets good morning cotto_work 17:24
dukeleto particle: howdy
NotFound Whiteknight: What's the problem with falling backk to default PMC? Default PMC can throw a meaningful error, without the need of checking flags.
purl que tal, dukeleto.
dukeleto cotto_work: must be nice when the internets says "good morning"
internets ;) 17:25
17:26 mikehh joined
cotto_work Whiteknight, only when I fall alseep at work 17:26
NotFound In fact, I don't see the whole point of TT #1433. A Complex don't want to be treated as an INTVAL or as a FLOATVAL. It wants to be treated as a Complex. 17:28
Whiteknight NotFound: it's decent, but not as good as it could be 17:29
17:29 cotto_work joined
particle hola, duke 17:29
Whiteknight "PMC foo is non-numeric for use in operation bar" is a better error message than "vtable bar not found"
but that's a preference
I would be happy if the new VTABLE returned a bool too
particle a vtable is baggage for non-number types 17:30
NotFound Whiteknight: you just put that message in Default and you're done.
Whiteknight NotFound: then the message only means that we are missing a particular vtable, not that the type is inherently non-numeric
in a user-defined type when the user hasn't implemented several dozen mathematics ops, the difference is important 17:31
in any case, the error message is the least important detail of the whole proposal
particle in user-defined pmcs, the pmc may decide to respond to different math ops in different contexts 17:32
for bitwise shift and mod, i'm an int. for add and mul, i'm a float.
these are dynamic languages we're supporting. 17:33
NotFound Whiteknight: if you want that type of messages and behaviour, we can create a NonNumeric PMC and inherit from it. 17:34
Whiteknight particle: so then we're doomed to absolute inconsistency in our ops? I suggest that an op should either always do what it's name implies, or we should have a thinner and more flexible layer over the vtables directly 17:35
fewer vtables is a very good thing, so we want to move in that direction 17:36
particle we really need pmcroles created 17:37
17:37 lucian joined
Whiteknight particle: that's true, no doubt. But that whole system has a lot of maturation to do 17:37
particle inheriting from a NonNumeric PMC isn't the right way to go, it should be composed from a NonNumeric PMC
Whiteknight A way for us to define and enforce roles in the code is a great first step
NotFound We can just kill add PMC, INT and add PMC, NUM, leaving only add PMC, PMC
Whiteknight NotFound: exactly
dalek TT #1434 created by whiteknight++: Slim down selection of mathematics vtables 17:38
Whiteknight the more vtables we can get rid of, and the more ops we can move out of core, the better
NotFound Whiteknight: then you don't need a flag, just call VTABLE_add
17:38 cotto_work joined
Whiteknight NotFound: think bigger. All the trig ops are moving out of core. We obviously don't have VTABLE_sin(). So when we pass a PMC to sin_p_p, how do we know it's a valid operation? 17:39
we have to call VTABLE_get_number and VTABLE_set_number_native, but we don't know that a type has those. 17:40
NotFound Whiteknight: When i call: Hash.'open' how I know it's a valid operation?
Whiteknight Maybe we call it on an integral type, so sin_p_p can call "FLOATVAL a = (FLOATVAL)VTABLE_get_integer" instead
NotFound: I don't know, that's a different issue entirely
Coke Whiteknight: every type has get_number 17:41
darbelo Whiteknight: If it succeds, it's a valid operation.
Whiteknight My point is this: we don't have good encapsulation, we don't have any way to determine whether a numeric PMC should be treated as an integer or a float, so we make guesses and require all numeric PMCs provide VTABLEs to act like both
NotFound Looks the same to me. Do something with that, or throw.
Coke if you don't want it to be numeric, make get_number fail. 17:42
Whiteknight Integer.get_float() takes it's integer value and just casts it to a float. That's stupid. Nobody should be calling get_float on Integer in the first place
we should get the integer value and cast it to whatever we need once we get it
Coke Whiteknight: ... no.
we should ask it for the type of value we want.
Whiteknight Coke: yes. Integer contains an integer, not a float.
dukeleto Whiteknight: no one should on purpose, but sometimes it happens via various levels of indirection
darbelo Whiteknight: $N0 = $P5 17:43
Whiteknight we should ask for the type it has. The op makes the cast it needs. This gives us better encapsulation between the PMCs and the OPS
Coke Whiteknight: encapsulation doesn't usually mean "i have to write a lot more code". =-)
which i would here.
Whiteknight darbelo: set_number_n_p would get the numeric value, cast it to a float if necessary, and return it
Coke: this way would reduce code
NotFound Whiteknight: asking for something before almost any operation is a waste of time and a mess of generated code.
Whiteknight because we wouldn't need to add get_float() for non-float types 17:44
or add get_integer for non-int types
Coke Whiteknight: but adding get_float is /trivial/ - what problem are you trying to solve here?
darbelo Whiteknight: So set_number_n_p will have to specail-case anything that holds an INTVAL?
Whiteknight we write the cast once, in the op, and don't have to add all the unnecessary accessors in every PMC type
Coke Whiteknight: not everything goes through an op.
Whiteknight Coke: The problem I'm trying to solve is decreasing the overall number of ops, decreasing the overall number of vtables, and increasing overall performance 17:45
Coke Whiteknight: we're talking about 3 accessor types. one for each non-pmc register type.
Whiteknight: you're not decreasing the # of vtables here.
unless we are also going to have to have different available vtables per pmc.
purl okay, Coke.
Whiteknight darbelo: set_number_n_p would ask the PMC what kind of value it had, and act accordingly
Coke: three accessors for every type of operation. get_number, get_number_keyed, get_number_keyed_int, ... 17:46
it adds up, and we have a shit-ton of unnecessary cast code throughout src/pmc to account for all sorts of presupposed needs from theoretical HLLs
Coke ok. can we set aside the issue of container-related vtables for the moment?
that leaves the 3 core gets. 17:47
yes?
Whiteknight Integer PMC contains an integer and should be able to provide an integer on demand. It is not the job of integer to anticipate the existence of other types, and provide special accessors to get all of them
Coke (or am I missing more?)
Whiteknight Coke: in that limited subset, yes
17:48 cognominal joined
Whiteknight Integer, for instance, should not provide get_complex, get_bignum, get_bigint, get_rational, etc 17:48
Coke: the big savings we get from this is not to remove get_float from Integer, and get_integer from Float 17:49
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32140), fulltest) at r43874 - Ubuntu 9.10 amd64 (g++)
Whiteknight the big savings is in being able to delete large numbers of mathematics VTABLEs, move them into ops, and then move those ops to dynops
mikehh however I get mega test failures if I build with --optimize on both gcc and g++
Whiteknight and along the way we get improved performance and improved consistency 17:50
Coke can you give me an example of a vtable you'd like to remove?
like, subtract, subtract_int, subtract_float ?
Whiteknight Most of them are already mentioned in tickets 17:51
all the i_* ops for instance, all the trig ops, ln, log, log10. gcd, lcd, and fact.
Coke ... those are ops.
I thought we were talking about vtables just now.
Whiteknight oh, I misread. Those are the ops I want to remove, and we need improved consistency in our PMC interfaces to do that 17:52
NotFound Whiteknight: If i do PMC = log PMC I don't see the need to ask if the PMC likes to be a float or an int. The log of a Complex is a Complex. 17:54
Whiteknight NotFound: so do we need to have a log() VTABLE for all PMC types? 17:55
that's a huge waste of space for a trivial need
Coke Whiteknight: it's a pointer, which for anything that doesn't care, will just be the default PMC's version. 17:56
NotFound Whiteknight: at least it works. Limiting the operation to thinks int-alike or float-alike doesn't work.
Coke if log is an opcode (and not a vtable), how would it work on non int/float pmcs? 17:57
(which i guess just rephrases what nf said.)
Whiteknight Coke: it's not just a pointer. It's allocated storage space for a pointer for every single PMC type
NotFound If we are going that way, just kill the ops and use methods. 17:58
Whiteknight Coke: in the few PMCs that need log but are not scalar-numeric, we can easily call a method
Coke Whiteknight: sorry, yes, "pointer per instance of PMC"
Whiteknight notice that we don't have a VTABLE_log() right now 17:59
NotFound And if you want to write and generate code that wants int or floats, use registers.
Coke Whiteknight: ok. so every time we call log, we'd have to check to see if it defines a method, and invoke it.
(and if not, then we can do the math on the float value)
mikehh I am getting Segmentation faults all over the place with an --optimize build in make corevm/make coretest and make test 18:00
Whiteknight and at the moment, when we call the log op, it does a VTABLE_get_float
Coke: so making the ops slightly more intelligent would actually FIX them to work with complex the way it should be
at the way there is no way to tell that Complex does not contain a scalar numeric value
Coke Whiteknight: at the expense of slowing it down everywhere else.
Whiteknight Coke: strongly disagree. No performance penalty 18:01
Coke Whiteknight: really? how do you know if you should be calling the method?
Whiteknight if the PMC is flagged as non-numeric
Coke there is a cost to invoke&fail, or check-to-see-if-invoke.
Whiteknight: but a complex PMC /is/ numeric. or do you mean just not one of the two basic types of numeric?
Whiteknight Coke: Numeric, yes. Scalar-numeric, no 18:02
big difference
purl big difference is that we eat the swiming muscle of most of those.
Whiteknight and at the moment, we assume that all PMCs passed to the log opcode are scalar-numeric and that they define the get_float VTABLE
and that's a stupid, encapsulation-breaking assumption to make
Coke it is NOT unreasonable to assume that a PMC provides a vtable.
Whiteknight because it doesn't work with BitInt, BigNum, Complex, Rational, etc 18:03
Coke that is why there are vtables.
right. the log opcode is currently broken.
Whiteknight Coke: it becomes unreasonable for huge numbers of vtables
Coke Whiteknight: "define huge".
Whiteknight Coke: it's not just the log opcode. That's just the example that NotFound mentioned
Coke: VTABLE struct is currently about 2k on some systems
and it's 2k filled with mostly-unused cruft. 18:04
the aggregate costs of keeping those pointers around for all execution runs outweighs the occasional benefits when an application actually needs i_subtract_float
or any of the dozens of other specialized, unnecessary vtables 18:05
less is more
NotFound That's exactly the problem. If you don't have a vtable the only option for an op is to assume is like an int or like a float. To allow polimorphism you need a vtable, or forget the op and call methods.
Well, you can have an op that just call a method.
Whiteknight NotFound: NO!!! Don't assume. It's easy to ask 18:06
"are you int-like, float-like, or neither?"
NotFound Whiteknight: And what if neither?
Whiteknight NotFound: depends on the op. Maybe find_method, maybe throw exception 18:07
NotFound Whiteknight: So you ask again?
Oh, the op.
plobsing considers the costs/benefits of pmc->vtable->secondary_uncommon_math_vtable
Whiteknight NotFound: with dynamic languages, we can't make assumptions. Any assumption we make is going to be horribly wrong for some HLLs
NotFound Whiteknight: The assumption in dynamic languages is: if you do an operation in some variable, you care that it makes sense. 18:08
Whiteknight plobsing: When you consider that most of the uncommon mathematics vtables are defined in terms of a series of more-common vtables, it's hardly a savings anyway
NotFound "you" teh user.
Whiteknight the issue is whether we properly encapsulate the operation logic in the op, or whether we force all PMCs to define their own custom versions over and over and over again 18:09
Coke as an aside, note that most pmcs aren't defining anything, but just inheriting. (where most == those outside of the repo) 18:10
I think a potentially less confusing angle to approach this from, Whiteknight, might be, e.g., the shift/unshift/push/pop opcodes. 18:11
(which could then be extending to all the math variants.)
Whiteknight what do you mean?
Coke I think it's an easier sell to strip those out. 18:12
YMMV.
NotFound I still don't see how can that work. You call sin_p_p and the PMC says he works like a float. What the op does? Evaluete the sin of a float and storing the result in a HLL mapped float? 18:13
mikehh when I say mega I am getting hundreds if not more failing (sub)tests in make corevm/make coretest
Coke NotFound: That is how I understand how it would work, fwiw. 18:15
18:15 chromatic joined
Whiteknight Coke: those are more commonly used operations and probably need to stay core 18:16
When we talk about an op, we have two things: the op and the data. Right now we don't have a clear encapsulation between the two for numeric data and math ops
NotFound I don't think that works. The HLL might want to do something reasonable in case where the operation with registers gives a NaN, for example.
Whiteknight and in return we have tons of inconsistency throughout the core types in how they handle thigns
dukeleto Whiteknight: have you tried logarithms? ;) 18:17
NotFound An HLL can give a failure with the square root of -1, other HLL can give a complex result.
Whiteknight dukeleto: what about logarithms? 18:18
18:18 joeri joined
Whiteknight NotFound: so the HLL provides a type that lists it self as not being scalar-numeric and provides a sqrt() method that returns the desired result 18:18
the op is flexible, so it handles this without changes 18:19
dukeleto Whiteknight: xkcd.com/451/
NotFound dukeleto: :D :D :D 18:20
Whiteknight dukeleto: noce
nice
ops aren't currently overridable, and I suggest that we would't want that anyway. The PMCs are, however, overridable. This is why the op can't make assumptions and why we need to put all the necessary information in the PMC 18:21
The PMC knows if it needs to be operated on as a float or an int, or neither. The PMC knows if it supports certain operations or doesn't support others. The PMC knows how to handle it's own corner cases
Right now, the log op just assumes that we can call VTABLE_get_float, pass that to the libc log() function, and return the result as a FLOATVAL. this is stupid on so many levels 18:22
NotFound Whiteknight: The PMC may know, but a simple ask "Are you an int or a float?" doesn't know all that.
Whiteknight NotFound: hence the need for a third option 18:23
NotFound Whiteknight: a third option is not just for corner cases, is for any usage.
dukeleto Whiteknight: i agree with you. the log op should be smarter
NotFound So that way in practice may be the same as providing the op for int and float registers, and calling a method for PMC. 18:28
Which IMO is a good way, if we manage to make method calls faster. 18:29
nopaste "Whiteknight" at 68.46.29.192 pasted "example log op" (21 lines) at nopaste.snit.ch/19534
Whiteknight dukeleto: almost all ops need to be smarter and make fewer assumptions
now imagine a world where we didn't have _any_ mathematics vtables, and perfect encapsulation between data and algorithm 18:31
dukeleto Whiteknight: it's like that John Lennon song
Whiteknight dukeleto: exactly
chromatic Number Nine? 18:34
purl THE MOTHERSHIP, (Z) CLUSTER GROUPS AND MEMBERS ARE WHOLLY DISORGANIZED. ANY APPEARANCE OF ORGANIZATION IS A DELUSION VISITED UPON MEMBERS BY SORCEROUS ATTACKS FROM THE LORDS OF ORDER.
NotFound Whiteknight: assuming the result is a float doesn't look encapsulated to me.
Whiteknight NotFound: now not encapsulated? The only VTABLEs that we call are get_integer and get_float. The PMC provides the data and the op performs the calculation 18:35
that's perfect encapsulation
NotFound Whiteknight: encapsulated to me is: op log(OUT PMC, invar PMC) 18:36
Whiteknight NotFound: could implement the same exact idea for that too 18:37
18:37 mikehh joined
NotFound Whiteknight: then the idea is wrong. 18:38
The scalar type for some HLL may return non-float for some values. 18:39
nopaste "Whiteknight" at 68.46.29.192 pasted "log_p_p for NotFound" (24 lines) at nopaste.snit.ch/19535 18:40
Whiteknight NotFound: so then we need more. This is just a first draft
But the idea is sound: separate data from function
Maybe use use a vtable. Maybe we use roles. Maybe flags. Maybe attrs. 18:41
In any case, the op should know how to do the op, and the PMC should know how to hold the data
NotFound Whiteknight: that's not exactly the same idea. But the point is that in such way you use the method for *any* operation, not just for log.
VTABLE_get_numeric_type can't know what's the intended operation. 18:43
Whiteknight NotFound: so we find a more flexible approach
NotFound I just can think one: op for int and float registers, method for pmc. 18:44
Whiteknight NotFound: at the moment, we cannot make the log operator DTRT for Complex or BigInt or BigNum or Rational without special cases
and any time the HLL adds a new type, we need a new special case
or, the op doesn't do the right thing
NotFound Yeah, that fact started the debate. The current way is incomplete and hardly extensible without adding lots of vtable slots. 18:45
Whiteknight I would also be very interested to hear about these magical, mythical data types that act like an integer sometime, are floats other times, and are non-scalar for some things too
and then I would like to hear any arguments that such a datatype was both usable and internally consistent 18:46
Complex, for instance, is a non-scalar type and can never really be treated properly by get_intval or get_float
unless we say that get_float returns the magnitude, or the real part 18:47
NotFound Whiteknight: then sqr(-1) is such magical type in any HLL that returns a complex. 18:48
The scalars in that language, I mean.
Whiteknight sqrt is an operation, not a type
but the data type itself is always a complex
NotFound Whiteknight: The data type of -1 ? 18:49
Whiteknight $P0 = sqrt(-1)
but thats a different issue entirely
NotFound Whiteknight: yes, the -1 acts like a integer sometimes, and as a comples in sqr
Whiteknight Find me a PMC type, not an operation, that acts like a float for some arithmetic operations and acts like an integer for others
NotFound: no, -1 is always a scalar number. The OUTPUT of sqrt() is a different value 18:50
purl okay, Whiteknight.
Whiteknight there are two PMCs there: the input and the output. The input is a negative integer, the output will be a complex
but the integer ALWAYS acts like an integer, and the complex ALWAYS acts like a complex
mikehh at r43874 - Ubuntu 9.10 amd64 - g++/gcc builds both ok without --optimize but fail mega with --optimize
NotFound Whiteknight: If the definition of "scalar" is "a float or an int", certainly.
dukeleto Whiteknight: this is why some languages make sqrt(-1) and sqrt(-1+0i) work differently. the first is an error, the second returns a complex 18:51
Whiteknight In this case, I'm defining "scalar" as "has a single integer or float value, suitable for storage in a hardware machine register" 18:52
dukeleto: I'm not talking about the operation. I'm talking about the data type
forget sqrt(), it's not what I'm talking about
purl Whiteknight, I didn't have anything matching sqrt(), it's not what i'm talking about
mikehh in fact g++ with --optimize FAILs around 1689 (maybe more) tests in make corevm/make coretest (AFAICS all with Segmentation faults)
dukeleto Whiteknight: it has a certain symmetry to it. "whatever the type is that you give, that is what you get out"
NotFound Whiteknight: if you say "act", you talk about operations.
dukeleto Whiteknight: /me forgets :)
mikehh and gcc with --optimize looks the same 18:53
chromatic mikehh, do you know which revision is responsible?
Whiteknight NotFound: I'm talkig about vtables. We don't have a sqrt vtable
mikehh everything PASSed at r43853 (gcc with --optimize) - bisecting now 18:54
NotFound Whiteknight: let's talk about pow, then.
But....
18:55 theory joined
NotFound Ah, yes, sqrt is just NUM 18:55
Whiteknight You said that the VTABLE_get_numerical_mode couldn't know whether the PMC should act like an int or a float. I want to see an example of a place where the PMC wouldn't know, or where the PMC would change it's behavior
In the nopaste that I posted
Find me an example where the input PMC doesn't know whether it's an integer or a float? 18:56
or find me an example of where the input PMC needs to change depeding on the operation
NotFound Whiteknight: In the log op? 18:57
mikehh the only commits to trunk after that were from bacek except one by me to get g++ to build
Whiteknight sqrt, it doesn't matter 18:58
Find a place where the input PMC doesn't know what it is
NotFound Whiteknight: SomeScalar(-1)
Whiteknight NotFound: -1 doesn't know what -1 is?
what PMC type is -1?
in the op sqrt_p_p, we take a PMC input. So what type of PMC? 18:59
Coke is a little freaked out that pugs has no trunk.
NotFound Whiteknight: if you want to be able to return some type of complex for log, can't be int or float. If is not int or float, all other ops like that must call a method. 19:00
Whiteknight another type can be used if that other type knows that it acts like an integer
Perl6Int for example
or TclInt 19:01
dalek rrot: r43875 | chromatic++ | branches/vtable_massacre/src/pmc (2 files):
[PMC] Fixed improper returns from PMC METHODs in BigInt and BigNum.
Whiteknight ah, thanks chromatic
dukeleto Coke: what do you mean about pugs not having a trunk? 19:02
NotFound Whiteknight: fine, but give me a definition of "acting like an integer" that makes sense in that case.
chromatic mikehh, I can't reproduce the segfaults with --optimize on 32-bit Linux with gcc.
Whiteknight NotFound: "acting like an integer" in this case means it uses integer arithmetic machine code instructions to act directly on data 19:03
A pointer type, for instance, would act like an integer for arithmetic because it didn't use floating pointi nstructions 19:04
mikehh chromatic: I haven't tested on i386 yet, but I remember when amd64 would not build with --optimize, over a year ago if I remember right
NotFound Whiteknight: then there is no such thing as acting like integer or like float that makes sense for log
Whiteknight NotFound: why not? We can pass a FLOATVAL to log, get a FLOATVAL back 19:05
It might not make sense for an Integer to be passed to log. That's true
NotFound Whiteknight: again: log(-1)
Whiteknight but the op could still call (FLOATVAL)VTABLE_get_integer to get the data and try again 19:06
NotFound Or log(-1.0)
chromatic mikehh, then let's hope the bisection is revealing.
Whiteknight NotFound: that's not a problem. The op can detect a negative number and do what the HLL wants
NotFound: the op is log_p_p. Write me a PIR snippet that causes problems
mikehh just finishing fulltest on gcc without --optimize 19:07
Whiteknight and I will write the op that makes the problem go away
NotFound Whiteknight: maybe is doable, but looks to me like making any operation an special case. 19:08
chromatic mikehh, wait... I was on the vtable_massacre branch. Oops.
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32141), fulltest) at r43874 - Ubuntu 9.10 amd64 (gcc) 19:11
19:11 cotto_work joined
mikehh chromatic: yeah - I was testing that too 19:11
chromatic Ah, there we go. 19:12
Coke Whiteknight: how would you deal with things like 1/3.0 ? 19:14
mikehh make corevm/make coretest PASSes at r43856
Coke Right now, the PMC on the left has some control over what happens there. if that's hidden in an op, how do we, for example, make that into integer division in partcl.
(but keep it as float division in perl)
mikehh with gcc with --optimize
Coke would I have to write a div method on my HLL pmc? 19:15
chromatic mikehh, I bet it's the --gc-debug flag.
Whiteknight Coke: that's actually a very good point. But in that case a combination of op and environment needs to determine correct behavior, it still isn't the province of the data type 19:17
Coke er, misspoke slightly. no paste coming:
nopaste "coke" at 65.91.151.195 pasted "tcl, various types of division." (4 lines) at nopaste.snit.ch/19539
Whiteknight maybe Tcl and Perl6 need to define arithmetic dynops if they have specific behavior they want to implement
Coke Whiteknight: that pretty much contradicts everything about pmcs I've heard for the past 9 years. =-)
letting the pmcs decide is supposed to be the basis of HLL interop. 19:18
Whiteknight Coke: the last 9 years of parrot have produced a very messy, large, slow, inconsistent bird
Coke Whiteknight: no argument there.
chromatic mikehh, it is... the segfault is from src/main.c line 450
There's no current context to check for warnings.
Whiteknight Coke: we are letting the PMCs decide, starting at the fundamental level of "do I call get_integer or get_number?"
Coke that's the wrong place to ask the question.
how does the pmc know at that point you're doing division? 19:19
how does it know what the other value involved in the operation is?
mikehh chromatic: it blows up at r43860 (gcc with --optimize)
Whiteknight Coke: think about this from another angle. I'm creating a new project with a series of math dynops. How does my dynamically-loadable independent library know anything about your data types? I have to ask 19:20
chromatic Makes sense, mikehh.
Whiteknight Coke: and also, maybe we need to explicitly define "integer_divide" and "float_divide" opcodes 19:21
has the benefit of a more direct translation to machinecode for JIT
Coke Whiteknight: that would solve the problem, yes, if every opcode had both types. then you don't need to keep the flag on th pmcs, you can just ask for the appropriate type.
(but you'd need more than just i_divide and n_divided, you'd need i_i_divided, i_n_divide, n_n_divied, n_i_divied... 19:22
Whiteknight we already basically have that, add_p_p_i, add_p_p_n
particle or the dynops operate solely on dynpmcs also provided
Whiteknight the problem is add_p_p_p, where we make an assumption
particle: that has to be the wrong solution
Coke Whiteknight: these would still take pmcs, but would force a type coercion. that's the wrong approach.
particle has to? and there's only one wrong solution?
:P
lucky me for picking it! 19:23
Whiteknight particle: demanding that add-on modules may not interoperate?
Coke then I have to know when I generate the opcode which variant i want.
when I really want this to dispatch at runtime appropriately. but only for my HLL, since my HLL has different rules than yours.
particle the dynops offer specific behaviors
but on what data types?
Whiteknight Coke: so the answer may be a way for the HLL to specify options like that in a global way 19:24
so that people who have never heard of Tcl can still write modules that have a hope of interoperating with partcl
Coke Whiteknight: the problem that I've always seen is where is the boundary: is it in code that partcl uses? data that partcl creates?
Whiteknight what boundary? 19:25
purl boundary is new
Coke the global.
purl the global is mankz.com/code/GlobalCheck.htm
Coke 14:23 <@Whiteknight> Coke: so the answer may be a way for the HLL to specify options like that in a global way
global how?
everywhere? limited to my HLL code? limited to PMCs generated by my HLL?
NotFound Whiteknight: the way to specify that things is hll mapped types.
Whiteknight Coke: "global" in the sense that we do hll_map now. global to the HLL
in one HLL, the ops do one thing, in a different HLL the ops do another 19:26
and that's not unreasonable
particle pmc's are abstract data types. abstract data types define a storage format and an interface to that storage. 19:27
Whiteknight In Tcl, 1.0/1 is integer or float division?
Coke dukeleto: svn ls svn.pugscode.org/pugs | ack trunk
particle however, the hll defines semantics
Coke Whiteknight: nopaste.snit.ch/19539
mikehh chromatic: make corevm/make coretest PASSes at r43859 and it blows up at r43860 (gcc with --optimize)
particle what do you do with overflow? rounding? errors? nans? 19:28
Whiteknight Coke: so in Tcl, the type of division is decided by the numerator?
chromatic mikehh, committing fix now.
Coke Whiteknight: ... did you READ the nopaste?
mikehh chromatic: great
chromatic msg bacek See r43876 for a workaround for a seggie from r43860.
purl Message for bacek stored.
Coke I ask because there are 3 samples there, with int/int, float/int, and int/float. 19:29
NotFound Whiteknight: relax, this is not a war ;)
Coke (the answer is no.)
Whiteknight Coke: I'm trying to compare with what you said above
Coke Whiteknight: I immediately said I misspoke and gave a nopaste. =-) 19:30
the nopaste shows running tcl code from feather.
Whiteknight <Coke> Right now, the PMC on the left has some control over what happens there. if that's hidden in an op, how do we, for example, make that into integer division in partcl.
that implies that 1/3.0 is integer division
dukeleto if you think dealing with NaNs is complicated, read ieee754-2008 (i have). It's *fucking* complicated, if you want the full IEEE spec. 19:31
Coke 19:17Cokeer, misspoke slightly. no paste coming:
14:29 <@Coke> Whiteknight: I immediately said I misspoke and gave a nopaste. =-)
particle dukeleto: almost nobody does the full spec, it's *awful*
Coke please read the nopaste -in lieu- of my original send.
dukeleto particle: yeah. but subsets of the spec are very nice 19:32
particle: being able to attache a "payload" to a NaN is a great concept
particle yes, we use it in perl 6
heck, we're using it in parrot now, too
Whiteknight ok
particle with Exceptions 19:33
dukeleto particle: good to see you back in the channel. been busy?
particle incredibly busy, i'm afraid
at least it's (mostly) paid work
Whiteknight Coke: so in partcl, between an int and a float, the result is always a float regardless of the order?
particle good luck with the intro to parrot tonight, looks like fun!
dukeleto particle: gsoc 2010 is ramping up. do you want to be involved or should I look for another poor soul?
particle dukeleto: i'd like to be involved again 19:34
Whiteknight Coke: and between two ints, the result is an int?
dukeleto particle: there may be video recording from merlyn
particle gsoc, pvmw, etc
Whiteknight so the Op can determine the types of both PMCs and automatically promote int->float when one is a float
particle excellent
dalek rrot: r43876 | chromatic++ | trunk/src/main.c:
[src] Added a guard to avoid segfaults when processing CLI arguments; an

moved initialization of the initial context to after this point (reported by Michael Hind).
dukeleto particle: shall I list you as backup org admin for TPF/Parrot when I do the paperwork?
particle dukeleto: yes, please
Whiteknight I don't know of a single HLL where such a strategy would not work for those two types
rrot: r43877 | chromatic++ | trunk (4 files):
[src] Fixed interpeter -> interpreter typo.
particle dukeleto: did you get a note from ellen ko about mentor org payments?
dukeleto particle: yes, and forwarded it to karen and kurt, which karen said was the correct person 19:35
particle fab
Coke Whiteknight: github.com/partcl/partcl/blob/maste...nt.pmc#L37 is the current implemention in partcl (which I /think/ is pretty close to tcl's behavior.)
dukeleto particle: i got reimbursed by TPF, but they might not make it in time to get reimbursed themselves
particle however, this has to move quickly, and kurt isn't good at that
so maybe ping jim to let him know
dukeleto particle: they even reimbursed me for last year, which was awesome
particle nice!
Coke and yes, int div int the result is an int; this is not the case in core parrot types. 19:36
dukeleto particle: so i should forward it to jim with a note?
19:37 cotto_work joined
mikehh chromatic: looks good 19:37
particle dukeleto: that'd be my suggestion, 'fyi, i sent this to kurt, it's for about $X, and there's a looming deadline, so watch out!'
mikehh chromatic: make corevm/make coretest, make world/make test PASS (gcc with --optimize) running fulltest now 19:38
particle is designing artwork for a 2010 parrot/rakudo workshop 19:39
19:42 hercynium joined
dukeleto particle: nice. are you down for helping organizing something parrot-like for Open Source Bridge? 19:47
19:47 iblechbot joined
Whiteknight dukeleto: by the way, I made you contributor to parrot-data-structures and parrot-math-functions 19:49
cotto_work dukeleto, what's the expected cost for Open Source Bridge? 19:50
dukeleto Whiteknight: sweet!
cotto_work: very cheap, and free if you are a speaker/volunteer 19:51
cotto_work: let me see if they have prices for this year
particle dukey: not sure i can make it to that conference, but i can probably help facilitate
cotto_work Nice. I wish it weren't a 3 hour trip down to pdx so I could volunteer more easily.
dukeleto cotto_work: from last year: Conference passes were $250, with early bird pricing of $175, $99 for students, and discounts offered for user group members 19:53
particle: cool. i am organizing the 24(ish) hr "Hacker lounge"
cotto_work: you can take the nice train down, no?
particle: i notified jim of the situation 19:54
Whiteknight: what language do you plan on using for PDS and PMF? PIR? from your recent blog posts, it sounds like PIR is not your favorite 19:55
Whiteknight dukeleto: I just provide the types. I don't pick who uses them
I would like them to be language agnostic
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32143), fulltest) at r43877 - Ubuntu 9.10 amd64 (gcc with --optimize) 19:57
TimToady_ phone 20:00
NotFound I have parrot running on the Nokia N900 :)
Talking about phone... X-)
nopaste "NotFound" at 213.96.228.50 pasted "Parrot in Maemo - Nokia N900" (14 lines) at nopaste.snit.ch/19543 20:17
Whiteknight nice 20:19
20:19 payload joined
NotFound The "built for i386-linux." makes it looks like a fake X-) 20:20
Whiteknight did you have to change anything to make it build?
and does it pass tests?
NotFound I just built it in the scratchbox of the Maemo sdk, without changes. Installed it on /runparrot and scp -r that directory. 20:21
Whiteknight builds tests? 20:22
20:22 lucian joined
NotFound In the scratchbox, yes. 20:23
In the real machine, don't tested yet. 20:24
20:29 ash_ joined 20:30 ashleyb joined 20:38 kurahaupo joined
kurahaupo Good $localtime. 20:38
20:38 mikehh joined
kurahaupo Quick question: how to invoke GC collection from PIR? (I have a test case that depends on GC timing) 20:38
20:39 ash__ joined
chromatic mikehh, can you add Rakudo to your Parrot smoking? 20:39
kurahaupo, sweep 1 20:40
mikehh chromatic: will do that
kurahaupo chromatic: thanks 20:41
chromatic++
20:42 theory joined
Coke TimToady++ 20:48
tewk I start a runloop from c, the c stack changes due to an exception, how do I register new return args and restart the runloop? 20:55
20:57 kurahaupo joined
darbelo tewk: Isn't that the inferior runloop problem? 20:58
'cause we don't have a solution to that one.
chromatic I don't think that's true.
I'd have to see the code though. 21:01
Coke anyone know why this complains : 21:02
char * const fmt = "local__%s__%s__$";
NotFound Coke: you need one more const
Coke NotFound: ok, where? =-) 21:03
tewk Its not an inferior runloop.
Austin Point is constant, characters pointed to are not.
*PointER is constant
tewk const char * const fmg =
PerlJam Coke: in front
purl rumour has it in front is ? lenzo davorg
NotFound Coke: but is easy: const char fmt[] = "local__%s__%s__$";
easier 21:04
Coke NotFound: danke. 21:05
tewk chromatic, I created the runloop with Parrot_pcc_invoke_sub_from_c_args(interp, sub_pmc, "Pf->P", sub_arg, &ret_val); 21:06
Coke also, any idea what warning causes this:
warning: size of 'yy_nxt' is 14092 bytes
(gcc)
tewk I basically want to update ->P to put the return in &different_ret_val now.
Coke bah. larger-than. nevermind.
chromatic tewk, I *think* you have to update the CallSignature, unless you call Parrot_pcc_invoke_sub_from_c_args() again. 21:09
NotFound Coke: I think is a deliberate warning pragma 21:10
Coke it's hitting in compiler/imcc/imclexer.c ; trying to find the right -W voodoo to silence it.
tewk Coke it cound be a #warn in the code 21:12
mikehh rakudo - spectest_smolder #32146 PASS - Parrot r43877 - Ubuntu 9.10 amd64 (gcc --with optimize)
NotFound Forgot to mention that the Maemo build pass all tests except t/pmc/threads.t
mikehh rakudo does not build on g++ parrot builds 21:13
Coke is that because of g++ issues in rakudo's c?
21:16 cognominal joined
ash_ um.... huh? what version of g++? i am using g++ and i haven't had any problems building rakudo 21:17
mikehh for example - bind.c:449: warning: request for implicit conversion from ā€˜void *’ to ā€˜struct PMC **’ not permitted in C++ 21:21
ash_ ah, i do get warnings, but it still builds fine for me, i get that warning every time i build
mikehh g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1 21:22
the warning was from the gcc build
tewk mikehh, g++ 4.4.1 probably reports it as an error 21:23
add and explicit (struct PMC **) cast and it should build
mikehh It did last time I tried to build
21:24 kurahaupo joined, plobsing joined
tewk the gcc warning is telling you that if you build with g++ you will get an error 21:24
mikehh last time I tried that was not the only problem - I might try again later
tewk nopaste the g++ build log and we can probably fix it pretty fast. 21:25
ash_ i am using apple's gcc (and g++) 4.2, i get a few warnings about implicit conversions, but it builds for me 21:27
tewk g++ 4.4.1 turns more warnings into errors I believe
ash_ ah, that may be an issue then i imagine 21:28
mikehh my first attempts to build parrot on Ubuntu 9.10 beta failed with g++ 4.4.1 while it built with g++ 4.3.4 21:30
tewk Why isn't the pc in interp or ctx, its part of the runloop state, it really should be. 21:32
NotFound And now, Winxed self-compiled in the N900 without C++ compiler. Just by opying the generated pir of stage1 from other machine and the sources for the stage 1 and the driver. 21:34
21:34 payload joined
NotFound Bootstrap process fully tested now :) 21:34
mikehh NotFound++ 21:35
nopaste Someone at 155.99.196.247 pasted "Yeah, It works, I restarted the run core from a different C stack location. Earlier I had forgotten to | PARROT_ARG_PMC" (9 lines) at nopaste.snit.ch/19546
21:36 coke joined
NotFound Of course, the pbc_to_exe step must be omitted because of the lack of C compiler. 21:36
coke scary.
tewk I have parallel futures running on parrot, Now I just need to fix the gc to cooperate with threads.
Coke seen tene? 21:37
purl tene was last seen on #parrot 5 hours, 33 minutes and 36 seconds ago, saying: Austin: pong
darbelo Good luck. Have fun.
Tene seen Coke? 21:38
purl Coke was last seen on #parrot 45 seconds ago, saying: seen tene?
tewk darbelo, We have done it before for the PLT Scheme vm, its not impossible. :)
darbelo tewk++ 21:39
Austin Hoo, boy. 21:40
If you "register" a PMC class in the P6object system, you cannot subclass it because the protoobject will fall victim to the problem discussed in TT#1426 (6?) 21:41
Coke Tene: your name came up recently in regards to one of the roadmap items that rakudo * will need. 21:43
Tene What is it? 21:44
purl it's it!
21:45 lucian joined
Coke Tene: I don't remember. :| 21:46
seen chromatic?
purl chromatic was last seen on #parrot 36 minutes and 52 seconds ago, saying: tewk, I *think* you have to update the CallSignature, unless you call Parrot_pcc_invoke_sub_from_c_args() again.
Tene Oh. Well, let me know if you can figure it out.
Coke it involved hll interop. and exceptions?
Tene That would be for me, then. 21:47
Was it on IRC?
Coke nope.
chromatic Subroutine leave semantics.
Coke seen pmichaud?
purl pmichaud was last seen on #parrot 9 days, 6 hours, 17 minutes and 54 seconds ago, saying: okay, excellent work. [Feb 1 15:29:13 2010]
Coke chromatic: THANK You.
chromatic: en.wikipedia.org/wiki/Bloody_Code 21:51
(great release name)
21:53 eternaleye joined
Coke FYI: parrot.org host is doing some work tomororw at 4pm PST that should absolutely NOT break anything. =-) 21:55
darbelo has heard that one before. 21:56
darbelo has *said* that one before too.
ash_ my boss, during a server move, accidentally deleted ummm 41 sites, i think it was, by clicking to much in Plesk 21:57
that was a fun 48 hours that followed 21:58
NotFound notfound.posterous.com/winxed-in-a-mobile-phone 21:59
Coke NotFound++ 22:04
GeJ Good morning everyone. 22:06
cotto_work hi GeJ 22:08
dukeleto o hai 22:12
cotto_work hi jsut 22:18
jsut hi 22:19
purl niihau, jsut.
22:25 cotto_work joined, kid51 joined
chromatic msg dukeleto Remind me I have an announcement from pdcawley for tonight's meeting. 22:28
purl Message for dukeleto stored.
dukeleto chromatic: you have an announcement. i will try to remember 22:37
pmichaud 21:40 <Austin> If you "register" a PMC class in the P6object system, you cannot subclass it because the protoobject will fall victim to the problem discussed in TT#1426 (6?) 22:39
I'm a little surprised by this, since the whole point of 'register' was to allow that to work. 22:40
22:49 ash___ joined 22:53 cotto_work joined
cotto_work pmichaud, do you have a minute for a pct question? 22:55
nopaste.snit.ch/19522 22:57
pmichaud cotto_work: that's not a pct question, it's a parrot question :) 22:58
cotto_work: the sub is being executed twice
Coke :load :init
pick one.
pmichaud no
the problem isn't that both are present
the problem is that the sub is also :main 22:59
cotto_work Thanks.
Coke crap.
pmichaud++
cotto_work pmichaud++
Coke I've even been bitten by that.
PerlJam it's :main because it's the only one?
cotto_work the first one 23:00
purl the first one is gone
pmichaud PerlJam: because no other sub is marked :main, and it's first
PerlJam er, yeah, the first one
cotto_work feels enlightened.
pmichaud (the problem would still exist if there were other subs after this one :)
cotto_work hopefully this enlightenment will persist when cotto_work becomes cotto 23:01
Coke note that s/:init/ also works.
(since then it's only run as the implicit :main)
darbelo cotto_work: That statement denies your very cotto nature.
Coke does a search for cotto, sees a bunch of images, and is reminded to never pick a fight with cotto. 23:02
23:04 hercynium joined
cotto_work I'm a type of salami. I want to deny my nature. 23:09
purl, cotto?
purl cotto is Christoph Otto <mailto:christoph@mksig.org> or a cooked salami or The Decider
23:17 eiro joined 23:19 ashleyb joined
tewk Anyone successfully used SD to clone trac.parrot.org? 23:30
kid51 SD? 23:33
purl SD is cool...dunno about its' connectivity... or super-deformed or san diego. or at syncwith.us or simple defects, a distributed bug tracker
kid51 tewk: First I've heard of it ... but other people may have more knowledge 23:35
cotto_work nice idea but I hadn't seen it before 23:42
dukeleto i have heard of sd, but never used it 23:44
Austin Pmichaud: What's the right way to register a pmc class, add methods to it, and then derive a subclass from it? 23:45
23:45 Whiteknight joined
Austin Pmichaud: nevermind, you were surprised by that. 23:48
Okay. Calling "register" creates a protoobject with an anonymous (name='') protoclass that extends P6protoobject. 23:49
(Calling "register" on a PMC type, that is.)
Then subclassing the newly-registered PMC type looks up the parrotclass of the PMCtype, which returns the protoclass. (This may be a bug.) That isn't a problem, yet, but then registering the newly-derived subclass causes a protoclass to be created, which has the PMC protoclass as a parent, and also has P6protoobject as a parent. And that's fatal. 23:51
Because the P6* stuff wants protoobject to override the PMCtype stuff: " ## P6protoobject methods override parrotclass methods..." 23:52