|
Parrot 0.8.1 "Tio Richie" Released | parrot.org | 588 RT | 11 trac Set by moderator on 1 December 2008. |
|||
| dalek | r33496 | jonathan++ | trunk: | 00:00 | |
| : [rakudo] Some initial work on proto support. This finds and extracts the proto from the other candidates, and if there is an ambiguity or we don't have any applicable candidates then we hand back the proto instead. This patch also adds a mixing bit of documentation and fixes a memory leak that could happen if we ended up with a circularity in the narrowness graph (need to free memory up before throwing the exception). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33496 | 00:01 | ||
| r33497 | jonathan++ | trunk: | 00:02 | ||
| : [rakudo] Add S06-multi/proto.t, which has some tests we pass and has been fudged. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33497 | |||
| r33498 | kjs++ | trunk: | 00:05 | ||
| : [pirc] Bytecode: Now we're getting somewhere. | |||
| : + fix the parser, couldn't do i = i + 1; fixed now. | |||
| : + offsets are calculated for subs now. | |||
| : + lots of TODOs. | |||
| : + simple programs, with a single sub should work properly. | 00:06 | ||
| : + string and num args don't work yet. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33498 | |||
| jonathan | kj: Nice! :-) | 00:09 | |
|
00:09
AndyA joined
00:10
tetragon joined
|
|||
| Tene | cotto: try { ... }; if $! { ... } | 00:12 | |
|
00:12
Hadi left
|
|||
| particle1 | kj: do you need to use int/double, not INTVAL, FLOATVAL, etc? | 00:15 | |
| particle | (in bcgen.c) | 00:16 | |
| lathos | Tene: Does that work now? Last I tried $! didn't want to become Boolean. | 00:17 | |
| Tene | lathos: I just added a commit that fixes that. | ||
| lathos | Groovy. | ||
| I can clean up some code. :) Still need classname indirection before I can do anything else, though... | 00:18 | ||
| jonathan | lathos: Classname indirection? Example? | ||
| lathos | ::($foo).new | ||
| jonathan | Ah, OK. | 00:19 | |
| particle | aka interpolated namespaces | ||
| lathos | Specifically, return ::($driver).getConnection($r, $login, $password); | ||
| particle | jhorwitz is no longer pining alone | ||
| ::($driver) needs to return 'eval $driver.WHAT', basically | 00:21 | ||
| lathos | $driver is a String. | 00:22 | |
| particle | er, sorry, yeah | ||
| lathos | I need to cast a string into a class. | ||
| particle | lack of parens there | 00:23 | |
| lathos | (eval $driver)? | 00:24 | |
| Oh, that works. | 00:25 | ||
| jonathan | Rakudo sometimes provides a non-obvious way. ;-) | 00:27 | |
|
00:30
particle1 joined
00:35
TimToady joined
|
|||
| chromatic | TimToady, ping. | 00:37 | |
| particle1 | more like 'pounce' | 00:38 | |
| TimToady | pong | ||
| particle | comcast-- | ||
| chromatic | I'm putting together the final interview Federico and I did. Do you have any answers for the questions I sent last month? | 00:39 | |
| TimToady | perhaps I can work on them this afternoon | 00:40 | |
| or evening | |||
| at the moment sitting in the Perl track, so a bit distracted... | 00:41 | ||
| chromatic | That would be fantastic, thank you. | 00:42 | |
| dalek | r33499 | kjs++ | trunk: | 00:47 | |
| : [pirc] fix local label offsets. | |||
| : + this makes jumping instructions work (at least a few of them anyway) | |||
| : + update tests | |||
| : + it seems I can't go to bed till I fixed this :-( discipline-- I'd like to have 36-hour days. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33499 | |||
|
00:55
tak joined
|
|||
| Whiteknight | (36 hour days)++ | 01:00 | |
| chromatic | Hmm. Pie. | 01:26 | |
|
01:28
magnachef joined
01:34
magnachef joined,
magnachef_ joined
01:36
cheflog__ joined
01:40
magnachef_ joined,
cheflog__ joined
01:41
cheflog__ joined
01:42
cheflog__ joined
01:43
magnachef_ joined
01:47
tak_ joined
01:49
magnachef joined
01:50
magnachef_ joined
01:55
jimmy joined
01:56
purl joined
01:59
magnachef joined
02:01
magnachef_ joined
02:02
cheflog__ joined
02:03
magnachef_ joined
02:05
cheflog__ joined
02:06
magnachef_ joined
02:07
slavorg joined,
magnachef_ joined
03:05
TonyC joined
|
|||
| jimmy | does pir suport: $S0 = 'abcdefg' print $S0{2} # just like php | 03:26 | |
| and then print 'c' | |||
| bacek_ | jimmy: no | 03:33 | |
|
03:42
Andy joined
|
|||
| jimmy | bacek_: yes | 04:16 | |
| bacek: wrong words. I should say 'thanks'. | 04:21 | ||
| lathos | Rock. | 04:38 | |
| % ../../perl6 | |||
| > use DBDI; | |||
| > say DBDI::DriverManager.getConnection("dbdi:SQLite3:test.db", "", ""); | |||
| SQLite3<0x246eb00> | |||
| Andy | wel, that's goodness. | 04:57 | |
|
04:58
adu joined
|
|||
| Tene | kick ass | 05:14 | |
| purl | kick ass is probably a PHRASE, not a WORD | ||
| TimToady | adamk++ just presented me with a cd containing Vanilla Perl 6 Beta 1 | 05:17 | |
|
05:17
magnachef joined
|
|||
| Tene | What revision is it based off of? | 05:18 | |
| TimToady | dunno, but he got it working at 5am this morning, so something recentish | 05:19 | |
| 'course, my laptop doesn't have Win32 on it, so I can't try it... | 05:21 | ||
| GeJ | is that The Sekrit ? | 05:22 | |
| tewk | He was in here while he was doing it. see the backlog or irclog? | ||
| oppps. | |||
|
05:30
tetragon joined
06:16
japhb joined
06:17
Theory joined
06:25
chromatic joined
06:56
cotto joined
|
|||
| cotto | ubuntu-- | 07:03 | |
|
07:04
allison joined
|
|||
| szbalint | cotto: any reason? | 07:22 | |
| cotto | twice in the last week I've opened the lid to find that my screen won't power on and I can't get the system to do anything | 07:27 | |
| It makes me crabby because it takes me a good 5-10 minutes to get all my virtual desktops back to normal. | 07:29 | ||
| karma ubuntu | |||
| purl | ubuntu has karma of 15 | ||
| cotto | I'm sure there's a solution, but it's not impressive that it's broken by default. | 07:30 | |
| eor | |||
|
07:36
iblechbot joined
07:45
Debolaz joined
|
|||
| dalek | r33500 | chromatic++ | trunk: | 07:50 | |
| : [GC] Added a pointer check before dereferencing, as reported by Coverity Scan | |||
| : in CID #8 (though strangely, it's a different problem than the original). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33500 | |||
|
07:54
uniejo joined
|
|||
| dalek | r33501 | chromatic++ | trunk: | 07:55 | |
| : [IO] Made one more attempt (this time more verbose) to avoid signedness | |||
| : assignment problems in Parrot_io_peek_buffer(), reported by Coverity Scan as | |||
| : CID #148. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33501 | |||
| chromatic | That should clear up everything in level 1. | ||
|
07:57
japhb joined
|
|||
| dalek | r33502 | chromatic++ | trunk: | 08:18 | |
| : [config] Added #define for __USE_GNU when building Parrot with GNU libc | |||
| : backtrace() support. I'm not completely convinced this will work on Mac OS X, | |||
| : but we can refine it further if necessary. See RT #58670, reported by | |||
| : Christoph Otto. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33502 | |||
| cotto | chromatic++ | 08:33 | |
| chromatic | It was the easiest newly open bug. | ||
| With that I must sleep. | |||
|
08:42
elmex joined
09:00
clunker3__ joined
|
|||
| jimmy | cid? | 09:04 | |
| purl | i think cid is all MUA | ||
| jimmy | CID? | ||
| purl | somebody said CID was all MUA | ||
| jimmy | MUA? | ||
| purl | hmmm... MUA is Mail User Agent or your mail reader, you idiot | ||
| jimmy | MUA? | ||
| purl | MUA is, like, Mail User Agent or your mail reader, you idiot | ||
| moritz | CID is also Coverity ID | 09:06 | |
| purl | okay, moritz. | ||
| cotto | where are those reports? | 09:07 | |
| jimmy | Asked the same | 09:10 | |
| moritz | scan.coverity.com/rung1.html lists parrot, but it seems like you have to sign in first | 09:11 | |
| jimmy | trac.parrot.org/parrot/wiki/CageTasklist | 09:13 | |
| lists it : scan2.coverity.com:9035/ | |||
| lathos | OK, here's an interesting segfault. | ||
| called from Sub 'parrot;PAST;Compiler;post_children' pc 1785 (src/PAST/Compiler.class Foo { has $bar; method baz($baz) { given ($baz) { foo($baz, $bar); } } } | |||
| Oops. | |||
| class Foo { has $bar; method baz($baz) { given ($baz) { foo($baz, $bar); } } } | |||
| moritz | rakudo: class Foo { has $bar; method baz($baz) { given ($baz) { foo($baz, $bar); } } } | 09:14 | |
| polyglotbot | OUTPUT[Parrot VM: Can't stat languages/perl6/perl6.pbc, code 2.ā¤main: Packfile loading failedā¤] | ||
| lathos | Really needs all the bits in place too; get rid of the attribute or the parameter and it'sf ine. | 09:15 | |
|
09:15
tomyan joined
|
|||
| moritz | does it segfault if you run it with ../../parrot -G perl6.pbc? | 09:16 | |
| lathos | Oop, no, hang on. | ||
| dtg | would chromatic@wgz.org be the best address for chromatic? | ||
| lathos | class Foo { has $bar; method baz() { given (1) { foo($bar); } } } | ||
| moritz: Yes. | |||
| Actually you can get rid of the method call too. | 09:17 | ||
| And the function call. | |||
| class Foo { has $bar; given (1) { $bar; } } | |||
| moritz | lathos: 'has $bar' is wrong (you need $.bar or $!bar), but of course it shouldn't segfault | ||
| lathos | S12 disagrees with you. | 09:18 | |
| moritz | it does? | ||
| purl | if you say so... | ||
| lathos | 1The "true name" of the private variable always has the exclamation, but much like with our variables, you may declare a lexically scoped alias to the private variable by saying: | ||
| has $brain; # also declares $!brain; | |||
| moritz | okay, wasn't aware of that feature | ||
| lathos | But you raise a good point, if you replace with $.bar it doesn't segfault. | 09:19 | |
| moritz should really dive into Perl 6 OO at one point | |||
| lathos hacks around it. | 09:20 | ||
| our $s := $attribute; given (1) { $s } # Works | |||
| jimmy waiting | |||
| lathos | Ack, no, within that given {} $s is broken. | 09:48 | |
|
09:49
gaz joined
|
|||
| moritz | maybe related to rt.perl.org/rt3/Ticket/Display.html?id=61034 ? | 09:53 | |
|
09:53
tak_ joined
|
|||
| lathos | Maybe. Not seeing the Null PMC access message though. | 09:56 | |
| No wait, this is a compile-time segfault, not a runtime one. | |||
| So completely unrelated. | |||
| moritz | allright | ||
| please open a ticket | |||
| lathos | Ack, I recompiled (added an NCI function) and now it doesn't segfault there | 10:01 | |
| Tene | yay segfaults | 10:04 | |
| lathos | And now I've found a different workaround. | 10:06 | |
| (Treat everything as if it's a string, SQLite doesn't care.) | |||
| I'm just about ready to give up on this, but you all may be pleased to note that this works: nopaste.snit.ch/14818 | 10:07 | ||
| moritz | w00t | ||
|
10:13
alvar joined
|
|||
| dalek | r33503 | simon++ | trunk: | 10:19 | |
| : Some more work on the DBDI; by no means official, (yet) but submitting it so it doesn't get lost. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33503 | |||
| jonathan | hi all | 11:16 | |
| jonathan has a cold | 11:17 | ||
| But after some extra sleep, it shouldn't stop me from hacking on Rakudo. :-) | |||
| kj | hi Jonathan | ||
| jonathan | hi kj | ||
| Looks like PIRC is making some nice progress. :-) | 11:18 | ||
| kj | yep! Loads of work to be done though, but it's a nice job to hack | 11:19 | |
|
11:51
tak_ joined
12:01
jimmy joined
|
|||
| jimmy | line 354 missing ')' in LANGUAGES_STATUS.pod | 12:02 | |
| dalek | r33504 | jonathan++ | trunk: | 12:07 | |
| : [rakudo] Fix our ability to smart-match against Match (which checks the LHS is of type Match). | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33504 | |||
| cotto | nfl? | 12:08 | |
| purl | it has been said that nfl is a religion | ||
| cotto | no, nfl is not for long | ||
| purl | okay, cotto. | ||
| dalek | r33505 | cotto++ | trunk: | ||
| : [docs] fix a missing paren, reported by jimmy++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33505 | |||
|
12:14
masak joined
|
|||
| cotto | night | 12:14 | |
| jimmy | good morning, masak | 12:18 | |
| and night, cotto | |||
| tewk | what block comments work in rakudo? | 12:22 | |
| moritz | just POD, I think | ||
| \\n=begin foo\\n ... \\n=end foo\\n | 12:23 | ||
| tewk | =begind comment | ||
| masak | jimmy: ę©å | 12:25 | |
| jimmy | masak: ę©ļ¼åµåµ | ||
| masak | (though it's past midday here) | ||
| jimmy | here is night. | 12:26 | |
| i think there should be a script like indent.vim to re-indent all the pir codes. | 12:30 | ||
| lathos | That reminds me, anyone got a perl6.vim? | 12:31 | |
| moritz | lathos: there's one in the pugs repo | ||
| perl6.vim is svn.pugscode.org/pugs/util/perl6.vim | 12:32 | ||
| tewk | google will find it for you, pugs_repo util/per6.vim I believe | ||
| moritz | now purl will find it for you :-) | ||
| lathos | Ooh, much better. | 12:33 | |
| jimmy | it should be copied to languages\\perl6\\editor, i think | ||
| moritz | jimmy: copying is always bad, we should keep thins in one spot | ||
| moritz has a symlink in .vim/syntax/ and is happy with that | 12:34 | ||
| masak | though one could always put a small text file at the other place where it's expected to be | ||
| tewk | jimmy: I wouldn't duplicate it, but you could make the editor/Makefile wget it when it installs parrot vim files | ||
| or add a make target to languages/perl6 to do the same. | |||
| jimmy | using wget is also bad, is there wget on windows | 12:35 | |
| purl | okay, jimmy. | ||
| lathos | So make perl6 should check it out from svn like it does for the specs. | ||
| Or we could just "Look, pugs is dead, we're taking over." | 12:36 | ||
| tewk | lathos++ better idea | ||
| mmm, well the synopsis just got moved to pugs right? | |||
| moritz | lathos: bad idea. It's much easier to contribute to stuff in the pugs repo, and we have profited from that before | ||
| lathos | I wasn't being entirely serious. | ||
| moritz | ok :-) | 12:37 | |
| jonathan | lathos: Does the SQLite bindings let you do select statements and grab the data yet? | 12:38 | |
| Nice work on getting it this far along, BTW! :-) | |||
| lathos | Doing that right now. | ||
| jonathan | Nice. | ||
| jimmy | btw: readme.pod is obsolete, since make vim-install works on windows. | 12:39 | |
| under editor. | |||
| lathos | Next trick is to write a NCI.pm and hoist all the NCI hard work from PIR to Perl. | ||
| tewk | lathos: almost done, watch | ||
| lathos | OK, next trick is to write a mysql driver, and use it to make sure everything's at the right level of abstraction. | 12:40 | |
| moritz | lathos: there's a very basic mysql driver somewhere | ||
| dalek | r33506 | tewk++ | trunk: | ||
| : [ncigen] SQLite autogenerated stubs | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33506 | |||
| moritz | lathos: in examples/nci/ | 12:41 | |
| it's rather low level, but there's a Perl 6 example as well | |||
| jimmy | tewk++ | ||
| tewk | jonathan: compilers/ncigen/NCIGENAST.pir defines some pir classes using P6metaclass | 12:42 | |
| I want to multdispatch off of then in perl6, how do I do that? | |||
| or at a minimum get perl6 to tell me their type. | |||
| compilers/ncigen/sqlite_interface_generator.pl attempts to do this but it doesn't work yet. | 12:43 | ||
| jonathan | tewk: Does it just set them us as proto-objects? | ||
| tewk: Or, if you create an instance of that class, does .WHAT give the expected result (the name of the class you defined)? | 12:44 | ||
| If so, there's a good chance that it should Just Work. | |||
| tewk | I think so, but this is out of my territory. | ||
| .WHAT says they are Perl6Hash I believe. | 12:45 | ||
| jonathan | Ah. | ||
| That's not a good thing. :-| | |||
| Let me look at the code. | |||
| tewk | ../../parrot ../../languages/perl6/perl6.pbc sqlite_interface_generator.pl kk.h | 12:46 | |
| in compilers/ncigen | |||
|
12:47
Hadi joined
|
|||
| tewk | Nevermind it says its a FuncDecl, thats good, | 12:47 | |
| I just probably need to tare off the namespace if front. | 12:48 | ||
| lathos | OK, I'm really getting fed up with this segfaulting when I use attributes inside blocks. | ||
| tewk | $v.WHAT says FuncDecl | 12:49 | |
| lathos | Holy crap it works. | 12:52 | |
| jonathan | lathos: Is that the issue you filed an RT for earlier? | ||
| lathos | Yes. | ||
| jonathan | OK, I'll look at it later today. | ||
| pmichaud | good morning | ||
| jonathan | pmichaud: morning | 12:53 | |
| lathos | I've hacked around it again, but it does restrict me in interesting ways. | ||
| tewk | Ok now I think I just need to learn how to write multis. | 12:54 | |
| jonathan | tewk: In Perl 6? | ||
| tewk | yes | ||
| Ambiguous dispatch to multi 'pir'. Ambiguous candidates had signatures: | |||
| :(Any $node) | |||
| jonathan | multi foo(ClassName $x) { ... } | ||
| dalek | r33507 | simon++ | trunk: | ||
| : And now we can do selects and pull data out of them. Which is pretty much all you need, really. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33507 | |||
| lathos | One day I'll find a person who really enjoys writing tests, and we'll be unstoppable. | 12:55 | |
| moritz | jonathan: speaking of multis and protos... I think that proto foo() {...} implies that later 'sub foo's are automatically promoted to multis - that doesn't work yet | ||
| jonathan | moritz: Yes, I know. I even wrote so in my blog post about it. ;-) | ||
| moritz: I think doing that depends first on getting symbols registered during the compile. | 12:56 | ||
| moritz | ah, I only skimmed the code :) | ||
| lathos | tewk: There's one in DBDI::RecordSet. :) | ||
| jonathan | moritz: So there's some work to do in prep for that. | ||
| jonathan tries to s/Perl6Str/Str/ and hits a missing piece of Parrot | 12:59 | ||
|
13:00
randi joined
|
|||
| tewk | code: | 13:01 | |
| multi sub pir(NCIGENAST::TypeDef $node) { return ""; } | |||
| multi sub pir(NCIGENAST::VarDecl $node) { return ""; } | |||
| multi sub pir(NCIGENAST::FuncDecl $node) { | |||
| with that I get Ambiguous dispatch | |||
| if I eliminate the first two it works. | |||
| jonathan | Hmm. | 13:02 | |
| pmichaud | do we support the :: in param types yet? | ||
| jonathan | I'm thinking not. | ||
| I suspect that when we do the lookup, we end up with an Undef or something. | |||
| And it gets treated as an Any by the dispatcher. | |||
| pmichaud | that's my guess also. | ||
| moritz | why do we have to support them explictly everywhere? | 13:03 | |
| jonathan | Since the dispatcher thinks it has three Anys. | ||
| tewk | If i change the type of the third to just FuncDecl, I get "Parameter type check failed in call to pir" | ||
| jonathan | tewk: I'm in the middle of digging into another bug at the moment - I'll look at that as soon as I finish this one. | 13:04 | |
| moritz | is it so hard to have a mechanism that just supports a type name with colons, and use that everywhere? | ||
| pmichaud | moritz: typenames and parameter parsing are things that change frequently in STD.pm | ||
| we keep supporting "what STD.pm does", and then TimToady changes it | |||
|
13:04
Hadi left
|
|||
| tewk | no problem, I can work around it for now, I could even do my own dispatch based on .WHAT. | 13:04 | |
| moritz | pmichaud: that's unfortunate :/ | ||
| tewk | perl6 is cool, jonathan++ | ||
| jonathan | tewk: I think it's a lot of people ++ ;-) | 13:08 | |
| tewk | yep, but I'm trying to incentivize my multi bug fix. :) | 13:09 | |
| moritz | tewk++Ā # honesty | ||
| pmichaud | jonathan: I ran into a few issues trying to use the assign_pmc vtable for assignment | 13:10 | |
| like, it becomes very difficult to "promote" a Parrot type into its Rakudo equivalent | |||
| because I don't know that we have a way to do a superclass vtable | 13:12 | ||
| jonathan | What do you mean by superclass vtable? | ||
| If you're inside a vtable method, there is SUPER, I believe. | |||
| pmichaud | in PIR. | 13:13 | |
| jonathan | So you're in a PIR subclass of a PMC and want to call a parent vtable method? | 13:14 | |
| Where you know the parent is a PMC? | |||
| pmichaud | yes. | 13:15 | |
| Perl6Complex <-> Complex is a good example | |||
| let $P1 be a Complex PMC | 13:16 | ||
| I want to upgrade it to a Perl6Complex | |||
| $P2 = new 'Perl6Complex' | |||
| jonathan | OK | ||
| pmichaud | assign $P2, $P1 # doesn't work | 13:17 | |
|
13:17
kj joined
|
|||
| jonathan | setattribute $P2, [ 'Complex' ], 'Proxy', $P1 | 13:17 | |
| maybe. | |||
| pmichaud | I have to put attributes on the rakudo types? That would suck. | ||
| jonathan | No, no | 13:18 | |
| This goes and replaces the proxy object. | |||
| I think. | 13:19 | ||
| But it's...evil. | |||
| pmichaud | anyway, we may be back to doing a method-based form or something like that. But it does mean that we're still checking for 'ObjectRef' all over the place. | 13:25 | |
| jonathan | :-| | ||
| pmichaud | either that or we figure out how to intercept find_method for certain methods on ObjectRef | ||
| jonathan | How many methods do you want to intercept? | 13:26 | |
| pmichaud | at the moment just STORE | ||
| (or whatever we decide to call it) | |||
| jonathan | Thing is you get the cost on every method lookup. | ||
| pmichaud | yes, I know. | ||
| jonathan | But let's get it right first. | ||
| It's possible to do that. | |||
| pmichaud | well, "get it right" really should be the assign_pmc vtable, so I haven't completely given up on that. | 13:27 | |
| out of curiosity, how exactly does vtable mmd work? | 13:29 | ||
| i.e., can I register multiple :vtable methods with different :multis? | 13:30 | ||
| and have parrot dtrt ? | |||
| jonathan | As I understnad it, for vtable multis, the multis are reigstered. | 13:32 | |
| And then if there is no vtable override, we end up in the default PMC | |||
| Which then invokves the multi dispatcher. | |||
| pmichaud | I'm thinking the the PIR case. Aren't PIR :vtable functions put into the vtable override? | 13:33 | |
| .sub '' :vtable('assign_pmc') :multi(_, 'Integer') | |||
| and | |||
| jonathan | Yes. Hmm. | ||
| pmichaud | .sub '' :vtable('assign_pmc') :multi(_, 'BigInt') | 13:34 | |
| jonathan | Ah, I don't think assign is one that participates in multi dispatch. | ||
| pmichaud | okay, I think I see where I want to head with this then. | 13:35 | |
| it'll be some ugly code, but we'll be able to start to separate the Parrot bits from the Perl 6 ones. | |||
| "ugly" == "we really shouldn't have to do this" as opposed to "ugly" == "really hard to understand" | 13:36 | ||
|
13:36
jq joined
|
|||
| pmichaud | jonathan: so, what are you planning to work on for today? | 13:42 | |
| (or, what are you working on today?) | |||
| jonathan | pmichaud: Well, I went to tackle the "class Str is also { ... }" doesn't work ticket. | 13:44 | |
| Since I figured it'd be nice to be able to write bits for Str in the prelude. ;-) | |||
| Then I realized that there's another ticket that suggests we rid ourselves of Perl6Str and just have Str. | |||
|
13:44
jq joined
|
|||
| pmichaud | we don't have the ability to create methods in C yet, do we? | 13:44 | |
| jonathan | No. | 13:45 | |
| pmichaud | Perl6Str exists primarily to provide the get_number vtable | ||
| jonathan | But I also realized that if we created Str everywhere that we create Perl6Str, then stuff would be of the right class. | ||
| pmichaud | yes | ||
| the only reason I was using Perl6Str in some places was for the performance win | |||
| jonathan | And it'd solve the is also thing, and be a good step on the other ticket. | ||
| So I did it. And we started to epic fail - the telling sign was isa.t in the sanity tests failed. | 13:46 | ||
| pmichaud | wow, that's surprising | ||
| jonathan | I dug in and realized that PMCProxy was failing to build a list of parents (just not implemented yet) | ||
| So the inheritance check for Str wasn't really working. | 13:47 | ||
| When it was a Perl6Str, it did. | |||
| pmichaud | I'm confused. | ||
| jonathan | So now I'm making Parrot explode in various interesting ways trying to build that list. | ||
| pmichaud | Str doesn't think it's a String ? | ||
| jonathan | It appears that way. | ||
| pmichaud | ...but then wouldn't mmd be epic fail right now? | 13:48 | |
| jonathan | At least, after chasing through what's going on, it's the only conclusion I can find. | ||
| pmichaud | or do we just not mmd on String anywhere? | ||
| jonathan | I think it depends on how you're doing the isa check. | ||
| pmichaud | I mean in :multi | ||
|
13:48
Hadi joined
|
|||
| jonathan | MMD looks at something different. | 13:48 | |
| pmichaud | ah | ||
| (weird.) | |||
| jonathan | ->mro, IIRC | ||
| Yeah. | 13:49 | ||
| Anyway, there was a comment in PMCProxy saying "ah, this ain't done yet" | |||
| So it needs fixing anyway. | |||
| pmichaud | well, just a sec. :-) | ||
| jonathan | Trouble is, my first attempt at fixing it causes massive fail elsewhere. | ||
|
13:49
Hadi left
|
|||
| pmichaud | the _other_ approach to this for now is to really get rid of Perl6Str | 13:49 | |
| and have get_number on Str be a :vtable that does an NCI call to our C function | 13:50 | ||
| jonathan | Yes, we can do that too. | ||
| OTOH, it might be better to fix the underlying Parrot issue now I've got an idea what it is. | |||
| pmichaud | that too. | ||
| jonathan | Rather than work around it and then have it bite us in another couple of months. | ||
| pmichaud | well, ultimately I do want to get rid of Perl6Str | ||
| I'd see the get_number to NCI as actually getting us closer | |||
| because what I'd _really_ like is to be able to write some methods in C | 13:51 | ||
| i.e., the Perl6Str is already a workaround. | |||
| jonathan | You could probably do it with a "fake" PMC (that we never use for anything other than this) that has all of the methods we want to write in C in it. | 13:52 | |
| Then we find_method 'em | |||
| pmichaud | can we attach them as vtable overrides and have it dtrt | 13:53 | |
| ? | |||
| e.g., to the Str class ? | |||
| jonathan | _if_ you don't poke at any guts | ||
| pmichaud | poke as in write or poke as in read? | ||
| jonathan | e.g. use VTABLE_get_string(interp, SELF), not PMC_str_val(SELF) | 13:54 | |
| pmichaud | right | ||
| jonathan | If you do that, you may well get away with it. | ||
| pmichaud | I think we do that anyway; if we don't, we should. | ||
| jonathan | Right. | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "jonathan: your suspicions are correct" (22 lines) at nopaste.snit.ch/14819 | 13:56 | |
| pmichaud | oops, second test is wrong | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "jonathan: your suspicions are somewhat correct" (22 lines) at nopaste.snit.ch/14820 | 13:57 | |
| pmichaud | so, is the issue here that the isa opcode doesn't properly follow the parent of Perl6Str ? | ||
| jonathan | Aye. | 13:59 | |
| I think so, anyway. | |||
| nopaste | "pmichaud" at 72.181.176.220 pasted "more clues" (36 lines) at nopaste.snit.ch/14821 | 14:00 | |
| jonathan | pmichaud: I've got a fix of sorts. | ||
| pmichaud | yes, this is definitely something that needs fixing. | ||
| jonathan | pmichaud: Actually, it may be a good enough fix for real. | ||
| pmichaud | the last case tells the tale -- $c isa ResizablePMCArray but not a FixedPMCArray (even though ResizablePMCArray extends FixedPMCArray) | 14:01 | |
| pmichaud suddenly realizes that we could really write Parrot/PIR tests in Rakudo | 14:02 | ||
| jonathan | Scary! | ||
| pmichaud | or, more likely, NQP. | ||
| jonathan | Works great until you want some Parrot tests to know why Rakudo is broken. ;-) | ||
| tewk | isn't there a perl6 tutorial out there, I want to figure out how to do a simple s/// | 14:03 | |
| moritz | tewk: that's not yet implemented in rakudo | ||
| pmichaud | tewk: $result = $_.subst( /pat/, 'repl' ); | ||
| moritz | but you can use .subst... what pmichaud said | ||
| pmichaud | or $_ .= subst( /pat/, 'repl' ); | ||
| moritz | that also works with $_.subst( /pat/, 'repl', :g ); if you want to replace them all | 14:04 | |
| jonathan smokes stuff | |||
| tewk | ok a couple more perl6 questions: | 14:06 | |
| how do I flatten an array in a sub call | |||
| format_func_decl($pirname, @result) -> format_func_decl($pirname, @result[0], @result[1]) | |||
| pmichaud | you mean you want @result[0] to be the second argument and @result[1] to be the third? | 14:07 | |
| lathos | Theoretically @*result | ||
| tewk | do <<"FMT" style heredocs work | ||
| pmichaud: yes | |||
| pmichaud | tewk: format_func_decl($pirname, |@result) # I think. | ||
| dalek | r33508 | Whiteknight++ | trunk: | ||
| : [Book] update chapter 11 with some more details about PMCs: INTERP, SUPER, SELF and ATTR keywords, and a few other details about the compiler. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33508 | 14:08 | ||
| jonathan | |@result should work | ||
| tewk | I should preface all this with, I', trying to write working code in rakudo. | ||
| pmichaud | I'm only giving things that work in rakudo. | ||
| tewk | great, just wanted to make myself clear. | 14:09 | |
| pmichaud | if you ask "how can I flatten a hash into named arguments" then my answer will be "we can't do that yet." :-) | ||
| (although in Perl 6 the answer would be |%hash :-) | 14:10 | ||
| tewk | does rakudo support heredocs w interpolation? | 14:11 | |
| pmichaud | no heredocs yet. | ||
| but you can do qq {{ ... }} | |||
| jonathan | Hmm. Now I get some really odd failures. | ||
| pmichaud | (or whatever brackets you want on the qq) | 14:12 | |
| qq <<< .... >>>> # works | |||
| oops | |||
| (make those brackets equal and it works) | |||
| tewk | last question for now, how do I do optional parameters? | ||
| pmichaud | sub foo($a, $b?, $c?) { ... } | 14:13 | |
| or | |||
| sub foo($a, $b = 1, $c = 'xyz') { ... } | |||
| both have $b and $c as optional parameters. | |||
| tewk | thanks | ||
| pmichaud | The second provides the value to use if no argument provided. | ||
| jonathan | pmichaud: Hmm. Interestingly, making isa $P0, 'String' give the right answer seems to give some new failures, even without my other patch. :-S | 14:18 | |
| pmichaud | in rakudo or Parrot? | 14:19 | |
| jonathan | Rakudo | ||
| Parrot tests pass | |||
| We fail a sanity test in Rakudo. | |||
| pmichaud | which one? | ||
| jonathan | t\\01-sanity\\08-say.................Method 'say' not found for invocant of class | ||
| 'Perl6Str' | |||
| pmichaud | I'm not sure that test belongs in sanity -- still it's a bug. | 14:20 | |
| ummmm | |||
| Coke | msg jimmy now that trac works for tickets, you should be able to submit patches that way. | ||
| purl | Message for jimmy stored. | ||
| jonathan | I'm just wondering if we maybe have been relying on the Str proto not responding true to isa String, and now we are doing so. | 14:21 | |
| PerlJam | good morning #parrot | ||
| jonathan | And thus treating it as if it were a name rather than a proto. | ||
| Somewhere in P6Object. | |||
| pmichaud | in this particular case, Perl6Str is supposed to have its .say method come from String | ||
| jonathan | That's my first guess. | ||
| pmichaud | oh, I see what you mean | 14:22 | |
| yes, it's possible. | |||
| it would be in the 'register' method of P6metaclass | 14:23 | ||
| or in get_parrotclass | |||
| looking. | 14:24 | ||
| P6object.pir:503 | |||
| try moving the test for String to below the test for P6object | |||
| (and then rebuild P6object.pbc, of course) | 14:25 | ||
| jonathan | pmichaud: Oh, I did exactly that just now. :-) | ||
| It fixes say.t | |||
| Now let me try spectest | |||
| pmichaud | if the p6object.t tests pass, commit that fix. | ||
| jonathan | Are they not run in a Parrot make test? | 14:26 | |
| pmichaud | yes, they are | ||
| jonathan | Ah, I see, but I did a change... | ||
| running | |||
| pmichaud | right -- I didn't think you had run a Parrot make test yet :-) | ||
| jonathan | If that works, I'll commit the Parrot change and the P6Object change. | ||
| I had run one, it came out fine. | |||
| pmichaud | wfm | ||
| the P6Object change is definitely needed. | 14:27 | ||
| jonathan | And then after that I will try doing the s/Perl6Str/Str/ patch again. | ||
| pmichaud | there might be similar issues with Cardinal/Pipp/others that might have been following rakudo's lead | ||
| yes, let's go ahead and switch Perl6Str to Str everywhere. It's a good step towards eliminating Perl6Str | 14:28 | ||
| I'll have to go for a short bit -- I forgot I had $otherjob tasks this morning. | |||
| should be back in 2 hrs, though. | |||
| jonathan | OK, sure | 14:30 | |
| tewk really likes .perl() | |||
|
14:31
gryphon joined
14:35
jhorwitz joined
|
|||
| jhorwitz | pmichaud++ # inline PIR | 14:36 | |
| pmichaud | btw, I gave a talk on Parrot last night at our local Unix Users Group and there are many people interested in ncigen | ||
| jhorwitz: would inline PIR solve your interpolated namespace issues for a short bit? | 14:37 | ||
| I still plan to fix them, but I feel I need to get assignment, slices, and parameters fixed first. | |||
| jhorwitz | pmichaud: i solved it by writing ModPerl6::Fudge, which is written in PIR. | ||
| pmichaud | okay. | ||
| jhorwitz | but it's still extremely useful for me | 14:38 | |
| pmichaud | I figured it would be. | ||
| jhorwitz | is the PIR adverb ignored if not understood by other implementations? | ||
| pmichaud | I would think it would generate an error. | ||
| moritz | jhorwitz: no, but a simple macro could achieve that | ||
| dalek | r33509 | jonathan++ | trunk: | 14:39 | |
| : [core][p6object] PMCProxy should look in the PMC's isa_hash when doing an isa, otherwise we get some wrong answers to isa when inheriting from a PMC that in turn inherits from another PMC. P6Object was relying on the bug in one place, so a correction to that is also in this patch. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33509 | |||
| moritz | (assuming other implementations do macros... oh well) | ||
| jhorwitz | actually, i would imagine you're losing functionality if it's ignored....hm. just thinking out loud. :) | ||
| pmichaud | right | ||
| that's why I think "unrecognized option :PIR" makes more sense. | |||
| tewk uses given for the first time. | 14:41 | ||
| jhorwitz fondly remembers his first time... ;-) | |||
|
14:43
workbench joined
|
|||
| kj can only imagine what it would be like... :-P | 14:44 | ||
| PerlJam | kj: perl 5.10 can show you :) | ||
| jhorwitz wants him some DBDI | 14:46 | ||
| lathos | I put it in the tree. | 14:48 | |
| Just for safe keeping. :) | |||
| jhorwitz | lathos++ :) | ||
| lathos | (Basically because I *know* I will go "Urgh, parrot directory is all messed up. rm -rf parrot, svn co. Oh wait.") | 14:49 | |
| jhorwitz | yeah, i'm familiar with that situation. :) | 14:51 | |
| jonathan | pmichaud: Ah, ouch. Now we have the problem the opposite way around. When .isa is passed a string, then it wants get_parrotclass to treat it as a string, even though it's a Perl6Object! | 14:56 | |
| Ah, we cna differentiate on whether it's a proto. | 14:57 | ||
| tewk | is there a more concise way to say | 15:04 | |
| if ( %rename_table{$pirname} ) { | 15:05 | ||
| $pirname = %rename_table{$pirname}; | |||
| } | |||
| PerlJam | tewk: what does $pirname equal if %rename_table{$pirname} isn't true? | 15:06 | |
|
15:07
iblechbot joined
|
|||
| PerlJam | tewk: I mean you may want to just say $pirname = %rename_table{$pirname} || 'default'; | 15:08 | |
| tewk | a non constant lexical value. | ||
| that will work | |||
| duh | |||
| PerlJam | you might want to use // instead of || though | ||
| (dunno exactly what you're doing though) | |||
| jonathan still has a bunch of failures. :-( | 15:16 | ||
|
15:17
Andy joined
|
|||
| Andy | perlbuzz.com/2008/12/database-acces...icely.html | 15:17 | |
| lathos | And see the comment. :) | ||
| PerlJam | lathos++ | ||
| pmichaud | jonathan: what sorts of failures are you seeing now? | 15:18 | |
| dalek | r33510 | tewk++ | trunk: | ||
| : [ncigen] programmatic control via perl6 | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33510 | |||
| jonathan | pmichaud: Fairly randomish ones, so far I've got to knowing that join fails | 15:21 | |
| Parrot MMD fails somewhere in there. | |||
| Looking at where | |||
| tewk | lathos: lathos I'm going to start generateing SQLite3.pir with perl6 code tonight or this weekend. | 15:22 | |
| the interface or layout of the file shouldn't change much, it will just have a lot more functions. | |||
| I think we should keep the generated version checked in though, kinda like we keep bison and flex generated artifacts checked in. | 15:23 | ||
|
15:24
jimmy joined
|
|||
| jonathan | pmichaud: Ouch. | 15:24 | |
| Changing .sub 'join' :multi('String') to .sub 'join' :multi('Str') makes it work | |||
| lathos | tewk: Cool, please don't break anything. :) | ||
| pmichaud | jonathan: fsvo "work"? | ||
| jonathan | pmichaud: Well, it made that particular failing case work. | 15:25 | |
| lathos | I sort of have a test program I'm using but it's not a harness-based one. If someone wants to take it on and turn it into proper tests that would be good, but I don't know anyone who gets a kick out of writing tests. | ||
| pmichaud | it really should be :multi('String'), I think. | ||
| lathos | Hey Andy, you still here? :) | ||
| jonathan | pmichaud: Yeah, me too. | ||
| Andy | I am. | ||
| jimmy | can trac.parrot.org can attach a file? | ||
| pmichaud | is there another 'join' perhaps interfering in the mix? | ||
| jonathan | It says no applicable methods, rather than conflict. | 15:26 | |
| tewk | lathos: check it in | ||
| pmichaud | ...with :multi('String') it gives "no applicable methods"? | ||
| jonathan | Yes. So I just wonder if MMD doesn't really know about all the variants too. | ||
| jimmy | purl>\tYou have 1 message waiting. how can i read it ? | ||
| purl | no idea, jimmy | ||
| pmichaud | jimmy: /msg purl messages | ||
| jonathan | erm | ||
| I mean, MMD doesn't chase up the tree properly. | |||
| tewk | or send it to me. | 15:27 | |
| pmichaud | that wouldn't surprise me. | ||
| jonathan | *sigh* | ||
| jimmy | can trac.parrot.org can attach a file? | ||
| pmichaud | we should add a test to Parrot for the other bug you found. | ||
| lathos | tewk: Checked in. | ||
| pmichaud | jimmy: yes, there's a button for attaching on the web page. | ||
| (although I don't know that it shows up for everyone.) | |||
| dalek | r33511 | simon++ | trunk: | 15:28 | |
| : Turn this into a DBDI-based test. Dear test fairies: please make it output TAP. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33511 | |||
| Andy | lathos: What did you want? | ||
| Did you just implement Mechanize in P6 for me? | |||
| lathos | Not yet. I'm looking for test fairies. | 15:30 | |
| jimmy | there are some functions under pmc dir,they are no docs. | ||
| Andy | So are you asking if I'm a test fairy? | 15:32 | |
| PerlJam | Andy: I think he's trying to coerce you into being one. | 15:33 | |
| Andy | I'm of the opinion that you're either born a test fairy or not. It's genetic. | ||
| jonathan | pmichaud: It doesn't. :-| | 15:34 | |
| jimmy | trac.parrot.org/parrot/ticket/19 | 15:36 | |
| Coke | pmichaud: (superclass vtable) look at languages/tcl/src/class/tclconst.pir | 15:38 | |
| Andy | lathos: What sorts of fairyness do you need from me? | 15:40 | |
| Coke | (button for attaching files) I could never get it to work myself. | 15:41 | |
| lathos | Andy: ext/SQLite/test.p6 needs to be more TAPulous | 15:42 | |
| jimmy | coke: trac ? i just attached a file | 15:43 | |
| Andy | Man, I am tapped on cycles. | ||
| I have a book due end of the month. | |||
| Coke | jimmy: excellent. | 15:44 | |
| jimmy | i am using firefox | ||
|
15:44
jan joined
|
|||
| Coke | pmichaud: it's a hack but one i've been using for some time. | 15:48 | |
| # Finally, delegate to our parent's set_string | 15:49 | ||
| $P0 = getattribute self, ['String'], 'proxy' | |||
| $P0 = value | |||
| (I think that's very similar to what someone pointed out before.) | |||
| PerlJam | lathos: just have it output "ok" a few times and call it done ;) | 15:50 | |
| pmichaud | Coke: oh, that could work for me. | 15:54 | |
| Coke++ # another nice trick | |||
| Rakudo and PCT owe some things to Tcl :-) | 15:55 | ||
| Coke | leo++, as I think that came from him. | ||
| pmichaud | (like, I guess, faster parsing) | ||
| Coke | mmheheh | ||
| jimmy | leo? | 15:56 | |
| purl | leo is possibly leo lapworth eq ranguard | ||
| Coke | leo was one of the main contributers for some time. | 15:57 | |
| jimmy | i saw | 15:58 | |
| Andy | lathos: If I were using P5, I'd be making it look roughly like this: rafb.net/p/mR84Di87.html | ||
| But I don't know the state of the P6 Test::More | |||
| Coke | er, leo is also one of parrot's older contributers. | ||
| PerlJam | I thought leo was youngish :) | 15:59 | |
| jimmy | i saw him historically | ||
| Coke | well, yah, I mean in parrot years. | ||
| (is that like dog years?) | |||
| of course, it's even wierder seeing lathos around again. | 16:00 | ||
| (he's the author of r3) | |||
| jimmy | and simon | 16:01 | |
|
16:02
PacoLinux joined
|
|||
| Andy | lathos: I committed my test fairy notes. I hope they can help. | 16:03 | |
| dalek | r33512 | petdance++ | trunk: | ||
| : Andy makes some test fairy notes | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33512 | |||
| jimmy is going to sleep | 16:06 | ||
| tewk | how do I give rakudo a @INC from the cmdline? | 16:11 | |
| PerlJam | tewk: you may not ... perl6 --help | 16:12 | |
| pmichaud | @INC from command line not implemented. | ||
| It's also not clear that Perl 6 has an @INC -- we just stopgapped it for now. | |||
| lathos | Andy: Thanks, that's a start! | 16:13 | |
| tewk | :( | ||
| pmichaud | put "use Test;" at the top and it might even work | ||
| I'd eliminate the quotes on the classnames in isa_ok | |||
| Andy | lathos: You're welcome. I didn't know if that was too basic. | ||
| I try to have about a 2:1 executable vs. *_ok() lines ratio | 16:14 | ||
| But especially at this early stage, just documenting your very basic assumptions can be crucial | |||
| in diagnosing future problems and assumption. | |||
| "Aha, that no longer returns an object of type Foo, it's now of type FooWhatever" | 16:15 | ||
| tewk | ../../parrot ../../languages/perl6/perl6.pbc test.p6 | 16:17 | |
| Can't find ./Test in @INC | |||
| pmichaud | tewk: yes, we have to figure out how a "standard location" for perl 6 libs | 16:18 | |
| s/how// | |||
| which is why I'm kind of eager for some pdd30 guidance and implementation | |||
| tewk | so can I work around it somehow? put a relative path in the use statement? | 16:19 | |
| pmichaud | we can probably put the build directory in @INC | ||
| pmichaud looks at that. | |||
| dalek | r33513 | tewk++ | trunk: | ||
| : [sqlite] make all and make test | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33513 | |||
| pmichaud | oh, @INC also comes from PERL6LIB | 16:20 | |
| tewk | lathos: do you have sqlite/test.p6 changes, I's like to move it to t/ | ||
| pmichaud: so set PERL6LIB | |||
| pmichaud | yeah | ||
| tewk | where is Test.pm | 16:21 | |
| purl | Test.pm is evil | ||
| pmichaud | $BUILD_DIR/languages/perl6 | ||
| tewk | duh its in la,, yeah what pmichaud said | ||
| lathos | tewk: I'm done for the day. | ||
| pmichaud | _eventually_ we expect many of the testing functions to become builtins | ||
| so even 'use Test;' wouldn't be necessary. | 16:22 | ||
| we're just waiting for a spec on that. | |||
| tewk focuses on works today. | |||
| pmichaud | but actually | ||
| pmichaud grins evilly | |||
| tewk | perl Makefile.PL; make test | 16:23 | |
| PERL6LIB=../../languages/perl6 ../../parrot ../../languages/perl6/perl6.pbc test.p6 | |||
| 1..1 | |||
| lathos | ../../perl6 would make that less hideous. | 16:24 | |
| pmichaud | I could certainly take a crack at drafting Synopsis 24 and making it look the way I want B-) | 16:26 | |
|
16:26
dngor joined
16:28
cognominal joined
|
|||
| pmichaud | then we could get rid of "use Test;" | 16:28 | |
| maybe I'll do that this weekend :-) | 16:29 | ||
| moritz | 24, "common practices"? | ||
| or is that list on feather outdated? | |||
| pmichaud | 24 is now "Testing" | 16:30 | |
| where's the list on feather, perhaps I can change it | |||
| moritz | docs/feather/syn_index.html in the pugs repo | ||
| I want to change something else as well | 16:31 | ||
| so I can do that too | |||
| pmichaud | current list is spreadsheets.google.com/ccc?key=p8...&hl=en | ||
| perhaps that should migrate to be S00-index.pod or something. | 16:32 | ||
| or S00-toc.pod | |||
| moritz | no such file or directory. | 16:33 | |
| tewk | is .WHAT suppose to return namespace::classname, if not is there another fucn that does? | 16:34 | |
| pmichaud | .WHO might | 16:35 | |
| .WHAT is not supposed to return the longname, no. | |||
|
16:35
allison joined
|
|||
| pmichaud | I don't know that we have .WHO implemented | 16:36 | |
| jonathan | We don't. | 16:37 | |
| pmichaud | using .WHAT and/or .WHO is typically not recommended | ||
| (in general for Perl 6, not just Rakudo) | |||
| there are usually better ways of getting at whatever it is you're wanting. | 16:38 | ||
| (on phone, meeting) | |||
| PerlJam | is the eval bot that executes perl 6 written in perl 6 or is it just a POE bot that executes the appropriate binary? | ||
| moritz | p6eval and polyglotbot are both p5 and POE based | ||
| there is also a p6 evalbot written in perl 6, but it had some issues | |||
| (like, stopped working) | 16:39 | ||
| PerlJam | moritz: where is it? | ||
| purl | it's it! | ||
| moritz | PerlJam: p6eval is misc/irclog/ in the pugs repo | ||
| PerlJam | thanks. | ||
| tewk | I'd like to print the isa of an object I guess, isa_ok($conn, DBDI::DriverManager); | ||
| is failing | |||
| not ok 1 - The object is-a 'DriverManager' | 16:40 | ||
| moritz | does $conn ~~ DBDI::DriverManager return true? | ||
| tewk | moritz: nope | 16:41 | |
| moritz | the irc logs will go down in a few minutes (server reboot) | ||
| rakudo: say 3.WHO | |||
| polyglotbot | No output (you need to produce output to STDOUT) | ||
| moritz | polyglotbot borked again. sigh. | 16:42 | |
| PerlJam | misc/irclog appears to only have a p5 bot. | ||
| moritz | PerlJam: the p6 one is somewhere in examples/ iirc | ||
|
16:43
apeiron_ joined,
moritz_ joined
|
|||
| jonathan | Typical. Fixing the MMD thing...causes another breakage to emerge. | 16:45 | |
|
17:35
ilbot2 joined
|
|||
| moderator | Parrot 0.8.1 "Tio Richie" Released | parrot.org | 588 RT | 11 trac | ||
|
17:39
moritz joined
17:40
moritz_ left
|
|||
| pmichaud | ...you know... | 17:50 | |
| the getattribute self, ['String'], 'proxy' trick that Coke showed sounds _very_much_ like the behavior I'm wanting for morphing subs | 17:51 | ||
| ideally I'd like | |||
| .const 'Sub' $P0 = 'foo' | |||
| morph $P0, 'Method' | |||
| to change $P0 "in place" to be of type Method (which is a subclass of Sub) | 17:52 | ||
| e.g., where we've previously done $P99 = subclass 'Sub', 'Method' | |||
| internally, we should (1) create a new instance of 'Method', (2) copy that instance into the current PMC, (3) bind the old PMC value to the ['Sub'], 'proxy' attribute | 17:53 | ||
| (maybe swap steps 2 and 3) | |||
| jonathan | pmichaud: Sadly, we explode at (2) I think. | ||
| pmichaud | jonathan: isn't that what we basically do for 'copy' opcode now? | ||
| jonathan | Because we're doing copy onto a constant PMC. | ||
| pmichaud | yes, I figured that might be the case. | ||
| jonathan | I'm pretty sure I attempted such a thing recently and it segfaulted. | 17:54 | |
| pmichaud | still it seems like it ought to be doable | ||
| but it's the same sort of thing for Integer and Int | |||
| $P99 = subclass 'Integer', 'Int' | |||
| $P0 = new 'Integer' | |||
| morph $P0, 'Int' | |||
| iwbni that simply did steps (1), (3), and (2) above. | |||
| jonathan | Yes, but that's different. | ||
| pmichaud | agreed. | ||
| jonathan | Here, $P0 is a newly allocated PMC. | ||
| I didn't look into exactly why it didn't work. | 17:55 | ||
| jonathan is still digging his way through Parrot guts to work out why having a more complete MRO causes things to fail horribly. | |||
|
17:55
particle joined
|
|||
| pmichaud | it would be very helpful if 'morph' (or some other opcode) could get this behavior for automatically turning PMCs into a subclass type | 17:56 | |
| PCT could then easily cast all of the PAST::Block nodes into the appropriate type | |||
| and we aren't doing a lot of cloning/copying | |||
| (the copying we're doing is just a memcpy) | 17:57 | ||
| (if we follow the copy opcode model) | |||
| and HLLs could easily cast Parrot PMCs into the appropriate boxed types | |||
| jonathan | Sounds like what the rebless_subclass op does. ;-) | ||
| pmichaud | oh, I forgot we had that | 17:58 | |
| pmichaud looks. | |||
| jonathan | Don't. You'll go blind. | ||
| ;-) | |||
| pmichaud | I'm just thinking it might be a more general behavior for 'morph' | 17:59 | |
| or something like it | |||
| anyway | |||
| lunchtime here, back in 1h | |||
| jonathan | ok | 18:02 | |
| tewk | Infinoid: tools/build/nativecall.pl:709 is the place where jitted nci code is placed in a managedstruct. | 18:09 | |
| I'm only familiar with jitted nci code, I'm not sure how or if the lifetime of other jitted code is managaged. | 18:10 | ||
| Infinoid | great, thanks | 18:12 | |
|
18:14
rdice joined
18:35
ThF joined
|
|||
| dalek | r33517 | jonathan++ | trunk: | 18:37 | |
| : [core] Remove some effectively dead code. Since PMCProxy was made to inherit from Class, then this code would never do anything for it, plus this original approach was changed. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33517 | |||
| r33518 | jonathan++ | trunk: | 18:39 | ||
| : [p6object] The last change to p6object missed a subtle detail. You might have the proto-object for the thing that inherits from String rather than something you want treated as a string and looked up as a name, so if we find we've got a thing that is a proto for a string type, we treat it as a proto, not a string. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33518 | |||
| Infinoid | amazingly enough, that worked and passes tests | 18:40 | |
| an earlier crash looked like it was actually trying to free() a subset of the original map, so it's still possible that munmap is returning an error and we're leaking maps. | 18:41 | ||
| but in the meantime... time to try it feather3 | |||
| dalek | r33519 | jonathan++ | trunk: | 18:42 | |
| : [core] Fix to the default clone routine for objects. Before, if there were multiple PMC types inherited from, it would do the wrong thing. We never tried, so we never knew, and it worked by accident. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33519 | |||
|
18:43
chromatic joined,
allison joined
|
|||
| dalek | r33520 | jonathan++ | trunk: | 18:45 | |
| : [core] PMCProxy wasn't yet building and keeping an MRO nor a parent list. This amongst other things meant if we had an object inheriting from a PMC that inherited from another PMC, and we tried to use that highest type in :multi(...), it failed to see instances of the object at the bottom as matching. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33520 | |||
| jonathan hopes that mass of changes won't cause any problems - they should almost get us being a lot more correct that before and make things that didn't work, no work. | 18:46 | ||
| *now | |||
| chromatic | Oh, yes. | 18:47 | |
| moritz | it seems they require a realclean (or at least reconfigure= | ||
| jonathan | It started off with wanting to do a small change in Rakudo, then discovering a trail of broken Parrot bits. | ||
| moritz: Really? I didn't do one... | |||
| moritz | jonathan: sorry, was on the wrong machiine | 18:48 | |
| jonathan | I've got a bunch of Rakudo changes to switch us over to using Str rather than Perl6Str. | ||
| moritz | this one had a really old parrot tree | ||
| jonathan | Got two individual tests failing...rather obscure. | ||
| particle | chromatic: what do you think about making intsize on win64 equal ptrsize? | 18:49 | |
| Infinoid | isn't that an MSVC thing, not a parrot tunable? | ||
| chromatic | That'll help in the short term, but I fear that it covers up some bad code. | ||
| nopaste | "particle" at 76.121.106.245 pasted "win64 build warnings and miniparrot segfault" (7957 lines) at nopaste.snit.ch/14824 | 18:51 | |
| jonathan | ...at 8k lines I'm thinking there's a lot of warnings! | ||
| particle | you betcha! | 18:52 | |
| jonathan | pointer truncation from 'v | ||
| oid *' to 'unsigned int' | |||
| chromatic | Okay, that gives us a start at fixing them. | ||
| particle | opcode_t to unsigned int | ||
| jonathan | That looks like it'd cause some issues. | 18:53 | |
| particle | size_t to UINTVAL | ||
| etc | |||
| i have a win64 vm with a full x64 stack | 18:54 | ||
| chromatic | I'd like to see what happens when you make the sizes identical. Hopefully that fixes things. | ||
| Infinoid | rakudo: say 1 | ||
| polyglotbot | OUTPUT[1ā¤] | ||
| particle | yeah, i'm looking for the place to specify that now, and failing to find it | ||
| Infinoid | Ok, that patch works. | ||
| chromatic | Fortunately a lot of those errors are in generated code (ops, NCI). | ||
| particle | ah, maybe defaults... | 18:55 | |
| Infinoid | so I hacked ManagedStruct so that the "private0" flag makes it do munmap/mremap instead of free/mrealloc, and that makes polyglotbot work again | 18:56 | |
| Coke | rakudo: 1.WHAT.say | ||
| polyglotbot | OUTPUT[Intā¤] | ||
| Coke | rakudo: 1.PARROT.say | ||
| Infinoid | it's still building the other languages. | ||
| polyglotbot | OUTPUT[Intā¤] | ||
| Coke | will tcl work? =-) | 18:57 | |
| Infinoid | good point, I don't think it's running from a checkout that includes partcl at the moment | ||
| Infinoid works on that while he's in here | 18:58 | ||
| lolcode: VISIBLE 1 | 18:59 | ||
| polyglotbot | OUTPUT[1ā¤] | ||
| Infinoid | what's the more correct version of the private0 flag hack? subclassing ManagedStruct to ManagedMmapStruct or ManagedJitBuffer or somesuch? | 19:01 | |
| chromatic | I think the Pointer PMC should work. | 19:04 | |
| dalek | r33521 | coke++ | RELEASE_0_8_0: | 19:07 | |
| : [APL] Copy partcl's Configure.pl to give us a way to regen our makefile without | |||
| : having to run something at the top of parrot's build dir. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33521 | |||
| particle | coke: WRONG BRANCH | ||
| Coke | rant: tortoise svn complains when you try to commit to a tag. | 19:08 | |
| my plain svn does not. | |||
| particle | svn switch brain | ||
| moritz | is that a rant about tortoise or about plain? ;-) | ||
| Coke | plain. | 19:09 | |
| I just tried to delete it, it said it doesn't exist. | |||
| Coke tries again. | |||
| removed. | 19:10 | ||
| dalek | r33522 | coke++ | RELEASE_0_8_0: | ||
| : Bad Coke. Don't commit to a tag. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33522 | |||
|
19:11
allison joined
|
|||
| Infinoid | Pointer doesn't seem to have a provision for freeing the buffer. | 19:11 | |
| tewk | q | ||
| chromatic | Look in its destroy. | 19:12 | |
| Or was that its mark? | |||
| It must be its mark. | |||
| Infinoid | I saw the mark, I just don't see a destroy | ||
| dalek | r33523 | coke++ | trunk: | ||
| : [APL] Copy partcl's Configure.pl to give us a way to regen our makefile without | |||
| : having to run something at the top of parrot's build dir. | |||
| : (And this time, don't do it in a release tag) | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33523 | |||
| chromatic | Nevermind then. | ||
| Infinoid | okay. next idea? | ||
| purl | well, next idea is the mailing list | ||
| chromatic | We could do something similar in ManagedStruct, though -- give it a function to call to free the memory. | 19:13 | |
| Infinoid | that sounds like a great idea. | ||
| chromatic | No flag, no subclassing. | ||
| Infinoid | yep, works for me | ||
| Infinoid works up a patch | |||
| Coke | good idea? | 19:18 | |
| bad idea? | |||
| purl | Coke: Good Idea: Kissing a loved one. Bad Idea: Kissing a total stranger. | ||
| PerlJam | if people didn't kiss strangers there wouldn't be much kissing methinks | 19:19 | |
| particle | rakudo: grammar s19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[.*] <.ws> ]? '--' $<i> }; }; say '++A --A' ~~ s19::p; | ||
| polyglotbot | OUTPUT[Could not find non-existent sub s19::pā¤current instr.: '_block11' pc 25 (EVAL_13:17)ā¤called from Sub 'parrot;PCT;HLLCompiler;eval' pc 892 (src/PCT/HLLCompiler.pir:508)ā¤called from Sub 'parrot;PCT;HLLCompiler;evalfiles' pc 1227 (src/PCT/HLLCompiler.pir:674)ā¤called from Sub | ||
| ..'parrot;PCT;HLLCompiler;command_line' pc 1403 (src/PCT/HLLCompiler.... | |||
| particle | rakudo: grammar s19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[.*] <.ws> ]? '--' $<i> }; }; say '++A --A' ~~ s19.p; | ||
| polyglotbot | OUTPUT[invoke() not implemented in class 'Hash'ā¤current instr.: '_block11' pc 31 (EVAL_13:17)ā¤called from Sub 'parrot;PCT;HLLCompiler;eval' pc 892 (src/PCT/HLLCompiler.pir:508)ā¤called from Sub 'parrot;PCT;HLLCompiler;evalfiles' pc 1227 (src/PCT/HLLCompiler.pir:674)ā¤called from Sub | ||
| ..'parrot;PCT;HLLCompiler;command_line' pc 1403 (src/PCT/HLLCompile... | |||
| moritz | particle: type names need to be uppercase | ||
| dalek | r33524 | jonathan++ | trunk: | ||
| particle | oh right | ||
| dalek | : [rakudo] Switch us from using Perl6Str to using Str. Either this, one of the Parrot changes that were required to make this work or something else entirely means we are failing a couple of tests in S02-builtin_data_types/bool.t. These relate to expecting an isa test for Int is a Num to work (it works with smartmatch, where we override the Num proto's ACCEPTS to specially handle this, but they aren't actually in a type relationshp); not sure how that test ev | ||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33524 | |||
| Tene | rakudo: say "polyglotbot works again now?" | ||
| polyglotbot | OUTPUT[polyglotbot works again now?ā¤] | ||
| Infinoid | momentarily. | 19:20 | |
| particle | rakudo: grammar S19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[.*] <.ws> ]? '--' $<i> }; }; say '++A --A' ~~ S19::p; | ||
| polyglotbot | OUTPUT[++A --Aā¤] | ||
| particle | rakudo: grammar S19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[.*] <.ws> ]? '--' $<i> }; }; say '++A foo --A' ~~ S19::p; | ||
| polyglotbot | OUTPUT[ā¤] | ||
| Infinoid | there's a local patch that will get wiped in about 20 minutes | ||
| particle | why does that fail, moritz? something with $<d>=[.*]... | ||
|
19:20
mfredrickson joined
|
|||
| Coke | would it be helpful if polygotbot told you revision # it was running against? | 19:20 | |
| particle | parrot rev and tcl rev, for tcl | 19:21 | |
| Coke | one thing at atime. =-) | ||
| Infinoid | it would be helpful if polyglotbot detects a parrot segfault and nopastes a backtrace. but I've got enough on my plate at the moment | ||
| Tene | tcl: polyglotbot supports tcl now? | ||
| polyglotbot | OUTPUT[Parrot VM: Can't stat languages/tcl/tcl.pbc, code 2.ā¤main: Packfile loading failedā¤] | ||
| moritz | particle: dunno, I'm writing up the 'Perl 6 Tidings' for december, and can't really concentrate :( | ||
| Infinoid | Tene: I'm thinking about adding that | 19:22 | |
| particle | mortiz++ # keep at it, i'll bug pmichaud when he returns | ||
| Infinoid | you know... here I am hacking ManagedStruct to have a custom destroy hack similar to Pointer's custom mark hack, and it occurs to me... if I'm going to be playing games with PMC_struct_val() to store the pointer to the free function, won't people get confused and think the PMC_struct_val is a pointer to the Struct being Managed? | 19:24 | |
| particle | shouldn't you be using ATTRs instead of PMC_*_val ? | 19:25 | |
| Infinoid doesn't know what an ATTR is, he just got it in his head to do things the way Pointer.pmc does them. | 19:26 | ||
| particle | optionally caching things in PMC_struct_val, if needed | ||
| ok, it seems the Pointer PMC is old-school | |||
| Infinoid | well, I can certainly put it in an ATTR, it just means I need to figure out how to set it from external C code. no big deal. | 19:27 | |
| particle | yeah, there's macros generated for that | 19:28 | |
| Infinoid | the buffer resizing in ManagedStruct.set_integer_native() makes things more complicated. | 19:32 | |
| PerlJam | particle: .* is greedy and since you're using token, there's no backtracking. | ||
| particle | ah, perljam++ | ||
| rakudo: grammar S19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[.*?] <.ws> ]? '--' $<i> }; }; say '++A foo --A' ~~ S19::p; | 19:36 | ||
| polyglotbot | OUTPUT[ā¤] | ||
| moritz | particle: in a token .*? will never match anything | 19:37 | |
| jonathan | rakudo: grammar S19 { token p { '++' $<i>=['A'] <.ws> [ $<d>=[\\S*] <.ws> ]? '--' $<i> }; }; say '++A foo --A' ~~ S19::p; | ||
| polyglotbot | OUTPUT[++A foo --Aā¤] | ||
| jonathan | WIN | ||
| particle | jonathan: cheater! | 19:38 | |
| PerlJam | yep. that highlights .* as a "regex-smell" | ||
| (it's almost always the wrong thing :) | |||
| particle | i really want to match anything up to end of string or '--' $<i> | ||
| PerlJam | use a look ahead? | 19:39 | |
| Infinoid | in the meantime, I'm going to throw an exception when a custom free() function was specified and a buffer resize is requested. | ||
| I suppose a better solution is to add a resize() function too... but I want to get to a point where something works first | |||
| particle | Infinoid: working trumps good | 19:40 | |
| Infinoid | I'm off to lunch; polyglotbot will re-break itself from cron at 12:07 pacific time | 19:44 | |
| PerlJam | I've discovered that one of the hardest things for me using perl 6 regex is actually because the idea of backtracking is ingrained in my head so well, I will often screw up using token/rule | 19:46 | |
| particle | apparently, you're not alone | 19:47 | |
| PerlJam | for instance, just now I suggested a look ahead, when there's a much simpler solution: use regex instead of token :) | ||
| pmichaud | back | 19:48 | |
| jonathan | Wow. It turns out that if you add something so we die when you use a type that does not exist, a bunch of spectests fail because they rely on you silently getting a Failure object instead. | ||
| They'll be compile-time errors once we have the type registry, I expect. | 19:49 | ||
| moritz | when we have the type registory, it'll be easy to identify them and turn them into eval_dies_ok | ||
| jonathan | moritz: If you want to do the clean-up, I've got a patch that shows those up now. | ||
| And it'd be helpful to be able to give people a nicer error now anyway. | 19:50 | ||
| moritz | jonathan: I'm interested, but I don't know if I'll find the tuits right now | ||
| (but likely within a few hours) | |||
| pmichaud | note that "type registry" is simply "look up protoobjects" | 19:51 | |
| nopaste | "jonathan" at 85.216.157.73 pasted "moritz: for when you have time, this is the patch that shows it up; if you can clean up the new test fails it gives, feel free to apply it too" (17 lines) at nopaste.snit.ch/14825 | 19:52 | |
| jonathan | pmichaud: Yes, the namespace is just our registry. ;-) | ||
| Well | |||
| Or lexicals table I guess. | |||
| PerlJam | jonathan: so ... how do I get a list of all of the types that rakudo knows about? :) | 19:53 | |
| dalek | r33525 | chromatic++ | trunk: | ||
| : [src] Added configuration code to include the header which defines Dl_info | |||
| : (used to find backtrace information in Parrot_print_backtrace()). If this | |||
| : doesn't break the build on non-GNU systems, this fixes RT #58668, reported by | |||
| : Christoph Otto, we can use make cover again. If it does break the build, we'll | |||
| : have to be smarter and probe for glibc. Either way, this is closer to correct. | |||
| : It also includes some minor code tidying in src/exceptions.c. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33525 | |||
| jonathan | ls src/classes/ | perl -ne 'print s/\\.pir//' # ;-) | ||
| Oooh! It's 9pm and I didn't eat yet... | 19:54 | ||
| particle | ack -ag \\.pir src/classes | ||
| er, oops, i missed the removal of .pir there | |||
| PerlJam | okay, how do I get such a list from within rakudo? | ||
| (including user-defined types) | |||
| pmichaud | PerlJam: there's not really a "type registry" as such. | 19:55 | |
| there are just protoobjects. | |||
| at least, I haven't seen any mention for a type registry | |||
|
19:56
apeiron joined
|
|||
| Tene | Well, when we're compiling "class A { ... }; A.foo();", we haven't actually created the A class or protoobject yet | 19:56 | |
| When we get to A.foo | |||
| Get to compiling A.foo, that is. | |||
| pmichaud | yes, we have. | ||
| at least, according to the Perl 6 spec we have. | 19:57 | ||
| because class definitions happen at BEGIN time. | |||
| PerlJam | not having a mechanism to get the types that perl 6 knows about seems like introspection fail to me. Surely there will be a type registry of some sort. | ||
| pmichaud | PerlJam: propose one on p6l. | ||
| what rakudo will do is that when it recognizes it has a new type definition, it'll put a "placeholder" into the appropriate slot so that the rest of the compiler recognizes the symbol as a type | 19:58 | ||
| that slot will then be overwritten by the true protoobject when it's created | |||
| jonathan | PerlJam: They're just symbols in the namespace - if there's a way to iterate over things in the namespace, you'd be able to find those. | ||
| masak | greetings gentlemen. | ||
| PerlJam | pm: when will rakudo move out of the parrot repo? | 19:59 | |
| masak backlogs | |||
| jonathan | hi masak | ||
| masak | \\o | ||
| jonathan | I didn't fix much in Rakudo yet today, I'm afraid... :-| | ||
| Coke | when rakudo moves out, are you looking to preserve history? | ||
| pmichaud | pj: I'd like to see parrot have its "make install" house in order. | ||
| technically, rakudo won't be the one "moving out" :-) | |||
| PerlJam | heh | ||
| pmichaud | parrot will be moving out of rakudo's repository. | ||
| particle hands pmichaud the keys | |||
| masak | jonathan: good. I've been so busy I've only been able to submit one rakudobug a day or so. :) | ||
| (on average) | 20:00 | ||
| Coke | pmichaud: I've been doing pretty well with tcl's current setup, which basically involves piggybacking on a locally built version of parrot. | ||
| PerlJam | Coke: who cares about the past? We'll just repeat it again at some point ;-) | ||
| pmichaud | anyway, rakudo will just move to a different perl.org repository, and then parrot will move to its own repo somewhere else. | ||
| so yes, we'll preserve history. | |||
| PerlJam | pm: the reason I ask is that I have that perl6 regex intro that I wrote a while back and I was going to update it and include instructions on how to get and compile rakudo. I'd like for that part to not be invalidated too soon :) | 20:01 | |
| pmichaud | well, I'm thinking it'll happen in the january or early february timeframe | 20:02 | |
| Coke pokes feather with a stick. | |||
| pmichaud | it doesn't make much sense to me to move rakudo to a new repository and then move it back to perl.org | ||
| PerlJam: you could speed things along if you wanted to work on the 'make install' issues :-) :-) | 20:03 | ||
|
20:04
allison joined
|
|||
| PerlJam | pm: I want to work on everything I'm able and that's part of the problem. I need to get my head settled so that I can focus on something and make progress. | 20:04 | |
| pmichaud | make install is I think (1) fairly well circumscribed, (2) timely, and (3) important. | 20:05 | |
| PerlJam | but it's not as fun or interesting as other things :) | ||
| (that where my head gets in its own way) | |||
| nopaste | "particle" at 76.121.106.245 pasted "S19 grammar (in progress)" (54 lines) at nopaste.snit.ch/14826 | 20:06 | |
| PerlJam | <ident> doesn't match '-' ? | 20:07 | |
| pmichaud | why does the value token include quotes? Aren't those normally stripped by the shell? | ||
| particle | chromatic: svn head builds for me | ||
| PerlJam: no, it doesn't, there's an apostrophe rule in STD for - and ' | |||
| pmichaud: yes, i'm poorly emulating shell there still | 20:08 | ||
| pmichaud | might put a comment about that in the grammar | ||
| particle | pmichaud: it's a grammar for me to test my synopsis | ||
| pmichaud | particle: yes, but it still might be worth a comment if anyone else is going to take a look at it | 20:09 | |
| particle | i can feed it -a b ++C=d e -f ++G h -i --C=d -- etc | ||
| once i'm getting the correct parse tree (and i think i am now) i can test like mad and erase ambiguity from my spec | 20:10 | ||
| PerlJam | Is the S19 that describes this in the repo? | ||
| particle | not yet, just notes in a google doc | ||
| pmichaud | okay. It just seems to me that whatever comes after the equals sign is essentially going to become .* | ||
| and I'm not sure how commas will parse well there. | 20:11 | ||
| particle | euals sign? in option? | ||
| PerlJam | particle: what's the ++ stuff all about ? | ||
| pmichaud | yes, in option | ||
| particle | commas work there. i can run all the examples in S06... | ||
| except i need to get clarification on spaces after commas | 20:12 | ||
| right now i had to remove those | |||
| PerlJam: we need to be able to pass options through to underlying components | |||
| pmichaud | particle: my point is that the shell removes the quotes (more) | ||
| particle | ++name ... --name is the syntax i'm using | 20:13 | |
| pmichaud: depends on the shell | |||
| pmichaud | $ echo --name=val1,'val 2',val3 | ||
| --name=val1,val 2,val3 | |||
| so if you split on commas, we can end up with something like | 20:14 | ||
| $ echo --name=val1,'hello,world',val3 | |||
| --name=val1,hello,world,val3 | |||
| PerlJam | particle: so ++foo and --foo are delimiters? | ||
| particle | pmichaud: my parser gets 'hello,world' | 20:15 | |
| pmichaud | are you entering strings directly into the parser, or are you taking the arguments that come into the program? | ||
| particle | PerlJam: yes, specifically, it'll be ++RTS=parser ... --RTS=parser etc | ||
| RTS is run-time system | |||
| entering via repl | 20:16 | ||
| pmichaud | for a _real_ test, you should be running your grammar against @*ARGS | ||
| because that's what the program will get | |||
| particle | i'm not there yet, and it's highly dependent on os | ||
| pmichaud | in Parrot, you'll be getting args | ||
| and that's _not_ dependent on the os, iiuc | |||
| (er, .param pmc args in 'main') | 20:17 | ||
| particle | windows doesn't do anything with single quotes | ||
| they're just another character | 20:18 | ||
| pmichaud | so you're saying that @*ARGS gets different values when run from windows than when run from unix? | ||
| particle | perl -e'say "hello world"' # windows fails | ||
| pmichaud | I mean in parrot. | ||
| particle | doesn't matter, it's a shell thing | 20:19 | |
| pmichaud | it does matter | ||
| I think you're missing or overlooking my point | |||
| if I do: ./parrot foo.pir a "b c" d | 20:20 | ||
| particle | in windows, the above is <perl> <-e'say> <"hello> <world"'> | ||
| pmichaud | what arguments does foo.pir get ? | ||
|
20:20
bacek joined
|
|||
| particle | pmichaud: foo.pir gets <a> <b c> <d> | 20:20 | |
| but, for ./parrot foo.pir a 'b c' d | |||
| pmichaud | correct. No quotes -- they've been stripped already. | ||
| particle | it's <a> <'b> <c'> <d> on windows | 20:21 | |
| pmichaud | correct. | ||
| particle | and <a> <b c> <d> on linux | ||
| pmichaud | correct. | ||
| none of those give you anything that you can parse out using this grammar. | |||
| (at least, not if you want quotes to work in the way you're describing <value> in the grammar.) | 20:22 | ||
| particle | i'm not emulatnig the parsing of 'value' | 20:23 | |
| it doesn't need to be exact, it's just there for testing | |||
| pmichaud | okay. | ||
| I'm simply saying that the = <value> part of this grammar is going to have to be adjusted radically. | |||
| because you never have the full shell command line, you only have what's left over after the shell (whatever shell it happens to be) has done its thing and split the command line into what *it* thinks the arguments are. | 20:24 | ||
|
20:24
apeiron joined
|
|||
| particle | here, do this: tools/dev/mk_language_shell.pl S19 | 20:24 | |
| pmichaud | done. | 20:25 | |
| particle | paste nopaste.snit.ch/14826 to src/parser/grammar.pg | ||
| make | |||
| nopaste | "particle" at 76.121.106.245 pasted "S19 tests (in progress)" (79 lines) at nopaste.snit.ch/14828 | ||
| particle | you can add that file to t/ if you want | 20:26 | |
| PerlJam | (this is partly why I wanted to look at S19 btw :) | ||
| particle | but run --target=parse | ||
| try --foo=bar,'baz,quux',"hello world" -- chunky-bacon | |||
| pmichaud | try system "@cmd" instead of system @cmd | 20:27 | |
| and that will be more accurate. | |||
| by using system @cmd (no quotes) you're bypassing the shell. | |||
| particle | yes, i'm doing that on purpose, so i can get reliable results on any platform | 20:28 | |
| the value token strips quotes for me, rather than the shell | |||
| ...using unix semantics | |||
| pmichaud | I'm just saying this isn't very realistic. | ||
| in terms of something that can actually work. | 20:29 | ||
| particle | it's not designed to work | ||
| it's designed to help me develop the spec | |||
| it's completely throw-away code | |||
| (but the tests are good) | |||
| pmichaud | I think the spec has to acknowledge the reality that shells exist and that they do things to the command line before Perl ever starts. | 20:30 | |
| particle | correct | ||
| it will acknowledge that, without question. | |||
| pmichaud | okay. This grammar doesn't. | ||
| particle | this grammar emulates what perl6 sees *after* all shell processing | 20:31 | |
| pmichaud | not really. | ||
| well.... | |||
| purl | Three holes in the ground! | ||
| particle | if it doesn't, then i'm doing something wrong. | 20:32 | |
| PerlJam | particle: it is meant to be shell agnostic at some point (i.e. it should work if the shell eats quotes or if the shell gives you a single string that you have to parse yourself)? | ||
| particle | my grammar allows a value to have embedded spaces in it, and even embedded quotes | 20:33 | |
| pmichaud | so, using this grammar, I'd have to write perl6 foo.pl "--option=a,'b,c',d" | 20:34 | |
| particle | the only thing it doesn't allow that is in S06 is --name=val1,'val 2, etc | ||
| pmichaud | and I'd have to do | ||
| particle | ...the 'etc' won't be part of --name | ||
| pmichaud | perl6 foo.pl "++RTS=parser option option option --RTS=parser" | 20:35 | |
| i.e., I'd have to quote things on my command line so that they'd be passed as an entire string for this to parse | |||
| particle | pmichaud: i'm using C<..\\..\\parrot s19.pbc --target=parse> | ||
| imagining that's my shell, but i never have to write 'perl ' | 20:36 | ||
| *perl6 | |||
| pmichaud | right now you're using ..\\..\\parrot s19.pbc --target=parse -e "--name='spacey value'" | 20:37 | |
| i.e., your parser gets "the entire option command line" as a single string. | |||
| which it then parses. | |||
| particle | in the test file, yes, that's true | ||
| pmichaud | I'm saying that's not real. | ||
| particle | correct. it's emulation | ||
| pmichaud | I'm saying it's not even emulation. | ||
| because in the real world, you never get the complete command line as a single string | 20:38 | ||
| you get an array of strings | |||
| where some things have been taken out | |||
| so you would never get "--name='spacey value'", you'd get <--name='spacey> and <value'> (on windows) | |||
| and you'd get <--name=spacey value> (on unix) | 20:39 | ||
| particle | right | ||
| pmichaud | and this grammar doesn't handle either case. | ||
| particle | ah, okay, i was thinking the wrong way around on unix | ||
| i see what you mean there, now | 20:40 | ||
| pmichaud | in particular, someone does ++RTS=foo option --name=value option --RTS=foo | ||
| you get | |||
| <++RTS=foo> <option> <--name=value> <option> <--RTS=foo> | |||
|
20:40
ruoso joined
|
|||
| pmichaud | and so the grammar has no chance to match the beginning and ending ++/-- because they aren't in a single string. | 20:40 | |
| it's perfectly okay to use this approach to test various things -- I'm just wanting to point out that in reality we never have a single string that contains all of the command line, we have an array of strings that is whatever our shell and C environment have decided to give to us | 20:42 | ||
| and so whatever is processing the command line has to look at it as an array of strings, and not a single string. | |||
| because ultimately, when main(int argc, char* argv[]) runs, all we have is argv. | 20:43 | ||
| particle | yes, but i'll be describing passthru options based on my current regex, not based on semantic analysis of an array of options | ||
| pmichaud | based on your current regex? | 20:44 | |
| particle | regex passthru | ||
| pmichaud | regex passthru? | ||
| particle | in grammar.pg | 20:45 | |
| nopaste.snit.ch/14826 | |||
| pmichaud | what are you matching passthru against? | ||
| particle | this grammar is intended to guide me in writing S19 | 20:46 | |
| not in implementing S19 | |||
| pmichaud | okay. | ||
| I understand then. | |||
| you really are emulating your own "shell" but not being concerned with how it might work in any real shell. | 20:47 | ||
| particle | yes | ||
| the test data will be kept, the test harness rewritten | |||
| moritz | jjo + | ||
| particle | it's getting me to a point where i can do test-driven-specification | 20:48 | |
| moritz | sorry, dead session (ssh) | ||
| pmichaud | okay. | 20:49 | |
| apologies for misunderstanding, then. | |||
| particle | np, i got at least one good nugget of info out of that ;) | ||
| moritz | jonathan: your type registry patch fails with generics (::T), see t/spec/S06-signature/type-capture.t | 20:50 | |
| pmichaud | we probably need to check the block symbol tables as well. | 20:51 | |
| jonathan | moritz: Thanks, did you update the others? | 20:52 | |
| moritz | jonathan: I'm currently working on it | ||
| jonathan | moritz: OK, thanks. | ||
| pmichaud: Did you have any thoughts on the now-failing Int.isa(Num) test? | |||
| pmichaud | ...this patch dies on unrecognized types? | ||
| that's.... wrong | 20:53 | ||
| jonathan | pmichaud: nopaste.snit.ch/paste | ||
| moritz | jonathan: wrong url | ||
| nopaste.snit.ch/14825 | |||
| jonathan | pmichaud: Aye, in the end typename should fail to match. | 20:54 | |
| And then we'd know it wasn't a type. | |||
| pmichaud | that's more of what I was looking/hoping to do. | ||
| jonathan | Right. But for now we treat everything that is starting with an uppercase character as a type. | ||
| pmichaud | I was looking to get rid of that, too. | ||
| jonathan | Same, but we need to start installing stuff in the symbol table first. | 20:55 | |
| pmichaud | my point is that except for lexicals it's already there. | ||
| or can be there quickly. | |||
| jonathan | ? | ||
| pmichaud | what are you thinking of as "the symbol table"? | ||
| jonathan | If it's lexical, it'll have an entry in the blocks (as already happens), if not it'll get stuck in the namespace (at compile time, as we're compiling). | 20:56 | |
| pmichaud | all of our symbols are already in the namespace at compile time | ||
| except for the ones we're compiling | 20:57 | ||
| jonathan | class Foo { }; # after seeing the Foo we should have something in the symbol table | ||
| or namespace | |||
| purl | namespace is the internal namespace for things like $c->forward and template paths, anyway | ||
| pmichaud | right | ||
| jonathan | Or call it what you will. :-) | ||
| pmichaud | as soon as we see the Foo, we'll be putting an entry in the namespace. | ||
| jonathan | Right. But we're not there with that yet. | ||
| pmichaud | right. | ||
| jonathan | So having at least some error now is an improvement on the current situation where we just silently fail and you get surprised later on, IMO. | 20:58 | |
| pmichaud | okay, I agree with that. | 20:59 | |
| actually, though, I'd like to go a step further. | |||
| jonathan | I wasn't seeing it as a long-term solution. | ||
| Oh? Generate a call node instead? | |||
| pmichaud | I was thinking "check to make sure we really got a type" | 21:00 | |
| but maybe that's not so good just yet. | |||
| jonathan | Ah, I see. | ||
| Hmm. Could do. | |||
| pmichaud | I'm trying to disable the ~~ Grammar::Regex meme | ||
| jonathan | I wasn't doing anything complicated because I knew it wasn't going to last all that long. | ||
| pmichaud | but I don't have an easy way to do that at the moment. | 21:01 | |
| jonathan | We don't have any equivalent thingy that works/is spec'd yet, do we? | ||
| moritz | pmichaud: so what should be the alternative? ~~ &Grammar::Regex? | ||
| pmichaud | one can always do : ~~ / <Grammar::Regex> / | ||
| jonathan | Aha, OK | ||
| pmichaud | that works, *and* it has the advantage that the overridden rules work as well. | 21:02 | |
| jonathan | If there is *a* way (that one does it for me) then I'm happy to see the certainly unspec'd one fail. | ||
| particle | +1 | ||
| purl | 1 | ||
| pmichaud | the problem we have now is that Grammar::Regex parses but gives us back a sub | 21:03 | |
| (which then gets invoked) | |||
| but we also have to be careful that Namespace::foo continues to parse and gives us back a sub | |||
| and I'm not sure that we aren't ending up with the same <typename> rule handling both cases right now. | |||
| jonathan | Hmm | 21:04 | |
| It may be. | |||
| typename currently appears to look in the blocks. Wonder why it fails to find the type in there... | 21:05 | ||
| pmichaud | I wonder how STD.pm currently parses Foo::bar( ) | ||
| jonathan | .oO( currently...lol ) |
21:06 | |
| pmichaud | it can't see 'Foo::bar' as a typename itself | ||
| maybe it's in listop | |||
| jonathan | It may try typename and fail. | ||
| pmichaud | yes, I know it fails, but then what parses it? | ||
| jonathan | Aha, I see what you mean. | 21:07 | |
| pmichaud | oh | ||
| particle | look at the syntax-highlighted tests for Bool::True | ||
| pmichaud | it gets parsed by <longname> in term:name | ||
| okay, that's good. | 21:08 | ||
| jonathan | OK. | ||
| pmichaud | so yes, if we can just get our existing typename rule to recognize that 'Foo::bar' isn't a type then we'd be in better shape. | 21:09 | |
| jonathan | Oh! OK, ouch. Turns out generic types in signature objects don't work out so well right now (a problem that goes away after the parameter refactor). | 21:10 | |
| Tene | pmichaud: what's the best option for passing something by name in a past node? I'm looking at adding stuff for CATCH and CONTROL and friends for PAST::Op :pasttype<try> | 21:11 | |
| pmichaud | Tene: I'm thinking that's the wrong way for us to do it. | ||
| Tene | Oh? | ||
| pmichaud | I'm thinking these need to be traits on PAST::Block | ||
| Tene | Ah. | ||
| Yeah, I can see that. | |||
| moritz | jonathan: fixing up all the spectests correctly is harder than expected | ||
| pmichaud | that's why this affects the loop refactor so much | 21:12 | |
|
21:12
davidfetter joined
|
|||
| jonathan | moritz: OK. I suspect that what I just discovered is going to kinda kill off this patch. | 21:12 | |
| moritz: It's not wasted effort, as when we get the symbol table stuff in they'd also fail. | |||
| pmichaud | I'm not wanting a bunch of special-purpose attributes in PAST nodes | ||
| Tene | right | ||
| moritz | jonathan: ok | ||
| pmichaud | and I particularly would like to avoid special-purpose attributes on different :pasttype values | 21:13 | |
| jonathan | moritz: I think the patch can go in after the parameter refactor. | ||
| pmichaud | (unless they're generic across several :pasttype values, such as 'arity') | ||
| Tene | right | 21:14 | |
| pmichaud | following that a bit further, though | ||
| what it means is that CATCH, CONTROL, etc are really just ways to create ExceptionHandlers | 21:15 | ||
| moritz | jonathan: it would be helpful to have stubs for types that are official, but not yet in Rakudo (like StrPos) | ||
| jonathan | moritz: We can probably do that. | ||
| pmichaud | stubs are okay. | 21:16 | |
| ...so perhaps exception handlers are just another :pasttype | |||
| Tene | pmichaud: So possibly an EH past... yeah, that | ||
| and blocks can have a list of them | 21:17 | ||
| pmichaud | or they could be an entire PAST::... node type | ||
| I wonder if they're limited to blocks or if they could be attached to PAST::Stmts | |||
| Tene | Do you see any reason not to? | ||
| pmichaud | so that we have an exception handler in effect for a range of statements as opposed to an entire block. | ||
| particle | that seems odd | 21:18 | |
| pmichaud | is it? | ||
| purl | it's it! | ||
| pmichaud | that's effectively what "try" means in the generic sense | ||
| particle | i'm trying to imagine a language that uses a construct like that | ||
| Tene | particle: not all languages necessarily create a new lexical scope for exception catching? | ||
| pmichaud | we want to try a sequence of statements with an exception handler imposed for that sequence of statements | ||
| Tene | I don't know of any specifically | ||
| pmichaud | ...what Tene said | ||
| yes, some languages do try/catch without imposing a lexical scope. | 21:19 | ||
| particle | well then, there you go. | ||
|
21:19
cotto joined
|
|||
| jonathan | C# | 21:19 | |
| try | |||
| bar() | |||
| catch | |||
| Tene | PHP has something like that. If you put @ in front of a statement, it catches and discards errors. | ||
| jonathan | argh() | ||
| particle | so you'd attach the EH to each statement? | ||
| jonathan | With some semicolons after the ) | ||
| pmichaud | in particular, loops (not Perl) will often impose an exception handler for the loop itself but not create a new lexical scope | 21:20 | |
| particle | or to a Stmts node? | ||
| Tene | particle: stmts node | ||
| pmichaud | the EH would probably go on a stmts node | ||
| or a block | |||
| Tene | pmichaud: would this depend on the PCT refactors you have pending? | ||
| Can I start on this? | |||
| particle | ok, then you've got to be very careful when constructing a block out of multiple Stmts nodes | ||
| pmichaud | Tene: it might | ||
| particle | can't splice them together, in general | ||
| Tene | particle: if it's block-based, set it on the block | ||
| particle | sure, but when it's statement-based | 21:21 | |
| jonathan gives moritz a ticket | |||
| pmichaud | you can group the PAST::Stmts nodes (multiple) into a single one that has the exceptions | ||
| note that Stmts is not "one node per statement" (although it can be) | |||
| particle | right | ||
| it's a group of statements. so a Block can contain multiple Stmts, some of which have EHs | |||
| pmichaud | sure, that's no problem. | 21:22 | |
| particle | as long as you can introspect the attribute | ||
| pmichaud | Tene: if you want to start on it, great. I may come up with additional ideas and/or refactors for it, though. | ||
| it may effectively eliminate the 'try' pasttype | 21:23 | ||
| I still have to figure out how I'd want BEGIN/END/INIT/CHECK blocks to be handled in this scheme, however. | |||
| and we also need ENTRY/LEAVE/etc. | 21:24 | ||
| moritz | we need at least stubs for StrPos and Regex | ||
| Tene | pmichaud: I imagine those as additional attrs | ||
|
21:24
Zaba joined
|
|||
| pmichaud | Tene: I don't. | 21:25 | |
| "attrs" is what bugs me | |||
| Tene | wait, right | ||
| pmichaud | or maybe it's "additional attrs" that bugs me | ||
| perhaps "additional values for an attr", but I'm not quite certain of that either yet. | |||
| afk for a bit | 21:27 | ||
| Tene: here's what I'd suggest | 21:29 | ||
|
21:30
cotto joined
|
|||
| pmichaud | let's have a new :pasttype or PAST::* node type | 21:30 | |
| Tene | preference on that? | ||
| pmichaud | I'm still thinking | ||
| Tene nods | |||
| pmichaud | not :pasttype | ||
| maybe an attribute on PAST::Stmts | |||
| Tene | to hold what? the type of exceptions to catch? | 21:31 | |
| pmichaud | anyway, I want something that says "this node is an exception handler", and an attribute that can be LAST/NEXT/REDO/CATCH/CONTROL/whatever that says "these are the exception types I'm interested in" | ||
| the children of the node are the steps to be performed when such an exception is caught | |||
| Tene nods. | |||
| pmichaud | the exception caught should be preloaded into the 'exception' pmc register | 21:32 | |
| Tene | and how are these set on a block or stmts? | ||
| pmichaud | I'm not yet sure how to attach that to a surrounding ::Block or ::Stmts | ||
| ideally I think I'd like it to just be a child of a ::Block or ::Stmts, and dtrt | |||
| that may be a bit tricky | 21:33 | ||
| jonathan | I was about to suggest that last one. | ||
| Tene | orly? | ||
| purl | YA RLY. | ||
| Tene | Curious. | ||
| purl hands Tene a dead cat | |||
| Tene | I don't think I like that one very much, but it's feasible, sure. | ||
| pmichaud | Tene: you would suggest instead...? | 21:34 | |
| Tene | not sure | ||
| pmichaud | the other approach is to turn it around, and have PAST::Stmts be a child of the handler | ||
| ...but that seems to make it icky to try to have multiple handlers in effect | |||
| for a single block of code | |||
| Tene | And you don't like an "exceptionhandlers" attribute on Blocks why again? | 21:35 | |
| pmichaud | we might do that as well | ||
| Tene | Well, handler contains handler contains handler works fine | ||
| pmichaud | I just like to avoid too many special-purpose items | ||
| Tene | right | ||
| pmichaud | especially at an "abstract syntax tree" level, it's better if everything is composed of similar elements | ||
| Tene nods | 21:36 | ||
| pmichaud | makes more like scheme. or lisp. or haskell. | ||
| okay, I have to walk the dog a bit, so perhaps I'll get a cleaner idea from that. Often helps. | |||
| Tene | have fun | ||
| particle | hrmm: -name val1, 'val 2,' val3 | 21:39 | |
| i wonder how that'll parse, based on S06 as written | |||
| will val3 be assigned to :name, or taken as a resource? | 21:40 | ||
|
21:40
stockwellb joined
|
|||
| Infinoid | hmm, pmc2c doesn't like: ATTR void (*free_func)(void *, size_t); | 21:41 | |
| I'm using void *free_func for now, but I would feel a little safer with type checking | 21:42 | ||
| particle | the name of the attribute is (*free_func)? | ||
| chromatic | Throw a typedef in the pre-PMC block. | 21:43 | |
| Infinoid | the name of the attribute is free_func. the (*name) bit is just how you declare a function pointer in C | ||
| thanks, c | 21:44 | ||
| PerlJam | does parrot have a REPL somewhere? | ||
| particle | parrot - | ||
| PerlJam | that's not quite a REPL | 21:45 | |
| :) | |||
| particle | not exactly a repl, it's a rep | ||
| cotto | it's a manual loop | 21:46 | |
| davidfetter waves to cotto | 21:50 | ||
| cotto waves back | 21:51 | ||
| davidfetter | cotto, your employer's been doing some pretty cool stuff re: cpan :) | 21:53 | |
| cotto | my former employer | ||
| davidfetter | oh | 21:54 | |
| cotto | My contract ended back in Sept | ||
| davidfetter | are congratulations in order? | ||
| cotto | I'm hoping to go back in Jan | ||
| davidfetter | break a leg, as they say in show biz | ||
|
21:56
particle joined
|
|||
| cotto | (leg breaking)++ | 21:57 | |
| davidfetter | heh | 21:58 | |
| cotto | davidfetter, do you have a link? | ||
| davidfetter | cotto, not yet, but basically they've given everybody with a CPAN module access to all the current platforms for testing, &c | ||
| cotto | v nice | 21:59 | |
| davidfetter composing an email to see about getting postgres developers similar access | 22:00 | ||
| vs. the current, "does anybody have a copy of $foo_OS to try this out? anybody? bueller?" | |||
| Coke skips a ton of rakudo chat. | 22:03 | ||
| -> | 22:04 | ||
| cotto | Coke, what's that mean? | ||
| -> | |||
| Infinoid | I thought it was a gang sign, "east siieeeed" sort of thing | 22:07 | |
| pmichaud | Tene: ping | ||
| Tene is here | 22:08 | ||
| pmichaud | okay, back from my walk, here are my "decisions" (subject to later revision) | ||
|
22:08
Whiteknight joined
|
|||
| pmichaud | * exception handlers are a new PAST::* type | 22:09 | |
| it can be called PAST::EH, PAST::Control, PAST::Handler, or something else, but hopefully not too long a name | |||
| * exception handlers have to be a member of the Block/Stmts they handle. This is important for lexical variable handling issues (from a p6 sense) | 22:10 | ||
| * we can either do it as a child, or with a special "handlers" attribute on Block/Stmts nodes. We may even have a "handlers" attribute for every node type, but i'm only interested in Block/Stmts for now | 22:11 | ||
| * The 'name' attribute of a PAST::EH (or whatever) node is its label | |||
| (e.g., for when we do next/last/redo followed by a label) | |||
| * PAST::EH nodes have a type that indicates what types of exception they handle | 22:12 | ||
| to begin with, we can just use the p6 control traits as the types | |||
| eventually we'll provide a way for hlls to specify their own types if the p6 types don't fit | |||
| Whiteknight | i'm obviously here in the middle of the conversation, but I like what I see! | 22:13 | |
| pmichaud | * by default, handlers "re-throw" the exception they handle, unless there's a flag or some other indication that they "handle" the exception | ||
| this is important because there may be multiple handlers in effect that expect to receive the exception (e.g., multiple 'NEXT' blocks in a p6 'for' loop) | 22:14 | ||
|
22:14
allison joined
|
|||
| pmichaud | * The children of the PAST::EH node are the steps to be performed when the handler is invoked | 22:15 | |
| ...I think that's about it. | |||
| a lot of this may be subject to refactoring, but I think that covers it | 22:17 | ||
| it's at least a good start | |||
| Tene | Great. I like it. | ||
| pmichaud | from a loops perspective, it means that we can do the loop exception pretty much however we want | ||
| I think I'll still want to refactor it into a common loop exception, but we don't have to worry about handlers in the blocks/stmts themselves, because those will already be handled as part of the "nesting" | 22:18 | ||
| (and the fact that they re-throw their exception) | |||
| jonathan fixes a hilarious IMCC bug | 22:19 | ||
| pmichaud | INIT/CHECK/BEGIN/END we'll handle by attaching them to whatever is being generated for load/init modules -- i.e., they'll be special cases of the code generation for PAST::EH nodes. We can deal with those a bit later, for now the control exceptions are more "interesting" | 22:20 | |
| if anything looks like it's getting messy, stop, because it means we're doing it wrong. :-) | 22:21 | ||
| chromatic | Oh good, hilarious bugs. | ||
| Good news, everybody! | 22:22 | ||
| Coverity will move us up a rung in testing, partly because we cleared out all open tickets and partly because we're approaching 1.0. | |||
| pmichaud | Yay! | ||
| Coverity++ | |||
| moritz | YaY | 22:23 | |
| pmichaud | chromatic++ # clearing open tickets | ||
| jonathan | Nice! | ||
| pmichaud | blog that. :-) | ||
| chromatic | It wasn't just me; the code improved tremendously between February and November. | ||
| Infinoid | particle: yakkity yak. Turns out I can't use an ATTR there, without first fixing up all the callers who are assume PMC_data() is the generic pointer being managed | 22:24 | |
| s/are // | |||
| masak finds a nasty, nasty bug in Rakudo | |||
| Infinoid | (in other words, I tried it and it broke horribly) | ||
| chromatic | Collectively we corrected some 80% of the open issues. | 22:25 | |
| jonathan fixes a nasty, nasty bug in Rakudo | |||
| dalek | r33526 | jonathan++ | trunk: | ||
| : [imcc] If we fail during the compile, don't try and run any :init subs we might have been lucky enough to have already compiled by that point. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33526 | |||
|
22:25
tak joined
|
|||
| jonathan | ...the traces were...interesting... | 22:25 | |
| masak reports a nasty, nasty bug in Rakudo | 22:26 | ||
| cotto | chromatic, what info should I give the Coverity guys to get access to the reports? | 22:27 | |
| pmichaud | what's the bug? | ||
| purl | somebody said the bug was www.cbttape.org/funny/bug3.jpg or img227.imageshack.us/img227/2596/featureiu1.jpg | ||
| tewk | I use to have coverity access, can I retrieve my name and password from somewhere? | 22:29 | |
| masak | pmichaud: [perl #61068] | 22:30 | |
| don't ask me how I find these things. | 22:31 | ||
| jonathan | inside an eval inside an ok it's too dark to read. | ||
| masak | apparently. | ||
| pmichaud | well, we don't really handle re-using classnames yet. | 22:32 | |
| I don't expect we'll fix that anytime soon. | |||
| masak | ok. | ||
| that's understandable. | |||
| but now it's in RT, at least. | |||
| pmichaud | yes. | ||
| jonathan | I guess it should give an error, just not that one. :-) | ||
| pmichaud | no, I think it's legal. | ||
| jonathan | Oh? | ||
| pmichaud | evals have their own lexical scope. | 22:33 | |
| masak | it shouldn't crash Rakudo, anyway. | ||
| jonathan | It was written class, not my class. | ||
| pmichaud | ...what happens if we don't have 'my' in front -- where does it go? | ||
| jonathan | The package. | ||
| purl | the package is perldoc -f package or lexicaly scoped | ||
| jonathan | AFAIU. | ||
| pmichaud | okay. in that case it's a redefinition error, yes. | ||
|
22:33
randi joined
|
|||
| jonathan | Only other way to see it would be that an eval creates an anonymous package within it that the class was nested within. | 22:34 | |
| pmichaud | another reason we should be doing the class registry -- we can detect these redefinition errors more easily :-) | ||
| jonathan | But then you couldn't use an eval to eval a generated class and easily have it installed in the namespace... | ||
| And I don't think eval is meant to work like that. | 22:35 | ||
| pmichaud | correct. | ||
| but being able to look up existing types would catch that particular error for us. | |||
| jonathan | Yes. | 22:36 | |
| pmichaud | or at least give us an appropriate hook for it :-) | ||
| jonathan | If my grant gets approved, I'll be able to work on that stuff Real Soon Now. | ||
| (I expect I'll work on it pretty soon either way, mind...) | 22:37 | ||
| dalek | r33527 | jonathan++ | trunk: | ||
| : [rakudo] Fix lookup of attributes in nested scopes of methods when they are declared twigilless. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=33527 | |||
| jonathan | That's the ticket from lathos++ resolved. | 22:38 | |
| jonathan suspects he's fixed more Parrot bugs than Rakudo ones today | 22:39 | ||
| pmichaud | that's okay, the parrot ones were very important for Rakudo | ||
| jonathan | Oh yes, I know. I wasn't complaining. :-) | 22:40 | |
| pmichaud | and we got rid of some Perl6Str's. Excellent. | ||
| jonathan | They're less fun though. | ||
| pmichaud | I may see about moving get_number into an NCI sub. | ||
| jonathan | We get rid of almost all references to Perl6Str in the Rakudo codebase. | ||
| pmichaud | I'd feel better about that. | ||
| where should the .c code go for that -- do we have an obvious place for subs that aren't dynops and aren't pmcs? | 22:41 | ||
| s/subs/C functions/ | |||
| jonathan | As I mentioned earlier, the only easy way that I can think of is having a PMC that we never use, other than for its METHOD. | ||
| pmichaud | well, I could certainly just stick the sub into an existing .pmc or .c file | 22:42 | |
| I'll be calling it by name anyway | |||
| jonathan | Yes, that would work too. | ||
| Use find_method to get it. | |||
| jhorwitz | masak: i have november working under mod_perl6, including logging in w/cookies, etc. | ||
| masak | woot | ||
| jonathan | Wow! | ||
| jhorwitz++, masak++ | |||
| Is it notably faster? | |||
| masak | jhorwitz: that's great news! | ||
| pmichaud | ...does it have to be a method? (it's been so long since I've done NCI) | ||
| jhorwitz++ | 22:43 | ||
| jonathan | pmichaud: Yes. | ||
| pmichaud | why? | ||
| jonathan | (more) ;-) | ||
| pmichaud | I'm just thinking of doing | ||
| jhorwitz | jonathan: yes, but not much faster since the november modules are precompiled | ||
| pmichaud | .namespace ['Str'] | ||
| jonathan | Because it needs to obey that Parrot calling conventions. | ||
| pmichaud | .sub :vtable('get_string') :method | ||
| # call NCI here | |||
| .end | |||
| jonathan | Isn't it get_number? | 22:44 | |
| particle | this is ridiculous. within 24 hours, we have the first perl 6 alpha distro release, dbdi access to sqlite, and a wiki engine ported to mod_perl6. | ||
| pmichaud | right, get_number | ||
| sorry | |||
| chromatic | cotto, scan2.coverity.com:9035/ | ||
| jonathan | OK | ||
| pmichaud | so I don't need the PCC conventions, just the NCI ones | ||
| jhorwitz | ridiculous++ | ||
| jonathan | What I was going to suggest was that you stick it in some other PMC | ||
| As a METHOD | 22:45 | ||
| Then make an instance of that PMC, do a find_method on it, which should hand you back the method. | |||
| Then insert what you get back from find_method as a vtable override on Str. | |||
| cotto | chromatic, I mean what info does Coverity need so I can get a login for those reports. | 22:46 | |
| jonathan | You may be able to write it just as a vtable method too (a more normal NCI), but then I don't know how you'd get hold of it... | ||
| pmichaud | that sounds very Evil. | ||
| but I think I like it. | |||
| chromatic | cotto, I think name and email address and project name. | ||
| jonathan | I *think* it should work. | ||
| pmichaud | I think it should too. | ||
| cotto | easy enough | ||
| jonathan | If it doesn't, I'd want to know why. | ||
| cotto | thanks | ||
| pmichaud | so, we'd just have a dummy PMC where we stick all of our methods we want written in C | ||
| jonathan | Yup | ||
| pmichaud | very very evil. | 22:47 | |
| it's perfect. :-) | |||
| okay, I'll try that way. It does seem slightly easier than figuring out the NCI conventions, and it's easy to build the PMC | |||
| (since we already do that) | |||
| jonathan | Well, it means the NCI conventions get figured out for you. ;-) | ||
| pmichaud | I prefer that to having to create yet another .o file to load. | ||
| jonathan | Indeed. | 22:48 | |
| pmichaud | and it does mean all such methods are conveniently located in one place. | ||
| jhorwitz | masak: i'll send my patch to the list. most of it deals with path prefixes, which you were going to work on, but there's some small CGI.pm changes as well | ||
| jonathan | I close one ticket, masak opens two more... :-P | ||
| masak | jonathan: mwhahaha! | 22:49 | |
|
22:49
rhr joined
|
|||
| pmichaud | what's our ticket count now? | 22:49 | |
| jonathan | 164 | ||
| masak | jhorwitz: excellent. | ||
| pmichaud | oh, not too bad. | ||
| jonathan | I've closed a few up today. | ||
| pmichaud | as long as we're hovering around 150, we're in a reasonably steady state. | ||
| jonathan | Yes. | ||
| masak | I heard that. | 22:50 | |
| pmichaud | I'm expecting slices to close a few. | ||
| jonathan | That's a managable number. | ||
| At that size, I can easily glance over the queue each week and keep the open problems in my head somewhat. | |||
| Slices will. | |||
| And parameter passing will close at least 5 more, I expect. | 22:51 | ||
| pmichaud | thus far I have a completely free weekend (no kids), so I'm hoping to get a lot done. | ||
| jonathan | Nice | ||
| I'll be around tomorrow I think... | |||
| jonathan checks | |||
| ...after a few moments trying to find the concert ticket... | 23:01 | ||
| Yes, I'm around tomorrow. | |||
| It's Sunday I'm heading over to Vienna for the concert. | 23:02 | ||
| pmichaud | excellent | ||
| jonathan | Though will probably be around between chruch and going there, and after I get back. | ||
| (Vienna is just an hour away on the train...) | |||
| pmichaud | I may sleep a little late tomorrow (been under the weather the past few days), but otherwise I expect to be here. | 23:03 | |
| jonathan | OK. | ||
| jonathan slept late today | |||
| Managed to catch a cold in England. | 23:04 | ||
| I'm fine after being up for a while, but first thing I currently get bad throat/ear ache etc. | |||
| pmichaud | anyway, time to take wife to dinner | 23:05 | |
| bbl | |||
| jonathan | Sounds nice. :-) | ||
| Have fun, later. | |||
| jonathan tries to decide between another fix and relaxation | |||
| chromatic | Just one more! | 23:07 | |
| masak | you can quit whenever you want, right? | ||
| masak chooses relaxation | 23:08 | ||
| jonathan | ...talk about starting a trend ;-) | 23:11 | |
|
23:13
TiMBuS joined,
bacek joined
23:20
allison joined
23:22
cotto joined
|
|||
| cotto | We've replaced cotto's old broken e1000 driver with the newer e1000e driver. Let's see what happens. | 23:23 | |
| Infinoid | e1000 was broken? been working nicely for years, here | 23:24 | |
| cotto | I found a forum post that pointed to it as the culprit of some recent freezes I've been seeing. | ||
| Tene | make sure you don't have the version that can toast your nic. | 23:25 | |
| cotto | (old kernels)++ | 23:31 | |
|
23:35
cotto joined
23:36
lifeless joined
|
|||
| lifeless | allison: ttps://blueprints.edge.launchpad.net/subunit/+spec/combinedreporting - tres minimal but I think I caught all agreed items | 23:36 | |
| cotto | Infinoid++ #the link in the forum was for an old version of the driver | ||
|
23:38
wknight8111 joined
23:54
tetragon joined
|
|||