Camelia, the Perl 6 bug

IRC log for #parrot, 2008-06-05

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 Whiteknight i really hope i do a good job with that!
00:00 Whiteknight what's funny is that I used to be an actual, day-laboring garbage collector myself!
00:02 TiMBuS joined #parrot
00:02 japhb heh
00:02 cotto_work pmc?
00:02 purl pmc is responsible for deciding whether to extend itself or not. or a parrot thing, kind of like "magical holds-one-of-anything variable"?  or parrot magic cookie or Parrot Magic Cookie or pARROT mAGIC cOOKIE or Poly Morphic Cracker (for the Parrot) or a big problem for optimizations or a compiled pm
00:03 japhb .oO( WTF?  How does iconifying not trigger a visibility change event? )
00:04 * japhb fighting with a new Parrot OpenGL example program
00:10 AndyA joined #parrot
00:12 purl joined #parrot
00:25 davidfetter joined #parrot
00:26 cotto_work literal pmc
00:26 purl cotto_work: pmc =is= responsible for deciding whether to extend itself or not. or a parrot thing, kind of like "magical holds-one-of-anything variable"?  or parrot magic cookie or Parrot Magic Cookie or pARROT mAGIC cOOKIE or Poly Morphic Cracker (for the Parrot) or a big problem for optimizations or a compiled pm
00:26 dalek r28079 | pmichaud++ | trunk:
00:26 dalek : [rakudo]:
00:26 dalek : * Further "fix" to List class to get spectest_regression passing again.
00:26 dalek :   The real fix will have to wait for improvements to Parrot's MMD.
00:26 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28079
00:48 Limbic_Region joined #parrot
01:01 Limbic_Region pmichaud ping
01:12 Zaba_ joined #parrot
01:23 kid51 joined #parrot
01:24 Zaba joined #parrot
01:33 Zaba joined #parrot
01:38 Zaba_ joined #parrot
01:52 Zaba joined #parrot
02:07 Zaba joined #parrot
02:12 pmichaud Limbic_Region: pong
02:23 * bacek_ wanders about pmichaud's localtime...
02:23 pmichaud 21:23
02:24 bacek_ ...of yesterday :)
02:24 pmichaud (US Central Daylight Time)
02:24 pmichaud no, it's still "today" here.
02:24 pmichaud it won't be yesterday until tomorrow.  :-)
02:24 bacek_ future is here!
02:25 bacek_ 12:25. Looks like lunch time.
02:26 * bacek_ never met americans which use 'military time' before :)
02:27 pmichaud I'm not typical in that respect.  I actually think in terms of UTC much of the time.
02:27 pmichaud I was in charge of a data collection project where we synchronized and did all of our internal processing in UTC.
02:27 bacek_ world getting smaller and smaller over time.
02:28 pmichaud (and I saw tons of other similar-but-failed projects that would try to do things in localtime and fail.)
02:28 bacek_ pmichaud: +1.
02:28 purl 1
02:28 bacek_ purl: go drink with Bender!
02:28 purl bacek_: huh?
02:28 Whiteknight is parrot's object system still a "tricky work in progress", or is it basically nailed down?
02:28 Whiteknight (updating the book, again)
02:29 pmichaud I don't think it's likely to undergo a major change prior to Parrot 1.0
02:29 Whiteknight The book says "As I write this it's still a work in progress, though it should be done by the time this book is in print"
02:30 Whiteknight so i'm going to delete that part of it
02:40 bacek_ pmichaud: JFYU, replacing 'iter = new Iterator, self' with iter = self.'iterator'() in List.grep will made grep works.
02:42 pmichaud did I miss one?
02:42 pmichaud I thought I got all of those.
02:43 pmichaud oh, I sure did!
02:43 pmichaud fixing.
02:43 bacek_ pmichaud: this is the last one
02:44 bacek_ S29-list/grep.t passed (fudged) also
02:44 bacek_ afk, Lunch
02:45 dalek r28080 | Whiteknight++ | trunk:
02:45 dalek : [docs/book] updates, fixes, and readability improvements to chapter 7.
02:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28080
02:49 dalek r28081 | Whiteknight++ | trunk:
02:49 dalek : [docs/book] errata list in appendix is all out of date and is removed.
02:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28081
02:51 dalek r28082 | pmichaud++ | trunk:
02:51 dalek : [rakudo]:
02:51 dalek : * In List.pir. change C<iter = new 'Iterator', self> to
02:51 dalek :   C<iter = self.'iterator'()>
02:51 dalek : * bacek++
02:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28082
03:00 dalek r28083 | Whiteknight++ | trunk:
03:00 dalek : [docs/book] update section numbers in chapter 8
03:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28083
03:02 bacek_ karma bacek
03:02 purl bacek has karma of 36
03:02 bacek_ karma moritz
03:02 purl moritz has karma of 46
03:02 bacek_ he still overpace me :)
03:02 Whiteknight karma Whiteknight
03:02 purl whiteknight has karma of 35
03:02 Whiteknight you both beat me :(
03:02 Infinoid the race is on!
03:03 * Whiteknight demands a recount!
03:03 tetragon karma Whiteknight
03:03 purl whiteknight has karma of 35
03:03 Whiteknight damnit!
03:03 Infinoid karma wknight8111
03:03 purl wknight8111 has karma of 11
03:03 pmichaud karma pmichaud
03:03 purl pmichaud has karma of 1335
03:04 Whiteknight oh right, alternate nicknames!
03:04 bacek_ no one can beat pmichaud :)
03:04 pmichaud karma leo
03:04 purl leo has karma of 1883
03:04 Infinoid karma chromatic
03:04 purl chromatic has karma of 1220
03:04 Whiteknight beaten!
03:04 bacek_ karma particle
03:04 purl particle has karma of 1338
03:04 bacek_ twice!
03:04 Infinoid karma c
03:04 purl c has karma of 6959
03:05 bacek_ oh shit... King of the hill
03:05 Auzon C has an unfair advantage due to the C-- variant of it. :)
03:05 tetragon And how may of those were references to a certain language?
03:05 Whiteknight I should create a language implementation called C--
03:05 Whiteknight like C, but without subroutines
03:06 Infinoid karma java
03:06 purl java has karma of -170
03:06 Infinoid java--
03:06 Whiteknight karma tests
03:06 purl tests has karma of 114
03:06 Whiteknight tests ++
03:08 Auzon karma karma
03:08 purl karma has karma of 61
03:09 Infinoid karma coke
03:09 purl coke has karma of 1904
03:09 tetragon karma korma
03:09 purl korma has karma of 1
03:09 Infinoid go coke go.
03:09 Auzon karma dietcoke
03:09 purl dietcoke has karma of 2
03:10 cotto_home karma DietCoke
03:10 purl dietcoke has karma of 2
03:11 tetragon karma case_sensitivity
03:11 purl case_sensitivity has neutral karma
03:11 Whiteknight karma (things working)
03:11 purl (things working) has neutral karma
03:11 Whiteknight karma things working
03:11 purl things working has karma of 1
03:11 Auzon karma things working
03:11 purl things working has karma of 1
03:11 Auzon heh
03:11 Whiteknight (things working)++
03:11 spinclad (things working)++
03:11 Whiteknight :)
03:12 spinclad karma (things working)
03:12 purl (things working) has neutral karma
03:12 spinclad :(
03:12 Auzon karma chocolate
03:12 purl chocolate has karma of 39
03:12 tetragon karma things working
03:12 purl things working has karma of 3
03:12 tetragon chocolate+=10
03:12 tetragon karma chocolate
03:12 purl chocolate has karma of 39
03:12 tetragon :(
03:12 Whiteknight no shortcuts!
03:12 cotto_home chocolate++ chocolate++
03:12 cotto_home karma chocolage
03:12 purl chocolage has neutral karma
03:12 Auzon chocolate++ indeed.
03:12 cotto_home karma chocolate
03:12 purl chocolate has karma of 41
03:12 cotto_home except that one
03:12 purl i guess except that one is valid Perl syntax, and the other is crack from inside my head.
03:13 spinclad purl++
03:13 cotto_home forget except that one
03:13 purl cotto_home: I forgot except that one
03:13 Auzon purl, instant karma is also gonna get you
03:13 purl okay, Auzon.
03:13 Whiteknight instant karma?
03:13 purl Whiteknight-- or gonna get you
03:13 cotto_home instant karma
03:13 purl cotto_home++
03:14 Whiteknight no!
03:14 cotto_home I win?
03:14 Whiteknight yeah, that's bad for me
03:14 cotto_home literal instant karma
03:14 purl cotto_home: instant karma =is= <reply>$who++|<reply>$who-- or gonna get you
03:15 Auzon I thought instant karma was always positive
03:15 cotto_home it's karma roulette
03:15 Whiteknight wishful thinking, apparently
03:16 Auzon I think I like it better now :)
03:16 Whiteknight i dont like it when it hits me with a negative! I'm too poor to be losing karma randomly!
03:16 Auzon Whiteknight++ # karma balancing
03:16 * Whiteknight has karma kids to feed
03:17 cotto_home I though purl didn't evaluate its own statements
03:17 spinclad karma spinclad
03:17 purl spinclad has karma of 8
03:17 * Auzon shrugs
03:17 spinclad instant karma?
03:17 purl spinclad-- or gonna get you
03:17 spinclad karma spinclad
03:17 purl spinclad has karma of 8
03:17 cotto_home karma for test
03:17 purl test has karma of 13
03:17 cotto_home purl, karma test is test++
03:17 purl test is test++ has neutral karma
03:18 cotto_home karma for test
03:18 purl test has karma of 13
03:18 cotto_home karma test
03:18 purl test has karma of 13
03:18 cotto_home d'oh
03:18 cotto_home purl, karma_test is test++
03:18 tetragon karma_test
03:19 cotto_home foo
03:19 purl bar
03:19 Auzon bar
03:19 Auzon no baz? :-/
03:19 spinclad purl, bar is baz
03:19 purl ...but bar is <reply>Great plan. To the pub!...
03:19 cotto_home literal foo
03:19 purl cotto_home: foo =is= <reply>bar!
03:20 cotto_home It's possible that there's something more useful I could be doing with my time.
03:20 * tetragon thinks of all the functions at work called 'blerg'
03:21 spinclad cotto_home: doubtful
03:22 cotto_home I guess I'll leave the useful stuff to that cotto_work fellow
03:23 cotto_home purl, karmatest is test++
03:23 cotto_home purl?
03:23 purl cotto_home?
03:23 tetragon What is karmatest?
03:24 cotto_home I'm trying to figure out if it evaluates its own output for karma.
03:24 cotto_home karma cotto_home
03:24 purl cotto_home has karma of 3
03:24 cotto_home instant karma
03:24 purl cotto_home++
03:24 cotto_home karma cotto_home
03:24 purl cotto_home has karma of 3
03:24 cotto_home nope
03:24 cotto_home cute trick, though
03:27 Infinoid purl needs karma aliasing
03:27 purl Infinoid: what?
03:28 Infinoid cotto and wknight both have karma split across multiple names
03:29 Infinoid and so do coke and barney
03:29 cotto_home that falls firmly in the "would be nice" category
03:30 Infinoid (would be nice) > (wouldn't be nice)
03:36 dalek r28084 | Whiteknight++ | gsoc_pdd09:
03:36 dalek : [gsoc_pdd09] updated branch copy of pdd09 to reflect some changes I made in the Arenas struct.
03:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28084
03:37 Whiteknight Does parrot still have the following: "Global stash", "System stack", "PMC register stack"?
03:37 Whiteknight actually, the system stack is probably the C stack, so we definitely have that. Do we have the other two still?
03:38 Whiteknight I dont know if "PMC register stack" is the same as the register backing stack, which I know we don't have anymore
04:03 Zaba_ joined #parrot
04:12 Zaba joined #parrot
04:19 Zaba joined #parrot
04:34 tetragon joined #parrot
04:41 japhb cognominal: Patch for #55228 is waiting for you
05:44 Zaba_ joined #parrot
06:15 Zaba joined #parrot
06:22 uniejo joined #parrot
07:10 Zaba joined #parrot
07:14 masak joined #parrot
07:17 jan joined #parrot
07:51 cotto_home joined #parrot
07:56 iblechbot joined #parrot
07:57 Zaba_ joined #parrot
08:18 kj joined #parrot
08:21 cosimo joined #parrot
08:25 TiMBuS anyone here bored enough to help me out?
08:26 moritz depends on the kind of help you need ;)
08:26 TiMBuS trying to implement a compiler
08:26 TiMBuS im pretty terrible at it but hey its my first attempt
08:26 moritz I'm not too familiar with PCT, so I can't promise to help
08:27 TiMBuS well, i need to put function pointers in a pmcarray
08:27 ruoso joined #parrot
08:28 TiMBuS im not really sure how to go about how to make the PAST for doing so. would i use the 'sub' pmc?
08:28 moritz do you mean pointers to HLL functions?
08:28 TiMBuS yes
08:29 TiMBuS im implementing the language 'joy', which needs lists with functions in them
08:29 TiMBuS so i figures a pmcarray would work best.. although i might be wrong
08:30 moritz I think it should work
08:31 moritz I know that perl6 implements anonymous subs already
08:31 moritz maybe you can find out they do it by looking at the code
08:31 TiMBuS yeah i was looking at that
08:32 moritz just 2k lines in actions.pm ;-)
08:32 jonathan morning
08:32 TiMBuS heh
08:32 moritz good morning jonathan
08:32 moritz jonathan: be our (or better TiMBuS') saviour ;)
08:32 moritz how to store sub pointers in an array in PCT
08:33 jonathan To get the Sub, I guess just use a PAST::Var node, with :scope(package)
08:33 jonathan And :name(...) set to the name of the sub itself
08:34 jonathan If you're tyring to do it in PAST, anyway.
08:34 TiMBuS well the issue is, i want the sub inside a resizablepmcarray
08:34 TiMBuS it won't be ran until something 'runs' the array
08:34 TiMBuS yay homoiconic languages =/
08:35 jonathan Yes, using the PAST::Var node just gets you the Sub, it doesn't run it.
08:35 jonathan Then you can put it in an array, using the keyed_int scope.
08:36 TiMBuS ah
08:36 jonathan And a PAST::Op node of pasttype bind to put it in there.
08:36 TiMBuS ooh. so the PAST::Var node returns a 'Sub' pmc?
08:37 jonathan Yes.
08:37 TiMBuS that should do it then
08:38 jonathan Hopefully. :-)
08:39 TiMBuS i probably should have made an ordinary imperative language but i haad to be different
08:47 kj TiMBuS: you might have a look at the PCT tutorial in languages/squaak/doc, maybe there's some useful info there for you
08:48 TiMBuS hey they've all been added.
08:49 jonathan Heh, I'm planning to try getting ML running on Parrot.
08:50 moritz jonathan: exercise in type inference? ;-)
08:52 jonathan moritz: Yes, exactly.
08:53 moritz jonathan: don't know if you've seen it yesterday... t/spec/S02-polymorphic_types/subset-range.t has a failure that shouldn't be there
08:54 jonathan moritz: Thanks, will take a look.
09:05 jonathan Just got a broken Parrot build at the moment
09:05 jonathan Done realclean...fingers crossed....
09:10 jonathan Argh. Yes, my parrot is busted. :-(
09:11 jonathan ..\..\parrot.exe ..\..\runtime\parrot\library\PGE\Perl6Grammar.pir  --ou
09:11 jonathan tput=PGE\builtins_gen.pir PGE\builtins.pg
09:11 jonathan Null PMC access in invoke()
09:11 kj jonathan: mine was broken yesterday already, but i thought it was because I broke something in my sandbox; just did a clean check out, still broken; same error
09:12 kj parrot is fine, though; it's something with PGE i think
09:13 moritz smoke (after a realclean) is fine here
09:14 jonathan Yes, it's PGE issue.
09:15 jonathan kj: You found this on Win32?
09:18 moritz which means we really need PGE tests
09:20 kj jonathan: yes
09:20 jonathan Argh.
09:21 jonathan It's not even a GC problem; -G doesn't fix it.
09:21 kj i didn't report it yesterday ; didn't have time to check whether it was my local problem
09:22 kj it may have been a rename of some sub in the grammar compiler
09:22 kj I mean, there's some null access in invoke, so that would make sense
09:23 jonathan Yeah, but @other who ain't on Win32 can build fine.
09:23 jonathan oh
09:23 kj really??
09:23 * purl removes pants
09:23 jonathan I just got a clean checkout
09:23 jonathan And it worked.
09:23 purl Of course it worked
09:23 kj you on win32
09:23 kj ?
09:23 jonathan realclean didn't, but a clean checkout did...
09:23 jonathan Yeah
09:23 kj that's odd
09:24 moritz local changes?
09:24 jonathan svn diff was clean.
09:24 kj i'll do a realclean
09:25 jonathan OK, phew...I can hack on Rakudo today after all.
09:25 kj phew indeed :-)
09:25 * jonathan makes a cup of tea and digs in
09:25 kj jonathan: great slides by the way
09:26 jonathan kj: Thanks; they were fun to deliver.
09:26 kj i can imagine :-)
09:28 jonathan moritz: t\spec\S02-polymorphic_types\subset-range....ok # I guess I need to un-fudge something in there?
09:29 moritz jonathan: yes, or just copy it to t/localtest.dat and add a # pure comment at the end
09:29 moritz or run the .t file directly
09:29 moritz it's not a parse failure
09:29 jonathan ok, will do once I've run the current bunch of tests
09:30 * jonathan wants to make sure he has a clean set of passes before he starts the day's hacking
09:32 kj jonathan: well i still have the same error
09:32 kj i'll report a bug
09:36 jonathan kj: Did you try getting a clean checkout?
09:37 jonathan moritz: Actually the fact that two of the tests pass is actually a bug too.
09:37 jonathan my Int $x = -1; # also gives type check error.
09:38 moritz testing++
09:38 jonathan Hmm. Actually there's three separate things that need fixing to make this test pass. :-)
09:39 moritz I thought it would be just a small range thing ;)
09:40 kj jonathan: clean checkout) well, my svn flag is green
09:41 kj well, just to make sure, will do a complete new checkout
09:44 jonathan If you do prefix:- on an Int, you'd expect to get an Int back, right?
09:44 moritz right
09:44 jonathan .sub 'prefix:-' :multi(_) .param num a $N0 = neg a .return ($N0)
09:44 jonathan .end
09:44 jonathan Is most probably wrong.
09:45 moritz yes
09:45 moritz because it makes a num out of everything
09:45 moritz and now you'd need generics ;)
09:47 jonathan Nah, MMD. ;-)
09:48 moritz so we need 1) an Int multi 2) a num multi 3) a 'any' multi that coerces to num?
09:49 moritz or are 2 and 3 the same?
09:49 jonathan I've left 2 and 3 the same for now.
09:49 dalek r28085 | jonathan++ | trunk:
09:49 dalek : [rakudo] prefix:+ and prefix:- should preserve integer type when done on an integer.
09:49 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28085
09:49 jonathan OK, so that fixes the my Int $x = -42 bug
09:50 jonathan Now, lists need smart-match.
09:50 jonathan And then finally, I need to fix where :-)
09:51 moritz or to put it this way, I killed your productivity regarding new features
09:53 jonathan These things need fixing anyway.
09:53 moritz I know, I just forgot the smily
09:54 moritz t/spec/S29-num/int.rakudo                       58    5   8.62%  11-15
09:55 moritz not ok 13 - int(-0.5) is -0
09:55 jonathan Oh.
09:55 jonathan Hmm. list isn't in the smartmatch table.
09:55 jonathan Range is.
09:55 moritz > say int(-0.5)
09:55 moritz -0
09:55 purl 0
09:55 moritz wtf?
09:56 jonathan Ouch. :-S
09:56 moritz does is() try to do string comparison?
09:57 jonathan Not sure
09:57 jonathan yes
09:57 jonathan multi sub is($got, $expected, $desc) { my $test = $got eq $expected; proclaim($test, $desc);
09:57 jonathan }
09:58 moritz I'll now remove these ridcolous -0 from int.t
09:58 moritz and test is(-0, 0)
09:59 jonathan OK. Erm, my fix makes the range subset test fail even more.
10:01 jonathan Also, I've realized that since List isn't in the smartmatch table...we really need ranges proper to make that test pass.
10:02 jonathan Since we have '!flatten' and 'list' now, that might just be possible, though.
10:02 moritz > say int(-0.4).WHAT
10:02 moritz Num
10:02 jonathan Hmm. I've not got any int failure here.
10:02 jonathan Oh, hmm.
10:03 jonathan .sub 'int' .param num a .return 'truncate'(a)
10:03 jonathan .end
10:04 jonathan I'm not convinced that's right.
10:04 jonathan Especially given above it we have the comment
10:04 jonathan our Int multi Num::truncate ( Num $x )
10:05 mire joined #parrot
10:05 jonathan moritz: Just smoking a fix for that, then will ci
10:06 moritz jonathan: I just commited more int test, specifically int($something).WHAT eq 'Int'
10:08 jonathan great, I have that working here now
10:13 kj jonathan: FYI: (clean checkout) works now; no problems anymore
10:13 dalek r28086 | jonathan++ | trunk:
10:13 dalek : [rakudo] Make return value of truncate match that in the specification/comment above.
10:13 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28086
10:15 dalek r28087 | jonathan++ | trunk:
10:15 dalek : [core] Implement get_iter vtable method on ResizableStringArray. Patch courtesy of chromatic++, test added by me.
10:15 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28087
10:15 moritz ok, now tehre are two failures in subset-range.t because that int bug doesn't prevent assignment of negative numbers any more ;)
10:16 jonathan Yeah, I know!
10:17 jonathan Leave it for now, I'm working towards fixes for that test file.
10:17 moritz ok
10:18 jonathan Just need to try implementing a few things, to make it work.
10:20 bacek joined #parrot
10:20 bacek good localtime() everyone
10:20 moritz hey bacek ;)
10:21 bacek moritz, hi there
10:21 bacek moritz, howisgoing?
10:21 moritz bacek: fine, I'm producing more failing tests for jonathan to fix ;-)
10:22 moritz jonathan: abs() needs similar fixing, abs($_).WHAT should be identical to $_.WHAT
10:23 moritz those tests are fudged as parsefail, because rakudo doesn't know WHAT as a sub yet
10:27 jonathan parsefail?
10:28 moritz yes, but easy to work around by using the method form
10:28 moritz sent ticket anyway
10:28 jonathan OK, thanks.
10:29 moritz pmichaud++ asked to turn all missing features into tickets
10:29 Zaba joined #parrot
10:29 moritz (at least those that are used in the test suite)
10:31 moritz > say abs(-2).WHAT
10:31 moritz 0
10:31 moritz > abs(-2).WHAT.say
10:31 moritz Int
10:32 moritz b0rked
10:32 jonathan What's...odd.
10:33 jonathan s/W/T
10:42 dalek allison@perl.org | A foundation for Parrot:
10:42 dalek link: http://www.perlfoundation.org/parro​t/index.cgi?a_foundation_for_parrot
10:42 shorten dalek's url is at http://xrl.us/bkxq5
10:44 dalek allison@perl.org | Annual Conflict of Interest Statement:
10:44 dalek link: http://www.perlfoundation.org/parrot/index​.cgi?annual_conflict_of_interest_statement
10:44 shorten dalek's url is at http://xrl.us/bmjh7
10:44 dalek allison@perl.org | Annual Conflict of Interest Statement:
10:44 dalek link: http://www.perlfoundation.org/parrot/index​.cgi?annual_conflict_of_interest_statement
10:44 shorten dalek's url is at http://xrl.us/bmjh7
10:52 dalek allison@perl.org | Bylaws:
10:52 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?bylaws
10:53 dalek allison@perl.org | Bylaws:
10:53 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?bylaws
10:56 jonathan moritz: The bad news: the test fails even harder at the moment. The good news: I've got .. constructing a range operator, which is lazy when used in iteration and eager elsewhere, with all other tests passing (sanity and spectest_regression).
10:57 moritz jonathan: "eager elsewhere", surely not in a smart match?
10:58 jonathan Correct, smart-match it won't be eager in, but that doesn't count because I've no implemented it yet. ;-)
10:58 dalek allison@perl.org | Bylaws:
10:58 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?bylaws
10:59 moritz ;)
10:59 dalek r28088 | jonathan++ | trunk:
10:59 dalek : [rakudo] Make .. construct a Range object. Currently we don't have lazy lists implemented, so we eagerly flatten it into a list whenever it is used in list context (easily possible thanks to recent lists changes), however just using it as an iterator will give the lazy semantics. All tests that passed before this change in sanity and spectest_regression still pass.
10:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28088
11:00 Zaba joined #parrot
11:00 moritz jonathan++ for also incorporating the root.in makefile changes (svn up||true)
11:17 dalek r28089 | jonathan++ | trunk:
11:17 dalek : [rakudo] Implement smart-matching for Range objects.
11:17 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28089
11:18 ruoso Hi... let me bring a question I just made in #perl6 that is probably better put here...
11:18 ruoso there's something I'm very curious about parrot/rakudo... how are you planning to interoperate different object representations? like ... my $o = Object.CREATE(:repr<Glib>);
11:18 ruoso for instance... in SMOP I defined a specific API for that...
11:20 masak jonathan: any further insights into the '$_' runtime error?
11:21 jonathan All operations on objects are performed using v-table method calls. I haven't got to working out exactly how to get this working yet, but I think it'll be along the lines of...
11:21 jonathan * Make a pmrole (at the Parrot/C level, I expect) that contains the object-y methods.
11:22 jonathan * Build an anonymous subclass of the representation type that does this role
11:23 jonathan I think :repr is in the bag of weirder things we'll worry about a little later. :-)
11:23 ruoso much like what XS does for p5
11:23 jonathan pmichaud may also have thought this through more than I have.
11:23 jonathan How are you approaching this in SMOP?
11:23 jonathan masak: Remind me which one, or is there a ticket?
11:23 ruoso SMOP defines much less things in low-level
11:24 ruoso and there's a REPR api
11:24 ruoso that even p6opaque will comply to
11:24 masak jonathan: there is. let me see if I find the tnr
11:24 jonathan OK.
11:24 masak #55184
11:24 ruoso the only static lookup made on SMOP is for the MESSAGE member of the SMOP__ResponderInterface
11:24 ruoso everything else is dynamic
11:25 ruoso (MESSAGE, REFERENCE and RELEASE actually... but that's details)
11:25 ruoso the v-table lookup happens *inside* the object
11:25 ruoso and might be implemented any way wanted
11:26 ruoso basically SMOP ends up being a series of SMOP_DISPATCH(interpreter, object, identifier, capture)
11:26 ruoso where every parameter in there is already an SMOP__Object
11:27 jonathan Sounds pretty neat.
11:27 jonathan I'll give it a closer look, especially the way you're handling different representations.
11:28 ruoso but anyway... If I could give you an advice, I would recommed taking a closer look at the repr issue earlier...
11:28 ruoso that was a turning point in SMOP
11:28 ruoso and I'm gald I got to it early
11:28 ruoso s/gald/glad/
11:29 jonathan Thanks, I'll have a look and think it through a bit more. I've been trying to get a bunch of potentially tricker stuff in earlier to make sure it can work, or at least making sure that we know how we will do various things in Rakudo even if we aren't doing them yet.
11:30 ruoso you probably would like to take a look at the slides for the SMOP talk I'll present saturday
11:30 ruoso http://people.debian.org/~ruoso/SMOP.pdf
11:30 jonathan And as I said, pmichaud may have already got it nicely worked out in his head, how we will do this. ;-)
11:30 ruoso :)
11:31 jonathan Thanks....happy they are in English! :-)
11:32 ruoso :)
11:32 ruoso I was expecting to present it in YAPC::EU also, but I'm not sure I'll be able to be there...
11:37 ruoso jonathan, btw... http://www.perlfoundation.org​/perl6/index.cgi?smop_oo_api contains the summary of the REPR support
11:38 jonathan Thanks, just reading through the slides now.
11:40 bacek joined #parrot
11:49 TiMBuS joined #parrot
11:49 jonathan moritz: t\spec\S02-polymorphic_types\subset-range....ok
11:49 jonathan Just running rest of tests, and if they're fine will check-in.
11:49 jonathan Then you can un-fudge. :-)
11:51 moritz jonathan: while you are at it, S29-list/grep.t seems to pass as well
11:51 moritz (at least the fudged form
11:54 jonathan I'm not seeing any unexpected pass warnings from that.
11:54 dalek r28090 | jonathan++ | trunk:
11:54 dalek : [rakudo] Make where without a block work. This gets us passing the subset-range test.
11:54 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28090
11:55 jonathan OK, lunch time.
11:55 purl _FUD!
12:00 Whiteknight joined #parrot
12:08 tetragon joined #parrot
12:11 pmichaud good morning, all.
12:13 masak mornin'
12:13 masak (though Europe has mid-afternoon already)
12:14 ruoso pmichaud, hi pmichaud
12:14 ruoso have you seen my comments on the join signature?
12:14 ruoso (#perl6 backlog)
12:14 pmichaud yes, but didn't quite understand them.
12:15 ruoso The method dispatching always falls back to sub-dispatching when it fails
12:15 ruoso and only really fails if the sub dispatching fails
12:16 pmichaud right, I understand that part.
12:17 ruoso so our multi sub join (Str $separator, Array @items) will be found on both
12:17 ruoso join ', ', @items
12:17 pmichaud sure, but that's not what S29 has
12:17 moritz S29 can be fixed ;)
12:17 ruoso and
12:17 moritz actually TimToady said earlier today (GMT day, that is) that we still have a rather liberal commit policy for S29
12:18 pmichaud moritz: yes, I'm the one that asked that.
12:18 moritz pmichaud: ok, I forgot ;)
12:18 ruoso our multi sub join (Str $oneitem, Str separator) would get the 'foo'.join(',')
12:18 ruoso actually
12:18 pmichaud but I'm a bit concerned about that, because it means that we may be adding/changing behaviors without any real review
12:18 ruoso our multi sub join (Object $oneitem, Str separator) would get the whatever-not-array.join(',')
12:19 pmichaud ruoso: yes, that's what TimToady and I concluded
12:19 dalek r28091 | Whiteknight++ | gsoc_pdd09:
12:19 dalek : [gsoc_pdd09] updating to trunk r28090
12:19 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28091
12:19 ruoso pmichaud, ah... ok... I didn't see that part on the discussion... :)
12:19 dalek allison@perl.org | Bylaws:
12:19 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?bylaws
12:20 ruoso pmichaud, about S29 review... I think S29 will have to evolve toguether with the implementations
12:20 pmichaud and the test suite
12:20 purl or awesome and very educational
12:21 ruoso and it will be easier if we see S29 as documentation rather than spec at this moment
12:21 pmichaud but that's kinda what concerns me -- someone could modify S29 just to make sure it matches what's in the test suite, without really asking if what is in the test suite is what ought to be correct in the first place
12:22 ruoso that's the point of "it's not a spec yet" :)
12:22 dalek allison@perl.org | Articles of Incorporation:
12:22 dalek link: http://www.perlfoundation.org/parrot​/index.cgi?articles_of_incorporation
12:22 shorten dalek's url is at http://xrl.us/bkyfj
12:22 pmichaud except the official test suite "is a spec"
12:22 pmichaud (agreed it's still evolving)
12:22 pmichaud anyway, we'll just keep evolving things as we go.
12:23 ruoso pmichaud, yes... and the S29 part will be very unstable in the next few ?months?
12:23 ruoso S29 part of the tests, I mean...
12:23 ruoso but still the tests doesn't have the signatures...
12:23 ruoso they only list some use cases
12:24 ruoso and the signatures must be able to match them
12:24 jonathan morning, pmichaud  # finished eating lunch
12:35 dalek r28092 | pmichaud++ | trunk:
12:35 dalek : [rakudo]:
12:35 dalek : * Change some :multi(Int) to :multi(Integer), just in case any Parrot
12:35 dalek :   types leak into our code.
12:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28092
12:37 pmichaud r28060 has:
12:37 pmichaud +    # Propagate exception to caller
12:37 pmichaud +    $P0 = getinterp
12:37 pmichaud +    $P0 = $P0['lexpad';1]
12:37 pmichaud +    $P0['$!'] = exception
12:37 pmichaud ... is that right?
12:38 jonathan I don't think so.
12:38 pmichaud well, that's what we're doing for Regex ACCEPTS, too, so I guess it is right.
12:38 pmichaud when looking at it I was thinking that would give OUTER, not CALLER
12:38 jonathan Ah, OK.
12:39 jonathan What I menat by "not right" is I think $! is supposed to collect exceptions on a fail.
12:39 pmichaud oh, that is in a fail.
12:40 jonathan I'm not sure if this example here is meant to fail or die.
12:41 pmichaud well, we really need a 'fail' function.  :-)
12:41 jonathan Because the contextual variable $! contains all exceptions collected in the current lexical scope, saying die $! will throw all exceptions, whether they were handled or not.
12:41 jonathan So it seems to collect 'em up. :-)
12:41 jonathan Yes, we need a fail function. ;-)
12:42 jonathan purl, nopaste
12:42 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 or tools/dev/nopaste.pl
12:42 nopaste "jonathan" at 85.216.151.226 pasted "proposed patch" (46 lines) at http://nopaste.snit.ch/13176
12:43 jonathan pmichaud: That nopaste should switch us over to using mutables, and it passes all of spectest and spectest_regression.
12:43 jonathan Does it look sane?
12:44 pmichaud looks great.  commit.
12:44 tetragon joined #parrot
12:44 jonathan OK, done.
12:45 dalek r28093 | jonathan++ | trunk:
12:45 dalek : [rakudo] Switch us over to using Mutable for scalars. Passes all sanity and spec tests.
12:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28093
12:45 jonathan pmichaud: I think that maybe the is ro/rw/copy patch I did for parameters maybe can go in now and not break as much. But I know you were pondering doing some refactoring relating to parameters too.
12:46 pmichaud does it still use !TYPECHECKPARAM ?
12:46 jonathan Yeah, I hadn't eliminated that.
12:46 jonathan I'm not sure if we can for now.
12:46 pmichaud I was thinking that !DOTYPECHECK ought to be sufficient.
12:46 jonathan Yes, I think so too.
12:47 jonathan Plus I added a sub that generates the type constraint object.
12:47 jonathan It'd be good to refactor params to call that instead.
12:47 pmichaud right.
12:47 jonathan That was my intention when I factored it out before.
12:47 jonathan Just never got to it yet.
12:49 pmichaud if the change to parameters doesn't break anything, feel free to (re-)commit it.  But I may end up rearranging a lot of it soon.  :-)
12:49 iblechbot joined #parrot
12:50 pmichaud or you can just send it as a patch and I'll add/revise it as part of my refactoring.
12:50 jonathan OK, I can put it in...and tests.
12:51 jonathan Then it's there for you to refactor as you wish.
12:53 dalek r28094 | pmichaud++ | trunk:
12:53 dalek : [rakudo]:
12:53 dalek : * Fix hash() so that it again correctly reports "Odd number of
12:53 dalek :   elements found where hash expected."
12:53 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28094
12:58 gryphon joined #parrot
13:06 jonathan pmichaud: Well, geck. I just put the parameter stuff back in. And get one failure. Which is due to the Parrot GC bug.
13:07 jonathan One in spectest_regression, that is. Not in sanity.
13:08 pmichaud I've been letting things commit if they work with -G
13:08 jonathan OK
13:08 pmichaud because usually it clears up on its own
13:09 jonathan I'll commit then.
13:09 pmichaud and if it doesn't, then we'll have stronger incentive to finally figure out what is breaking :-)
13:09 jonathan But I know full well this won't clear up "on its own".
13:09 jonathan Since I found a real GC bug (lack of marking something reachable).
13:09 pmichaud oh, you mean the sub bug?
13:09 pmichaud hrm.
13:09 jonathan Yes.
13:09 jonathan It only causes one failure in a (larger, thus why we see it) test.
13:11 pmichaud I leave it to your discretion, then.  :-)
13:11 jonathan OK, I'll put this in.
13:11 pmichaud I'm willing to live with the spectest_regression failure.
13:11 jonathan Then I'll go look at the segfault.
13:11 jonathan I can put in a workaround quite easily in find_name_op, but it's a *total* hack.
13:12 pmichaud I don't mind if spectest_regression has failures for short intervals ( O(days) )  if we know why they exist
13:13 jonathan I'll have another glance at the GC bug now.
13:13 jonathan And if no better fix comes to mind, I'll file a ticket with the details I have.
13:13 jonathan At least it's a "we have a GC bug exactly here" rather than "these thousands of lines exhibit a GC bug". :-)
13:14 dalek r28095 | jonathan++ | trunk:
13:14 dalek : [rakudo] Get is ro, is rw and is copy, with ro being the default, working on parameters to subs. This time, we get just one failure in spectest_regression (on Win32), which is a result of a Parrot GC bug.
13:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28095
13:17 jan joined #parrot
13:26 jonathan pmichaud: Up for some testing?
13:26 pmichaud sure.
13:26 jonathan I now have a patch that fixes the GC bug, giving a clean pass of Rakudo sanity and spectest_regression
13:26 jonathan And also doesn't cause any new failures in Parrot tests.
13:26 pmichaud excellent.  send patch.
13:26 pmichaud I'll test it immediately.
13:27 pmichaud (unless Paula needs me for something quickly -- getting ready to head off to chemo)
13:27 nopaste "jonathan" at 85.216.151.226 pasted "GC fix" (13 lines) at http://nopaste.snit.ch/13177
13:27 jonathan there it is
13:27 jonathan I would like test from you too, since I know the issues my last attempt caused were quite different than I had been seeing.
13:28 pmichaud right.
13:28 pmichaud I'll do a full test.
13:28 jonathan Great, thanks.
13:28 pmichaud (parrot and rakudo)
13:28 pmichaud and rebuild, too.
13:28 nopaste "jonathan" at 85.216.151.226 pasted "What works now" (11 lines) at http://nopaste.snit.ch/13178
13:29 pmichaud oh, btw, it's  "is readonly", not "is ro"
13:29 jonathan Oh?
13:29 jonathan OK :-)
13:29 pmichaud I couldn't find any instances of \bro\b in S04
13:29 pmichaud sorry, in the Synopses
13:30 jonathan OK, not sure where I got that from.
13:31 cognominal I also find readonly too verbose.
13:31 pmichaud fortunately... it's the default.  :-)
13:32 cognominal that's good
13:32 jonathan I guess having is rw made is ro feel kinda natural. :-)
13:33 dalek allison@perl.org | Articles of Incorporation:
13:33 dalek link: http://www.perlfoundation.org/parrot​/index.cgi?articles_of_incorporation
13:33 shorten dalek's url is at http://xrl.us/bkyfj
13:35 jhorwitz joined #parrot
13:35 dalek allison@perl.org | Articles of Incorporation:
13:35 dalek link: http://www.perlfoundation.org/parrot​/index.cgi?articles_of_incorporation
13:35 shorten dalek's url is at http://xrl.us/bkyfj
13:37 dalek r28096 | pmichaud++ | trunk:
13:37 dalek : [rakudo]:
13:37 dalek : * Remove trailing spaces in Range.pir .
13:37 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28096
13:38 dalek allison@perl.org | Articles of Incorporation:
13:38 dalek link: http://www.perlfoundation.org/parrot​/index.cgi?articles_of_incorporation
13:38 shorten dalek's url is at http://xrl.us/bkyfj
13:40 pmichaud I got an odd failure in S29-str/capitalize.t --- but re-running it seems to cause it to pass.  Running once more for a check.
13:41 dalek r28097 | jonathan++ | trunk:
13:41 dalek : [rakudo] ro trait is actually called readonly.
13:41 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28097
13:46 pmichaud jonathan: all tests pass here.  +1 on the patch.
13:46 pmichaud (the GC fix)
13:47 jonathan OK, great.
13:50 dalek r28098 | jonathan++ | trunk:
13:50 dalek : [core] Fix a GC bug where subs did not mark their context, which could cause LexPad PMCs referred to by the context to get collected. This fix does not have the issues that my previous attempt to fix the bug created.
13:50 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28098
13:55 jonathan pmichaud: On VAR and .VAR, I think that since we keep properties in a hash right now, we're going to have to do quite some faking to make VAR($foo).readonly to work.
13:55 pmichaud really?
13:56 * purl removes pants
13:56 jonathan I think so, because find_method needs to return something invokabe
13:56 pmichaud seems to me that a MutableVAR would be able to define a .readonly method.
13:56 jonathan Oh, hmm.
13:56 jonathan OK, that special-cases 'em all.
13:56 jonathan OK, we can do that for now.
13:56 pmichaud or even a   .property('readonly')
13:57 jonathan The Spec suggests VAR($foo).readonly
13:57 pmichaud or we can define a .readonly method on Perl6Scalar that returns its 'readonly' property
13:57 pmichaud then VAR($foo).readonly dtrt
13:57 jonathan Yeah, that's a point.
13:57 jonathan OK, that'll be cleanest for the future.
13:59 kj joined #parrot
14:04 Andy joined #parrot
14:05 pmichaud moritz: for RT#55338, what file tests WHAT() ?
14:05 moritz pmichaud: S29-num/abs.t
14:06 pmichaud perhaps mention it in the ticket?  ;-)
14:06 pmichaud (thanks)
14:06 moritz ok, will do next time
14:06 pmichaud and why does abs.t use WHAT?!
14:06 moritz to ensure that the type doesn't change
14:07 diakopter pmichaud: don't shout
14:07 moritz and it's good that it does, because we had some cases where int() returned a Num ;)
14:07 jonathan We can't help it! S12 made us do it!
14:07 diakopter :)
14:08 pmichaud shouldn't we be using ~~ instead?
14:08 moritz how?
14:08 pmichaud $abs($_) ~~ $_.WHAT    perhaps?
14:08 moritz currently the test is WHAT(abs($_)) eq WHAT($_)
14:08 pmichaud sorry
14:08 pmichaud abs($_) ~~ $_.WHAT
14:09 moritz ok, that might be more permissive
14:09 pmichaud are we guaranteed that abs($_)  shouldn't change type?
14:09 pmichaud or just in select cases?
14:10 moritz pmichaud: they are tests with Num and Int
14:10 moritz pmichaud: and I think in those it shouldn't change
14:10 pmichaud okay.
14:10 pmichaud works for me then.
14:12 moritz actually some of these tests failed quite horribly
14:12 moritz abs(-2).WHAT.say said "Int"
14:12 moritz and way abs(-2).WHAT said "-2"
14:13 moritz > abs(-2).WHAT.say
14:13 moritz Int
14:13 moritz > say abs(-2).WHAT
14:13 moritz 0
14:13 particle jonathan: i have some code review items of your ro, rw, copy patch: http://www.parrotvm.org/svn​/parrot/revision?rev=28095
14:14 particle your error messages should include the trait name: $/.panic("Cannot apply traits to parameters yet.");
14:15 particle it seems 'is rw is rw' won't error (should it, or just warn, which we haven't implemented yet)
14:16 jonathan 'is rw is rw' does error here for me
14:17 particle i think the last 'else {' in the bottom patch chunk is too permissive, should check "elsif $cont_trait eq 'copy'" specifically
14:17 particle ah, yes, it will error.
14:17 particle should it?
14:17 jonathan And yes, including trait name would be a good thing, though the original message isn't so far off - we're not really applying traits proper yet.
14:17 jonathan I'm not sure, but it'd seem odd specifying multiple.
14:17 jonathan I was really tyring to catch is readonly is copy and other such meaningless fun.
14:18 particle syntactically, it's allowed
14:18 particle semantically, it has no meaning
14:18 jonathan Oh, I know, but that doesn't mean the compiler should allow it.
14:18 particle but, since it looks funny, it sends up a red flag
14:18 jonathan my Int $x = "foo" is syntactically allowed. :-)
14:18 particle yes, but that's semantically wrong
14:19 jonathan On the last else, $cont_trait is something that we directly set ourselves, not the user.
14:19 particle yes, correct
14:19 particle but it doesn't match the cases above
14:19 jonathan So from the block above we know it can't have any other value.
14:20 particle if the block above is changed, then the block below needs changing
14:20 particle but what if a rakudo committer changes the above without the below?
14:20 particle those blocks are tightly coupled
14:20 particle so i'm arguing that the if/elsif cases should match, to make that more clear
14:20 jonathan Can be done.
14:21 * pmichaud notes as an aside that he's still planning to refactor a lot of this.
14:23 particle i can do the changes
14:24 particle but i don't want to without discussion
14:25 jonathan particle: I have no objections to the changes you're proposing.
14:25 particle okie
14:25 jonathan Generally, I don't mind clean-ups to anything I commit to make it more maintainable/readable/give better error messages.
14:25 particle i'm reviewing your range commit now
14:25 diakopter anyone who's going to yapc::na - msg me if you have an extra bed/couch/floor to offer - I'll pay for half..all of your housing costs...  I need a place to crash.
14:26 particle i hate that wicked gc bugs are usually solved by one line of code... after all that digging
14:26 particle diakopter: i think there's a wiki page for such requests
14:26 diakopter particle: it's pretty bare
14:28 particle ah
14:30 moritz from the discussions here I get the impression that the GC is a bit crappy
14:30 moritz but why? is it neglected? or not well tested?
14:31 particle moritz: it's not crappy
14:31 jonathan particle: That one took about an hour and a half, in the C debugger, at the airport on Sunday to find.
14:31 particle well, the performance is
14:31 particle but we're replacing the current gc with a better one
14:31 particle we = Whiteknight++
14:31 particle moritz: the hard part is programming for gc
14:31 moritz particle: ok, not crappy, but it still accounts for at least half the parrot bugs I'm confronted with
14:32 particle that's the trouble with C
14:32 particle if we could program in perl, we wouldn't have to worry about gc :)
14:32 moritz so are the "GC bugs" actually spread out over all the code base?
14:33 particle unlike perl 5 source (refcounting), parrot's gc bugs are usually in one of a few places in any .pmc file
14:33 jonathan The problems generally are things that are still somehow reachable, but we aren't telling the garbage collector that.
14:33 particle perhaps the 'mark' vtable function, or 'init'
14:34 jonathan That's the case in the one I just fixed.
14:34 moritz ok, thanks for the insight
14:34 jonathan And to go with what particle just mentioned, the thing I just fixed was inside mark method of the Sub PMC.
14:34 particle moritz: i thought of a new todo for rakudo tests...
14:35 * jonathan finally finds a box with bison and flex versions that allow him to add parsing of :instanceof(blah) to IMCC.
14:35 particle make sure that files marked # pure don't have any #?rakudo directives in them
14:35 moritz particle: sounds like a one-liner ;)
14:35 particle yay for jonathan!
14:36 moritz well, perhaps a bit more than one line
14:36 particle yep, pretty easy
14:36 particle would make a nice util to add to the test suite maintainer toolkit
14:37 moritz any suggestions for a name?
14:38 moritz fudge-purity-warnings?
14:38 particle purity_check?
14:38 particle sure, i like fudge_purity_inspector.pl
14:40 moritz how do I add an inital $Id: tag to a file?
14:40 Infinoid just put $Id$, it will fill out the rest
14:41 moritz Infinoid: thanks
14:42 dalek r28099 | jonathan++ | trunk:
14:42 dalek : [core] Add parsing (but not semantics) for :instanceof('Type') adverb on .subs.
14:42 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28099
14:42 jonathan feather++ # had correct versions of flex and bison to let me do this patch, at last
14:44 particle moritz: need to set some svn properties, too, probably
14:44 particle do we have a make target for that in perl6 now?
14:44 moritz in parrot we have 'codetest'
14:44 particle run that after your svn add
14:45 Infinoid if it passes t/distro/file_metadata.t, $Id$ should work
14:45 moritz do we have a script for adding files and setting svn props?
14:45 particle no, unlike pugs
14:45 moritz like pugs' util/svn-add-textfiles
14:45 particle shouldn't be hard to steal that one, though
14:46 particle stick it in parrot's tools/dev/
14:51 dalek r28100 | infinoid++ | pdd13pbc:
14:51 dalek : [pdd13] Merge changes from trunk (-r27563:28099) into pdd13pbc branch.
14:51 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28100
14:51 pmichaud (make codetest)  I'm thinking of moving the existing 'make test' target to 'make coretest', and then have 'make test' run both coretest and codetest
14:52 pmichaud then we can have 'make fulltest' that runs coretest, spectest_regression, and codetest
14:52 particle pmichaud++
14:53 particle i think the default test target should have no body, just dependencies
14:53 particle (unless that body is @echo whatever)
14:53 pmichaud that's what I'm thinking also.
14:54 ruoso joined #parrot
14:55 moritz is MANIFEST generated somehow?
14:55 pmichaud perl tools/dev/mk_manifest_and_skip.pl
14:55 Infinoid tools/dev/mk_manifest_and_skip.pl
14:55 Infinoid heh :)
14:56 moritz ok, let's ask the other way round: is there a "must-read for new commiters" somewhere?
14:57 moritz (not that I'm a commiter yet...)
14:59 dalek r28101 | jonathan++ | trunk:
14:59 dalek : [rakudo] Stub in MutableVAR PMC.
14:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28101
14:59 NotFound The first law of the commitotic: "A commiter may not injure a human being or, through inaction, allow a human being to come to harm."
15:00 moritz "die Würde des Menschen ist unantastbar" - we have that in our constitution already ;)
15:00 Infinoid there's docs/project/committer_guide.pod
15:01 NotFound "... to commit and serve"
15:03 jonathan Thou shalt never commit anything that breaks t/codingstd/trailing_whitespace.t. ;-)
15:04 particle sinner!
15:04 * jonathan looks forward to having codetest run as part of make test for Rakudo.
15:04 NotFound Aye.
15:04 jonathan I'm still mystified, how I manage to end up with so many of these.
15:04 pmichaud jonathan: any ideas about making method calls fall back to sub calls?
15:04 davidfetter joined #parrot
15:04 jonathan pmichaud: Example of what you're trying to do?
15:05 pmichaud $foo.abs   should call abs($foo)   if   no abs method is defined.
15:05 moritz Patch sent
15:05 pmichaud S12:207
15:05 jonathan pmichaud: Is that general Perl 6 sem....right.
15:06 jonathan We need to override find_method.
15:06 pmichaud ouch
15:06 pmichaud more generally I think we need our own dispatcher
15:06 jonathan We need to anyway.
15:06 jonathan Because we need to get SubMethods in parent classes not to be dispatched to.
15:06 jonathan And other such fun.
15:06 pmichaud and junctions
15:07 purl junctions are what you call Quantum::Superpositions in Perl 6. or fun
15:07 jonathan That's the MMD dispatcher, but yes.
15:07 pmichaud ...MMD dispatcher can do the autothreading?
15:07 jonathan I will deal with that in July when I do the MMD work.
15:07 jonathan Yes, that's my plan.
15:07 pmichaud so, wouldn't "fallback to sub" just be part of that, also?
15:09 jonathan No, because find_method will never have returned you a multi to invoke.
15:09 pmichaud the mmd dispatcher for junctions won't work with methods?
15:09 pmichaud I'm confused.
15:10 jonathan Let me try and explain better.
15:10 jonathan For sub calls => either have a Sub in the namespace, which we just invoke directly, or it's a MultiSub, in which case on invoke it runs the MMD dispatcher.
15:11 peepsalot joined #parrot
15:11 jonathan For methods => call find_method. If find_method doesn't find anything, it instead does the "fallback to sub" logic. Otherwise, it returns what it found, which may or may not be a multisub.
15:11 jonathan Then we proceed the same as if we'd looked a sub up
15:11 pmichaud so, what handles autothreading on Sub?
15:11 pmichaud (as opposed to MultiSub)
15:11 jonathan Oh, urgh.
15:12 moritz isn't it handled *after* finding the correct sub?
15:12 jonathan Yes, it is. And type check failure.
15:12 jonathan The type check failure is caught (like no applicable methods is caught - but we probably won't bother throwing and catching anything here).
15:13 pmichaud moritz: isn't <what?> handled after the finding the correct sub?
15:13 moritz pmichaud: autothreading
15:13 pmichaud foo(1 | 'b')    might invoke two different subs.
15:13 jonathan And then we examine the signature, and if the failure was due to a parameter not taking a junction and we passed one, we change it to a multi, with the newly generated auto-threader inside it.
15:13 jonathan Aye.
15:14 jonathan The junction distributor just re-dispatches back to the multi, which will dispatch the correct way.
15:16 pmichaud I have a feeling that's not going to really work.
15:16 jonathan Which bit?
15:16 purl Which bit is probably the time part? Anyone?
15:17 pmichaud well, for one, I don't think that we should require every sub to check its arguments for Junctions
15:17 pmichaud that should really occur prior to dispatch.
15:19 jonathan Subs are responsible for checking the types of things passed as parameters, I would have thought?
15:19 pmichaud ultimately I think every sub needs to carry a signature property, and then the dispatcher selects a sub based on matching signature
15:19 pmichaud and that's the part that does the type checking of arguments
15:19 jonathan OK, but that's just moving the check done in each sub into one common place (e.g. done inside invoke)
15:19 jonathan Which is neater, I agree.
15:20 jonathan I'd been pondering that we probably need to have signature objects in place to do the MMD dispatcher properly.
15:20 pmichaud well, we know we have to have a Signature type
15:20 moritz re "every sub needs to carry a signature property", yes, you can even access it with <c>.sig</c>
15:20 pmichaud moritz: I think it's  '.signature', but yes.
15:20 jonathan Sure, it's just a little way down on the roadmap. But I suspect we should hoist it up and doing it before MMD.
15:21 jonathan The :instanceof stuff I'm working on here and there, is one part of that.
15:21 pmichaud ultimately my guess is that we'll end up with our own custom MultiSub type
15:21 pmichaud and override its 'invoke'
15:21 jonathan That was my plan.
15:21 pmichaud and then all of our Sub objects are that type
15:22 jonathan Something like that.
15:22 pmichaud i.e., we don't have any Parrot 'Sub' objects, they're all 'Perl6Code'  or whatever
15:22 moritz jonathan: actually both .sig and .signature is used in the synopsis :(
15:22 jonathan moritz: Aliasing! :-)
15:22 pmichaud heh, you're right.
15:22 jonathan pmichaud: Right. That's what I'm working towards.
15:22 pmichaud I think S03 is incorrect.
15:23 pmichaud then I think that instead of trying to fix find_method, we do something to generate method calls instead of $x.'foo'
15:24 pmichaud because i don't hold out a lot of hope for getting find_method to do what we want.
15:25 pmichaud I suppose it could work if we assume that everything isa Perl6Object
15:26 jonathan pmichaud: I think we should use find_method, but we need to subclass the Object PMC.
15:26 jonathan And implement our own semantics in there.
15:26 pmichaud that would seem to eliminate P6object
15:26 jonathan I suspect just writing our own dispatcher and ignoring find_method is going to hurt language inter-op.
15:27 jonathan Does P6Object subclass Object?
15:27 jonathan Or is it just an instance of it?
15:27 jonathan I'm guessing the second.
15:27 pmichaud I'm not saying ignore find_method, I'm saying that we don't use it as our primary form of method dispatch
15:27 pmichaud nothing subclasses Object
15:27 jonathan I figured so.
15:28 jonathan I think the original intention was to make class and object subclassable.
15:28 jonathan So you can put your own dispatch etc semantics into them.
15:29 pmichaud well, if we want to do that, and to put PGE and PCT into that category, I guess that's okay.
15:29 pmichaud *however*
15:30 pmichaud this is a case where I think that it's the language that is dictating the semantics, not the object.
15:30 pmichaud i.e.,   if someone gets a hold of a Perl6Array in another HLL and invokes a method on it, perhaps we shouldn't have the "fall back to sub" semantic in that other HLL
15:30 pmichaud similarly, if I get a Python object into my Perl6 program, I should expect "fall back to sub" to work.
15:31 jonathan Hmm. Good point.
15:31 purl Thanks, jonathan, I'm glad you agree with me.
15:31 pmichaud so, perhaps a couple of dynops
15:32 jonathan Implenting our own custom dispatcher?
15:32 pmichaud yes.
15:32 jonathan OK, let's try this way then, and see how it goes.
15:32 pmichaud oh, hrm.
15:32 pmichaud here's another evil thought.  :-)
15:33 jonathan But there's still things like Signature to get in before we can do it really well. ;-)
15:33 jonathan :-)
15:33 jonathan Uh-oh. :-)
15:33 pmichaud we could implement a "pseudoclass" that always occurs at the end of the parent list
15:33 pmichaud and that pseudoclass reports all subs in the current lexical scope as being methods :-)
15:34 pmichaud and then find_method would work.  :-P
15:34 pmichaud sounds too evil, though.
15:34 jonathan Ewww!
15:35 jonathan You're sick. :-)
15:35 jonathan That would have...interesting...consequences for .*
15:35 pmichaud as an interim measure we could see about overriding the 'call' and 'callmethod' pasttypes  in PAST::Op
15:36 pmichaud to call a custom dispatcher instead of the default Parrot one.
15:36 jonathan I guess just callmethod for now, would get us the semantics you're after of sub fallback?
15:37 pmichaud yes, I think so.
15:37 pmichaud and would be a reasonable proof of concept.
15:37 pmichaud is there a way (in PIR) to determine if a multisub will dispatch?
15:39 particle so, $foo.?abs will call abs($foo) ?
15:39 jonathan particle: I'd not hope.
15:39 pmichaud i.e., if a given set of arguments will match a given MultiSub PMC
15:39 jonathan pmichaud: Only to invoke it.
15:39 pmichaud hrm.
15:39 pmichaud I might want to add a method to MultiSub then.
15:40 jonathan Yeah, we need to be able to do things like MySub<Int, Str> or similar to get at particular variants too.
15:40 jonathan I may be a little off on the syntax.
15:40 jonathan I asked for this in the MMD PDD, but I don't think anything made it in there.
15:40 pmichaud Ultimately I think we're going to be using :load :init to set properties on our subs
15:41 pmichaud I don't think we'll be able to get every property we might want/need into PIR syntax.
15:42 pmichaud but having :instanceof  is something we definitely need.
15:42 pmichaud why wouldn't  $foo.?abs  call abs($foo)  ?
15:43 jonathan :load :init - wouldn't :emit_pbc be better, so once we serialize the bytecode and sub PMCs we don't have to do it every load?
15:44 jonathan I thought .? just said "call a method if we have it"
15:44 jonathan I'm not sure, just feels kinda surprising it'd go for a sub instead.
15:44 jonathan I guess if . does though...
15:44 pmichaud oh, I'm not familiar with :emit_pbc
15:44 jonathan I *think* it runs it right after it compiled it.
15:45 jonathan Or is it :immediate or something...I'm sure not long back I saw such a mechanism, for running during compile time.
15:45 pmichaud :immediate means that we do it during the compile, yes.
15:45 jonathan ok
15:45 jonathan I thought there was emit_pbc one as well, I may be wrong.
15:47 pmichaud (phone)
15:51 pmichaud but thinks that happen as part of :immediate don't show up in any .pbc output
15:51 pmichaud s/thinks/things
15:51 pmichaud that's why we have :load :init
15:52 pmichaud (:immediate was commonly used for compiler side-effects, such as loading a .so module prior to trying to obtain a type id)
15:53 pmichaud if/when we can do bytecode serialization then we'll probably be in better shape.
15:53 pmichaud that sounds like something PCT should offer.
15:53 pmichaud or the PIR compiler itself.
15:54 pmichaud I suppose if we can serialize the Eval PMC that comes back from compiling PIR then that might be good enough.
15:54 jonathan Yeah, I guess so.
15:55 jonathan This might be in the realm of, things that should work but maybe don't.
15:55 pmichaud and then we could do properties as :immediate
15:55 jonathan If :load :init works for now though, I guess easier to use that while we work out what we need.
15:55 pmichaud right, that's been the approach I've been taking.
15:56 pmichaud it's mostly generated code, so easy to change when Parrot gets improvements.
15:57 jonathan Sure.
16:09 pmichaud afk, lunch, kids
16:13 diakopter kids for lunch :(
16:41 barney joined #parrot
16:42 cotto_home barney, ping
16:44 barney hi cotto
16:45 cotto_home are you familiar with clean-room implementation?
16:45 dalek r28102 | jonathan++ | trunk:
16:45 dalek : [rakudo] Add readonly method to Mutable PMC.
16:45 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28102
16:45 cotto_home (with the concept)
16:46 barney what's that ? Implementation according to spec ?
16:46 cotto_home my understanding is that it's a way of copying the idea behind code without copy the code
16:46 cotto_home one guy looks at the code and writes a spec
16:47 dalek r28103 | jonathan++ | trunk:
16:47 dalek : [rakudo] Fill out MutableVAR a bit more, and add a few (passing) tests for it.
16:47 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28103
16:47 cotto_home another looks at the spec and writes another implementation of the code
16:47 particle sounds like "chinese wall"
16:47 cotto_home I was thinking that this method might be the easiest way to use an existing PHP grammar in Plumhead without dealing with relicensing issues
16:48 cotto_home particle, yes
16:48 barney I remember that being mentioned WRT to Linux drivers
16:49 cotto_home If I used the Zend PHP5 implementation to write a spec for the grammar, would you be willing to implement the PGE grammar? (or the other way around)
16:52 barney Have you investigated the PHC and Phalanger grammars?
16:53 cotto_home AFAICT they're both based on Zend, which probably means that they couldn't be relicensed
16:53 jonathan afk, dinner and language study, back later
16:55 Theory joined #parrot
16:56 barney cotto: I'm willing to do the PGE and ANTLR implementation without looking at Zend code. In fact, that's what I did so far.
16:57 cotto_home yes, but working from a spec would help prevent surprises
16:58 barney Of course using a spec from you.
16:58 cotto_home yes
16:59 dalek r28104 | Whiteknight++ | gsoc_pdd09:
16:59 dalek : [gsoc_pdd09] updates to comments and datastructures
16:59 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28104
17:00 cotto_home OK.  I'll start a spec on the wiki and send you a link once it nears usability.
17:00 barney What is the license of the Zend parser? I think they distinguish between a basic PHP and some kind of accelerator.
17:00 cotto_home Zend 2.0
17:01 cotto_home You may be thinking of Zend's opcode cache or optimizer
17:01 barney cotto: I plan on a some free time in July and August. Being busy with a project in Darmstadt till end of June
17:01 cotto_home such is life
17:02 cotto_home tuits are usually in short supply
17:03 barney Isn't that GPL-compatible? http://shiflett.org/blog/200​6/apr/zend-framework-license
17:05 cotto_home I'll have to check if that's the same as the Zend 2.0 license
17:05 cotto_home bbs (work)
17:06 * barney hitting the road to Munich
17:20 japhb Yikes.  I think this morning's scrollback may be too long to read without my brain melting ....
17:21 moritz japhb: just skip the whol karma battle ;)
17:27 dalek r28105 | particle++ | trunk:
17:27 dalek : #55346: [PATCH] tool for checking if '# pure' files still contain fudging
17:27 dalek : ~ applied with minor formatting corrections and enhancements
17:28 dalek : Courtesy of Moritz Lenz (moritz++)
17:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28105
17:29 particle oh, our test tools are looking much nicer these days!
17:30 moritz though I'm wondering if we should actually remove some tests from spectest_regression
17:30 moritz some of them have 100% skip, which only increases test time
17:30 moritz but doesn't add any value
17:31 particle moritz: they shouldn't be in _regression, probably, but i'd like them in spectest
17:31 moritz particle: "spectest" runs *everything*
17:32 particle ssorry, here's what i'm getting at:
17:33 particle is it worthwhile to decorate all spec tests with #?rakudo markers?
17:33 moritz why should it?
17:33 particle ...or only the tests we expect to be working soon
17:34 moritz only those that are partly implemented
17:34 moritz there's no use to fudge concurrency test when no concurrency is implemented
17:34 particle does "use v6; plan 5;" count as partly implemented? :)
17:34 moritz ;) no
17:35 particle ok, then for those test files tha have all skipped, let's rip out #?rakudo and from _regression
17:38 nopaste "moritz" at 89.13.199.151 pasted "patch for particle: less tests" (31 lines) at http://nopaste.snit.ch/13181
17:39 NotFound joined #parrot
17:39 particle we don't do pi yet?
17:39 particle seems like it could be a quick add
17:40 particle sprintf, too, if we use parrot's directly
17:40 moritz didn't look at it, that's just the list of all skip-all tests
17:40 moritz does perl 6 have the same format as parrot?
17:41 particle i don't know, but i bet it's a close-enough approximation for now
17:42 particle parrot's is modelled after perl 5's
17:42 moritz oh it seems that S29-num/exp.t is overly fudged
17:44 moritz exp(5) fails from too low precision :(
17:46 particle ah. that's fixable someday
17:47 pmichaud I wonder what Parrot's exp(5) is generating.
17:47 moritz > say exp(5) - 148.4131591025766
17:47 moritz 0.000159103
17:47 moritz perl -wle 'print exp(5) - 148.4131591025766'
17:47 moritz 0
17:47 moritz ticket?
17:47 purl ticket is, like, saying to select a compiler based on the extension of the script file
17:51 Zaba joined #parrot
18:00 pmichaud grrrr
18:00 pmichaud I think someone changed the float code.
18:02 rdice joined #parrot
18:03 pmichaud okay, better:
18:03 pmichaud > say exp(5) - 148.4131591025766
18:03 pmichaud 0
18:03 pmichaud let's see what else breaks :-)
18:09 moritz btw I get a failure in t/spec/S02-polymorphic_types/subset-range.t (last test)
18:09 pmichaud odd, I don't.
18:09 moritz and eval_dies_ok doesn't prevent it from dying :(
18:10 moritz uhm, who fixes svn for me?
18:10 moritz I added tools/fudge_purity_inspector.pl locally
18:10 moritz then particle++ commited it
18:10 dalek r28106 | pmichaud++ | trunk:
18:10 dalek : [rakudo]:
18:10 dalek : * Avoid losing precision in floating point constants.
18:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28106
18:11 moritz at svn up: svn: Failed to add file 'languages/perl6/tools/fudge_purity_inspector.pl': object of the same name already exists
18:11 moritz so I deleted it
18:11 moritz now it says svn: Failed to add file 'languages/perl6/tools/fudge_purity_inspector.pl': object of the same name is already scheduled for addition
18:11 moritz is svn that broken? or am I?
18:12 particle moritz: did you svn del?
18:12 particle i bet you did svn add before i committed
18:12 moritz particle: I did
18:12 moritz but since you commited an identical file, what's the problem?
18:12 particle it's not identical
18:13 particle i modified the file
18:13 moritz well, then it could still report a merge conflict
18:13 moritz anyway, svn del --force fixed it, thanks particle++
18:13 pmichaud how does exp.t perform after r28106 ?
18:14 nopaste "moritz" at 89.13.199.151 pasted "failure in t/spec/S02-polymorphic_types/subset-range.t" (15 lines) at http://nopaste.snit.ch/13182
18:14 pmichaud the problem wasn't exp(), it was that rakudo/parrot was encoding 148.413591025766 as 148.143
18:15 moritz pmichaud: I'll check when my parrot build is finished
18:16 moritz re paste, a clean rebuild of parrot and perl6 fixed that
18:16 pmichaud the subset-range stuff?
18:16 moritz yes
18:16 moritz and the exp() stuff is also fixed
18:16 pmichaud okay.  I suspect jonathan had to update parrot in order to get it to work properly.
18:16 pmichaud yay for fixes
18:19 moritz ok, that resolves [perl #55350]
18:23 Zaba_ joined #parrot
18:23 pmichaud (closed ticket, thanks)
18:25 jonathan pmichaud: Updated Parrot needed due to GC fix.
18:25 pmichaud oh, right.
18:25 jonathan That's only core change I did today.
18:25 tewk joined #parrot
18:26 particle hey, tewk! how's your tan?
18:26 jonathan Not sure why you'd need to rebuild to get the subset range test to pass.
18:26 jonathan pmichaud: $x.VAR and VAR($x), according to S12, are macros, not just methods/sub calls.
18:26 particle had to regen makefile after that range commit
18:26 tewk Not bad.
18:26 jonathan Meaning we should do 'em in the grammar.
18:27 jonathan Any preferences where we stick them for now, until we have macros?
18:27 jonathan I think .VAR can just be a special case of dotty for now.
18:27 pmichaud jonathan: yes, that's fine with me.  I wasn't thinking of them as method calls.
18:27 pmichaud (it's okay with me if they are done with method calls, but whatever implementation gets us the right semantics.)
18:28 particle pmichaud: how are you counting passing spectests?
18:28 jonathan They're not meant to be method calls, and if they were we'd get the wrong semantics. :-)
18:28 particle i get:
18:28 particle Files=58, Tests=1110, 285 wallclock secs
18:28 pmichaud particle:  I subtract out the skipped tests.
18:29 particle i don't have a list of skipped tests
18:29 particle ah, you must be using a different version of Test::Harness
18:29 jonathan OK, going to study for a while, and then back to hack on Rakudo more afterwards.
18:29 pmichaud I get:
18:30 pmichaud All tests successful (1 subtest UNEXPECTEDLY SUCCEEDED), 42 subtests skipped.
18:30 pmichaud Files=1, Tests=44,  4 wallclock secs ( 4.01 cusr +  0.05 csys =  4.06 CPU)
18:30 pmichaud (I just did 'make localtest')
18:30 pmichaud so, if that was the results for spectest_regression, I'd report 44 - 42 == 2
18:30 cotto-work joined #parrot
18:33 cotto-work you'd think that Microsoft would know how to prevent brownouts
18:33 cotto-work you'd be wrong
18:34 particle cotto-work: not working on a laptop there?
18:34 cotto-work no
18:34 particle laptop++
18:35 cotto-work agreed
18:35 cotto-work reliable power++
18:35 cotto-work (reliable power)++
18:35 * pmichaud wonders about kid power.
18:36 cotto-work now I get to go to lunch, wondering if my machines will be up when I get back
18:36 PerlJam Install power-generating playgrounds at schools around the country.   Kids at play == power for the school (or local community)
18:37 particle PerlJam: somebody designed something like that for africa
18:37 particle one of those things that spins, with bars on top that you can push or hold on to
18:37 PerlJam (that somebody)++
18:37 particle it powers a well pump
18:38 particle kids playing = water for community
18:43 cotto-work yay.  It's still up.
18:54 Ivatar joined #parrot
19:00 dalek r28107 | pmichaud++ | trunk:
19:00 dalek : [rakudo]:
19:00 dalek : * 'make coretest' now runs tests in t/00-parrot, t/01-sanity
19:00 dalek : * 'make codetest' runs Parrot's coding standards tests
19:00 dalek : * 'make test'     runs coretest and codetest
19:00 dalek : * 'make fulltest' runs coretest, spectest_regression, and codetest
19:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28107
19:00 dalek r28108 | pmichaud++ | trunk:
19:00 dalek : [rakudo]:
19:00 dalek : * Fix properties, trailing spaces, c file coda on src/pmc/mutablevar.pmc
19:00 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28108
19:00 dalek r28109 | coke++ | trunk:
19:00 dalek :
19:00 dalek : > The attached patch fix a warning in optimized build in
19:01 dalek : > src/exceptions.c:Parrot_print_backtrace by moving a variable
19:01 dalek : > declaration inside the conditional branch that uses it.
19:01 dalek : Courtesy NotFound++ via RT#55296
19:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28109
19:06 moritz file_metadata.t fails on languages/perl6/t/pmc/mutablevar.t
19:06 pmichaud moritz: is that fixed in 28108?
19:06 moritz pmichaud: no
19:06 pmichaud oh, guess not.
19:07 dalek r28110 | pmichaud++ | trunk:
19:07 dalek : [rakudo]:
19:07 dalek : * Fix properties on perl6/t/pmc/mutablevar.t (moritz++)
19:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28110
19:26 Zaba joined #parrot
19:26 ruoso joined #parrot
19:27 dalek r28111 | coke++ | trunk:
19:27 dalek :
19:27 dalek : Eliminate a magic constant and replace it with a magic define.
19:27 dalek : (RT#45953)
19:27 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28111
19:30 dalek r28112 | particle++ | trunk:
19:30 dalek : [rakudo] improve some error messages, and improve maintainability a bit
19:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28112
19:32 jonathan back
19:34 davidfetter joined #parrot
19:44 dalek r28113 | Whiteknight++ | gsoc_pdd09:
19:44 dalek : [gsoc_pdd09] flesh out algorithm a little more, add points 5, 6, and 7.
19:44 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28113
19:48 dalek r28114 | jonathan++ | trunk:
19:48 dalek : [rakudo] Implement VAR($x) and .VAR macros.
19:48 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28114
19:48 cjfields joined #parrot
19:56 purl joined #parrot
19:56 dalek r28115 | jonathan++ | trunk:
19:56 dalek : [rakudo] Make readonly return false when not set - scalars are normally rw - and implement rw defined in terms of ro.
19:56 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28115
20:00 pmichaud elsif $key eq 'VAR' {
20:00 pmichaud 888 $past := PAST::Op.new(
20:00 pmichaud 889 :inline("%r = new 'MutableVAR', %0\n"),
20:00 pmichaud 890 :node($/)
20:00 pmichaud 891 );
20:00 pmichaud 892 }
20:00 pmichaud looks like it's missing a %0 child.
20:02 jonathan nope, gets unshifted on further up.
20:02 jonathan It's in dotty, which is a postfix.
20:03 jonathan Though it was also wrong anyway - we can't just do something like this. As VAR is meant to hand back what it was given unless it was a scalar. Fixing that now.
20:07 dalek r28116 | jonathan++ | trunk:
20:07 dalek : [rakudo] Make VAR and .VAR just give what was given to them, unless it's a scalar, per S12.
20:07 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28116
20:10 dalek r28117 | Whiteknight++ | gsoc_pdd09:
20:10 dalek : [gsoc_pdd09] improve init function, deinit, comments.
20:10 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28117
20:11 cjfields_ joined #parrot
20:19 Zaba_ joined #parrot
20:21 * jonathan tries to cram the S12 roles section fully into his head
20:22 pmichaud ENOSPACE
20:23 jonathan Tell me about it.
20:23 pmichaud S12 roles are just too big for me :-)
20:23 purl it is probably quite literally a Big Fucking Rock
20:23 jonathan It's not so bad.
20:23 jonathan There's some tricky bits.
20:23 pmichaud oh, I thought that about a lot of things when reading the synopses.  Like S09.  :-)
20:24 jonathan But there's a decent bit of stuff that just de-sugars to simpler things.
20:24 pmichaud yes.
20:25 jonathan Hmm.
20:25 jonathan So on generics, I wish it was a tad more explicit
20:25 jonathan But it seems
20:25 jonathan role Pet[::Petfood = TableScraps] {
20:25 jonathan The = here is just defining a default value. It's just parameter syntax, but types, not variables.
20:25 jonathan Well, default type.
20:26 jonathan role Pet[::ID;; $tag] { # one type param, one variable param
20:26 jonathan $myobj does Array[:of(Int)](@initial)
20:26 jonathan So from this, I would assume that in the square brackets, you can put a list of type parameters, if you have many.
20:27 jonathan And a list of variable parameters in the parens afterwards.
20:27 jonathan This only shows it for mix-in style stuff.
20:27 jonathan Put I assume you can
20:28 jonathan class Dog does Pet[:PetFood(PedigreeChum)] { ... }
20:29 jonathan s/Put/But/
20:36 Zaba joined #parrot
20:43 Zaba_ joined #parrot
20:43 particle jonathan: can you make rw = !ro instead of using ?:
20:43 particle or, does RETURN (INTVAL !ro); work?
20:44 particle that probably doesn't work, but i don't know that macro well enough
20:45 jonathan Pretty sure that kinda thing doesn't work.
20:46 particle rw = !ro should work though
20:46 jonathan I'm also not sure if I should be returning a PMC rather than an INTVAL - one of Bool::True or Bool::False
20:47 jonathan Yeah, coulda done in that way...just like to be explicit about exactly what will be returned.
20:47 particle probably should be a Bool
20:47 jonathan Yeah
20:47 jonathan pmichaud: readonly and rw methods on a Scalar should return a Bool?
20:48 pmichaud I don't know for sure.
20:48 jonathan :-)
20:48 Zaba joined #parrot
20:48 particle i think those methods are asking a boolean question
20:48 particle you should get a boolean answer
20:48 pmichaud normally I'd say yes, but    :a    is the same as :a(1)
20:48 pmichaud and :!a is the same as :a(0)
20:49 pmichaud so for some things our "boolean" interpretations are still 1 and 0
20:49 particle perhaps that should be :!a is same as :a(Bool::False)
20:49 particle or, :a(+Bool::False)
20:50 pmichaud well, :a(+Bool::False)  is the same as :a(0)
20:50 jonathan I'm pretty sure the synopsis explicitly says 1 or 0 for colonpair syntax.
20:50 particle that gets rid of some magic numbers from the spec
20:50 pmichaud yes.  I started to switch colonpairs to use Bool::True and Bool::False, but then noticed the synopsis said 1 and 0
20:50 jonathan It wasn't what I'd have guessed, but generally I just implement what the spec says. :-)
20:52 davidfetter re
20:52 pmichaud same here. :-)
20:52 davidfetter i just got a talk slot at YAPC::NA
20:52 davidfetter (not on parrot)
20:52 davidfetter anybody know where i can find some crash space at this late date?
20:53 pmichaud there are still rooms at YAPC::NA
20:53 pmichaud a message just went out about that.
20:53 particle what mailing list aren't i on?
20:53 * davidfetter didn't get that
20:53 particle i haven't heard any yapc news
20:54 pmichaud http://conferences.mongueurs.net/yn2008/news/198
20:54 pmichaud I have the yapc news in my RSS aggregator (Google Reader)
20:54 sjansen joined #parrot
20:57 davidfetter the parrot hack thing is the weekend before, right?
20:58 jhorwitz davidfetter: yes.  what are you talking about?
20:58 davidfetter DBI-Link
20:58 davidfetter and the stuff inside pg the crew and i are doing to make it better
20:59 davidfetter it's written in pl/perlU
20:59 jhorwitz nice
20:59 jhorwitz we will have many beers.  :)
20:59 davidfetter mmm...beers
20:59 * davidfetter hopes to hit up some of that chicago music scene
21:06 dalek r28118 | jonathan++ | trunk:
21:06 dalek : [rakudo] Make us able to use role names as type constraints again. We may have to revisit whether we want to register a Role proto at some point in the future; this gets things fixed for now.
21:06 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28118
21:11 jhorwitz pmichaud: ping
21:12 pmichaud pong
21:12 jhorwitz metaclass question
21:12 Zaba joined #parrot
21:12 pmichaud .WHAT ?
21:12 purl .WHAT is, like, like blessed
21:12 jhorwitz i was using Protomaker to make generic parrot objects available to perl6.  doesn't work now -- is there an easy way to make P6Object do the same?
21:13 pmichaud yes
21:13 pmichaud ummmmm.
21:13 jhorwitz :)
21:13 pmichaud try  P6metaobject.register('MyClass')
21:14 jhorwitz should i create the class w/ new_class as well?
21:14 jhorwitz or leave as is
21:14 pmichaud if the class already exists, don't (re-)create it with new_class
21:14 jhorwitz ok
21:14 pmichaud if you want to use new_class to create the class, that works though.
21:14 pmichaud did you see my blog post about P6object ?
21:15 jhorwitz yes, particle pointed me to that
21:15 jhorwitz worked with it til i got confused.  :)
21:17 jhorwitz $P0.'register'('Apache::RequestRec') gives Null PMC access in get_string() at runtime/parrot/library/P6object.pir:306
21:18 jhorwitz gotta run soon, but i can do some more snooping later tonight.
21:20 japhb joined #parrot
21:20 cotto-work .HOW?
21:21 * jhorwitz wonders .WHY?
21:21 Auzon .WHO is on :first?
21:24 pmichaud is Apache::RequestRec a Parrot class?
21:24 dalek r28119 | pmichaud++ | trunk:
21:24 dalek : [rakudo]:
21:24 dalek : * Bring the grammar a bit closer to STD.pm by using <.eat_terminator>
21:24 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28119
21:24 pmichaud and is it 'Apache::RequestRec'  or  ['Apache';'RequestRec']   ?
21:24 jhorwitz pmichaud: ['Apache'; 'RequestRec'] is
21:24 pmichaud ahhhhh
21:25 jhorwitz i read that it handles :: for me, but obviously this has clued you into something...
21:25 pmichaud well, P6object splits '::'  for the protoobjects, but it doesn't rename the class.
21:25 pmichaud however, you can do
21:25 pmichaud $P0 = get_class ['Apache';'RequestRec']
21:25 pmichaud $P1.'register'($P0)
21:26 pmichaud i.e., pass the class object itself instead of a string name representation
21:26 Zaba_ joined #parrot
21:26 pmichaud but I should get 'Apache::RequestRec' to dtrt and split if needed.
21:27 pmichaud I wonder if using P6object would now make it easy to get PGE::* and PAST::* to be  ['PGE';*] and ['PAST';*]
21:27 pmichaud instead of the string constant names.
21:28 pmichaud that would make for a very nice consistency.  :-)
21:28 jhorwitz closer, but now i get: Method 'item' not found for invocant of class 'Apache;RequestRec'
21:28 jhorwitz while evaling the perl6
21:29 pmichaud I should probably add that to P6object
21:30 jhorwitz i have to run -- msg me if you have something else for me to try.  thanks pm.
21:35 jonathan pmichaud: If you're doing some inline PIR, is there a way to say %r is an integer register?
21:44 dalek r28120 | jonathan++ | trunk:
21:44 dalek : [rakudo] We should only initialize scalars with protoobjects; if it has a type that is a role or a constraint, it's just a Failure object.
21:44 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28120
21:45 teknomunk joined #parrot
21:46 pmichaud jonathan: yes, by passing a signature.
21:46 pmichaud :inline(" %r = add %0, %1 "), :signature("III")
21:46 pmichaud %r, %0, and %1 are all I registers
21:47 pmichaud (the 0 and 1 arguments get coerced to I registers if they aren't already.)
21:47 pmichaud (%r becomes a unique I register that is the result of the node.)
21:48 jonathan Ah!
21:48 jonathan Neato, I'll go tidy my last patch. :-)
21:48 pmichaud even better, we can add 'isa' to the set of pirops
21:49 pmichaud then it can be  :pirop(isa)
21:49 pmichaud and you don't need the :inline at all.
21:49 pmichaud or the casts.
21:49 jonathan Where'd I do that?
21:49 jonathan In PCT somewhere?
21:50 pmichaud yes, in src/PAST/Compiler.pir
21:50 pmichaud add an entry for    piropsig['isa'] = 'IP~'
21:50 jonathan hmmm...I did
21:50 jonathan PAST::Op.new(
21:50 jonathan :inline("    %r = isa %0, 'P6protoobject'\n"),
21:50 jonathan :signature('IP'),
21:50 jonathan $type
21:50 jonathan ),
21:50 jonathan And got
21:50 jonathan Method 'signature' not found for invocant of class 'PAST::Op'
21:51 pmichaud oh, maybe it's piropsig
21:51 Limbic_Region joined #parrot
21:51 pmichaud :piropsig
21:51 pmichaud that's probably it.
21:51 Limbic_Region pmichaud - unless things have changed yesterday, parrot fails to build on Win32/MinGW due to PGE
21:51 Limbic_Region and
21:51 Limbic_Region Win32/Cygwin hangs forever in the rakudo spectest
21:51 pmichaud "parrot fails to build due to PGE"  usually means you need to check out a fresh copy of Parrot.
21:52 Limbic_Region nope
21:52 pmichaud I.e., it's not a PGE bug, it's just that PGE is the first parrot program that runs in the build.
21:52 Limbic_Region I always do a realclean
21:52 moritz Limbic_Region: that loop is a known issue with utf8 parsing
21:52 pmichaud not realclean.
21:52 jonathan Heh, piropsig ain't it either. :-)
21:52 pmichaud fresh checkout.
21:52 Limbic_Region why would I need to do a fresh checkout?
21:52 pmichaud we don't know.
21:52 pmichaud but realclean isn't real clean for some reason.
21:52 moritz Limbic_Region: 'make fulltest' for a non-hanging test
21:52 Limbic_Region that makes little sense since I don't do anything other than build parrot and run the rakudo test suite
21:52 Limbic_Region thanks mortiz
21:53 pmichaud Limbic_Region: agreed.  But you're not the first person to report this problem, and in each case a fresh checkout has solved it (where 'make realclean' didn't).
21:53 moritz Limbic_Region: tools/update_passing_test_data.pl circumvents the problem by deleting the looping test files :/
21:54 * Limbic_Region debates isolating what isn't cleaned in realclean that makes a fresh checkout work
21:55 moritz Limbic_Region: check out a fresh copy, and do a diff
21:55 moritz between the tainted but real-cleaned and the fresh checkout
21:55 Limbic_Region yeah, I knew what you meant
21:55 moritz perhapse delete all .svn dirs first
21:56 Limbic_Region I am just debating on if I feel like doing so is all
21:57 pmichaud jonathan: oh, I was wrong.  I don't have signatures on :inline nodes yet
21:57 pmichaud however, you can do
21:57 pmichaud :pirop('isa IP~')
21:57 pmichaud (no inline)
21:58 jonathan Just added it to PAST compiler
21:58 pmichaud and that will generate an 'isa $Ix, $Px, *'  instruction
21:58 pmichaud or you can add it to PAST compiler :-)
21:58 bacek morning everybody
21:58 * bacek impressed by backlog
22:01 pmichaud jonathan: the problem with   my $type_pir := " %r = new %0, %1\n setprop %r, 'type', %2\n";   is that it won't work if we switch $?PERL6SCALAR back to 'Failure'
22:01 Zaba joined #parrot
22:01 jonathan pmichaud: Hmm. True.
22:01 dalek r28121 | jonathan++ | trunk:
22:01 dalek : [pct] Add isa to known pirops.
22:01 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28121
22:02 jonathan Are we wanting to do that, now we've got mutables passing all tests anyway?
22:02 pmichaud that's not necessarily bad, though, if we're very comfortable that Perl6Scalar will be permanent.
22:02 pmichaud we can leave it that way for now.  Maybe fix the comments at the top so that we know what else to change .
22:02 jonathan I suggest let's leave it in for a week or two and see how it goes with Perl6Scalar.
22:02 pmichaud okay.
22:02 jonathan And yes, comment is good idea. Will do now.
22:03 particle Limbic_Region: pmichaud: the realclean/new co problem is something in c2str.pl
22:04 pmichaud ah yes, of course.
22:04 particle i suspect that if you delete all_cstring.str it may be cleaned up
22:04 particle not sure if realclean deletes that file
22:05 particle i can't find 'all_cstring' in Makefile anywhere
22:05 dalek r28122 | jonathan++ | trunk:
22:05 dalek : [rakudo] Tidy up use of isa thanks to adding isa as a known pirop in PCT.
22:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28122
22:05 jonathan OK, I think I'll probably leave it there for today and write some report to post.
22:05 pmichaud sure.
22:06 jonathan Didn't get much done on roles, as I'd hoped.
22:06 pmichaud oh, for future reference, in piropsig we keep the pirops in alphabetical order.
22:06 jonathan Oh. Oops. :-)
22:06 pmichaud (but I'll fix that later, if you don't)
22:06 pmichaud "Free karma!"
22:09 dalek r28123 | jonathan++ | trunk:
22:09 dalek : [pct] Patch for the preservation of alphabetical ordering of pirops.
22:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28123
22:09 jonathan Free karma indeed.
22:09 jonathan karma jonathan
22:09 purl jonathan has karma of 630
22:09 dalek r28124 | particle++ | trunk:
22:09 dalek : [rakudo] improve eval_lives_ok and eval_dies_ok, courtesy of Ronald Schmidt <ronaldxs@software-path.com>
22:09 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=28124
22:09 jonathan Geck, I'm not even four figures yet.
22:09 Zaba_ joined #parrot
22:11 pmichaud here's a nice competition:
22:11 pmichaud karma particle
22:11 purl particle has karma of 1343
22:11 pmichaud karma pmichaud
22:11 purl pmichaud has karma of 1345
22:11 bacek karma c
22:11 purl c has karma of 6957
22:11 bacek :)
22:11 particle ooh
22:11 particle i'd better do some commits!
22:11 davidfetter joined #parrot
22:12 bacek particle, go for it! :)
22:12 bacek But there is some successor of "C Language" that helps 'c' a lot :)
22:13 davidfetter anybody got examples of using parrot's stuff to replace lexx/yacc ?
22:13 davidfetter as in, replacing it in an extant code base
22:14 * bacek wanders can we generate something else from PAST/POST but PIR.
22:14 Zaba joined #parrot
22:14 moritz davidfetter: do you want to parse stuff with PGE?
22:15 davidfetter moritz, well, i have fuzzy, inchoate ideas about removing some of postgres's grammatical pain using parrot somehow
22:15 davidfetter "fuzzy, inchoate" is perhaps generous ;)
22:17 moritz davidfetter: but PGE doesn't emit C atm, so you'd have a parrot depency
22:17 davidfetter hrm
22:17 davidfetter that would be a sticking point
22:17 moritz btw I think that SQL is intrinsically evil to parse
22:17 moritz it's just not structured, really
22:17 davidfetter meh
22:18 davidfetter i think part of its evilness is the hardness from tools like yacc to see more than one step forward
22:21 moritz but why? LR[1] = LR[k] for k > 1
22:27 cotto-work davidfetter, I'm looking at doing something like that with PHP's grammar, but I'm currently at the "wtf have I gotten myself into" stage
22:28 particle oh, that can last a long time.
22:28 particle beer helps.
22:29 cotto-work I'm thinking it will.
22:31 cotto-work but not at work
22:35 davidfetter cotto-work, i don't think SQL's grammar is quite as insane as php's
22:35 davidfetter for one thing, there's EBNF for it up through SQL:2008
22:36 jonathan pmichaud: How hard is / have you pondered parsing adverbs for operators?
22:36 jonathan for 1..100 :by(2) -> { }
22:36 davidfetter picture a dim bulb flickering over my head
22:37 davidfetter so 'by' would be the adverb for '..' ?
22:37 jonathan davidfetter: Yes.
22:38 pmichaud I've pondered adverbs only a little bit.
22:39 pmichaud I think we need protoregexes to make that work reliably.
22:39 jonathan OK, but a protoregex dependency rather than an LTM one. That's a nice thing. :-)
22:41 IllvilJa joined #parrot
22:41 pmichaud I've been doing a lot of thinking about ltm in my "off" time -- I think it might not be as difficult as initially feared.
22:41 jonathan A lot of Perl 6 stuff keeps ending up this way... :-)
22:43 pmichaud actually, might not even need protoregex, now that I look at it some more.
22:43 pmichaud but do need some introspection on operator precedence parsing
22:43 pmichaud (which we also need to get   $a = 1, $b = 2   to parse properly)
22:45 pmichaud looks like STD.pm might be incomplete there, though.
22:45 jonathan I think STD.pm is missing some stuff relating to does also.
22:45 jonathan And property declaration
22:45 jonathan my int property blah;
22:45 pmichaud could be. I know it was missing trait_auxiliary:does
22:46 pmichaud (at least I _think_ it was trait_auxiliary.  I'll have to check the irc logs.)
22:47 jonathan If you can confirm it is a trait_auxiliary, I'll do the grammar clean-ups etc next time around.
22:47 davidfetter joined #parrot
22:47 Whiteknight in RT, how do I indicate when one ticket relies on a previous one?
22:47 pmichaud "Links"
22:48 Whiteknight thanks!
22:50 pmichaud jonathan:  (does)   http://irclog.perlgeek.de/​perl6/2008-05-31#i_321390
22:50 pmichaud audreyt pmichaud: "does" is parsed as trait_auxiliary, mentioned around S12:1436 (or did I miss what you were asking about?)
22:51 pmichaud and TimToady confirmed that a bit later, although I forget where.
22:52 pmichaud afk, family stuff.
22:55 cxreg joined #parrot
22:58 cotto-work protoregexes
22:58 cotto-work protoregex?
22:58 * davidfetter tries to picture, "the ascent of regex"
22:59 davidfetter maybe with a kleene star on the left side...
23:08 TimToady jonathan: I'm not sure I believe in property declarations anymore, given that I'd forgotten about them myself...
23:09 jonathan TimToady: OK, well, I'll leave it to you to decide whether to drop it from S12 or not. Were my ramblings about parametric types along the right lines?
23:10 jonathan (A bit earlier in the backscroll)
23:10 cotto-work jonathan, does one of your presentations explain protoregexes?
23:11 TimToady I think only the [] can officially be part of the role name
23:11 TimToady iirc the () was only an initial value
23:11 jonathan cotto-work: No, because I haven't come up with a good way to explain them yet... :-)
23:11 jonathan TimToady: Can you have multiple type parameters inside the []?
23:11 TimToady yes
23:12 jonathan And can you say class Dog does Pet[:PetFood(PedigreeChum), :WalkingMechanism(Leash)) { ... }
23:12 TimToady it's just a regular signature on some level
23:12 jonathan erm
23:12 particle the name "protoregex" makes them sound like undefined regexes, somewhat like "protoobjects" are undefined objects
23:12 jonathan With the missing ] in there
23:12 jonathan class Dog does Pet[:PetFood(PedigreeChum), :WalkingMechanism(Leash)] { ... }
23:12 TimToady if it matches the signature, sure
23:13 gmansi joined #parrot
23:13 jonathan OK, but you are only allowed one value in the (...)?
23:13 TimToady has to be something coercable, I think
23:14 jonathan Sorry, I'm not sure what you mean by that.
23:14 tetragon joined #parrot
23:14 jonathan From S12: role Pet[::ID;; $tag] {
23:14 jonathan Here $tag is just a variable. How do we initialize this?
23:15 TimToady Pet[MyId, $mytag]
23:15 TimToady just like extra args in a multi call
23:16 TimToady it's the same ;;
23:16 jonathan OK, or as named Pet[:ID(MyId), :tag($mytag)] I guess
23:17 jonathan And should I read:
23:17 jonathan "A role applied with does may be parameterized with an initializer in parentheses, but only if the role supplies exactly one attribute to the mixin class"
23:17 jonathan To mean that you can only use the does RoleName($x) form for runtime mix-in?
23:18 jonathan Or you can do it with a class to, subject to the role having just one attribute?
23:18 jonathan s/to/too/
23:18 TimToady at the time I intended it only for run time
23:18 jonathan And now? ;-)
23:19 TimToady my brane isn't working well enough right now to decide anything critical  :/
23:19 jonathan OK.
23:20 jonathan I think you've given me enough to hurt my head over implementing. :-)
23:20 jonathan Are you planning for "but" to stay pretty much as is?
23:21 TimToady er, how is it?  :)
23:21 jonathan $a = 0 but answer(42) is basically $a = ($anonymous = 0) does answer(42);
23:21 jonathan for 0 but True style things.
23:23 TimToady yes, "but" implies a copy, which is done by your assignment there
23:23 TimToady except we might need to force clone on non-value types
23:24 jonathan OK, makes sense.
23:25 jonathan Alright, thanks for the clarifications. I'll leave off your branes a bit. :-)
23:25 jonathan And should probably sleep sometime soonish...
23:27 slightlyoff joined #parrot
23:28 slightlyoff left #parrot
23:32 * japhb ponders why it is that Perl 6 is attracting mathematician zombies ....
23:44 jonathan Progress report: http://use.perl.org/~Jonath​anWorthington/journal/36600
23:45 jonathan And now I will sleep. Night, all.
23:47 davidfetter 'night, jonathan
23:50 bacek_ joined #parrot
23:55 clunker9_ joined #parrot

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

Parrot | source cross referenced