Camelia, the Perl 6 bug

IRC log for #parrot, 2008-11-20

Parrot | source cross referenced

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

All times shown according to UTC.

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

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

Parrot | source cross referenced