Camelia, the Perl 6 bug

IRC log for #parrot, 2008-05-30

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:04 cognominal joined #parrot
00:10 AndyA joined #parrot
00:12 ank joined #parrot
00:14 rdice joined #parrot
00:45 smash i'm off.. cya all tomorrow
00:50 rdice joined #parrot
00:55 cout joined #parrot
01:11 teknomunk left #parrot
01:17 DietCoke purl msg smash you still on for the release in June? =-)
01:17 purl Message for smash stored.
01:17 * DietCoke is pretty sure he's had that conversation already, but can't hurt to double-check.
01:44 Zaba_ joined #parrot
01:46 pmichaud does the release occur smack-dab in the middle of yapc::na ?
01:47 Hinrik left #parrot
01:48 Tene pmichaud: we could always move the release to the week before.
01:48 pmichaud I don't think it's a problem -- was just noting the date.
01:48 pmichaud going to yapc::na ?
01:48 purl rumour has it going to yapc::na is particle, Coke, cotto, rjbs, confound, hobbs, Alias, jjore, pmichaud, allison, uri, chargrill, Abigail, stevan, waltman
01:48 pmichaud going to yapc::na 2008
01:48 pmichaud going to yapc::na 2008?
01:49 Tene I was going to.  Dunno if I'll get around to it now, though.
02:04 TonyC joined #parrot
02:24 tetragon joined #parrot
02:44 bacek_ yapc::na?
02:44 bacek_ purl?
02:44 purl yes, bacek_?
02:44 bacek_ purl: yapc::na?
02:44 purl bacek_: bugger all, i dunno
02:44 bacek_ purl: you are most stupid piece of code I see ever!
02:44 purl ...but purl is a buggy piece of shit or a flooterbuck or a douchebag or an autonomic handjob system, well beyond the need for human intervention or a retard or a trannybot or a fuckslut in GumbyBRAIN's mind or going alone. or almost an anagram of Donaudampfschiffahrtskapitaensmuetzenkordel or a perv or an auto-triage bot or a she or a smartass or the sixth beatle. or http://github.com\/dagbrown\/flooterbuck\/...
02:47 pmichaud yapc::na is http://www.yapc.org/
02:47 pmichaud yapc::na is also http://conferences.mongueurs.net/yn2008/
02:47 purl okay, pmichaud.
02:53 bacek_ pmichaud: btw, "!flatten" was a good idea :)
03:00 nopaste joined #parrot
03:08 tetragon joined #parrot
03:18 bacek_ > my @kv = kv(hash(a=>1, b=>2));
03:18 bacek_ No applicable methods.
03:18 pmichaud (!flatten)  well, I almost went all the way to eager lists, but decided against it.
03:19 pmichaud I don't know that I created function versions of all of the .kv, .keys, etc. yet
03:19 bacek_ looks like a bug in type matching for inherited classes in 'multi'
03:19 bacek_ there is kv(Mapping)
03:20 bacek_ line 184 in Mapping.pir
03:21 bacek_ or some mistcommunication between 'protoobjects' and PIR's multi
03:24 pmichaud do you still have that pod comment bug exampl somewhere?
03:25 bacek_ pmichaud: just a sec.
03:30 TonyC joined #parrot
03:30 pmichaud even if I change kv to have :multi(_) it's not being found.
03:34 bacek_ http://nopaste.snit.ch/13048
03:34 pmichaud ohhhh, I know what the problem is with kv.
03:34 pmichaud okay, I can fix it.
03:35 bacek_ this is for pod parsing
03:35 bacek_ and it's your nopaste :)
03:37 pmichaud you had a shorter version earlier.  :)
03:37 bacek_ I still trying to google it :)
03:39 nopaste "bacek" at 211.29.157.151 pasted "pod parsing error for pmichaud" (13 lines) at http://nopaste.snit.ch/13114
03:39 bacek_ I crafted new one. It's faster :)
03:39 pmichaud yes, muuuuch better
03:39 pmichaud thank you
03:40 bacek_ removing {} in begging solve parsing problem
03:41 pmichaud yes
03:42 pmichaud it must be because {} is a circumfix:{}
03:43 pmichaud no, that's not it.
03:43 bacek_ no.
03:44 bacek_ you can put 'sub call2 {' in first line
03:44 bacek_ still failing
03:44 pmichaud right.
03:56 pmichaud a-ha
03:57 pmichaud tricky.
03:58 bacek_ tricky?
03:58 purl tricky is probably gone
03:58 pmichaud running spectest_regression now
03:58 pmichaud but the problem is that pod_comment was (recursively) calling <.ws>
03:58 Tene I'm working on a smalltalk grammar.  I could really use a way to trace the rules as they're trying to match.
03:59 pmichaud tene:  when I do the pge refactor (over the course of the next week) I'll add one.
04:00 Tene pmichaud: nice.  thanks.
04:00 pmichaud someone suggested something like %yydebug
04:00 Tene pmichaud++ # better than santa
04:00 bacek_ pmichaud: changing 'begin <.ws> <ident>' to 'begin \h+ <indent>'?
04:00 pmichaud yes.
04:01 pmichaud since that's what STD.pm has now.
04:01 pmichaud that seems to fix the problem.
04:01 bacek_ pmichaud++ # more often than Santa
04:02 pmichaud bacek:  r27932
04:02 dalek r27932 | pmichaud++ | trunk:
04:02 dalek : [rakudo]:
04:02 dalek : * Fix problem with <pod_comment> rule destroying statement end
04:02 dalek : * bacek++ for providing a simple test case
04:02 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27932
04:03 * bacek_ running git svn rebase
04:03 pmichaud back in a bit
04:04 bacek_ pmichaud: 'end' is just \N* in STD.pm
04:06 bacek_ your version fail to parse '=end\n'
04:08 bacek_ because it expects $<indent>
04:08 nopaste "bacek" at 211.29.157.151 pasted "pod parsing error for pmichaud (again)" (20 lines) at http://nopaste.snit.ch/13115
04:18 pmichaud there are two =end's in STD.pm
04:18 pmichaud =begin ... =end  w/o an <ident> must be new.
04:21 cotto_home particle1, ping
04:25 pmichaud bacek_: I'm pretty sure that the pod you just pasted is incorrect.
04:25 pmichaud "=begin pod" has to be followed by a matching "=end pod"
04:26 bacek_ pmichaud: looks like my mistake.
04:26 pmichaud but I'll go ahead and add the non-ident version
04:26 bacek_ but we should add anonymous version
04:26 bacek_ :)
04:35 dalek r27933 | pmichaud++ | trunk:
04:35 dalek : [rakudo]:
04:35 dalek : * Add anonymous version of =begin...=end pod_comment.  (bacek++)
04:36 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27933
04:50 bacek_ pmichaud: update_passing_test reports new test to add
04:52 pmichaud new test file, that is?
04:52 nopaste "bacek" at 211.29.157.151 pasted "new tests to include in regression" (8 lines) at http://nopaste.snit.ch/13116
04:53 pmichaud wow
04:53 pmichaud that's quite a few.
04:53 bacek_ pmichaud: it can be more if you'll fix 'kv' :)
04:53 pmichaud okay.
04:53 pmichaud just a sec.  that will take a few minutes.
05:04 spinclad pmichaud: (backlogged, now useless i'm sure) re http://www.pmichaud.com/sandbox/post3.txt:27:  'say "...\n"' ?  # woof!
05:05 pmichaud spinclad: thanks.  Actually I was working on that in another win until I started fixing 'kv' and friends.
05:10 spinclad and like others said, it ends rather suddenly.  it would be worth working in that you get back the protoob for free, if you can...  other than those, a good intro.
05:10 pmichaud yes, working on the ending as well.  :-)
05:12 * PerlJamischromatic stares back at DietCoke
05:12 pmichaud (update)  'kv' fix is taking a while because I'm thinking about exports in general.  :-)
05:51 * pmichaud is continually amazed at how hard he'll work to be lazy.
05:52 particle1 tomorrow, i'll make moritz++'s update_passing_test_data.pl more general and portable
05:53 particle1 tonight, i sleep while pmichaud++ works hard at being lazy &
05:58 spinclad pmichaud: this is the True Laziness.  (someday i will know it too.)
06:08 bacek_ S29?
06:08 purl S29 is probably http://svn.pugscode.org/pugs/​docs/Perl6/Spec/Functions.pod
06:14 uniejo joined #parrot
06:17 bacek_ where 'prefix:<\\>' described?
06:18 pmichaud S03
06:18 pmichaud (it's not likely to be implemented soon.)
06:18 bacek_ why?
06:18 pmichaud because it creates a Capture, and we have a lot of re-jiggering to do to work with captures.
06:19 Zaba joined #parrot
06:19 pmichaud (er, re-factoring.)
06:19 bacek_ :)
06:20 * bacek_ can't find prefix: in STD.pm...
06:20 pmichaud it might not be in there yet.
06:20 pmichaud it wasn't there a couple of weeks ago.
06:20 pmichaud it would be  prefix:sym<\\>
06:22 bacek_ pmichaud: yes... But it is not there... Yet.
06:22 bacek_ STD.pm?
06:22 purl i guess STD.pm is http://svn.pugscode.org/pugs/src/perl6/STD.pm
06:24 bacek_ not in latest version...
06:24 ank joined #parrot
06:25 bacek_ we should remove S02-literals/hex_char.t from regression (for now)
06:25 bacek_ there is 4 skipped test from 4
06:25 bacek_ it useless
06:26 pmichaud rakudo could do those if it could be invoked with --encoding=utf8
06:27 pmichaud (for just that test.)
06:27 pmichaud (otherwise it'll really slow things down.)
06:32 dalek Conrad Schneiker | Parrot:
06:32 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?parrot
06:33 bacek_ pmichaud: test 1 and 4 failed
06:35 pmichaud okay, we can remove it.
06:35 pmichaud (hex_char.t that is)
06:35 pmichaud should probably change "parse error" to  "rakudo doesn't default to utf8"
06:37 dalek Conrad Schneiker | Parrot:
06:37 dalek link: http://www.perlfoundation.o​rg/parrot/index.cgi?parrot
06:43 clunker9__ joined #parrot
06:55 cognominal joined #parrot
07:00 pmichaud argggh, getting tired.
07:01 pmichaud every time I almost get the problem generically solved, Parrot throws up another "oh, you can't do that."
07:06 pmichaud oh well, I'll have to let it go for tonight.  Need sleep, then make breakfast, send kids to school, etc.
07:06 pmichaud g'nite
07:12 bacek_ pmichaud: gnite
07:26 iblechbot joined #parrot
07:37 IllvilJa joined #parrot
07:53 Zaba_ joined #parrot
07:54 moritz I'm getting occasional memory corruptions while running 'make spectest_regression'
08:47 jonathan hi all
08:48 bacek_ hi jonathan
08:50 * moritz waves to the cheering croud
09:06 mire joined #parrot
09:30 Zaba joined #parrot
09:43 Whiteknight joined #parrot
09:59 Ademan joined #parrot
10:05 dalek r27934 | jonathan++ | mutablerakudo:
10:05 dalek : [rakudo] Huge refactor of type checking of variables, for mutables branch. We now do the type check upon assignment.
10:05 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27934
10:06 jonathan Phew. I'm glad to have that bit done.
10:19 cognominal joined #parrot
10:30 dalek r27935 | jonathan++ | mutablerakudo:
10:30 dalek : [rakudo] Fix our variables that aren't assigned to at the point of declaration. This allows us to run Test.pm again, so the spectest damage can be seen.
10:30 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27935
10:40 dalek r27936 | jonathan++ | mutablerakudo:
10:40 dalek : [rakudo] Initialize mutables with proto-object, if that is what is named as the type. This gets my Dog $fido working again, and probably passes one of the failing spectests.
10:40 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27936
10:41 zarchne joined #parrot
10:41 bacek bacek__> rakudo: my @r; @r.push<hi>;
10:41 bacek <exp_evalbot> rakudo r27936 OUTPUT[Method 'viviself' not found for invocant of class 'PAST::Op'␤current instr.: 'parrot;PAST::Compiler;keyed' pc 6207 (src/PAST/Compiler.pir:1721)␤
10:42 bacek looks like PAST bug...
10:44 Whiteknight joined #parrot
11:09 cognominal joined #parrot
11:18 cognominal joined #parrot
12:10 cognominal_ joined #parrot
12:19 IllvilJa joined #parrot
12:21 tetragon Hrm... My build fails when I use make -j4
12:29 ank joined #parrot
12:49 tetragon japhb: Triangle spins on OS X 10.4 (32-bit Intel) using 20080527 patch
12:53 pmichaud 10:41 <bacek> bacek__> rakudo: my @r; @r.push<hi>;
12:54 pmichaud granted, PAST isn't doing the right thing, but this would end up being a runtime error anyway, since  @r.push returns an Int
12:54 jonathan pmichaud: Just working on trying to merge trunk into the Mutable branch.
12:54 jonathan So I can see what spectest_regression fails
12:54 pmichaud ouch
12:54 jonathan As in, what filas as a result of my changes
12:55 jonathan As opposed to, things changed in spectests.
12:55 jonathan Due to additions in trunk.
12:55 jonathan Yes
12:55 pmichaud I made some *significant* changes to trunk yesterday.
12:55 pmichaud in particular,   my @a = 1;   now works.  :-)
12:56 jonathan Ouch is the word.
12:56 jonathan I reviewd your changes and can see how to combine our work, I think.
12:56 jonathan How on earth do you handle files that were added to trunk?
12:56 Zaba pmichaud, what does it do?
12:56 Zaba the my @a = 1; thing
12:58 jonathan svn: Copyfrom-url 'https://svn.perl.org:/parrot/tr​unk/languages/perl6/src/classe
12:58 jonathan s/Array.pir' has different repository root than 'https://svn.perl.org/parrot'
12:58 jonathan If you have to handle that manually,  I see what people meant about svn's merge support sucking.
12:58 shorten jonathan's url is at http://xrl.us/bk9pm
12:58 d4l3k_ joined #parrot
12:58 iblechbot joined #parrot
12:59 pmichaud as does  my %hash = (1, 2, b=>c);
12:59 pmichaud how are you doing the merge?
12:59 pmichaud I normally do    svn merge -r x:head  https://svn.perl.org/....
12:59 pmichaud and 'svn merge' handles additions
12:59 pmichaud the big conflict we're likely to have is that the changes I made yesterday usurp the Perl6Array and Perl6Hash class names
12:59 pmichaud but yes, I don't think it'll be difficult to merge mutable with trunk
12:59 pmichaud you want to make sure you're merging from the same repository directory as your working directory
12:59 pmichaud my suggestion at this point would be to just get mutables working for Perl6Scalar
13:00 jonathan pmichaud: I was going a directory at a time, just to try and keep it simpler
13:00 jonathan C:\Hacking\mutable\languages\perl6\src\classes>svn merge -r27798:HEAD https://sv
13:00 jonathan n.perl.org:/parrot/trunk/l​anguages/perl6/src/classes
13:01 pmichaud personally, if I were doing a merge into the branch, I'd do it this way
13:01 pmichaud (1) copy my working directory into a backup location somewhere
13:01 pmichaud (2) recheck-out a new trunk
13:02 pmichaud (3) copy the significant files that changed from the branch into the new trunk.  In this case I think it's principally mutable.pmc, perl6scalar.pmc
13:02 pmichaud (4) hand-merge the changes for actions.pm and guts.pm
13:02 jonathan And a whole bunch of changes to actions.pm and elsewhere...
13:02 jonathan ouch.
13:02 pmichaud how much is there "elsewhere"?
13:02 jonathan I thought svn was menat to, like, help with stuff.
13:02 pmichaud seems to me like it should be Object.pir, guts.pir, and actions.pm
13:02 jonathan Yeah, you're right actually.
13:03 jonathan There is little besides those.
13:03 pmichaud the point of doing it this way is thatyou're not trying to merge the refactors I did yesterday in List.pir, Mapping.pir, Hash.pir, Array.pir, ......
13:03 pmichaud and I think if we focus only on Perl6Scalar, we can prove that it's all going to work without breaking anything significant in Array and Hash
13:04 pmichaud the main change I did was to create   an   "infix:="  multisub
13:04 pmichaud which is overloaded for Array and Hash
13:04 pmichaud the default infix:= basically calls the old !TYPECHECKEDASSIGN
13:04 pmichaud and I removed !TYPECHECKEDASSIGN from actions.pm (because it's being handled by infix:=)
13:05 jonathan Yeah
13:05 jonathan Now the type check is done inside assign.
13:06 pmichaud which is basically what you've done :-)
13:06 jonathan So that goes away altogether inside my branch.
13:06 pmichaud it's basically gone inside of mine too, except I'm using infix:=   where you're using the assign opcode.    (using the opcode is better -- I just didn't want to mess with vtables for this.)
13:06 jonathan So you would replace the call with just an asign.
13:07 jonathan Aha, OK.
13:07 jonathan Ugh. This looks pretty ugly.
13:07 pmichaud I did offer to do the merge.  :-)
13:07 pmichaud ....actually
13:07 jonathan I'm going to take you up on it. :-)
13:08 pmichaud here's what I propose to do.  (more)
13:08 pmichaud if you're ready for us to do a test merge, I propose to create a new branch just to try merging trunk and mutablerakudo together
13:08 pmichaud if it works out, we merge that into trunk
13:08 pmichaud if not, then we simply drop the branch and you can continue on from where you are now
13:08 jonathan I need to refactor parameter type checking. For now, we'll just rip that out, do the merge.
13:09 jonathan And I'll sort it out afterwards.
13:09 jonathan I think that delaying the merge beyond now is going to make it harder later.
13:09 pmichaud I agree
13:09 jonathan OK, let's go with your suggestion.
13:09 pmichaud okay.  I don't have a lot planned anyway for this morning (other than to write some blog posts, but those can wait :-)
13:10 jonathan I need to post some journal thing I already wrote.
13:10 jonathan and got a talk in 40 minutes or so
13:10 jonathan here for the next 40 before that
13:10 pmichaud yeah, I'm in the same boat.  I have a couple of posts already written but unposted
13:10 pmichaud is mutablerakudo up-to-date committed and all?
13:11 pmichaud (btw, I looked at your branch diffs from this morning and didn't see many conflicts in terms of merging with the stuff I did yesterday)
13:16 gryphon joined #parrot
13:20 jonathan Yes, no local diffs here
13:20 jonathan Does it look along the lines of what you had in mind?
13:20 bacek pmichaud, (about PAST) it doesn't really matter. I can put this code in eval (and it really dies).
13:21 bacek so I can't implement eval_dies_ok in Test.pm
13:24 dalek r27937 | pmichaud++ | trunk:
13:24 dalek : [pct]:
13:24 dalek : * For vivibase, don't try to viviself something that can't be
13:24 dalek :   viviselfed.  (We probably need more work on this in general, but
13:24 dalek :   this resolves the immediate issue for now.)
13:24 dalek : * From reports by bacek++
13:24 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27937
13:24 pmichaud bacek:
13:25 pmichaud > say (1..100).hash<55>;
13:25 pmichaud 56
13:25 bacek pmichaud, excellent
13:25 pmichaud we don't do hash slices yet..... but that's a separate issue.  :-)
13:26 pmichaud okay, let's see if we can merge mutables
13:26 * bacek doing git stash; git svn rebase; git stash apply
13:28 dalek r27938 | pmichaud++ | mutamerge:
13:28 dalek : New branch to perform a test merge of jonathan++ 's mutablerakudo
13:28 dalek : branch with trunk.
13:28 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27938
13:34 bacek bacek@icebolt:~/src/parrot/languages/perl6$ cat eval.pl
13:34 bacek eval "my @r; @r.push<hi>;";
13:34 bacek bacek@icebolt:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc eval.pl
13:34 bacek No applicable methods.
13:35 bacek it dies in parrot guts now...
13:35 Zaba_ joined #parrot
13:35 pmichaud Int doesn't know how to   {'hi'}
13:35 bacek but it shouldn't kill whole program in 'eval'...
13:36 pmichaud why not?  eval can throw exceptions
13:36 bacek yeek...
13:36 pmichaud if you want to stop the exception, use a try { ... }
13:36 bacek its slightly different from p5 :)
13:37 bacek bacek@icebolt:~/src/parrot/languages/perl6$ cat e.pl
13:37 bacek use Test;
13:37 bacek plan 1;
13:37 bacek eval_dies_ok "my @r; @r.push<hi>;", '.push<hi> should emit error.';
13:37 bacek bacek@icebolt:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc e.pl
13:38 pmichaud note that 'eval' in rakudo really doesn't work.
13:38 pmichaud also, we should be eliminating "eval_dies_ok"
13:38 nopaste "bacek" at 202.7.166.182 pasted "Test.pm eval_dies_ok impl" (17 lines) at http://nopaste.snit.ch/13117
13:39 bacek pmichaud, hmm.. Why>
13:39 bacek ?
13:39 pmichaud oh, never mind, I see it in fudge
13:39 bacek me too :)
13:39 pmichaud but why use "eval_dies_ok" there?
13:40 pmichaud I think it should just be    dies_ok( { my @r;  @r.push<hi> } , ... );
13:40 bacek pmichaud, it's just implementation. Not related to particular test
13:40 Whiteknight joined #parrot
13:41 pmichaud ah.
13:41 pmichaud your eval_dies_ok impl looks good to me :-)
13:42 bacek pmichaud, :)
13:44 bacek pmichaud, btw, there is another problem with 'multi'. If I'll replace 'sub push' in src/classes/Array.pir from :multi(Perl6Array, _)' to ':multi(Perl6Array)' it will handle @a.push;
13:45 bacek so, question is - it is really should be without '_' or parrot can't handle omitted args in multi sub properly?
13:45 pmichaud the _ means "required argument"
13:46 pmichaud so it should be without '_'
13:46 bacek ok. Then you should fix Array.pir :)
13:46 pmichaud I'm redoing all of that, yes.  But I need to work on the mutables merge first
13:46 bacek according to S29-array/push.t
13:46 pmichaud so that will likely be later today.
13:46 bacek pmichaud, ok.
13:47 pmichaud I'm trying to avoid us having to create a bunch of    .sub 'foo' :multi(XYZ);   .param pmc xyz;   .return xyz.foo();    .end    methods
13:47 bacek yeah... It's really weird...
13:48 bacek s/It's/They are/
13:48 pmichaud well, it appears it can be done with a really smart exporter.... but getting the MultiSub management right is slightly tricky
13:48 pmichaud that's what I was working on last night before I got too tired to trust what I was writing :-)
13:49 bacek :) It's really good idea don't write code after 2AM
13:50 pmichaud it worked the night before last :-)
13:50 pmichaud I remember staying up til 3am writing some really cool code, but I don't remember now what it was.
13:50 bacek I know. It was a 'day' here :)
13:51 bacek pmichaud, question for 42 may be?
13:52 jonathan pmichaud: I wrote some PIR a while back that took a method from a class (basically, the sub PMC) and (provided it was makred multi) you could just push it into a PMC for that method name in the HLL root namespace.
13:52 pmichaud oh, yes, I remember now.  I got    "my @a = 1;"  to work.
13:52 pmichaud jonathan: yes, that's what I was doing last night.
13:52 pmichaud essentially  MultiSub isa ResizablePMCArray
13:52 jonathan Yup.
13:52 pmichaud but I was missing a step somewhere
13:52 mire joined #parrot
13:52 pmichaud or must've been missing a step
13:53 pmichaud or some of the liberties that P6object is taking with methods wasn't working out
13:53 pmichaud also,  I discovered that   ns.'add_sub'(...)    doesn't like MultiSub
13:54 jonathan Hmm
13:54 pmichaud anyway, I had a version that was almost working except in one case, but then decided sleep was the better option for now.
13:54 * bacek thinks that pmichaud lost 'ultimate question' :)
13:56 pmichaud oh, I know that question.
13:56 pmichaud it's something along the lines of   "When will Perl 6 be finished?"
13:57 jonathan Christmas! Which one not specified. :-)
13:57 pmichaud Q:  When will Perl 6 be finished?
13:57 pmichaud A:  42.
13:57 jonathan Though the question I get more from realistic people now, is when can we expect a first alpha release of Rakudo.
13:57 pmichaud that's an interesting question.
13:57 pmichaud I suspect it depends on when I get a chance to improve parsing speed.
13:58 jonathan Yeah. I've been saying that certainly not as soon as this summer, but we might make it before the year is out.
13:58 pmichaud (which I'm still thinking will happen this summer)
13:58 pmichaud we do have to get mmd fixed
13:59 jonathan http://use.perl.org/ :-)
13:59 pmichaud so yes, Q4 2008 seems plausible.
13:59 bacek and replace string concatenation with string array in parser... GC in parrot it really, really bad
14:00 jonathan bacek: Yeah, but if the GSOC project delivers the new GC, hopefully that's not going to be an issue after the summer either. :-)
14:00 * jonathan crosses his fingers.
14:01 pmichaud right now the big performance bottlenecks I see are
14:01 bacek jonathan, steal some code from Harmony?
14:01 pmichaud (1) need protoregexes and ltm
14:01 pmichaud (2) garbage collection
14:01 pmichaud (3) strings
14:01 Whiteknight I am going to do my absolute best on that GC.
14:01 * Whiteknight crosses his fingers too
14:01 jonathan Whiteknight: I know, and I'm really happy to have someone working on it. :-)
14:01 * bacek takes more popcorn
14:01 bacek :)
14:01 braceta joined #parrot
14:03 bacek ("moose".length)
14:03 bacek eval("moose".length)
14:03 bacek Method 'length' not found for invocant of class 'Perl6Str'
14:03 bacek hmm...
14:03 pmichaud ....what is this  ".length"  thing you're writing?  ;-)
14:03 pmichaud Perl 6 has depth but no length.
14:03 bacek pmichaud, this is from spectest
14:03 pmichaud then spectest is real wrong there.
14:04 pmichaud (if it's expecting a .length to work)
14:04 bacek its only one test which uses eval_dies_ok
14:04 pmichaud okay, then.  It will indeed die.  :-)
14:04 bacek but why it uses eval?
14:04 pmichaud I don't know.
14:05 pmichaud some of the spectests were cargo-culted from P5's test suite without necessarily a lot of thought as to what they were doing, or how it might be different for P6
14:05 bacek > try{ "m".lenght }; say $!
14:05 bacek Method 'lenght' not found for invocant of class 'Perl6Str'
14:05 pmichaud i.e., in many cases we have P6 tests being written by P5 programmers
14:05 bacek is it expected behaviour?
14:06 pmichaud that does what I expect, yes.
14:07 bacek hmm... Why it is 'compile-time error' instead of run-time?
14:07 pmichaud what you just shows is a run-time error
14:08 dalek r27939 | Whiteknight++ | gsoc_pdd09:
14:08 dalek : [gsoc_pdd09] merging to trunk r27938
14:08 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27939
14:11 bacek pmichaud, but why it wasn't caught by 'try'???
14:11 pmichaud it was caught
14:11 pmichaud at least it appears it was caught.  You then turned around and printed the error message with   "say $!"
14:11 bacek pmichaud, my bad...
14:12 * bacek turns to pumpkin after midnight.
14:13 cognominal joined #parrot
14:16 pmichaud when is it not after midnight?  ;-)
14:17 ank midnight!
14:17 purl midnight is 12 am right?
14:18 * cizra has never understood the AM/PM system.
14:18 cizra I mean, the border cases
14:18 ank i always have to think about 12:01
14:18 cizra 1 PM is afternoon. 12 AM is what?
14:19 ank 12am = 00
14:19 cizra Well, how do you say midday then?
14:19 pmichaud "noon"
14:19 cizra With numbers?
14:19 ank what time is it one minute before 1pm?
14:19 purl ank: It's nearly twenty past seven in the morning where I am.
14:19 pmichaud 12pm
14:20 pmichaud one minute before 1pm is 12:59pm
14:20 ank exactly :D
14:20 cizra fuckity.
14:20 cizra Why is the system so sick? The next thing after 12 pm is 1 pm?
14:20 ank think of zero instead of 12
14:21 pmichaud because people have difficulty using 0-based arrays.
14:21 cizra heh. Well, I guess you have to grow up in it to really accept it.
14:21 pmichaud so instead of 0..11, we got stuck with 1..12 and a rotate :-)
14:21 pmichaud just take all of the hours and modulo 12
14:21 NotFound It's inherited code ;)
14:22 teknomunk joined #parrot
14:22 pmichaud "Because there were 20 or so pepole already using it, and it would be too difficult to switch."
14:22 NotFound break;
14:23 bacek bacek@icebolt:~/src/parrot/languages/perl6$ grep -r eval_dies_ok t/spec|grep -v svn
14:23 bacek t/spec/fudge:my $IS = '\\b(?:is|ok|nok|is_deeply|is_approx|i​snt|like|unlike|eval_dies_ok|cmp_ok|is​a_ok|use_ok|throws_ok|dies_ok|lives_ok​|eval_lives_ok|pass|flunk)(?:\\b|_)';
14:23 bacek much better. We don't need 'eval_dies_ok' actually
14:24 pmichaud well, someone might want to use   eval_dies_ok on a string that doesn't actually parse
14:24 bacek but it is not in 'spec'
14:24 bacek some internal unittests probably
14:24 pmichaud you mean none of the spec tests are using it?
14:25 bacek pmichaud, exactly
14:25 pmichaud there may be some tests outside of the spec/ suite that use it that just haven't been migrated over to t/spec/ yet
14:25 bacek I'll take care about them :)
14:26 AndyA joined #parrot
14:26 NotFound The "compile-time" can mean that the exception throws when eval is compiling his argument.
14:26 bacek anyway 'eval_dies_ok' officially not implemented in rakudo.
14:26 bacek (for spectest)
14:35 bacek bacek@icebolt:~/src/parrot/languages/perl6$ grep -r eval_dies_ok .|grep -v svn
14:35 bacek ./t/spec/fudge:my $IS = '\\b(?:is|ok|nok|is_deeply|is_approx|i​snt|like|unlike|eval_dies_ok|cmp_ok|is​a_ok|use_ok|throws_ok|dies_ok|lives_ok​|eval_lives_ok|pass|flunk)(?:\\b|_)';
14:35 bacek bacek@icebolt:~/src/parrot/languages/perl6$
14:35 bacek pmichaud, there is no 'eval_dies_ok' in rakudo and spec test at the moment :)
14:36 pmichaud right.  But there are still quite a few tests in pugs' t/  hierarchy that aren't part of t/spec/  yet
14:37 pmichaud and some of those are using 'eval_dies_ok'
14:37 pmichaud whether they should be using 'eval_dies_ok' is a legitimate question, but there are some tests using it that could end up in t/spec/
14:37 wknight8111 joined #parrot
14:37 Zaba joined #parrot
14:41 bacek pmichaud, ok, I'll save this patch somewhere. Just in case if it will be required.
14:41 bacek But there is no point to commit it right now
14:44 * bacek doing  svn co http://svn.pugscode.org/pugs/t... Internet in Australia are really bad...
14:51 cjfields joined #parrot
14:53 cjfields_ joined #parrot
14:54 cjfields_ joined #parrot
14:55 jonathan pmichaud: How's the merge going?
14:55 pmichaud I'm getting a weird error.
14:55 jonathan Ah.
14:55 jonathan Specifically?
14:56 pmichaud (also got distracted on this end so just really got into it)
14:56 jonathan I've seen plenty of weird errors while working on this. :-)
14:56 pmichaud (details in a sec)
14:56 pmichaud if I start from trunk and copy mutable_pmc.template from mutablerakudo into my branch, but make no other changes, then I don't get a working perl6.pbc
14:56 pmichaud even though nothing else in rakudo is using Mutable (as far as I know)
14:57 jonathan Oh.
14:57 jonathan That is...odd..
14:57 pmichaud I'm rebuilding just to make sure.
14:57 jonathan oh
14:57 pmichaud and I get a very strange error.
14:57 jonathan C errors?
14:57 pmichaud no, Null PMC in get_string()
14:57 pmichaud somewhere in the P6object guts.
14:57 jonathan Ah.
14:57 jonathan OK, that is weird.
14:58 PerlJam pm: are you sure you had a working perl6.pbc to begin with ?  :)
14:58 pmichaud PerlJam: actually, yes.  I did spectest_regression on my branch before anything else.
14:58 pmichaud just to make sure I had a known good starting point.
15:02 pmichaud let's make sure I can build the mutablerakudo branch also
15:03 pmichaud jonathan: did you have to make any changes outside of the languages/perl6/ directory?  (e.g., to parrot core)
15:07 jonathan I don't *think* so. Let me check.
15:07 pmichaud doesn't look like it.
15:07 pmichaud my mutablerakudo branch builds okay.
15:07 jonathan I don't remember doing so.
15:07 jonathan OK
15:07 jonathan Hmm
15:08 jonathan Have you tried updating the entire contents of the pmc directory (at least, the ones I added/changed) together?
15:08 jonathan Also, the makefile.
15:08 pmichaud the only file that significantly changed was mutable_pmc.template
15:08 * bacek warned about merging in svn...
15:08 pmichaud I'm doing the merge by hand -- it's not a an svn issue in this case
15:08 jonathan I wonder if anything changed in Parrot in the meantime.
15:09 jonathan I'd not think so, though.
15:09 pmichaud yes, it's really kinda weird.
15:09 jonathan What's the branch called?
15:09 pmichaud mutamerge
15:09 pmichaud but I haven't committed anything new to it yet.
15:10 jonathan Let me grab it and see if I can reproduce.
15:10 jonathan ...never quote that last sentence out of context...
15:10 pmichaud ("Speakers so loud they.... ")
15:10 pmichaud (don't know why that just popped in my head.)
15:11 pmichaud oh....
15:11 pmichaud maybe I need to copy build/gen_mutable_pmc.pl also
15:11 jonathan Ah.
15:11 * bacek always use two step merge in svn: trunk->branch, branch->trunk
15:11 jonathan Yes, I maybe fixed things in there.
15:12 pmichaud yes, those are different.
15:13 pmichaud ah, that was it.
15:13 pmichaud okay, I'll commit that.
15:13 cotto-work joined #parrot
15:14 pmichaud now let's see what's in Perl6Scalar
15:15 jonathan ok
15:15 dalek r27940 | pmichaud++ | mutamerge:
15:15 dalek : [mutamerge]:
15:15 dalek : First, grab the new Mutable PMC from mutablerakudo branch.
15:15 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27940
15:15 jonathan getting myself a copy of the branch built so I can help if needed.
15:15 pmichaud Perl6Scalar simply extends Mutable.
15:15 pmichaud That's good.
15:15 pmichaud We might not even need it as a PMC, but could instead do that in PIR.
15:16 jonathan Speeeeeeed. ;-)
15:16 jonathan Array and Hash are, I guess, easier done in PIR though.
15:16 pmichaud yes, but even Scalar is going to have to be isa(Perl6Object)
15:16 jonathan True
15:16 pmichaud we'll still get the same speed
15:16 jonathan Maybe.
15:17 pmichaud well, we do get the ProxyPMC indirection, yes.
15:17 jonathan Anyway, we shouldn't really worry about that too much yet.
15:17 pmichaud mind if I do Perl6Scalar in PIR to start?
15:17 pmichaud it'll be very short -- just a class registration
15:18 jonathan Sure
15:18 pmichaud since there are no significant methods to speak of
15:18 jonathan Though actually I think we need to move the type checking logic in Mutable now to be in Scalar.
15:18 jonathan Because types on arrays are on the elements.
15:18 pmichaud it should be basically the same, in principle  (more)
15:18 pmichaud the "type"  always refers to the types of the contents
15:19 jonathan Yeah, but you set the contents of an array with keyed vtables, not assign.
15:19 pmichaud except there is no assign_keyed vtable  (although I've asked about getting one)
15:19 jonathan Ah. Hm.
15:20 pmichaud set_*  is for binding, not assignment.  We shouldn't muck with that.
15:20 jonathan True.
15:21 pmichaud I've asked about having keyed variants of assign, but allison didn't seem too keen on the idea.  I think it's a key feature missing from parrot
15:21 pmichaud the 'copy' opcode is just a way to work around it.
15:21 pmichaud what we'll end up with instead is that every element of an array will have a Perl6Scalar in it.
15:22 pmichaud which means we've doubled the number of gc-able items.
15:23 jonathan Yeah. I hate that.
15:23 jonathan But it gets the right semantics.
15:23 PerlJam sounds like perl5
15:23 pmichaud but we could do better with an assign_keyed
15:23 jonathan Yeah, agree.
15:24 jonathan we'd need int variant of it too, I guess.
15:24 pmichaud yes.
15:24 pmichaud for now I think I'm going to continue to let array elements work as they do, though.
15:24 jonathan Though the int hack maybe ain't going to work for us long term.
15:24 pmichaud okay, time for scalar.
15:25 jonathan multi method postcirfumfix:<[]> MyWeirdArray(Complex $key) { ... }
15:25 jonathan But happily we'll not worry about this, for a while yet. :-)
15:27 particle pmichaud:  what do you think about using dynamic ops for assign_keyed?
15:27 pmichaud I think they should be core.
15:28 particle think of dynops as a way to make your point
15:28 particle rather than going for the whole shebang without having any data to back it up
15:28 jonathan Right. If we do them right in dynops, we can show they're needed for core.
15:28 pmichaud then I don't have a problem with it.  :-)
15:28 jonathan It's not hard to move them there.
15:28 particle yep, easy to move dynops to core ops
15:28 jonathan Plus they seem to work pretty portably-ish.
15:29 jonathan I know they work on Win32, because I used them in .Net.
15:29 pmichaud the thing is, in order for assign_keyed to be useful it has to be supported in PCT
15:29 pmichaud which basically means that anything using PCT or PGE would need them.
15:29 pmichaud which kinda defeats the purpose of having them as dynops :-)
15:29 pmichaud if it was just for Rakudo, I could see it.
15:30 particle why can't pct have dynops?
15:30 pmichaud well, it *can*... but I've heard that dynops are a little "evil", and it's hard to imagine us doing much on Parrot w/o PCT
15:30 pmichaud (from an HLL perspective)
15:30 jonathan Sounds, like a good way to make a point. ;-)
15:31 pmichaud anyway, that's something to do for later I guess
15:31 jonathan "I did these dynops but dynops suck and now PCT is using them. I can haz core?"
15:31 jonathan Of course, it really wants vtable methods.
15:31 jonathan Not just the matching ops.
15:32 pmichaud correct.
15:33 pmichaud oh, come to think of it, we probably *could* make it work in rakudo with the way things are set up now, without having to do it in PCT
15:33 pmichaud anyway, I'm getting off-track of my task.
15:34 * jonathan cracks the merge whip in pm's direction
15:34 pmichaud oh.
15:35 pmichaud (nm.)
15:35 pmichaud assign handles all of the typecheck stuff now?
15:36 jonathan yES
15:36 jonathan See assign vtable method in mutable
15:36 pmichaud gREAT!
15:36 jonathan Caps lock. We fails it.
15:40 dalek r27941 | pmichaud++ | mutamerge:
15:40 dalek : [mutamerge]:
15:40 dalek : * Add a Perl6Scalar class, with associated 'infix:=' method.
15:40 dalek : * We aren't using this yet -- just defining it for the moment.
15:40 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27941
15:49 cognominal joined #parrot
15:52 PerlJam Are there any relatively simple things that need doing for rakudo?  (I'll have a couple of hours to play once I put the kids down for a nap)
15:56 pmichaud earlier bacek posted some spectests that supposedly can be added to spectest_regression
15:56 Theory joined #parrot
15:57 particle PerlJam: tools/update_passing_test_data.pl needs work
15:57 particle specifically, it needs to be made cross-platform, and one more thing...
15:58 particle it should accept two targets, "full" and the "subset", so we can discover which files from "full" can be moved to "subset" because they're passing.
15:59 particle right now it works *only* for spectest and spectest_regression
15:59 particle i'd like it to work for spectest and localtest, spectest_regression and localtest, x and y
16:06 gryphon joined #parrot
16:13 pmichaud getting an odd segfault.
16:14 dalek r27942 | jonathan++ | trunk:
16:14 dalek : [rakudo] Fix to make loop { ... } work again (that is, when you don't supply a clause in brackets). Not quite sure why we had to do this fix - it may be a bug in NQP or PGE.
16:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27942
16:14 jonathan sub add_firsts(@a, @b) { say @a[0] + @b[0] }
16:14 jonathan add_firsts(<1 2 3>, <4 5 6>)
16:14 jonathan am I rihgt in thinking this should give 5?
16:14 pmichaud yes
16:14 pmichaud but I haven't worked on array parameters yet.
16:14 jonathan get_pmc_keyed_str() not implemented in class 'ResizablePMCArray'
16:14 jonathan is probably not the righ thing for it to give then :-)
16:14 jonathan ah, OK
16:15 jonathan looks like we're leaving here now
16:15 jonathan back online later, probably...maybe... ;-)
16:16 pmichaud okay.
16:16 pmichaud I'll need a break soon also.  I'm still working on the merge.
16:16 pmichaud I'll make frequent commits, though.
16:16 jonathan cool
16:16 jonathan pmichaud++
16:16 jonathan # saving me from svn horrors
16:17 particle pmichaud++ #sneaky way to review jonathan++'s code
16:21 pmichaud if we do     assign $P0, $P1
16:21 pmichaud and both $P0 and $P1 are Perl6Scalars
16:21 pmichaud is this causing $P1 to become the value attr of $P0 ?
16:22 pmichaud (i.e., $P0 delegates to $P1 which delegates to ... )
16:22 dalek r27943 | pmichaud++ | mutamerge:
16:22 dalek : [mutamerge]:
16:22 dalek : * First cut at merging actions.pm.  This breaks things a bit, as I'm
16:22 dalek :   now getting an odd segfault when performing "does" on a Perl6Scalar
16:22 dalek :   (which happens quite a bit due to list context).
16:22 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27943
16:31 braceta joined #parrot
16:57 dalek r27944 | Whiteknight++ | gsoc_pdd09:
16:57 dalek : [gsoc_pdd09] implemented basic pool allocators by borrowing heavily from GC_GMS.
16:57 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27944
17:01 barney joined #parrot
17:09 ejs joined #parrot
17:14 dalek r27945 | pmichaud++ | mutamerge:
17:14 dalek : [mutamerge]:
17:14 dalek : * Okay, using Perl6Scalar as a subclass of "Mutable Any" didn't
17:14 dalek :   work out so well - kept getting segmentation fault on
17:14 dalek :   C<does $P0, 'array'>.  So, this version uses a Perl6Scalar PMC,
17:14 dalek :   which has the disadvantage of not being a subclass of Any.
17:14 dalek :   All but one of the spectests passes.
17:14 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27945
17:16 japhb msg tetragon Did you try the latest patch on the OpenGL ticket?  It's dated 2008-05-28, not -27 as you mentioned earlier ....
17:16 purl Message for tetragon stored.
17:41 jhorwitz joined #parrot
18:02 AndyA joined #parrot
18:03 jhorwitz hm, seeing this in a perl6 handler run from mod_parrot: Method 'split' not found for invocant of class 'Perl6Str'
18:03 jhorwitz analogous code works outside of mod_parrot
18:03 particle file a bug with the mod_parrot author
18:04 particle :P
18:04 * jhorwitz takes a swing at particle
18:04 jhorwitz but can't determine his position.  ;-)
18:04 cotto-work so you *can* determine his velocity?
18:05 jhorwitz or spin
18:06 jhorwitz so does that even make sense?  split is most certainly a method of the Perl6Str class...
18:06 particle i need to walk around, i'm getting a headache. i'll help when i return &
18:33 kdc joined #parrot
18:49 Zaba_ joined #parrot
19:07 Ivatar joined #parrot
19:07 cjfields joined #parrot
19:18 jhorwitz sweet, cached mod_perl6 registry scripts work now.
19:20 pmichaud jhorwitz++
19:21 jhorwitz pmichaud: see my 'split' question from before?
19:22 pmichaud I did.  I don't really know what's up with that.
19:22 pmichaud I'd probably need some code to play with to find it.
19:22 jhorwitz yeah, i don't even know where to start for that...
19:22 pmichaud or a test case that exhibits the bug.
19:22 jhorwitz that i have.
19:23 jhorwitz but only in mod_parrot, so it's kinda awkward to debug
19:23 pmichaud I'm seeing a few oddities like that here and there.  I suspect something odd in mro or mmd
19:23 jhorwitz i'd believe it
19:33 pmichaud what exactly is the purpose of the set_pmc vtable method?
19:42 pmichaud assign $P0, $P0      #  very bad for Mutable.
19:44 braceta joined #parrot
19:50 pmichaud I'm thinking I'd like to move mutable.pmc into parrot core
20:07 braceta joined #parrot
20:16 Zaba joined #parrot
20:19 donaldh joined #parrot
20:24 Ademan joined #parrot
20:32 pmichaud how can I check if a PMC is of type Mutable without using vtable_isa ?
20:34 dalek r27946 | pmichaud++ | mutamerge:
20:34 dalek : [mutamerge]:
20:34 dalek : * Uninitialized values should be Failure, not Undef.
20:34 dalek : * Add some comments to Scalar.pir .
20:34 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27946
20:45 AndyA joined #parrot
20:46 donaldh How might I specify out parameters to dlfunc ? Are they supported?
20:46 donaldh e.g. int sqlite3_open(
20:46 donaldh const char *filename,   /* Database filename (UTF-8) */
20:46 donaldh sqlite3 **ppDb          /* OUT: SQLite db handle */
20:46 donaldh );
20:49 mire joined #parrot
20:53 pmichaud =item C<INTVAL string_equal>
20:53 pmichaud Compares two Parrot strings, performing type and encoding conversions if
20:53 pmichaud necessary.
20:53 pmichaud Note that this function returns 0 if the strings are equal, and non-zero
20:53 pmichaud otherwise.
20:53 purl necessary is probably a very strong word.
20:53 purl it has been said that otherwise is cacheble
20:53 pmichaud =cut
20:53 * pmichaud boggles.
20:53 pmichaud forget necessary
20:53 purl pmichaud: I forgot necessary
20:53 pmichaud forget otherwise
20:53 purl pmichaud: I forgot otherwise
20:58 donaldh pmichaud: were you answering your own question?
20:59 pmichaud no, I'm just seriously bothered by a function called "string_equal" that returns false when the strings are equal.  :-|
20:59 pmichaud I think I'm on the right track for figuring out my earlier question, although I don't like it.  :-)
20:59 pmichaud (I don't like the answer, that is.)
21:00 NotFound pmichaud: must have been written by somenone that thinks that strcmp was written by God.
21:00 donaldh heh. no worries. I was pretty sure you weren't answering my question.
21:00 pmichaud or something like that.
21:00 pmichaud donaldh: I don't have an answer to your question, sorry.
21:00 NotFound Budha, maybe.
21:00 pmichaud nci isn't my thing.
21:01 pmichaud (yet)
21:01 pmichaud it doesn't bother me that strcmp == 0 for equal strings, I understand that.
21:01 donaldh I suspect the answer is not-supported
21:01 pmichaud but perpetuating that meme into a function called "string_equal" is just too much.
21:01 pmichaud however, apparently it's been that way since the earliest days of Parrot.
21:01 pmichaud so the code is littered with lots of     if (string_equal(a, b) == 0) ....
21:02 donaldh yuck
21:02 pmichaud which, if I just read it normally, seems to be asking if a and b are unequal
21:02 NotFound pmichaud: on the other side, we have the macro STREQ whose only work is to convert the result of strcmp to a logic value.
21:03 pmichaud that doesn't bother me either.
21:03 NotFound Don't bother, just makes me smile.
21:03 pmichaud I don't like it when people write    if (!strcmp(a,b)) ...      so, seeing  STREQ  seems like a reasonable approach
21:04 pmichaud although maybe we also need  STRNE, STRLE, STRLT, STRGE, STRGT  :_P
21:05 donaldh or a better language?
21:05 NotFound Agree, but people with that type of reasoning usually does not write the function string_equal we have.
21:05 donaldh ahem
21:07 NotFound By the way, we have a lot of string_to_cstring and string_from_cstring conversions. A lot of them probably can be avoided.
21:07 pmichaud yes, those bug me also.  But I'm less certain how to avoid them :-)
21:09 NotFound pmichaud: A way I was looking at this moment can be use STRING * instead od char * in some mmd tables.
21:09 pmichaud oooh, that seems.... smart
21:10 NotFound Problem is that predefined table is an static array.
21:12 pmichaud the more I look at the code, the more it scares me.  :-|
21:13 pmichaud okay, I'm less scared now.
21:16 dalek r27947 | jonathan++ | trunk:
21:16 dalek : [rakudo] Fix .+ and .*; they got missed while getting the new metamodel in place.
21:16 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27947
21:17 jonathan pmichaud: Just around for a moment - how's it going with the merge?
21:18 pmichaud assign $P0, $P0   seems to be an issue
21:19 pmichaud also, assigning a Mutable to a Mutable makes for a long chain of Mutables
21:19 cognominal joined #parrot
21:19 pmichaud as far as the merge itself is going -- that seems to be okay
21:19 NotFound I don' understand what Parrot_mmd_rebuild_table does, and why it lies about his arguments.
21:19 pmichaud I have spectest_regression down to one failing test
21:20 NotFound If C<type> is negative all classes are rebuilt. .... UNUSED(type);
21:20 jonathan pmichaud: Do we ever directly assign a string? I thought we'd always make an instance of Perl6Str
21:20 pmichaud there Perl6Str and Str both
21:20 pmichaud *there's
21:20 jonathan Ah, the long chain thing...
21:20 jonathan That can be fixed.
21:20 pmichaud yes, I'm working on that now
21:20 jonathan However, bit tricky to see if we really have a mutable.
21:20 pmichaud I think I need to overload VTABLE_isa so that Mutables report themselves as Mutables
21:21 pmichaud (as well as whatever type their contents have)
21:21 jonathan Hmmm
21:21 pmichaud so I'm trying to figure out how to do that.
21:21 pmichaud (how to check if we have a Mutable)
21:21 jonathan Well, need to add a method in the template if you plan to do that.
21:21 pmichaud (I know how to forward to the contents)
21:22 jonathan ok
21:22 jonathan I can fix that, probably.
21:23 pmichaud anyway, since I'm down to only one failing spectest_regression I'm thinking of merging it all into trunk
21:23 jonathan What fails?
21:23 purl fails are rare
21:23 pmichaud and then we can fix the one regression test.  It has to do with class/object attributes
21:23 pmichaud t/spec/S12-class/parent_attribute    1   256     3    6 200.00%  1-3
21:23 jonathan parent attributes one?
21:23 jonathan Oh, geck, I thought I'd fixed that.
21:23 pmichaud oh, you probably did -- I probably just didn't port over the fix.
21:24 jonathan OK
21:24 pmichaud I was pretty selective about what I ported and didn't port.
21:24 jonathan Object.pir?
21:24 pmichaud right, haven't done much with Object.pir yet  (if anything)
21:24 jonathan ok, fix would likely be in there
21:24 pmichaud right.
21:24 jonathan try merging it and see
21:24 jonathan really nice work on the other spec test fixes!
21:24 pmichaud I wasn't able to make Mutable into a subclass of Any, either.
21:25 pmichaud actually, it was simple.
21:25 jonathan OK
21:25 jonathan I had very few failures here after I gave it to you for merging.
21:25 pmichaud once I figured out that Mutable as subclass of Any wasn't working and left Perl6Scalar as a PMC, everything "just worked"
21:25 jonathan OK
21:25 jonathan We can override isa :-)
21:26 pmichaud right now it's  (1) override isa
21:26 pmichaud and (2) update assign to follow a chain of Mutables until we get to the actual value
21:27 pmichaud (and doing #2 seems to require #1)
21:27 pmichaud okay, I'll look at Object.pir next.
21:27 jonathan Hmm...I think I'm meant to go socialize now. To override isa, need to do it in mutable_pmc.template.
21:28 pmichaud right, had figured that part out.  That seems pretty straightforward with the way you have it set up.
21:28 jonathan Just add overrides for VTABLE INTVAL isa_pmc(PMC* _class) {
21:28 jonathan and VTABLE INTVAL isa(STRING* _class) {
21:28 pmichaud I'm also trying to decide which is more efficient to use
21:28 jonathan The first one.
21:28 purl the first one is, like, ideal
21:28 jonathan Because if we cache somewhere in a static, the PMCProxy for Mutable
21:29 jonathan Then it can we a walk mro doing pointer comparrisions.
21:29 jonathan :-)
21:29 pmichaud well, we could... but I'm not sure that's what it's doing.  :-)
21:29 jonathan Which is probably cheaper than messing with strings.
21:29 pmichaud a lot of the isa_pmc() methods seem to convert to strings and then do comparisons
21:29 jonathan Well, do this one better. ;-)
21:29 pmichaud which feels really wrong to me.
21:29 jonathan Yeah, me too.
21:30 pmichaud a n y w a y
21:30 jonathan Ok, gotta go
21:30 purl EXCUSE ME, I HAVE TO GO WASH MY COMPUTER
21:30 pmichaud Object.pir, here I come
21:30 Debolaz Completely unrelated to the topic of this channel: Big Buck Bunny is now released - http://www.bigbuckbunny.org/index.php/download/
21:32 pmichaud +.sub '!DOTYEPCHECK'
21:32 pmichaud shouldn't that be  "!DOTYPECHECK
21:32 pmichaud shouldn't that be  "!DOTYPECHECK"  ?  ;-)
21:32 pmichaud at least it's consistently oddly spelled  :-)
21:36 gryphon joined #parrot
21:40 donaldh Ah. (NCI related) Should have thought of that sooner.
21:40 NotFound Somenone has at hand some mmd related bug?
21:41 Auzon joined #parrot
21:41 donaldh The up-to-date list of NCI function signature  types is in srd/call_list.txt
21:41 donaldh the PDD is incomplete.
21:42 japhb donaldh: too true.
21:42 japhb Maybe I can fix that in a future patch.  I just need to get the *current* one accepted.
21:43 donaldh japhp: PDD patch?
21:43 japhb No, OpenGL patch ... it affects call_list, because OpenGL has ~ 270 unique signatures.
21:44 japhb Meaning, once my OpenGL patch goes in (as soon as signed off by one each of Mac OS X and Win32), then perhaps my sights should turn to the PDD.
21:45 NotFound Is not yet acceepted the "make clean ; make" bug patch?
21:45 japhb NotFound: Yeah, the fix for that is included in my OpenGL patch.
21:45 pmichaud separate patches == more likely to be applied :-)
21:45 japhb (at least, the part about call_list.txt being missing after a make clean)
21:45 japhb pmichaud: I actually thought someone else was doing that,
21:46 NotFound That's the part that bugs me.
21:46 japhb but since no one does and it was affecting my users, I included it in mine.
21:46 pmichaud ahhh
21:46 pmichaud well, you have a commit bit.  If you're comfortable with the "make clean ; make" bug patch, go ahead and apply it.  If anyone complains, you can blame me.
21:46 NotFound No, the problem is that if affects everyone that uses make clean.
21:46 purl okay, NotFound.
21:47 NotFound purl: forget the problem
21:47 purl NotFound: I forgot problem
21:47 pmichaud (I'd do it but my mind is focused elsewhere at the moment ;-)
21:47 japhb NotFound: I know that.  I meant -- the people trying to test my OpenGL patch were tripping over this.  In order to get my OpenGL patch tested, I had to include that fix.  And I did the OpenGL patch before I got the commit rights.
21:48 japhb This is all a "transitioning from pre-commitbit to post-commitbit world" pains
21:48 pmichaud indeed.
21:48 NotFound japhb: I know, but please don't forget the issue.
21:48 gryphon joined #parrot
21:49 japhb Of course, if either of you has Win32 or Mac OS X, test my patch, and perhaps I can commit later today.
21:49 pmichaud <-- Linux
21:49 japhb (I'm under strict orders not to commit patches that affect the config system without those signoffs)
21:49 pmichaud can you commit the 'make clean; make'  part?
21:49 pmichaud or does that need testing under different OS's also?
21:50 NotFound Send me a Mac and I'll test it ;)
21:50 japhb pmichaud: sure.  Let me get my son a snack, and then I'll break it out.
21:50 pmichaud Send me a Win32 box and I'll convert it to Kubuntu.  :-)
21:50 japhb pmichaud: it's a makefile fix.  Depends on how you define "config system", but I'll be liberal here and blame it on you.  ;-)
21:50 pmichaud exactly.
21:50 NotFound pmichaud: Before or after doing the test?
21:51 donaldh I have a Win32 (vista) box here.
21:52 donaldh can I help?
21:55 pmichaud message jonathan  we can't use CONST_STRING in mutable.pmc because it's not built at the same time as Parrot.  (IIUC, all of the CONST_STRING values get collected into all_cstring.str as part of building Parrot)
21:55 purl Message for jonathan stored.
21:55 japhb bak
21:56 japhb donaldh: If you test my OpenGL patch, you can be counted as the Win32 test.
21:56 donaldh What do I need?
21:56 japhb I think tetragon tested my patch on Mac OS X last night, but he reported the wrong patch version, so I have to reconfirm that OS
21:56 NotFound #52976 is still valid?
21:57 japhb donaldh: OpenGL and GLUT.  The required bits are specified in config/auto/opengl.pm in the patch
21:59 japhb CRAP.  I know why tetragon tested with the wrong patch ... someone decided to edit headers in the thread, and we didn't continue CC'ing RT
21:59 donaldh Okay, where do I grab the patch?
21:59 japhb OK, I'll have to resend that, just a sec.
21:59 japhb donaldh: give me a sec
22:01 pmichaud (edit headers)   sometimes that happens if someone receives multiple copies of a message and chooses to reply to the wrong one
22:02 japhb pmichaud: I get multiple copies of just about every message, and yes, I have to be careful about the reply.  It's quite annoying.
22:02 japhb One of those things computers are supposed to get right *for us*
22:04 japhb donaldh: OK, it's now properly attached to the RT.  Go to http://rt.perl.org/rt3/Tic​ket/Display.html?id=54868 and select the patch named "parrot-opengl-2008-05-28.patch"
22:05 japhb OK, must backlog for a moment and see if I missed anything
22:10 donaldh japhb: what format is the patch?
22:12 japhb donaldh: I believe it was from 'git diff remotes/trunk' -- so in git "enhanced unified" format
22:12 japhb I'm told it will apply for SVN users.
22:13 donaldh japhb: with what command/
22:13 japhb Um ... 'cd parrot-root; patch -p1 < parrot-opengl-2008-05-28.patch' IIRC
22:16 japhb donaldh: Which compiler environment are you using?  MSVC, MinGW, or cygwin?
22:16 donaldh cygwin
22:16 japhb Mind if I add you to purl's "parrot platforms" list?
22:16 donaldh sure
22:17 japhb parrot platforms?
22:17 purl parrot platforms is Win32/MSVC: particle, Ron; Win32/Cygwin: Limbic_Region, donaldh (Vista); Win32/MinGW: Limbic_Region; Mac OS X: kid51, tetragon (intel/32-bit/10.4), DietCoke (intel/10.4); Debian Linux/i386: japhb; AIX: paco
22:19 donaldh japhb: what tests?
22:19 purl http://dev.catalyst.perl.org/wiki/Testing
22:21 japhb donaldh: ./parrot examples/opengl/triangle.pir -- does the triangle spin?
22:22 japhb donaldh: this assumes, of course, that you have the SDK and GLUT installed ...
22:23 japhb (And you'll need to make realclean and reconfigure once you have the SDK and GLUT in place, so that the OpenGL headers can be parsed by Configure)
22:23 donaldh ah, okay.
22:24 donaldh sorry I don't have GLUT yet.
22:25 japhb donaldh: You can either use Nate Robins' "GLUT for Win32" (quite old, known to work for MSVC, untested on cygwin or MinGW) or freeglut (up to date, and I think works on at least cygwin)
22:26 donaldh thanks
22:26 japhb (Please record the list of packages you need to install, for cygwin, BTW, I want to get the docs filled out)
22:27 japhb E,TOO,MANY,COMMAS,
22:29 pmichaud I think thats:    E,TOO,MANY,C,O,M,M,A,S,,,,,,
22:30 donaldh :D
22:30 donaldh ./configure (we'll see)
22:30 particle joined #parrot
22:32 japhb 'make clean' fix for call_list.txt extracted ... testing ...
22:35 dalek r27948 | pmichaud++ | mutamerge:
22:35 dalek : [mutamerge]: More updates
22:35 dalek : * Mutable assign now dereferences any source mutables first.
22:35 dalek : * Mutables return true for "isa Mutable"
22:35 dalek : * Cleaned up type checking
22:35 dalek : * Cleand up default infix:= for non-containers.
22:35 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27948
22:40 donaldh japhb: leave this with me. I need to sleep.
22:40 japhb .oO( Why is a target like 'make coretest' trying to test the library? )
22:40 japhb donaldh: huh?
22:40 japhb (What do you mean by "leave this with me"?)
22:40 pmichaud coretest is all of the tests excluding configuration subsystems and documentation
22:41 japhb pmichaud: I understand that.  I was questioning whether that was what it *should* be.  :-)
22:41 donaldh japhb: testing the patch. I'm installing GLUT, rebuilding parrot, etc. and need to sleep first.
22:41 pmichaud basically, "does everything that is supposed to run still run?"
22:41 japhb ah, gotcha
22:41 japhb sleep well, donaldh
22:41 donaldh thanks
22:42 dalek r27949 | japhb++ | trunk:
22:42 dalek : [Makefiles] Fix call_list.txt 'make clean; make' failure
22:42 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27949
22:43 japhb NotFound: You should be happier now.  :-)
22:44 NotFound japhb++
22:44 pmichaud japhb++ # happier.
22:46 * japhb regenerates OpenGL patch to no longer include that fix ...
22:54 tetragon joined #parrot
22:59 rdice joined #parrot
23:02 japhb msg tetragon OK, make that the 2008-05-30 patch -- I had to regenerate it.
23:02 purl Message for tetragon stored.
23:04 NotFound Where are the PIO printf formats documented?
23:04 tetragon haha
23:05 tetragon I was about to get around to -30
23:05 tetragon Just have to deal with a database first
23:12 kid51 joined #parrot
23:15 maxs42 joined #parrot
23:16 NotFound Looks like they are documented only in the comments of the Parrot_sprintf_format function.
23:28 tetragon japhb: 10.5 on PPC still spins with 20080530
23:30 japhb EXCELLENT
23:31 japhb tetragon: do you have any other OS X variants?
23:31 japhb I'm feeding the bot
23:32 tetragon Just 10.5 on 32-bit ppc and 10.4 on 32-bit intel
23:32 japhb great, thank you
23:32 japhb parrot platforms?
23:32 purl parrot platforms is, like, Win32/MSVC: particle, Ron; Win32/Cygwin: Limbic_Region, donaldh (Vista); Win32/MinGW: Limbic_Region; Mac OS X: kid51, tetragon (intel/32-bit/10.4, PPC/32-bit/10.5), DietCoke (intel/10.4); Debian Linux/i386: japhb; AIX: paco
23:33 japhb OK, so we just need a Win32 confirm
23:35 jonathan pmichaud: Uh, typo + copy paste = consistent oddness. :-)
23:36 jonathan Need to sleep now...talks tomorrow.
23:36 jonathan Nice work on getting mutables stuff in shape.
23:36 jonathan If you didn't fix parent_attributes, feel free to go ahead and merge, and I fix that later.
23:37 pmichaud thanks.
23:37 pmichaud I'm having trouble getting method calls to work, though.
23:37 jonathan Oh?
23:37 pmichaud It keeps thinking "0 arguments to new"
23:37 jonathan Weird
23:37 jonathan Surely we'd be seeing lots more failures?
23:37 pmichaud I think 'new' isn't called very often
23:38 pmichaud it's only when we have  $scalar.new(...args...)
23:38 jonathan Hmm
23:38 jonathan oh
23:38 jonathan when it's called on a varaible rather than a proto?
23:38 pmichaud yes.
23:38 jonathan ok
23:38 jonathan I've had too much chatruesse and am too tired to debug that now.
23:39 jonathan I can take a look tomorrow.
23:40 pmichaud okay.  for some reason callmethodcc is losing the arguments
23:40 pmichaud er, callmethodcc on a Perl6Scalar is losing the arguments
23:40 pmichaud I'm wondering if it's because Perl6Scalar is a PMC that is reporting itself as an Object
23:41 jonathan Hmmm
23:41 jonathan Not sure.
23:41 nopaste "pmichaud" at 76.183.97.54 pasted "trace of $u .= new( :x(3) )" (23 lines) at http://nopaste.snit.ch/13120
23:41 jonathan Well, the flags are not imitated on the scalar, if that's what you mean.
23:42 pmichaud by the point of offset 52 we can see that P9 has been created and isa Foo.  (But it's a "PMC" Foo)
23:42 pmichaud (as opposed to an Object(Foo) )
23:43 pmichaud at offset 64 we can see the arguments via set_args
23:43 pmichaud then at offset 72 we call 'new' on P9 (still a "Foo")
23:43 pmichaud but by the time we reach the method, the arguments have been lost.
23:44 pmichaud gdb shows that "current_args"  is indeed NULL  when we get back from vtable_find_method
23:44 jonathan That is...odd.
23:45 pmichaud so that means current_args was null going into vtable_find_method
23:46 jonathan Now I'm wondering, if some call is happening between this that somehow clobbers the real call?
23:47 jonathan But I can't think where.
23:48 jonathan OK, I need sleep, I have 2 hours 40 minutes of talks to deliver tomorrow
23:49 pmichaud okay, no problem.  I'll keep looking for it.
23:49 jonathan If you don't figure it out tonight, I'll get a debugger on it tomorrow and do some tracing.
23:49 pmichaud I may see if I can figure out why Perl6Scalar wasn't working as a subclass of Any
23:49 pmichaud it was *mostly* working... just would segfault on "does 'array'"
23:50 jonathan Ah.
23:50 jonathan Odd
23:50 pmichaud yes.  everything else seemed to be okay, including  "does 'ArrayRef'"
23:50 jonathan I was fighting Parrot segfaults along the way of implemtning this.
23:51 pmichaud okay, get some sleep.
23:51 pmichaud best wishes on the talks.
23:51 jonathan If you were wondering why typecheck function takes a result PMC as a parameter rather than getting it as a return value - that was working around Parrot bugs I didn't have the energy to track down yet.
23:51 jonathan OK, thanks....night.
23:51 teknomunk joined #parrot
23:51 pmichaud say hello to everyone for me -- wish I could be there.
23:51 jonathan will try and remember to do that :-)
23:51 jonathan You've been mentioned here. :-)
23:51 pmichaud (typecheck function)  I was thinking of just doing a standard method call
23:51 jonathan Good luck!
23:51 purl i think good luck is all I can say.
23:52 jonathan Neither the Parrot_call_meth_fromc_args way nor the Parrot_PCCINVOKE way work.
23:52 jonathan :-(
23:52 pmichaud any idea why?
23:52 pmichaud or is this just a known "don't try it, it does't work"?
23:53 jonathan Parrot_PCCINVOKE - yes, it doesn't handle the case when you have a Sub PMC rather than an NCI.
23:53 jonathan I have a good idea how to fix that, but was more interested in getting the mutables stuff sorted.
23:53 pmichaud okay.
23:53 jonathan The other way - no, I don't know why that one is broken and it segfaulted in a nasty place.
23:53 jonathan It wasn't obvious what was wrong at all.
23:54 jonathan Something in inter_call.c, IIRC.
23:54 pmichaud okay, that gives me stuff to work with.
23:54 jonathan OK
23:54 jonathan Sleep time, anyway
23:54 jonathan night
23:55 dalek r27950 | pmichaud++ | mutamerge:
23:55 dalek : [mutamerge]:
23:55 dalek : * Oops, gotta pass the properties to the Perl6Scalar.
23:55 dalek diff: http://www.parrotvm.org/svn​/parrot/revision?rev=27950
23:57 NotFound japhb: triangle spins in a c++ build.

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

Parrot | source cross referenced