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