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