Parrot 0.6.2 "Reverse Sublimation" Released | parrotcode.org/ | 19/674 new/open tix
Set by moderator on 20 May 2008.
00:39 particle joined
jonathan PCT++ # nearly have my toy language for Sweden presentation together 00:47
chromatic openjdk.java.net/projects/mlvm/jvml...index.html 00:49
jonathan Slightly random that they have a picture of the great wall of China on that page... 00:50
chromatic: You thinking Perl 6 on JVM? 00:52
Or just checking out what tools others are using to build compilers?
Juerd jonathan++ # I'm reading the 17 May post on rakudo.org 00:53
jonathan: I really like how these articles don't just show what was done, but also teach Perl 6. 00:54
jonathan Juerd: That's somewhat deliberate. :-) 00:55
Juerd I suspected that :) 00:56
chromatic jonathan, Charlie Nutter suggested that he wanted other VM weenies to attend. 00:57
jonathan Aha, OK. 00:58
OK, sleep time... 01:20
01:43 Andy joined 01:57 rdice joined 02:05 kid51 joined
pmichaud Juerd: ping 02:10
02:23 Zaba joined
DietCoke yawns 02:41
japhb I resemble that remark
DietCoke getting the ability to work from home is a double edged sword. :|
japhb YES
DietCoke on the plus side, I'm pretty sure this time is billable. =-) 02:44
japhb That's definitely nice ... 02:54
chromatic japhb's contributor agreement arrived 02:58
japhb wheeee 02:59
DietCoke did we actually solict one? ;) 03:00
japhb DietCoke: at least two committers (maybe more? don't know everyone's status) said I should apply for commitbit, so there you go 03:01
chromatic If he doesn't break the build or step on Tewk's changes or make big architectural changes without some form of review, +1 from me 03:05
You know, the usual.
DietCoke gives chromatic a diet cookie. 03:07
japhb gives chromatic some single-origin dark chocolate 03:08
DietCoke you suck up.
japhb DietCoke: never hurts ...
Is ordinary 'make test' still the right test variant to run prior to commits, as per docs/project/committer_guide.pod, or is that out of date? 03:11
DietCoke at least make coretest. 03:12
(which is faster and doesn't run all the config steps)
s/steps/tests/
japhb Is coretest a strict subset of test?
DietCoke b'leev so
japhb k
DietCoke there are some things that require 'test' to hit, but it's mainly if you mess with adding opcodes, pmcs, or config steps. 03:16
IIRC.
japhb fair enough
03:17 teknomunk joined
japhb Hmmm, coretest skips configure, examples, doc, manifest, developing, and JSON tests. 03:26
Given it's 194 seconds already on this box and test is 319, both are approximately "take a stretch break", so not worth running just coretest for me I think. 03:27
Speaking of DEVELOPING, shouldn't those two release numbers be bumped? At least, that's how I'm reading the comments at the bottom of the file. 03:29
DietCoke DEVELOPING should be the number of the last released version, IIRC. 03:33
hopefully c updated it.
japhb It shows two revs. According to the notes, they are supposed to be the last release version, and the next-to-be-released version. But right now, showing 0.6.1 and 0.6.2. 03:34
... unless I'm misreading the notes 03:35
03:37 Zaba joined
DietCoke yes. this release is 0.6.2 03:39
pmichaud just look at the log on the file and see when it was last updated :-)
DietCoke though you're right, those descriptions seem to be inaccurate.
japhb DietCoke: the reason I believe the descriptions instead of the release numbers above, is that DEVELOPING is deleted during tarball packaging ... so there's no point in having information in there that is out of date. 03:40
... Because someone using a release tarball (and thus perhaps interested in old history) will never see that file 03:41
DietCoke japhb: yes, but we're currently used to having it lagged by one.
So we either need to change our expectations (fix the file) or yours (fix the descriptions.) 03:42
But we should probably do one or the other. Feel free to open a ticket with your case. =-)
japhb I vote for fixing the file, because then it becomes useful ... developers then know when the next release will be. :-)
fair enough
pmichaud urg 03:43
japhb pmichaud: ?
DietCoke japhb: when the next release will be?
pmichaud ...is there no way to determine if a class has a method of a given name, either itself or via inheritance?
DietCoke (we don't know at release A what release B will be numbered. 03:44
japhb DietCoke: doesn't mean we can't put a placeholder in, and pick a date
DietCoke (the date's typically known) 03:53
see: docs/project/rel*
which also has the instructions for updating it which also probably need an update.
japhb RT sent
04:01 Alias joined
Alias Juerd: Ping? 04:01
04:03 tetragon joined
japhb Anybody about that uses git-svn for parrot work? 04:13
japhb is having to give himself a crash course because of the Debian SVK snafu 04:14
dalek r27692 | pmichaud++ | trunk: 04:20
: [p6object]:
: * Turns out that when checking for a 'new' method, we have to
: check all of the mro classes.
diff: www.parrotvm.org/svn/parrot/revision?rev=27692
ank japhb: I started playing with it yesterday, looks very nice 04:33
Alias debian svk snafu? 04:37
04:43 wolv joined
chromatic_FEED_ME Debian unstable includes Perl 5.10 but doesn't work with SVK or something. 04:43
Alias ah 04:45
wait... in unstable
oh wait, snafu
I somehow read debacle :)
bacek_ found bug Parrot_quicksort
04:45 particle[ventus] joined
bacek_ pastebin.com/d15ced157 04:45
04:45 particle[ventus] left
bacek_ This implementation of List.sor using FPA. 04:45
With sample code and backtrace from GDB on crash. 04:46
List.sort
dalek r27693 | pmichaud++ | trunk: 04:57
: [p6object]:
: * Allow p6object to create classes named via arrays
: (e.g., things like ['Foo';'Bar']).
diff: www.parrotvm.org/svn/parrot/revision?rev=27693
r27694 | pmichaud++ | trunk: 05:20
: [p6object]:
: * Convert PCT, PGE, and NQP to all use the new P6object.pbc library
: instead of Protoobject.pbc.
diff: www.parrotvm.org/svn/parrot/revision?rev=27694
r27695 | pmichaud++ | rakoo: 05:24
: Remove rakoo branch to easily re-sync with trunk.
diff: www.parrotvm.org/svn/parrot/revision?rev=27695
05:25 barney joined
dalek r27696 | pmichaud++ | rakoo: 05:26
: Re-create rakoo branch from fresh trunk, this branch will
: be used to migrate rakudo to the P6object library.
diff: www.parrotvm.org/svn/parrot/revision?rev=27696
05:46 bacek_ joined
bacek_ pmichaud: ping 05:46
pmichaud bacek_: pong 05:47
bacek_ what about FPA sort bug? Or it is my bug?.. 05:48
pmichaud I haven't had a chance to look at it.
bacek_ pastebin.com/d15ced157
pmichaud: ok.
I can wait :)
pmichaud there's no 'infix:lte' 05:49
you probably mean 'infix:leg'
bacek_ pmichaud: just a sec 05:50
pmichaud also, you may need get_hll_global 'infix:leg'
otherwise it'll look for 'infix:leg' in the current namespace ('List')
bacek_ pmichaud: Ho! 05:51
pmichaud: you genius!
It works!
copy to
sort
copy from
done
1 2 3 4 a b c d
bacek_ dancing around table
cotto_home automatic? 05:53
purl hmmm... automatic is extremely lame
cotto_home nopaste, automatic is youtube.com/watch?v=tIRCzbBB99E 05:54
no automatic is youtube.com/watch?v=tIRCzbBB99E
Juerd pmichaud: pong 06:11
pmichaud Juerd: lot of apache2 processes running on feather -- a lot more than I would expect.
it looks to me as though some of them never die 06:12
not sure why yet -- haven't tracked that down.
but since MaxSpareServers is set to a relatively low value -- we shouldn't see this many running. 06:13
bacek_ my @a = ('a', 4, 'c', 2, 'b', 1, 'd', 3); 06:14
say ~@a;
@a.sort();
say ~@a;
my @b = sort { $^b <=> $^a }, @a;
say ~@b;
$ ../../parrot perl6.pbc sort.pl
a 4 c 2 b 1 d 3
1 2 3 4 a b c d
4 3 2 1 d c a b
Ho. pmichaud is my hero
pmichaud bacek_: (nopaste is my hero :-)
bacek_ pmichaud: ok-ok :)
pmichaud Juerd: if you could temp grant me sudo privileges, I might be able to trck down the apache2 processes a bit further 06:15
bacek_ just little overexcited :)
pmichaud bacek++
bacek_ pmichaud: this FPA based sort
06:17 uniejo joined
Juerd pmichaud: You now have sudo access 06:30
06:30 grim_fandango joined
Juerd pmichaud: And thanks 06:30
pmichaud sure. I'm going to make a minor change to apache2.conf (to enable /server-status to my workstation) and reload it and see what's going on. 06:31
I'll make backups of any files I change.
(but that's the only one I expect to change w/o checking with you first) 06:32
06:39 Zaba_ joined 06:45 iblechbot joined
pmichaud okay, done. I'll keep an eye on apache2 throughout tomorrow and let you know if I find anything. 06:46
06:48 AndyA joined
dalek r27697 | fperrad++ | trunk: 07:38
: [Lua]
: - bytecode translation : refactor
diff: www.parrotvm.org/svn/parrot/revision?rev=27697
07:50 leo joined
dalek r27698 | pmichaud++ | trunk: 08:25
: [p6object]:
: * Refactor handling of parent class addition a bit, to simplify things
: for rakudo.
diff: www.parrotvm.org/svn/parrot/revision?rev=27698
08:25 zOrK joined
bacek_ pmichaud: ping. 08:37
jonathan morning all 09:07
purl morning, jonathan
09:14 ruoso joined 09:22 jjore joined
jonathan pmichaud: (...is there no way to determine if a class has a method of a given name, either itself or via inheritance?) - the 'can' opcode/method should do this 09:24
10:04 wknight8111 joined
bacek jonathan, evening... 10:06
jonathan bacek: Hi there :-) 10:08
bacek jonathan, can you review second patch from rt.perl.org/rt3/Ticket/Display.html?id=54514? 10:09
is it "right way" for workaround about broken inheritance? 10:10
jonathan bacek: .sub '$!sort' :method 10:17
Just !sort if you want to make it private
No $
bacek jonathan, O! New knowledge about "dark magick" :) 10:18
jonathan Other than wondering if Perl 6 sort really is in-place, it looks good. 10:20
I thought it returned a sorted copy of the list? 10:22
moritz it should
jonathan bacek: But that's only a small change. :-)
bacek jonathan, hmm... I don't fully understand "'=sort' mutator form" 10:23
jonathan bacek: That's a form that would be called, as an optimization, when writing for example @stuff .= sort(); 10:24
However, Rakudo doesn't know about this yet, I don't think. 10:25
dalek r27699 | jonathan++ | trunk:
: [rakudo] Implement => infix operator, for constructing more complex pairs. Make them work in calls when you just have a string literal there.
diff: www.parrotvm.org/svn/parrot/revision?rev=27699
moritz jonathan: without the spaces please
jonathan moritz: It works without the spaces too?
moritz jonathan: I think method calls may not have spaces at all
jonathan: you *have* to write it as @stuff.=sort 10:26
jonathan Normally, they may not.
But in STD.pm
token infix:sym<.=> ( --> Item_assignment) { <sym> {*} }
moritz so infix:<.=> is an alias for the method call .= ? 10:27
ok, I take back everything I said ;9
jonathan Yes; and it allows the spaces :-)
Otherwise you'd not be able to write
my Dog $fido .= new();
It'd have to be without the spaces. 10:28
moritz ok
thanks for the clarification
jonathan np
Do you know if you're allowed to do things like foo($name => $value) when calling?
Or is only a literal string allowed on the left hand side of =>? 10:29
avar no, the lhs of => is a scalar
jonathan If you're allowed more than a literal string, we have a problem at the moment, 'cus Parrot don't support that right now. :-(
avar or Any, probably
because the lhs is a hash table entry or something?
jonathan OK, in the general case, yes, it just makes a Pair
Because in Parrot Intermediate Code you're only allowed a string literal for the name. 10:30
I've made 'foo' => 42 work now
bacek jonathan, pastebin.org/37501
jonathan, this is reworked sort 10:31
jonathan bacek: Looks good
purl O_O
jonathan And bonus points for tail call usage ;-)
bacek rt.perl.org/rt3/Ticket/Display.html?id=54312 and this this 5-days old infix:=> implementation :)
avar jonathan: Yes why is that? Because some parrot object is being used for it? 10:32
jonathan avar: Why are you only allowed a string literal at Parrot level, you mean?
I don't have a good answer to that, other than, that's the way it is. 10:33
avar If the lhs needs to be a string literal but not the rhs that would suggest you're using some parrot datatype that is limited in that way.
jonathan Yes, Parrot's signatures only allow a string constant there.
That's the limitation.
If you're allowed to write foo($name => $value), though, then I think Parrot's going to have to change to support non-constant names for named parameters. 10:34
avar Ah, so parrot calling conventions for subroutines are being used directly. That answers my question.
jonathan avar: Yes, correct.
avar Yes, either that or pass a Perl 6 object that describes the arguments
jonathan Such as a Capture. :-) 10:35
Unfortunately, doing so would rather harm our ability to interoperate with other languages on Parrot.
bacek: That was similar to what I first thought of doing; unfortunately, it doesn't work out with writing calls. 10:40
bacek: Is that sort patch ready to apply? 10:46
bacek jonathan, I think so. 10:47
jonathan OK. Is there a ticket for it?
bacek New version attached to rt.perl.org/rt3/Ticket/Display.html?id=54514 10:48
jonathan bacek: Does this work for you: 10:53
my @a = (7,1,8,3,2); my @b = sort { $^a <=> $^b }, @a; say @b;
I'm actually getting segfaults here from that! 10:54
bacek: Also, 10:59
my @a = (7,1,8,3,2); my @b = @a.sort({$^a <=> $^b});
too many arguments passed (2) - 1 params expected
bacek jonathan, just a sec... min... I rebuilding parrot from scratch.
jonathan Oh, did you support passing a comparer yet? 11:00
bacek about second example: no. It will not work.
jonathan, comparer passing works only for sort {}, @list
jonathan OK 11:02
bacek I still learning parrot... My version with .sub 'sort' :multi(_) :method in list just always complains about wrong number of arguments 11:03
jonathan bacek: Maybe make it an optional parameter? 11:06
:optional
purl i think :optional is a flag to an argument
bacek jonathan, ok. I'll read pdds once again to figure how it should work 11:09
jonathan OK 11:11
bacek bacek@icebolt:~/src/parrot/languages/perl6$ cat sort2.pl
my @a = (7,1,8,3,2); my @b = sort { $^a <=> $^b }, @a; say @b;
bacek@icebolt:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc sort2.pl
12378
jonathan I'm curious if
my @a = (7,1,8,3,2); my @b = sort { $^a <=> $^b }, @a; say @b; 11:12
my @a = (7,1,8,3,2); my @b = sort { $^a <=> $^b }, @a; say @b;[6~[6~[6~[6~[6~[6~[6~
...oops
If that works for you
Oh, you just tried it.
Hmm
bacek jonathan, rt.perl.org/rt3/Ticket/Display.html?id=54474 :)
jonathan, I've fixed cmp before :) 11:13
jonathan Ah, and that patch is unapplied?
bacek jonathan, yes
moritz that's one of the things that make parrot development less fun 11:14
jonathan Latest version attached to the ticket is one that should be applied, right? 11:15
bacek jonathan, yes. But it is not reviewed. 11:16
jonathan Just looked over it, looks good.
bacek jonathan, but according to Coke and chromatic it is right way to do
jonathan Not sure about the change to freeze though.
That's the only bit I'm a tad unsure about applying. 11:17
The rest, looks good to me.
Applied it locally, apart from the freeze part. Testing it. 11:18
bacek bacek@icebolt:~/src/parrot/languages/perl6$ cat sort3.pl
my @a = (7,1,8,3,2); my @b = @a.sort({$^b <=> $^a}); say ~@b;
bacek@icebolt:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc sort3.pl
8 7 3 2 1
jonathan, :optional really works! 11:19
I'll create new patch for 'sort' :)
11:21 braceta joined
jonathan Yay! 11:22
moritz: You mean dealing with the segfaults makes it less fun?
moritz jonathan: no, that patches usually take quite some times before getting applied 11:23
jonathan Ah. 11:24
bacek have to deal with kids... It's a bed time
11:24 masak joined
moritz jonathan: for example I submitted a patch to make languages/PIR/ compile again, which can easily be verified 11:25
I can understand that patches to the core are thoroughly revied, but things like that should be easy and fast to do 11:26
masak does rakudo support `use v5`? 11:27
does it default to perl 5 if no version is given?
jonathan masak: No and no, for the moment. 11:28
masak but we're heading there?
moritz I think it's far down the roadmap
masak I mean, at least it's on the roadmap, right? 11:29
jonathan moritz: Agree that things like that likely can be applied nice and quickly, yes. In fact, people working on stuff in languages/ should be able to get commit bits after a few patches anyway.
masak I don't need it now, just curious whether it will be there
and how
jonathan masak: If it's in the spec, then yes, it will be there eventually. 11:30
masak that means that every compliant distro of perl 6 will also include perl 5
jonathan The spec seems to suggest it will be that way... 11:31
moritz masak: yes
masak will that be in the form of a parrot project, or in the form of the original perl 5 codebase?
moritz although I could imagine that 20 years after Perl 6 is being deployed we might get rid of that dependency
masak one can only hope 11:32
jonathan masak: Probably original Perl 5 embedded in Parrot, initially.
masak what does that mean? can it do `use v5; { use v6; ... }`? 11:33
moritz you will 11:34
masak ok, good
dalek r27700 | jonathan++ | trunk: 11:35
: [core] Make Integer PMC call SELF.get_integer() rather that look straight at the data in various places, so as to make subclassing work properly. Patch courtesty of Vasily Chekalkin <bacek@bacek.com> (bacek++).
diff: www.parrotvm.org/svn/parrot/revision?rev=27700
11:39 ank joined 11:40 braceta joined
dalek r27701 | jonathan++ | trunk: 11:40
: Give bacek an entry in CREDITS.
diff: www.parrotvm.org/svn/parrot/revision?rev=27701
r27702 | fperrad++ | trunk: 11:49
: [install]
: - add MIME/Base64.pbc (used by pheme)
diff: www.parrotvm.org/svn/parrot/revision?rev=27702
11:52 bacek joined
bacek hi again 11:52
purl oh, you're back!
bacek purl, damn bot! :)
purl bacek: i'm not following you...
jonathan bacek: Applied your Integer PMC patch, thanks. :-) 11:53
bacek jonathan, thank for applying 'cmp bug'
jonathan Thank you for the patch!
bacek jonathan, wait a little bit with sort.
jonathan Sure, whenever you're ready with it. 11:54
bacek Latest version broke my first test...
I've got Null PMC access in get_bool :(
What is proper way to check :optional argument was passed? 11:56
jonathan But :opt_flag after it 11:57
.param pmc foo :optional
.param int have_foo :opt_flag
Test have_foo for zeroness.
bacek jonathan, thanks. 11:58
pastebin.org/37515 12:00
This version work with my all my tests.
jonathan bacek: OK, great. I have a few local changes that I need to get sorted out and ci'd first, but will take a look in a moment. (Well, after lunch...) 12:01
bacek jonathan, ok. Bon appetite! 12:02
I'll attach latest version to ticket. 12:03
rt.perl.org/rt3/Ticket/Display.html...txn-409824 12:04
jonathan, BTW, I think you can remove 'join' and 'sort' from TODO in List.pir :) 12:14
and 'reduce' too. 12:15
moritz tests his new 'make spectest_regression' 12:17
bacek Question (another stupid one): in which syn described this syntax: my @s = sort { $^a <=> $^b }: @a; 12:23
with colon after sub.
dalek r27703 | jonathan++ | trunk:
: [rakudo] Fix Int cloning.
diff: www.parrotvm.org/svn/parrot/revision?rev=27703
moritz bacek: it's the same as { $^a <=> $^b }.sort(@a); (the thing before the : is the invocant). Either S02 or S12. 12:24
bacek moritz, thanks 12:25
looks like in S06: invokant parameters... 12:26
Is it handled by 'token adverbs' in STD.pm> 12:28
?
moritz doesn't know STD.pm well enough to answer that
bacek yes it is... And it is not handled in current rakudo at all... 12:33
DietCoke drinks a coffee.
bacek just drinks
12:37 gryphon joined
moritz make spectest_regression patch for rakudo sent! 12:38
to perl6-internals, that is
hope that helps jonathan 12:39
12:45 Zaba joined
jonathan returns from myamming a ham sarnie 12:49
moritz: Do we actually pass the tests on that list? 12:53
But - thank you muchly for this patch.
bacek: So that patch is ready to apply? 12:55
bacek jonathan, I think so
moritz jonathan: yes, rakudo passes these tests ( r27698 ) 12:56
jonathan moritz++
moritz you're welcome
jonathan OK, will get these both in when I figure out how to get the first cut of lazy ranges in without breaking stuff that currently works... 12:58
for 1..6 { ... } # actually constructs an interator now
'A'...'Z' works locally too :-)
By iteator I mean, Range object.
masak jonathan++
jonathan But gotta get my @a = (1..6); to do something sensible. 12:59
(Without doing everything that really needs to be done. Yet.)
ank hey, do you guys know what "TRE" is? (i'm reading rakudo.org and it talks about "TRE" as a token matcher) 13:07
moritz ank: it's a regex library 13:08
laurikari.net/tre/
ank cool! thanks
moritz and for perl: search.cpan.org/perldoc?re::engine::TRE
yw
DietCoke wonders why the hell jonathan's email about fixing integer.pmc didn't hit the list. 13:14
jonathan: any reason why you cc'd parrot-porters@perl.org and not perl6-internals@perl.org? 13:15
(just spent 5m getting ready to apply the patch to find it applied. =-)
jonathan DietCoke: I thought parrot-porters was the Right Address for the list now? 13:16
DietCoke it's an alias.
Tene japhb: I use git-svn
DietCoke there's no reason to override the list that RT provides. =-) 13:17
(I'm guessing it got held up for moderation somewhere.)
jonathan I couldn't see the "Toggle cc to ..." 13:18
dalek r27704 | coke++ | trunk:
: Add test to verify cmp works in subclasses of 'Integer', reworked from a
: sample provided by Vasily Chekalkin in RT#54474
diff: www.parrotvm.org/svn/parrot/revision?rev=27704
r27705 | jonathan++ | trunk:
: [rakudo] Really fix Int cloning. D'oh.
diff: www.parrotvm.org/svn/parrot/revision?rev=27705
DietCoke bacek: reworked your initial case as a test and committed that. For bonus points, provide those PIR scripts as failing tests in teh first place. =-)
bacek++
jonathan DietCoke: Strange, I see it now...who knows. :-) 13:19
dalek r27706 | jonathan++ | trunk: 13:20
: [rakudo] Make range objects work as iterators. You can now create them and use them as such. However, we're not ready to make them be created with .. just yet; need to sort out various other bits.
diff: www.parrotvm.org/svn/parrot/revision?rev=27706
bacek DietCoke, clean version of test made by pmichaud... 13:23
jonathan bacek: This sort patch is final one to apply, right?
bacek jonathan, yes.
bacek going to sleep... 13:26
jonathan bacek: Will apply this, thanks.
bacek jonathan, thank.
jonathan Ah, it has a slight bug
Will tweak it. 13:27
bacek BTW, any chances for 'protoregexes' in near future?
jonathan, no way! It's prefect! :)
jonathan pmichaud is planning to work on them in the not too distant future, I believe.
bacek: Unless you try it with my @a = <5 1 7 3>; my @b = sort @a; say @b;
Then it things the array is the comparer. ;-) 13:28
bacek jonathan, yeek... You right. It's only 99% percent perfect :) 13:29
jonathan, so it it should be 2 versions of 'sort' with :multi?
jonathan bacek: Actually, I just check if the comparer is code or not. :-) 13:34
Works.
Will ci. 13:35
13:35 wknight8111 joined
jonathan bacek: It's in. Thanks! 13:37
bacek jonathan, thank for knowledge about "Dark Magick" :) I'll try to implement 'map' better.
dalek r27707 | jonathan++ | trunk:
: [rakudo] Implement sort method and sub. Patch courtesy of bacek++.
diff: www.parrotvm.org/svn/parrot/revision?rev=27707
bacek ok. good night to everyone. 13:38
jonathan goodnight :-) 13:43
moritz: When I do "nmake spectest_regression" it seems to be running everything but the spectests...
13:44 rdice joined
moritz jonathan: are you on windows? 13:47
jonathan: it assumes / as the path separator, my bad 13:48
jonathan moritz: Yes
Ah
moritz jonathan: try to translitare all backslashes by slashes in the grep in line 50 in t/harness 13:49
DietCoke Whoops. Blogger made it a little to easy to post to the wrong blog there. 13:51
apologies if that diet post shows up in anyone's parrot feed. :|
'too'
jonathan moritz: Think I've got a fix that makes it portable. 13:52
It was the slashes issue.
Wow. 13:53
moritz jonathan: and we need a to die if @tfiles is empty, because it means that something is wrong
jonathan: and it also means that t/0*/* is executed 13:54
which is what happened to you
jonathan Ah, yes, good idea.
Added. 13:55
moritz and in root.in a line like this: 13:56
@echo " spectest_regression: Run the tests of the official test suite that are known to pass."
jonathan Yup, added 14:03
dalek r27708 | jonathan++ | trunk: 14:06
: [rakudo] Add spectest_regression makefile target, which only runs tests on a known-to-pass whitelist. The goal is to have make spectest be useful enough not to need this; for now, this way provides highly useful information. Patch courtesy of Moritz Lenz (moritz++), with a couple of platform tweaks by jonathan++ so it works on Windows.
diff: www.parrotvm.org/svn/parrot/revision?rev=27708
DietCoke I know it's a hack, but isn't there a builtin module for file path assembly, and or a parrot config option you can steal it from rather than re-inventing tha particular wheel? (I know it's a really small wheel, though.) 14:09
jonathan moritz++ # thank you thank you thank you!
moritz performs a sweeping bow 14:10
jonathan DietCoke: Probably; I'm sure if a cage cleaner feels strongly enough about it, they'll tweak it. :-) 14:11
OK, back to the hacking. 14:13
jonathan hopes pmichaud is awake soon, since he has questions for him :-)
DietCoke jonathan: hopefully it'll be gone by then. =-)
jonathan Sure, but for now it solves a real problem, so I'm very happy to have it here. 14:15
DietCoke (to be clear, I'm happy it got applied. =-) 14:19
pmichaud pong
cognominal I see that everyone step in jonathan toes for things he has already built in his heads. 14:20
jonathan pmichaud: A few things...
purl a few things are worse than a gecko revolt
cognominal s/heads/head/
jonathan A gecko revolt sounds coool!!
DietCoke ooh, can I have one?
jonathan pmichaud: First, I've put in lazy ranges as iterators. Apart from, I can't use them with .. yet.
er, ranges as lazy iterators 14:21
But they work like that.
Thing is
@a = (3..5); # oh my
Because of course, you can't do @a[1] on an iterator
cognominal pmichaud, I did a svn update, make clean, perl Configure.PL, and make and got error:imcc:syntax error, unexpected SHIFT_LEFT ('<<')
in file 'src/PCT/HLLCompiler.pir' line 17
error:imcc:syntax error, unexpected RELOP_EQ ('==')
in file 'src/PCT/HLLCompiler.pir' line 21
error:imcc:syntax error, unexpected SHIFT_RIGHT_U ('>>>')
in file 'src/PCT/HLLCompiler.pir' line 25
make[1]: *** [../../runtime/parrot/library/PCT.pbc] Error
pmichaud you mean in Parrot's implementation of Iterator. Right. Parrot's Itertor doesn't really do what we need, I don't think. 14:22
jonathan No, no.
Range *is* an iterator.
It's working fine as an iterator.
cognominal I am checking to see if I am clean... :)
jonathan my $r = Range.new(from => 1, to => 6); for $r -> { say $_ } # works
The thing is what happens on assigning it to an array. 14:23
pmichaud right now (wrong or right) the array just gets a copy of the Range, yes?
jonathan Yeah.
pmichaud Ranges need to support postcircumfix:<[ ]>
Tene cognominal: looks like you got a merge conflict.
jonathan pmichaud: That'd be one way, but I don't think they're menat to. 14:24
Tene I was wondering the other day what needs to change in the List::* builtins to support working with lazy lists.
jonathan I mean, @a should be an array, which references the lazy iterator.
pmichaud okay, then we have to have lazy list implementation to make it work.
jonathan I feared this.
:-) 14:25
pmichaud there's a *reason* I put laziness far down the roadmap, jonathan. :-)
cognominal yes I need to do branc intead of of experementing many stuf at once.
s/bran/branches/
jonathan Yeah, it hadn't quite occured to me that lazy iterators would wind up with needing to do the whole thing.
pmichaud I think once we have mutables, laziness becomes much simpler.
jonathan Yeah. 14:26
moritz jonathan: what about makiing it eager for a start?
pmichaud (eager) that was the approach I had been taking.
thus infix:<..> was returning a flattened list
jonathan It still is.
I haven't switched it over to using Range.
PerlJam You could do the eagerness only on assignment.
(to an array) 14:27
jonathan Yeah, that would be one way.
pmichaud I think overall it's easier to just get mutables working first.
jonathan Yes.
pmichaud and then do it "right"
jonathan Agree.
OK, I'll leave Range for now...the class is useful once we get to it.
Next up, sorting out $/, $!, and so on. 14:28
pmichaud anyway, with my @a = 1..10; we start out with @a being [ 1..10 ] but after we do @a[2] we end up with [ 1, 2, 3, 4..10 ]
or something like that.
jonathan Yes, agree. 14:29
pmichaud so, postcircumfix:[] on the array does the flattening
jonathan Right. Thus the laziness - it's lazy until you try and get at the value. 14:30
moritz jonathan: your previous commit broke Makefile (I think), because of leading spaces (instead of tab)
jonathan Oh?
moritz jonathan: at least I get warnings
pmichaud I'm about to check in my class refactoring in the rakoo branch. It undoubtedly breaks a ton of stuff
jonathan That's OK, we've got a nice makefile target to find out what. :-) 14:31
moritz make Makefile
Makefile:167: warning: overriding commands for target `spectest_regression'
Makefile:129: warning: ignoring old commands for target `spectest_regression'
make: `Makefile' is up to date.
purl make Makefile is a shortcut
jonathan moritz: I don't, but maybe Windows cares about this...
erm, doesn't care
moritz jonathan: or maybe it's just my stuff that's borked, let me check..
Tene pmichaud: asking for testing? 14:32
pmichaud Tene: more like "asking for understanding" when the world shifts beneath everyone's feet :-)
moritz jonathan: in the generated Makefile I have a leading space in line 128 (which is the documentation for spectest_regression)
jonathan moritz: Found some spaces instead of tabs, fixed.
moritz ok
Tene pmichaud: are you checking into a branch, or into trunk?
moritz (sorry, I think I b0rked that)
pmichaud branch. 14:33
(rakoo branch)
jonathan moritz: Try it now.
dalek r27709 | jonathan++ | trunk:
: [rakudo] Fix makefile breakage in last commit, noticed by moritz++.
diff: www.parrotvm.org/svn/parrot/revision?rev=27709
jonathan pmichaud: Any chance you can sync the branch with trunk, so I can run the spectest_regression target in it? 14:34
That will give a clearer picture of any breakage.
pmichaud jonathan: doing that now. But I really expect that most class/grammar/etc. stuff is completely broken
jonathan pmichaud: OK. Will get myself a copy of the branch. :-|
DietCoke cla? 14:35
purl cla is Contributor License Agreement or www.perlfoundation.org/contributor_..._agreement
moritz jonathan: still not fixed :(
I did an 'rm Makefile' and then 'perl Makefile.PL' in the root dir
wknight8111 I'm getting a t/codingstd/trailing_whitespace test failure on languages/perl6/src/classes/List.pir
pmichaud is _really_ concerned about trying to make these changes in a branch with so many people actively working in trunk. 14:36
moritz jonathan: there's a single leading whitespace at config/makefiles/root.in:125
jonathan: removing that fixes the problem for me 14:37
jonathan Urk.
Found it.
That was sneaky.
dalek r27710 | fperrad++ | pdd25cx:
: [Lua]
: - fix compil : s/ILL_INHERIT/EXCEPTION_ILL_INHERIT/g
diff: www.parrotvm.org/svn/parrot/revision?rev=27710
jonathan pmichaud: You getting merge conflicts?
pmichaud yes.
jonathan Ugh.
pmichaud and even trying to sync the makefile changes you're making now is a pain. 14:38
Tene does svn not help you with that?
pmichaud I have to keep track of what has been merged and what hasn't.
and yes, there are merge conflicts, so that recent changes to List conflicted with what I did a few hours ago.
jonathan moritz: Try that one? 14:40
dalek r27711 | jonathan++ | trunk:
: [rakudo] Try to fix another whitespace bug in the makefile.
diff: www.parrotvm.org/svn/parrot/revision?rev=27711
moritz jonathan: works!
jonathan OK, good. 14:41
moritz any bug admins here? #54476 was closed by r27708 14:46
dalek r27712 | pmichaud++ | rakoo: 14:48
: re-sync rakoo branch with trunk.
diff: www.parrotvm.org/svn/parrot/revision?rev=27712
jonathan moritz: yes, will close
pmichaud: Does rakoo branch include the changes too? 14:49
dalek r27713 | pmichaud++ | rakoo:
: [rakudo]:
: * First round of base class refactorings to use P6object.
: * Undoubtedly quite a few things break.
diff: www.parrotvm.org/svn/parrot/revision?rev=27713
pmichaud jonathan: it does now.
jonathan OK, let me svn up and see what the damage is. :-)
pmichaud I apologize in advance. :-) 14:50
jonathan pmichaud: Thinking back on mutables etc. The only PMC we need to add for those is the Scalar one, right?
pmichaud yes, but I was thinking of calling it "Mutable" 14:51
jonathan OK, sure.
But Array is subclass of ResizablePMCArray?
pmichaud and then Scalar, Array, Hash etc are types of mutables
I'm not sure about Array yet.
jonathan OK
Building the branch... 14:52
pmichaud the biggest thing the branch tries to do at this point is to clean up Perl6Object and Any handling
and get all of the other classes oriented correct for that
jonathan OK, sounds good.
pmichaud 09:24 <jonathan> pmichaud: (...is there no way to determine if a class has a method of a given name, either itself or via inheritance?) - the 'can' opcode/method should do this 14:53
unfortunately, the 'can' opcode only works on instances.
at least, for what I want to do.
Tene pmichaud: and to get a list of all methods in a class?
jonathan Ah, OK
meths = inspect class, "methods" 14:54
pmichaud what I end up having to do is to inspect the class for 'all_parents', and then walk the mro list to look at each class and check its .'methods'() list
14:54 Zaba_ joined
dalek r27714 | fperrad++ | trunk: 14:54
: [build]
: - fix 'make realclean' on Windows (partial revert of r27361)
: The input line is too long.
purl i already had it that way, dalek.
dalek : make: *** [prog-clean] Error 255
diff: www.parrotvm.org/svn/parrot/revision?rev=27714
pmichaud because .'methods'() only gives me the methods of the class itself, not its parents 14:55
jonathan Sure
That's the design.
pmichaud which is fine, but there's no way to figure out if objects of a given class can perform a given method without either instantiating such an object or walking the mro list :-) 14:56
DietCoke fperrad?
pmichaud anyway, my workaround works for now. :-)
jonathan pmichaud: If we implemented something in C, it'd only be doing the same thing, I guess.
pmichaud and I even refactored it into a single place, so it's no big deal
jonathan (walking the MRO, that is)
pmichaud jonathan: yes, I think so. And it's not a common enough operation to warrant much optimization. 14:57
jonathan That was going to be my next question. Do you do it enough to want it optimized.
pmichaud it only occurs when we create or register a new class.
(using P6object)
so, no.
anyway, in the rakoo branch I currently get two 'make test' failures 14:58
07-isa.t and 07-ref.t
starting to look at those nose.
jonathan Yeah, I just noticed we fail those.
pmichaud *now.
jonathan I'm going to see how bad the spectest_regression target is.
pmichaud cringes.
the 'class' and 'grammar' keywords need some reworking 14:59
jonathan Well, we ain't failing *everything* in that target...
pmichaud make_grammar_proto should now simply be p6meta.'register'(class, 'parent'=>'Grammar') 15:00
jonathan In fact, only four of them.
Three of them OO ones
pmichaud (force 'class' to be a subclass of Grammar if it's not one already)
pmichaud tries the spectest_regression target 15:01
another big change is that Hash.pir is now Mapping.pir
(and we eliminate "Perl6Hash". Yay!)
Tene What will things look like eventually when HLLs want to use class names already taken by parrot? 15:03
pmichaud they will break until Parrot fixes that.
jonathan pmichaud: Working on class keyword 15:04
pmichaud okay. We no longer have a 'make_proto' sub 15:05
use p6meta.'register' instead
p6meta.'new_class' creates a new class and registers it
p6meta.'register' just registers an existing class 15:06
in the case of the class keyword, we should
(1) create a new class
(2) process any has/does/is keywords
(3) call p6meta.'register'(class, 'parent'=>'Any') to create the protoobjects and otherwise ensure that the class is a subclass of 'Any' 15:07
Tene: what you mentioned is RT#43419 . 15:08
jonathan pmichaud: Done. 15:12
class Foo { method bar { say "yay"; } }; Foo.new().bar;
yay
pmichaud outstanding
I think I have 01-ref fixed.
er, 07-ref fixed.
15:12 davidfetter joined
jonathan However, we have...issues 15:12
Oh, you probably fixe dthem.
.WHAT() gave weird errors?
pmichaud oh, didn't fix it yet. But it's undoubtedly something to do with .WHAT(), yes. 15:13
feel free to do liberal commits in rakoo -- i.e., commit things even if tests don't pass
I think we'll have a few hours or so of cleaning up rakoo, maybe a bit longer 15:14
15:16 Infinoid joined
jonathan pmichaud: Is this a bug: 15:17
grammar Foo { rule TOP { \\d+ } }
if "hi" ~~ Foo { say "yes" }
if "h2i" ~~ Foo { say "yes" }
if "2" ~~ Foo { say "yes" }
15:17 jhorwitz joined
jonathan yes 15:17
Note it doesn't print yes after the second check.
dalek r27715 | pmichaud++ | rakoo:
: [rakudo]:
: * merge Makefile fix from trunk into branch
: * be sure to register Perl6Str as well as String
diff: www.parrotvm.org/svn/parrot/revision?rev=27715
pmichaud I thik that should produce "yes" twice, if that's what you're asking. 15:18
jonathan pmichaud: That's same in trunk though.
Yes, I think it should.
OK, that's a bug, but it's not related to the branch. On the upside, that means I've got the grammar keyword working again too.
pmichaud (commit?)
jonathan yea, just reading my diff for sanity :-)
dalek r27716 | jonathan++ | rakoo: 15:20
: [rakudo] Get class and grammar keywords working again.
diff: www.parrotvm.org/svn/parrot/revision?rev=27716
r27717 | pmichaud++ | rakoo:
: [rakudo]:
: * Need to register "Boolean" type as "Bool".
: * 07-ref.t passes.
diff: www.parrotvm.org/svn/parrot/revision?rev=27717
15:21 ambs joined
pmichaud although, really I shouldn't have had to make r27717 in order to get 07-ref.t to pass. Hrm. 15:21
pmichaud investigates.
moderator Parrot 0.6.2 "Reverse Sublimation" Released | parrotcode.org/ | 20/672 new/open tix 15:22
15:24 GeJ joined
cognominal I have a clean tree (at last) and I dabble with pod5 parsing and got Unable to find regex 'panic' 15:25
Null PMC access in invoke()
pmichaud oh, ick.
cognominal it there anything new on this front?
dalek r27718 | jonathan++ | rakoo: 15:26
: [rakudo] s/Perl6Hash/Mapping/ in actions.pm. Makes a spectest fail differently. ;-)
diff: www.parrotvm.org/svn/parrot/revision?rev=27718
pmichaud cognominal: I think I forgot to re-register the panic method in PCT::Grammar.
cognominal I have [ $ || <panic: Syntax error> ]
ambs seen DietCoke
purl DietCoke was last seen on #parrot 30 minutes and 21 seconds ago, saying: fperrad?
ambs seen coke
purl coke was last seen on #parrot 1 day and 19 hours ago, saying: tries to figure out why that thread starts with tilly's message and not ambs's. [May 19 13:28:34 2008]
pmichaud cognominal: just a sec, I'll fix.
cognominal no big deal
purl Yes it is! I hate you I hate you
ambs purl, I hate you too 15:27
purl ambs: sorry...
jonathan tries to work out why inheritance is br0ked in rakoo 15:28
nopaste "pmichaud" at 76.183.97.54 pasted "weirdness in 'copy' op" (56 lines) at nopaste.snit.ch/13031 15:29
cognominal if pmichaud and jonathan continue at thus pace the only sane way for peerl 5.12 will be to use parrot for bootstrap
pmichaud look at the line that says find_lex P11, "$bool"
15:29 tedkat joined
pmichaud 39 copy P10, P9 P10=Undef=PMC(0x833d5a0) P9=Object(Bool)=PMC(0xb7482eb4) 15:30
42 find_lex P11, "$bool" P11=PMCNULL
45 unless_null P11, 6 P11=Boolean=PMC(0x833d5a0: 1)
the object goes into 0x833d5a0 as a "Bool" but comes out as a "Boolean"
jonathan pmichaud: One mo, I'll look atthat... 15:32
pmichaud I'll write a small test case. 15:33
nopaste "pmichaud" at 76.183.97.54 pasted "weirdness in 'copy' op #2 -- small test case" (27 lines) at nopaste.snit.ch/13032 15:36
jonathan pmichaud: Will look, just trying to get to the bottom of why trait_auxilliary:is isn't dispatching properly... 15:42
pmichaud is that the one in Perl6Object ? 15:43
jonathan .sub 'trait_auxiliary:is' :multi('P6protoobject', 'Class')
Isn't matching anything
pmichaud oh
you probably don't want P6protoobject
jonathan However, :multi(_,_) and printing the inheritance hierarchy of the first parameter shows that it includes P6protoobject 15:44
pmichaud it's a :multi, not a :method ?
jonathan Yes.
Well, it just extracts the Parrot Class and re-dispatches.
pmichaud where does trait_auxiliary:is get invoked from?
jonathan The code generated by an "is" 15:45
pmichaud .... i knew that .... :-)
I mean, it's in the generated PIR?
jonathan Ah, yes. 15:46
pmichaud P6protoobject feels wrongish to me.
jonathan class Bar is Foo { }
Here, Foo is the protoobject 15:47
pmichaud Foo? I was thinking Bar 15:48
jonathan No, we haven't created Foo yet.
In the end, yes, we will install a proto-object for Foo
pmichaud double-takes.
I think you mean Bar. We haven't created Bar yet.
jonathan Yes! 15:49
Grr!
pmichaud so, trait_auxiliary:is gets invoked as trait_auxiliary:is(Bar, Foo) ?
jonathan No
pmichaud Foo, Bar
jonathan trait_auxiliary:is(Bar, $def)
pmichaud (where "Bar" is the class w/o a proto) 15:50
jonathan Ooops
trait_auxiliary:is(Foo, $def)
particle waves as he arrives after two hours of scrollback reading
jonathan Where $def is the under-construction class
pmichaud okay. checking.
jonathan pmichaud: This may be related 15:51
class Foo { }
purl rumour has it class Foo { } is okay
jonathan Foo.get_parrotclass()
pmichaud get_parrotclass requires an argument.
jonathan I would have expected that to work?
class Foo { }
purl class Foo { } is okay
jonathan grr
pmichaud it's a helper function -- it doesn't work on its invocant.
jonathan yes, but
Method 'get_parrotclass' not found for invocant of class ''
pmichaud get_parrotclass works on metaclass objects, not protoobjects 15:52
Foo.HOW.get_parrotclass(Foo)
but you don't have to have Foo's metaclass -- any metaclass will work
p6meta.get_parrotclass(Foo)
jonathan class Foo { } 15:53
purl hmmm... class Foo { } is okay
jonathan Foo.HOW.get_parrotclass(Foo)
that's OK
pmichaud purl, forget class Foo { }
purl pmichaud: I forgot class foo { }
pmichaud the argument to get_parrotclass can be a parrotclass, a protoobject, a metaobject, a String, an array 15:54
basically it says "I have X, I want to know what it represents as a parrotclass"
we may end up throwing namespaces in there as well :-) 15:55
jonathan Hmm
class Foo { method hi { say "hi" } }; class Bar is Foo { }; # now "works"
my $x = Bar.new(); $x.hi; 15:56
This gives
attempt to access code outside of current code segment
Also to make that work I've done
.sub 'trait_auxiliary:is' :multi(_,Class) .param pmc parent .param pmc child .local pmc HOW HOW = parent.'HOW'() parent = HOW.'get_parrotclass'(parent) 'trait_auxiliary:is'(parent, child)
.end
...that was helpful
nopaste?
purl nopaste is probably 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
particle DietCoke: ping
nopaste "Jonathan" at 85.216.151.226 pasted "inheritance" (8 lines) at nopaste.snit.ch/13034 15:57
pmichaud I suggest using p6meta instead
jonathan Which is wrong, because we need something that means "a proto-object" on the left
As the first argument
15:57 sjansen joined
pmichaud HOW = get_hll_global 'Perl6Object', '$!P6META' 15:57
instead of
HOW = parent.HOW()
on the off-chance that parent doesn't know how to HOW
15:58 donaldh joined
jonathan pmichaud: OK, I have changed it. 15:58
But still the same problem. 15:59
purl the same problem is, like, what killed killtrac
pmichaud do we need the :multi(Class, Class) form at all?
if so, why?
jonathan And it worries me that we've also got a failed multi-dispatch on stuff we know is in the inheritance hierarchy.
We may well not.
pmichaud I think we may just want addparent directly in the :multi(P6protoobject, Class) form 16:00
and get rid of Class,Class until we know we need it.
jonathan Sure, but what I'm saying is that writing the multi you suggested gets us a no applicable methods error.
pmichaud yes, I'm still thinking about why that might be the case.
jonathan OK 16:01
Got rid of the Class, Class variant.
pmichaud in the _,Class form, check to see if parent isa P6protoobject
I know you did this already --I'm wanting to double-check.
$I0 = isa parent, 'P6protoobject'
say $I0
jonathan 1 16:02
pmichaud but changing the _ to P6protoobject causes it to fail? 16:03
jonathan Correct.
Let me check in my clean-ups so far, with _ in there.
pmichaud okay. I'll try a test case. 16:04
jonathan OK. We'll swap problems; I'll go peek at your boolean one 16:05
dalek r27719 | jonathan++ | rakoo:
: [rakudo] Start trying to unbreak inheritance.
diff: www.parrotvm.org/svn/parrot/revision?rev=27719
jonathan ...after making another cup of tea...
nopaste "pmichaud" at 76.183.97.54 pasted "P6protoobject and multi bug -- simple test case" (25 lines) at nopaste.snit.ch/13035 16:08
16:09 starc joined
jonathan pmichaud: OK, problem is that copy calls VTABLE_clone 16:10
pmichaud and Object PMCs don't know how to clone? 16:11
jonathan Which in turn ends up dispatching to the clone method of Boolean PMC, I guess.
Seems not
I've written clone vtable methods for most of our types
Bool was missing one
pmichaud right, I took quite a few of those out
jonathan erm...
pmichaud I think it belongs in Object PMC and not in our classes. 16:12
(as my test case shows.)
jonathan OK, but I fear that doesn't work out too nicely.
Oh, in Object PMC
OK.
pmichaud clearly 'copy' isn't making a correct copy.
jonathan Well, copy just calls clone
So it depends on whatever clone does 16:13
pmichaud I'm not saying that none of our classes will have 'clone' methods -- I'm just saying that Rakudo shouldn't be blindly working around parrot bugs. (visibly working around Parrot bugs is okay, but we should have a note for when we're doing that and why.)
jonathan I suspect copy could actually have the whole morph chunk of it deleted with no ill effects.
but that's a separate issue 16:14
OK, implementing clone in the Object PMC.
Ouch. Down to my last tea bag. 16:15
:-|
pmichaud not good. :-)
nopaste "pmichaud" at 76.183.97.54 pasted "P6protoobject and multi bug -- simple test case, slightly improved" (30 lines) at nopaste.snit.ch/13036 16:16
pmichaud I think you're correct that there's a problem with mmd there.
16:17 iblechbot joined
jonathan Does P6protoobject ever end up in the class registry? 16:18
pmichaud yes
jonathan OK
pmichaud first statement of P6object.pir :-)
jonathan That's that theory out then.
pmichaud oh, 3rd statement. 16:19
(coulda been first. was the first at one time, then I thought it made more sense to create the Hash first.)
of course, the protoobjects themselves are instances of anonymous (nameless) classes 16:21
I wonder if giving those classes a name makes a difference?
jonathan pmichaud: It may, but I like to hope not. 16:23
The thing is that I fear anonymous classes currently don't get type numbers.
particle do we use type 0?
pmichaud okay, I'm confused. Just a sec. 16:24
cognominal the perl6 grammar is real fun when one gets used to it. How can we have lived without it.
pmichaud (preparing nopaste)
particle jonathan: runtime/parrot/include/pmctypes.pasm lists 'default' as typeid 0 16:25
particle thinks that's for anonymous classes
pmichaud even anonymous classes will need unique typeids (as long as we're using typeids)
jonathan Thing is, I thought that protoclasses in the previous implementation were anonymous too. 16:26
pmichaud they were.
jonathan Hmm
That doesn't seem like a likely reason for it not working now, then... :-S
pmichaud P6protoobject basically uses the same algorithm as Perl6ProtoObject did (as far as that goes.)
oh, hrm 16:27
a-ha!
jonathan: you're not going to like this
particle it's a little confusing that the grammar module changed from P6Regex to Perl6Regex, and Perl6Protoobject is changing to P6Protoobject
pmichaud P6protoobject (small 'p')
it takes after P6opaque from the spec. 16:28
particle my point is P6 vs Perl6
pmichaud I know
jonathan Oh, shiese!
particle :P
pmichaud but P6objects != Perl6 objects
jonathan Well, at least it's an easy fix.
pmichaud jonathan: here's why it "worked" in trunk
Object.pir: protoclass = subclass objectclass, 'Perl6Protoobject' 16:29
traits.pir: .sub 'trait_auxiliary:is' :multi('Perl6ProtoObject', 'Class')
there is no "Perl6Proto*O*bject" 16:30
jonathan Oh? 16:31
Hmm..
So the bug was a typo, or?
pmichaud so I'm guessing that MMD treated that as _ or something.
jonathan (sorry, half my head is writing Object.pmc's clone right now) 16:32
pmichaud another difference is that in the old style Perl6Protoobject is a subclass of Perl6Object
but in p6object P6protoobject is a standalone class (no parent)
but I think the typo might be the issue. I'll try.
jonathan pmichaud: OK, for nopaste.snit.ch/13032 - that prints MyInt twice here now 16:34
I've done this in the rakoo branch
Heavily untested.
16:35 Eevee joined
pmichaud jonathan, okay great. 16:35
and I have one for you
dalek r27720 | jonathan++ | rakoo:
: [core] Implement clone v-table method for Object PMC.
diff: www.parrotvm.org/svn/parrot/revision?rev=27720
jonathan Running make test on it right now, but committed to see how it solves your issues.
pmichaud in trunk, if I change traits.pir to have :multi('Perl6Protoobject', 'Class')
and then try the Foo/Bar class test, I get
nopaste "pmichaud" at 76.183.97.54 pasted "P6protoobject and multi bug -- now in trunk!" (16 lines) at nopaste.snit.ch/13037 16:36
pmichaud so the same problem exists in trunk.
jonathan Arses. 16:37
jonathan points the finger at MMD.
pmichaud and what is really weird is that it matched Perl6ProtoObject when there was no Perl6ProtoObject class.
16:38 NotFound joined
NotFound Hello. 16:38
pmichaud I'm wondering if non-existent classes somehow map to '_'
jonathan I fear they may.
It's the only answer that makes sense.
pmichaud tries Object clone fix.
code for Object.clone looks good. nice work. 16:40
glad it was you and not me :-)
jonathan I have vague recollections of writing quite a few bits of class.pmc and object.pmc. ;-)
particle how many failures do you see in spectest_regression now? 16:41
autoref complains about code outside segment
jonathan particle: Will look in a moment - was down to 3 last time.
16:42 Theory joined
jonathan Grr. Failing tests thanks for my patch. 16:42
Oh, argh. 16:43
That's because it's wrong wrong wrong.
pmichaud mmmmm, "Wii Fit" just arrived. :) 16:44
jonathan Could be a wii bit distracting. 16:48
pmichaud argggggh
actually, rakudo and parrot are more interesting at the moment
so I set the box aside for Paula to look at later and came back into the office 16:49
but now it's lunch time
jonathan Nice to know that coding beats playing wiht your wii.
pmichaud well, Wii Mario Kart generally gets about 30 minutes a day :-)
jonathan :-)
Just fixing the copy.t test that I broke...
pmichaud anyway, lunchtime. Then I'll come back and play with rakoo a bit more.
jonathan Cool
pmichaud we seem to be a lot farther along than I had expected by this point.
(as far as migration goes) 16:50
jonathan Nice.
It's not going to be the most inspiring Rakudo post today.
particle is hoping to dig in
jonathan "Today we broke everything...then fixed it."
"Also, I failed to implement ranges."
particle ...amazingly, it only took a day to fix.
jonathan: you bit off a bit more than you could chew with ranges 16:51
jonathan Well, I thought I could get away with not having to do the whole load of lazy stuff elsewhere too.
particle considers ieee membership
jonathan And in reality I probably *can*. It just might not really be worth it.
pmichaud if mutables works out okay, we may be able to do laziness in just a couple of weeks 16:52
jonathan Cool.
pmichaud as long as we don't get too lazy. :-)
particle or laziness doesn't mutate
jonathan "We have a lazily evaluated implementation of Perl 6."
pmichaud that sounds like a good slide quote
"Q: Why is it taking long to implement Perl 6?" 16:53
jonathan :-)
Tene jonathan: did you get "for 1..* { ... }" working?
pmichaud "A: Because Perl 6 is built on lazy evaluation semantics."
particle *lazy implementation semantics :)
jonathan Tene: That'd be another thing that hangs on, getting the lazy implementation right.
Tene: It's not hard to get a Range object set up correctly that represents 1..*
Tene jonathan: you said that you got lazy ranges working, you just can't assign them to an array. Is assigning to an array required for 'for' support? 16:54
jonathan No.
Tene That's why I was asking. :)
jonathan I can give you quite easily, for Range.new(from => 1, to => *) { }
But we can't really make the .. operator construct a Range object, until we can also have @a = 1..5; work :-) 16:55
Tene Ahh, okay.
moritz is there an object that corresponds to the whatever star?
particle Whatever.
Tene I keep finding myself thinking "Ah, I'll just wait for pmichaud to finish $x and then $y will be much easier to do."
jonathan It's just an instance of Whatever.
:-)
moritz ok ;) 16:56
Tene I think I'll do more assorted builtins later, I guess. I got all of my insurance paperwork done last night.
particle glad you're properly insured to work on assorted builtins. 16:57
Tene Heh.
japhb finally finishes scrollback 16:59
Tene throws a git-svn at japhb
japhb Tene: OK, are you committing directly to Parrot, or sending patches into RT? 17:00
Tene directly
particle jonathan: are you madly hacking on something now?
jonathan Object.clone, then was pondering hacking on some fried rice...what you wanting? 17:01
japhb ... Because I need to know the proper Parrot-standards way to do both. 'git format-patch' and 'git am' have a bazillion options, and it's not clear to me which are best.
particle i'm looking at the test/spectest failures and wondering how i can help
particle has rakudo-shaped tuits today
japhb Then once I get commitbit, I have to learn the "right" way to do that as well
jonathan particle: in Rakudo command line mode to
class Foo { }; say Foo.new().WHAT();
Tene japhb: I've never cared about those options, and I've never had someone complain about the format of my patches.
I just used git format-patch 17:02
jonathan s/to/do/
Does that trigger an error?
japhb Tene: And then do you take that patch and attach it to an email, or did you use am to send the mbox-formatted patch directly?
DietCoke smacks ambs
particle class Foo {}; say Foo.new.WHAT;
Foo
Tene For committing directly, I just commit, and do the svn metadata fixes in a separate svn checkout when necessary. 17:03
jonathan Oh.
Tene I just attached to email.
japhb The learning curve for git is much steeper than SVK ...
jonathan I was expecting the code segment error.
japhb Tene: Ah, OK, that was going to ask that question also, about how you handled the svn metadatta 17:04
Tene it is? I tried svk two or three times, and I could never really get it working.
particle jonathan: sorry, can't deliver that :)
japhb Tene: oh, it's buggy as all hell.
jonathan I'm happy the error is gone.
Tene Every time I tried it, I gave up before actually able to get anything done.
particle i get too many arguments in 01-sanity/isa
Tene With git, it's always worked without problem for me. I guess my mental model of revision control happens to map well to what git already does.
particle and code segment error in S02-literal/autoref
jonathan particle: Going to see what I get now with my latest patch in the branch.
Tene I always get confused by svn too, somehow. 17:05
DietCoke tries to find all the parrot stuff in the backscroll.
japhb but 'svk checkout some/thing' ... hack hack hack ... 'svk commit -m "message"' (AKA pretend it's SVN) worked for me
Tene As I recall, svk checkout wanted me to do some initial configuration about where to store things, and I couldn't get that working.
jonathan particle: Just getting latest and greatest and taking a look at what's failing 17:06
japhb Tene: usually pressing enter a lot works. :-)
particle ok, i'll wait for your commit and rebuild/retest
dalek r27721 | fperrad++ | trunk:
: [Lua]
: - follows PCT, switch from Protomaker to P6metaclass
diff: www.parrotvm.org/svn/parrot/revision?rev=27721
r27722 | jonathan++ | rakoo:
: [rakudo] Fix object clone method, so now it clones any PMCs we inherit from too.
diff: www.parrotvm.org/svn/parrot/revision?rev=27722
NotFound I've found why gmp has problems when compiling with c++. There are c_... #defines in debug.h, and c_str makes c++ unhappy. 17:07
jonathan particle: It's in now.
particle ...already rebuilding already...
jonathan particle: You could always fix my innevitable trailing whitespace. ;-)
particle :P 17:08
jonathan Though probably best, after I go to bed. I'll only end up making more. :P
japhb Tene: Once you've committed to git-svn locally, what's the right way to push your changes back to the svn repo?
Tene git-svn dcommit
after a rebase, ideally
japhb Tene: OK, so you make a pile of local commits, finally ready to push the whole patch, make sure no uncommitted changes, 'git svn rebase', 'git svn dcommit', right? 17:09
Tene Exactly. 17:10
japhb Tene: thank you.
Tene Add a couple of 'make test's in there for good measure. :)
japhb My brain was melting from all the git docs I've read in the past 24 hours
Tene: well, of course.
purl Indubitably.
japhb :-)
particle jonathan: is $_, $!, $? well-defined enough now to start hacking on? 17:11
jonathan Yeah, but I think we need to fix Rakudo's use of lexicals first. 17:12
Perhaps
Hmm, actually probably not.
(Though we should maybe do that anyway. "say $x; my $x = 'foo';" should be an error.) 17:13
(If there's no other $x in an outsr scope)
But basically, for $! and $?, if we're not at the start of a routine, then we should just look at what they were in the outer scope. 17:14
Our meta-model is certainly meta-circular. I just managed to turn isa into an infinite loop. :-)
cognominal you know how to spell banana but you don't know when to stop 17:15
particle err. oops.
jonathan: i get the same test failures after your last commit 17:16
TimToady <@jonathan> if "h2i" ~~ Foo { say "yes" } 17:17
that should not match
subrules imply :p anchoring
dalek r27723 | jonathan++ | rakoo:
: [rakudo] Fix the obvious problem with isa. However, we're still not passing the test yet.
diff: www.parrotvm.org/svn/parrot/revision?rev=27723
jonathan TimToady: Oh, they must match the whole string? 17:19
jonathan goes to look up :p
TimToady no, but they must match the beginning of the string
and h !~~ ^\\d+
particle h isn't a digit!?!?! when did that happen? ;) 17:20
jonathan Ah, OK.
I didn't know about that.
Tene japhb: how are you getting your copy of the repo?
TimToady that's why I told you :)
jonathan :p ;-) 17:21
jonathan wonders how many more hidden smilesy are in Perl 6
TimToady though I seem to recall that a match against a bare rule has to match the whole string: $x ~~ token {...} 17:22
but for a match against a grammar, I expect the TOP rule to enforce compleatness
since different grammars might want to give different error messages, or simply allow themselves to be embedded in other languages 17:23
japhb Tene: I did the "full history" checkout of the main Parrot SVN repo. Then went and ate a meal 17:24
Tene japhb: and it completed in that time?
TimToady the TOP rule in STD currently allows $+STOP as an alternate endpoint for parsing, for instance
particle that's new 17:25
jonathan OK, makes sense.
japhb As I recall, yes, though it's been a while (I did the checkout a couple weeks ago, when it was "interesting thing to learn" rather than "only working tool"). I'm probably network-near it.
17:26 AndyA joined
dalek r27724 | jonathan++ | rakoo: 17:28
: [rakudo] Should register both Sub and Closure under the name Code.
diff: www.parrotvm.org/svn/parrot/revision?rev=27724
particle jonathan: should parrot core pmcs have an 'isa' method? 17:30
jonathan OK, we can't make 07-isa.t pass without making P6Object's isa also care about the name the class is registered under rather than just it's parrot name...
particle: They may implement the isa v-table method. 17:32
But I'd expect something in default.pmc to really be doing the work for all but special cases.
particle yes, the vtable function.
jonathan (Like Object.pmc, which needs to lie)
particle but i mean for $P0.'isa'($P1)
jonathan Oh, I don't think as a method, no.
particle if $P0 contains a 'String'...
ok
jonathan $I0 = isa $P0, $p1 17:33
er, $P1
I think fixing the isa sanity test needs a change in P6Object - will wait to get pmichaud's opinion on that one, though.
So, spectest_regression... 17:34
t\\spec\\S02-literals\\autoref......ok 1/57Null PMC access in type()
particle take a look at this nopaste to check my sanity...
jonathan particle: Feel free to dig into that.
ok
particle really wants this thorn out of his thumb :( 17:37
nopaste "particle" at 24.19.3.148 pasted "minimal test case for isa (too minimal?)" (11 lines) at nopaste.snit.ch/13038 17:38
particle oops! 17:39
i see my error
it should be new ... 'Perl6Str' twice, then assign $P17, 'Str'
jonathan Ok :-) 17:40
particle hrmm, that still prints 1
jonathan What's the bug you're chasing?
particle 07-isa.t
jonathan You got latest from svn? 17:41
particle yep
jonathan Only one last test fails there now
And it's not to do with string.
my $code = { 42 };
if $code.isa("Code") { say "ok 3" } else { say "not ok 3" }
It's that one
The problem is that isa is checking only the Parrot class name, which in this case is Sub, rather than the registered name. 17:42
particle ah, hrmm, i must have been looking at an old test failure report
jonathan They all used to fail, but now only that last one does.
For me here, anyway.
t\\01-sanity\\07-isa.t 3 1 3 17:43
17:43 cjfields joined
particle yes, i get the same now 17:44
where's isa defined? 17:45
src/classes/Object?
should Code override Any's isa method? 17:46
or is this something for p6meta? 17:48
jonathan Something for p6meta, I believe. 17:49
t\\spec\\S02-literals\\autoref.rakudo 1 256 57 62 27-57 17:50
t\\spec\\S12-class\\instantiate.t 1 256 2 2 2
t\\spec\\S12-class\\parent_attributes.t 1 256 3 6 1-3
These are the failing spec tests that we are down to, out of those that passed before.
How we fail more than we have in total on some of those bewilders me. 17:51
pmichaud back from lunch 17:54
jonathan particle: Both of those second two can probably be fixed by working out if we are calling the 'new' method in Perl6Object, and if not making it so we do. 17:55
pmichaud: isa test nearly passes now, but not for Code type, because isa is only calling parrotclass's isa method, which is unaware of our own name mappings. 17:56
I'm kinda here and making dinner, so might reply a little slow for the next while...
17:57 cjfields_ joined
pmichaud (isa) 17:58
I'm workingon isa -- need to know if $foo.isa('Dog') is the same as $foo.isa(Dog)
17:59 julian_ joined
pmichaud There aren't any examples in the spec that show a string argument to .isa() 17:59
s/spec/synopsis/ 18:00
Tene Is it ever possible to care if something is a class or role that we can't currently resolve? 18:01
Could the meta information be fiddled with by hand?
pmichaud also, P6object doesn't want to use string names to check 'isa' semantics.
i.e., at the level of the 'isa' opcode, we're not doing string comparisons.
(we can use a string name to decide what classes to compare, however.) 18:02
jonathan OK, makes sense.
Tene: We can find out if something is a class or role at runtime, if that's what you mean. 18:03
Tene $foo.WHAT = 'zomgl' 18:04
jonathan Don't think you can call .WHAT on a role.
IIRC
pmichaud Perl6Object should end up with its own 'new' method 18:07
I commented the existing one out.
so I could review it :-)
all of the object objects will then (or should) gain Perl6Object's new method in lieu of the one that is in P6protoobject 18:09
Tene I guess the only other reason to support it is dealing with user input. $foo.isa(=$*IN)
pmichaud s/object/other/
yes, I suspect that string arguments are valid to .isa 18:10
just wanting to work out the mapping in my head :-)
(and then in code)
Tene purl: codehead?
purl no idea, tene
Tene purl: codehead is where pmichaud works out mappings 18:11
purl tene: bugger all, i dunno
Tene bah
jonathan pmichaud: Perl6Object's new method doesn't appear commented out here... :-S 18:12
pmichaud did you put it back in? 18:13
jonathan No
pmichaud it's commented out. Look *carefully*. :-P
jonathan It's not getting called, though. Or so it seems.
pmichaud =item new() 18:14
Create a new object having the same class as the invocant.
.sub 'new' :method .param pmc init_parents :slurpy
jonathan OH!
That is *evil*.
That said, uncommenting it makes all tests fail. :-) 18:15
pmichaud I guess I should've used #=cut there to make it more obvious what I did :-)
particle #=cut++
pmichaud yes, I didn't update the code yet.
it seems a bit odd to me that 'new' is using setattribute directly. wouldn't it go through the accessor? 18:16
and I would expect it to get broken out into separate BUILD and BUILDALL components 18:17
jonathan Yes, I know we have to break it up into those. 18:18
I think it should set the attributes directly, as we don't know if it has any accessor methods or not.
Where did the setting of the auto-vivification stuff go to? 18:20
pmichaud I just took it out for now -- we may need to import it back in from trunk 18:21
it was making my brane hurt
:-)
I also wanted to see if any of it ends up belonging in p6object somehow 18:22
particle is out of his area of expertise and decides to leave rakoo hacking to pmichaud++ and jonathan++ 18:25
18:26 cognominal joined 18:27 dalek joined, pmichaud joined
pmichaud looks like feather died again? 18:27
18:27 lichtkind joined 18:28 pmichaud joined
DietCoke looks like. 18:29
purl looks like is not the fault of this trace, the interpreter must be already corrupted.
pmichaud waits for jonathan to return.
DietCoke no, looks like is <reply>
purl okay, DietCoke.
pmichaud so, are the parameters to .new() allowed to initialize private attributes? or just public ones? 18:31
18:33 jonathan joined, Juerd joined 18:34 Ivatar joined 18:35 wolverian joined
pmichaud ah, jonathan returns. Excellent. 18:35
so, are the parameters to .new() allowed to initialize private attributes? or just public ones?
18:38 Infinoid joined 18:40 Zaba joined 18:43 AndyA joined 18:44 gryphon joined
jonathan pmichaud: I believe private too 18:51
(sorry, cooking)
pmichaud hmmm. 18:54
somehow that's counter-intuitive to me. 18:55
because then they're not really "private".
but I guess that's not too much different than the fact of attributes being read-only, either.
dalek r27725 | allison++ | pdd25cx: 18:57
: [pdd25cx] Fix warning about incompatible pointer type.
diff: www.parrotvm.org/svn/parrot/revision?rev=27725
pmichaud I'll try #perl6 18:59
dalek r27726 | allison++ | pdd25cx: 19:07
: [pdd25cx] Fix warning about incompatible pointer type.
diff: www.parrotvm.org/svn/parrot/revision?rev=27726
jonathan is back from eating 19:18
pmichaud: Get any answer from #perl6?
S12 just says "It expects all arguments to be named parameters initializing attributes of the same name." - it doesn't mention whether they have constructors.
erm, s/constructors/accessors/
pmichaud jonathan: TimToady on #perl6 now 19:20
here's the summary 19:27
19:18 <TimToady> $!foo is the physical storage. $.foo is just the accessor, which does not require $!foo to be implemented by this class, as long as some base class does it. 19:28
19:21 <TimToady> BUILD is a submethod, so should only modify $!foo
so, my takeaway on that is that BUILD can indeed use setattribute, but it needs to do so on the $! form of the attribute 19:31
jonathan OK, which is the physical storage. 19:32
All attributes are named $! under the hood, no matter how they are declared. That's how Rakudo implements it.
pmichaud okay. I didn't catch that part (how Rakudo implements it) 19:33
jonathan Yeah, that's one bit of S12 I think I have got right. :-) 19:34
pmichaud and so yes, BUILD (and hence new) can likely initialize private attributes, and does so directly.
I think you do also.
jonathan Yup.
pmichaud we just need to refactor 'new' into the BUILD/BUILDALL components then
jonathan OK
pmichaud or update what we have now to work with the new object system
btw, we can also choose to add some of the other HOW methods into P6object's metaclass objects 19:35
e.g., .attributes() to retrieve a list of attribute descriptors as described in S12 19:36
oops, I gotta run pick up kids
bbi30
jonathan ok
dalek r27727 | allison++ | pdd25cx: 19:39
: [pdd25cx] Fix warning about returning from function marked 'noreturn'.
diff: www.parrotvm.org/svn/parrot/revision?rev=27727
NotFound Boys, perl6/src/classes/List.pir fails whitespace and pod syntax tests. 19:40
Trailing space, I mean.
DietCoke the core pod syntax tests? 19:45
NotFound t/codingstd/trailing_space
DietCoke (those shouldn't be being run against files with perl6 pod in them, methinks.) 19:46
NotFound t/doc/pod
make test does it. 19:47
particle doubts the .pir files have perl 6 pod in them
jonathan DietCoke: It'll just be the POD in the PIR files, which will be Perl 6
Won't be a big deal to fix.
DietCoke whoops, missed the .pir
particle i mean, doubts they should have perl 6 pod... 19:48
DietCoke right, right.
spinclad pmichaud: (backlogging, from 15:30 UTC:) is P10 tied to $bool lexically? (i was confused about this for a while (still am?); it didn't show up in the trace, does trace have access to that so it could learn to display something about it?...) (if not so tied, it looks like P10 is never used and $bool has magically gotten a related value) 19:49
pmichaud spinclad: yes, they were tied. Look at the 0x..... values of the PMC (they're the same) 19:51
spinclad so they are. danke. 19:52
jonathan pmichaud: WHENCE - it's implemented on the protoobject 19:58
Not on the class itself
So before it was in Perl6ProtoObject
Now, well, not too sure where it belongs, since we have a shared proto between all things?
pmichaud I don't have a problem with defining a WHENCE accessor on P6protoobject 19:59
oh, but it has to be an attribute
hrm.
jonathan Yeah, it needs somewhere for storage. 20:00
pmichaud protoobjects don't have to be singletons, in other words. 20:01
20:01 ruoso joined
jonathan OK, so it can go as a method on the proto-object? 20:02
I'm just getting initialization working again normally first, then I'll look at WHENCE
pmichaud thinking
purl www.terrybisson.com/meat.html
pmichaud Dog but WHENCE({...}) is still considered a protoobject, yes? 20:03
but it's not the same protoobject as Dog
DietCoke Call.
jonathan Yes. 20:04
It returns a clone of the protoobject with WHENCE property set.
NotFound Someone wants to take a look at a big and complex patch? #54602 20:05
jonathan pmichaud: Down to one failing spectest_regression test. 20:09
dalek r27728 | jonathan++ | rakoo:
: [rakudo] Re-enable initialization of the current class' attributes. However, WHENCE stays disabled for now. This gets us down to one fialing spectest_regression test.
diff: www.parrotvm.org/svn/parrot/revision?rev=27728
jonathan Which will be fixed once WHENCE is back.
Will probably show up with code to check in - got about the right amount of time at Prague airport connecting to have dinner and drain my laptop's battery while writing code. :-) 20:10
Tene You could just feed the dinner to the laptop. 20:11
Infinoid but then we wouldn't get the code :) 20:13
Tene spaghetti code?
jonathan <graon>
20:14 Zaba joined
pmichaud since WHENCE is a property, should it go into %properties ? 20:16
every protoobject has one of those :-) 20:17
20:18 ejs joined
DietCoke NotFound: here's an easy win: 39132 - rip out pirtidy and its tests etc. 20:18
jonathan pmichaud: Yes, it should. 20:19
I think so anyway.
In that case, it's easy!
20:20 iblechbot joined 20:21 mj41 joined
NotFound DietCoke: I don't even know what pirtidy is. 20:23
20:24 PerlJam joined
DietCoke particle: rt.perl.org/rt3/Ticket/Display.html?id=44393 20:25
20:32 Zaba_ joined
DietCoke NotFound: rt.perl.org/rt3/Ticket/Display.html?id=46667 (another removal) 20:34
NotFound DietCoke: I looked at it some days ago, but I don't know how to test the function. 20:36
dalek r27729 | jonathan++ | rakoo: 20:42
: [rakudo] Add WHENCE support back into the proto-object.
diff: www.parrotvm.org/svn/parrot/revision?rev=27729
NotFound No one is interested in compiling parrot with c++? 20:46
20:50 Zaba joined
dalek r27730 | jonathan++ | rakoo: 20:53
: [rakudo] Remove some code from the WHENCE setter that pretained to the old model.
diff: www.parrotvm.org/svn/parrot/revision?rev=27730
bacek morning 21:00
pmichaud jonathan: so, putting WHENCE into %!properties is working out? ;-) nice when the tools actually start to match the spec. :-) 21:02
jonathan pmichaud: It was in there before, but yes, WHENCE itself works now. 21:04
21:04 cjfields joined
jonathan new doesn't use it quite right yet. 21:04
Working on that.
Unfortunately, type checking is broken too.
DietCoke NotFound: I wouldn't say that.
pmichaud if possible I recommend avoiding using the parrot class opcodes directly
DietCoke NotFound: if no one else gets to it, I'll review and apply that patch before sleep. 21:05
jonathan pmichaud: Sure, just need an easy way to create a new instance of the proto-object, that seemed like the neatest way.
DietCoke (taking the ticket. don't let that stop anyone else, committers)
NotFound DietCoke: thanks, but maybe rewieing it produce insomniae ;)
pmichaud perhaps Perl6Object should provide an accessor for %!properties ? 21:06
21:06 Zaba joined
jonathan It's not very private any more, if it has an accessor...unless the accessor is private too. 21:06
But gnerally, no.
We will touch %properties a lot.
%!properties, I mean
pmichaud I was thinking private accessor, or submethod
jonathan We don't want an extra call every single time we want to get at it.
pmichaud we have a lot of extra calls floating around already :-) 21:07
jonathan Right. I'm not wanting to add to that. ;-)
pmichaud But .'WHENCE'(...) and .'accessor'('WHENCE', ...) seems like the same number of calls to me :-) 21:08
jonathan I'm struggling to see what you're after, or why. 21:09
pmichaud a generic interface for accessing properties, as opposed to always directly interrogating the %!properties hash
jonathan Less places using getattribute?
pmichaud yes.
jonathan Ah, I see.
Let's get this at least working again, and then refactor. 21:10
pmichaud right. I was just about to say.... ....but I'm not going to push it for now. It can wait. :-)
jonathan It's tricky enough trying to do one thing at a time. ;-) 21:11
21:11 donaldh joined, julian^ joined
jonathan If we can get the isa bug, this new thing and type checks fixed, I think we'll be good to roll this back into trunk later on today. 21:11
pmichaud just in general I'm wanting to avoid too much reliance on the parrot internals. If we need it for speed, yes, but let's not too be too quick to assume we need it for speed.
I'm on the isa bug right now (if I can avoid more interruptions :-)
actually, I think the current isa bug is from having Code/Sub improperly defined 21:12
so I'm fixing that
I agree re: rolling back into trunk
we can indicate that a few things are temporarily broken in trunk -- I just didn't want a whole lot of things breaking. 21:13
I think we're almost at the point where we may want to tag releases :-)
jonathan If we have sanity tests and spectest_regression passing again, I'll be happy to see it rolled back in.
pmichaud i.e., we can say that features x, y, and z work as of release nnnnn, but between releases things may be in a bit more flux
any impressions on the refactor thus far -- does it look reasonable to you? 21:14
jonathan I like that we now have metaclass, protoclass and the actual class we instantiate all separated out.
And that the metaclass isn't just the parrotclass
pmichaud I like that it's easy to get everything mapped into its appropriate 'Any' position -- even parrotclasses 21:15
jonathan The parent => ... thing is certainly a LOAD cleaner for inheriting from Any and Grammar too.
21:15 Ademan joined
pmichaud and yes, it's all hiding behind an abstraction layer now so that we can change the internals at some point 21:15
jonathan I will toss the specialized make_proto that grammar had. 21:16
pmichaud for example, someday we may want Object/Any to be PMCs
jonathan If you didn't already.
pmichaud I don't know if I tossed it or not
jonathan It's no longer needed thanks to parent => ...
pmichaud I'll be looking more closely at the methods in src/classes/*.pir over the next couple of weeks and cleaning them up
jonathan OK
pmichaud (make_proto_grammar) was one of the reasons I was pushing ahead on P6object. It felt really funny to me :-)
jonathan I'll get on with fixing whence and leave you to isa for a while. :-) 21:17
pmichaud I'm updating/rebuilding
I should have isa fixed in about 10 mins, barring interruption
jonathan OK. We're on one last failure on spectest_regression
pmichaud races the clock.
oh this is just TOO PRETTY. 21:18
nopaste "pmichaud" at 76.183.97.54 pasted "turning Parrot Subs and Closures into Perl 6 Code" (7 lines) at nopaste.snit.ch/13040 21:21
pmichaud ...and now isa passes :-)
and I get rid of Sub.pir . 21:22
jonathan Nice! 21:23
Erm
Don't lose the ACCEPTS method
pmichaud It's now in Code.pir
jonathan Or you break smartmatch on regex.
OK, cool.
pmichaud since smartmatch is defined on Code objects
jonathan Yup.
pmichaud I'll need to multimethod that one on Regex, though, when we get the ability to define the .sub type 21:24
jonathan my $x = Bar.new(y => 42, Foo{ x=> 10 }); # works again
pmichaud ohthatissocool
jonathan OK. Just type checking. 21:25
That is only broken because the protoobject lost it's ACCEPTS
pmichaud put ACCEPTS back into Perl6Object 21:26
dalek r27731 | jonathan++ | rakoo:
pmichaud I hadn't done that yet.
dalek : [rakudo] Enable WHENCE again and get new to work with WHENCE'd protoobjects again.
diff: www.parrotvm.org/svn/parrot/revision?rev=27731
jonathan Perl6ProtoObject or Perl6Object?
pmichaud there is no Perl6ProtoObject
jonathan ERm, the first is no more.
Yeah.
This was on the protoobject.
So you can do
$obj ~~ Foo
For "is $obj a Foo" 21:27
pmichaud looking.
actually, it should be
Any Type type membership $_.does(X) 21:28
yes?
(from S03)
jonathan Yeah, I think we had does
pmichaud I haven't implemented 'does' in P6object yet-- it's on the list
jonathan .sub 'ACCEPTS' :method .param pmc topic .local pmc HOW
# Do a does check against the topic. HOW = self.'HOW'() $I0 = does topic, HOW if $I0 goto do_return
(from trunk) 21:29
Well, we were delegating it to the Parrot does
pmichaud feel free to add ACCEPTS to P6protoobject
jonathan OK
pmichaud you can do it either in rakudo or in P6object.pir
jonathan Really need to look at this again.
pmichaud right, I'll review it and refactor it later
actually, for now just put it into rakudo 21:30
jonathan It neeeds to be on the protoclass, not on the object, through?
pmichaud sure
jonathan Oh, stick it in the right namespace will do it?
pmichaud .namespace ['P6protoclass']
right
er, P6protoobject
but it will end up in P6object.pir soon
actually..... 21:31
if you want, put it in P6object.pir
it's going to be basically the same
jonathan OK 21:32
It does some weird stuff to try and call the ACCEPTS of an instance too, though...I'm now trying to think why. 21:33
pmichaud hrm
jonathan I wouldn't have gone to the trouble just for the fun of it.
pmichaud well, object methods tend to override the protoclass methods 21:34
sorry, protoobject ones
but I think that might be just for 'new'
so I might need to tag 'ACCEPTS' as being more important on a protoobject than anything coming from the object class
jonathan I think the problem actually was that, protoclass method overrode object one. 21:35
pmichaud ahhhhh
yes
dalek r27732 | pmichaud++ | rakoo:
: [rakudo]:
: * Fix Code so that .isa works on it again.
diff: www.parrotvm.org/svn/parrot/revision?rev=27732
pmichaud uh, no. hrm
protoclass method should override object one
jonathan Well, yes, it should. 21:36
pmichaud Dog.ACCEPTS(x) is different from $dog.ACCEPTS(x)
jonathan Yeah.
I'm now trying to remember why on earth that went in there. I think commit log is the best way. :-)
Oh ouch. 21:37
21:37 teknomunk joined
jonathan r27338 | jonathan | 2008-05-06 12:56:17 +0200 (Tue, 06 May 2008) | 1 line 21:38
[rakudo] Make grammars more class-like. We now create protoobjects for them. Add
ed a Grammar class, implementing the ACCEPTS method which calls TOP. Had to twea
k the protoclass' ACCEPTS to also try the one in the class to make this work; sh
ould review if this is really the Right Way for this to work.
pmichaud ahhhhh
so a Grammar protoobject should prefer the object one
jonathan It's because smart-matching against a grammar's proto-object needs to now do a DOES check.
Yeah.
Well, both
We expect also
grammar Foo { ... } 21:39
if Foo ~~ Grammar { ... } #
pmichaud smart matching against a grammar is in the table
er, *isn't*
(in S03)
jonathan It's mentioned in S05, but yes, it shuld probably be in the table too. 21:40
pmichaud I'm not sure we need to expect Foo ~~ Grammar at this point 21:41
jonathan OK
pmichaud it might show up in the table, but I think we can ignore it for now
there's always Foo.^isa(Grammar)
jonathan True
Well actually
That'd dispatch to Grammar
Grammar.ACCEPTS(...) 21:42
So hmm.
pmichaud it would?
dalek r27733 | jonathan++ | rakoo:
: [rakudo] Put ACCEPTS into the proto-class. Gets type checks working, and all spectest_regression passing again.
diff: www.parrotvm.org/svn/parrot/revision?rev=27733
jonathan Yeah, right hand side is the thing we call .ACCEPTS on
pmichaud Foo.^isa(Grammar) is Foo.HOW.isa(Grammar) which doesn't call ACCEPTS?
jonathan No, no, I was still talking about Foo ~~ Grammar
pmichaud right
I'm saying that for Grammar.ACCEPTS the accepts method should override the protoobject one
jonathan So I think actually my hack wasn't anything to do with needing both at all. 21:43
pmichaud oh
getting Grammar.ACCEPTS to work isn't too difficult -- just a sec
jonathan It was to get Grammar.ACCEPTS to override the protoobject one.
pmichaud just call 'add_method' on the protoobject's class
and stick in the one you really want.
jonathan If you can get that to work, you can remove the pile of nasty...
Erm, isn't it going to complain that we already have an ACCEPTS? 21:44
pmichaud it's the same for what I do for 'new'.
it complains if you use addmethod class, .... but not if you use class.'add_method'(...)
jonathan That's...so wrong. :-)
pmichaud at any rate, there should be a way for me to override existing methods, so it works fine. 21:45
yes, I think they should both do what class.'add_method'() does.
(i.e., not complain)
jonathan We should yell at the guy who implemented the Class PMC....oh, wait...
pmichaud anyway
I'll fix Grammar ACCEPTS just a sec
jonathan OK 21:46
Just verifying that we have a clean bill of health on the tests.
Yes! 21:48
All sanity tests and spectest_regression pass for me in the rakoo branch!
nopaste "pmichaud" at 76.183.97.54 pasted "ACCEPTS for Grammar protoobject" (25 lines) at nopaste.snit.ch/13041 21:49
pmichaud ohhh! add_method doesn't complain because the protoclass doesn't have an ACCEPTS method of its own. 21:50
jonathan Oh...
pmichaud It's inheriting it from P6protoobject. So this is a simple override. :-) 21:51
jonathan It's because it inherits it from...yes.
pmichaud coooooool
jonathan OK, if you commit that.
pmichaud I didn't test it -- I just wrote it.
I don't have a convenient test handy.
but I'll commit, yes.
NotFound Now I can make perl6 with C++ :)
jonathan NotFound++ # nice work 21:52
pmichaud oh, hrm.
jonathan pmichaud: I need to get a few more spectests in place...
pmichaud this might not be sufficient.
NotFound Only problem was a "class" variable name.
japhb NotFound: Is that an OpenGL-enabled build? I'm curious if I need to make changes there.
pmichaud I don't know if subclasses of Grammar will also get the correct ACCEPTS
cjfields jonathan: are role attributes supposed to be implemented yet?
NotFound japhb: I think it was... Were was the triangle test? 21:53
pmichaud actually, they won't.
jonathan cjfields: No.
cjfields ok
japhb NotFound: ./parrot examples/opengl/triangle.pir
jonathan pmichaud: Ah. That won't work then. :-(
pmichaud so, I need to treat ACCEPTS the same way I do 'new' then
jonathan cjfields: It's on my (long, long) list.
pmichaud or, no, that's not it.
cjfields np
pmichaud hrm.
NotFound japhb: it works :) 21:54
japhb excellent.
cjfields I can work around for now; looks like raakoo
jonathan pmichaud: We can leave current hack in until we have a good answer.
pmichaud yes, I was about to say the same. I'm being hit with too many interruptions here
cjfields is more important
NotFound I will send the updated patch in a few minutes.
pmichaud (kids are home, paula just came home, etc.)
jonathan: so, okay if I roll branch back into trunk? 21:55
cjfields s/raakoo/rakoo
pmichaud a bit later tonight?
jonathan pmichaud: Fine with me.
pmichaud excellent
thank you for all of your outstanding work on this. I'm really happy to see this done.
jonathan It's passing a bunch of tests.
Sure, it wasn't as bad to fix up as I'd feared.
pmichaud same here
japhb tewk: Note for your NCI stuff ... during my OpenGL header parsing work, I've come across a couple headers that have C++ class declarations in them. Have you explicitly decided not to handle those, sticking strictly to C99?
jonathan pmichaud: What are you planning to work on next? 21:56
pmichaud probably PGE refactor. either that or mutables
PGE refactor may get us list assignment quicker 21:57
jonathan Could they be parallelized?
I'll likely have some spare hours hacking time over the coming weekend.
pmichaud you mean work on both at the same time?
jonathan Couple of hours at the airport tomorrow, easily.
Yeah.
Mutables, I've got a rough idea of what needs doing.
pmichaud the PGE one is conceptually tougher and involves learning more code
so ifyou want to start on mutables, that'd be okay
jonathan Yeah, I wouldn't take that one on myself.
OK
You can a moment to run over what you had in mind?
I'm awake for another ~ 2 hours if right now isn't good. 21:58
pmichaud mainly I was going to look at default.pmc and delegate.pmc for ideas
jonathan OK
pmichaud since delegate tends to forward to another PMC
(and so does default)
jonathan Right. We can subclass delegate to probably get a lot of what we want. 21:59
Or create our own thing based upon it.
pmichaud I wasn't planning to subclass delegate, but if it works then that would be good.
I've had some weird experiences with delegate before
jonathan Are you thinking that we'll have Mutable, whihc pretty much forwards everything.
pmichaud yes
jonathan Then we will in, for example, in Scalar, override assign. 22:00
In Array, override set_pmc_keyed
And so forth?
pmichaud I'm not sure about overriding set_pmc_keyed, but essentially, yes.
the big one is overriding assign
if we have that, then we can figure out the details on the other stuff
jonathan not sure about overriding set_pmc_keyed <= as in, should have said keyed_int? Or? 22:01
Oh, OK.
pmichaud I don't know that mutable will need a set_pmc_keyed override
jonathan Yes, in fact Assign may be all we need, now I think about it some more.
pmichaud anyway, I need to run. 22:02
jonathan OK, sure
pmichaud thanks again!
jonathan I'm going to finish up my various slides for the weekend's talks.
Thanks to you too - this is looking a lot cleaner now. :-)
NotFound Patch updated in #54602 22:08
purl: C? 22:11
purl C is probably for lettuce, it's good enough for me!
22:12 Andy joined 22:37 IllvilJa joined 22:41 kid51 joined
DietCoke purl, no C is for cookie, and it's good enough for you. 22:48
purl ...but no c is way simpler than Perl...
DietCoke purl, no, C is for cookie, and it's good enough for you.
purl okay, DietCoke.
22:53 tetragon joined
cjfields Is the plan to merge rakoo back over to trunk? 22:53
cjfields reads back, smacks self 22:54
okay, disregard that last bit...
22:59 mire joined 23:27 ank joined 23:32 Zaba_ joined 23:36 Limbic_Region joined
kid51 DietCoke: ping 23:44
A message concerning the Parrot/Rakudo buildfest workshop at YAPC::NA::2008 in Chicago (Wed June 18). I'm sending email to people who have expressed interest in mentoring or who *might* be interested in mentoring. If you can take the time to read/respond to this mail, please do so. 23:47
And if you're not yet on my list of contacts for this workshop, please ping me or msg me or email me or whatever.
23:48 bacek_ joined 23:49 bacek_ joined 23:55 tetragon_ joined