|
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
|
|||