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