Parrot 0.8.1 "Tio Richie" Released! | www.parrot.org/
Set by moderator on 19 November 2008.
dalek r32909 | allison++ | pdd22io: 00:04
: [pdd22io] Fix trailing spaces for coding standards.
diff: www.parrotvm.org/svn/parrot/revision?rev=32909
Coke ~/ I'mm not even angry ... /~ 00:07
allison ~/we do what we must because we can/~ 00:08
chromatic Lucky. I have old Michael Jackson songs in my head at the moment.
00:09 AndyA joined
dalek r32910 | allison++ | trunk: 00:15
: [docs] If we aren't running coding standards tests in 'make test' then we have
: to run them as part of the release process.
diff: www.parrotvm.org/svn/parrot/revision?rev=32910
allison hmmm... well in theory, 'fulltest' also runs 'codetest'... 00:25
so why the mess?
maybe it's only a few new files... 00:26
looks like new files 00:29
particle i didn't get a chance to clean up lathos's mess yet, is that it? 00:32
i suspect nobody else did, either
lathos 00:35
Someone had a crack at coding standards.
Nobody has yet dealt with the fact that I can't write C for the life of me. 00:36
Infinoid a bunch of new stuff got checked in right after the release
I saw the codetest failures, but hadn't fixed them yet
Whiteknight did the lex2 branch get merged in? 00:40
particle no, it's now the lex4 branch iirc
Whiteknight because I'm having lots of problem with lexical variables in the PCT in the calling_conventions branch
and I can't figure out why ye
allison lathos: what's your thoughts on the copyright? Our standard is "The Perl Foundation" (hence the coding standards test)
Whiteknight yet
lathos allison: TPF is fine with me, I just didn't know whether my stuff was going to survive in Parrot in its current form long enough to bother. :) 00:42
dalek r32911 | allison++ | trunk: 00:43
: [cage] Fix coding standards failures aside from SQLite copyright.
diff: www.parrotvm.org/svn/parrot/revision?rev=32911
allison lathos: you'd be amazed at how many "temporary" files we're still maintaining years later :) 00:44
lathos: I'll just slap in the usual boilerplate if there's no particular reason to make an exception in the test
lathos: it can always be changed later 00:45
chromatic There's the Perl philosophy at work! 00:46
dalek r32912 | allison++ | trunk: 00:50
: [cage] Haste makes waste, reverting overzealous instructions, since 'fulltest'
: includes 'codetest'.
diff: www.parrotvm.org/svn/parrot/revision?rev=32912
lathos I've just emailed Tim Bunce to ask where he's got to on Parrot DBDI. 00:52
dalek r32913 | allison++ | trunk:
: [cage] Add boilerplate to SQLite C file, to quiet the coding standards tests.
diff: www.parrotvm.org/svn/parrot/revision?rev=32913
allison chromatic: clean ye code files while ye may? 00:53
particle news.zdnet.com/2424-9595_22-249842.html
Gartner: 85 percent of companies using open source 00:54
dalek r32914 | allison++ | pdd22io: 00:57
: [pdd22io] Bringing the pdd22io branch up-to-date with trunk r32913.
diff: www.parrotvm.org/svn/parrot/revision?rev=32914
chromatic I meant more like "We can always clean it up later." 00:59
00:59 flw joined
dalek r32915 | allison++ | pdd22io: 01:03
: [pdd22io] Set file metadata on new files in branch.
diff: www.parrotvm.org/svn/parrot/revision?rev=32915
davidfetter OH HAI 01:06
any parrots in buenos aires?
dalek r32916 | allison++ | pdd22io:
: [pdd22io] Fix 'ifdef' indenting for coding standards.
diff: www.parrotvm.org/svn/parrot/revision?rev=32916
jonathan davidfetter: You there/going there? 01:11
Weren't you only just in Beijing?
jonathan SO should be sleeping off his jetlag at this point...
davidfetter i'm headed there, and yes i was
01:11 Alias joined
davidfetter will arrive tomorrow 01:11
Alias Second attempt at building Vanilla Parrot completed... Configure.pl seems to run... 01:12
hrm 01:13
ok, so basically I have to parse the output of Configure.pl to work out what the make command is? :/
I suppose I can hard-code it short term
particle no 01:14
lathos No.
particle look in lib/Parrot/Config.pm
lathos my $pc = Parrot::Configure->new(); $pc->data->slurp();
chromatic still wants to know if lathos recognizes any code in Parrot, seven years later. 01:16
jonathan davidfetter: Sounds fun - is a city I'd love to visit.
jonathan sleeps - or tries anyway...
davidfetter g'night, jonathan
Whiteknight urg, I've got a test failing in branch, but the same tests fail in trunk with prove 01:17
and I can't seem to run the test in the debugger because I can't find the dependences
lathos pmc.c still has two lines of my code left. 01:19
SUre, one of them is blank and the other is #include "parrot/parrot.h"
particle the more things change, the more they stay the same.
01:23 rhr joined
pmichaud <- still working on lex4 branch, with interruptions. 01:23
01:24 Lorn joined
Alias Anyone see the Adobe Alchemy thing? 01:25
Lets you compile C/C++ to the Flash runtime
Alias ponders the idea of parrot running inside flash...
OK, runtime inside a runtime, but still :)
pmichaud it's runtimes all the way down. 01:26
chromatic I heard they have Perl 5 running with it. 01:29
I couldn't confirm that though.
Alias OK, starting next build run for 0.8.1, with mingw32make support in now 01:32
So hopefully I should get past make
Should make test pass?
(typically)
pmichaud Alias: Yes. 01:33
Alias Great, so I can just reuse everything from the dmake execution methods
particle especially the day after a release
Alias The release packages have been known to degrade? 01:34
I wouldn't have imagined you'd hit much bitrot
pmichaud deprecations and new features tend to get committed shortly after a release.
particle gamma rays
LHC
earth-shattering *kaboom* etc
Alias pmichaud: I don't use svn
The only reason I can maintain Vanilla/Strawberry and stay sane is that it's entirely automated, and I utterly refuse to use blead or patch the official releases 01:35
Only prod versions of stuff gets built
hrm
And environment variables I might want to turn on during testing? 01:36
On Perl 5 I normally have to add PERL_SKIP_TTY_TEST
chromatic If you have multiple cores, TEST_JOBS=n, where n is 3^#cores
Alias I do, but I need the other one to do my day job :)
I'll try it out on the 4-core at home though
chromatic You can invest 90 seconds in a test suite. 01:37
Alias The entire Perl::Dist process takes an hour, minimum
Before Parrot even starts to be built
chromatic Parrot's a little faster.
Alias C Toolchain -> C Libraries -> Perl Binary -> Perl Toolchain -> Parrot
Everything gets rebuilt from scratch every time for maximum cleanlyness 01:38
(or at least, the Perl stuff does, I don't compile the C stuff)
Anyways, back in a few hours when the next run is done
pmichaud oh, the release package should definitely pass make test.
we don't release if it doesn't.
Alias right 01:39
OK, thanks
chromatic There was that Darwin PPC question....
Alias chromatic: BTW, I'm starting to come around to Module::Build finally 01:47
chromatic: Specifically for $work project where the build, test and realclean tasks has to do some REALLY unusual things
And it's in a sanitary and controlled build environment 01:48
dalek r32917 | pmichaud++ | lex4:
: Make sure we refcount captures. With this commit, "make test" passes
: in both trunk and rakudo again. Now to fix "make spectest".
diff: www.parrotvm.org/svn/parrot/revision?rev=32917
chromatic Yeah, you go nuts trying to do it in MakeMaker. 01:49
Alias Or M:I 01:50
Which is the same, yes
chromatic Ingy had the right idea, but sticking with MakeMaker was the problem there.
Alias Wasn't ingy... someone else before him I think 01:51
Unknown -> Ingy -> Audrey -> Me
dalek r32918 | allison++ | trunk:
: [pdd22io] Merging the pdd22io branch into trunk for r32120 to r32916.
diff: www.parrotvm.org/svn/parrot/revision?rev=32918
Alias Someone had the idea, Ingy made it do lots of stuff, Audrey made it magic, then I made it stable :)
We really do need a port of the M:I interface layer to M:B though 01:52
It feels like it's time
chromatic Ingy came over to my house one day and said "I've been thinking. There should be a way to reuse all of that interesting magic from MakeMaker programs. I just copy and paste rules from DBI or Tk."
Alias Will still be pretty experimental, since we need a year for configure_requires to filter out
chromatic I don't remember if he said he had the idea from Neil Watkiss or someone else Inline-related, but perhaps he did.
Alias Also, as soon as I find a timeslice, I think I can take M:I one step further to a DSL 01:53
Like, a real one :)
I just drop the WriteAll, and then remove quotes and commas and semicolons
So you get
use inc::Module::Install::DSL;
all_from (whitespace) /lib/Module.pm 01:54
requires Foo 1
etc etc
Which, ironically, would be EASIER to reimplement over M:B than the current syntax 01:55
dalek r32919 | allison++ | pdd22io:
: Removing first I/O development branch from the repository
diff: www.parrotvm.org/svn/parrot/revision?rev=32919
Alias Anyways, this conversation belongs elsewhere
I'll talk to you another time
(But please start pondering a good name for it) 01:56
chromatic Will do. 01:57
Alias I'm pondering Module::Build::Simple
But that's long...
dalek Jim Keenan | Parrot: 01:58
link: www.perlfoundation.org/parrot/index.cgi?parrot
particle chromatic: i talked to buglabs about getting us a bug. they said they're just starting to ship so it'll be about a month
chromatic Excellent.
02:03 jimmy joined
Alias "a bug" ? 02:06
allison wow, Mozilla makes it *really* difficult to find the source code. Brings a whole new meaning to the term "open source". 02:07
chromatic Try finding the source code to their JS test suite. 02:08
Oh... that's because the *output* from some of our test files is larger than the entire JS test suite.
particle alias: buglabs.net/ 02:12
02:16 clunker3__ joined
Alias Funky, if amazingly geeky :) 02:30
Parrot make completed ok
make test failed 02:34
Trying to work out why
chromatic Threads wouldn't surprise me. 02:36
Alias The builder records output from failing steps, but I'll need to get back to you 02:37
$work imposes
I only have time for diagnosing obvious failures, then restarting the next run
bacek_ rakudo: say 1i ~~ Num
polyglotbot OUTPUT[0␤]
bacek_ rakudo: say 1 ~~ Num 02:38
polyglotbot OUTPUT[0␤]
bacek_ rakudo: say 1.0 ~~ Num
polyglotbot OUTPUT[1␤]
02:41 bacek joined
pmichaud "Did you know..." that the instruction $P0 = new "String" involves creating and destroying eight contexts? 02:43
(I should say "push/pop" here.) 02:44
chromatic That seems like (counts on fingers) eight too many. 02:45
pmichaud it does. 02:47
purl stays quiet
pmichaud apparently it goes through a PMCProxy object for everything, and a bunch of PCCINVOKEs 02:48
(I'm guessing eight, although it could be four.)
chromatic Is this for PIR or Rakduo? 02:49
Rakudo
pmichaud PIR.
chromatic No HLL? 02:50
pmichaud No HLL. 02:51
it could be that it does it for only the _first_ such String object -- haven't checked that.
just a sec, I'll set up a gdb session 02:52
chromatic I could imagine setting up the proxies does that.
pmichaud it appears to create a new proxy on every execution.
unless they're cached.
(checking that now.)
Alias Style Question
If we're adding support for parrot stuff to Padre, which of these looks more natural 02:53
Padre::Document::Pir vs Padre::Document::PIR
(and ::Pasm vs ::PASM)
chromatic PIR
Alias rgr
Also, mime types
application/x-pir and application/x-pasm?
chromatic Those look fine. 02:54
Alias rgr
pmichaud okay, it only does that for the _first_ such construction. 02:55
(whew!)
after that it apparently keeps the cached one.
chromatic Much better.
pmichaud (more precisely: after the first one it's able to get the PMCProxy from the namespace) 02:56
03:08 TiMBuS joined
chromatic wonders why no one has commented on "(branch breaks)" from the release announcement. 03:09
Coke looks like deps got screwed up recently. (make -j2 fails) 03:14
... stopped reading the announcement about 1000 words into the cut and paste. 03:16
ah. no, the build fails, just fails faster with -j2.
PARROT_FILEHANDLE(filehandle)->buffer_flags = new_flags;
src/io.c:459: error: invalid type argument of '->'src/io.c: In function 'Parrot_io_get_buffer_size': 03:17
(and dozens more where that came from.)
... fixing... 03:19
03:21 jimmy joined
chromatic src/exceptions.c: In function ā€˜Parrot_print_backtrace’:src/gc/gc_gms.c 03:23
src/exceptions.c:534: error: ā€˜Dl_info’ undeclared (first use in this function)
That looks a lot like Darwin code.
03:23 Psyche^ joined
Coke Didn't allison just send an emaila bout the merge? 03:25
Coke was going to reply to it, but can't see it now. :| 03:27
aha. 03:28
(I deleted it? Wtf)
s1n Coke: i just updated my copy of svn trunk and rebuilt it (make realclean, ran the configure script, and did a gmake) without issue 03:30
even built rakudo without any problems
dalek r32920 | coke++ | trunk: 03:35
: fix deps on src/io
diff: www.parrotvm.org/svn/parrot/revision?rev=32920
Coke s1n: I have magic 'build deps are broken" radar. 03:36
(somehow, -j always fails for me when it can.) 03:37
(fixed in r32920)
12550 / 60 /60 03:52
purl 3.48611111111111
Coke "hours of tcl spec tests." 03:53
03:55 Andy joined
jimmy 3 / 2 04:16
purl 1.5
jimmy s / s
3 - 4 * 2 04:17
purl -5
jimmy -s * 2 04:18
cotto new math? 04:23
purl new math is designed so you "understand" why you're carrying. Don't think it quite worked. or <reply>1+1=5! or 44% of 25 is 99!
pmichaud starts to see light at the end of the lexicals tunnel. 04:27
cotto so, only two more branches? ;) 04:28
pmichaud possibly zero.
I'm passing all but one spectest. 04:29
of course, the code is undoubtely _wrong_ and leaking all over the place, so I've got to go back and clean that up.
dalek r32921 | pmichaud++ | lex4: 04:33
: This version passes all of Parrot's "make test" and all but one Rakudo
: spectest file. That said, it's undoubtedly wrong, as it's likely
: leaking contexts and doing things it shouldn't be. So, this is
: a "snapshot" of something that works and I can start cleaning up
: the refcounts.
diff: www.parrotvm.org/svn/parrot/revision?rev=32921
Coke starts to convert half a dozen different things to C and throws it all out since he doesn't know what's actually slow. 04:37
04:41 apeiron joined
GeJ is there a known problem with parrot being built by 'root' ? 05:27
dalek r32922 | allison++ | pdd22io_part2: 05:42
: Creating second branch for I/O PDD implementation.
diff: www.parrotvm.org/svn/parrot/revision?rev=32922
r32923 | allison++ | pdd28str_part1: 05:43
: Creating branch for the first-round strings refactor.
diff: www.parrotvm.org/svn/parrot/revision?rev=32923
r32924 | pmichaud++ | lex4: 05:48
: Revert the custom traces added in this branch.
diff: www.parrotvm.org/svn/parrot/revision?rev=32924
06:14 Infinoid joined
Andy perlbuzz.com/2008/11/parrot-10-will...-2009.html 06:22
06:27 Theory joined 06:30 ff-wonko joined
GeJ When parrot is built by the root user, I'm seeing a failure on t/pmc/exceptionhandler.t 06:33
whether the test is run by root or another user. 06:34
But on a regular user build, the same test run successfully (by either root or the normal user) 06:35
nopaste?
purl nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others)
clunker3__ pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
06:39 silug joined
nopaste "GeJ" at 202.22.227.160 pasted "tests failures depending on the user building parrot" (40 lines) at nopaste.snit.ch/14645 06:39
bacek_ rakudo: say ?all() 06:50
polyglotbot OUTPUT[Junction<0xb71720e4>␤]
bacek_ rakudo: my $a=all(); say ?$a
polyglotbot OUTPUT[Junction<0xb719d594>␤]
bacek_ rakudo: my $a=all(1); say ?$a
polyglotbot OUTPUT[Junction<0xb716c33c>␤]
pmichaud I think polyglotbot is out of date. 06:51
> my $a = all(1); say ?$a;
1
> my $a = all(); say ?$a;
1
bacek_ pmichaud: indeed 06:52
why '?all()' is true? 06:53
pmichaud just a guess on my part. :-)
GeJ looks like root-parrot dies in t/pmc/exceptionhandler.t line 171 06:54
07:08 uniejo joined
bacek_ pmichaud: I have stupid question: if Num is Role, should Complex ~~ Num? 07:12
particle polyglotbot: say %?VM<config><revision> 07:13
rakudo: say %?VM<config><revision> 07:14
polyglotbot OUTPUT[No handler to delete.␤current instr.: 'parrot;PAST;Compiler;as_post' pc 6052 (src/PAST/Compiler.pir:1651)␤called from Sub 'parrot;PAST;Compiler;keyed' pc 6962 (src/PAST/Compiler.pir:1859)␤... call repeated 1 times␤called from Sub 'parrot;PAST;Compiler;post_children' pc 1779
..(src/PAST/Compiler.pir:367)␤called from Sub 'parrot;PAST;Compiler...
particle duh
bedtime &
cotto who maintains polyglotbot? 07:16
moritz cotto: I think Tene does 07:18
Tene for some variant of "maintains" 07:19
but yeah
it's running as me on feather3
why?
cotto it'd be nice if it were updated more frequently
Infinoid did the update script break again?
cotto it's definitely not current 07:20
Tene I don't know. It used to work...
Infinoid I vaguely remember writing a nice update script for it at some point
Tene I haven't touched it.
No, the build is failing with: Can't locate Parrot/Configure.pm ... 07:21
purl okay, Tene.
Tene purl: forget the build
purl Tene: I forgot build
Tene I don't feel up to dealing with it tonight. Someone else want to?
Infinoid I have a moment. do I still have an account? 07:22
Tene probably
yeah
dalek r32925 | allison++ | pdd28str_part1: 07:23
: [pdd28str] Adding new directory for string-related source files.
diff: www.parrotvm.org/svn/parrot/revision?rev=32925
moritz ah, the checkout is incomplete
Infinoid nothing an rm -rf can't fix 07:24
moritz I'm doing an 'svn up' in parrot-build1 now
Infinoid svn: Can't open file 'runtime/parrot/library/Data/.svn/tmp/tempfile.3.tmp': No such file or directory
svn ate itself.
you'll probably have to fix parrot-build2 as well 07:26
moritz uhm, svn is sooo slow 07:27
pmichaud bacek: (Complex ~~ Num) I suspect not. But I defer that to p6l. 07:28
Infinoid cron just retried and refailed, but it should try again in 10 minutes 07:30
bacek_ pmichaud: thanks
Infinoid actually, parrot-build2 is probably fine 07:32
it would just keep retrying the failed one and never update the symlink
looks like it started failing on 2008-11-07
07:32 mberends joined
dalek r32926 | allison++ | pdd28str_part1: 07:33
: [pdd28str] Moving string-related source files into their own directory.
diff: www.parrotvm.org/svn/parrot/revision?rev=32926
07:33 elmex joined
Infinoid rakudo: say %?VM<config><revision> 07:50
polyglotbot OUTPUT[sh: ./parrot: No such file or directory␤]
Infinoid awesome.
mberends rakudo: say %*VM<config><VERSION> 07:54
polyglotbot OUTPUT[Parrot VM: Can't stat languages/perl6/perl6.pbc, code 2.␤main: Packfile loading failed␤]
moritz ../../parrot ../../runtime/parrot/library/PGE/Perl6Grammar.pir --output=PGE/builtins_gen.pir PGE/builtins.pg 07:55
make[1]: *** [PGE.pbc] Segmentation fault
that's on feather3
and the reason that rakudo doesn't build
Infinoid I would do a realclean and try building again, but cron will do that on its own in 4 minutes
07:58 bacek joined
cotto rakudo: say %*VM<config><VERSION> 08:02
polyglotbot OUTPUT[Parrot VM: Can't stat languages/perl6/perl6.pbc, code 2.␤main: Packfile loading failed␤]
Infinoid rakudo: say %?VM<config><revision> 08:08
polyglotbot No output (you need to produce output to STDOUT)
Infinoid rakudo: say 1 08:09
polyglotbot No output (you need to produce output to STDOUT)
dalek r32927 | allison++ | pdd28str_part1: 08:11
: [pdd28str] Auxillary changes for new location of strings source files.
diff: www.parrotvm.org/svn/parrot/revision?rev=32927
r32928 | allison++ | pdd28str_part1: 08:14
: [pdd28str] Move svn:ignore property for generated header to new directory.
diff: www.parrotvm.org/svn/parrot/revision?rev=32928
jimmy rakudo: %*VM<config><osname> 08:18
polyglotbot No output (you need to produce output to STDOUT)
jimmy rakudo: say %*VM<config><osname>
polyglotbot No output (you need to produce output to STDOUT)
jimmy rakudo: say %?VM<config><osname>
polyglotbot No output (you need to produce output to STDOUT)
jimmy rakudo: say %*VM<config><VERSION> 08:19
polyglotbot No output (you need to produce output to STDOUT)
jimmy rakudo: say STDOUT %*VM<config><VERSION>
polyglotbot No output (you need to produce output to STDOUT)
moritz jimmy: polyglotbot is currently broken. no need to exercise that ;) 08:20
jimmy god!
moritz the one in #perl6 works 08:21
jimmy ok ,thanks
nothing 08:22
in #perl6 :(
moritz #perl6 on freenode, that is
jimmy i thought it's on irc.per.org 08:23
moritz well, it's not.
jimmy why not?
moritz dunno. probably historical reasons. 08:24
jimmy rakudo: say %*VM<config><osname> works now.
polyglotbot No output (you need to produce output to STDOUT)
dalek r32929 | chromatic++ | trunk: 08:49
: [GC] Undid r32841, which made the concurrency scheduler a constant PMC. During
: global destruction, its children could get collected, moving the segfault to
: another place. Instead, now global PMC destruction unmarks all live flags,
: then marks the Scheduler as live and calls its own mark entry before collecting
: all remaining PMCs. Then it collects the Scheduler and its kids.
: This works, and it's an idea for order-of-destruction freeing code.
diff: www.parrotvm.org/svn/parrot/revision?rev=32929
chromatic Roll on, generations. 08:51
09:08 masak joined 09:09 iblechbot joined 09:11 tomyan joined 09:15 alvar joined
cotto Hmm... a "Linux Porgammed" job. seattle.craigslist.org/est/sof/925555330.html 09:24
masak spelling is hard! let's go shopping. 09:25
cotto as is describing the position, apparently 09:26
masak cotto: I read it as "we need someone who makes coffee for us". 09:27
cotto I read it as "run away or you'll end up posting to tdwtf". 09:30
masak why? what could possibly go wrong? it's just a regular "Linux Porgammed" job. :P 09:34
lathos Linux pogromming. 09:35
szbalint so it's a cubicle job? 09:37
cotto tdwtf? 09:41
szabgab sorry to disturb the chat but I have another innocent looking question. What's going on the Perl 5 on Parrot thing?
cotto tdwtf is thedailywtf.com/
purl, tdwtf is thedailywtf.com/
purl i already had it that way, cotto.
cotto then say something to acknowledge it
masak szabgab: good question. I'd like to know, too. I don't see much activity at all here on #parrot in re Perl 5 support. 09:42
moritz szabgab: to the best of my knowledge `ponie' is long dead, and no new attempt was started yet
(though Daniel Ruoso started to integrated SMOP with p5) 09:43
masak moritz: do you know _why_ ponie is dead?
szabgab I thought SMOP was about running perl 6 on perl 5 :-) 09:44
moritz szabgab: not quite.
masak: that was before my time, so to say... 09:45
masak heh.
arguably, implementing Perl 5 on Parrot is less intriguing than implementing Perl 6 on Parrot. 09:46
moritz I think it became quite clear that Perl 5 cannot be reasonably re-implemented
masak that's interesting.
why not?
moritz and at that time parrot wasn't advanced enough for cooperative integration
masak: because it's a bug ridden heap of implementation details that nobody can recreate without crying badly 09:47
masak moritz: tests.
moritz masak: if you don't know what I mean, just look at toke.c and the parser
masak I know what you mean.
I realize it's hard. 09:48
moritz "nothing but perl can parse Perl. Not even ponie."
szbalint no wonder perl 5's spec is the implementation
s/perl 5/Perl 5/
masak I hope someone gives it another shot. 09:49
moritz masak: I see no real benefit. Incorporating parrot and perl5 runloops seems much more doable than rewriting Perl 5 on top of parrot
09:50 barney joined
masak moritz: perhaps. 09:50
what's blocking the :g adverb in .subst ? 09:54
rakudo: class A { has $.a is rw = "OH HAI!" }; say A.new.a 09:57
polyglotbot No output (you need to produce output to STDOUT)
masak also, what's blocking the above?
jimmy Is perl6 compatible with perl5? 09:59
Or will is it? 10:00
masak jimmy: no, not in any useful sense.
jimmy: it's similar, but not compatible.
10:00 ff-wonko joined
jimmy how were there perl5 codes? 10:01
s/there/these/
masak jimmy: please rephrase the question. I don't understand.
jimmy hmm. 10:02
perl5 ēš„ä»£ē ę€Žä¹ˆåŠžļ¼Ÿ
masak ah. 10:03
jimmy: Perl 5 source code will still work.
jimmy on parrot?
masak the question of how to run it on Parrot is still open.
I hope it will at least be compatible in the way moritz specified. 10:04
(i.e. Parrot calls Perl 5 in some hopefully not too wasteful way)
jimmy yes, one way is to change perl5 to perl6,and other way is that perl6 should be comateble with perl5
i means codes written in perl5. 10:05
masak jimmy: I know TimToady has been working on an automatic p5->p6 converter
jimmy: Perl 6 is explicitly not compatible with earlier Perls. it's a clean break from tradition in many ways. 10:06
often with good cause. :)
jimmy It'is difficult to do that.
masak jimmy: aye. 10:07
jimmy so many CPANs
It is almost impossible. 10:08
masak jimmy: oh, I definitely think that most CPAN modules will be useable from Perl 6.
at least I strongly hope so.
jimmy aye, me too.
masak in our Perl 6 wiki project, we're reinventing the wheel a bit right now because we don't have access to CPAN from Perl 6.
jimmy though my job is using php.
masak ...from Rakudo, I should say.
jimmy: ok. 10:09
jimmy Rakudo, i think this words is ugly. 10:10
:(
masak jimmy: what do you think about Japanese in general? if you don't mind me asking. 10:11
jimmy I know nothing about it.
masak jimmy: did you know that 'Rakudado' means 'the way of the camel'? and that one meaning of 'rakduo' is 'paradise'? 10:12
jimmy why not english?
I know it ever from wiki at perl.org 10:13
Japanese is not widely used. 10:14
masak jimmy: I think the above two meanings settled the name choice for most people.
jimmy: it is in Japan. :)
jimmy perl6 is not just for Japan, I think.
masak jimmy: seriously though, it's just a name of an implementation. the full nae is 'Rakudo Perl 6'. 10:15
s/nae/name/
cotto no, but it's hard to find interesting names with English meanings.
jimmy lutuozhilu in chinese means 'the way of the camel'. :) 10:16
masak :)
jimmy sorry. luotuozhilu
10:16 dalek joined
masak 'luotuo'. cute. 10:17
jimmy luotuo means camel. and zhi means of, lu means way.
masak yes.
(though 'zhi' cannot mean 'of'. it means the opposite of 'of'.) 10:18
jimmy so I think good name should be from wildly used language.
masak jimmy: s/wildly/widely/
:P 10:19
jimmy masak: zhi means ēš„,
cotto I dunno. English is pretty wildly used.
masak jimmy: exactly. and ēš„ means "'s", not "of"
jimmy sometimes 'of' is the same meaning.
such sa bank of china.
that means äø­å›½ēš„é“¶č”Œ 10:20
masak jimmy: no. "A 'zhi' B" means "B of A"
jimmy yes
masak jimmy: so it means the opposite of 'of'. :)
the inverse.
purl i heard the inverse was defined for mappings.
jimmy hmm. no, no, no...
masak purl: forget the inverse.
purl masak: I forgot inverse
masak jimmy: yes, yes, yes...
cotto It's like "no" in Japanese. 10:21
masak cotto: aye.
jimmy it is differentiated by the grammar .
not by the meaning.
it's not the same.
it's different grammar from english and chinese . 10:22
but it's the same meaning . 10:23
sorry , should say between and
masak cotto: you know japanese?
GeJ is lathos still in .jp? 10:24
cotto only a little from college
masak cotto: ah. cool.
masak is studying Mandarin
cotto I though about Chinese, but it scared me. 10:25
I have to have something phonetic.
masak hm, aye.
there's a bit of memorising involved, to be sure.
jimmy hmm, actual ,it's not difficult . 10:26
cotto It was fun to practice the kanji.
masak jimmy: not sure you have an objective viewpoint in the matter. :)
cotto I'd say the same about English, but I know it's a lie.
masak jimmy: but you're right, once you know the characters, reading is no more difficult than with an alphabet. 10:27
jimmy yes, phonetic sometimes is difficult .
just like english
masak www.pinyin.info/readings/texts/moser.html
jimmy: no, not 'just like english' :) 10:28
jimmy it's be speaking very fast .
it's difficult to chinese people
masak jimmy: the problem is mutual. 10:29
jimmy such as phonetic is difficult to you .
yes. we studied phonetic in grade one
spent a year
i does not say mandarin when i was a child . 10:31
s/say/speak/
I speak native dialect.
masak jimmy: I suppose that's the case for many Chinese.
Mandarin is like the English of China. 10:32
jimmy yes. sometimes it is very different from mandarin .
cotto jimmy, where are you in China?
jimmy and national dialect is not the same between cities. 10:33
cotto: I am working in shenzhen.
so most times , we speak mandarin . 10:34
masak jimmy: are there many people speaking Cantonese in Shenzhen? 10:36
jimmy yes, but in shenzhen , it 's many
err. not many
masak so... "no"?
jimmy and not a little .
may well say so. 10:37
masak jimmy: this interchange left me confused.
jimmy some area speak Cantonese 10:38
masak ok. 10:39
I have to go now, I finally found my studying partner.
nice talking to you.
jimmy goodbye. 10:40
purl breaks out into "So Long, Farewall" from "The Sound of Music"
10:52 flw joined 11:46 tomyan joined 11:48 register joined
dalek r32930 | bernhard++ | trunk: 12:09
: [Pipp] Add some notes WRT namespaces
diff: www.parrotvm.org/svn/parrot/revision?rev=32930
12:29 masak joined 12:45 TiMBuS joined 12:57 rob joined 13:00 jimmy joined, flw joined
jimmy hey flw. 13:00
flw jimmy: hello 13:01
jimmy I just join here in a minute.
flw jimmy: me too 13:02
jimmy I saw.
how about your parrot?
13:03 clunker3 joined
jimmy flw: is documentation sufficient enough for you? 13:04
13:04 AndyA joined
dalek r32931 | bernhard++ | trunk: 13:05
: [Pipp] More concise formatting of short rules
diff: www.parrotvm.org/svn/parrot/revision?rev=32931
jimmy galf: ping
irclog? 13:07
purl rumour has it irclog is irclog.perlgeek.de/parrot/today or see also: infrared clogs
dalek r32932 | bernhard++ | trunk: 13:08
: [Pipp] remove some unnecessary non-capturing groupings
diff: www.parrotvm.org/svn/parrot/revision?rev=32932
13:21 rob joined 13:24 masak joined
dalek r32933 | coke++ | trunk: 13:50
: Update example to avoid integer type ids.
diff: www.parrotvm.org/svn/parrot/revision?rev=32933
r32934 | bernhard++ | trunk: 13:54
: [Pipp] Add rule 'namespace_statement' and a dummy action.
diff: www.parrotvm.org/svn/parrot/revision?rev=32934
jimmy bernhard: there is a stdclass in php. where is the definition on pipp? 13:55
sorry, it's barney.
flw: ping 13:56
barney jimmy: I think there is no stdclass in Pipp yet
jimmy ok, thanks. I thought there should be. 13:57
barney See src/pct/actions:404 for how classes are created in Pipp 13:58
jimmy ok, thanks barney. 13:59
barney PHP-- for having namespaces, but no namespaced variables 14:01
moritz wtf? 14:02
$no\\namespaced\\variables ? :)
14:02 ff-wonko joined
masak PHP-- # for having sigils, but only for show 14:03
moritz php was designed by people who understand that Perl has only one sigil -- some quote, dunno where it came from
masak PHP is training wheels without the bike. 14:04
tnx.nl/php.html
barney \\only\\namespaced\\classes\\functions\\and\\constants 14:05
jimmy what is P6metaclass in pipp? 14:06
is it perl6?
barney jimmy: I don't know. I stole that part from Rakudo and it worked. 14:07
jimmy this name is for perl6
I had saw it in perl6 14:08
barney Yes, P6 indicates Perl6
masak barney: you should probably rename it.
jimmy I think it should be renamed.
i.e. Pippmetaclass
barney Sure, patches are welcome 14:09
jimmy and such as Perl6Regex
in action.pm 14:10
14:11 iblechbot joined
barney jimmy: there I want to use PGE::Perl6Regex as the compiler 14:11
jimmy Ok, I will do some changes if I have some spare time, if i can understand what is it. 14:12
barney: got you. 14:13
barney jimmy: P6metaclass is defined in runtime/parrot/library/P6object.pir 14:17
jimmy hmm. actully, I am using friend's computer and I have no env. 14:18
s/actully/actually/ 14:19
pmichaud P6object (and P6metaclass) are the things that give Perl 6-like behaviors to objects.
they're needed for PGE and PCT.
other languages aren't likely to expose them to the user. (Even Perl 6 doesn't expose them.) 14:20
they're not really part of "Perl 6", which is why it's named "P6..." instead of "Perl6..."
jimmy I saw them in perl6 and I thought it is a name for perl 6. 14:21
pmichaud the Perl 6 compiler uses them as well, yes.
anything based on the Parrot compiler toolkit uses them.
jimmy some codes does the same thing in runtime and src. 14:22
such as string_to_num
or num_to_string.
former uses pir and another uses c 14:23
and i was confused. 14:24
Coke lathos: ping 14:25
lathos pong 14:26
Coke lathos: you have very old versions of parrot on CPAN; can you remove them? 14:28
(VERY)
lathos Sure 14:29
Coke whee!
(another ticket we can close out.)
rt.perl.org/rt3/Ticket/Display.html?id=55578
if anyone is bored, we could use a few trac tickets to remove version of parrot older than 0.7.0 (probably one for each person who has them published) 14:30
lathos Done.
jimmy btw: thanks pmichaud. 14:33
Coke lathos++
dalek r32935 | pmichaud++ | lex4: 14:35
: [gc]: When freeing a context, be sure we release its outer contexts.
diff: www.parrotvm.org/svn/parrot/revision?rev=32935
masak lex4??
pmichaud I start a new branch when I re-sync from trunk.
masak ah.
pmichaud also, all of the tests are passing in the lex4 branch. :-)
so we're close.
masak we're close! \\o/ 14:36
14:36 AndyA joined
masak I don't have champagne, but I have a Calpis soda that I can open, once we're merged. 14:37
pmichaud I'm expecting to be able to merge today.
masak :D
pmichaud I just need to make sure we're actually freeing up unused contexts -- otherwise we'll have big memory leaks.
Coke is lex4 in a state where I can test tcl ?
(not that I think it will affect me much at all.() 14:38
pmichaud Coke: should be, if you don't run out of memory.
you might wait one or two more commits from me for that.
14:39 gryphon joined
dalek r32936 | bernhard++ | trunk: 14:42
: [Pipp] Add two TODO tests for namespaces.
: Document planned divergences.
diff: www.parrotvm.org/svn/parrot/revision?rev=32936
r32937 | pmichaud++ | lex4: 14:46
: [GC]: Remove obsolete Parrot_dup_context; it was only used from sub.pmc
: as a premature optimization, and it's no longer significantly faster
: than Parrot_alloc_context.
diff: www.parrotvm.org/svn/parrot/revision?rev=32937
Coke pmichaud: workds fine. 14:48
Coke wonders if this [lsort] oddness will ever be fixed.
jimmy rakudo: <ok>.say 14:50
polyglotbot No output (you need to produce output to STDOUT)
masak oh, there used to be a Perl 6 implementation on Parrot called Onion?
or was that just a project name for Rakudo? 14:52
Coke it was a suggestion. 14:53
it made patrick's eyes water.
14:54 silug joined
pmichaud I kinda liked "Onion", but decided it might be too confusing. It wasn't the "perfect name". 14:56
it was the leading suggestion for what to rename "perl6" until we found "Rakudo".
masak I see. 14:57
jimmy hey masak, is there any photo on your blog. 15:01
masak jimmy: not that I know. what are you looking for, more exactly? 15:02
jimmy a photograph about me :) 15:03
dalek r32938 | pmichaud++ | lex4:
: Refactor Parrot_alloc_context so (1) we don't need the init flag and
: (2) contexts _always_ get initialized. I don't like the potential for
: uninitialized contexts.
diff: www.parrotvm.org/svn/parrot/revision?rev=32938
jimmy s/me/you
masak jimmy: hold on.
jimmy: www.flickr.com/photos/komponisto/28...179072233/ 15:04
jimmy got it, that's you? 15:06
masak that's me.
jimmy masak: i lost my photo http address. 15:10
masak jimmy: I'm sure it'll show up again soon.
jimmy yes.
15:12 iblechbot joined
lathos Something about that conversation reminds me of Waiting For Godot. 15:13
masak lathos: :)
Coke do we need meta-tickets on trac or is there some kind of keyword we can use to track things. 15:16
yah, there's a "keywords" section. Can we just mark all keywords with "GC" and not need meta tickets? 15:17
(er, for the new GC meta ticket)
jimmy where is the svn address about perl5? 15:19
coke: will parrot's svn be moved to parrot.org such as svn.parrot.org? 15:20
Coke jimmy: www.perlfoundation.org/perl5/index....positories
jimmy: yes, svn is going to move at some point.
jimmy and perl6 will be svn.perl.org and parrot will be svn.parrot.org and pipp will be svn.pipp.org, or git? 15:21
Coke pipp is on its own. 15:23
partcl, for example, is at googlecode. 15:24
depends on where pipp goes for hosting.
jimmy web git is so ugly.
mberends jimmy: have you followed the links from dev.perl.org/perl5/source.html ?
jimmy yes, i didn't find git address. 15:25
or svn address.
Coke I don't think perl5 has svn. 15:26
it's been in perforce for ages.
particle but will be on git shortly
jimmy so will be parrot?
Coke no. perl5 is a separate effort.
particle we have no plans to move to git 15:27
jimmy aye.
Coke I'm not opposed to such a thing, but would rather spend cycles writing code.
jimmy yes.
actually, i like svn web ui. 15:28
including trac. 15:29
PerlJam form over functionality is often how it goes.
jimmy i means that web ui for svn.
15:36 gryphon joined
tewk_ 15:38
dalek r32939 | coke++ | trunk: 15:39
: Resolve RT #57428 by removing any core usage of ".HLL 'foo', 'bar'"
: The syntax is now:
: .HLL 'foo'
: .loadlib 'bar'
diff: www.parrotvm.org/svn/parrot/revision?rev=32939
Coke 45+596 15:41
purl 641
masak 010+010
purl 16
masak hehe.
I'm glad that's going away in Perl 6. 15:42
rakudo: say 010 + 010 15:43
polyglotbot No output (you need to produce output to STDOUT)
masak polyglotbot: I did produce output to STDOUT! That's what 'say' does.
moritz masak: polyglotbot's copy of parrot is b0rked
masak I recognize this. didn't the same happen the other day with Pugs?
moritz masak: see #perl6, rakudo even warns 15:44
masak who actually does all the b0rking behind the scenes?
moritz parrot itself 15:45
purl i guess parrot itself is modular wrt sets of ops, right DrForr?
tewk_ Who was working on SQLite?
masak purl, forget parrot itself
purl masak: I forgot parrot itself
particle tewk_: lathos
the code is in ext/
Coke ponders the difference between ext/ and, say, runtime/parrot/ext 15:50
Coke prepares to kill :lexid 15:51
Infinoid tests 32-bit on 64-bit builds 16:00
Coke chromatic++ # || testing.
dalek r32940 | pmichaud++ | lex4: 16:07
: Refactor/clean up context reference counting. (1) mark_context() now
: complains (via an exception) if it's asked to mark a context with a
: negative reference count. (2) Parrot_free_context() forces any
: context placed for recycling to have a negative reference count.
: We now have a few failures, indicating that contexts are being
: prematurely recycled somewhere.
diff: www.parrotvm.org/svn/parrot/revision?rev=32940
Coke running || test, t/pmc/filehandle.t and t/pmc/eval.t failed. 16:10
(run --, they both pass) 16:11
16:17 jq joined
dalek r32941 | coke++ | trunk: 16:21
: Resolve RT#60592 ; rename :lexid to :subid
: change docs, PIR syntax, and internal C structure that housed the data.
diff: www.parrotvm.org/svn/parrot/revision?rev=32941
Coke pmichauds, 640
(of course, that doesn't count trac.) 16:22
particle t/pmc/filehandle.t is the new io impl tests 16:23
moritz and it passes here. YaY.
Coke particle: I know what it is; i'm saying it might not be ||-test safe. 16:24
particle coke: i know what you're saying; i figured you might not know what it is :) 16:25
dalek r32942 | pmichaud++ | lex4: 16:26
: Parrot_pop_context probably should not force context removal.
diff: www.parrotvm.org/svn/parrot/revision?rev=32942
r32943 | pmichaud++ | lex4:
: After freeing a context via Parrot_free_context, make sure we
: don't inadvertently use (or free) it again.
diff: www.parrotvm.org/svn/parrot/revision?rev=32943
pmichaud time for lunch for me. If anyone wants to try "make test" in the lex4 branch that might be helpful. Currently I get three test file failures. (Probably no point in trying Rakudo's make test until Parrot's core tests are running.) 16:27
Coke whiteknight? 16:31
purl whiteknight is updating the book. It talks about .pragma fastcall, pushing and popping arguments onto the user stack, etc
Infinoid is there any particular rule about whether codingstd tests should be written for stuff PDD07 says "should" be the case, as opposed to "must" be the case? 16:35
moritz pmichaud: building lex4 branch dies here with "Bug: Attempting to mark dead context 9a74870" 16:36
Coke Infinoid: I'd go for 'don't bother'
particle Infinoid: unless they're todo tests expected to fail, but with informative messages
it's not the highest priority, for sure
moritz pmichaud: the stack trace says it's from "current instr.: 'parrot;PGE;Perl6Grammar;Compiler;regex_stmt' pc 615 (/home/moritz/tmp/lex4/runtime/parrot/library/PGE/Perl6Grammar.pir:316) 16:37
Infinoid particle: in the RT for that test, kid51 brought up an interesting point, which is that t/codingstd/fixme.t already does a reasonable subset of what we want to do.
but after reading PDD07, I'm not sure why we don't just extend it to search *all* parrot sources, not just the C stuff. 16:38
particle Infinoid: yes, i figured you'd modify that existing test
Infinoid it can fail if it finds any fixme/todo/xxx/whatever without finding a mention of a ticket nearby (within a couple lines, I guess)
I problem is, the PDD only says "should", so I was wondering if I'm being too anal. 16:39
Coke hell, I'd make it same line.
particle on the same line or the preceding line seems a good first try
dalek r32944 | Whiteknight++ | trunk:
: [examples/tutorial] Minor updates and improvements to the first 10 tutorial files.
diff: www.parrotvm.org/svn/parrot/revision?rev=32944
Infinoid okay. as long as I don't need to do any language-specific parsing tricks, I'm happy
particle start simple. get it working with the current code.
fix those, then expand to search more code 16:40
Infinoid will do, thanks 16:41
particle pmichaud: re r32943: why don't you put the = NULL in Parrot_free_context, instead of setting it afterwards? and why NULL in one spot and 0 in the other? 16:48
also, it's time to add #defines for the context-related magic numbers 16:49
i'll do that after i know things have settled down a bit and i don't step on your commits
also, three test file failures: t/compilers/pge/pge_examples.t t/library/streams.t t/stm/queue.t, all attempt to mark dead context 16:50
masak pmichaud: gist.github.com/27102 -- `make test` on the lex4 branch 16:57
17:03 mdxi joined
Coke isn't there a standard syntax for trac issue numbers? "issue 54", or something? 17:03
jonathan #54 IIRC 17:04
Coke then I'd just go with #54 and add a prefix "RT " to disambiguate. 17:05
(disambiguation not required for any tests)
PerlJam trac#54 is a tad more explicit for the humans :)
dalek r32945 | Whiteknight++ | trunk: 17:07
: [src/ops] Remove mention of user stacks from the sprintf opcode-level documentation.
diff: www.parrotvm.org/svn/parrot/revision?rev=32945
particle trac:54 or #54 17:09
17:10 jan joined
dalek r32946 | coke++ | trunk: 17:17
: pick a last guaranteed release for "$S1 = print"
diff: www.parrotvm.org/svn/parrot/revision?rev=32946
Coke RT#60048 (remove two files in src/) started with testC failures I cannot duplicate. we still removing those 2 files?
17:22 tomyan left, sjansen joined
pmichaud particle: (put null in Parrot_free_context) .... how exactly would I do that? 17:27
you mean pass the argument by address? Ick.
you're correct, the second one in #32943 should be NULL. 17:28
dalek r32947 | pmichaud++ | lex4: 17:30
: Use NULL for pointer instead of zero (particle++)
diff: www.parrotvm.org/svn/parrot/revision?rev=32947
moritz still gets his "Bug: Attempting to mark dead context 96393a8" error while building nqp 17:31
pmichaud moritz: likely. The reference counting is really fragile. 17:32
(in trunk, too.)
masak refcounting--
pmichaud either that or I'm _completely_ misunderstanding how contexts work in trunk. (also likely.)
it seems odd to me that we can force recycling of a context even when there may be other items referencing that context. 17:33
moritz: what platform are you on? 17:35
pmichaud decides to try a little experiment. 17:37
dalek r32948 | pmichaud++ | lex4: 17:40
: Refcount a coroutine's current context.
diff: www.parrotvm.org/svn/parrot/revision?rev=32948
17:43 Theory joined
Coke src/interpreter.c refers to a LOT of the PIC functions. 17:46
particle pmichaud: Parrot_free_context(PARROT_INTERP, ARGMOD(Parrot_Context *ctxp), int re_use) 17:49
notice the context pointer is modifiable
oh! nm
pmichaud is that saying that the context pointer is modifiable or that what it points to is modifiable?
dalek r32949 | infinoid++ | trunk:
: [CAGE] Remove a trailing space.
diff: www.parrotvm.org/svn/parrot/revision?rev=32949
particle # define ARGMOD(x) /*@in@*/ /*@notnull@*/ __inout x 17:50
tewk_ particle: C always passes args by copy, you would have to pass Parrot_Context **ctxp to do what you want.
pmichaud in order for me to modify the *pointer* itself, I'd have to.... what tewk said.
and then change all of the calls to Parrot_free_context(...) to put & in front of the argument. 17:51
particle if (cc->from_ctx)
Parrot_free_context(interp, cc->from_ctx, 0);
cc->from_ctx = NULL;
moritz pmichaud: i386 32bit linux
particle i'm arguing that can be replaced with:
Parrot_free_context(interp, cc->from_ctx, 0);
*if* the = NULL is done within Parrot_free_context
pmichaud you mean all three lines can be replaced? 17:52
particle yes
pmichaud how would cc->from_ctx be set to NULL, then?
tewk_ cc->from_ctx is and address. that address is copied onto the stack when passed to Parrot_free_context
pmichaud it would have to become
Parrot_free_context(interp, &cc->from_ctx, 0);
tewk_ = NULL inside Parrot_free_context would null out the copy on the stack not cc->from_ctx 17:53
particle yeah, i was thinking ARGMOD_NULLOK() would fix that, but it doesn't
yep, sorry
pmichaud I could get rid of the (if), though.
probably not worth it.
tewk_ Yep, This is a very tricky semantic of C 17:54
particle the stm failure is in the clone opcode 17:55
17:55 ff-wonko joined
particle i looked through the calls, but can't find where there's any contexts involved 17:55
nopaste "pmichaud" at 72.181.176.220 pasted "this one really worries me." (8 lines) at nopaste.snit.ch/14648 17:56
pmichaud looking at stm now.
Infinoid in lex4 branch, I'm seeing the same dead context failures particle mentioned earlier 17:57
there are 2 additional ones, t/compilers/pge/pge_examples.t and t/compilers/tge/basic.t, which fail with "perl t/harness --gc-debug --running-make-test" but not with "prove"
those are also dead context crashes. 17:58
pmichaud when I port my "marking dead context" snippet into trunk, t/library/streams.t also fails.
(it's fixed in lex4, r32948, though.)
the --gc-debug flag seems to evoke the failurs. 17:59
failures.
purl failures are wierd; dying on a call that works in the 00 file.
pmichaud purl, forget failures
purl pmichaud: I forgot failures
Coke who is going to invoke the lemurs? that's what I want to know.
PerlJam Coke: I like to move it, move it. 18:00
Coke PerlJam: ... I will kill you slow.
(fortunately, I know that song from DDR, not the animated movie)
PerlJam Coke: I'm already dying a really slow death.
Infinoid -OREALLY 18:01
PerlJam barring advances in technology to prolong life, I should be dead in about 80 or so years. 18:02
Coke PerlJam: my work here is finished. AND SO ARE YOU! 18:03
dalek r32950 | coke++ | trunk:
: Add a cagey makefile target to help track down deprecation warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=32950
r32951 | Whiteknight++ | trunk: 18:05
: [example/tutorial] Update the next 10 files, skipping lesson 40 that deals with IO (since the IO system is being rewritten right now and the syntax and semantics of this example are subject to change).
diff: www.parrotvm.org/svn/parrot/revision?rev=32951
18:06 contingencyplan joined
Coke particle: can you remove 0.6.1 from CPAN? 18:07
pmichaud: can you remove 0.5.3 from CPAN?
jonathan: can you remove 0.5.1 from CPAN?
msg barney can you remove 0.6.4 and 0.6.0 from CPAN? 18:08
purl Message for barney stored.
particle can i? sure. will i? ...
Coke seen rgrjr?
purl rgrjr was last seen on #parrot 204 days, 22 hours, 36 minutes and 40 seconds ago, saying: thx. [Apr 29 19:32:08 2008]
Coke msg jonathan can you remove 0.5.1 from CPAN? 18:09
purl Message for jonathan stored.
pmichaud Scheduled for deletion.
18:09 Zaba joined
particle i also deleted Bundle::Parrot 0.4.13.2 18:10
Coke thanks, guys 18:12
pmichaud okay, I think the problem with stm/running.t in lex4 is the ParrotThread PMC.
Unfortunately I have absolutely no clue how to deal with it.
particle ah. hrmm. 18:13
actually, i get the error in t/stm/queue.t
pmichaud probably the same issue -- different test.
particle yep
same with pge
pmichaud well, I'm not sure what the issue is for pge yet.
PerlJam cd
oops 18:14
particle well, i get the error in a different test than you, with a different trace
pmichaud but I really don't know how to deal with context creation/deletion in the face of multiple threads.
or, I should say, refcount management.
particle everything above 'parrot;PGE;Exp;compile' differs
18:15 Theory joined 18:16 Theory joined
pmichaud Hmmm. Maybe.... 18:18
while I'm waiting for "make test" to do its thing... anyone have any good strategies for detecting context leaks? 18:20
Infinoid CTX_LEAK_DEBUG sounds like a really good idea... too bad it doesn't do anything. 18:24
pmichaud with debug 0x80 it gives a lot of messages about context creation/recycling. 18:25
Infinoid oh, cool
pmichaud I guess I could trap the messages and see how many contexts are being created but not released.
particle would valgrind help? 18:26
pmichaud oh, I had forgotten about valgrind.
particle hello world is leak free
pmichaud I don't know how to use valgrind yet. 18:27
particle search the log, chromatic frequently pastes his cmdline
or, i bet there's a wiki page
Infinoid <@chromatic> alias vgp='valgrind --suppressions=/home/chromatic/dev/parrot/tools/dev/parrot.supp --num-callers=500 --leak-check=full --leak-resolution=high --show-reachable=yes parrot --leak-test' 18:28
jonathan Somebody remind me where the info on where to send Hague Grant proposals is?
Infinoid you can skip the --suppressions part
jonathan Coke: Scheduled for del 18:29
Infinoid t/compilers/imcc/imcpasm/opt0_6.pir is the simplest PIR test file I can find. I ran valgrind on it, and it found a leaked context 18:30
nopaste "Infinoid" at 96.238.213.50 pasted "leaked context" (33 lines) at nopaste.snit.ch/14651 18:31
Coke jonathan++
particle jonathan: send them to me and patrick for review ;)
jonathan: or send directly to rdice@perlfoundation
jonathan particle: I ran it by Patrick at summit, forgot to show you it, sorry
Coke if you send it to particle, he might just cross your name off and write his in crayon!
jonathan But will CC it to you when I send it. 18:32
particle fab.
jonathan Coke: Yeah, I was scared of that ;-)
pmichaud (I can do another review, too.)
jonathan pmichaud: Before I send it to Richard, or cc'd in?
pmichaud jonathan: either way, as you wish.
particle yeah, rdice may request changes before final approval anyway 18:33
jonathan Yes.
particle you'll need to think about a grant manager
18:33 chromatic joined
particle oh sure, just because we mention chromatic's name, he thinks we'll lcare that he showed up 18:34
jonathan I wanted to get it sent in today - if the two of you can glance over it quickly today to spot any major WTFs, that'll be great.
particle: Do I have to choose one?
particle no, you and richard will agree on a candidate to pester until they give in and say yes 18:35
jonathan Fun!
Coke looks at the release date of parrot-0.0.1
(a day later on CPAN than it is in the hist) 18:36
we don't have a pumpkin. someone should update parrothist.pod
particle pmichaud: note, my failing test output for stm says: # Failed test 'Single-threaded case' 18:40
pmichaud particle: do you get a "attempt to mark dead context" message at all? 18:41
particle yes
current instr.: 'parrot;STMQueue;fetchHead' 18:42
called from Sub 'parrot;STMQueue;main'
pmichaud I'm looking at pge_globs now, since I'm more familiar with it.
particle ok, i'll continue to look at stm 18:43
pmichaud oh, I'm curious if stm runs with -G.
Coke isn't stm experimental and going away? 18:44
pmichaud that would be fine with me also. 18:45
jonathan pmichaud: Have you a non-pobox address? 18:46
(email)
pmichaud jonathan: yes. 18:47
jonathan Can you /msg me it?
particle rt.perl.org/rt3/Ticket/Display.html?id=36250
jonathan particle,pmichaud: Sent proposal to the two of you 18:48
pmichaud jonathan++
particle jonathan: D4. handles could use ""s 18:50
Infinoid uh. RT #46191 got closed, yet the comment still exists. And it looks really urgent, it has 3 exclamation marks.
pmichaud Infinoid: it's gone in the lex4 branch. :-) 18:51
Infinoid funny, I'm looking at the lex4 branch
pmichaud oh, maybe I didn't commit that change.
I've had to back up a few times.
Infinoid ok
I've been taking a quick stab at using accessor functions for the refcount, because it seems like there are some places which take a reference but don't announce themselves in the debug log, when I came across that. 18:52
pmichaud I thought about doing that.
Infinoid probably a horrible idea for production, but I figured it might help with debugging 18:53
18:53 vhold joined
pmichaud the only references that (currently) get refcounted are ->ctx and ->outer_ctx in Sub, and ->outer_ctx in contexts. 18:53
at least that's all that I remember at the moment. 18:54
Infinoid: are you looking at leaks or the dead context mark issue?
Infinoid leaks
pmichaud okay. 18:55
chromatic Infinoid, make it a macro?
jonathan particle: Thanks, added
Infinoid well, so far it's an inline function, same thing but the type checking is a little nicer.
but that means I can't breakpoint it
chromatic True.
pmichaud I'd make it a non-inline function for debugging. 18:56
so that you can breakpoint it. That's useful.
Infinoid this comment in core.ops is fun: "We might return here after handling the exception, so mark the current context appropriately."
"might"? is the other case handled too?
pmichaud I've found lots of "fun" comments.
here's my favorite so far:
trunk src/pmc/sub.pmc:274 18:57
/* reference counting should work */
context->ref_count++;
Patterner Quantum Parrot.
chromatic Hey, I know that guy!
Infinoid agrees wholeheartedly
pmichaud ..."should work"? Unfortunately, I can't even tell what reference is being counted. :-( 18:58
18:58 barney joined
chromatic That's the newly allocated context for sub invocation. 18:58
pmichaud sure, but is it the fact that sub->ctx is referencing the context that is being counted, or just the fact that it exists? 18:59
Lots of contexts get allocated for invocation that don't increase the reference count.
chromatic The fact that the Sub references it.
pmichaud okay.
In lex4 I moved the reference to immediately beneath the sub->ctx line.
Infinoid Hmm, my normal trick of making the enref accessor return the new reference, and making the deref accessor take a double pointer so it can NULL out the actual pointer, won't work here.
Seems like a lot of these references are manipulated on behalf of other code.
pmichaud Infinoid: the "deref" takes place in Parrot_free_context. 19:00
(always.)
don't really need an accessor there.
Infinoid ah, you're right. 19:01
pmichaud so, you could put a "deref" message in Parrot_free_context to note whenever we're dropping a reference.
chromatic Ahh, encapsulation. 19:02
You would have solved these problems for us.
pmichaud so, iiuc, a valgrind "leak" would occur whenever we lose the pointer to a context but failed to call Parrot_free_context with a deref flag. 19:03
Infinoid valgrind doesn't care about the reference count, it's just searching for pointers to the buffer in the task heap/stacks and not finding any 19:04
pmichaud right
I think that's what I said. :-)
chromatic I don't think that's quite true though.
pmichaud (calling Parrot_free_context without the deref flag set would mean that the context isn't put on the recycle list.)
(if the context is on the recycle list, it's not a leak.)
chromatic Did you change Parrot_free_context in one of the lex\\d branches? 19:05
pmichaud yes.
I got rid of the reuse flag and put in a deref flag
chromatic Just a rename?
pmichaud no, change of meaning also
particle jonathan: comments sent
pmichaud deref == true means to decrement the reference count
chromatic I see.
pmichaud deref == false means don't decrement reference count, but reclaim the context if the refcount is zero 19:06
chromatic Makes sense.
pmichaud there are a number of places where we create contexts or references that don't seem to up the reference count.
(not that I understand them.)
jonathan particle: My favorite part is, "i'm *so* glad i'm not responsible for this work."
Infinoid there are 31 places in lex4 that bump the refcount 19:07
jonathan You sure you don't want to scribble your name on it in crayon and send it in for yourself? ;-)
chromatic I think we need to figure out exactly what should increase and decrease the refcount and why and then check the code.
Infinoid it's going to take some staring to make sure they all have explicit derefs
chromatic Mostly because doing it the other way hasn't worked very well.
pmichaud I can pretty much vouch for the ones in src/pmc/sub.pmc, src/sub.c, src/gc/register.c
outside of that it gets a little dicey. 19:08
(and it's possible I've missed one somewhere.)
chromatic There's also Continuation and RetContinuation.
pmichaud Continuation doesn't seem to increment the ref_count . 19:09
particle hides his crayons 19:10
pmichaud the ref_count that is in src/ops/core.ops:851 was added this past week by Tene -- I don't agree with its placement. 19:14
We could get rid of it as a start -- it'll result in a dead context for resumable exceptions but that's debuggable. 19:15
19:15 Khisanth joined
pmichaud jonathan: proposal looks great to me. You should ask for more money. 19:19
jonathan particle said that too
Well, hinted at... 19:20
particle take the hint.
Infinoid I don't understand continuations at all. :( 19:21
new_continuation() stores pointers to 2 contexts but only holds a reference to one of them
Tene pmichaud: I asked chromatic if we shouldn't put it in the RetContinuation constructor instead.
Infinoid and invalidate_retc_context() walks a continuation chain, and takes a reference to every context it hits along the way
pmichaud Tene: I think it needs to go in set_pointer.
Tene pmichaud: great. I'm not attached to that patch at all.
pmichaud I figured you weren't.
Infinoid I have no idea whether those two behaviors are expected or not. 19:22
pmichaud Infinoid: it's okay to not count all references if we know the context won't be reclaimed early for the intended purpose.
and I suspect continuations fall in that group.
I started to try to keep track of _every_ reference, but that got quickly messy.
Infinoid I just care that the number of --'s match the number of ++'s 19:23
trying to figure that out is quickly becoming challenging.
pmichaud so I backed off and said "well, the existing stuff 'works', all I want to do is prevent reclaiming contexts when there's an active ->ctx or ->outer_ctx
I never could figure out why Parrot_pop_context in trunk is allowed to forcibly remove a context even if it still has active references to it. 19:24
Infinoid the problem is, since you're not trying to keep track of every reference, and I'm not familiar with the code or the work you've been doing to it, I don't know which suspicious looking code I can safely ignore 19:30
Closure.invoke() takes two pointers to "caller" but only holds one reference. 19:31
pmichaud "you're not trying to ..." the original code doesn't try to keep track of every reference either. :-)
Closure is deprecated -- it's not used at all.
Infinoid great
pmichaud I'm just trying to get something that works with minimal impact to the rest of trunk.
Infinoid my goal right now is just to get some debugging print statements whenever the refcount increases 19:32
pmichaud you can ignore closure.pmc.
Infinoid adding debugging statements won't hurt then
pmichaud correct. 19:33
if you can send me a patch for what you're adding in debugging, I can trace it also. 19:35
Coke any reason not to just delete closure in the branch? 19:37
pmichaud lua still depends on it.
Infinoid ok. I'm testing it now, if it didn't add any new failures, I want to do some additional tweaking to CTX_LEAK_DEBUG so I can get some filenames and line numbers
shouldn't take long.
that stuff will probably make my patch terribly gcc-specific... 19:38
Coke if lua is just subclassing it, you should be able to move the parent class to .Sub with no ill effects, then, neh?
pmichaud neh.
er, no.
I suspect LuaClosure is trying to do closure-specific things in the way that the old Closure PMC was doing them.
19:38 rdice joined
pmichaud (I haven't looked yet, though.) 19:39
oh, it might work.
chromatic Yeah, there's not much to it.
dalek r32952 | Whiteknight++ | trunk: 19:40
: [examples/tutorial] Updated most of the remaining files in the tutorial except 80_closure.pir (because closures are deprecated) and 90_writing_tests.pir (because I need to study up on the relevant functions a little first).
diff: www.parrotvm.org/svn/parrot/revision?rev=32952
pmichaud seems reasonable to ask if LuaClosure is even needed at all anymore, since LuaSub will inherit the proper characteristics. 19:41
er, LuaFunction.
anyway, I didn't want to mess with makefiles just yet.
if someone else wants to take closure.pmc out of the branch, that's fine with me though. :-) 19:42
Coke lex4 ?
pmichaud it also means excising all of the instances of enum_class_Closure from imcc, though.
and other places.
purl other places are not so fine
pmichaud anyway, I wanted to focus more on "get this to work" than "clean up Closure" 19:43
Coke any old refs to Closure should be subs, neh?
I can do it. removing code is easy.
pmichaud yes.
Coke I can even check out lua while I'm in there.
pmichaud I just didn't want to introduce more variables into the process until I got things to work.
(and removing references to Closure counted as "introducing more variation and things to possibly go wrong") 19:44
Coke sure. 19:45
what about Coroutine? 19:47
pmichaud that still exists.
Coke k
pmichaud afaict Coroutines have never been allowed to have :outer
although in this new implementation we can fix that. :-) 19:48
okay, here's what I've found thus far: 19:50
Coke only one usage of Closure that prevented the build. testing now. 19:51
pmichaud for the simple "noop.pir" program (main simply executes 'noop' and returns), we definitely don't call Parrot_PCCINVOKE or Parrot_pcc_invoke_sub_from_sig_object, which are the only two places we increment ref_count in src/inter_call.c
so there's a leak somewhere else.
Coke :main isn't invoked via the CC?
pmichaud I think it's a normal Sub invoke 19:52
Coke k
particle jonathan++ # sending the proposal
pmichaud looks like :main comes from runops_args
jonathan Sent!
And now, I can haz pizza. 19:53
pmichaud it's really just "invokecc $P0", I suspect.
dalek r32953 | bernhard++ | trunk: 19:55
: [Pipp] Adapt to changed .HLL directive
diff: www.parrotvm.org/svn/parrot/revision?rev=32953
r32954 | Whiteknight++ | trunk:
: [examples/tutorial] Delete 80_closure.pir, relevant test, and MANIFEST entry.
diff: www.parrotvm.org/svn/parrot/revision?rev=32954
jonathan afk for a bit 19:57
dalek r32955 | bernhard++ | trunk: 20:04
: [docs] status updates for some languages.
diff: www.parrotvm.org/svn/parrot/revision?rev=32955
Infinoid oh. took me a while to figure out that -D 0x80 doesn't work, needed to remove the 0x. 20:07
getting lots of nice debug output now
pmichaud Parrot_free_context is only being called once -- when returning from main. 20:08
(in the noop.pir program)
I'm not sure why valgrind thinks there is lost data there, though. 20:09
ah, wait. 20:10
lost my sub->ctx destructor.
nopaste "Infinoid" at 96.238.213.50 pasted "lex4 refcount debugging patch, try 1" (253 lines) at nopaste.snit.ch/14654 20:11
Infinoid I still had some misconceptions about holding a reference for every pointer to a context structure, so there are some logic changes in that. They didn't seem to change anything, but I'll clean those up.
pmichaud src/gc/register.c has incorrect debugging 20:12
we only release a reference if deref is true.
I would make the debugging part of the if (deref) ...
Infinoid fair enough.
why would you free a context without dereferencing it? 20:13
Coke should not have to update something in t/steps when i remove a pmc.
pmichaud sometimes contexts are created but don't get references.
see, for example, Parrot_push_context
Infinoid ah, partial refcounting again.
pmichaud again, it's not my approach -- that's just what I found when I got here. :-| 20:14
20:14 Hadi joined, Hadi left
tewk_ partial_refcounting-- 20:15
Coke pmichaud: i have a patch that removes closure.pmc; all tests pass, except for t/stm/runtime.t which hangs.
Infinoid well, making the refcounting full is the brute force approach, but at least it's a known amount of effort
pmichaud I tried that, but it's not always clear when we're creating a new reference.
chromatic Don't forget that any PMC which points to a refcounted context has to decrement the refcount in its destroy.
pmichaud got that already -- there aren't many PMCs that do that.
Sub, Coroutine, Exception, and perhaps the *Continuations
but basically, the PMCs are responsible for passing the deref flag to anything they chose to enref 20:16
Coke pmichaud: want me to commit?
pmichaud Coke: sure.
I have a commit also that should take care of at least one leak.
Infinoid there weren't any ref_count++'s in the *Continuation PMCs
pmichaud Infinoid: right, that's what I noticed.
there aren't that many places that we count references. 20:17
Infinoid I had temporarily renamed ref_count to __ref_count, so I'm pretty sure I caught them all
Coke pmichaud: er, core tests. I haven't done lua yet. still safe?
pmichaud Coke: I'll leave that to your judgement as project manager -- I'm not worried/interested in preserving lua.
Coke the PM position is no longer in effect. =-) 20:18
pmichaud okay, I'll rephrase then.
I'm not yet at the point of making that decision. If someone wants to make it for me, I'm happy with that. :-) 20:19
(so when someone complains, I can say "blame Coke")
Coke (already committed)
pmichaud r32956 gets rid of the leak from the noop.pir program.
it also causes PGE to not compile.
dalek r32956 | pmichaud++ | lex4: 20:20
: Release a Sub PMC's current context when it's destroyed.
diff: www.parrotvm.org/svn/parrot/revision?rev=32956
r32957 | coke++ | lex4:
: remove the [DEPRECATED] Closure PMC.
: (all tests pass except for stm, but that was dodgy anyway)
diff: www.parrotvm.org/svn/parrot/revision?rev=32957
pmichaud Coke: all tests passed for you? even the pge ones?
Coke pmichaud: yes. 20:21
hurm. I was probably on one slightly before 32956, though. 20:22
pmichaud even those were giving problems for me and particle and others.
Coke trying again...
pmichaud same here, with your patches.
Coke woof. just updated, the build is borked. Bug: Attempting to mark dead context 81cfec8 20:23
damnit.
sorry if I've complicated things.
pmichaud Coke: is that in the PGE step?
i.e., when it's trying to build PGE?
Coke doing a realclean to check. moment. 20:24
pmichaud If so, it's no problem -- my commit does that break.
I'll revert it and we'll see if we can detect more leaks.
c: would you be in favor of keeping Infinoid's ref_count++ wrapper ? 20:26
dalek r32958 | bernhard++ | trunk:
: [Pipp] Add TODO test for case insensitive namespace names.
diff: www.parrotvm.org/svn/parrot/revision?rev=32958
pmichaud I'm thinking perhaps naming it to Parrot_context_ref though. 20:27
("enref" is not a term I'm familiar with.)
chromatic It's the opposite of deref.
Tene opposite of deref
pmichaud yes, I understand that
Tene And no, I've never seen it before.
pmichaud but normally I think "grab a reference" and not "grab an enreference"
so it would be sub->ctx = Parrot_context_ref(context); 20:28
chromatic Looks fine to me. 20:30
20:30 masak joined
pmichaud ah, I wasn't sure if we were allowing mixed-case macros (coding standards), but apparently we do. Or, at least, there are quite a few already. 20:31
Infinoid I was thinking "enreference", not "grab a reference", but your name works too
chromatic PObj_free_TEST and such
dalek r32959 | pmichaud++ | lex4: 20:32
: Temporarily(?) restore ability to build PGE. Not sure why this refcount
: is needed at the moment.
pmichaud okay. I have to go pick up my son from school -- bbi30 and I'll apply that.
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=32959
pmichaud is there some clever way to get Parrot_context_ref(context) to work w/o involving the function call overhead?
oh wait, it's inline.
hrm.
I guess it really doesn't matter, since we expect to re-do contexts as PMCs at some point anyway. 20:33
Coke pmichaud: happens building TGE
... missed an update and tries again.
tewk_ inline should work out just fine. you probably wont see inlining occur without -O2
Coke that's better. 20:34
Infinoid pmichaud: you just resolved one of the logic changes I was trying to undo, thanks :) 20:35
nopaste "Infinoid" at 96.238.213.50 pasted "lex4 refcounting patch, try 2" (245 lines) at nopaste.snit.ch/14655 20:37
Infinoid oh. as for the mixed-case macros, that is a gross hack to get the file and line number, and is also probably gcc-specific. That should be ripped out for production 20:38
there are still some logic changes in new_continuation in src/sub.c, that I haven't fixed yet. I think the logic there was probably wrong. 20:41
->from_ctx is set to the interpreter's context. ->to_ctx is set to either the interpreter's context, or the context of the continuation argument passed in. 20:42
new_continuation bumped the refcount of the interpreter's context, once, but from_ctx was freed without decrementing the refcount again 20:43
(I'm looking at the Parrot_free_context calls generated by pmc2c for the *continuation PMCs, here.)
since the refcount bumping of the interpreter's context was not conditional on the non-NULLness of the "to" argument, I don't think that ref was held for to_ctx 20:44
so without knowing anything about this code, I think it either needs less refcounting, or more refcounting, and that the current lex4 code is wrong. 20:45
Infinoid updates the destroy functions in *continuation.pmc 20:49
20:50 ambs joined
dalek r32960 | bernhard++ | trunk: 20:50
: [Pipp] Add more links to namespaces.pod, fix number of tests in namespace.t
diff: www.parrotvm.org/svn/parrot/revision?rev=32960
r32961 | bernhard++ | trunk: 20:51
: [Pipp] Start with support for interfaces in the grammar,
: but don't do anything with it yet.
diff: www.parrotvm.org/svn/parrot/revision?rev=32961
chromatic We need to refcount any context that needs to stay alive because we might return to it later.
Infinoid cool, I broke PGE 20:52
particle and retcontinuations are single-use, so never incremented/decremented
right?
Infinoid is new_continuation aware of that, so it never takes the reference?
chromatic Yes and I don't know, respectively.
Tene Retcontinuation was what was causing the problem with resumable exceptions. 20:53
Coke (stayin' alive, stayin' alive)
Tene When you invoked the retcontinuation, it freed the context of the sub you were returning into.
Infinoid Coke: ha ha ha ha.
I think new_continuation needs help, either way. but it's time for me to get some $JOB stuff done first
Coke Infinoid: =-)
GeJ Good morning everyone. 21:01
masak evenin' 21:03
pmichaud back 21:05
GeJ hej masak 21:07
jonathan hej masak 21:11
masak hej GeJ, jonathan
jonathan is too jetlagged to write worthwhile code...still. 21:12
masak is writing up today's blog post
jonathan masak++ # writing stuff 21:13
moritz that reminds me, I should do some writing as well at some point
21:14 jsut|work joined
Coke sighs. 21:19
someone should merge the two versions of that ticket that got sent to the parrot and the perl6 queue. 21:20
masak jonathan: make sure you get some rest. better to have you rested than to have jetlagged code in Rakudo :P 21:21
Coke (that wasn't why i was sighing, in case that person is worried. =-)
pmichaud works on applying Infinoid++'s patch
nopaste "pmichaud" at 72.181.176.220 pasted "I'm not yet convinced of this part yet." (16 lines) at nopaste.snit.ch/14656 21:23
Infinoid yes, that's the broken bit I was ranting about, above. 21:24
pmichaud afaict, continuations never really take part in the refcount scheme, except for these little odd bits
Infinoid reverting the to_ctx line gets the same logic as before the patch
pmichaud in some sense that almost makes sense to me (that they don't refcount) -- because when a context has exited I'm not sure we can continue back to it. 21:25
Infinoid the context they referred to should be destroyed when the continuation is invoked or destroyed, unless something else also has a handle on the context 21:26
or am I misunderstanding continuations?
Coke the answer to that question is usually yes!
Infinoid in my case, doubly so 21:27
pmichaud well, if the continuation is invoked, we certainly don't destroy the context then
Coke lunchtime?
purl lunchtime is up, so Im gonna be thinking more slowly now ;)
Coke no, lunchtime is doubly so.
purl okay, Coke.
Infinoid no, you destroy the context that we just pulled the interpreter away from 21:28
... unless something else has a handle on *that* one
pmichaud for a retcontinuation we destroy the context we just left, yes.
that would make sense to me.
Infinoid does the interpreter hold a reference on the context it's currently executing within? 21:29
pmichaud no.
at least not according to the refcounts.
Infinoid is it protected in some other way?
pmichaud I presume it is.
I don't think we can have the interpreter in a context that isn't being held by at least some other object. 21:30
Infinoid sorry if I'm asking nonsensical questions... I'm just trying to understand the environment this code is in. 21:31
pmichaud again, it's not my goal to try to fix the entire context system -- just to get it working enough to support lexicals.
and I don't understand it either -- as of a week ago I couldn't have answered any of this.
I almost abandoned the whole effort last night because of the mess with continuations.
"mess" == "it doesn't make sense to me" 21:32
Infinoid if what you say is true, and that continuations shouldn't have to bother with references at all, then the ref++ I changed in my patch should just be removed
pmichaud (which might be for a variety of reasons)
Infinoid the one in src/sub.c:new_continuation(), I mean
pmichaud I took it out.
Infinoid ok
pmichaud it still has the old code until we can figure it out a bit better.
Coke is the parrot.org wiki in svn now? 21:33
pmichaud we're targeting C89, yes? 21:34
Coke (or does drupal use some other mechanism to store pages.)
tewk_ yes
Coke pmichaud: yes
pmichaud www.infoanarchy.org/en/C89 claims that __FILE__ and __LINE__ are C89, so can we use them? 21:35
Coke pmichaud: we appear to already be using them. 21:36
pmichaud yes, I just noticed that also. Okay, I can leave those in then.
well, actually put them back.
tewk_ I think CONST_STRING uses those right?
Infinoid good to know I'm not the only one... I thought it was a gross gcc-specific hack
pmichaud yay. With all of the patches from Infinoid++, Coke++, etc., I now pass all tests but the stm one on my box. 21:37
prepare for commit
particle Infinoid: a working msvc build says otherwise :)
Coke suggestion: create a top level "Contact" menu on parrot.org that tells how to get in touch with us for bug reports, etc.
Infinoid are inline functions C89? 21:38
pmichaud looks like possibly/probably no. 21:39
Infinoid there's some more cleanup I will need to do for Parrot_enref_context() 21:40
Coke we can hide that with a #define if it's not already.
pmichaud Infinoid: like, what else?
Infinoid the static function in the headerfile should be moved to an actual source file... otherwise each object file will end up with its own copy of it 21:41
or just turn the whole thing into a #define, like Coke said
pmichaud I think it all needs to be a #define
Infinoid that's fine
should I reissue the patch, or fix it up in your branch after the commit?
pmichaud I'll fix it.
tewk_ look at PARROT_INLINE, config also tests for inline compiler support. 21:42
pmichaud eh, I'll commit, we can look at it then
particle Infinoid: i believe inline functions are c89, lemme check my k&r
Infinoid the inline function/macro approach would be faster. but having an actual symbol in a source file lets us breakpoint on it, which is nice for debugging
though, now that we have stderr output for these things, we don't really need to breakpoint. 21:43
particle so stick it in for debugging, but don't merge to trunk that way
pmichaud I think that if CTX_LEAK_DEBUG is set, we use a function; otherwise we just do it directly.
no inline needed.
dalek r32962 | pmichaud++ | lex4: 21:44
: Add Parrot_context_ref() to encapsulate context reference counting.
: Patch courtesy Infinoid++ .
diff: www.parrotvm.org/svn/parrot/revision?rev=32962
Infinoid that's what my patch tried to do, badly. (note one function was inline, the other wasn't)
pmichaud #define Parrot_context_ref(a,b) (b)->ref_count++; a = (b) 21:45
or something like that.
tewk_ PARROT_INLINE is used in a bunch of pmcs, use that.
particle tewk_++
pmichaud tewk_: is that handled by pmc2c, though?
particle and it seems inline is *not* c89
tewk_ I know MSVC uses _inline, so I'm pretty sure its not C89, but we do probe for it. 21:46
particle which makes the macro make more sense
pmichaud the only PMC I see that uses PARROT_INLINE is sarray.pmc
particle you know, i just realized we don't use c register variables
pmichaud ah, it's used in lots of other places though. 21:47
tewk_ src/pmc_freeze.c and src/gc/res_lea.c use PARROT_INLINE
chromatic I'm not sure it does anything though.
Coke rdice is fast: news.perlfoundation.org/2008/11/hag...o_dis.html
pmichaud docs/dev/c_functions.pod:224
rdice That's the first time I've ever heard that said.
tewk_ :q 21:48
Coke starts off with "that's not what ..." and then realizes this might be the wrong crowd.
masak tewk_: you can check out anytime you want, but you can never leave >:)
ambs rdice, talking about grants and speed... you have an email from me waiting for an answer ;)
jonathan You approve grants while taking speed? ;-) 21:49
pmichaud so, PARROT_INLINE is part of the API. Excellent. ;-)
ambs jonathan, kind of :) 21:50
particle convert USD 1 to CAN 21:52
purl I don't know how to convert USD 1 to CAN.
particle convert 1 USD to CAN
purl I don't know how to convert 1 USD to CAN.
particle change 1 USD to CAN
purl particle: Either 'USD' or 'CAN' is an invalid currency symbol, or Yahoo changed its screen format for the currency exchanger. Check finance.yahoo.com/currency for the list of supported symbols.
ambs purl++
particle feh. USD1 = CAN1.30
i knew that, but wanted to use the bot to tell you all.
maybe we should have obama buy canada for the healthcare system 21:53
cotto change 1 USD to CAD 21:54
purl cotto: 1 USD makes 1.2961 CAD
ambs cotto, change 1 EUR to USD
erm
sorry 21:55
purl, change 1 EUR to USD
purl ambs: 1 EUR makes 1.2454 USD
cotto hmmm. must be some residual effect from when I pretended to be purl
ambs cotto, or lack of caffeine. 21:56
rdice ambs: you're refering to the 2008q4 budget? 21:58
ambs yes 22:00
chromatic Hmmm.
Where vtables know they need to do MMD, I wonder if they could build MMD data much more cheaply than they do. 22:01
22:02 davidfetter joined
jonathan chromatic: Are you asking in relation to the slowdown ticket? 22:03
22:04 Whiteknight joined
rdice I try to leave that to Kurt. I'll ping him on it s'more. 22:04
(he's really the one who has the best feel for our cash position and our cashflow)
ambs sure 22:05
pmichaud I'm guessing PARROT_INLINE really only works for static functions. 22:09
chromatic jonathan, exactly. 22:10
jonathan chromatic: I feared so. :-| 22:11
I think multi dispatches for opcodes before used to be just an index into a 2D array.
I'm not sure what it is now.
chromatic It's more.
Although... hmm.
2/3 of Parrot_mmd_sort_candidates calls call pmc_new.
Half of the runtime in this example is at pmc_new and below. 22:12
jonathan We create a PMC during candidate sorting?
ah, a tuple of the args maybe.. 22:13
tewk_ pmichaud: depends on the compiler, if you don't take the address of the function, gcc will generate two versions i believe, it may require -O3
pmichaud tewk_: the only places where I can see PARROT_INLINE being used in parrot is on static functions.
jonathan oh no, we get the arg tuple passed in 22:14
jonathan stares at the code
chromatic: Do we sort the candidates per call? 22:15
chromatic Yes.
jonathan Ouch. 22:16
And Perl6MultiSub FTW.
particle errands &
jonathan (Though we do a load of type checks in there, so...)
Hmm.
chromatic Then there's the fun with varargs to turn a known C signature into a CallSignature and such.
jonathan Again, per call?
chromatic Yes.
I turned the two PMCs allocated in Parrot_mmd_sort_candidates to temporary PMCs. No huge gain in the small benchmark; let's see if it breaks anything. 22:17
jonathan If it's not a gain, it's perhaps not worth doing. 22:18
chromatic Whether it's a gain depends on the PObj allocation characteristics of the program.
No test failures. 22:19
jonathan OK, but we're allocating a lot of them per call here.
And that program essentially tests calling speed. 22:20
chromatic Sure.
Coke I idly hope this will speed up partcl.
chromatic The more garbage to collect a call creates, the more expensive that call is.
Does partcl use MMD? 22:21
jonathan What worries me is that you'd nto so much expect a line like "if input < 1 goto FALSE" to be expensive.
But I'm guessing that this goes through Parrot_mmd_sort_candidates too.
chromatic Yeah.
jonathan So in effect it's not about so much what uses MMD, as what few programs you can possibly write that don't. 22:22
PerlJam Less garbage makes it cheaper. That's not a line you're likely to see anywhere else :)
jonathan I think you can maybe manage hello world... ;-)
Infinoid pmichaud: inline without static is usually pointless
if not actively harmful
if you've written a function like strcmp() that you want the compiler to optimize as much as possible by merging it directly into the caller, having it in the symbol table can cause linker errors from duplicate symbols later 22:23
pmichaud it looks to me as though we're violating a few Parrot coding standards here though
Infinoid: I know all about inline, thanks.
Infinoid we may be. :(
ambs good night 22:24
pmichaud I'm only looking to see what Parrot already does as a guide for what we can expect to do.
I'm tempted to make Parrot_context_ref into a standard function and worry about optimizing it later. 22:25
jonathan chromatic: Essentially, MMD is looking like it's going to be as prominent a factor in Parrot performance, as in Perl 6 performance. I hadn't expected that...
chromatic: But I was fully expecting to have to optimize the heck out of Perl 6's multiple dispatch at some point in the future as a result of it...
pmichaud jonathan/chromatic: are we talking about mmd at the vtable level here?
I haven't been following the mmd branch all that much 22:26
chromatic pmichaud, yes.
jonathan pmichaud: MMD at the vtable level was, IIUC, unified with MMD for any other call.
I'm sure chromatic will correct me if I'm wrong on that.
pmichaud jonathan: somehow I think there's a difference between 'foo'(x, y) MMD and add a, b MMD
perhaps I'm wrong about that.
chromatic Not anymore.
pmichaud ah.
jonathan pmichaud: There used to be, but...yes, what c said.
Infinoid pmichaud: normal function works for me. anyway, it doesn't even necessarily have to return the pointer, that's just what I'm used to for this kind of function 22:27
so changing the API is also fine, if it makes macro conversion easier
pmichaud oh, I definitely want it to return the pointer
jonathan Unfortunately, doing this _without_ heavily optimizing multi dispatch would seem to give some slowdown.
pmichaud I like a = Parrot_context_ref(INTERP, b);
it says exactly what we're doing.
jonathan Two pointer lookups are rather cheaper than a quicksort... :-| 22:28
tewk_ A lot cheaper... Without caching and invalidation, MMD is going to be slow.
chromatic Especially when quicksorting a candidate list *even if the list of candidates hasn't changed* is duplicate work.
jonathan Right. 22:29
That's what I liked about the Perl 6 algorithm. You sort the candidates once, then just decide which are elligible later.
Here it looks like we're comparing all the candidates against all the parameters each call to produce an ordering.
chromatic Yes.
jonathan I'm not sure you can do otherwise with Manhattan distance though, since the distance IIUC is computed based upon the difference of the types of the args and the types of the available candidates. 22:30
chromatic Right. 22:31
jonathan So I think some kinda cache is the way to go.
chromatic Agreed.
jonathan I don't feel like implementing it right now, though... :-) 22:32
chromatic I'm profiling my "Create 1.8 million fewer garbage PObj calls" patch first. 22:33
jonathan :-O
I'd...hope...that'd help!
chromatic Oh, sorry. 1.3 for calculating 1000 primes.
jonathan At that order of magnitude, not sure it matters...
chromatic Upper bounds is probably a 15% improvement, which is far less than what we need. 22:34
tewk_ How much was the slow down 22:35
chromatic 800%
purl 8
tewk_ ooooch.
jonathan ...wtf
(that was to purl's insightful response...)
chromatic Looks like a 5% speedup.
jonathan Ouch. 22:36
At least if we write a cache, we can potentially speed up all multi dispatches too. 22:37
chromatic Sure. This just makes the non-cached case less expensive.
jonathan Oh, sure, I'm not saying it isn't worth it.
chromatic 5% is my "Is it worth it?" threshold, especially for a minute of work and a minute of setting up (30 aggregate minutes of) profiling.
jonathan I had some ideas for speeding up the Rakudo one. I hadn't planned to do it this soon. But I guess I can prototype the idea for core Parrot. 22:38
(Not tonight... ;-) 22:39
chromatic That'd make a nice back-of-the-box blurb for 0.8.2. 22:40
jonathan Only if it actually helps. ;-)
pmichaud opinion: if it doesn't help, we might want to re-think parrot vtable mmd
jonathan svn revert ... 22:41
<grin>
chromatic The real problem is that we keep crossing the C/PIR boundary. 22:42
jonathan pmichaud: One other thing I realized is that, in Rakudo, we'll already have done one multi-dispatch.
e.g. to the infix:+
Or some such.
dalek r32963 | chromatic++ | trunk:
: [MMD] Converted the two helper PMCs created in Parrot_mmd_sort_candidates to
: temporary PMCs, as they're not used outside of this code. This gives a modest
: 5% speedup on very MMD heavy code, such as examples/benchmarks/primes2.pir.
: (Caching will give a bigger improvement, but this enhancement still improves
chromatic If we didn't have to worry about continually switching between those calling conventions, we'd have a lot less trouble.
dalek : the non-cached case).
diff: www.parrotvm.org/svn/parrot/revision?rev=32963
jonathan It'd be nice to find ways of not doing another Parrot vtable level one when we cna. 22:43
*can
Whiteknight chromatic: add a note about that to the calling_conventions tasklist on the wiki
jonathan pmichaud: Though I suspect we are already doing that to some extent. 22:44
Whiteknight I'm planning to unify a lot of stuff, and then optimize the hell out of it if I can
chromatic parrot wiki?
purl i heard parrot wiki was at www.parrot.org/wiki/parrot
Whiteknight yeah, let me find the link
www.parrot.org/wiki/calling-conventions-tasklist 22:45
pmichaud from a strictly Rakudo perspective, vtable mmd doesn't seem to be all that useful at the moment.
For other languages I can see that it might be very useful, though.
jonathan Yes, agree.
Anyway, I've got an MMD grant to finish up in the next week or two. 22:46
So I need to do MMD things anyway. 22:47
If we get a Parrot win out of something we'd have needed to do for Rakudo anyway - even if it wasn't so soon on my hit list to optimize it - that's an overall win.
pmichaud indeed. 22:48
moritz speaking of grants, I commented on news.perlfoundation.org/2008/11/hag...o_dis.html
pmichaud I'm all about wins for both Parrot and Rakudo.
moritz++
jonathan moritz: I saw, thank you.
pmichaud (saw the comment already, it's appreciated)
moritz: yesterday during the perl 6 design meeting we had the question of spectest coverage of the synopses
any ideas how we could start to estimate that?
I did count the number of tests in each section 22:49
and we can now get spectest results on a per-synopsis basis
jonathan didn't realize that STD.pm was using roles like *that*. Cool!
dalek r32964 | Whiteknight++ | calling_conventions:
: [calling_conventions] update to trunk r32962 hoping it would contain the solution. didnt
diff: www.parrotvm.org/svn/parrot/revision?rev=32964
jonathan self.mixin 22:50
Where's that defined, or is it meant to be a builtin?
pmichaud nopaste.snit.ch/14640 # rakudo spectest results by synopsis
tewk_ Whiteknight: pcc is the slowest calling convention so expect things to get slower, kinda like the MMD refactor, before they get faster. 22:51
jonathan Wow. I hadn't realized STD.pm was such a good example of role and runtime mixin usage.
pmichaud it's a little of everything. :-) 22:52
jonathan role startstop[$start,$stop] { token starter { $start } token stopper { $stop }
} # end role
That's pretty sweet.
pmichaud yes.
chromatic Once you figure out roles, you see them everywhere.
jonathan Apart form # end role
Which makes me worry me might adopt Visual Basic blocks soon. ;-)
moritz pmichaud: it seems S12 is heavily undertested
jonathan moritz: S12 is undertested. Guess whose fault that is... 22:53
jonathan sucks at writing enough tests
pmichaud btw, I got the synopses (+ history) out of the perl.org svn repo so that we can move them to the pugs repo 22:54
jonathan The official copies?
pmichaud yes.
jonathan Wow.
So they're free for hacking on? ;-) 22:55
pmichaud we've decided to use the pugs repo for a while to make it freer to hack on
jonathan OK
pmichaud especially S29, S19, etc.
Tene The perlbuzz announcement of our release plan has been posted to reddit: www.reddit.com/r/programming/commen...arch_2009/
jonathan I hope, for the purpose of cleanup/clarification, rather than people commiting new language features. :-)
pmichaud ...and already has a comment.
jonathan: we always have "revert". :-) 22:56
and the diffs will go to perl6-language, so people will see them.
jonathan Cool.
I think that the lack of abuse of the freedom to commit to the Pugs repository pretty makes it something to not worry about. 22:57
And the need of commits to the synopses you mentioned makes it worthwhile, sure.
pmichaud agreed.
and it'll be nice to have them in one place.
jonathan Yes 22:58
It may make people hacking on S29 feel like they're working on something more official.
As a psychological thing.
pmichaud we can also name it "S29.pod", which will help.
jonathan Yes.
pmichaud and I'm interested to see some work on S16 (IO)
jonathan Same. 22:59
Which was S19?
pmichaud command line syntax (particle) 23:00
jonathan oh, yes!
Duh. :-)
masak getting the -n and -p flags would be a great start. 23:01
23:03 allison joined
Coke -> 23:06
dalek r32965 | fperrad++ | trunk: 23:12
: [WMLScript]
: - update syntax, see RT #57428
diff: www.parrotvm.org/svn/parrot/revision?rev=32965
Andy_ There will always be snark. :-( 23:14
dalek r32966 | julianalbo++ | trunk: 23:21
: avoid some strlen calls and allocations in imcc pcc.c:pcc_get_args
diff: www.parrotvm.org/svn/parrot/revision?rev=32966
pmichaud r32967 of the lex4 branch passes all parrot tests for me -- reports from others welcome. 23:58
(It's also got a leak -- working on that now.)
dalek r32967 | pmichaud++ | lex4: 23:59
: Make Parrot_context_ref a little more portable.
diff: www.parrotvm.org/svn/parrot/revision?rev=32967