Camelia, the Perl 6 bug

IRC log for #parrot, 2008-05-27

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:02 rdice joined #parrot
00:07 dalek r27835 | pmichaud++ | trunk:
00:07 dalek : [rakudo]:
00:07 dalek : * Add an implementation of infix:<xx>, from RT#54870 (dolmen++)
00:07 dalek : * Patch courtesy Olivier Mengu� <olivier.mengue at gmail.com>
00:07 dalek : * One minor change to handle negative repetition values.
00:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27835
00:11 dolmen Hé, hé. My first rakudo/perl6 patch :)
00:12 Auzon Congrats :)
00:14 dolmen Too late to print a tee-shirt for the French Perl workshop, on friday ;)
00:19 Whiteknight is the GLUT stuff in the parrot repo, or do i get it from somewhere else?
00:24 tetragon Which GLUT stuff, the parrot GLUT stuff that is built by make?
00:25 Whiteknight the parrot glut stuff. I'm trying to run the triangle.pir example, but it says it can't find the libraries
00:26 tetragon Which platform?
00:26 purl I'm running on OS/2 on an Atari, can you help?
00:26 * japhb is bak
00:26 Whiteknight I'm on debian x86
00:27 Whiteknight oh, i didn't even think that they might not have it built for this platform
00:27 tetragon Do you have the headers installed?
00:27 Whiteknight I have no idea, which probably means "no".
00:27 dalek r27836 | jkeenan++ | searchdocs:
00:27 dalek : Differentiate between help and usage messages; split them into separate
00:27 dalek : functions in Parrot::Docs::SearchOps.  Adjust tests as needed.  No
00:27 dalek : command-line options now simply invokes short usage method.
00:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27836
00:27 japhb Whiteknight: If you look at my latest patch set (in RT 54868), you'll see the list of packages in config/auto/opengl.pm that you need to install in the OS to get the headers)
00:27 Whiteknight I haven't put much thought into this
00:28 Whiteknight thanks
00:28 tetragon And what does Configure.pl say about OpenGL?  My box says:
00:28 tetragon Determining if your platform supports OpenGL............yes, MacOSX_GLUT 5.
00:29 Whiteknight "no." <-- There's my problem. I'll install it now
00:29 japhb Whiteknight: for Debian, it is freeglut3-dev, libglu-mesa-dev, and either libgl1-mesa-dev or nvidia-glx-dev (depending on your X/GL drivers)
00:30 Whiteknight thanks
00:30 japhb tetragon: Can you try the RT 54868 patch set on Mac OS X when you get a chance?
00:30 * japhb is being called to dinner; I'll be bak in a bit
00:33 Whiteknight installing freeglut3-dev installed all the rest of the packages you mentioned
00:33 Whiteknight so that's conveniner
00:33 Whiteknight convenient*
00:37 * tetragon grumbles at having to edit japhb's patch set just so that it can by applied
00:44 tetragon What's the diff flag '--git' mean?
00:50 tetragon japhb: patch is choking on patch 0001, haven't tried any of the others yet
00:54 bacek_ joined #parrot
00:55 bacek_ hi again
00:55 purl oh, you're back!
01:00 bacek__ joined #parrot
01:09 dalek r27837 | jkeenan++ | searchdocs:
01:09 dalek : Add a test for the --all option.  Correct error in regex searching for =item
01:09 dalek : lines for ops; it was ignoring ops that take no arguments, e.g., end().  Add
01:09 dalek : to MANIFEST additional test file and dummy files used during testing.
01:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27837
01:10 DietCoke .
01:12 bacek__ ..
01:13 tetragon ...
01:14 japhb n(n+1)/2
01:14 purl n(n+1)/2 is, like, the sum from 1 to n
01:14 japhb go purl!
01:14 purl You go, japhb!
01:14 japhb tetragon: oh, suckage.
01:15 japhb --git means git format, which includes info about file permissions, revision hashes, etc.
01:16 japhb tetragon: OK, I'll try a different method of generating the patch(es)
01:16 DietCoke was the git-svn question ever answered?
01:16 tetragon Even with that stuff stripped out, it still isn't applying
01:16 DietCoke unified diff format would be nice.
01:17 tetragon It's failing on config/gen/opengl.pm
01:17 japhb DietCoke: which one?  The one I asked is "Can you add SVN properties using git-svn?"  And the answer I've seen so far is "no".  Which bites, but oh well.
01:17 japhb DietCoke: git is unified + extra stuff.
01:17 japhb It's turning off that extra that will be the trick.
01:18 DietCoke is git worth the hassle here? =-)
01:18 tetragon I got it to apply by removing the first chunk from that file (expansion of an svn $Id$)
01:18 japhb Ah!  Config/gen/opengl.pm?
01:19 * japhb goes to fix that
01:19 tetragon I got the batch to apply after removing that one chunk
01:26 japhb tetragon: I've now posted a new single patch that replaces the previous 5.  I generated it a different way in git-svn, hopefully this will work better for you.
01:26 tetragon I have a build on the go from the set of five
01:27 japhb DietCoke: Does this new version work for you?
01:27 japhb tetragon: ah, cool, thanks.
01:27 dalek r27838 | rgrjr++ | trunk:
01:27 dalek : * parrot.spec, CREDITS:
01:27 dalek :    + Add %{_usr}/runtime to %files.  Increments to Gerd Pokorra.
01:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27838
01:28 japhb DietCoke: (is git worth the hassle here?)  Right now, yes, because SVK is fubar under Debian at the moment, and I can't stand being unable to do local work and have decent merges and such
01:30 bacek_ joined #parrot
01:38 tetragon japhb: Triangle spins
01:45 bacek_ joined #parrot
02:05 japhb tetragon: excellent
02:05 japhb Now we need a Win32 success, and we're good for trunk inclusion.
02:06 Tene Yeah, offline commits are very important for me, and I could never figure out svk
02:07 Tene I have hashes working in cardinal now
02:07 japhb Tene++
02:08 Zaba_ joined #parrot
02:09 * bacek_ running git svn clone http://svn.perl.org/parrot/trunk...
02:09 bacek_ my estimations is 'few hours'...
02:14 Infinoid I usually only fetch the current rev...
02:37 Tene bacek_: you really don't need 7 years of history.  you can do a shallow clone.
02:45 dalek r27839 | jkeenan++ | searchdocs:
02:45 dalek : Add SVN tag and property.
02:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27839
03:05 teknomunk joined #parrot
03:42 bacek_ Tene:  yeah... I'm definetly become stupid on meetings...
03:57 Zaba joined #parrot
04:19 ank joined #parrot
04:36 tetragon joined #parrot
04:53 mapar joined #parrot
04:54 mapar left #parrot
04:55 mapar joined #parrot
04:56 DietCoke i'm pretty sure that our svn admins dislike getting the whole history for svk, at least.
05:09 japhb DietCoke: Do you know who/what I am waiting on for commitbit at this point?
05:12 Zaba_ joined #parrot
05:28 dalek r27840 | pmichaud++ | trunk:
05:28 dalek : [rakudo]:
05:28 dalek : * Fix typos and trailing spaces.
05:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27840
05:30 baest joined #parrot
05:38 mapar joined #parrot
05:52 iblechbot joined #parrot
06:05 uniejo joined #parrot
06:27 dalek r27841 | fperrad++ | trunk:
06:27 dalek : [install]
06:27 dalek : - remove PAST-pm.pbc
06:27 dalek : - remove Protoobject.pbc
06:27 dalek : - add P6object.pbc
06:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27841
06:38 bacek_ joined #parrot
06:38 bacek_ hi there
06:39 bacek_ purl: logs?
06:39 purl logs are in the forest. or useful for recovering that was was lost, or assigning blame
06:39 bacek_ purl: irc log?
06:39 purl irc log is probably what is disturbing to me though - but it could be a total fabrication
06:40 bacek_ stupid piece of code...
06:40 pmichaud no, logs is http://irclog.perlgeek.de/parrot/
06:40 pmichaud purl, logs is http://irclog.perlgeek.de/parrot/
06:40 purl i already had it that way, pmichaud.
06:40 pmichaud no, irc log is http://irclog.perlgeek.de/parrot/
06:40 purl okay, pmichaud.
06:40 pmichaud parrotlog?
06:40 pmichaud parrotlog is http://irclog.perlgeek.de/parrot/
06:41 pmichaud try one of those, bacek  :-)
06:43 bacek_ pmichaud: thanks. I JFGI :)
06:52 AndyA joined #parrot
06:57 * bacek_ have 5 failures in spectest_regression.
06:58 bacek_ All about 'int(-0.5)' etc produces positive zero instead of negative.
06:58 moritz int shouldn't distinguish those
06:59 moritz floating points maybe, but int should have just one form of 0
07:02 masak joined #parrot
07:19 Zaba joined #parrot
07:25 ejs joined #parrot
07:47 bacek_ moritz: previous versions of rakudo retuns "-0"...
08:17 bacek_ joined #parrot
08:24 Tene DietCoke: were you being helpful, or is the separate "set svn props" commit a problem that I should work to avoid?
08:42 Casan_ joined #parrot
08:43 dalek r27842 | fperrad++ | pdd25cx:
08:43 dalek : [build]
08:43 dalek : - fix compiling of pdb
08:43 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27842
08:47 bacek_ ping pmichaud
08:47 purl I can't find pmichaud in the DNS.
08:47 bacek_ pmichaud: ping
08:48 bacek_ it so not in perl style... It should be same action!
08:49 bacek_ nopaste?
08:49 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
08:49 purl it has been said that nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste
08:49 dalek allison@perl.org | A foundation for Parrot:
08:49 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?a_foundation_for_parrot
08:49 shorten dalek's url is at http://xrl.us/bkxq5
08:53 nopaste "bacek" at 211.29.157.151 pasted "Propogating result from try{} block to caller (for pmichaud/jonathan to review)" (35 lines) at http://nopaste.snit.ch/13075
08:54 bacek_ see everyone in couple of hours.
09:02 dalek allison@perl.org | Articles of Incorporation:
09:02 dalek link: http://www.perlfoundation.org/parrot​/index.cgi?articles_of_incorporation
09:02 shorten dalek's url is at http://xrl.us/bkyfj
09:13 ank joined #parrot
09:31 iblechbot joined #parrot
09:33 dalek allison@perl.org | A foundation for Parrot:
09:33 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?a_foundation_for_parrot
09:33 shorten dalek's url is at http://xrl.us/bkxq5
09:43 ejs joined #parrot
09:59 dalek r27843 | kjs++ | trunk:
09:59 dalek : [DEPRECATED] deprecate '.namespace \n' in favor of '.namespace []\n' to indicate root namespace.
09:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27843
10:00 kj joined #parrot
10:03 kjs_ kjs?
10:03 purl somebody said kjs was Klaas-Jan Stol <mailto:parrotcode@gmail.com> from The Netherlands or KHTML (read Safari/Koqueror)'s JavaScript engine... or called kj these days.
10:03 ruoso joined #parrot
10:06 dalek r27844 | kjs++ | trunk:
10:06 dalek : [DEPRECATED] add a 'post <release>' note to the .namespace (no brackets) item.
10:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27844
10:12 ejs joined #parrot
10:13 IllvilJa joined #parrot
10:32 ejs joined #parrot
10:51 AndyA_ joined #parrot
11:01 kj karma kjs
11:01 purl kjs has karma of 670
11:01 kj karma kj
11:01 purl kj has karma of 5
11:02 bacek kj, slightly different :)
11:04 cizra karma purl
11:04 purl purl has karma of 8084
11:10 kid51 joined #parrot
11:18 ejs joined #parrot
11:34 rdice joined #parrot
11:40 ^conner joined #parrot
11:43 ^conner holy crap, I'm still an op ;)
11:44 ^conner anyone have advice as to a decent php5+mysql hosting company?
12:06 dalek r27845 | jkeenan++ | searchdocs:
12:06 dalek : Instead of storing dummy .ops files in the repository -- which would require adjusting several coding standards tests so that these files would not cause them to fail -- store them in samples.pm as exportable variables.  Adjust tests accordingly.
12:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27845
12:48 DietCoke purl--
12:48 purl DietCoke: what?
12:48 DietCoke hah, no wonder his karma is so high!
12:48 gryphon joined #parrot
13:06 jhorwitz joined #parrot
13:13 bacek seen pmichaud
13:13 clunker3 pmichaud was last seen on #parrot 6 hours, 31 minutes and 58 seconds ago, saying: try one of those, bacek  :-)
13:13 purl pmichaud was last seen on #parrot 6 hours and 32 minutes ago, saying: try one of those, bacek  :-)
13:13 bacek hey! 2 bots are too many for this channel!
13:15 Whiteknight joined #parrot
13:15 DietCoke I iz also a bot.
13:18 bacek bacek also bot is
13:19 C3PO I know billions of languages. What to translate something?
13:20 pmichaud pon
13:20 pmichaud pong
13:23 bacek pmichaud, good evening :)
13:23 bacek pmichaud, http://nopaste.snit.ch/13075
13:23 Psyche^ joined #parrot
13:24 pmichaud is the general consensus that we should deprecate ".namespace"  in favor of ".namespace []"?  I know that RT#48549 said that we should enable the ".namespace []" form, but that ticket was silent (until kjs' post) on deprecating the old version.
13:24 bacek pmichaud, Is it "right way" or I miss something crucial?
13:24 pmichaud can't re-declare the same lexical in a scope.  (the :isdecl(1) )
13:24 DietCoke I have no preference. it's the sort of thing we can optimize for compilers instead of humans.
13:25 kj pmichaud: when I proposed the .namespace [] syntax, I think i explicitly mentioned to do so in favor of deprecating .namespace
13:25 pmichaud kj:  I would've commented then if that was the case.
13:25 kj I'd rather not have 2 notations for the same thing
13:25 bacek pmichaud, ?
13:25 purl somebody said pmichaud, was there an NQP test suitable for profiling?
13:25 pmichaud we already have 2 notations for the same thing
13:26 pmichaud for example, when using set_hll_global, to get at the root namespace requires not having any key.
13:26 pmichaud i.e.,   set_hll_global 'foo', $P0     and not    set_hll_global [], 'foo', $P0     (the latter is currently a syntax error)
13:26 kj yeah but that's op syntax
13:27 * bacek summon pmichaud but he ignores me... :)
13:27 pmichaud although one can do    $P1 = new 'ResizablePMCArray';   set_hll_global $P1, 'foo', $P0
13:27 pmichaud my point is simply that we do have a syntax where a non-existent [] means "root namespace".
13:27 pmichaud anyway, I'm like Coke -- it's not a big enough deal for me to argue.  But I was surprised that ".namespace" is being deprecated.
13:27 kj I mean, if '.namespace' is preferred to indicate the root namespace, well, then IMHO, if that's the preference of the majority, let's stick to that, and not introduce another very similar way of saying the same thing; it'll confuse people later on
13:28 pmichaud I'm not saying ".namespace" is preferred.  I'm just not in a rush to deprecate it.  :-)
13:28 dalek r27846 | Whiteknight++ | gsoc_pdd09:
13:28 dalek : [gsoc_pdd09] merging from trunk r27845
13:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27846
13:28 pmichaud bacek:  can't redeclare the same lexical in the same scope  (the :isdecl(1) on '$!dummy')
13:28 pmichaud also, '$!dummy'  could be an actual variable.
13:29 bacek pmichaud, there is only one lexical declaration.
13:29 pmichaud what if there are two 'try' blocks in the same scope?
13:29 bacek pmichaud, what is good name for such vars?
13:29 bacek pmichaud, I hope they introduce new scopes.
13:29 pmichaud yes, but the $!dummy you're introducing is in the outer block of the try, not in the inner block.
13:30 pmichaud or perhaps I'm misreading the code.
13:30 pmichaud at any rate, better would be to not use a lexical at all.
13:31 bacek pmichaud, is there are better way to do it?
13:31 pmichaud I'm sure there is... just don't know what it is yet.
13:31 pmichaud haven't looked at 'try' in months.
13:31 bacek pmichaud, me either :)
13:33 pmichaud PCT should return the result of the inner block as the result of the try.
13:34 bacek last statement in inner block is cleanup of $!
13:34 bacek (before my patch)
13:34 bacek so it returns Undef...
13:34 pmichaud maybe that should be first statement of inner block :-)
13:35 bacek pmichaud, no... What if I'll try to check $! under try block in CATCH?
13:35 pmichaud well, if CATCH is invoked then $! has already been set to the exception
13:36 pmichaud but yes, the inner try block should probably start with $! set to OUTER::<$!>
13:37 bacek pmichaud, I'll try to implement this.
13:37 pmichaud I think you may need the new 'register'  PAST::Var node that has been discussed.
13:37 pmichaud then the results of $past could be held in a temporary register
13:38 kj pmichaud: (no rush in deprecation) ok maybe I assumed too much. It's only a small thing, but I like consistency and clarity.
13:38 bacek pmichaud, probably. google isn't very helpful with '%r'...
13:38 pmichaud kj++  # consistency and clarity :-)
13:38 kj :-)
13:39 pmichaud I don't know how much PCT currently relies on null namespace being representable as ""
13:39 pmichaud because PCT does know that it cannot always convert a namespace into "[]"
13:40 pmichaud in particular, the 'key' method of the CodeString PMC knows to convert a namespace with zero components into "" and not "[]"
13:41 pmichaud (and that feeds into set_hll_global, set_global, etc.)
13:41 kj ooh ok. so it's not as simple as I thought then.
13:44 pmichaud oops.  Now that I look at CodeString.key, it looks as though it converts a namespace with zero components into "]"  (which is obviously wrong).  I might need a test for that later.
13:45 pmichaud bacek:  I'm thinking that perhaps 'try' nodes should have the equivalent of an 'else' parameter
13:45 pmichaud so that we have:   PAST::Op( :pasttype('try'), $block_to_try, $catch_block, $exit_block )
13:46 pmichaud where the result of the node is always the result of $block_to_try
13:49 bacek pmichaud, probably. But I didn't dig in PCT so much to give any useful feedback.
13:50 DietCoke pmichaud: like a try/catch/finally from java? that would be nifty.
13:50 DietCoke (being able to dispatch based on exception type would also be nifty, but probably overkill atm. =-)
13:51 pmichaud well, not exactly 'finally', because finally always executes even if an exception was thrown
13:51 pmichaud my 'else' is if an exception wasn't thrown
13:52 bacek pmichaud, is there anything similar to C++ destructors in parrot?
13:52 pmichaud bacek: that's been the subject of many discussions on parrot-porters that I've never bothered to follow very deeply.  :-)
13:52 bacek pmichaud, :)
13:52 pmichaud bacek: so the answer is "I don't know".
13:54 DietCoke pmichaud: your else is the catch, right. but I saw "exit_block", which I mapped to "finally" in my head.
13:54 bacek pmichaud, anyway, idea with loading to $! value of OUTER::!$ I like more than changing of try block.
13:55 pmichaud bacek: well, loading $! to OUTER::$! will happen anyway as part of a standard block prologue.  But we still need to "unset" $! if the try block succeeds.
13:55 pmichaud at least I think that's the case.
13:57 bacek pmichaud, ok. But in PIR both versions of 'try' will be exactly the same.
13:57 bacek what the point?
13:57 purl rumour has it the point is that tom_g would prefer to have consistent coredumps than unpredictable ones :)
13:57 pmichaud no, in PIR they would end up being different.
13:57 bacek purl, LOL!
13:57 * purl stabs bacek in the face for crimes against English
13:58 pmichaud the difference being in what PCT reports back as being the result of doing   @a = try { ... }
13:58 bacek purl, wnat to learn some russian?
13:58 purl bacek: bugger all, i dunno
13:59 bacek pmichaud, ... Can you explain little bit more?
13:59 pmichaud currently 'try' nodes return the value of the inner block as the result of the try
13:59 bacek pmichaud, yes
13:59 pmichaud in rakudo, we're adding an extra "$_ = undef" statement to that inner block
14:00 pmichaud so the result of the 'try' block always ends up being $!, which isn't what we want
14:00 pmichaud (change $_ above to $!)
14:00 pmichaud if we add an 'else' block to the try node
14:00 pmichaud then we would put the $! = undef as part of the else block
14:00 bacek pmichaud, yes. And passing exception to caller is language specific.
14:00 pmichaud and the try block would continue to report its inner block as its result
14:00 bacek why we should change common interface of PAST to support rakudo-specific behaviour?
14:01 pmichaud since the inner block no longer contains the $! = undef statement, the result of the try would be the (true) result of the inner block
14:01 pmichaud other languages may also have a situation where they want to do things that are not part of the inner block
14:01 pmichaud i.e., I'm not sure it's rakudo-specific behavior.
14:02 bacek pmichaud, this is how my patch works :). In a nutshell it generates '$Pn = closure(); <cleanup>; .return($Pn);'
14:02 pmichaud yes, I know that's how your patch works.
14:02 pmichaud I'm thinking that the more general solution might be to give 'try' blocks the equivalent of an else clause
14:02 bacek what the difference with your proposal?
14:02 pmichaud I don't need to generate the extra register
14:03 bacek but how you'll call cleanup code without storing result somewhere???
14:03 pmichaud in other words, I'm thinking that having an 'else' block is actually the more generic solution
14:04 pmichaud because in PAST I can explicitly say which block provides the result.
14:04 pmichaud i.e., PAST knows the results of all of the blocks.
14:04 pmichaud or, put another way -- the result of a block is always held in a register somewhere
14:05 bacek pmichaud, always storing result is bad idea...
14:06 pmichaud (well, unless the block is called in void context, in which case the result isn't stored)
14:06 bacek it will prevent some possible optimsation (or made them harder to implement)
14:06 pmichaud but that doesn't apply in this case, since in your example the block is explicitly being called in a non-void context.
14:07 pmichaud here, I'll type up the differences in the two approaches
14:07 pmichaud just a sec
14:07 bacek ok
14:07 pmichaud (have to re-build rakudo)
14:09 bacek rebuilding rakudo takes half an hour on my old-good laptop...
14:09 pmichaud already done here.  :-)
14:10 bacek pmichaud, :)
14:10 bacek afk for 10 minutes
14:13 nopaste "pmichaud" at 76.183.97.54 pasted "for bacek: PIR differences in try approaches" (36 lines) at http://nopaste.snit.ch/13077
14:15 particle pmichaud: how about creating PAST::Block types for pre- and post-block. basically, hooks that can do setup/cleanup on *any* block, and using them for 'try'. they could do setup like $! := OUTER::$! and cleanup like $! = undef, without affecting the return value
14:16 pmichaud I've been thinking about that also.
14:16 particle i'd *really* like hooks like that for profiling, debugging, etc
14:16 pmichaud well, we need them for ENTER/LEAVE and the like also.
14:16 particle putting them into PAST would make them pervasive and powerful
14:17 pmichaud agreed.  and 'return' probably fits in there as well.
14:17 pmichaud since that's just CONTROL
14:17 particle ah. yes.
14:20 pmichaud and that probably depends/impacts what allison is doing with exception handlers
14:27 bacek pmichaud, you right... Your version is much cleaner...
14:29 pmichaud also fwiw, in general I have a "working premise" that the underlying features of Perl 6 are general enough to be able to implement most other languages, so it's okay to adopt those features into the compiler toolkits
14:31 pmichaud I think for now I'll add an 'else' block to PAST::Op try nodes, but we may end up undoing it or rethinking it all later
14:31 bacek pmichaud, ok.
14:32 pmichaud one of the reasons why pre- and post-block might not work in this case is that it makes the (Perl 6) assumption that all exception handling is done at the block level.
14:32 pmichaud whereas some languages might have "try" bodies and clauses that aren't actually blocks.
14:32 bacek pmichaud, what about my other patches? (You already announced that 'map' is implemented :)
14:32 pmichaud bacek:  still catching up on the patch backlog, yes.  :-)
14:32 pmichaud today I was thinking of fixing $_, $!, and friends.
14:33 particle pmichaud: then how about a 'trigger' block type, with custom trigger types
14:33 particle PAST::Block( :trigger :type<some-custom-hll-type> )
14:34 particle ...with a standard list of trigger types including CONTROL, ENTER, LEAVE...
14:34 pmichaud possibly
14:35 pmichaud but I still think having an 'else' clause on try nodes may be useful.
14:36 * bacek just wander do we actually need to clean up lexical $!...
14:36 pmichaud on entering a routine, $! should be set to empty/null/undef.
14:36 pmichaud for other blocks, $! should default to OUTER::<$!>
14:37 pmichaud and the implementation of $! = OUTER::<$!>  isn't exactly what I think it should be.
14:37 pmichaud (it's currently done with inline PIR for some reason.)
14:37 moritz should a try { } block also clear $! on entering?
14:37 bacek why not to load OUTER::<$!> with lexical $! in 'catch'?
14:37 moritz so that things like try { ... } try { ... } if $! { ... } DWIM?
14:37 particle i think it's done with inline pir because jonathan wrote it and he tends to think that way :)
14:37 moritz ie only check the second try's $!
14:38 pmichaud I think it should clear $! on successful exit.
14:38 pmichaud not necessarily on entering.
14:38 moritz probably more intuitive that way
14:39 pmichaud depends on whether we think  $! inside of a try block should default to OUTER::<$!>
14:40 pmichaud (and I'm guessing it probably should.)
14:43 bacek pmichaud, agreed
14:44 particle $! should default to OUTER::<$!>
14:51 pmichaud I'd like a "make something_test" target that runs only the codingstd and docs tests that are part of normal "make test"
14:52 pmichaud something that we can tell rakudo programmers to be sure to run before committing, since we keep having problem with metadata and codingstd errors in the rakudo commits.
14:52 pmichaud (and something that is shorter than a full 'make test' on parrot)
14:53 DietCoke make 'coretest' is in between test and what you ask for.
14:53 pmichaud well, except for rakudo changes I really don't need to re-test the parrot core.
14:53 pmichaud and I think coretest skips the tests I'm looking for.
14:53 DietCoke possible. I thought it just skipped the configure tests.
14:54 DietCoke but, +1, seems like a reasonable request.
14:55 pmichaud looks like what I'm looking for are the developing_tests
14:56 Whiteknight how do I get opengl on windows? I'm trying to test out the opengl stuff but configure.pl says that I don't have it
14:57 dalek r27847 | pmichaud++ | trunk:
14:57 dalek : [pct]:
14:57 dalek : * Add an 'else' node to PAST::Op 'try' nodes -- the 'else'
14:57 dalek :   node is invoked if the tried node doesn't throw an
14:57 dalek :   exception.
14:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27847
14:58 kj pmichaud: is that try node's 'else' node also known as 'finally' in many languages?
14:58 kj or is this different semantics?
14:58 pmichaud kj: no.  'finally' is always invoked.
14:58 kj ooh ok
14:59 DietCoke oh, I thought your else was a catch block. it's an anti-catch block. My ability to misread continues to amaze me!
14:59 pmichaud right, it's an anti-catch.
14:59 Zaba_ joined #parrot
14:59 pmichaud try nodes already have catch nodes :-)
15:01 bacek pmichaud, I'll rewrite my patch tomorrow to reflect this changes... Time to sleep
15:01 pmichaud bacek:  already wrote it :-)
15:02 pmichaud I'm testing and about to commit.  :-)
15:02 pmichaud I'll give you credit for the ideas, though.
15:02 bacek pmichaud, Hey! You stealing my karma!!! :)
15:02 bacek ;)
15:02 pmichaud we both get karma'd.
15:03 pmichaud > my $a = try { 'foo'; };   say $a;
15:03 pmichaud foo
15:03 purl bar
15:03 szbalint baz
15:05 nopaste "pmichaud" at 76.183.97.54 pasted "for bacek: new version of 'try' handler" (13 lines) at http://nopaste.snit.ch/13078
15:05 pmichaud I like the new code -- very clean.
15:05 bacek pmichaud++
15:05 bacek Much-much better!
15:06 pmichaud just checking spectest_regression before committing
15:07 NotFound Nast
15:07 NotFound Ups, sorry.
15:08 bacek moritz++ for spectest_regression
15:08 moritz ;)
15:09 bacek sorry guys... It's definetly bed time here...
15:09 bacek see ya
15:13 dalek r27848 | pmichaud++ | trunk:
15:13 dalek : [rakudo]:
15:13 dalek : * Update $! handling in 'try' blocks.
15:13 dalek : * bacek++ for ideas and suggestions on this.
15:13 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27848
15:13 pmichaud karma bacek
15:13 purl bacek has karma of 11
15:14 pmichaud bacek++  # bonus karma
15:15 masak joined #parrot
15:19 pmichaud DietCoke: (coke-floats)   .... why is "20 pounds" linked to a bag of cat food?  ;-)
15:20 DietCoke because it weighs 20 pounds.
15:20 pmichaud oooooooookay.
15:20 DietCoke I find it helpful to visualize the amount I've taken off by comparing it to stuff I can hold.
15:21 pmichaud makes sense.
15:21 DietCoke 20 pounds was a hard weight to google for; most of the hits were diet programs. =-)
15:23 DietCoke by the time I reach my initial goal, I'll have a link to a picture of one of my kids! :|
15:23 jjore joined #parrot
15:24 moritz DietCoke: we have here bags of coal (for barbecues) that are 20 pounds ;)
15:24 AndyA joined #parrot
15:26 DietCoke there you. I had one of those in my gut 3 weeks ago. :|
15:26 DietCoke "there you go."
15:56 dalek r27849 | Whiteknight++ | trunk:
15:56 dalek : [t] updating tests to use ".namespace []" instead of ".namespace", which is deprecated.
15:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27849
16:11 iblechbot joined #parrot
16:15 rdice joined #parrot
16:47 Psyche^ joined #parrot
16:48 Theory joined #parrot
16:48 dalek r27850 | allison++ | pdd25cx:
16:48 dalek : [pdd25cx] Free continuations from the stack. Now that exception handlers don't
16:48 dalek : live on the stack, stack-based control flow and continuation-based control flow
16:48 dalek : are completely independent. Also, revamp exception handlers so they no longer
16:48 dalek : use C's unstable setjmp/longjmp (made possible by decoupling the stack from
16:48 dalek : continuations, so we have true CPS). Cleanup the related tests, and add some
16:48 dalek : new tests for resuming after handled exceptions.
16:48 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27850
17:03 DietCoke allison++
17:03 DietCoke allison++
17:05 * DietCoke wonders if dan or chip will be in chicago next month.
17:08 confound allison++
17:08 jhorwitz yay, allison++
17:09 confound is dalek giving out bogus diff urls?
17:09 * jhorwitz wonders if anyone seen dan at all lately
17:10 DietCoke he's been working on tornado, posting to his blog occasionally.
17:10 DietCoke dan's blog?
17:10 purl i heard dan's blog was http://www.sidhe.org/~dan/blog/
17:11 DietCoke hurm. that says no updates since 11/07; was sure I'd see a few posts this year.
17:13 diakopter confound: no; feather's apache2 won't start b/c it's out of disk space... working on it.
17:17 Juerd diakopter: moritz is also working on it. Are you two aware of each other's work? :)
17:17 purl okay, Juerd.
17:18 moritz purl: forget moritz
17:18 purl moritz: I forgot moritz
17:20 diakopter confound: it's back up
17:23 dalek r27851 | Whiteknight++ | gsoc_pdd09:
17:23 dalek : [gsoc_pdd09] Adding some hooks where more information will need to go
17:23 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27851
17:26 japhb Whiteknight: still looking for OpenGL help?
17:27 cjfields joined #parrot
17:30 gryphon joined #parrot
17:43 barney joined #parrot
17:45 DietCoke I can't build the pdd25-cx branch. :|
17:46 particle i'm pretty sure allison would like a report on that
17:47 DietCoke I'm testing against trunk to make sure it's not there too.
17:48 DietCoke JEEBUS manicheck is slow. :|
17:50 particle you running windows?
17:50 particle can we generate manifest from svn ls?
17:50 DietCoke (windows) not atm.
17:51 DietCoke eh. not something I care to fix atm, just whinging.
17:55 jonathan hi all
17:55 jonathan Back home, temporarily.
17:56 moritz hi jonathan, what a rare condition (you home)
17:56 jonathan Heh
17:56 Tene hi jonathan
17:56 jonathan I have no plans for any Perl events or vacations to places I don't reach by train during June and July.
17:57 jonathan And no, that's not a challenge. ;-)
17:57 jonathan But French Perl Workshop coming up at the weekend.
17:57 DietCoke particle: reported
17:58 braceta joined #parrot
18:06 davidfetter joined #parrot
18:07 slavorg joined #parrot
18:28 Zaba joined #parrot
18:31 chromatic joined #parrot
18:32 rdice joined #parrot
18:33 chromatic #ps time
18:40 DietCoke ... crap!
18:42 chromatic Tene: rubyspec.org
18:42 Tene chromatic: that's the one I found.
18:42 chromatic That's the only one worth looking at.
18:46 Ron joined #parrot
18:56 PerlJam Tene: so ... how long before you get Rails working on cardinal?  ;)
18:56 * jhorwitz considers mod_cardinal
18:57 Tene PerlJam: I have no idea.  I've never looked at the rails source, so I don't know what it needs.
18:57 PerlJam Tene: yeah, I figured as much.  Rails probably needs *everything* anyway.
18:57 Tene I expect to have a lot of things working soon.
18:57 PerlJam Tene++
18:58 PerlJam jhorwitz++ (I'm lurking on #ps :-)
18:58 Tene Most of my commits lately have been a tiny bit of code, and stealing class definitions from rakudo.
18:59 PerlJam Tene: do you have a list of what's left?  If there's some reasonably small things I might be able to find the time to help with cardinal.
19:00 Tene PerlJam: the largest item that I keep blocking on is that I actually don't know ruby.
19:00 PerlJam Tene: heh
19:00 Tene PerlJam: The class hierarchy needs to be reworked to match ruby's.
19:00 Tene Also, the builtins for all the different classes need to be written.
19:01 PerlJam I've found rails at least a pleasant programming experience.  I tend to guess at syntax and such and ruby obliges me by doing what I expected  :)
19:01 Tene I don't know the semantics of most of the builtins.
19:01 Tene bbiab lunch
19:03 Whiteknight seen japhb?
19:03 clunker3 japhb was last seen on #parrot 1 hour, 37 minutes and 7 seconds ago, saying: Whiteknight: still looking for OpenGL help?
19:03 purl japhb was last seen on #parrot 1 hour and 37 minutes ago, saying: Whiteknight: still looking for OpenGL help?
19:04 Whiteknight oh good, bots in stereo
19:04 * japhb is snowed in by x-chat alerts
19:04 Whiteknight sorry
19:04 japhb no problem!  Just made me chuckle
19:05 Whiteknight I've got the opengl working on my debian box already. I tried to get it working on my WinXP box, but it's b0rk
19:05 japhb I expected that.  OK, which compiler environment are you using?
19:05 Whiteknight I was trying to use Visual C++ Express edition, but I couldn't really install that
19:06 Whiteknight my harddrive is completely screwed, can't download new stuff, can't install new stuff, etc
19:06 japhb ouch
19:06 japhb sounds like my wife's Mac after installing OS X 10.5 ...
19:06 Whiteknight so, in short, i can't test it for you
19:06 japhb oh
19:06 japhb suckage
19:06 japhb sorry to hear that
19:07 Whiteknight i wish i could be more help! I can tell you that it works perfectly on debian
19:10 moritz Whiteknight: basically all build tasks are much easier on any unixish environment than under windows
19:10 moritz because on unixish systems you are expected to do such things
19:10 moritz on windows only if you're a ultra-l33t hacker that can solve any problem anyway
19:10 Whiteknight yeah, i know. That's why i made the switch in the first place
19:10 japhb Whiteknight: since I run Debian myself, it had darn well BETTER work there.  ;-)
19:11 Whiteknight you've inspired me to start coming up with some gtk bindings for parrot
19:11 Whiteknight although, because i'm so busy, that project is on hold indefinitely
19:12 japhb I know how you feel.
19:13 japhb I don't really have time to be working on the OpenGL bindings, but they're important to me, and I got skewered in an open forum about not doing it, so my ego took over for my common sense and I got to work.  ;-)
19:13 chromatic I wouldn't say skewered exactly.
19:14 japhb chromatic pops out of the woodwork ...
19:14 japhb So since you're here, who/what am I waiting on for my commitbit?
19:14 dalek r27852 | bernhard++ | trunk:
19:14 dalek : #46903: [TODO] [Perl] Implement todo items mentioned in tools/dev/extract_file_descriptions.pl
19:14 dalek : Remove the script, as it seems to be unused.
19:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27852
19:14 chromatic Looking for someone to mentor you and slap your hand if you break the build :)
19:15 japhb Not to speak for anyone, but I think the hand-slapping is already well covered.  ;-)
19:15 chromatic I have two concerns.  One, the SVN metadata dance (which I've never liked anyway).
19:16 chromatic Two, that changes to the configuration system might break configuration on other platforms for what's admittedly an optional piece of Parrot anyway.
19:16 Whiteknight maybe he needs a branch?
19:16 Whiteknight localize all the optional changes in a place where it doesnt really affect the rest of the build
19:17 japhb chromatic: fair enough ... but for any change to the configuration system, kid51 has already told me that he requires a patch first, and some days to inspect.  And I've both kept to that in the past, and intend to do so in the future.
19:17 chromatic Provided that we can encourage people on other platforms to test the branch, that works for me.
19:17 ejs joined #parrot
19:18 japhb chromatic: and as for the SVN metadata dance ... the worst that happens is that a test fails because of missing metadata, yes?  My understanding is that it doesn't actually break the build (but I wouldn't know for sure, since most of the metadata doesn't really affect Linux)
19:19 japhb And that's only if I forget to follow a commit from git with an SVN commit
19:20 chromatic Yep.
19:20 japhb chromatic: my working policy is that config changes need signoff from at least one representative each of Linux, Mac OS X, and Win32.  Is that good enough for you?
19:20 chromatic Also good.
19:20 japhb OK, so now just need a mentor, I take it.
19:21 chromatic Or at least someone to watch your commits for the first couple of weeks.
19:23 AndyA joined #parrot
19:24 chromatic ... and I can do that.
19:33 japhb chromatic: perfect, thank you.
19:33 japhb So ... next step?
19:33 * moritz is surprised that purl doesn't have a helpful suggestion for "next step"
19:38 Whiteknight joined #parrot
19:38 confound step 3?
19:38 purl step 3 is PROFIT! or "Get your girl to open that box" or http://www.step3profit.com/
19:39 DietCoke next step is step 3
19:41 pmichaud DietCoke: so, did you want a cleaner explanation of parameter passing?  ;-)
19:42 DietCoke as long as it ends up in the docs. it's the switching between parameter and argument that confused me, because they seemed to be used both interchangably, and distinctively.
19:42 pmichaud "parameter" is the thing on the receiving end -- what we define in a sub
19:42 pmichaud "argument" is what we send -- what we pass in a call
19:43 moritz and half of the time half of the people do confuse these two
19:43 NotFound moritz: and the comments in the code also.
19:43 pmichaud yes, and sometimes even those of us who know the difference say the wrong one :-)
19:43 AndyA joined #parrot
19:43 pmichaud I think that PDD03 uses "target" and "value"  instead of "parameter" and "argument"
19:45 pmichaud so, in Perl 6, nearly every parameter can be matched to a named argument
19:46 chromatic Think of parameters as what we use when we say .param Type foo
19:46 pmichaud sub foo($a) { ... }    can be called using either    foo(3)    or    foo( a => 3 )
19:46 pmichaud sub foo($a, $b) { ... }   can be called as   foo(3,4)   or foo( a => 3, b => 4)   or   foo( b => 4, a => 3)   or   foo( b => 4, 3 )
19:48 pmichaud Perl 6 also has a concept of "named only" parameters -- these are parameters that can only be match to a named argument.
19:48 pmichaud At present, Parrot has no concept of a "named only" parameter.
19:49 Tene parrotlog?
19:49 purl parrotlog is http://irclog.perlgeek.de/parrot/
19:49 pmichaud In Perl 6, that would be   sub foo(:$a) { ... }     which can only be called as   foo( a => 3 )   or    foo( :a(3)  )    or something that explicitly provides an argument named 'a'
19:49 Whiteknight pmichaud, what would it take to add "named only" parameters to parrot?
19:50 pmichaud Whiteknight: I made a proposal to parrot-porters yesterday, which was then discussed today in #parrotsketch (and tabled to tomorrow's Perl 6 design meeting)
19:50 pmichaud essentially I think we should turn our existing :named flag to mean "named-only", and add a :positional flag that can be used to indicate "named positionals"
19:50 Whiteknight i read the message and was lurking in #ps
19:50 NotFound I think that fixing actual argument passing must be done first.
19:50 Whiteknight okay, that answers my question
19:51 pmichaud or, we could flip it around and say that :named means "named positional", and add a flag that indicates "named only"
19:51 NotFound I took several looks at the open argument passing bug tickets, and my impression is that the code is already too confusing.
19:51 pmichaud but if we do that, we still need to change Parrot's semantics for handling named positionals, because at present it prefers to fill a named parameter with a positional argument
19:52 pmichaud notfound... which tickets are those?
19:53 NotFound Dont' remember... wait a moment.
19:53 DietCoke there's one in my queue, regarding turning on the check when there's no .params at all.
19:54 NotFound #53926, for example.
19:55 NotFound ah, this is youres X-)
19:55 chromatic DietCoke, we might need Leo's comments on my patch there.
19:55 pmichaud right, I filed that one.  :-)
19:55 NotFound I think there is other with similar content, let me see...
19:55 pmichaud most of them are ones that I've found.  :-)
19:56 pmichaud because the stuff I work with tends to have the greatest variety of options.  :-)
19:56 NotFound Then why ask me? X-)
19:56 pmichaud I didn't know if you found any that I didn't author.
19:56 pmichaud but yes, the parrot calling conventions have always been a little flaky.
19:57 AndyA joined #parrot
19:59 NotFound pmichaud: #39844
20:00 NotFound #41132
20:01 NotFound #46457
20:04 NotFound That's all.
20:04 pmichaud okay.
20:04 pmichaud yes, any changes we make should fix those as well.
20:09 Auzon joined #parrot
20:12 ruoso joined #parrot
20:34 dalek r27853 | tene++ | trunk:
20:34 dalek : [cardinal]
20:34 dalek : * Hashes start working
20:34 dalek : * Small class creation fix
20:34 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27853
20:37 dalek r27854 | tene++ | trunk:
20:37 dalek : Add new file to MANIFEST and set svn props.
20:37 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27854
20:38 Tene Creating a hash works, and changing the value of an existing hash element works, but adding a new entry to the hash fails.
20:39 Tene Investigating...
20:39 Tene Ah, I have the same problem with arrays, too.
20:40 * Tene compares with rakudo past.
20:40 Tene Specifically, Null PMC access in morph()
20:42 japhb joined #parrot
20:45 Tene I wonder if it's related to using pasttype('copy') instead of calling an infix:= sub
20:47 jonathan Tene: If you aren't vivifying the target of the assignment, you will get this issue.
20:47 Tene Hm.
20:48 cjfields joined #parrot
20:49 Tene jonathan: difference between vivibase and viviself?
20:50 dolmen joined #parrot
20:51 jonathan Tene: IIRC, vivibase is what somehting like an array vivifies to, and viviself is what an element coming out of the array vivifies to.
20:51 Tene Okay, thanks.
20:51 Tene Looks like that works.
20:51 pmichaud vivibase says how to vivify the aggregate
20:52 pmichaud I did it that way because it was easier than trying to always set viviself on the aggregate
20:53 jonathan pmichaud: I started switching type checking over to happen on assign today.
20:54 jonathan Got a chunk of code on my laptop that I did at Prague airport.
20:54 pmichaud excellent
20:54 pmichaud I'm hoping that changes the typechecking code a fair bit?
20:54 NotFound There aren't import taxes?
20:54 jonathan Yeah, just a little. ;-)
20:54 pmichaud I'm wanting to migrate the typecheck stuff out of the <signature> rule and into the <param_var> rule, if not.
20:55 pmichaud (and possibly even if so :-)
20:55 jonathan I havn't looked at parameters yet.
20:55 pmichaud but I'm going to leave typechecking alone until we know how mutables are going to pan out
20:55 jonathan Well, I don't want to break something that works now, so I'm refactoring it to work on the new model. :-)
20:55 pmichaud right now the typechecks are added as part of the <signature> action, but I think they should occur somewhat lower (like, in <typecheck> )
20:55 jonathan It already feels a bit cleaner.
20:56 pmichaud but we'll wait until we have your refactors in.
20:56 jonathan I've factored some code out that I expect will give more re-use between variable and parameter types.
20:57 jonathan On parameters - not got to those yet.
20:57 pmichaud I also looked a fair bit at signature handling, $_, and placeholders last night.
20:57 jonathan Just making it work with variables first. Then parameters are up next.
20:57 pmichaud we have a few too many flags floating around, I think :-)
20:57 jonathan Need to get is copy, is ro (as default), is rw and so on to work.
20:57 jonathan Especially is ro, so we get the right semantics. :-)
20:58 pmichaud those are just traits on the variable, yes?
20:58 jonathan Yeah.
20:58 jonathan I've yet to work out a neat way to handle this yet, though.
20:58 pmichaud seems like 'is ro' should simply throw an exception on assign
20:58 jonathan No, no.
20:58 jonathan That's the easy-ish bit. :-)
20:59 jonathan Actually applying that trait.
20:59 jonathan And how we apply traits to containers in general.
20:59 jonathan But we ain't gonna get that right until MMD is fixed.
20:59 jonathan So for now, I suspect we just want some hack for a few built-in ones.
20:59 pmichaud aren't the traits just more properties?
21:00 jonathan Yeah, kinda. But properties aren't really something you just have a hash of.
21:00 Zaba_ joined #parrot
21:00 jonathan It's really like doing a "does"
21:00 jonathan To actually set the property.
21:00 dalek r27855 | tene++ | trunk:
21:00 dalek : [cardinal]
21:00 dalek : * Adding new items to aggregates works now. (jonathan++)
21:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27855
21:01 jonathan A well-behaved trait handler will say
21:01 jonathan $container does xxx($arg);
21:01 jonathan somewhere inside to set the metadata on the container correctly.
21:02 jonathan (from S12)
21:02 jonathan So we need to figure out "does" implementation.
21:03 jonathan And that + MMD so we can dispatch trait_auxilliary:is correctly = a little way off
21:04 pmichaud okay.
21:04 jonathan Thus why I think maybe we just detect a few known ones at compile time as a special case for now.
21:04 pmichaud I'm happy with "hack for a few built-in ones" for now.
21:05 jonathan Maybe in the summer we can Do It Right.
21:05 pmichaud it's worked reasonably well thus far :-)
21:05 pmichaud getting mutables implemented is far more important than type checking at this point.
21:05 pmichaud or trait handling.
21:05 pmichaud since w/o mutables we're having trouble doing simple hashes and arrays and the like
21:06 jonathan For sure.
21:06 purl like totally!
21:06 jonathan I'm not planning to spend weeks getting the type checking refactored though.
21:06 pmichaud oh, definitely not.
21:06 jonathan Like, I hope to have the branch ready to merge back in after FPW.
21:06 jonathan Which is this weekend.
21:06 pmichaud I definitely want to get mutables in the trunk asap.
21:06 pmichaud even if that means that type checking is disabled for a while.
21:07 jonathan If it's going to take much beyond this weekend, then we can drop it for a while.
21:07 jonathan Otherwise, I'd like to try and preserve it.
21:07 pmichaud I'll leave that choice up to you.  :-)
21:07 jonathan Since I'm already a good bit of the way there with it...
21:08 pmichaud I didn't have type checking in the roadmap, but it's probably around the same level as junctions.
21:08 jonathan I just don't like to give folks features to play with, then have them disappear.
21:08 pmichaud agreed.
21:08 pmichaud well, type checking is not exactly the same as MMD :-)
21:08 jonathan And my Dog $fido .= new(); is not something I think we should make disappear lightly.
21:08 pmichaud ah, to me that's not type checking, though.  :-)
21:08 pmichaud that's just a typed variable.
21:09 jonathan Oh, it's not the checking.
21:09 jonathan But the checking is not the hard part here. ;-)
21:09 pmichaud okay.
21:09 jonathan Not for now, anyway.
21:09 pmichaud still, one could do   my Dog $fido  without having to store traits on $fido
21:09 jonathan Yeah, true.
21:09 jonathan Well, let's see how it goes over the weekend.
21:10 pmichaud just make sure fido gets initialized to a Dog proto :-)
21:10 jonathan We're going, at some point, to need to start building ourselves a kinda "class registry", I think.
21:10 pmichaud oh yes, I know that.
21:10 jonathan Not in the mutables refactor.
21:10 jonathan But so
21:10 jonathan my Foo $x;
21:10 pmichaud it has to appear in the symbol table.
21:11 pmichaud at compile time.
21:11 jonathan Will put a proto in $x
21:11 jonathan if Foo is a class
21:11 jonathan But if it's a role or subset or anything more complex, it's just a Failure.
21:11 pmichaud oh, we could still do that w/o a class registery
21:12 pmichaud er, registry
21:12 jonathan Runtime check?
21:12 pmichaud just have runtim.... right.
21:12 jonathan Yeah, I didn't feel like that. But you're right, of course. :-)
21:12 jonathan And we have to do it anyway.
21:12 jonathan For my ::T $x;
21:12 jonathan When heck knows what T is.
21:13 jonathan Or for my T $x; when T is a parameterized type.
21:13 pmichaud but we will end up with a managed symbol table anyway, simply because the <typename> token is going to require it.
21:13 pmichaud right now rakudo cheats by assuming that any capitalized bareword is a class/role/namespace
21:13 jonathan Yeah.
21:13 jonathan That's...not nice. :-)
21:13 jonathan But it works for now.
21:13 pmichaud it's a good heuristic for the moment until we can keep a symbol table around :-)
21:14 jonathan I'm not sure it'd be too bad to do.
21:14 pmichaud well, theoretically we should just keep such things in lexical scopes.
21:14 pmichaud i.e., as lexical variables.
21:14 pmichaud and then do find_name to look them up.
21:15 jonathan Keep what symbols are registered around as lexical scopes?
21:15 pmichaud as lexicals in the current scope.
21:15 pmichaud i.e.,  what one scope things is a 'Dog' might differ from another scope.
21:15 jonathan Ah, where doing a "use" imports names into the current scope, perhaps.
21:16 jonathan Right.
21:16 pmichaud s/thinkgs/thinks/
21:16 pmichaud (can't type)
21:16 jonathan Well, just some of the many tasks we have before us. :-)
21:16 pmichaud indeed.
21:17 pmichaud there are times when scheme looks more and more inviting.  :-)
21:17 chromatic Don't get used to it.
21:18 dalek r27856 | chromatic++ | trunk:
21:18 dalek : [IMCC] Fixed compilation on platforms where returning the results of function
21:18 dalek : that returns void isn't void enough for non-GCC compilers (Andrew Johnson, RT
21:18 dalek : #54920).
21:18 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27856
21:24 diakopter nopaste?
21:24 clunker3 http://pasta.test-smoke.org/ or http://paste.husk.org/ or http://nopaste.snit.ch:8001/ or http://rafb.net/paste or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/
21:24 purl nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://rafb.net/paste or http://paste.husk.org/ or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or don't bother me while I'm eating or App::Nopaste
21:24 diakopter hee
21:25 DietCoke who turned up the verbosity on clunker?
21:25 DietCoke can we hush him up? one spammy bot is more than enough. =-)
21:27 Tene clunker3?
21:27 purl rumour has it clunker3 is running from Tux_'s pc at work
21:27 Tene clunker?
21:27 purl rumour has it clunker is a known bot
21:33 Tene Huh.
21:33 Tene I ran a tiny 10000 iteration while loop under both ruby 1.8 and cardinal.
21:33 Tene ruby was about 5x faster
21:34 jonathan Tene: was it an optimized Parrot build?
21:34 jonathan And what runloop, and all of that usual things. :-)
21:34 Tene I upped the iterations to 10000000, and cardinal is hanging horribly about once a second
21:35 Tene I guess that's gc.
21:35 jonathan Tene: sounds GC-ish.
21:35 Tene Not optomized.  I don't know how to build an optimized parrot.
21:35 Tene Default runloop.
21:35 Tene I'd be glad to re-do it with whatever changes you'd like.
21:36 chromatic make clean
21:36 chromatic edit the Makefile and add -O2 before -g
21:36 chromatic I'm sure there's a way to set that when running Configure.pl, but I'm too lazy to learn new things.
21:38 japhb 'perl Configure.pl --optimize' or 'perl Configure.pl --optimize=<flags>'
21:38 japhb And then run parrot with -O2 -Ot, IIRC
21:39 japhb leo: ping
21:39 dolmen cardinal?
21:39 purl somebody said cardinal was http://mail.freesoftware.fsf​.org/pipermail/cardinal-dev/ or the Ruby-on-Parrot project. or http://xrl.us/uyz3
21:40 Tene Looks like I get segfaults with an optimized build.
21:41 chromatic In the tests or in Rakudo?
21:41 chromatic Or Cardinal?
21:41 purl i think Cardinal is http://mail.freesoftware.fsf​.org/pipermail/cardinal-dev/ or the Ruby-on-Parrot project. or http://xrl.us/uyz3
21:41 Tene in building parrot itself.
21:41 chromatic Which platform?
21:41 purl I'm running on OS/2 on an Atari, can you help?
21:41 Tene x86_64
21:42 Tene gmake[1]: Entering directory `/home/sweeks/src/parrot.gs/compilers/tge'
21:42 Tene ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pbc --output=TGE/Parser.pir TGE/Parser.pg
21:42 Tene gmake[1]: *** [TGE/Parser.pir] Segmentation fault
21:42 chromatic Did you 'make clean' first?
21:42 Tene Yes.  I'll make realclean and try again.
21:44 Tene This time, without -j, I get:
21:44 Tene ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir  --output=PGE/builtins_gen.pir PGE/builtins.pg
21:44 Tene gmake[1]: *** [PGE.pbc] Segmentation fault
21:45 pmichaud I've been seeing an above-average number of segfaults lately (that seem to clear up with -G)
21:45 pmichaud fwiw.
21:45 chromatic You're on 64-bit too, right?
21:45 pmichaud right now 32-bit
21:45 pmichaud had to move to 32-bit because of some vmware clock issues (long story)
21:46 pmichaud but I may be moving back to 64 bit soon.
21:46 chromatic I get threads failures with an optimized build.
21:47 japhb I've got Intel 32-bit here (laptop), but AMD 64-bit at home.  Both Debian testing.
21:51 Tene Looks like the cardinal grammar doesn't have 'for'
21:53 * Tene tries building optimized parrot on x86
21:54 Zaba joined #parrot
21:55 chromatic Cardinal's taking a lot of continuations.  That's why it's slow.
21:56 chromatic If you can reduce the number of bsr LABEL operations, you can speed it up.
21:57 PerlJam chromatic: but can't you make continuations faster?   You've made bunches of other stuff faster.   ;-)
21:57 chromatic Not in the short term.
21:57 chromatic In the long term, the sun will burn out and it won't matter.
21:57 chromatic We can only quibble about how long it'll take the medium term to arrive.
21:58 Tene chromatic: which part of cardinal are you talking about?  While running, or compiling?
21:59 chromatic While running.
21:59 chromatic I profiled t/00-sanity.t
21:59 Tene Okay.
22:03 jonathan Pack of chocolate + placement of said chocolate on wifi router = almost drinking chocolate....
22:03 chromatic Of course, that could be parsing speed.
22:04 japhb mmm, chocolate ...
22:04 chromatic If you had a way to dump a runnable PIR transliteration (--target=PIR doesn't give me something runnable), I could profile that and make sure.
22:04 jonathan If it's bsr and ret, I suspect it's parsing.
22:04 * japhb seriously needs an infusion
22:04 jonathan I think PGE generates quite a few of those.
22:04 chromatic Yeah, I was thinking the same thing.
22:05 chromatic If only we had PIR-level profiling....
22:05 nopaste "tene" at 67.137.148.11 pasted "runnable pir for chromatic" (43 lines) at http://nopaste.snit.ch/13087
22:05 Tene Yeah, that's what I was asking about.
22:06 Tene if you're profiling, you might want to drop the number of iterations a bit.
22:06 chromatic Or dump to /dev/null
22:07 chromatic IO bound.
22:08 chromatic I wonder if there's a way to optimize bsr within a single sub... almost like you don't have to store a stack chunk.
22:10 Tene With an optimized parrot on i386, I'm getting a 10x speed difference
22:11 chromatic That fast?
22:11 Tene compared to ruby
22:11 Tene LEt me rebuild to see if it's actually slower when optimized
22:11 PerlJam Tene: ruby is 10x faster?
22:12 Tene Yes.
22:14 Tene .45s vs 4.8s
22:15 chromatic What's slow: the ParrotObject PMC, specifically get/set attribute_keyed, because get_attribute_index_keyed eats up a lot of GCable headers.
22:15 chromatic sorry, get_attrib_index_keyed
22:16 chromatic Fix get_attrib_index_keyed, and we get a lot of speed back.
22:17 jonathan I'm still surprised optimized would be slower... :-S
22:18 jonathan I'm not surprised that that particular function could be faster.
22:18 PerlJam jonathan: it's clearly optimized for the wrong thing.
22:18 chromatic Definitely.  Just getting rid of PARROT_ASSERT should speed things up.
22:19 japhb You know, it speaks well of Parrot's design that for the last while most of the performance wins seem to be small tweaks, not "change the entire design, we screwed up".
22:19 dalek r27857 | rblasch++ | trunk:
22:19 dalek : [win32] Fix Parrot_asctime_r for Windows.
22:19 dalek : Windows has asctime, but renders single digit days with a leading zero,
22:19 dalek : instead of blank.  This new implementation uses sprintf with the format
22:19 dalek : string specified in the C standard.  Probably not the fastest way, but
22:19 dalek : hopefully correct.
22:20 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27857
22:20 chromatic Remember though, I've focused on microoptimizations to make language hackers more productive in the short term.
22:20 japhb sure, but still you've accomplished a remarkable amount with microoptimization.
22:21 japhb It's not like the last month has added up to 10% ... you've got to be at 2x at least by this point.
22:21 chromatic Probably 3x overall in the past three months.
22:23 japhb That's just damned impressive for microoptimizations, you've got to admit.
22:23 PerlJam indeed.  It makes me want to say chromatic++ everytime I think about it.
22:24 japhb ditto
22:24 japhb So chromatic++
22:24 chromatic There are a few more lurking, for anyone with Callgrind, kcachegrind, spare time, and the desire to dive into some C code.
22:25 japhb my grind-fu is weak.  :-/
22:26 chromatic I should write a brief introduction.
22:26 chromatic It's really simple, once you learn a few things.
22:27 PerlJam chromatic: sounds like a good post for parrotblog
22:27 chromatic Will do then.
22:30 Tene Okay, looks like on this box, cardinal on optimized parrot runs this file in 4.8s, while unoptimized parrot runs it in 5.6s, so optimized is faster here.
22:30 japhb Tene: That's an optimized compile of parrot -- but did you succeed in running parrot with optimization flags?
22:31 japhb In particular, running it with something other than the slow runcore?
22:31 Tene japhb: -O2 -Ot
22:31 japhb hmmm
22:31 Tene japhb: I'll run it however you tell me to run it.
22:32 dolmen in rakudo PIR, what is the right way to create a new list?
22:32 japhb I think leo had recommended -Oc once upon a time as well, but I forget how that interacts with -O2 -Ot
22:32 Tene dolmen: possibly list()
22:32 jonathan Try -C
22:33 dolmen new 'List' (src/builtins/range.pir)?
22:33 * Tene rebuilds parrot.
22:33 japhb jonathan: -Ot *should* select the platform-fastest runcore for you.  If that's not working, that's a bug ....
22:33 dolmen 'list'() (src/builtins/op.pir)?
22:33 jonathan Ah, OK.
22:33 Tene dolmen: yes, I suspect, depending on what you want to do.
22:33 japhb Tene: why rebuilding parrot?
22:34 dolmen Tene: is there a difference?
22:34 Tene japhb: to get optimized again.
22:34 japhb Oh, you had last built it with no optimizations ... yep, gotcha
22:34 jonathan dolmen: 'list'(...) will construct a list of its arguments, and flatten any other lists in there.
22:35 jonathan dolmen: If you want to create a new list rather than already having some existing list, then new 'List' is OK.
22:35 japhb jonathan: there is an ancient RT from me that -O1 and -O2 are both supposed to turn on -Ot, but don't.  I'd hate to think that -Ot was now itself broken.  ;-)
22:35 jonathan japhb: Well, parrot --help doesn't even mention -Ot specifically...
22:35 sjansen joined #parrot
22:36 jonathan Which is what I was looking at.
22:36 japhb perldoc docs/running.pod
22:36 sjansen joined #parrot
22:36 dolmen jonathan, is it the same object that we get after construction?
22:36 japhb And yes, that sounds like a bug, too
22:37 jonathan dolmen: Yeah, you should get an instance of List.
22:38 dolmen dolmen: so, when creating a new empty list, "new 'List'" looks like more appropriate
22:38 dolmen jonathan, than "'list'()"
22:38 Whiteknight joined #parrot
22:41 pmichaud or even
22:41 pmichaud $P0 = get_hll_global 'List';  $P1 = $P0.'new'()
22:41 pmichaud (same as List.new() )
22:42 jonathan TMTOWTDI. :-)
22:42 Tene No change with -C or -Oc
22:42 japhb snarg
22:44 chromatic Hmm... look up the proper parent class in get_attrib_index_keyed based on key value, then look up attribute index directly there?
22:44 chromatic That's two fewer header allocs....
22:45 dolmen jonathan: is it just a difference in the source or will there be a difference in the PIR ?
22:45 jonathan I thought you were writing PIR?
22:45 * dolmen is not sure if PIR is the right word
22:46 jonathan But the eventual code that is generated is different, if that's what you mean.
22:46 jonathan 'list' calls a function.
22:46 dolmen that is what I mean ;)
22:46 jonathan new 'List' instantiates an object
22:46 jonathan And what pm posted gets the protoobject and calls the new method on it.
22:46 jonathan So yes, they're all different. :-)
22:46 pmichaud all of them result in a List object.
22:47 pmichaud calling 'list'() has the advantage that it can initialize the List object with some values.
22:47 japhb chromatic: two fewer allocs per call can't be bad ...
22:48 dolmen I'm seeing some places in op.pir where 'list'() is called without args.
22:48 dolmen Now I konw how to fix this.
22:49 pmichaud fwiw, 'list' is the general purpose "make a list out of these arguments in list context" function.
22:50 dolmen ok
22:50 dalek r27858 | tene++ | trunk:
22:50 dalek : [cardinal]
22:50 dalek : * 'while' loops start working
22:50 dalek : * 'for' loops start working
22:50 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27858
22:51 japhb Tene's commit message makes it sound like while and for just magically started working on their own, and he just noticed.  ;-)
22:51 dalek r27859 | tene++ | trunk:
22:51 dalek : svn props on new test
22:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27859
22:52 Tene japhb: The intended message is that at least some basic functionality works correctly now, but I haven't even started to test how they work beyond that.
22:53 japhb Tene: I'm just teasing.
22:53 Tene Ah.
22:54 teknomunk joined #parrot
22:55 tetragon joined #parrot
22:57 Whiteknight PDD19 needs to be updated to reflect #48549. Is that the kind of thing I can do as a lowly peon, or do I need permission?
23:03 dalek r27860 | jkeenan++ | searchdocs:
23:03 dalek : Exclude t/doc/searchops/sample.pm from POD check because it contains some POD malformed for other testing purposes.
23:03 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27860
23:05 jonathan Whiteknight: You can always send it as a patch to the list for feedback, if in doubt.
23:06 Whiteknight okay, that's probably the better solution. I'll do that. Thanks jonathan++
23:08 Khisanth joined #parrot
23:10 dalek r27861 | jkeenan++ | searchdocs:
23:10 dalek : Bring files up-to-date with trunk so that they pass the coda codingstd test.
23:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27861
23:25 petdance joined #parrot
23:34 cjfields joined #parrot
23:37 braceta joined #parrot

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

Parrot | source cross referenced