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