|
www.parrotcode.org/ | Last release: 0.7.1 "Manu Aloha" Set by moderator on 17 September 2008. |
|||
| chromatic | Aha. | 00:00 | |
| NotFound | Function that is documented as: "Needs to be documented!!!" | ||
| chromatic | Like most of IMCC. | ||
| Document/exorcise. | |||
| Comment out that line and the code no longer hands. | |||
| hangs | |||
| NotFound | A nice optimization | 00:01 | |
| tetragon | chromatic: This is the major release/platform combination that is certified as Unix 03 | ||
| NotFound | I don't understand the comment before the optimizer_level change. What has to do the "need to allocate the temp - run reg_alloc" with the optimizer level? | 00:03 | |
| chromatic | tetragon, beware this platform. I have only certified it. It may not work. | ||
| NotFound, that code creates a new N register for some reason. | 00:04 | ||
| and a set_n opcode. | |||
| NotFound | In pmichaud example, the mul by integer operation generates a set NO, I0 followed by a mul NUM NUM | 00:08 | |
| chromatic | NOM NOM | ||
| sorry | |||
| NotFound | What's the reason for that? Avoid an opcode? | 00:09 | |
|
00:09
AndyA joined
|
|||
| chromatic | It might be the *= rewriting. | 00:09 | |
| Hm, the more I think, the more I think you're right. | 00:10 | ||
| Avoid an opcode. | |||
| Promote upwise, precision-wise. | 00:11 | ||
| NotFound | I dislike assemblers and assembler-like languages that generates instructions by his own will. | 00:12 | |
|
00:12
bacek_ joined
|
|||
| chromatic | It's an optimization. | 00:13 | |
| It's a decent optimization in numeric code too. | |||
| NotFound | I think is an unoptimization, mul NUM INT will be faster and shorter | ||
| Maybe the problem is inside try_find_op. The part commented as: "reuse generated temp Nz" may be fooling the allocator. | 00:17 | ||
| chromatic | Just taking out that branch doesn't help though. | 00:20 | |
| The alligator still loops. | |||
| This may have been one of the problems in the concurrency branch when we added the new branch stack ops. | 00:21 | ||
| local_branch and local_return | |||
| The basic block identifier may not know about them. | |||
|
00:23
ashleyb joined
|
|||
| NotFound | I wonder why is the reason for the optimizer_level change, An attempt to avoid this problem that sometimes worked? | 00:23 | |
| chromatic | That's plausible. | 00:24 | |
| NotFound | Ups, is too late for me. Going to bed. | 00:26 | |
|
00:46
Whiteknight joined
01:16
dalek joined
01:19
Juerd joined
01:32
gmansi joined
01:39
tetragon joined
01:46
AndyA joined
01:51
tetragon joined
02:13
Andy joined
|
|||
| GeJ | Anyone with C-fu up? | 02:30 | |
|
02:33
Ontolog joined
02:43
Theory joined
02:47
mwhudson joined
04:12
Bzek joined
|
|||
| cotto | GeJ, what's your question? I don't claim great C-fu, but I can take a shot at it. | 04:21 | |
|
04:58
Zaba joined
05:31
PerlJam joined
|
|||
| cotto | In Soviet Russia, code generates you. | 05:34 | |
|
06:09
japhb joined
06:12
uniejo joined
|
|||
| GeJ | how can I explore a PMC under gdb? | 06:21 | |
| chromatic | What would you like to know about it? | ||
| GeJ | Well, I'm trying to investigate the segfaulting loop we discussed about a couple of days ago. And I think I reached the point where current->pmc_ext->_next_for_GC is NULL | 06:22 | |
| chromatic | Excellent. | 06:23 | |
| GeJ | so I'd like to know what's in current | ||
| right now my gdb session is : | |||
| b src/gc/dod.c:434 if next == 0 | |||
| r t/stm/runtime_4.pir | |||
| Breakpoint 3, Parrot_dod_trace_children (interp=0x8106040, how_many=4294966628) at src/gc/dod.c:435 | 06:24 | ||
| 435 if (!PMC_IS_NULL(next) && next == current) | |||
| (gdb) p next | |||
| $1 = (PMC *) 0x0 | |||
| chromatic | I usually look at pmc->vtable->base_type, then look in include/parrot/core_pmcs.h to find its type. | ||
| GeJ | $1 = 23 | 06:25 | |
| enum_class_RetContinuation I assume | 06:26 | ||
| chromatic | That's right. | ||
| GeJ | all the pointers in the PMC_EXT looks like they're NULL (_metadata, _synchronize and _next_for_GC that is ) | 06:33 | |
| chromatic | That sounds like a big zeroed block of memory. | 06:34 | |
| Or a recycled PMC_EXT. | |||
| cotto | Someone needs to be smacked for making string_equal return 0 when the two STRINGs are equal. | 06:40 | |
| GeJ | (gdb) p current->vtable->whoami | 06:41 | |
| $3 = (STRING *) 0x8170814 | |||
| Is there a way to get the content of the string? | |||
| cotto | That's what string_compare is for. | ||
| GeJ apologizes for asking such stupid questions. | |||
| my C-fu sucks so much. I blame it on Perl though ;) | 06:42 | ||
| chromatic | p current->vtable->whoami->strstart | ||
| p *(STRING *)current->vtable->whoami | |||
| p *(current->vtable->whoami) | |||
| maybe that last one is best, but I usually use ->strstart | 06:43 | ||
| GeJ | ah, great, thank you c | ||
|
06:52
Zaba joined
07:05
rafl joined
07:22
Ademan joined
|
|||
| dalek | r31538 | rurban++ | trunk: | 07:26 | |
| : | |||
| : [cage] fix perl5 warning | |||
| : Use of uninitialized value $dynpmc_include in concatenation (.) or | |||
| : string at tools/build/dynpmc.pl line 74. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31538 | |||
|
07:30
Zaba_ joined
07:40
iblechbot joined
08:05
cosimo joined
08:23
mwhudson joined
|
|||
| moritz | the table at www.perlfoundation.org/parrot_grant_from_nlnet seems to suggest that each subsystem has to go through another iteration prior to the 1.0 release - is that correct? | 08:25 | |
|
08:33
Zaba joined
|
|||
| dalek | r31539 | kjs++ | trunk: | 08:36 | |
| : [pirc/new] refactor some code, so that opinfo always points to the right opinfo entry. There's still some optimization to be done, that's next. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31539 | |||
|
08:36
kj joined
08:51
contingencyplan joined
08:59
szabgab joined
|
|||
| szabgab | anyone knows how to make Inline::Parrot work? tests are failing for me | 08:59 | |
|
09:26
tomyan joined
09:53
Zaba_ joined
09:57
krunen joined
10:06
clunker3 joined
|
|||
| cotto | can someone please smack parrotvm.org? | 10:50 | |
|
10:51
iblechbot joined
|
|||
| moritz | easier said than done | 10:55 | |
| apache2: /tmp/buildd/subversion-1.5.1dfsg1/subversion/libsvn_ra/ra_loader.c:977: svn_ra_get_log: Assertion `*path != '/'' failed. | 10:56 | ||
| cotto | unrelatedly, does calling pobject_lives take care of calling VTABLE_mark when appropriate? | 10:58 | |
| and do STRINGs need to be marked? | 11:00 | ||
| dalek | r31540 | cotto++ | trunk: | 11:04 | |
| : [pipp] implement get_* and set_*, and enable a few passing (!) tests | |||
| : The test suite should be reworked, but I wanted to commit something functional. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31540 | |||
| r31541 | moritz++ | trunk: | 11:05 | ||
| : [rakudo] simplified Str.chop. Patch by azawawi++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31541 | |||
| r31542 | cotto++ | trunk: | 11:43 | ||
| : [pipp] add code for exists_* and delete_*, plus tests | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31542 | |||
|
11:59
bacek joined
12:23
bacek joined
|
|||
| dalek | r31543 | fperrad++ | trunk: | 12:26 | |
| : [pipp] fix build on MinGW32 | |||
| : so work with GNU Make on Windows (and *nix), | |||
| : but not yet with nmake on Windows. | |||
| : How writes for nmake the following Makefile sample ? | |||
| : export MYVAR=this_var_must_be_seen_in_the_env_of_called_program | |||
| : all: | |||
| : \tperl -e "print join qq{\\n}, sort keys %ENV" | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31543 | |||
|
12:30
tomyan joined
12:45
bacek joined
|
|||
| bacek | hi everybody | 12:45 | |
| purl | Hi, Dr. Nick! | ||
| moritz | hi | 12:46 | |
| bacek | purl: glad to see you alive ;) | ||
| purl | bacek: i'm not following you... | ||
| bacek | hi moritz | ||
| moritz: You've just closed my first rakudo ticket that contains patch from someone else :) | 12:47 | ||
|
12:48
tetragon joined
|
|||
| moritz | yes | 12:49 | |
|
13:11
wolverian joined
13:17
pmichaud joined
13:19
bacek joined
|
|||
| bacek | moritz: ping. | 13:23 | |
| moritz | bacek: pong | ||
| bacek | moritz: there is another not mine patch for rakudo rt.perl.org/rt3/Ticket/Display.html?id=58646 | 13:24 | |
| probably Pm checked it already. | |||
| pmichaud | it's on my list. :-) | ||
| about to check it now. | |||
| bacek | pmichaud: :) | ||
| pmichaud: it's actually looks sane. And "WFM" | 13:25 | ||
| pmichaud | looks fine to me -- feel free to apply. | 13:26 | |
| moritz | ok, will do | ||
| bacek spend last couple of weeks on almost-useless-meeting-about-how-to-manage-team... | 13:28 | ||
| Anyone have something to develop by "casual" developer? ;) | |||
| moritz | you mean perl 6/parrot wise? | 13:29 | |
| or $job? | |||
| purl | $job is in oakland, will probably move farther south in I-880 corridor *cough* *hairball* | ||
| pmichaud | I'd like to see us get rid of a few more of those "Use of uninitialized value" items out of the test suite :-) | ||
| bacek | moritz: meetings - $job. "casual devolpment" - for parrot | 13:30 | |
| moritz | pmichaud: then give me a way to 1) disable some and 2) test for them | ||
| PerlJam | pm: no problem! just start adding "no warnings 'uninitialized';" ;-> | ||
| moritz: I just gave you #1 I think :-) | |||
| pmichaud | moritz: using .defined isn't disabiling them? | ||
| *disabling | 13:31 | ||
| moritz | pmichaud: there are valid cases like testting '1+undef' | ||
| pmichaud | ...that's valid?! | ||
| moritz | pmichaud: and I'd like to have a tool to disable them it these cases? | ||
| bacek | pmichaud: both of you disagreed with my patch for Test.pm :) | ||
| pmichaud | bacek: I want the tests to avoid the warnings, not to ignore them :-) | ||
| moritz | pmichaud: it's valid, and it should emit a warning, but since it's inteded, I'd like a way to switch off the warnings | ||
| pmichaud: there are other warnings that I can get rid of by s/todo/skip/ a few times - don't think that's desirable either | 13:32 | ||
| bacek vote for local scoped "no warnings 'uninitialized'" | |||
| PerlJam | bacek: Me too, but only humorously. That's not a real solution. | 13:33 | |
| pmichaud | I keep thinking there ought to be an operator of some sort that marks an undef value as handled and returns the undef value | ||
| moritz | pmichaud: also, .defined doesn't work on all values yet | ||
| bacek | moritz: indeed. | ||
| pmichaud | moritz: is there a ticket for .defined not working? | ||
| and some examples? | |||
| moritz | pmichaud: at least for $!.defined there's a ticket | 13:34 | |
| bacek | pmichaud: .defined returns false for protoobjects. | ||
| pmichaud | okay. | ||
| bacek: defined is supposed to return false for protoobjects. | |||
| bacek: that's part of what makes them protoobjects. | |||
| moritz | perl6: my $x; say $x.defined | ||
| output see #perl6 | 13:35 | ||
| pmichaud | got it. | ||
| that's because scalars are defaulting to Undef when they need to be an Object | |||
| moritz | aye | ||
| pmichaud | okay, that gets fixed as part of reference-and-value-semantics. but .defined is noted for that case. | ||
| PerlJam | Undef doesn't inherit from Object? | ||
| Tene | catch undef-exception ( $-.resume() ) :) | ||
| moritz | Tene: hey, you could implement CATCH blocks ;) | 13:36 | |
| pmichaud | PerlJam: Undef is a Parrot PMC | ||
| Perl 6 doesn't have an Undef type | |||
| (so no, Undef doesn't inherit from Object) | |||
| Tene | They're nyi? Point me to spectest. | ||
| moritz | t/spec/S04-statements/try.t | ||
| pmichaud | careful with CATCH blocks .... we also don't do START, INIT, CONTROL, etc. | 13:37 | |
| and I suspect they're all related. | |||
| so I'm not eager to apply a patch that "just does CATCH" | |||
| Tene | I'll look into it once I get to the training center. | ||
| particle | can't Undef be registered as a subtype of Object? | ||
| PerlJam | pm: is there some barrier between PMCs and Perl6 objects? | ||
| Tene sends email: do-everything.patch | 13:38 | ||
| pmichaud | PerlJam: there (needs to be) a distinction between Parrot objects and Perl 6 objects, yes. | ||
| because Parrot objects don't always have Perl 6 semantics. | |||
| Tene | moritz: are there tests for start, init, control, etc? | ||
| pmichaud | Undef is an example. | ||
| PerlJam | so Undef is a "parrot undef" with differing semantics than Perl6Undef ? | 13:39 | |
| pmichaud | yes. | ||
| (because there is no Perl6Undef) | |||
| moritz | Tene: t/spec/S04-closure-traits/*.t | ||
| ack++ ;-) | 13:40 | ||
| Tene | moritz++ | ||
| pmichaud | Tene: I found a bug in the next/last/redo patch, btw. | ||
| PerlJam | So ... why are scalars defaulting to the parrot undef instead of a perl6 undef? | ||
| pmichaud | PerlJam: because that's the way jonathan++ coded it for now? | ||
| moritz | "not yet fixed" | ||
| PerlJam | gotcha | ||
| bacek | pmichaud: so. is($blah, StrPos) can't be properly implemented using .defined... | 13:41 | |
| moritz | pmichaud: should I open another ticket for $x.defined? | ||
| pmichaud | PerlJam: because at the time the scalars code is compiled, the perl6 code hasn't had a chance to create the Failure class yet? | ||
| Tene | pmichaud: plz explain | ||
| PerlJam | bacek: Are there StrPos yet? | ||
| if so, /me really hasn't been paying attention. | |||
| bacek | PerlJam: I had one :) | ||
| pmichaud | Tene: look at the output of a simple for loop from PCT, if the iterated value is undefined then we end up with a pop_eh but no push_eh | ||
| bacek: is($blah, StrPos) is asking... what? | 13:42 | ||
| Tene | very nice | ||
| thanks, pmichaud. | |||
| pmichaud | Tene: fixing that _might_ also avoid the other problem we're seeing, since moving that "unless" around also causes compilation to succeed. | ||
| bacek | pmichaud: my $blah = "foo".index("bar"); is($blah, StrPos) | ||
| pmichaud | bacek: you didn't answer my question -- what do you expect is($blah, StrPos) to do? | 13:43 | |
| Tene | hmm. want me to commit fixed patch to repo? | ||
| trunk? | |||
| purl | trunk is live on the site or dev.catalyst.perl.org/repos/Catalyst/trunk/ or "svn co dev.catalyst.perl.org/repos/Catalyst/" | ||
| pmichaud | Tene: yes, perhaps to both trunk and the branch? | ||
| bacek | pmichaud: it's actually isa_ok. | ||
| Tene | but then the branch doesn't exercise the bug. | ||
| pmichaud | sure it does, with the version of foo2.pir I posted last night. | 13:44 | |
| moritz | bacek: usually the test for that is isa_ok() | ||
| pmichaud | bacek: isa_ok doesn't have to check for definedness | ||
| bacek: one could also write the test as ok( $blah ~~ StrPos ) | |||
| bacek: none of these require .defined to be defined in 'is' | |||
| bacek | isa_ok($a,$b) -> ok(isa($a),$b) -> is(isa($a), $b) | 13:45 | |
| It's in current Test.pm | |||
| pmichaud | then it's wrong. | ||
| if you want to test isa_ok this way, then it should be: | |||
| bacek | pmichaud++ # for defined "wrong" ;) | 13:46 | |
| pmichaud | is(isa($a), ~$b) | ||
| Tene | What's the full list of loop types that next/redo/last work on? | ||
| pmichaud | Tene: in PCT should be for, while, until, repeat_while, repeat_until | ||
| Tene | thx | ||
| pmichaud | I still need to refactor while/until/etc. to handle parameterized bodies | 13:47 | |
| moritz | Tene: in perl 6: perlcabal.org/syn/S04.html#Closure_traits | ||
| cotto | what's the mailing list where parrot commits get sent to? | ||
| Tene | I might be able to do those too. | ||
| pmichaud | bacek: at any rate, the problem with defined handling and isa is not in the 'is' function but in the definition of isa_ok | ||
| Tene offline, dressing then driving. | |||
| dalek | r31544 | moritz++ | trunk: | 13:48 | |
| : [rakudo] Convert some 'new Failure' instances to '!FAIL', as per RT #58646 | |||
| : Patch courtesy by ronaldxs++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31544 | |||
| pmichaud | we should probably go ahead and convert is() to use infix:<eqv>, too. | ||
| bacek | pmichaud: why not infix:~~ ? | ||
| (it was impossible few month ago) | 13:49 | ||
| moritz | bacek: because is() implies symmetry that ~~ doesn't have | ||
| pmichaud | bacek: we can define isa_ok in terms of infix:~~, yes. (This somewhat assumes that infix:~~ is working... but I think that's reasonable.) | ||
| moritz | pmichaud: that's a bad idea when type names are passed as strings | ||
| pmichaud | for that matter, we should define isa_ok in terms of .isa | 13:50 | |
| bacek | isa_ok($a,$b) -> is($a.isa, $b.isa)? | 13:51 | |
| pmichaud | no. | ||
| isa_ok($a,$b) -> ok($a.isa($b)) | |||
| the .isa method is already part of 01-sanity, and thus a prerequisite for Test.pm | 13:52 | ||
| bacek | yak | ||
| dalek | r31545 | moritz++ | trunk: | ||
| : [rakudo] add a file to spectest_regression, and restore alphabetical order | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31545 | |||
| bacek hides. | |||
| It's actually current approach in Test.pm | |||
| But it fails in case of isa_ok(undef.isa("Something")) | 13:53 | ||
| pmichaud | ...it does? | ||
| particle | cotto: parrot-cvs@perl.org or something like that | ||
| bacek | s/fails/emit warning/ | ||
| pmichaud | cotto: I think there's a new list being created for parrot commits | ||
| cotto: parrot-commit@lists.parrot.org I think | 13:54 | ||
| I don't know if it's active yet. | |||
| isa_ok(undef.isa("Something")) should not emit a warning -- that would be a bug if true. | |||
| and it should be written as isa_ok(undef, Something) | 13:55 | ||
| bacek | rakudo: my $foo; say $foo.isa("String") | 13:57 | |
| pmichaud | ENOPOLYGLOTBOT | ||
| bacek | EEPICFAIL | ||
| moritz | probably didn't survive feather's power outage | ||
| bacek going to sleep | 13:58 | ||
| sorry, I have 3 meetings and 2 interviews tomorrow... | 13:59 | ||
| must sleep | |||
| purl | $bacek->sleep(8 * 3600); | ||
| bacek glad to see at least on working bot ;) | |||
| pmichaud | for some definition of "working". | 14:00 | |
| moritz | if "spitting out glibberish" is "working", then purl is working indeed | ||
| cotto | cvs-parrot-subscribe@perl.org looks like it'll get me what I want | 14:01 | |
|
14:04
Andy joined
|
|||
| cotto | parrot commits? | 14:06 | |
| parrot commits is cvs-parrot-subscribe@perl.org or www.nntp.perl.org/group/perl.cvs.parrot/ | |||
| moritz | yes | ||
| cotto | purl, parrot commits is cvs-parrot-subscribe@perl.org or www.nntp.perl.org/group/perl.cvs.parrot/ | ||
| purl | i already had it that way, cotto. | ||
| cotto | lovely | ||
|
14:08
ashleyb joined
14:10
grim_fandango joined
14:11
barney joined
|
|||
| dalek | r31546 | cotto++ | trunk: | 14:12 | |
| : [pipp] add get_bool to PHPArray | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31546 | |||
| pmichaud | Tene: when I fix the pop_eh problem in foo2.pir, the compile issue appears to go away. | 14:23 | |
| Tene | Yeah, I'm pretty sure that's what's causing the problem. | ||
| It still shouldn't hang, but my code was wrong too | 14:24 | ||
| pmichaud | correct. So, if fixing PCT solves the problem, I vote that we go ahead an apply to trunk. Then I'll take the foo2.pir code I had last night and submit as a separate ticket for solving imcc's compute_dominance problem. | ||
| since that code doesn't rely on PCT at all. | 14:25 | ||
| Tene | right | ||
|
14:26
polyglotbot joined
14:32
NotFound joined
|
|||
| Tene | pmichaud: what exactly does a block label mean? | 14:33 | |
| particle | block label? as in FOO: {...}? | 14:35 | |
| Tene | If I have, say, "BAR: { ... }" can what does "BAR.WHAT()" retuD[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[D[Drn? | ||
| ETOOMUCHLAG | |||
| pmichaud | I'd have to look at the synopses a bit. | 14:38 | |
| Tene | Eh, I can probably do that. | ||
| pmichaud | anyway, BAR.WHAT() would be the protoobject for the block -- i.e., probably Code or Routine | 14:39 | |
| sorry, not Routine | |||
| Code. | |||
| Tene | So it's a name for the block itself? | ||
| pmichaud | yes | ||
| Tene | I could call BAR(), perhaps? | ||
| $x = BAR; ? | |||
| pmichaud | I don't know about those. | 14:40 | |
| Tene | Hmm. Okay. | ||
| I'll check synopses or harass someone else into doing it for me. | 14:41 | ||
| pmichaud | it does make some sense that a block label would be a form of lexical name for the block | 14:42 | |
| Tene | pmichaud: can you show me your fixed patch for Compiler.pir? | 14:43 | |
| I tried moving the push_eh up to start of the sub, even, and it still hangs for me. | |||
| Or the fix for the pir, or whatever. | |||
| pmichaud | I added an extra label after the push_eh, and got the unless to go to that. | 14:44 | |
| er | |||
| wrong | |||
| I added an extra label after the *pop_eh*, and got the unless to branch to that. | |||
| Tene | ah | 14:45 | |
| particle | constant Block FOO := { ... } | 14:49 | |
| or should that be ::= | |||
| moritz | presumably ::= | 14:51 | |
| dalek | r31547 | tene++ | trunk: | 14:53 | |
| : [pct] | |||
| : * Generate an exception handler for CONTROL_LOOP_NEXT exceptions in for loops | |||
| : [perl6] | |||
| : * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions | |||
| : [cardinal] | |||
| : * Add a 'next' sub to throw CONTROL_LOOP_NEXT exceptions | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31547 | |||
| Tene | Next I'll refactor that code into a couple of subs, 'push_control_handlers' and 'define_control_handlers' | 14:54 | |
| And then add them to the other loops that need control handlers. | |||
| adding redo and last somewhere in there. | |||
| moritz: newly passing tests in t/spec/S04-statements/next need fudging | 14:55 | ||
| moritz | Tene: I'll take care of that | ||
| Tene | there's an Undef ~= 'A' | ||
| Tene goes to teach about Process Accounting. | 14:56 | ||
| pmichaud | the parrotvm.org revision links appear to not be working. | 14:57 | |
| moritz | yes :( | 14:58 | |
| I tried to find out what's wrong, without success | |||
|
15:05
tewk joined
|
|||
| particle | is it possible a subversion upgrade would help? | 15:10 | |
| moritz | more likely a subversion upgraded killed it ;) | 15:11 | |
| dalek | r31548 | moritz++ | trunk: | 15:36 | |
| : [rakudo] add tests for next to spectest_regression, Tene++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31548 | |||
|
15:52
Theory joined
16:07
leo joined
16:10
soxet joined
|
|||
| moritz | spectest_regression now at 4397 passing tests | 16:15 | |
| particle | i've got a 4+GB gz file in unix, need to split it up to transfer it, then recombine it. what commands do i use for that? | ||
| pmichaud | so, maybe we can have 5k tests passing by next week :-) | ||
| moritz | zcat + split perhaps? | ||
| pmichaud | particle: dd, perhaps? | ||
| split ought to work. | 16:16 | ||
| moritz | zcat $file.gz | split -b=$size - splits_; | ||
| for i in splits*; gzp $i; done | 16:17 | ||
| and on the receiver side simply zcat * > file | |||
| particle | what does zcat do? | 16:18 | |
| pmichaud | uncompresses a file to standard out | ||
| basically gunzip + cat | |||
| but you probably want to split w/o the zcat | |||
| particle | yeah, that's what i think, i don't need to unzip/rezip | 16:19 | |
| moritz | ah, right | ||
| pmichaud | split -b=$size foo.gz foo_split_ | ||
| or something like that. | |||
| moritz | has anything been done yet for the TCL/Tk on rakudo grant? | 16:20 | |
| pmichaud | I haven't heard anything. | ||
| if anything's being blocked due to a rakudo feature being unimpl, I'd like to hear of it though. | 16:21 | ||
| moritz | I'd expect the person to at least hang out here or on #perl6 | ||
| particle | i haven't heard a word about it | 16:22 | |
| dalek | r31549 | pmichaud++ | trunk: | ||
| : [rakudo]: spectest-progress.csv update: 194 files, 4381 passing, 7 failing | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31549 | |||
| moritz | 7 failing? where did they come from? | 16:23 | |
| pmichaud | I suspect they come from S05-modifier/ignorecase.t | ||
| but that's just a guess. | |||
| moritz | how would test-summmary.pl know how many fail if the file name was wrong? | 16:24 | |
| anyway, is it clean now? | |||
| pmichaud | the filename was fixed on 09-30 | ||
| this latest report is for 10-01 | |||
| I don't think it's clean now... looks to me like there are some tests in there that definitely need fudging | 16:25 | ||
| (I didn't look at the tests until just now.) | |||
| they would probably work if the :i was placed inside the regex instead of after the m | |||
| (of course we need to test both.) | |||
| moritz | here everything is fine, and t/spec/ has a clean diff for me | ||
| s/clean/empty/ | 16:26 | ||
| same in languages/perl6/ | |||
| pmichaud | checking. | ||
| but I don't see how m:i could pass, since rakudo doesn't parse it yet. | |||
| moritz | #?rakudo emit skip_rest('unimplemented m:i parsing'); | 16:27 | |
| #?rakudo emit =begin | |||
| particle | split: 2048m: invalid number of bytes | ||
| rats | |||
| moritz | pmichaud: that's what should stop rakudo from running these tests | ||
| particle: sub postfix:<m>(Num $x) { $x * 1024**2 } # ;-) | 16:30 | ||
| pmichaud | ah, on my system ignorecase.t is complaining "no ICU lib loaded" | 16:32 | |
| moritz | makes sense | ||
| case information is a Unicode property | |||
| so should I remove it from spectest_regression again? | 16:33 | ||
| particle | or conditionally fudge them | ||
| pmichaud | I don't know if we have "conditional fudge" | ||
| moritz | we don't | ||
| particle | #?rakudo emit | ||
| pmichaud | I'm not sure why we're getting the error, though. | ||
| I don't think in Perl 6 we have a way to check for ICU, though. | 16:34 | ||
| NotFound | What charsest and encoding use this test? | ||
| moritz | the non-fudged tests are all ASCII | ||
| pmichaud | right, so I'm not sure why it would give an error for those. | ||
| NotFound | moritz: did you mean the content of the strings, or the encoding used? | 16:35 | |
| moritz | #?rakudo emit skip_rest('unimplemented m:i parsing'); | ||
| #?rakudo emit =begin | |||
| particle | is downcase used in the generated pir? | ||
| moritz | sorry, double copy-n-paste | ||
| pmichaud | the regexes will use downcase to perform the case-insensitive match. | ||
| moritz | NotFound: the string contents | ||
| purl | i heard the string contents was easiest with: | ||
| pmichaud | but the strings involved should still be ascii | ||
| NotFound | I can take a look at it, making a workaround if all codepoints are < 128 | 16:36 | |
| pmichaud | parrot/pge should be handling that already | ||
| particle | right | ||
| pmichaud | so hold off on the workaround. | ||
| aha... the downcase is in compiling the regexes | 16:38 | ||
| and yes, the source in this case is unicode | |||
| NotFound | utf8? | 16:39 | |
| purl | utf8 is probably the One True Encoding or RFC 2044 or statico's test at langworth.com/pub/unicode.png (screenshot) and langworth.com/pub/unicode.html (source & browserable) or at www-950.ibm.com/software/globalizat...&s=ALL or teh sux0r ( sam.zoy.org/writings/utf8/ ) or use the fine 8 | ||
| pmichaud | yes, utf8 | ||
|
16:40
masak joined
|
|||
| pmichaud | okay, I understand now. | 16:40 | |
| NotFound: if you want to create a patch for src/charset/unicode.c that implements downcase for codepoints < 256, that'd be great. | 16:41 | ||
| NotFound | pmichaud: I'm doing a without-icu build to do some tests. | 16:42 | |
| pmichaud: 256 or 128? | |||
| 128 is easier and less problematic. | |||
| pmichaud | well, I was thinking 256 -- tolower() should be able to work for that. | 16:43 | |
| (that's what iso-8859-1.c currently uses for its downcase opcode) | |||
| particle | yep | ||
| pmichaud | oh, wait, never mind | ||
| particle | um, unicode < 256 *is* latin1 | ||
| pmichaud | it *doesn't* use tolower() for the 128-256 range. But the code that is in iso-8859-1.c would work for codepoints up to 256 | 16:44 | |
| NotFound | Yes, but I suspect many people are assuming that the defualt is not 8859-1 but "anything fixed 8 my system uses" | ||
| particle | can the regex code determine if there are any chars > 255, and default to latin1 if not? | ||
| pmichaud | doesn't matter, just don't use tolower() | ||
| particle: this is the regex generator that is running into the problem | 16:45 | ||
| particle | yes, i know | ||
| pmichaud | and there's not an easy way to say "are there any chars > 255" short of looping through them all and checking. | ||
| and that would be slow to do for every literal in a regex. | |||
| particle | how is it done for source? | ||
| NotFound | Are we all Ok that will be just a provisional workaround, right? | 16:46 | |
| particle | yes, until we have unicode properly implemented in parrot | ||
| pmichaud | it's less provisional than what we have now. | ||
| right now our "workaround" is "throw a 'No ICU library found' exception" | |||
| NotFound | pmichaud: yeah, but at least is a clean and comprehensible diagnostic ;) | 16:47 | |
| pmichaud | the algorithm for downcase is basically if (x >= 0x41 && x <= 0x5a) || (x >= 0xc0 && x <= 0xde && x != 0xd7) { x |= 0x20 } | 16:48 | |
| NotFound | Somebody is building parrot on an ebcdic system? | ||
| moritz hopes not | |||
| pmichaud | perhaps, but that doesn't matter here. :-) | ||
| NotFound | (Rethoric question) | 16:49 | |
| pmichaud | yes, iirc we do plan to support ebcdic. | ||
| moritz | ebcdic should have been killed before it was born | ||
| NotFound | Maybe planned, but there is nothing in charset nor in encoding about it. | 16:50 | |
| pmichaud | it did come up in a conversation I had with allison in July. | ||
| moritz | it seems that ebcdic in perl 5 is slowly bitrotting | ||
| pmichaud | in some ways it would be more helpful if parrot provided a (unicode-compatible) means of doing case-insensitive comparisons. | 16:52 | |
| changing to downcase isn't always reliable for that. | |||
| maybe I'll post that to the mailing list | 16:54 | ||
| NotFound | pmichaud: better wait strings pdd work. | ||
| dalek | r31550 | bernhard++ | trunk: | 16:55 | |
| : [codingstd] Use single quotes for Perl literal strings, | |||
| pmichaud | I think I'll post it to the list so the folks doing strings pdd work can keep it in mind in the design. | ||
| dalek | : when there in no interpolation. | ||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31550 | |||
| NotFound | pmichaud: Ok, but please do not mark it as [TODO] | 16:56 | |
| pmichaud | (1) why not, and (2) I meant mailing list, not RT | ||
| NotFound | To avoid the risk of naive implementations making more difficult the strings refactoring. | 16:57 | |
| pmichaud | we shouldn't apply patches with naive implementations, then. | ||
| that's not a reason to avoid the [TODO] marker. | |||
| besides, the most likely implementation will be that it uses ICU | 16:58 | ||
| (I'm assuming that ICU has some form of case-insensitive compare function available.) | |||
| NotFound | But is not nice to ask for someone do it, if we don't want to accept. | ||
| pmichaud | I can put in the ticket that naive implementations aren't acceptable, or that this should wait for the strings refactoring. | 16:59 | |
| barney | Has anybody seen ' Parrot VM: PANIC: Null vtable used; did you add a new PMC?' errors from t/src/extend.t ? | ||
| pmichaud | but again, that's not really a reason to not mark a ticket for what it is. | ||
| NotFound | The wait for string is the better, IMO | ||
| pmichaud | and as I said, I'd like the string pdd folks to keep it in mind, because it's a bit of a hole in Parrot at the moment. | ||
| NotFound | barney: I've seen it as a symptom of lack of realclean | 17:00 | |
| Or a conflicting parrot library | 17:01 | ||
| barney | I even did a fresh svn checkout, after it didn't go away after 'realclean'. | ||
| conflicting parrot library might be it | 17:02 | ||
| pmichaud | afk, lunch | 17:04 | |
| particle | barney: i'll run make test now on win32 | ||
| barney | NotFound++, it was the confliction parrot lib | 17:06 | |
| NotFound | This is amusing: the special case for utf8 encoding and plain ascii content is already present... but is inside the #if PARROT_HAS_ICU | 17:10 | |
| particle | uggh | 17:11 | |
| particle hands NotFound a ! | |||
| NotFound | Doing tests... | 17:15 | |
|
17:26
ashleyb joined
|
|||
| NotFound | I've got a bad plan for t/spec/S29-conversions/ord_and_chr.rakudo This was already present in without-icu build? | 17:32 | |
| moritz | NotFound: yes, it's a bug in the harness | ||
| NotFound: if you run that with ../../parrot perl6.pbc t/spec/S29-conversions/ord_and_chr.rakudo it should work | |||
| NotFound | Yes, it works that way | 17:34 | |
| moritz | then ship it! | ||
| NotFound | There are utf8 non-ascii chars in the output. The harness problem can be related to that? | 17:35 | |
| moritz | NotFound: dunno, it works on my second Debian box... | ||
| NotFound | moritz: wait, I want to retest with icu before shipping | 17:36 | |
| moritz | NotFound: and a clean checkout worked at some point, until it stopped working when I copied it to another location | ||
| NotFound | Too much black magic | 17:38 | |
| moritz | and most importantly, I can remove all non-ASCII from the TAP output, and still get the same failures | ||
| dalek | r31551 | bernhard++ | trunk: | 17:39 | |
| : [Pipp] Untodo and add tests for stringification of floats. | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31551 | |||
|
17:40
ruoso joined
|
|||
| dalek | r31552 | bernhard++ | trunk: | 17:48 | |
| : [Pipp] Skip two test cases with excessive memory use | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31552 | |||
|
17:48
Ivatar joined
17:50
wolv joined
|
|||
| Tene | pmichaud: | 17:59 | |
| dalek | r31553 | julianalbo++ | trunk: | ||
| : allow downcase of utf8 encoded strings with plain ascii content in absence of ICU | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31553 | |||
| moritz | NotFound++ | 18:00 | |
| Tene | pmichaud: should I just add the handlers inline in while, etc, or should I factor that out into a couple of subs? | 18:01 | |
| particle | DRY | 18:09 | |
| pmichaud | can it be factored into subs? | 18:11 | |
| Tene | Well, methods. | ||
| purl | i think methods is a Hash, you find that. then what breaks? | ||
| pmichaud | I don't quite understand what you mean by "factor" here. | ||
| Tene | self.push_loop_control_handlers(ops,looplabel) | 18:12 | |
| masak | purl, forget methods | ||
| Tene | self.define_loop_control_handlers(ops,looplabel) | ||
| purl | masak: I forgot methods | ||
| pmichaud | where self is a PAST::Op node? | ||
| Tene | Whatever self is in sub 'for' | 18:13 | |
| pmichaud | I'd like to think about it a bit. | ||
| Tene | I'll make a patch. | ||
| pmichaud | I'm thinking I may refactor all of them. | ||
| (all of the loop types, that is) | 18:14 | ||
| NotFound | pmichaud: downcase fix done. The code was already present, but inside the ICU if'ed part. | 18:15 | |
| pmichaud | NotFound: that seems to only handle ascii, though. | 18:19 | |
| NotFound | pmichaud: yes, is the only content that does no require transcoding. | 18:20 | |
| particle | latin-1 doesn't require transcoding | 18:21 | |
| pmichaud | why not get it to handle iso-8859-1 also? | ||
| oh, because it has to be transcoded. | |||
| right. | |||
| NotFound | particle: from utf8, yes. | ||
| particle | ah, right | ||
| NotFound | pmichaud: iso-8859-1 is not handled in unicode.c | 18:22 | |
| pmichaud | alas, that means we still can't handle things like " Ā« hello Ā» " because of the presence of the non-ascii chars. | ||
| NotFound | pmichaud: without a more elaborate code, not. | 18:23 | |
| moritz | are you looking towards parsing STD.pm, or why do you think that Ā«...Ā» are so important? | ||
| (that was to pmichaud) | |||
| pmichaud | parsing STD.pm, yes | ||
| NotFound | perl guys like to use all symbols they can ;) | 18:24 | |
| pmichaud | but also to support Ā« and Ā» quotes in Rakudo | ||
| nopaste | "tene" at 148.87.66.55 pasted "pct loop control refactor for pmichaud" (98 lines) at nopaste.snit.ch/14209 | ||
| pmichaud | Tene: that works, but it's not really the approach I'm thinking of at the moment. | ||
| Tene | What's your approach? | 18:26 | |
| pmichaud | refactor all of the loop constructs so they're basically handled by one method in PAST::Compiler | ||
| in particular, we need a way to be able to handle the Perl 6: loop($i=0; $i<10; $i++) { ...; next; ...} | 18:27 | ||
| such that the 'next' causes the $i++ to be executed | |||
| Tene | Hmm. | ||
| NotFound | I'd like to kill 8859-1 charset and redoing it as an unicode encoding limited to 0-255 codepoints. | ||
| pmichaud | NotFound: please, no. | ||
| that would be awful from a performance perspective. | |||
| NotFound | pmichaud: why? | 18:28 | |
| pmichaud | oh, you mean keep it as fixed_8, though? | ||
| i.e., fixed-width encoding? | |||
| Tene | pmichaud: so have a pasttype('loop'), and a past node for each of perl 6 loop($1,$2,$3) ? | ||
| NotFound | pmichaud: yes, fixed-width encoding and limited codepoint range. | ||
| pmichaud | NotFound: I wouldn't see too much difficulty with that. But are you proposing that we cause iso-8859-1 to rely on ICU? | ||
| NotFound: in other words, how would what you're describing differ from what we have now? | 18:29 | ||
| NotFound | pmichaud: mainly because was designed with that thing in mind, and it will make recoding between current unicode encodings an 8859-1 easier. | 18:30 | |
| pmichaud | Tene: perhaps have a 'loop' sub that handles the basic looping constructs, and then for/while/until/etc. are all defined in terms of 'loop' | ||
| NotFound: I don't see how it makes things easier. | |||
| NotFound | pmichaud: the difference is that the conversions become just encoding, without changing charset | 18:31 | |
| pmichaud | pmichaud: is that difficult now? | ||
| Tene | pmichaud: Interesting. I'll look into it sometime today. | ||
| pmichaud | er, NotFound: is that difficult now? | ||
| Tene: because, in all of this we really ought to be handling 'last' and 'redo', too. | 18:32 | ||
| NotFound | pmichaud: is not easy to evaluate the impact. | ||
| pmichaud | Tene: and it would also be good to provide options on the node that say what sorts of exceptions we're willing to handle. | ||
| creating the exception handlers is a good pessimizing strategy, but the hll compiler ought to have a way to say "there's only a 'next' statement here". | 18:33 | ||
| or "this loop doesn't have any control exceptions in it" | |||
| since that can be determined by static analysis for many languages that aren't Perl 6 :-) | 18:34 | ||
| particle | s/loop/block/ | ||
| pmichaud | no, loop. | ||
| for these specific exceptions (I'm only talking about loop control exceptions here). | 18:35 | ||
| particle | ok, so if a block contains 'redo;' it's a loop? | ||
| and how do you determine that ahead of time? | |||
| pmichaud | does redo work in a normal block? It doesn't in Perl 5. | 18:36 | |
| particle | not sure, i'll have to check | ||
| moritz | it throws a control exception | ||
| particle | yes, that it does | ||
| moritz | if nothing catches that, it's an error | ||
| and methods like .map can (and should) catch it | |||
| pmichaud | right, and a loop construct would be the thing that catches redo | ||
| (where .map is a form of loop construct.) | |||
| moritz | pmichaud: but things like .map might be user defined, at run time... | 18:37 | |
| pmichaud | that's okay | ||
| my point is that it's not the _block_ that catches the exception. | |||
| moritz | right. | ||
| pmichaud | thus, "this loop doesn't have any control exceptions in it" is a case of static analysis of the loop | ||
| (for languages that aren't Perl 6) | 18:38 | ||
| moritz | right ;) | ||
| pmichaud | or, perhaps phrased better: "this loop doesn't need to handle any control exceptions", because we can statically determine that there aren't any present. | ||
| particle | so, is a sub with 'take' in it a loop? | ||
| pmichaud | particle: no. | ||
| particle | s/take/gather/ | 18:39 | |
| pmichaud | gather makes a loop-like construct, yes. | ||
| NotFound | pmichaud: you can handle Ā«, if you take care of emitting the strings as iso-8859-1 where possible | 18:40 | |
| pmichaud | NotFound: I do that, yes. But sometimes the strings come in as unicode, and I don't necessarily want to transcode them. | ||
| and sometimes I have to downcase the string prior to emitting it. | 18:41 | ||
| (i.e., for doing case-insensitive comparison against a literal.) | |||
| NotFound | Ah, yes, I thinked only about literal regexes in perl6 source. | 18:42 | |
| particle | so, a pessimized loop looks like: loop (;;) { ...; CONTROL { ... } }; | 18:45 | |
| where the next/last/redo or whatever handlers are inside the CONTROL block | 18:46 | ||
| pmichaud | particle: I'm not at all sure what you're referring to here. | ||
| particle | isn't that what pct should do, then? | ||
| perlcabal.org/syn/S04.html#Control%20Exceptions | |||
| pmichaud | particle: I'm expecting that PCT has the basic handlers in place for handling next/last/redo as most dynamic languages expect them to work. | 18:47 | |
| particle | perlcabal.org/syn/S04.html#Control_Exceptions | ||
| pmichaud | I'm not necessarily expecting PCT to natively do it the Perl 6 way. | ||
| particle | i'm wondering, what happens when the user adds a CONTROL block, is it executed before or after the builtin control handlers? | ||
| pmichaud | I'm saying that if I have some PHP code that looks like for($array as $v) { print $v; } | ||
| then the PHP compiler should be able to tell PCT "generate a for looping construct and don't bother with generating any control exception handlers, because there aren't any present". | 18:48 | ||
| currently the 'for' loop in PCT is *always* generating a control exception handler for 'next', even if the body of the loop can't possibly generate a .CONTROL_LOOP_NEXT exception. | 18:49 | ||
| particle | ok, i'm sorry for confusing perl 6 and pct semantics | 18:50 | |
| pmichaud | thus my repeated phrase "for many languages that aren't Perl 6" | ||
| moritz | so maybe the solution is to add no handlers by default, and to allow either default or a list of handlers? | ||
| pmichaud | moritz: yes.... but I don't want to have to duplicate that code for every loop type | 18:51 | |
| thus I'm thinking to refactor the different loop types into a single construct internally in PAST | |||
| moritz | right | ||
| pmichaud | sorry in PAST::Compiler. | ||
| particle | use inheritance or roles, then | ||
|
18:51
isop joined
|
|||
| pmichaud | it's basically the same way that 'if' and 'unless' are currently handled by one common section of code. | 18:52 | |
| particle | there may be two loop types, if do is considered different from loop | ||
| isop | pmichaud: I'm trying to figure out how import should work in Pynie | 18:53 | |
| pmichaud | do is just a loop where something controls/constrains it to execute once | ||
| but it handles control exceptions | |||
| seems to me that "do X" is pretty much equivalent to "for 1 X" | |||
| at least semantically (not syntactically) | 18:54 | ||
| particle | would you keep the :pasttype('while') api? | 18:55 | |
| pmichaud | sure | ||
| those are very common | |||
| they just re-dispatch to the common loop handling code, which knows how to handle the various cases. | |||
| particle | yes, seemed burdensome to change that to something else | 18:56 | |
| pmichaud | same as the way that :pasttype('unless') redispatches to :pasttype('if') | ||
| isop | afaik Python doesn't have a separate syntax for namespaces, you access functions in namespaces by calling "methods" of the namespace object | ||
| pmichaud | isop: then pynie probably needs to have namespace objects of some sort. | ||
| isop: that can map method calls into function calls, or whatever. | |||
| isop: I know very little about Python beyond the basics, so it pretty quickly gets beyond my ability to say what should/shouldn't happen here :-) | 18:57 | ||
| isop | pmichaud: this would be Pynie's HLL namespace object (as per pdd21)? | 18:58 | |
| pmichaud | isop: I guess so. I'm still of the opinion that pdd21 needs a redesign. | ||
| or at least pdd21 needs to be brought up-to-date with respect to other changes in parrot. | 18:59 | ||
| isop | does HLL type mapping work? | ||
| pmichaud | pct and p6object don't know how to handle those yet, no. | ||
| it's on my list of things to update soon. | |||
| isop | does parrot handle it right? | ||
| pmichaud | for various definitions of "right", maybe. | 19:00 | |
| isop | ok | ||
| pmichaud | afaik partcl is the only language actively using hll type mapping. | ||
| isop looks | |||
|
19:04
ruoso joined
|
|||
| isop | if code in one HLL calls code in some other HLL with HLL-mapped types, do they get remapped? | 19:12 | |
| particle | no, unless your compiler does that for you | 19:15 | |
| isop | so how does interop work? different languages' builtin types have different interfaces | 19:18 | |
| particle | all pmcs share the same interface (vtables) | 19:19 | |
| isop | I mean, say, Perl operators don't work the same way as Python operators | 19:20 | |
| particle | beyond that, you'll have to map methods between hlls | ||
| hll interop has not been seriously implemented yet, so questions abound | 19:22 | ||
| isop | ok | ||
| Tene | pmichaud: perl -e '$i=0;{print "foo$i\\n";$i++;redo if $i < 2;}' | 19:31 | |
| pmichaud: 'redo' *does* work in a bare block in Perl 5. | |||
| pmichaud | Tene: oh. in Perl 5 a bare block is a do-once loop. | 19:33 | |
| Tene: but that's not true in Perl 6. | |||
| particle | yep | ||
| pmichaud | (you're correct that I mis-spoke earlier about redo in blocks. In p5, redo doesn't work in sub, eval, or do blocks, but it does in bare blocks.) | 19:36 | |
| particle | pmichaud: there was an item or two you wanted to bring up today on the phone... | 19:42 | |
| pmichaud | particle: yes, :g in regexes was one | 19:47 | |
| I don't recall any others at the moment. | |||
| particle | is that related to an rt#? because i remember a rt# | 19:48 | |
| pmichaud | afaik it's not directly related to an rt # | ||
| pmichaud checks the queue. | |||
| moritz | that was related to a discussion on the november list | ||
| about subst(m:g/../, $closure) | 19:49 | ||
| dalek | r31554 | julianalbo++ | trunk: | 19:50 | |
| : pirric: hyperbolic functions and some changes in control exceptions | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31554 | |||
| pmichaud | I don't see any rt tickets that ring a bell for me. | 19:52 | |
| particle | okies | 19:53 | |
| particle reads S11-Exportation | 19:54 | ||
| TimToady | speaking of bells, phone | 20:00 | |
| pmichaud | btiab | ||
| dalek | r31555 | julianalbo++ | trunk: | 20:22 | |
| : fix Complex.pmc pow for PMCNULL destination | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31555 | |||
| r31556 | julianalbo++ | trunk: | 20:27 | ||
| : pirric: remove unimplemented functions accidentally inserted in r31554 | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31556 | |||
| r31557 | moritz++ | trunk: | 20:36 | ||
| : [rakudo] refactored Str.capitalize to use find_cclass. | |||
| : Patch courtesy by azawawi++ | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31557 | |||
|
20:38
Theory joined
|
|||
| NotFound | moritz: are you asking for more no-icu troubles? ;) | 20:41 | |
| moritz | NotFound: I hope not | 20:42 | |
| NotFound: pmichaud suggested that refactor, so I hope he knows what we're up to ;) | |||
| NotFound | At least you know who to blame ;) | 20:44 | |
| moritz blames users without icu | 20:45 | ||
| isop | what's the difference between the 'typeof' and the 'class' pir ops? | 20:49 | |
|
20:51
clunker9_ joined
|
|||
| PerlJam | There's a "class" op? | 20:53 | |
| pmichaud | I think "class" op is deprecated, though. | ||
| Tene | It is? How do you get the class of a pmc then? | 20:55 | |
| pmichaud | typeof | 20:56 | |
| $P0 = typeof $P1 | |||
| Tene | Oh. | 20:57 | |
| Right. | |||
| moritz | in sovjet russia pmc types get you! | ||
| PerlJam | I think I've only ever seen typeof | 20:58 | |
| Tene | I think I used it... somewhere... | ||
| nopaste | "isop" at 87.69.10.102 pasted "quick crash using typeof" (8 lines) at nopaste.snit.ch/14212 | 21:06 | |
|
21:10
johbar joined
|
|||
| NotFound | isop: nice catch | 21:11 | |
| isop | :) | 21:12 | |
| moritz | isop: parrotbug@parrotcode.org ;) | 21:13 | |
| PerlJam | isop: don't forget to send the patch that fixes it too ;) | ||
| particle | does that crash saying can't assign to pmcnull? | 21:14 | |
| NotFound | particle: is not pmcnull, is NULL | ||
| pmichaud | note that $P1 = typeof $P0 and $S1 = typeof $P0 do very different things | ||
| the first returns the class object associated with $P0 | 21:15 | ||
| the second returns the name of the class associated with $P0 | |||
| particle | =item B<typeof>(out STR, invar PMC) | ||
| =item B<typeof>(out INT, invar PMC) | |||
| =item B<typeof>(out PMC, invar PMC) | |||
| Return the type of PMC in $2. | |||
| moritz | and neither should make Parrot_say_p segfault ;) | ||
| NotFound | pmichaud: it must return PMCNULL, not plain NULL | ||
| pmichaud | the second one is deprecated. | ||
| particle | the documentation is wrong in src/ops/pmc.ops | ||
| pmichaud | I correct, it should not get plain null, so I suspect the error is in the NameSpace PMC | 21:16 | |
|
21:16
Ademan joined
|
|||
| pmichaud | s/I// | 21:16 | |
| NotFound | pmichaud: looks like someone is creating a namespace pmc without init. | ||
| pmichaud | i.e., the NameSpace PMC is not returning a proper PMCProxy when get_class is being called on it | ||
| NotFound: since in this particular case the namespace is the "default root namespace", I don't know what creates it. | 21:17 | ||
| i.e., I don't know what creates the 'parrot' root HLL namespace. | |||
| (so it's entirely possible it's not initialized properly) | 21:18 | ||
| dalek | r31558 | moritz++ | trunk: | ||
| : [rakudo] add two more small files to spectest_regression | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31558 | |||
| NotFound | interp->root_namespace = pmc_new(interp, enum_class_NameSpace); | 21:20 | |
| isop | I think I got that with other namespaces, too | 21:21 | |
| NotFound | pmc_new calls init, it isn't? | ||
| But get_namespace returns the current namespace or the global? | 21:25 | ||
| particle | i believe so, and we have pmc_new_noinit | ||
| take a look at pdd21 | 21:26 | ||
| NotFound | Is the parrot namespace, not the root namespace. | ||
|
21:39
mwhudson joined
21:42
Whiteknight joined
22:10
bacek joined
|
|||
| dalek | r31559 | cotto++ | trunk: | 22:12 | |
| : [pipp] implement push_*, pop_*, shift_* and unshift_* for PHPArray | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31559 | |||
|
22:18
davidfetter joined
|
|||
| isop | moritz: rt #59532 | 22:18 | |
| dalek | r31560 | cotto++ | trunk: | 22:21 | |
| : [pipp] various POD and typo fixes | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31560 | |||
| moritz | isop: good. chromatic will be happy ;) | 22:22 | |
| particle | that'll be the day... | ||
| isop | moritz: why? | 22:23 | |
| moritz | isop: chromatic is always happy to fix segfaults that can be reproduced in pure pir. especically when the test program is as short as yours ;) | ||
| isop | ah :) | 22:24 | |
|
22:38
Theory joined
|
|||
| isop | I'm trying to make a Pynie module object that does namespace lookups on attribute access/method calls | 22:39 | |
| but it seems I can't just return a normal sub from 'find_method', it gets treated as a method somehow | 22:40 | ||
|
22:45
particle1 joined
|
|||
| isop | right now I've got it working by returning 'self' (which gets set to the module object anyway), setting the requested function in an attribute, and calling that in 'invoke' | 22:46 | |
|
22:49
tetragon joined
22:58
kid51 joined
|
|||
| isop | is there a better way to do it? | 23:04 | |
| dalek | r31561 | particle++ | trunk: | ||
| : [rakudo] add apostrophe and identifier tokens to grammar; not using them yet | |||
| diff: www.parrotvm.org/svn/parrot/revision?rev=31561 | |||
| Whiteknight | isop, the function returned by find_method will return a method if the subroutine is flagged as :method | 23:07 | |
| check the function, see how it's flagged | |||
| isop | Whiteknight: but it does get passed find_method's self | 23:10 | |
| Whiteknight | no, it gets passed the first argument when you invoke it | ||
|
23:10
peepsalot joined
|
|||
| Whiteknight | or, the object, if you invoke it on an object | 23:10 | |
| so 'my_method'(self) or self.'my_method'() | 23:11 | ||
| isop | here's what I mean | ||
| nopaste | "isop" at 87.69.10.102 pasted "find_method and self" (23 lines) at nopaste.snit.ch/14213 | 23:12 | |
| isop | and I just want to get 'not_a_method' as a normal function with no first object parameter | 23:13 | |
| Whiteknight | hmm, I haven't seen anything like that before | 23:14 | |
| The find_method finds and invokes a method on an object | |||
| at least, I think it does | |||
| so when you return the method not_a_method, parrot calls $P0.not_a_method() | 23:15 | ||
| isop | so it would seem | 23:17 | |
| particle | find_method doesn't invoke | 23:18 | |
| invoke invokes :) | |||
| $P1.yum() calls call_method $P1, 'yum' (or whatever the op is called) | 23:19 | ||
| ...which calls find_method | |||
| sigh, i'm not being too clear | 23:20 | ||
| isop | particle: I think I get it | ||
| particle | try adding 'trace 1' just above $P1.yum() | ||
| that will show you the ops called | |||
| isop | is there some way I can get it to call the returned function as a normal sub? | 23:24 | |
| or, is there a nicer way to wrap the method so the function gets called properly? | |||
|
23:24
isop joined
|
|||
| particle | you can have the sub take an extra first param that you don't use | 23:24 | |
| .param pmc self # unused | |||
| isop | can I do that live? (the object with find_method is proxying a namespace) | 23:25 | |
| particle | what parrot op is called for $P1.yum() ? | 23:26 | |
| callmethodcc or something? | 23:27 | ||
| 35 callmethodcc P1, "yum" P1=Object(MyClass)=PMC(0xd05608) | 23:28 | ||
| 4 get_hll_global P0, "not_a_method" P0=PMCNULL | |||
| ... | |||
| so, by the time you've found 'not_a_method', you've committed to the callmethodcc op, so that's how 'not_a_method' is called | 23:29 | ||
| Whiteknight | I've been wrong before, and I'll be wrong again | 23:32 | |
| all too often | |||
| particle | well, i could be wrong, too. i'm a little foggy, as my head is in some perl 6 code atm | ||
| TimToady | How can that be? Perl 6 is the non-drowsy formula... | 23:41 | |
| Tene | But is it transparent? | 23:44 | |
| particle | cycling & | 23:57 | |