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