Camelia, the Perl 6 bug

IRC log for #parrot, 2010-02-10

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:05 dalek parrot: r43836 | mikehh++ | branches/gc_encapsulate_part2/src/gc/gc_ms.c:
00:05 dalek parrot: fix codetest failures - unused assert macros - further attempt
00:05 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43836/
00:07 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:08 cotto_work mikehh, that commit broke the build
00:08 cotto_work I think the culprit is "gc_ms__allocate_pmc_attributes"
00:09 kid51 joined #parrot
00:09 mikehh oh dear - I tested before commiting
00:09 mikehh one to many underscores - I'll check
00:09 Austin joined #parrot
00:12 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.
00:13 Austin Thanks, darbelo
00:13 cotto_work now go forth and commit stuff
00:14 Austin I don't want to commit anything. I'm 41 and single. I fear commitment.
00:14 Austin I just don't want to be ostracized for not having a bit any more.
00:14 * Austin sniffs.
00:15 darbelo Just add yourself to CREDITS, that's the way to fame and fortune.
00:15 Austin Just one little commit...
00:16 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.
00:16 cotto_work You can put yourself in charge of a major fictitious subsysten.  The dynamic derectifier doesn't currently have a maintainer.
00:16 Austin Maybe I could add a C2 linearization system.
00:18 darbelo Why bother? I'm sure C1 is enough.
00:20 mikehh joined #parrot
00:20 Austin I'm thinking that my new C2 system would bridge the gap between the C1 and C3 layers.
00:21 dalek parrot: r43837 | darbelo++ | trunk/config/gen/makefiles/root.in:
00:21 dalek parrot: Add a missing dependency. This fixes parallel building with BSD make.
00:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43837/
00:22 Austin Make some simplifying assumptions for the expected cases. Preoptimized caching by using predictive metrics based on expective human capital configuration.
00:23 * darbelo nods attentively as his eyes glaze over.
00:25 mikehh cotto_work: ok I think it's fixed now - make test PASS - running fulltest
00:35 cotto_work fulltest is happy on the gc part 2 branch on Ubuntu 9.04 x64
00:35 mikehh gc_encapsulate_part1 branch:
00:35 mikehh All tests PASS (pre/post-config, make corevm/make coretest, make test, fulltest) at r43838 - Ubuntu 9.10 amd64 (g++ with --optimize)
00:35 mikehh bah thjat's part2
00:36 mikehh looks good - just need some tests on other platforms
00:37 * mikehh needs sleep
00:37 dalek parrot: r43838 | mikehh++ | branches/gc_encapsulate_part2/src/gc/gc_ms.c:
00:37 dalek parrot: fix previous commit - removed extra underscores
00:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43838/
00:38 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:39 eternaleye joined #parrot
00:47 * Whiteknight is exercising the nuclear option on the bitwise vtables
00:49 eternaleye joined #parrot
00:50 Whiteknight is there a "get_ulong" vtable?
00:51 darbelo Not that I know of.
00:51 Austin $little_doggie->get_ulong() ?
00:52 darbelo And src/vtable.tbl doesn't know either.
00:53 abqar joined #parrot
00:53 cotto_work joined #parrot
00:53 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:54 darbelo 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.
00:55 cotto_work Yeah.  Rip that out.
00:55 darbelo Salted tea? Ugh.
00:55 cotto_work I have a friend who likes to put soy sauce in green tea.
00:56 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.
00:56 cotto_work I found out that I don't.
00:59 Whiteknight who the hell uses the bitwise string functions
00:59 Whiteknight I would be *thrilled* to find an actual, honest-to-god use for them
01:00 cotto_work It'd be interesting to graph loc vs commit # over Parrot's history.
01:03 Austin cotto_work: You mean total loc or delta loc?
01:04 cotto_work something like cloc.pl would make it nice and non-interactive
01:07 cotto_work Apparently the openSUSE guys have solved the boolean satisfiability problem: http://lwn.net/Articles/373668/
01:08 Whiteknight these functions are stupid
01:08 Whiteknight seriously
01:08 purl i guess seriously is that for real
01:08 Whiteknight who uses bitwise_not on strings?
01:08 Whiteknight or bitwise and?
01:08 purl bitwise and is fine ... it's the un-named constant '2' that's the problem :)
01:08 Whiteknight SHUTUP PURL
01:08 purl "Mind your own business, Mr. Whiteknight! I'm tired of your half-breed interference!"
01:08 cotto_work joined #parrot
01:08 Whiteknight ...
01:08 Austin purl++
01:08 Whiteknight well, I got told.
01:08 Austin botsnack
01:08 purl :)
01:08 Austin lol
01:09 cotto_work purl wins
01:09 purl MENTALITY!
01:09 Austin Whiteknight, the bitwise stuff is aimed, I think, at managing buffers.
01:09 Austin Remember that Parrot is the ultimate VM for Perl 5.
01:10 dalek parrot: r43839 | plobsing++ | branches/opengl_dynamic_nci:
01:10 dalek parrot: creating branch to explore building opengl without dependency on core nci (src/nci.c)
01:10 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43839/
01:10 dalek parrot: r43840 | plobsing++ | branches/opengl_dynamic_nci (3 files):
01:10 dalek parrot: build parrot without opengl signatures and add opengl thunks to build of runtime/parrot/dynext/libglutcb.so
01:10 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43840/
01:12 mikehh joined #parrot
01:12 plobsing anyone know how to get the CONST_STRING macro to behave nicely outside of core?
01:14 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:23 eternaleye joined #parrot
01:44 Whiteknight my brain hurts
01:45 plobsing cotto_work++ it works!
01:45 cotto_work what does?
01:45 cotto_work nm.  the string constant
01:48 cotto_work karma cotto_work
01:48 purl cotto_work has karma of 11
01:54 kid51 gc_encapsulate_part2 branch: Linux/i386:  PASS make test, buildtools_tests, codetest
01:55 Whiteknight karma cotto
01:55 purl cotto has karma of 1115
01:59 dalek parrot: r43841 | plobsing++ | branches/opengl_dynamic_nci/​tools/build/nativecall.pir:
01:59 dalek parrot: add --core option to create nci thunk files suitable for core. handle CONST_STRING correctly outside of core.
01:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43841/
01:59 dalek parrot: r43842 | plobsing++ | branches/opengl_dynamic_nci/c​onfig/gen/makefiles/root.in:
01:59 dalek parrot: actually link glut_nci_thunks.o into glut_callbacks.so
01:59 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43842/
02:01 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]
02:02 Austin Hmm. Does anyone else know about the innards of P6object, and how they relate to PMCProxy?
02:07 cotto_work You could check svn blame on some of the files.
02:08 Austin point
02:12 Austin Svn blames pmichaud, jonathan, tene, for the most part.
02:12 Austin seen jonathan?
02:12 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]
02:13 Austin Tell me he's got a different irc id
02:13 Austin seen tene?
02:13 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?
02:13 Austin tene: ping
02:13 cotto_work He usually hangs out in #perl6 on Freenode as jnthn
02:13 kid51 seen jnthn?
02:13 purl I haven't seen 'jnthn', kid51
02:14 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]
02:14 bacek_at_work nice...
02:16 Austin No esta alla.
02:16 cotto_work you mean jnthn?  He's there.
02:16 Austin cotto++ Good idea with the blam.e
02:16 Austin *e.
02:16 cotto_work I like that tool.
02:16 Austin svn++
02:20 cotto_work It doesn't make me dislike svn more.
02:31 eternaleye git++ # Bisect and blame go together very well
02:33 dalek parrot: r43843 | coke++ | branches/rm_cflags (7 files):
02:33 dalek parrot: avoid more unused warnings.
02:33 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43843/
02:51 Whiteknight these bitwise ops are maddening
02:51 Whiteknight there are about a hundred more of them than anybody needs
02:52 Whiteknight 2-argument forms, 3-argument forms, and every permutation of PMC and INTVAL parameters that you can imagine
02:52 Whiteknight I wish somebody could explain to me the use case for all this garbage
02:52 Whiteknight who the hell uses bitwise ops so much that they need all these options
02:53 Whiteknight 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
02:53 Whiteknight echo "All the bullshit, unnecessary bitwise ops" >> DEPRECATED.pod
02:53 Austin Oh look. More snow.
02:53 Whiteknight </rant>
02:54 Whiteknight Austin: if snow were money, we'd be kicking butt
02:54 Austin Whiteknight, I have another GSOC suggestion for you.
02:54 Whiteknight Austin: shoot
02:55 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:56 Austin In general, I think we need a pluggable MOP
02:57 Whiteknight so, a pluggable linearizer
02:57 Austin Linearization is a part of class management.
02:57 cotto_work it's in line with 'pluggable everything'
02:58 Austin Pmichaud implemented P6object, for example, which builds on top of Parrot-oo. But that's probably a special case.
02:58 hercynium joined #parrot
02:59 JimmyZ joined #parrot
03:00 Coke feather is running 99% 'readproctitle'. wtf.
03:00 Coke MRO is pluggable already, no?
03:01 Coke (in that you can do what rakudo did.)
03:01 Austin What did rakudo do?
03:01 Coke ... plugged in an MRO? (he said, circularly.)
03:02 Coke I have no specifics for you.
03:02 Austin :)
03:02 mikehh joined #parrot
03:02 Austin For all we know they may have implemented the entire thing in PIR.
03:03 Austin (Which is, IMO, the right answer for 95% of PMC types.)
03:03 Coke ugh. feather is pretty much unusable.
03:03 dukeleto 'ello
03:03 Austin Hey, duke.
03:03 cotto_work hi dukeleto
03:03 * Coke will let make test run overnight instead of in 3m.
03:03 dukeleto Austin: howdy
03:04 * dukeleto is working on a "intro to parrot" talk for PDX.pm tomorrow
03:04 Austin What's PDX.pm?
03:04 purl Do you mean portland.pm.org?
03:04 cotto_work dukeleto++
03:04 dukeleto Austin: Portland Perl Mongers
03:04 Austin Ah
03:06 cotto_work will it be recorded?
03:06 dalek parrot: r43844 | whiteknight++ | branches/vtable_massacre (13 files):
03:06 dalek parrot: 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
03:06 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43844/
03:06 Austin No way!
03:06 Austin Then everybody from parrot-dev will be looking at it and telling him all the stuff he *should* have said.
03:07 cotto_work and then it'll improve
03:08 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.
03:10 dukeleto cotto_work: will do
03:11 cotto_work I look forward to listening to it.
03:15 dukeleto ok, so somebody says "what is parrot?" What is your one sentence answer?
03:16 cotto_work It's a VM built from the ground-up for dynamic languages and interoperability.
03:17 cotto_work s/-//
03:17 cotto_work something like that
03:17 Austin "Parrot is how I get frustrated when I don't have enough money to visit the strip club."
03:18 mikehh joined #parrot
03:22 dalek parrot: r43845 | whiteknight++ | branches/vtable_massacre/src/ops/bit.ops:
03:22 dalek parrot: 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 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43845/
03:22 dalek parrot: r43846 | whiteknight++ | branches/vtable_massacre/src/ops/bit.ops:
03:22 dalek parrot: convert lsr ops
03:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43846/
03:23 dukeleto Austin: awesome.
03:23 dukeleto this is the meeting info: http://calagator.org/events/1250458251
03:26 Austin Hmm...I didn't know we were "still reeling". Did you know that, Whiteknight?
03:27 cotto_work Austin, ?
03:27 purl Austin, is there one that builds with Rakudo's current required version (r41447)?
03:27 Austin laugh
03:28 Austin I think purl's quoting you, cotto.
03:28 cotto_work I think you
03:28 Austin According to CNN, we're still reeling from last week's snow.
03:28 cotto_work 're right
03:28 Whiteknight still reeling?
03:29 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.
03:29 Austin We need more snow in DC.
03:29 * Whiteknight needs a government job
03:29 Whiteknight 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
03:30 Whiteknight get to sit on a 30,000$ toilet seat
03:30 Whiteknight feel like a king
03:31 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:32 Whiteknight sounds like some of the promises I made to women back in college
03:32 Whiteknight OH SNAP
03:33 Whiteknight ...and on that note. It's off to bed.
03:33 Whiteknight goodnight
03:39 * kid51 must sleep
03:39 purl $kid51->sleep(8 * 3600);
03:48 janus joined #parrot
03:53 dalek tracwiki: v26 | kurahaupo++ | ArrayTasklist
03:53 dalek tracwiki: Link to WhiteKnight++ 's Array splintering on GitHub
03:53 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Arr​ayTasklist?version=26&amp;action=diff
03:55 jsut joined #parrot
04:12 Austin So what's the protocol for committing failing tests?
04:18 plobsing I would todo them and refer to (open if necessary) a relevent ticket
04:19 jsut_ joined #parrot
04:53 bacek joined #parrot
05:02 Austin plobsing++ # Thanks for the pointer. (Man, is it hard to do "todo" in pir)
05:02 dalek parrot: r43847 | Austin_Hastings++ | trunk/t/oo/mro-c3.t:
05:02 dalek parrot: Added test for TT#1426
05:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43847/
05:06 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.
05:07 Austin Anyway, woo. My first commit.
05:10 cotto woo indeed
05:11 mikehh add another woo
05:17 dalek tracwiki: v152 | Austin_Hastings++ | WikiStart
05:17 dalek tracwiki: Added c3 link
05:17 dalek tracwiki: http://trac.parrot.org/parrot/wiki/W​ikiStart?version=152&amp;action=diff
05:40 dukeleto Austin_Hastings++ # congrats on your bit
05:41 dukeleto Austin: did you add yourself to CREDITS?
05:41 Austin Not yet.
05:41 Austin I found another way to commit something.
05:41 dukeleto Austin: make sure to add Austin as with a U: so your karma it properly counted
05:41 Austin Could you say that in english?
05:41 dukeleto Austin: ug. bad grammar
05:42 dukeleto Austin: you should have two U: lines in CREDITS
05:42 dukeleto Austin: U: Austin  and U: Austin_Hastings
05:42 dukeleto Austin: that lets the karms bots know that Austin++ and Austin_Hastings++ are the same
05:42 dukeleto s/karms/karma/
05:42 Austin Ahh
05:42 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32133), fulltest) at r43847 - Ubuntu 9.10 amd64 (g++ with --optimize)
05:43 Austin Would that be U: or A:, or does it matter?
05:45 dukeleto Austin: you are right, it is an A:
05:45 dukeleto mikehh++
05:45 Austin karma g
05:45 purl g has karma of 917
05:45 Austin :)
05:45 dukeleto karma c
05:45 purl c has karma of 8360
05:45 dukeleto c--
05:47 treed c--
05:48 dukeleto Austin: http://twitter.com/parrotvm/status/8890150873
05:48 Austin :)
05:49 dukeleto i really need to work on my parrot talk for tomorrow. FOCUS!
05:52 dukeleto did anybody know about this? http://www.programmersheaven.com/2/P​arrot-a-Virtual-Machine-For-Everyone
05:53 Austin What's the level of detail of the talk?
05:54 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" ?
05:55 Austin Okay, this is just totally wrong.
05:56 Austin oo.c line 1173: An intval "list_count" is declared inside a for loop, masking the "list_count" in the outer block.
05:58 Austin petdance--
06:00 kurahaupo joined #parrot
06:01 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:02 Austin (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:03 particle joined #parrot
06:06 dukeleto Austin: sounds reasonable. it might be good to mail the list about that
06:06 Austin :)
06:06 dukeleto Austin: is listcount masked on purpose?
06:06 Austin O(1 **2) vs O(1) you mean?
06:06 Austin Ahh, list count.
06:07 Austin 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:24 dalek parrot: r43848 | plobsing++ | branches/opengl_dynamic_nci (3 files):
06:24 dalek parrot: cause OpenGL.pbc to load nci signatures from libglutcb on load.
06:24 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43848/
06:25 plobsing It's a little crude, but I've got opengl working without compiling thunks into parrot.
06:31 dukeleto plobsing: sounds cool!
06:31 dukeleto plobsing: japhb will probably be interested. i haven't seen him lately
06:31 plobsing msg japhb I've got opengl to work without adding opengl signatures to src/call_list in the opengl_dynamic_nci branch
06:31 purl Message for japhb stored.
06:54 szabgab joined #parrot
06:59 dukeleto does anybody actually use parrotbug?
07:07 cognominal joined #parrot
07:15 uniejo joined #parrot
07:16 chromatic joined #parrot
07:22 cotto dukeleto, nobody's used or mentioned it in recent memory
07:28 cotto I think whiteknight got a little excited in vtable_massacre.
07:29 cotto 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..."
07:30 dalek tracwiki: v1 | Austin_Hastings++ | C3%20linearization
07:30 dalek tracwiki: Created while trying to comprehend C3 code.
07:30 dalek tracwiki: http://trac.parrot.org/parrot/wiki/C3%20​linearization?version=1&amp;action=diff
07:36 dukeleto cotto: well, it is in my talk, so I hope it works :) does it have tests?
07:37 cotto dukeleto, the bitwise ops/vtable functions are in your talk?
07:37 cotto nm.  parrotbug
07:39 eternaleye joined #parrot
07:44 cotto I don't think it has any tests.
07:44 Austin Heh.
07:46 Austin 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 Austin *method => vtable
07:46 dalek tracwiki: v2 | Austin_Hastings++ | C3%20linearization
07:46 dalek tracwiki: Added source links
07:46 dalek tracwiki: http://trac.parrot.org/parrot/wiki/C3%20​linearization?version=2&amp;action=diff
07:47 iblechbot joined #parrot
07:48 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?
07:50 chromatic yes
07:50 Austin Okay.
07:50 chromatic *Iff* that PMC requires it.
07:50 Austin What's the difference between init and init_pmc?
07:50 chromatic The latter takes a PMC as an initializer.
07:51 chromatic 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?
07:52 Austin That's what I'm looking at now.
07:52 chromatic That's right.
07:52 Austin Trying to get my head around PMC proxies and P6object classes.
07:53 Austin Given that PMCProxy extends Class, if the Class PMC has a methcache, doesn't Proxy also have that?
07:53 chromatic Yes.
07:54 Austin Proxy doesn't do anything with it in init().
07:54 chromatic Tattletale.
07:54 Austin For that matter, Class doesn't appear to use it, either.
07:54 Austin Just declare it, init, and mark.
07:55 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
07:55 Austin Whatever that means.
07:56 chromatic The Object PMC manipulates the meth_cache attribute.
07:57 Austin Ahh.
07:57 Austin (!!!)
07:59 Austin About C3 MRO
07:59 Austin Do you recall how an MRO can be null?
08:00 Austin $_PARROT/src/oo.c:1244
08:02 dalek parrot: r43849 | cotto++ | branches/vtable_massacre/src/ops/bit.ops:
08:02 dalek parrot: [bitwise] convert the remaining bitwise ops to avoid the bitwise VTABLE functions
08:02 dalek parrot: The build completes without new warnings, but several tests fail.
08:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43849/
08:14 nopaste "cotto" at 96.26.227.153 pasted "test failures in vtable_massacre as of r43850" (13 lines) at http://nopaste.snit.ch/19529
08:15 cotto msg whiteknight The following test failures remain in vtable_massacre: http://nopaste.snit.ch/19529
08:15 purl Message for whiteknight stored.
08:15 cotto time for slep
08:19 dalek parrot: r43850 | cotto++ | branches/vtable_massacre/src/ops/bit.ops:
08:19 dalek parrot: [bitwise] fix some bugs found by reading the code, sadly several test failures remain
08:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43850/
08:21 Austin Oh good grief.
08:22 Austin Is there a lisp coder in the house?
08:42 cosimo joined #parrot
08:47 * dukeleto has 12 slides!
08:47 Austin That should be an hour, at 5 minutes per.
08:48 eternaleye Austin: What about thceme? (sorry for the pun, I know neither language)
08:48 Austin eternaleye: Too late. We're boned.
08:48 Austin You can never find a lisp coder when you really really need one.
08:49 chromatic Austin, I don't know.
08:57 Austin "It's not a bug, it's a feature."
08:57 mj41 joined #parrot
09:04 dalek TT #1426 closed by Austin_Hastings++: C3 linearizer fails on two plain (P6object) classes
09:14 cosimo joined #parrot
09:24 dukeleto http://parrot.org/people really needs an overhaul
09:30 chromatic Wow.
09:35 bacek joined #parrot
09:37 dukeleto msg whiteknight what plans do you have for parrot-math-functions? i am all about it
09:37 purl Message for whiteknight stored.
09:42 bacek me again
09:43 bacek any objections to merge gc_part2 branch?
09:47 fperrad joined #parrot
09:52 dukeleto o hai
09:52 dukeleto bacek: if it passes the test suite, no.
09:53 bacek dukeleto, unfortunately our test suite isn't 100% comprehensive...
09:54 moritz that's an euphemism :-)
09:55 bacek moritz, :)
09:55 bacek moritz, can you test rakudo on gc_encapsulate_part_2 branch?
09:56 bacek (and rakudo can't be built with c++)
09:57 moritz bacek: will do
09:58 bacek moritz, thanks. I'm testing ng branch on Linux/i386 now
09:58 bacek moritz, is make test enough or I need spectest?
09:59 moritz bacek: I'm doig 'make spectest' in the 'ng' branch
09:59 bacek moritz, ok
09:59 moritz master is nto very well tended these days
10:00 cognominal joined #parrot
10:04 bacek moritz, ouch... How much of spectest expected to pass?
10:05 nopaste "moritz" at 131.188.70.66 pasted "spectest summary of ng on parrot trunk" (22 lines) at http://nopaste.snit.ch/19530
10:06 moritz no idea about rakudo master
10:07 bacek 4 failed tests, 1 segfault...
10:07 bacek sigh...
10:08 bacek t/spec/S32-num/abs.rakudo                                   (Wstat: 0 Tests: 60 Failed: 0)
10:08 bacek TODO passed:   9-10, 14-15, 29-30, 34-35
10:08 bacek t/spec/S32-str/split-simple2.rakudo                         (Wstat: 0 Tests: 41 Failed: 0)
10:08 bacek TODO passed:   39
10:08 bacek Files=113, Tests=3049, 200 wallclock secs ( 1.30 usr  0.21 sys + 317.80 cusr  7.59 csys = 326.90 CPU)
10:08 bacek Result: PASS
10:08 bacek interesting. This is on my box...
10:09 nopaste "moritz" at 131.188.70.66 pasted "test summary of ng 'make spectest' on gc_encapsulate_part2" (22 lines) at http://nopaste.snit.ch/19531
10:10 moritz this is amd64 linux (Debian Stable)
10:10 bacek moritz, results are same
10:11 bacek but why it's 2x faster on part2 branch???
10:11 moritz bacek: because I had more cores available
10:11 moritz during the run on trunk I built the branch in parallel
10:11 bacek moritz, ah, ok
10:12 bacek so, no objections from Rakudo and Lua
10:12 bacek I can deal with Coke later :)
10:12 moritz wait
10:12 moritz there are differences
10:12 bacek merge part^W^W
10:12 bacek where???
10:13 moritz wait
10:13 moritz sorry
10:13 moritz I was confused by different order of output
10:13 bacek it crashed with SEGFAULT instead of SIGBUS on sign.t
10:13 moritz it's ok
10:14 bacek merge party!
10:14 bacek :)
10:15 bacek r43851
10:15 * bacek poke dalek with stick
10:22 * bacek offer cheap karma for deleting branch from svn
10:24 bacek And gc_encapsulate as well
10:24 bacek ... as _part_2
10:29 dalek parrot: r43851 | bacek++ | trunk (7 files):
10:29 dalek parrot: Merge branch gc_encapsulate_part_2 back to trunk.
10:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43851/
10:30 fperrad joined #parrot
10:31 moritz done
10:33 payload1 joined #parrot
10:45 dalek parrot: r43852 | moritz++ | branches/gc_encapsulate_part2:
10:45 dalek parrot: Delete gc_encapsulate_part2 branch as requested by bacek++
10:45 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43852/
10:45 dalek parrot: r43853 | moritz++ | branches/gc_encapsulate:
10:45 dalek parrot: Deleting brnach gc_encapsulate as requested by bacek++
10:45 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43853/
11:07 bacek msg whiteknight I probably broke GC_INF. Feel free to fix it :)
11:07 purl Message for whiteknight stored.
11:15 mikehh joined #parrot
11:24 payload joined #parrot
12:08 ruoso joined #parrot
12:09 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32139), fulltest) at r43853 - Ubuntu 9.10 amd64 (gcc with --optimize)
12:33 barney joined #parrot
12:40 dalek parrot: r43854 | bacek++ | trunk (4 files):
12:40 dalek parrot: Split handling of command line args into 2 parts.
12:40 dalek parrot: - C<parseargs> contains general handling
12:40 dalek parrot: - C<imcc_handle_flag> contains IMCC specific handling
12:40 dalek parrot: This will give us ability to easily replace IMCC with PIRC.
12:40 dalek parrot: Work isn't finished yet because we still have longopt_opt_decl with all
12:40 dalek parrot: options, but it's good start.
12:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43854/
13:03 lucian joined #parrot
13:06 Whiteknight joined #parrot
13:07 tetragon joined #parrot
13:08 ttbot Parrot trunk/ r43858 i386-linux-thread-multi make error http://tt.ro.vutbr.cz/file/cmdout/192102.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
13:13 dalek parrot: r43855 | bacek++ | trunk (3 files):
13:13 dalek parrot: Split make_interpreter into allocate and initialize parts. It will give
13:13 dalek parrot: us ability to override defaults for some subsystems such as GC.
13:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43855/
13:13 dalek parrot: r43856 | bacek++ | trunk (2 files):
13:13 dalek parrot: Rerun headerizer
13:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43856/
13:13 dalek parrot: r43857 | bacek++ | trunk/src (2 files):
13:13 dalek parrot: Fix codetest failures
13:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43857/
13:13 dalek parrot: r43858 | bacek++ | trunk/src (2 files):
13:13 dalek parrot: Move setting default GC type from init_gc into allocate_interpreter.
13:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43858/
13:25 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.
13:26 bacek On this positive note I'm going to bed
13:26 Whiteknight bacek: awesome
13:26 bacek Whiteknight, ah, you are here!
13:26 Whiteknight just woke up!
13:27 bacek C'mon! It's midnight already. You sleep too much!
13:28 Whiteknight bacek++
13:28 bacek Anyway, starting from r43860 it's possible to set GC from CLI.
13:29 Whiteknight yes, I see. Very awesome!
13:29 Whiteknight can you set it in make test?
13:29 dalek parrot: r43859 | bacek++ | trunk/src (2 files):
13:29 dalek parrot: Fix previous commit - allocate interp->gc_sys in allocate_interp.
13:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43859/
13:29 dalek parrot: r43860 | bacek++ | trunk/src/main.c:
13:29 dalek parrot: Add handling of CLI GC switching.
13:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43860/
13:30 bacek Whiteknight, yes, why not?
13:30 Whiteknight how?
13:30 Whiteknight "make test --gc inf"?
13:33 bacek ah
13:33 bacek You have to update makefiles (and probably t/harness to support it)
13:33 Whiteknight ok. I can do that
13:39 bacek oh.. SET_TRACE called too early.
13:45 bacek fixed.
13:46 dalek parrot: r43861 | coke++ | branches/rm_cflags/src (3 files):
13:46 dalek parrot: Cleanup more unused
13:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43861/
13:46 dalek parrot: r43862 | bacek++ | trunk/src/main.c:
13:46 dalek parrot: Don't use Parrot_exit in Parrot_version. Interp ins't initialized yet.
13:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43862/
13:46 dalek parrot: r43863 | bacek++ | trunk/src/main.c:
13:46 dalek parrot: Fix handling trace CLI options
13:46 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43863/
13:48 kjeldahl__ joined #parrot
13:55 * Coke wonders how long it will be until someone gets the bright idea to rewrite the test harness in nqp-rx.
13:57 Coke "<@bacek> I can deal with Coke later :)" RAWR!
13:57 Whiteknight we can't rewrite parrot's harness in nqp-rx, unfortunately
13:58 Whiteknight 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.
13:59 Coke (since you can drop down to PIR to test actual opcodes, etc.)
14:00 Coke (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
14:01 Coke fair enough, but you can reduce that amount by compiling it to PIR and then just using that PIR.
14:03 dalek parrot: r43864 | plobsing++ | branches/opengl_dynamic_nci (3 files):
14:03 dalek parrot: svn:ignore and clean new files
14:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43864/
14:03 Whiteknight you can, through a bootstrapping step, yes.
14:06 * Coke bemoans again how slow feather is.
14:06 * Coke needs to get a machine he can compile on locally again.
14:08 Coke feather?
14:08 purl somebody said feather was http://feather.perl6.nl/ or a perl6 community development server or run by juerd.
14:11 * Coke pings juerd.
14:20 dalek parrot: r43865 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
14:20 dalek parrot: Promote a warning that the build is clean on.
14:20 dalek parrot: Add a note about why these warnings may not be in effect at compile time.
14:20 dalek parrot: --This line, and those belffow, will be ignored--
14:20 dalek parrot: M    config/auto/warnings.pm
14:20 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43865/
14:22 mikehh bacek: I am getting serious test failures all over the place - make corevm/make coretest
14:24 mj41 mikehh: r43863 seems ok on TapTinder http://tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk
14:25 mikehh might be related to --optimize
14:27 Whiteknight on the branch?
14:27 mikehh got to go out for as bit - bbl
14:37 dalek parrot: r43866 | coke++ | branches/rm_cflags/config/auto/warnings.pm:
14:37 dalek parrot: Don't bother probing for a fake warning.
14:37 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43866/
14:37 dalek parrot: r43867 | mikehh++ | trunk/src/main.c:
14:38 dalek parrot: add cast to src/main.c to allow g++ to build
14:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43867/
14:38 dalek parrot: r43868 | whiteknight++ | branches/vtable_massacre (3 files):
14:38 dalek parrot: 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 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43868/
14:38 bacek joined #parrot
14:46 plobsing joined #parrot
14:54 dalek parrot: r43869 | whiteknight++ | branches/vtable_massacre/t/pmc/multidispatch.t:
14:54 dalek parrot: multidispatch.t had a bad plan
14:54 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43869/
15:10 Whiteknight vtable_massacre passing coretest now after removing bitwise ops.
15:10 Whiteknight NEXT!
15:10 dalek parrot: r43870 | whiteknight++ | branches/vtable_massacre (2 files):
15:10 dalek parrot: my editor auto-removed whitespace from string.t Fix the bnots ops to not get the pointer voodoo so wrong. string.t passes now
15:10 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43870/
15:10 dalek parrot: r43871 | coke++ | branches/rm_cflags/config/gen/makefiles (2 files):
15:10 dalek parrot: Don't need CFLAGS manipulation, just turn off these warnings.
15:10 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43871/
15:17 cognominal joined #parrot
15:43 dalek parrot: r43872 | coke++ | branches/rm_cflags/lib/Parrot/Docs/File.pm:
15:43 dalek parrot: This file is gone...
15:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43872/
15:49 theory joined #parrot
15:56 Psyche^ joined #parrot
16:03 Tene Austin: pong
16:05 Coke Juerd++
16:05 Coke Juerd++
16:06 szbalint what did Jesus^WJuerd do?
16:16 dalek parrot: r43873 | whiteknight++ | branches/vtable_massacre (10 files):
16:16 dalek parrot: 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 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43873/
16:18 Coke szbalint: he made feather go. go fast.
16:18 szbalint \o/
16:20 * Coke wonders if this looks like a zombie chasing you:
16:20 Coke fof
16:22 szbalint hehe
16:27 Coke yapc 2010 call for papers.
16:28 * 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 #parrot
16:34 darbelo joined #parrot
16:41 dukeleto good localtime()
16:43 kjeldahl joined #parrot
16:46 Whiteknight hello duke
16:48 dalek parrot: r43874 | whiteknight++ | branches/vtable_massacre (3 files):
16:48 dalek parrot: remove set_bignum_int vtable from Integer.pmc. Last vtable I think we need to remove. Passes all tests
16:48 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43874/
16:51 Whiteknight wasn't the splice vtable deprecated and supposed to have been removed?
16:52 Whiteknight I thought it was
16:52 dukeleto Whiteknight: howdy!
16:53 dukeleto Whiteknight: you have been quite busy lately. I just saw your parrot-math and parrot-data-structures projects
16:53 dukeleto Whiteknight: i will definitely help with both
16:57 darbelo dukeleto: ping
16:57 Whiteknight dukeleto: awesome! you want commit bits?
17:10 dukeleto Whiteknight: yes please!
17:10 dukeleto darbelo: pong
17:10 Coke anyone here building on cygwin that could help the poor guy on perl6-compiler?
17:11 Coke I just tried to build and can't even make it past "which compiiler should you use"
17:12 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!"
17:13 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 ;)
17:13 dukeleto yes, and joel sherril's idea of a parrot with a space helmet is awesome
17:14 dukeleto darbelo: the mentors for the project will most likely be Chris Johns, Joel Sherril, me and/or some other RTEMS peeps
17:16 NotFound Who has experience in creating parrot .deb packages?
17:16 theory joined #parrot
17:17 darbelo NotFound: allison did the ubuntu packaging IIRC
17:17 cotto_work joined #parrot
17:17 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:18 NotFound And I want a parrot in my phone :)
17:19 darbelo dukeleto: Good to know. I'm still building my RTEMS toolchain, but I intend to be all over this project.
17:20 dalek TT #1432 created by whiteknight++: Remove 2-argument math ops
17:20 dalek TT #1433 created by whiteknight++: Add a vtable function to get arithmetic mode
17:22 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 particle Whiteknight: it seems like a role to me.
17:23 Whiteknight particle: I'm thinking it's a properly of the PMC class. Very much like a role, yes
17:23 Whiteknight maybe a role is the way to do it
17:23 Whiteknight but an overridable vtable will have better performance and still give good flexibility for user-defined types
17:23 cotto_work good morning internets
17:23 Whiteknight hello cotto_work
17:23 Whiteknight do you wake up at work?
17:24 internets good morning cotto_work
17:24 dukeleto particle: howdy
17:24 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.
17:24 purl que tal, dukeleto.
17:24 dukeleto cotto_work: must be nice when the internets says "good morning"
17:25 internets ;)
17:26 mikehh joined #parrot
17:26 cotto_work Whiteknight, only when I fall alseep at work
17:28 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:29 Whiteknight NotFound: it's decent, but not as good as it could be
17:29 cotto_work joined #parrot
17:29 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"
17:29 Whiteknight but that's a preference
17:29 Whiteknight I would be happy if the new VTABLE returned a bool too
17:30 particle a vtable is baggage for non-number types
17:30 NotFound Whiteknight: you just put that message in Default and you're done.
17:30 Whiteknight NotFound: then the message only means that we are missing a particular vtable, not that the type is inherently non-numeric
17:31 Whiteknight in a user-defined type when the user hasn't implemented several dozen mathematics ops, the difference is important
17:31 Whiteknight in any case, the error message is the least important detail of the whole proposal
17:32 particle in user-defined pmcs, the pmc may decide to respond to different math ops in different contexts
17:32 particle for bitwise shift and mod, i'm an int.  for add and mul, i'm a float.
17:33 particle these are dynamic languages we're supporting.
17:34 NotFound Whiteknight: if you want that type of messages and behaviour, we can create a NonNumeric PMC and inherit from it.
17:35 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:36 Whiteknight fewer vtables is a very good thing, so we want to move in that direction
17:37 particle we really need pmcroles created
17:37 lucian joined #parrot
17:37 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
17:37 Whiteknight A way for us to define and enforce roles in the code is a great first step
17:37 NotFound We can just kill add PMC, INT and add PMC, NUM, leaving only add PMC, PMC
17:37 Whiteknight NotFound: exactly
17:38 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
17:38 NotFound Whiteknight: then you don't need a flag, just call VTABLE_add
17:38 cotto_work joined #parrot
17:39 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:40 Whiteknight 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?
17:40 Whiteknight Maybe we call it on an integral type, so sin_p_p can call "FLOATVAL a = (FLOATVAL)VTABLE_get_integer" instead
17:40 Whiteknight NotFound: I don't know, that's a different issue entirely
17:41 Coke Whiteknight: every type has get_number
17:41 darbelo Whiteknight: If it succeds, it's a valid operation.
17:41 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
17:41 NotFound Looks the same to me. Do something with that, or throw.
17:42 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
17:42 Whiteknight we should get the integer value and cast it to whatever we need once we get it
17:42 Coke Whiteknight: ... no.
17:42 Coke we should ask it for the type of value we want.
17:42 Whiteknight Coke: yes. Integer contains an integer, not a float.
17:42 dukeleto Whiteknight: no one should on purpose, but sometimes it happens via various levels of indirection
17:43 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
17:43 Coke Whiteknight: encapsulation doesn't usually mean "i have to write a lot more code". =-)
17:43 Coke which i would here.
17:43 Whiteknight darbelo: set_number_n_p would get the numeric value, cast it to a float if necessary, and return it
17:43 Whiteknight Coke: this way would reduce code
17:43 NotFound Whiteknight: asking for something before almost any operation is a waste of time and a mess of generated code.
17:44 Whiteknight because we wouldn't need to add get_float() for non-float types
17:44 Whiteknight or add get_integer for non-int types
17:44 Coke Whiteknight: but adding get_float is /trivial/ - what problem are you trying to solve here?
17:44 darbelo Whiteknight: So set_number_n_p will have to specail-case anything that holds an INTVAL?
17:44 Whiteknight we write the cast once, in the op, and don't have to add all the unnecessary accessors in every PMC type
17:44 Coke Whiteknight: not everything goes through an op.
17:45 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.
17:45 Coke Whiteknight: you're not decreasing the # of vtables here.
17:45 Coke unless we are also going to have to have different available vtables per pmc.
17:45 purl okay, Coke.
17:45 Whiteknight darbelo: set_number_n_p would ask the PMC what kind of value it had, and act accordingly
17:46 Whiteknight Coke: three accessors for every type of operation. get_number, get_number_keyed, get_number_keyed_int, ...
17:46 Whiteknight 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
17:46 Coke ok. can we set aside the issue of container-related vtables for the moment?
17:47 Coke that leaves the 3 core gets.
17:47 Coke yes?
17:47 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
17:47 Coke (or am I missing more?)
17:47 Whiteknight Coke: in that limited subset, yes
17:48 cognominal joined #parrot
17:48 Whiteknight Integer, for instance, should not provide get_complex, get_bignum, get_bigint, get_rational, etc
17:49 Whiteknight 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++)
17:49 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
17:49 mikehh however I get mega test failures if I build with --optimize on both gcc and g++
17:50 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?
17:50 Coke like, subtract, subtract_int, subtract_float ?
17:51 Whiteknight Most of them are already mentioned in tickets
17:51 Whiteknight all the i_* ops for instance, all the trig ops, ln, log, log10. gcd, lcd, and fact.
17:51 Coke ... those are ops.
17:51 Coke I thought we were talking about vtables just now.
17:52 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:54 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:55 Whiteknight NotFound: so do we need to have a log() VTABLE for all PMC types?
17:55 Whiteknight that's a huge waste of space for a trivial need
17:56 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.
17:57 Coke if log is an opcode (and not a vtable), how would it work on non int/float pmcs?
17:57 Coke (which i guess just rephrases what nf said.)
17:57 Whiteknight Coke: it's not just a pointer. It's allocated storage space for a pointer for every single PMC type
17:58 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
17:58 Coke Whiteknight: sorry, yes, "pointer per instance of PMC"
17:59 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.
17:59 Coke Whiteknight: ok. so every time we call log, we'd have to check to see if it defines a method, and invoke it.
17:59 Coke (and if not, then we can do the math on the float value)
18:00 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
18:00 Whiteknight Coke: so making the ops slightly more intelligent would actually FIX them to work with complex the way it should be
18:00 Whiteknight at the way there is no way to tell that Complex does not contain a scalar numeric value
18:00 Coke Whiteknight: at the expense of slowing it down everywhere else.
18:01 Whiteknight Coke: strongly disagree. No performance penalty
18:01 Coke Whiteknight: really? how do you know if you should be calling the method?
18:01 Whiteknight if the PMC is flagged as non-numeric
18:01 Coke there is a cost to invoke&fail, or check-to-see-if-invoke.
18:01 Coke Whiteknight: but a complex PMC /is/ numeric. or do you mean just not one of the two basic types of numeric?
18:02 Whiteknight Coke: Numeric, yes. Scalar-numeric, no
18:02 Whiteknight big difference
18:02 purl big difference is that we eat the swiming muscle of most of those.
18:02 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
18:02 Whiteknight and that's a stupid, encapsulation-breaking assumption to make
18:02 Coke it is NOT unreasonable to assume that a PMC provides a vtable.
18:03 Whiteknight because it doesn't work with BitInt, BigNum, Complex, Rational, etc
18:03 Coke that is why there are vtables.
18:03 Coke right. the log opcode is currently broken.
18:03 Whiteknight Coke: it becomes unreasonable for huge numbers of vtables
18:03 Coke Whiteknight: "define huge".
18:03 Whiteknight Coke: it's not just the log opcode. That's just the example that NotFound mentioned
18:03 Whiteknight Coke: VTABLE struct is currently about 2k on some systems
18:04 Whiteknight and it's 2k filled with mostly-unused cruft.
18:04 Whiteknight the aggregate costs of keeping those pointers around for all execution runs outweighs the occasional benefits when an application actually needs i_subtract_float
18:05 Whiteknight or any of the dozens of other specialized, unnecessary vtables
18:05 Whiteknight less is more
18:05 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.
18:05 NotFound Well, you can have an op that just call a method.
18:06 Whiteknight NotFound: NO!!! Don't assume. It's easy to ask
18:06 Whiteknight "are you int-like, float-like, or neither?"
18:06 NotFound Whiteknight: And what if neither?
18:07 Whiteknight NotFound: depends on the op. Maybe find_method, maybe throw exception
18:07 NotFound Whiteknight: So you ask again?
18:07 NotFound Oh, the op.
18:07 * plobsing considers the costs/benefits of pmc->vtable->secondary_uncommon_math_vtable
18:07 Whiteknight NotFound: with dynamic languages, we can't make assumptions. Any assumption we make is going to be horribly wrong for some HLLs
18:08 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
18:08 NotFound "you" teh user.
18:09 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:10 Coke as an aside, note that most pmcs aren't defining anything, but just inheriting. (where most == those outside of the repo)
18:11 Coke I think a potentially less confusing angle to approach this from, Whiteknight, might be, e.g., the shift/unshift/push/pop opcodes.
18:11 Coke (which could then be extending to all the math variants.)
18:11 Whiteknight what do you mean?
18:12 Coke I think it's an easier sell to strip those out.
18:12 Coke YMMV.
18:13 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
18:15 Coke NotFound: That is how I understand how it would work, fwiw.
18:15 chromatic joined #parrot
18:16 Whiteknight Coke: those are more commonly used operations and probably need to stay core
18:16 Whiteknight 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
18:16 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.
18:16 Whiteknight and in return we have tons of inconsistency throughout the core types in how they handle thigns
18:17 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.
18:18 Whiteknight dukeleto: what about logarithms?
18:18 joeri joined #parrot
18:18 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:19 Whiteknight the op is flexible, so it handles this without changes
18:19 dukeleto Whiteknight: http://xkcd.com/451/
18:20 NotFound dukeleto: :D :D :D
18:20 Whiteknight dukeleto: noce
18:20 Whiteknight nice
18:21 Whiteknight 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 Whiteknight 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
18:22 Whiteknight 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.
18:23 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.
18:23 dukeleto Whiteknight: i agree with you. the log op should be smarter
18:28 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:29 NotFound 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 http://nopaste.snit.ch/19534
18:29 Whiteknight dukeleto: almost all ops need to be smarter and make fewer assumptions
18:31 Whiteknight 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
18:31 Whiteknight dukeleto: exactly
18:34 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.
18:34 NotFound Whiteknight: assuming the result is a float doesn't look encapsulated to me.
18:35 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 Whiteknight that's perfect encapsulation
18:36 NotFound Whiteknight: encapsulated to me is: op log(OUT PMC, invar PMC)
18:37 Whiteknight NotFound: could implement the same exact idea for that too
18:37 mikehh joined #parrot
18:38 NotFound Whiteknight: then the idea is wrong.
18:39 NotFound The scalar type for some HLL may return non-float for some values.
18:40 nopaste "Whiteknight" at 68.46.29.192 pasted "log_p_p for NotFound" (24 lines) at http://nopaste.snit.ch/19535
18:40 Whiteknight NotFound: so then we need more. This is just a first draft
18:40 Whiteknight But the idea is sound: separate data from function
18:41 Whiteknight Maybe use use a vtable. Maybe we use roles. Maybe flags. Maybe attrs.
18:41 Whiteknight In any case, the op should know how to do the op, and the PMC should know how to hold the data
18:41 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.
18:43 NotFound VTABLE_get_numeric_type can't know what's the intended operation.
18:43 Whiteknight NotFound: so we find a more flexible approach
18:44 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
18:44 Whiteknight and any time the HLL adds a new type, we need a new special case
18:44 Whiteknight or, the op doesn't do the right thing
18:45 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
18:46 Whiteknight and then I would like to hear any arguments that such a datatype was both usable and internally consistent
18:46 Whiteknight Complex, for instance, is a non-scalar type and can never really be treated properly by get_intval or get_float
18:47 Whiteknight unless we say that get_float returns the magnitude, or the real part
18:48 NotFound Whiteknight: then sqr(-1) is such magical type in any HLL that returns a complex.
18:48 NotFound The scalars in that language, I mean.
18:48 Whiteknight sqrt is an operation, not a type
18:48 Whiteknight but the data type itself is always a complex
18:49 NotFound Whiteknight: The data type of -1 ?
18:49 Whiteknight $P0 = sqrt(-1)
18:49 Whiteknight but thats a different issue entirely
18:49 NotFound Whiteknight: yes, the -1 acts like a integer sometimes, and as a comples in sqr
18:49 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
18:50 Whiteknight NotFound: no, -1 is always a scalar number. The OUTPUT of sqrt() is a different value
18:50 purl okay, Whiteknight.
18:50 Whiteknight there are two PMCs there: the input and the output. The input is a negative integer, the output will be a complex
18:50 Whiteknight but the integer ALWAYS acts like an integer, and the complex ALWAYS acts like a complex
18:50 mikehh at r43874 - Ubuntu 9.10 amd64 - g++/gcc builds both ok without --optimize but fail mega with --optimize
18:50 NotFound Whiteknight: If the definition of "scalar" is "a float or an int", certainly.
18:51 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:52 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 Whiteknight dukeleto: I'm not talking about the operation. I'm talking about the data type
18:52 Whiteknight forget sqrt(), it's not what I'm talking about
18:52 purl Whiteknight, I didn't have anything matching sqrt(), it's not what i'm talking about
18:52 mikehh in fact g++ with --optimize FAILs around 1689 (maybe more) tests in make corevm/make coretest (AFAICS all with Segmentation faults)
18:52 dukeleto Whiteknight: it has a certain symmetry to it. "whatever the type is that you give, that is what you get out"
18:52 NotFound Whiteknight: if you say "act", you talk about operations.
18:52 dukeleto Whiteknight: /me forgets :)
18:53 mikehh and gcc with --optimize looks the same
18:53 chromatic mikehh, do you know which revision is responsible?
18:53 Whiteknight NotFound: I'm talkig about vtables. We don't have a sqrt vtable
18:54 mikehh everything PASSed at r43853 (gcc with --optimize)  - bisecting now
18:54 NotFound Whiteknight: let's talk about pow, then.
18:54 NotFound But....
18:55 theory joined #parrot
18:55 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
18:55 Whiteknight In the nopaste that I posted
18:56 Whiteknight Find me an example where the input PMC doesn't know whether it's an integer or a float?
18:56 Whiteknight or find me an example of where the input PMC needs to change depeding on the operation
18:57 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
18:58 Whiteknight sqrt, it doesn't matter
18:58 Whiteknight Find a place where the input PMC doesn't know what it is
18:58 NotFound Whiteknight: SomeScalar(-1)
18:58 Whiteknight NotFound: -1 doesn't know what -1 is?
18:58 Whiteknight what PMC type is -1?
18:59 Whiteknight 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.
19:00 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
19:00 Whiteknight Perl6Int for example
19:01 Whiteknight or TclInt
19:01 dalek parrot: r43875 | chromatic++ | branches/vtable_massacre/src/pmc (2 files):
19:01 dalek parrot: [PMC] Fixed improper returns from PMC METHODs in BigInt and BigNum.
19:01 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43875/
19:01 Whiteknight ah, thanks chromatic
19:02 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.
19:02 chromatic mikehh, I can't reproduce the segfaults with --optimize on 32-bit Linux with gcc.
19:03 Whiteknight NotFound: "acting like an integer" in this case means it uses integer arithmetic machine code instructions to act directly on data
19:04 Whiteknight 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
19:04 NotFound Whiteknight: then there is no such thing as acting like integer or like float that makes sense for log
19:05 Whiteknight NotFound: why not? We can pass a FLOATVAL to log, get a FLOATVAL back
19:05 Whiteknight It might not make sense for an Integer to be passed to log. That's true
19:05 NotFound Whiteknight: again: log(-1)
19:06 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)
19:06 chromatic mikehh, then let's hope the bisection is revealing.
19:06 Whiteknight NotFound: that's not a problem. The op can detect a negative number and do what the HLL wants
19:06 Whiteknight NotFound: the op is log_p_p. Write me a PIR snippet that causes problems
19:07 mikehh just finishing fulltest on gcc without --optimize
19:07 Whiteknight and I will write the op that makes the problem go away
19:08 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.
19:11 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32141), fulltest) at r43874 - Ubuntu 9.10 amd64 (gcc)
19:11 cotto_work joined #parrot
19:11 mikehh chromatic: yeah - I was testing that too
19:12 chromatic Ah, there we go.
19:14 Coke Whiteknight: how would you deal with things like 1/3.0 ?
19:14 mikehh make corevm/make coretest PASSes at r43856
19:14 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.
19:14 Coke (but keep it as float division in perl)
19:14 mikehh with gcc with --optimize
19:15 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.
19:17 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:
19:17 nopaste "coke" at 65.91.151.195 pasted "tcl, various types of division." (4 lines) at http://nopaste.snit.ch/19539
19:17 Whiteknight maybe Tcl and Perl6 need to define arithmetic dynops if they have specific behavior they want to implement
19:17 Coke Whiteknight: that pretty much contradicts everything about pmcs I've heard for the past 9 years. =-)
19:18 Coke 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
19:18 Coke Whiteknight: no argument there.
19:18 chromatic mikehh, it is... the segfault is from src/main.c line 450
19:18 chromatic There's no current context to check for warnings.
19:18 Whiteknight Coke: we are letting the PMCs decide, starting at the fundamental level of "do I call get_integer or get_number?"
19:18 Coke that's the wrong place to ask the question.
19:19 Coke how does the pmc know at that point you're doing division?
19:19 Coke how does it know what the other value involved in the operation is?
19:19 mikehh chromatic: it blows up at r43860 (gcc with --optimize)
19:20 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.
19:21 Whiteknight Coke: and also, maybe we need to explicitly define "integer_divide" and "float_divide" opcodes
19:21 Whiteknight has the benefit of a more direct translation to machinecode for JIT
19:21 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.
19:22 Coke (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
19:22 particle or the dynops operate solely on dynpmcs also provided
19:22 Whiteknight the problem is add_p_p_p, where we make an assumption
19:22 Whiteknight particle: that has to be the wrong solution
19:22 Coke Whiteknight: these would still take pmcs, but would force a type coercion. that's the wrong approach.
19:22 particle has to? and there's only one wrong solution?
19:22 particle :P
19:23 particle lucky me for picking it!
19:23 Whiteknight particle: demanding that add-on modules may not interoperate?
19:23 Coke then I have to know when I generate the opcode which variant i want.
19:23 Coke when I really want this to dispatch at runtime appropriately. but only for my HLL, since my HLL has different rules than  yours.
19:23 particle the dynops offer specific behaviors
19:23 particle but on what data types?
19:24 Whiteknight Coke: so the answer may be a way for the HLL to specify options like that in a global way
19:24 Whiteknight so that people who have never heard of Tcl can still write modules that have a hope of interoperating with partcl
19:24 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?
19:25 Whiteknight what boundary?
19:25 purl boundary is new
19:25 Coke the global.
19:25 purl the global is http://mankz.com/code/GlobalCheck.htm
19:25 Coke 14:23 <@Whiteknight> Coke: so the answer may be a way for the HLL to specify options like that in a global way
19:25 Coke global how?
19:25 Coke everywhere? limited to my HLL code? limited to PMCs generated by my HLL?
19:25 NotFound Whiteknight: the way to specify that things is hll mapped types.
19:25 Whiteknight Coke: "global" in the sense that we do hll_map now. global to the HLL
19:26 Whiteknight in one HLL, the ops do one thing, in a different HLL the ops do another
19:26 Whiteknight and that's not unreasonable
19:27 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?
19:27 Coke dukeleto: svn ls http://svn.pugscode.org/pugs | ack trunk
19:27 particle however, the hll defines semantics
19:27 Coke Whiteknight: http://nopaste.snit.ch/19539
19:27 mikehh chromatic: make corevm/make coretest PASSes at r43859 and it blows up at r43860 (gcc with --optimize)
19:28 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?
19:28 chromatic mikehh, committing fix now.
19:28 Coke Whiteknight: ... did you READ the nopaste?
19:28 mikehh chromatic: great
19:28 chromatic msg bacek See r43876 for a workaround for a seggie from r43860.
19:28 purl Message for bacek stored.
19:29 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 ;)
19:29 Coke (the answer is no.)
19:29 Whiteknight Coke: I'm trying to compare with what you said above
19:30 Coke Whiteknight: I immediately said I misspoke and gave a nopaste. =-)
19:30 Coke the nopaste shows running tcl code from feather.
19:30 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.
19:30 Whiteknight that implies that 1/3.0 is integer division
19:31 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:
19:31 Coke 14:29 <@Coke> Whiteknight: I immediately said I misspoke and gave a nopaste. =-)
19:31 particle dukeleto: almost nobody does the full spec, it's *awful*
19:31 Coke please read the nopaste -in lieu- of my original send.
19:32 dukeleto particle: yeah. but subsets of the spec are very nice
19:32 dukeleto particle: being able to attache a "payload" to a NaN is a great concept
19:32 particle yes, we use it in perl 6
19:32 particle heck, we're using it in parrot now, too
19:32 Whiteknight ok
19:33 particle with Exceptions
19:33 dukeleto particle: good to see you back in the channel. been busy?
19:33 particle incredibly busy, i'm afraid
19:33 particle at least it's (mostly) paid work
19:33 Whiteknight Coke: so in partcl, between an int and a float, the result is always a float regardless of the order?
19:33 particle good luck with the intro to parrot tonight, looks like fun!
19:33 dukeleto particle: gsoc 2010 is ramping up. do you want to be involved or should I look for another poor soul?
19:34 particle dukeleto: i'd like to be involved again
19:34 Whiteknight Coke: and between two ints, the result is an int?
19:34 dukeleto particle: there may be video recording from merlyn
19:34 particle gsoc, pvmw, etc
19:34 Whiteknight so the Op can determine the types of both PMCs and automatically promote int->float when one is a float
19:34 particle excellent
19:34 dalek parrot: r43876 | chromatic++ | trunk/src/main.c:
19:34 dukeleto particle: shall I list you as backup org admin for TPF/Parrot when I do the paperwork?
19:34 particle dukeleto: yes, please
19:34 dalek parrot: [src] Added a guard to avoid segfaults when processing CLI arguments; an
19:34 dalek parrot: optimized build of Parrot will warn about using the --gc-debug flag, but r43860
19:34 dalek parrot: moved initialization of the initial context to after this point (reported by
19:34 dalek parrot: Michael Hind).
19:34 Whiteknight I don't know of a single HLL where such a strategy would not work for those two types
19:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43876/
19:34 dalek parrot: r43877 | chromatic++ | trunk (4 files):
19:34 dalek parrot: [src] Fixed interpeter -> interpreter typo.
19:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43877/
19:34 particle dukeleto: did you get a note from ellen ko about mentor org payments?
19:35 dukeleto particle: yes, and forwarded it to karen and kurt, which karen said was the correct person
19:35 particle fab
19:35 Coke Whiteknight: http://github.com/partcl/partcl/b​lob/master/src/pmc/tclint.pmc#L37 is the current implemention in partcl (which I /think/ is pretty close to tcl's behavior.)
19:35 dukeleto particle: i got reimbursed by TPF, but they might not make it in time to get reimbursed themselves
19:35 particle however, this has to move quickly, and kurt isn't good at that
19:35 particle so maybe ping jim to let him know
19:35 dukeleto particle: they even reimbursed me for last year, which was awesome
19:35 particle nice!
19:36 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 #parrot
19:37 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!'
19:38 mikehh chromatic: make corevm/make coretest, make world/make test PASS (gcc with --optimize) running fulltest now
19:39 * particle is designing artwork for a 2010 parrot/rakudo workshop
19:42 hercynium joined #parrot
19:47 dukeleto particle: nice. are you down for helping organizing something parrot-like for Open Source Bridge?
19:47 iblechbot joined #parrot
19:49 Whiteknight dukeleto: by the way, I made you contributor to parrot-data-structures and parrot-math-functions
19:50 cotto_work dukeleto, what's the expected cost for Open Source Bridge?
19:50 dukeleto Whiteknight: sweet!
19:51 dukeleto cotto_work: very cheap, and free if you are a speaker/volunteer
19:51 dukeleto cotto_work: let me see if they have prices for this year
19:51 particle dukey: not sure i can make it to that conference, but i can probably help facilitate
19:51 cotto_work Nice.  I wish it weren't a 3 hour trip down to pdx so I could volunteer more easily.
19:53 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 dukeleto particle: cool. i am organizing the 24(ish) hr "Hacker lounge"
19:53 dukeleto cotto_work: you can take the nice train down, no?
19:54 dukeleto particle: i notified jim of the situation
19:55 dukeleto 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
19:55 Whiteknight I would like them to be language agnostic
19:57 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32143), fulltest) at r43877 - Ubuntu 9.10 amd64 (gcc with --optimize)
20:00 TimToady_ phone
20:00 NotFound I have parrot running on the Nokia N900 :)
20:00 NotFound Talking about phone... X-)
20:17 nopaste "NotFound" at 213.96.228.50 pasted "Parrot in Maemo - Nokia N900" (14 lines) at http://nopaste.snit.ch/19543
20:19 Whiteknight nice
20:19 payload joined #parrot
20:20 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?
20:20 Whiteknight and does it pass tests?
20:21 NotFound I just built it in the scratchbox of the Maemo sdk, without changes. Installed it on /runparrot and scp -r that directory.
20:22 Whiteknight builds tests?
20:22 lucian joined #parrot
20:23 NotFound In the scratchbox, yes.
20:24 NotFound In the real machine, don't tested yet.
20:29 ash_ joined #parrot
20:30 ashleyb joined #parrot
20:38 kurahaupo joined #parrot
20:38 kurahaupo Good $localtime.
20:38 mikehh joined #parrot
20:38 kurahaupo Quick question: how to invoke GC collection from PIR? (I have a test case that depends on GC timing)
20:39 ash__ joined #parrot
20:39 chromatic mikehh, can you add Rakudo to your Parrot smoking?
20:40 chromatic kurahaupo, sweep 1
20:40 mikehh chromatic: will do that
20:41 kurahaupo chromatic: thanks
20:41 kurahaupo chromatic++
20:42 theory joined #parrot
20:48 Coke TimToady++
20:55 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:57 kurahaupo joined #parrot
20:58 darbelo tewk: Isn't that the inferior runloop problem?
20:58 darbelo 'cause we don't have a solution to that one.
20:58 chromatic I don't think that's true.
21:01 chromatic I'd have to see the code though.
21:02 Coke anyone know why this complains :
21:02 Coke char * const fmt    = "local__%s__%s__$";
21:02 NotFound Coke: you need one more const
21:03 Coke NotFound: ok, where? =-)
21:03 tewk Its not an inferior runloop.
21:03 Austin Point is constant, characters pointed to are not.
21:03 Austin *PointER is constant
21:03 tewk const char *  const fmg =
21:03 PerlJam Coke: in front
21:03 purl rumour has it in front is ? lenzo davorg
21:03 NotFound Coke: but is easy: const char fmt[] = "local__%s__%s__$";
21:04 NotFound easier
21:05 Coke NotFound: danke.
21:06 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:
21:06 Coke warning: size of 'yy_nxt' is 14092 bytes
21:06 Coke (gcc)
21:06 tewk I basically want to update ->P to put the return in &different_ret_val now.
21:06 Coke bah. larger-than. nevermind.
21:09 chromatic tewk, I *think* you have to update the CallSignature, unless you call Parrot_pcc_invoke_sub_from_c_args() again.
21:10 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.
21:12 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)
21:12 NotFound Forgot to mention that the Maemo build pass all tests except t/pmc/threads.t
21:13 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 #parrot
21:17 ash_ um.... huh? what version of g++? i am using g++ and i haven't had any problems building rakudo
21:21 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
21:22 mikehh g++ (Ubuntu 4.4.1-4ubuntu9) 4.4.1
21:22 mikehh the warning was from the gcc build
21:23 tewk mikehh, g++ 4.4.1 probably reports it as an error
21:23 tewk add and explicit (struct PMC **) cast and it should build
21:23 mikehh It did last time I tried to build
21:24 kurahaupo joined #parrot
21:24 plobsing joined #parrot
21:24 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
21:25 tewk nopaste the g++ build log and we can probably fix it pretty fast.
21:27 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
21:28 ash_ ah, that may be an issue then i imagine
21:30 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:32 tewk Why isn't the pc in interp or ctx, its part of the runloop state, it really should be.
21:34 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 payload joined #parrot
21:34 NotFound Bootstrap process fully tested now :)
21:35 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 http://nopaste.snit.ch/19546
21:36 coke joined #parrot
21:36 NotFound Of course, the pbc_to_exe step must be omitted because of the lack of C compiler.
21:36 coke scary.
21:36 tewk I have parallel futures running on parrot, Now I just need to fix the gc to cooperate with threads.
21:37 Coke seen tene?
21:37 purl tene was last seen on #parrot 5 hours, 33 minutes and 36 seconds ago, saying: Austin: pong
21:37 darbelo Good luck. Have fun.
21:38 Tene seen Coke?
21:38 purl Coke was last seen on #parrot 45 seconds ago, saying: seen tene?
21:38 tewk darbelo, We have done it before for the PLT Scheme vm, its not impossible. :)
21:39 darbelo tewk++
21:40 Austin Hoo, boy.
21:41 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?)
21:43 Coke Tene: your name came up recently in regards to one of the roadmap items that rakudo * will need.
21:44 Tene What is it?
21:44 purl it's it!
21:45 lucian joined #parrot
21:46 Coke Tene: I don't remember. :|
21:46 Coke seen chromatic?
21:46 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.
21:46 Tene Oh.  Well, let me know if you can figure it out.
21:46 Coke it involved hll interop. and exceptions?
21:47 Tene That would be for me, then.
21:47 Tene Was it on IRC?
21:47 Coke nope.
21:47 chromatic Subroutine leave semantics.
21:47 Coke seen pmichaud?
21:47 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]
21:47 Coke chromatic: THANK You.
21:51 Coke chromatic: http://en.wikipedia.org/wiki/Bloody_Code
21:51 Coke (great release name)
21:53 eternaleye joined #parrot
21:55 Coke FYI: parrot.org host is doing some work tomororw at 4pm PST that should absolutely NOT break anything. =-)
21:56 * darbelo has heard that one before.
21:56 * darbelo has *said* that one before too.
21:57 ash_ my boss, during a server move, accidentally deleted ummm 41 sites, i think it was, by clicking to much in Plesk
21:58 ash_ that was a fun 48 hours that followed
21:59 NotFound http://notfound.posterous.c​om/winxed-in-a-mobile-phone
22:04 Coke NotFound++
22:06 GeJ Good morning everyone.
22:08 cotto_work hi GeJ
22:12 dukeleto o hai
22:18 cotto_work hi jsut
22:19 jsut hi
22:19 purl niihau, jsut.
22:25 cotto_work joined #parrot
22:25 kid51 joined #parrot
22:28 chromatic msg dukeleto Remind me I have an announcement from pdcawley for tonight's meeting.
22:28 purl Message for dukeleto stored.
22:37 dukeleto chromatic: you have an announcement. i will try to remember
22:39 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:40 pmichaud I'm a little surprised by this, since the whole point of 'register' was to allow that to work.
22:49 ash___ joined #parrot
22:53 cotto_work joined #parrot
22:55 cotto_work pmichaud, do you have a minute for a pct question?
22:57 cotto_work http://nopaste.snit.ch/19522
22:58 pmichaud cotto_work: that's not a pct question, it's a parrot question :)
22:58 pmichaud cotto_work: the sub is being executed twice
22:58 Coke :load :init
22:58 Coke pick one.
22:58 pmichaud no
22:58 pmichaud the problem isn't that both are present
22:59 pmichaud the problem is that the sub is also :main
22:59 cotto_work Thanks.
22:59 Coke crap.
22:59 Coke pmichaud++
22:59 cotto_work pmichaud++
22:59 Coke I've even been bitten by that.
22:59 PerlJam it's :main because it's the only one?
23:00 cotto_work the first one
23:00 purl the first one is gone
23:00 pmichaud PerlJam: because no other sub is marked :main, and it's first
23:00 PerlJam er, yeah, the first one
23:00 * cotto_work feels enlightened.
23:00 pmichaud (the problem would still exist if there were other subs after this one :)
23:01 cotto_work hopefully this enlightenment will persist when cotto_work becomes cotto
23:01 Coke note that s/:init/ also works.
23:01 Coke (since then it's only run as the implicit :main)
23:01 darbelo cotto_work: That statement denies your very cotto nature.
23:02 * Coke does a search for cotto, sees a bunch of images, and is reminded to never pick a fight with cotto.
23:04 hercynium joined #parrot
23:09 cotto_work I'm a type of salami.  I want to deny my nature.
23:09 cotto_work purl, cotto?
23:09 purl cotto is Christoph Otto <mailto:christoph@mksig.org> or a cooked salami or The Decider
23:17 eiro joined #parrot
23:19 ashleyb joined #parrot
23:30 tewk Anyone successfully used SD to clone trac.parrot.org?
23:33 kid51 SD?
23:33 purl SD is cool...dunno about its' connectivity... or super-deformed or san diego. or at http://syncwith.us or simple defects, a distributed bug tracker
23:35 kid51 tewk:  First I've heard of it ... but other people may have more knowledge
23:42 cotto_work nice idea but I hadn't seen it before
23:44 dukeleto i have heard of sd, but never used it
23:45 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 Whiteknight joined #parrot
23:48 Austin Pmichaud: nevermind, you were surprised by that.
23:49 Austin Okay. Calling "register" creates a protoobject with an anonymous (name='') protoclass that extends P6protoobject.
23:49 Austin (Calling "register" on a PMC type, that is.)
23:51 Austin 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:52 Austin Because the P6* stuff wants protoobject to override the PMCtype stuff:  "    ##  P6protoobject methods override parrotclass methods..."

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced