|
HTTPS CERT EXPIRED | www.parrot.org | Add test after fixing bugs after context_pmc3 merge | Improve test coverage for FixedPMCArray and NameSpace / Fix Segfaults for Coke / Port Tests to PIR / Merge Stable Branches for 1.6 SOON Set by moderator on 3 September 2009. |
|||
|
00:18
japhb joined
|
|||
| dalek | TT #976 created by darbelo++: [PATCH] Reduce poking into STRING guts | 00:30 | |
| darbelo | Boy, is the code to freeze PMCs ehm... special. | 00:36 | |
| chromatic | Very. | 00:37 | |
| Whiteknight | NO SARASM! | ||
| that code is shit and will be addressed as such | 00:38 | ||
| darbelo | Whiteknight: But it's doing it all FOR SPEED! It is -optimized- shit. | 00:39 | |
| Whiteknight | yeah, I'm sure it does exactly what it did in 2004 at top speed | 00:40 | |
| and we can't make it do any more then that since it's such a mess | |||
| cotto | chromatic, any thoughts on the profiling runcore code? | 00:41 | |
| chromatic | Haven't quite made it to that yet today. | ||
| darbelo | It also appears to know more about the internals of strings than the string subsystem itself. | ||
| Whiteknight adds the freeze/thaw system to the ever-growing list of things that need to be freaking keel-hauled | 00:43 | ||
| cotto | If there weren't so much crap to rip out and rewrite, would you really be happy? | ||
| By 4.0 Parrot won't have any crappy subsystems left and we'll all sit around being bored. | 00:45 | ||
| Coke | yes. | ||
| (be happy) | |||
| cotto | (6.0 if our deprecation policy stays in place) | 00:46 | |
| darbelo wonders who thought abusing the next_for_GC pointer here was a good idea. | 00:47 | ||
| Whiteknight | darbelo: I don't know, but I would like to find that person and abuse them | 00:59 | |
| cotto: I would be very happy to be working with better software, and knowing that more people were using Parrot | 01:00 | ||
| I probably wouldn't contribute as much, but I would be happy | |||
| cotto | I'm joking of course. I'd be thrilled if right now someone submitted a patch that did all the stuff we're working toward. | ||
| darbelo, keep up the good work. only 60-70 more patches to go! | 01:04 | ||
| dalek | TT #976 closed by cotto++: [PATCH] Reduce poking into STRING guts | 01:05 | |
| rrot: r40965 | cotto++ | trunk/src (4 files): [string] remove more ->strstart abuse, courtesy of darbelo++ |
01:07 | ||
| darbelo is slayin' the dragon, one scale at a time. | 01:08 | ||
| cotto | I'd really like to figure out a good testing strategy for the profiling runcore. | ||
| Whiteknight | holy crap, why isn't darbelo a committer by now? | 01:09 | |
| darbelo | cotto: testing that it runs ok or that it profiles ok? | ||
| cotto | both, plus tests for the postprocessing script | 01:10 | |
| Whiteknight | cotto: take a known sample program, profile it, and save the output to compare | ||
| darbelo | Whiteknight: I think he's measuring absolute times, that would change a lot from one arch to another. | 01:12 | |
| cotto | The thing is that I'll also eventually want to be able to completely change the pprof format to be binary instead of ascii. | ||
| however, if the code is smart enough to output either I can test ascii and use the binary | 01:13 | ||
| for actual profiling work | |||
| but that can wait until -e "1" profiles with Rakudo | 01:14 | ||
| dalek | rrot: r40966 | cotto++ | branches/pluggable_runcore/tools/dev/pprof2cg.pl: [profiling] parameterize the last global and do some minor code cleanup |
01:28 | |
| darbelo goes on the hunt for sleeps. | 01:29 | ||
|
01:30
darbelo left
01:37
s1n joined
01:46
Andy joined
|
|||
| dalek | tracwiki: v32 | bacek++ | ParrotQuotes | 01:59 | |
| tracwiki: Big O notation explanation by chromatic | |||
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| tracwiki: v33 | cotto++ | ParrotQuotes | 02:09 | ||
| tracwiki: sarcasm will not be tolerated | |||
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| tracwiki: v34 | cotto++ | ParrotQuotes | |||
| tracwiki: "sacrasm" won't be tolerated either | |||
| tracwiki: trac.parrot.org/parrot/wiki/Parrot...ction=diff | |||
| rtcl: r686 | coke++ | trunk/runtime/builtin/file.pir: First attempt at [file delete] |
02:14 | ||
| rtcl: r687 | coke++ | trunk/t/cmd_file.t: Hey, I bet this joke was really funny 4 tests ago. |
|||
| rtcl: r688 | coke++ | trunk/runtime/builtin/file.pir: PIR cleanup |
|||
|
02:15
cognominal joined
02:16
mokurai joined
|
|||
| Coke | my segfaullllllts. feeeeex theeeeeem. | 02:19 | |
|
02:35
janus joined
03:02
sri joined
03:18
theory joined
03:20
donaldh joined
03:21
dukeleto_ joined
03:26
Andy joined
03:36
Andy joined
04:38
asciiville joined
05:13
payload joined
05:22
HG` joined
|
|||
| dalek | rrot: r40967 | mikehh++ | trunk/src/gc/mark_sweep.c: codetest failure - trailing spaces |
05:33 | |
| cotto | seen kid51 | 05:37 | |
| purl | kid51 was last seen on #parrot 1 days, 3 hours, 44 minutes and 47 seconds ago, saying: kill_parrot_cont branch: Smolder test on Darwin/PPC: smolder.plusthree.com/app/public_pr...ails/26802 [Sep 3 01:46:03 2009] | ||
| dalek | rrot: r40968 | mikehh++ | trunk/src/pmc/string.pmc: codetest failure - space after opening parenthesis |
05:40 | |
| rrot: r40969 | mikehh++ | trunk/src/pmc/hash.pmc: codetest failure - isxxx() function not cast to unsigned char |
05:43 | ||
| cotto | How are functions like pir_output_is generated? | 05:44 | |
| let0 | cotto: good question. there is magic in Parrot::Test | 05:47 | |
| cotto: what do you want to know? | |||
| cotto | I want to add a set of functions that capture and test the output of the profiling runcore and make sure pprof2cg's output is sane | ||
| instareply | |||
| let0 | cotto: you want to do this in PIR or perl ? | ||
| i am writing pir_error_output_like in PIR now-ishly | 05:48 | ||
| let0 is hacking and drinking with a bunch of pdx.pm perl hackers at the #pdx hackathon | |||
| cotto | Excellent. We'll need stuff like that. | ||
| I'd teleport over there to join you, but I can't teleport. | 05:49 | ||
| let0, do you understand the perly magic? | |||
| let0 | cotto: understand, yes. like, no. | 05:50 | |
| cotto: the way it is implemented, it reduces the amount of code that needs to be written, but it is very complex/non-intuitive/hard-to-debug code. but it works if you don't touch it... | |||
| cotto | Yeah. I got the impression that it generated functions. | 05:51 | |
| let0 | cotto: are you trying to capture STDOUT or STDERR ? | 05:52 | |
| or an exception ? or just normal output? | |||
| cotto | STDERR sounds best. Currently the profile goes to a file, but stderr sounds like the best place for testing purposes. | 05:53 | |
| I also want to be able to capture the profiling output in order to test pprof2cg | 05:57 | ||
| let0 | cotto: you want to do this from PIR? | 06:04 | |
| cotto | perl is fine | ||
| pir would be ideal to avoid creating more perl tests, but I'll take what I can get | 06:05 | ||
| let0 | cotto: pir_error_output_like already exists for perl. i am trying to make it work for PIR | ||
| cotto | you're right. it's plausible to adapt that | 06:08 | |
| mikehh | All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r40969 - Ubuntu 9.04 amd64 (gcc) | ||
| cotto | chromatic, ping | 06:10 | |
| mikehh | let0: I am getting a backtrace from t/tools/parrot_debugger.t - I think test 41 | 06:12 | |
| NotFound | mikehh: you're not alone | ||
| let0 | mikehh: can you nopaste | ||
| mikehh | we had this briefly - then it went away - but came back the merge of context_pmc3 branch (on amd64 anyway) | 06:13 | |
| NotFound | It segfaults at Context.destroy | ||
| nopaste | "mikehh" at 94.3.240.143 pasted "prove -v t/tools/parrot_debugger.t - trunk at r40969 - Ubuntu 9.04 amd64 (gcc)" (163 lines) at nopaste.snit.ch/17802 | 06:16 | |
| cotto | chromatic or anyone: I'd like to add an option to parrot that causes the profiling runcore to write its output to a non-default location. What's the best place to stick that info between when the option gets processed and the runcore gets initialized? | ||
| mikehh | NotFound - yes I think so - it happened in trunk just after some changes by dukeleto - but I think you fixed it - but it came back in context_pmc3 branch | 06:19 | |
| let0 | mikehh: that is a hilarious bug. | ||
| mikehh | let0: you partying and stuff? | 06:22 | |
| let0 | mikehh: indeed | 06:23 | |
| mikehh: i am not sure who to blame for that test failure | |||
| mikehh | let0: me neither - I have been trying to track it down for a few days - but I find that it does not record the backtrace in parrot_test_run.tar.gz (which I save) | 06:25 | |
| let0 | mikehh: i will try to reproduce | ||
| mikehh | let0: I don't think it happens on i386 (not sure) | 06:26 | |
| let0 | mikehh: i can test it on powerpc | ||
| NotFound | mikehh: the segfault is in a TODOed test, then parrot_debugger.t PASS anyway | 06:27 | |
|
06:27
iblechbot joined
|
|||
| chromatic | pong | 06:29 | |
| cotto, that's tricky. I'll have to think about it some. | 06:30 | ||
| cotto | My first instinct is in the iglobals array and my second instinct is "don't do that". | 06:32 | |
| It'd be pretty easy if the option processing code didn't remove the stuff it processed from argv. | 06:33 | ||
| chromatic | That code has been a minor thorn in my side for ages. | 06:34 | |
| I moved it partially out of IMCC years ago. | |||
| ... but it's still tied too closely to IMCC for my comfort, especially in a world where pirc may merge. | 06:35 | ||
|
06:37
theory joined
|
|||
| cotto | test coverage? | 06:40 | |
| purl | it has been said that test coverage is cv.perl6.cz | ||
| mikehh | NotFound - it is not either of the TODO tests | 06:52 | |
| NotFound - if I skip the TODO tests it still backtraces | 06:54 | ||
| I think it is test 40 or 41 - it prints ok 40 - print string registers - backtrace then ok 41 - print string registers when none exist at the end of the backtrace | 06:59 | ||
|
07:06
mokurai left
|
|||
| mikehh | NotFound: if I skip Test 41 it does not backtrace | 07:16 | |
| chromatic | That's worse than backwash. | 07:18 | |
| mikehh | don't know - I could do with a backwash :-} | ||
| depends how you interpret that of course :-} | 07:20 | ||
|
07:20
donaldh joined
|
|||
| mikehh | bbl | 07:32 | |
|
08:29
dukeleto joined
|
|||
| mikehh | rakudo (b51d94c) builds on parrot r40969 - make test / make spectest (up to r28187) PASS - Ubuntu 9.04 amd64 (gcc) | 08:34 | |
|
08:37
preflex joined
08:51
bacek joined
|
|||
| bacek | o hai | 08:52 | |
|
09:05
HG` joined
09:12
gaz joined
|
|||
| cotto | good night | 09:14 | |
| mikehh | cardinal - builds on parrot r40969 - rake test:all - same 3 failures - Ubuntu 9.04 amd64 (gcc) | 09:16 | |
| partcl r688 builds on parrot r40969 - make test PASS - Ubuntu 9.04 amd64 (gcc) | 09:17 | ||
| decnum-dynpmcs r181 builds on parrot r40969 - make test PASS - Ubuntu 9.04 amd64 (gcc) | 09:20 | ||
|
09:21
cognominal joined
09:22
einstein joined
|
|||
| bacek | jrtayloriv: ping | 09:41 | |
| dalek | lscript: f381ee3 | fperrad++ | (3 files): install dynops & dynpmc in languages/wmlscript/dynext |
09:59 | |
| lscript: f72e19c | fperrad++ | t/ (3 files): run parrot in current directory |
|||
| lscript: 7800a1f | fperrad++ | t/pmc/ (10 files): rewrite in PIR |
|||
| l: e57bace | fperrad++ | t/Parrot/Test/Xml.pm: run parrot in current directory |
10:04 | ||
| bacek | ooookey... gms GC is badly broken. | 10:19 | |
| msg whiteknight Is it reasonable to try to resurrect gms or better to start from scratch? | 10:20 | ||
| purl | Message for whiteknight stored. | ||
|
11:20
donaldh joined
11:31
masak joined
|
|||
| Coke | wasn't there a ticket about removing all non-default GCs? | 11:37 | |
| (I think the just the option to use them might have been removed, but not the GCs themselves. If that's the case, we can remove the GC itself.) | 11:38 | ||
| einstein | the other gc system are not updated for a long while and are really broken, but the code still exist there, so someone can use that code if they like to repair them | 11:55 | |
| but i think a system should be added so you can choise which gc is used at startup time of the interpreter | 11:56 | ||
| before someone is gonna try to repair to other gc systems | |||
| dalek | lscript: 5ebdd54 | fperrad++ | t/pmc/ (10 files): fix shebang |
||
|
12:18
whiteknight joined
|
|||
| jrtayloriv | bacek_at_work, pong, I have been looking at GMS too -- It is pretty much useless ... refers to many things that are no longer there, and wasn't fully implemented in the first place. | 12:18 | |
| whiteknight | yeah, GMS is a mess | ||
| some good ideas, but probably better to start from scratch at this point | |||
| smolder? | 12:19 | ||
| purl | i think smolder is sourceforge.net/projects/smolder or web-based smoke test aggregator used by developers and testers to upload (automated or manually) and view smoke/regression tests using the Test Anything Protocol (TAP). or smolder.plusthree.com/app/public_pr..._reports/8 | ||
|
12:19
rindolf joined
|
|||
| rindolf | Hi all. | 12:20 | |
| whiteknight | hello | ||
| rindolf | I'd like to implement www.shlomifish.org/open-source/projects/Spark/ on top of Parrot, and would like to start with one of Parrot's lisp impls. | ||
| Is it OK? | |||
| whiteknight | that sounds like a great project | ||
| jrtayloriv | whiteknight, I was actually just getting started in an attempt to write one from scratch, now that I've read a bit more about GC. I also have been changing a few things around so that I can get rid of the #ifdefs and choose a GC at parrot invocation ... for instance, I've gotten it so that gc_initialize doesn't use macros anymore ... | 12:21 | |
| whiteknight | jrtayloriv: that's awesome! I would love to see a patch! | ||
| rindolf: definitely OK | |||
| rindolf: in fact, it would be great | 12:22 | ||
| rindolf | whiteknight: OK. | ||
| jrtayloriv | whiteknight, yes -- I wouldn't mind having you take a look at it to let me know if I'm on the right track. Let me clean up a few things, and I'll post up a sample later today. | ||
| whiteknight | we don't have any List implementations that are active and up-to-date | ||
| rindolf | whiteknight: I hope people are not possessive about me spinning-off one of their Lisp implementations. | ||
| whiteknight | rindolf: not at all | ||
| rindolf | Because Spark is not just another Scheme or CL implementation. | ||
| whiteknight | what's so different about it? | ||
| rindolf | whiteknight: OK, thanks. | ||
| whiteknight is not familiar with Spark | 12:23 | ||
| rindolf | whiteknight: it's very new. | ||
| whiteknight: I'm going to borrow many good ideas from Arc, Perl, Ruby, Python, Moose, etc. | |||
| whiteknight: and it will be much more brief than Scheme or CL. | 12:24 | ||
| And with better human engineering. | |||
| See : bitbucket.org/shlomif/spark/src/tip...n-Lisp.txt | 12:25 | ||
| whiteknight | Ah, so better in every way? That's awesome! | ||
| particle | whiteknight: how goes the context_pmc3 branch merge cleanup? | 12:26 | |
| rindolf | whiteknight: better in every way to what? | ||
| whiteknight | particle: I've just been reviewing the smolder reports. Looks like things are pretty stable except on AIX | ||
| (although I don't know if AIX was passing 100% before, so I don't know) | |||
| rindolf: Just making a joke. Sounds like an awesome project | 12:27 | ||
| particle | well, you can check smolder for that info | ||
| whiteknight | rindolf: Are there other implementations, or is this going to be the first one? | ||
| rindolf | whiteknight: yeah. | ||
| whiteknight: it's the first one. | |||
| whiteknight: I came up with the Spark name. | |||
| whiteknight: it doesn't even have a spec yet. | |||
| whiteknight | well very cool. You can't pick a better place to start then with Parrot. | ||
| rindolf | whiteknight: thanks. | ||
| whiteknight | particle: how do I check the history of reports for one platform? | 12:29 | |
| particle | checking... | ||
| smolder.plusthree.com/app/public_graphs/start/8 | 12:30 | ||
| rats, you can't click through to the reports there | 12:31 | ||
| ok: smolder.plusthree.com/app/public_pr..._reports/8 | 12:32 | ||
| you can use the 'aix' tag | |||
| whiteknight | okay, looks like AIX has been stable in it's fail rate | ||
| particle | yes | ||
| whiteknight | so, we good to merge the kill_parrot_cont branch soon then? | ||
| particle | yes, looks like it. | ||
| announce the successful merge of context_pmc3 first, and move forward | 12:33 | ||
| whiteknight | any rakudo hackers in the house today? | ||
| Coke | whiteknight: AIX has pretty much always failed. | 12:34 | |
| ... and then I catch up to the last 10 lines. whoops. | |||
| whiteknight | yeah, it looks like they are failing a very specific grouping of tests too, so that helps to narrow down where the problems are (and where the problems aren't) | ||
| though I don't have an AIX machine to do any debugging on | 12:37 | ||
| Coke | good luck finding out who that is. =-) | 12:38 | |
| we have a lot of stealth smokers, I think. =-) | |||
| whiteknight | Coke: How is partcl doing right now? Is it experiencing any context_pmc3-related failures? | 12:39 | |
| Coke | whiteknight: code.google.com/p/partcl/source/bro...ogress.csv -- pretty sure r40959 is post-merge. | 12:40 | |
| whiteknight | you need a fancy graph | ||
| Coke | NotFound++ #again. | ||
| (kind of a non-sequitor, I know.) | 12:41 | ||
| non-sequitur, before austin corrects me again. =-) | |||
| moritz | you could steal from rakudo's tools/progress-graph.pl | ||
| Coke | moritz: That's why i started making the CSV, I hoped someone else would do that bit. =-) | ||
| moritz | ;-) | ||
| whiteknight | moritz: how is Rakudo doing? | 12:42 | |
| (is it experiencing any problems after context_pmc3?) | |||
| moritz | whiteknight: well; I pushed bacek++'s patch, no new test failures | ||
| whiteknight | excellent news! | 12:43 | |
| Coke | whiteknight: my biggest concern is the "time to run", which has gone from 6381s to 8340s. | 12:44 | |
| (not all of that is the context branch, but some of it definitely is.) | |||
| moritz | rakudo is also a bit slower | ||
| purl | okay, moritz. | ||
| whiteknight | Coke: Last night I re-enabled the fixed-size allocator. That should do a lot to help with performance. Could you run another test sometime to see? | 12:45 | |
| I haven't done any benchmarks of course, but it *should* help | |||
| And there are other optimizations we need to make too. Many of the changes recently were just first steps in these comprehensive refactors | 12:46 | ||
| particle | whiteknight: one comment on your otherwise excellent email... we're globally distributed, and not everyone knows your time zone. try to use 'eight hours from now' instead of 'later this evening' or something like that | 12:50 | |
| whiteknight | irclogs? | ||
| purl | well, irclogs is irclog.perlgeek.de/parrot/today or see also: infrared clogs | ||
| whiteknight | particle: I specifically leave things vague like that because I'm too lazy to do it when I say I will | ||
| it's always evening somewhere :) | |||
| and it's better then saying "I'll do it whenever I get around to it, which might be never because I'm a mook" | 12:51 | ||
| particle | :P | 12:52 | |
| good thing we don't make any performance guarantees in our policies | |||
| parrot is 10% slower? none of the tests fail... so no problem! | |||
| whiteknight | We really do need to start focusing on performance, but some of the systems are so messy that we haven't been able to do any meaningful improvements to them in-place | 12:53 | |
| so it's the class situation of "it will get worse before it gets better" | |||
| particle | it's always darkest after you go blind. | 12:54 | |
|
12:54
ruoso joined
|
|||
| dalek | rtcl: r689 | coke++ | wiki/SpecTestStatus.wiki: Our [file delete] broke something |
12:57 | |
| Coke | particle: I'll be happier when we start catching all the segfaults in parrot instead of the HLLs. :P | ||
| rtcl: r690 | coke++ | trunk/docs/spectest- (2 files): Pass 2 files that originally failed to complete (See Issue #102). Net gain of 137 passing tests. |
|||
| Coke | whiteknight: checking with latest parrot... | ||
|
13:05
sri_ joined
13:06
Eevee joined
|
|||
| rindolf | rgrjr.dyndns.org/svn/kea-cl/trunk/README.text - crud! Same terms as Perl 5. GPLv1+ or Artistic-1 only. | 13:07 | |
| trac.parrot.org/languages/browser/lisp/trunk - this is better - Artistic 2. | 13:08 | ||
| whiteknight | rindolf: yeah, our kea-cl implementation is very old | 13:09 | |
| older then some of these licensing discussions | |||
| rindolf | whiteknight: ah. | 13:10 | |
|
13:11
quek joined
|
|||
| Coke | whiteknight: I have kicked off a test run. See you in 3 hours. | 13:12 | |
| whiteknight | I'll be here :) | 13:13 | |
| I have plans to set up a test machine of my own for that kind of stuff, but I don't have a suitable machine | |||
| Coke | I wonder if it would be worth making 'make spectest' respect TEST_JOBS. | 13:15 | |
| probably not, since each invocation of parrot chews 100% of the CPU and usually takes minutes. | |||
| whiteknight | if you have more then one core, definitely | ||
| Coke | I'm on feather, it's a VM, and I'm sharing it. | ||
| whiteknight | oh, then no | 13:16 | |
| Coke | After this, I should do another run with fastcore and see if that helps. | 13:18 | |
| (tell me again why we don't default to the fastest core?) | |||
| whiteknight | I have no idea, but for releases I think we definitely should | ||
| moritz: ping | 13:21 | ||
| moritz | whiteknight: pong | ||
| whiteknight | moritz: could you run a Rakudo spectest today to see if it is any faster? | ||
| moritz | whiteknight: yes | 13:22 | |
| Coke | whiteknight: (for releases) the problem with that being the default is what's tested mostly in between releases. | ||
| so if we change it for the release, we're screwing our QA. | |||
| moritz | I didn't time it before, so that's what I'm doing right now | ||
| then I'll update parrot | |||
| and try again | |||
| whiteknight | I enabled the fixed-size allocator in r40962, so before and after that should show some improvements | 13:23 | |
| particle | we shouldn't default to a core we don't regularly run tests on | 13:27 | |
| particle catches up with scrollback, coke++ | |||
| whiteknight | I would recommend then that we switch fastcore to be the global default | 13:28 | |
| slowcore is only useful in debugging | |||
| particle | yeah, who does that? | 13:29 | |
| how much faster is the fast core over the slow core before context_pmc3 merge? | |||
| whiteknight | we only need to debug when something is demonstrably wrong. And the fastcore will alert us that something is wrong | ||
| I have no idea, I haven't seen recent numbers | |||
| particle | agreed. i'm considering a recommendation to move to fast core after we finish the branch merges, before 1.6 release | 13:30 | |
| as long as we have enough time to get smokes | |||
| it would be nice not to regress performance-wise | |||
| whiteknight | We do need to develop some higher-performance cores, like a good context-threaded core | 13:31 | |
| With a pluggable system, we are likely to get that faster | 13:32 | ||
| moritz | what's the context-threaded core? any documentation/ideas/whatever about it? | ||
| whiteknight | mortiz: doesnt exist yet. | 13:33 | |
| It's like a mini-JIT that can provide a real performance boost | |||
| jrtayloriv | jikes ... GC_WRITE_BARRIER is going to be fun to untangle from everything ... | 13:36 | |
| whiteknight | jrtayloriv: Yeah, and we've been saving it just for you! | ||
| rindolf | If anyone is interested I registered #spark on Freenode. | ||
| whiteknight | rindolf: you blog about it | 13:45 | |
| ? | |||
| rindolf | whiteknight: the #spark channel? | ||
| whiteknight: I mentioned Spark in my homepage's blog. | |||
| whiteknight | no, spark in general | ||
| ok | 13:46 | ||
| rindolf | But didn't really publicise it. | ||
| whiteknight: I think I'd rather do it when I have a little to show for. | |||
| CatB , etc. | |||
| whiteknight | Understood. | 13:47 | |
| purl | Understood. are you on schedule? | ||
| whiteknight | If you do start blogging about it, Parrot has an aggregator that we could include you in | 13:48 | |
|
13:48
snarkyboojum joined
|
|||
| rindolf | whiteknight: yes. | 13:59 | |
| whiteknight: I'm getting: | 14:00 | ||
| <<< Can't open perl script "/usr/lib/parrot/1.5.0/tools/dev/gen_makefile.pl": No such file or directory >>> | |||
| On Mandriva Linux Cooker. | |||
| With the parrot .rpm's. | |||
| Coke | ISTR gen_makefile.pl is out of date. | 14:01 | |
| moritz | it's worth usiing parrot HEAD if you develop a language on top of it | ||
| whiteknight | you need parrot-dev, not parrot | ||
| the regular parrot distribution doesn't include all the development tools | |||
| Coke | (tcl, for example, has its own makefiles, and doesn't let parrot gen them.) | 14:02 | |
| rindolf | whiteknight: I have everything. | 14:03 | |
| moritz: OK. | |||
| BTW, I like the Parrot homepage. | |||
| IT's attractive, and usable. | |||
| NotFound | coverity? | 14:06 | |
| purl | hmmm... coverity is a commercial tool for Automated Error Prevention and Source Code analysis, See, www.coverity.com/main.html or it has been used to measure the quality of the LAMP stack and other major source projects | ||
| NotFound | cover? | ||
| purl | cover is not at link? | ||
| Coke | rindolf: danke. it is a standard drupal site, I think, with some minor style tweaks (probably from allison) | 14:11 | |
| rindolf | Coke: ah, Ok. | ||
| Coke: the colours may be a bit too glowing. | 14:12 | ||
| moritz needs more CPU cores for rakudo testing | |||
| rindolf | But it looks good. | ||
| moritz | rindolf: if you find the parrot.org colors too glowing, never visit perl6.org :-) | ||
| rindolf | moritz: get yourself a nice UltraSPARC Niagra machine. | 14:13 | |
| The Niagara has 64 cores or so. | |||
| moritz | and you think that parrot and rakudo will build on it? ;-) | ||
| 8 cores amd64 would be a great improvement already | |||
| rindolf | moritz: yes. | ||
|
14:14
Psyche^ joined
|
|||
| rindolf | I think parrot and rakudo run on UltraSPARCs. | 14:14 | |
| rindolf is building parrot trunk now. | |||
| dukeleto | 'ello | 14:25 | |
| Coke wonders if anyone can debug why partcl's expr.test is exploding just before it completes. (looks like the PIR comiler starts to choke, but if I run those tests without the intervening several thousand lines of tcl, they complete fine.) | 14:29 | ||
| moritz | so not related to the inferior runloop problem? | 14:30 | |
| whiteknight: rakudo is now a tad slower than right after the context_pmc3 merge | 14:31 | ||
| 46m21 then, 48m3 now | |||
| Coke | not that I'm aware of; pretty sure NotFound++'s workaround on that is still working. | ||
| moritz: greaaat. =-) | |||
| dalek | rrot: r40970 | NotFound++ | trunk/t/pmc/fixedpmcarray.t: [t] increase coverage of fixedpmcarray |
||
| Coke | (48+3/60)/(46+21/60) | ||
| purl | 1.03667745415318 | ||
| whiteknight | moritz: so that's better then 13% slower that pmichaud mentioned yesterday, but still not as good as it was | ||
| moritz | whiteknight: no, that's *additional* slowness | 14:32 | |
| whiteknight | oh jeez | ||
| well that's no good. We're going to have to disable the fixed-size allocator again and see if that was the culprit | |||
| Coke | Perhaps we should avoid trying to improve speed related issues that aren't blindingly obvious until the profiler is profiling. =-) | 14:33 | |
| whiteknight seriously thought it would be faster | |||
| Coke | whiteknight: does it serve any other purpose? | ||
| (reduce memory usage, etc?) | |||
| moritz | Coke++ | ||
| NotFound | whiteknight: maybe you must try to disable the lazy part | ||
| whiteknight | NotFound: that's a good point too | ||
| Coke: No, basically reduces calls to malloc and makes all allocations O(1) | 14:34 | ||
| probably needs tuning in any case | |||
| rindolf | whiteknight: <<< Can't open perl script "/home/shlomi/apps/parrot/lib/1.5.0-devel/tools/dev/gen_makefile.pl": No such file or directory >>> | ||
| whiteknight: seems like it is out-of-date | |||
| whiteknight | rindolf: Probably very out of date. I don't know how to help with that | 14:35 | |
| Coke | rindolf: what is telling you to use that? | 14:38 | |
| (are you trying to build someone else's code?) | |||
| rindolf | Coke: svn.parrot.org/languages/lisp/trunk | ||
| Coke: yes, I am. | |||
| Coke | rindolf: the languages in there were orphans; no one cared enough to put them in their own repository and work on them. | 14:39 | |
| so we shoved them there so they wouldn't get lost. | |||
| it will probably take some effort to update that to work with latest and greatest parrot. | |||
|
14:39
jrtayloriv joined
|
|||
| whiteknight | yeah, all that stuff is very old | 14:39 | |
| rindolf | Coke: OK. | ||
| Coke | (though fperrad++ has done a lot of work trying to keep them building.) | 14:40 | |
| dukeleto | i know people don't like the whole t/foo.t and t/foo-old.t, but if we are going to greatly expand test coverage for core PMC's, shouldn't we do it in PIR? We are making more work for ourselves every time we write a test in Perl that doesn't require being written in Perl (i.e. tests that don't need to catch errors or do other freaky things that test_more.pir cannot do yet) | 14:41 | |
|
14:41
janus joined
|
|||
| whiteknight | who is writing tests in Perl? | 14:41 | |
| PIR is definitely the new hotness | 14:42 | ||
| dukeleto | whiteknight: trac.parrot.org/parrot/changeset/40970/ | ||
| NotFound | Can't we write test in nqp? | ||
| particle | whiteknight: arguably, that's nqp now | ||
| rindolf | whiteknight: I see. | ||
| particle | NotFound: depends what we're testing | ||
| whiteknight | oh, well if the test file is already in Perl, that's different | ||
| rindolf | Well, maybe I'll look at a Scheme implementation. | ||
| whiteknight | Scheme is going to be even worse | ||
| particle | new tests should not be written in perl | 14:43 | |
| rindolf | There are some Scheme implementations. | ||
| NotFound | I suppose things like pir_output_is will be easier to implement in nqp than in pir | ||
| whiteknight | rindolf: and they are all bad | ||
| rindolf | whiteknight: ah. | ||
| whiteknight | one is written in flex/bison | ||
| particle | old tests should be converted... it reduces our reliance on perl, and improves performance | ||
| rindolf | Wow. | ||
|
14:44
jrtayloriv joined
|
|||
| dukeleto | whiteknight: that is what I am talking about. for example, see t/pmc/integer.t and t/pmc/integer-old.t . We need to start splitting files, so that people don't keep adding perl tests since they don't want to start a new file. we are digging a deeper hole for ourselves if we don't | 14:44 | |
| whiteknight | true | 14:45 | |
| dukeleto | i am working on pir_error_output_like in PIR, that will allow a lot more tests to be converted to PIR | ||
| whiteknight | oh wow, that would be awesome | ||
| what would that be, a try/catch that tests the exception message? | 14:46 | ||
| dukeleto | whiteknight: yep, it is mostly written, just making sure there are no kinks | 14:47 | |
| haven't had time to work on it in the last few days | |||
| whiteknight | after kill_parrot_cont lands, I want to spend most of the rest of this cycle writing tests | 14:49 | |
| so that would be awesome | |||
| NotFound | Any idea about where a context can be freed other than in Context.destroy ? | 14:57 | |
| whiteknight | NotFound: RetContinuations free themselves after invocation | 14:58 | |
| otherwise, no | |||
| So RetContinuation:invoke() | |||
| NotFound | Parrot_continuation_rewind_environment ? | 14:59 | |
| whiteknight | I have to double-check that function | ||
| why, are you getting a problem with double-free contexts? | |||
|
15:00
theory joined
|
|||
| NotFound | whiteknight: the parrot_debugger segfault happens at Context.destroy, I suspect is a double free. | 15:00 | |
| whiteknight | okay | 15:01 | |
| NotFound | I'm thinking the problem must be in parrot_debugger itself, some mixing between debugger and debuggee interpreters | 15:08 | |
| Coke | chromatic had a scheme implementation called pheme that had one of the first test suites to self-host. | 15:17 | |
|
15:17
jan joined
|
|||
| dukeleto | NotFound: that test is a little sketchy | 15:21 | |
| NotFound | whiteknight: with #define GC_USE_LAZY_ALLOCATOR 0 parrot test pass, the debugger segfault remains and rakudo builds and pass test. amd64 | 15:22 | |
| whiteknight | so is that different from setting it to 1? | 15:23 | |
| NotFound | No, just verifying that it works the same | ||
| Changing it requires a realclean, looks like we lack some dependecies in the Makefile | 15:25 | ||
| Maybe just a clean, I just go straight to the real ;) | 15:26 | ||
| partcl also builds and pass test | 15:37 | ||
|
15:38
sri joined
|
|||
| dalek | tracwiki: v10 | whiteknight++ | JITRewrite | 15:44 | |
| tracwiki: trac.parrot.org/parrot/wiki/JITRew...ction=diff | |||
| rindolf | whiteknight: so what should I do? | 15:51 | |
| whiteknight: start from a different front-end? | |||
| A non-Lisp one? | |||
| whiteknight | ridolf: yes, that's what I would recommend for now. None of the Lisp implementations are workable right ow | 15:52 | |
| now | |||
| start from scratch is probably easiest | |||
|
15:53
Andy joined
|
|||
| rindolf | whiteknight: OK. | 15:53 | |
| whiteknight: thanks. | |||
| whiteknight | np | 15:54 | |
| we should start thinking about GSOC next year | 16:02 | ||
| this year I don't think we had a great list of suggestions for new projects | |||
| but we have Partcl and Cardinal that need help, other new compilers to write, seed libraries to wrap, a library distribution system to develop and manage, and a whole list of subsystems in Parrot needing a serious overhaul | 16:04 | ||
| dalek | a: 2885dd7 | fperrad++ | t/ (9 files): run parrot in current directory |
16:13 | |
| a: b6ebbc8 | fperrad++ | t/pmc/ (16 files): rewrite tests in PIR |
|||
| NotFound | whiteknight: in amd64 non optimized build, rakudo make test looks a liittle bit faster with GC_USE_LAZY_ALLOCATOR 1, but the difference is less than system load variations. Anyway, it surely is no significantly slower. | 16:17 | |
| whiteknight | NotFound: GC_USE_LAZY_ALLOCATOR shouldn't be a speed improvement really, GC_USE_LAZY_ALLOCATOR should be | 16:18 | |
| I mean, GC_USE_FIXED_SIZE_ALLOCATOR | 16:19 | ||
| NotFound | whiteknight: yeah, but I was checking anyway just in case | ||
| whiteknight | okay | ||
| So that confirms performance. We can probably make the lazy allocator the default if it works and doesn't hurt performance | 16:20 | ||
| NotFound | Actually it is | ||
| whiteknight | Well, I mean we can take out the flag and not have a non-lazy option | ||
| NotFound | Ah, ok. | ||
| whiteknight | chromatic was doing some tuning though, so we can wait for that before making any decisions | ||
| NotFound | +1 | 16:21 | |
| purl | 1 | ||
| NotFound | I'd like an allocator with pink neon lights | ||
|
16:22
MoC joined
|
|||
| whiteknight | that would be fine too | 16:22 | |
| NotFound | That's what meny people understand when you say "tuning" | 16:23 | |
| whiteknight | And I want to put a "Type-R" sticker on it | 16:24 | |
| to give it more horsepower | |||
| NotFound | I'd like better "TURBO", it has a retro fashion... | 16:25 | |
|
16:29
cotto joined
|
|||
| duk3leto | whiteknight: i am very excited about possibilities for parrot and perl 6 for gsoc next year | 16:30 | |
| whiteknight: starting to plan now is definitely a good idea. especially, read the end of summer summaries from other orgs that did really well. there is a lot to learn | 16:31 | ||
| NotFound | whiteknight: disabling the fixed size allocator is slower, maybe a 1% | 16:36 | |
| whiteknight | okay, so fixed-size *is faster*? | 16:37 | |
| NotFound | Yeah | ||
| whiteknight | okay, that's all I needed to hear | ||
| (although I'm upset that it's such a small increase) | |||
| we really need to convert Context PMC to use ATTRs | |||
|
16:38
kjeldahl joined
|
|||
| particle | by next tuesday, please. | 16:38 | |
| NotFound | I don't think rakudo make test is very good benchmark, but give us some idea | ||
| cotto | good morning | ||
| purl | Here I am, brain the size of a planet, and all they say is 'Good Morning' | ||
| whiteknight | particle: so give a week before the release without big changes? | ||
| good morning cotto | |||
| particle | NotFound: spectest is a much better benchmark | 16:40 | |
| heck, building rakudo is probably a better benchmark than rakudo's test target | |||
| many more pmc's to gc | |||
| no, not needed for this release, i just want you to work hard this weekend :) | |||
| NotFound | particle: spectest is too long for quick tests | 16:41 | |
| particle | NotFound: but building rakudo isn't | 16:42 | |
|
16:45
mokurai joined
|
|||
| cotto | particle, I want to add an option to parrot that specifies the name of the output file. Where can I store it in the time between when it's parsed by parseflags and when the runcore gets initialized? | 16:49 | |
| NotFound | 2m16 with fixed size allocator vs 2m20 without. in time make | ||
| amd64 unoptimized | 16:50 | ||
| whiteknight | There are some fixes to the allocator that I think I can make to improve things a little | 16:53 | |
| but that's going to have to wait till tonight | 16:54 | ||
| NotFound | 1m32 with --optimize. That's a difference | 16:56 | |
| whiteknight | that is pretty significant | 16:59 | |
| is that with or without the allocator? | |||
| NotFound | With, testing now without | ||
| whiteknight crosses his fingers | |||
| treed | Saw the message on the mailing list asking for tests from HLLs after the context_pmc drop. | ||
| whiteknight | treed: and? How is Cardinal doing? | 17:00 | |
| treed | It won't even start building. | ||
| running parrot_config results in: | |||
| Invalid charset number '1768057203' specified | |||
| whiteknight | ouch, that's as bad as can be | ||
| particle | cotto: (i'm on the phone) | ||
| treed | I can force it to not need parrot_config by writing build.yaml myself. | ||
| cotto | np | ||
| treed | But probably better to just fix that. | ||
| whiteknight | treed: I've never even heard of an error likethat | 17:02 | |
| NotFound | 1m64 with --optimize and without the FSA | ||
| 1m36 with --optimize and without the FSA | |||
| whiteknight | okay, that makes more sense | ||
| still not as good as I hoped | |||
| NotFound | Strange cross fingers :? | ||
| treed | src/string/api.c | 17:05 | |
| 767: "Invalid charset number '%d' specified", charset_nr); | |||
| whiteknight | maybe malloc performs much better then I expected | 17:06 | |
| treed: and where in the build process do yo get that? | 17:07 | ||
| NotFound | treed: that sounds like mixing parrot libs | ||
| whiteknight | treed: what platform are you on? | 17:16 | |
| jrtayloriv | Can someone help me debug a stupid programming error on my part? Here is (what I think is ) the relevant code, and the error message: pastebin.com/dcb9c3cf ... please tell me if there is any more info you need. | ||
| I'm trying to get rid of the GC_WRITE_BARRIER macros, and make functions that actually need to use it register a hook in the gc_sys structure I created. | 17:17 | ||
| It's probably something obvious I'm missing ... my C skills are pretty weak. | 17:18 | ||
| treed | whiteknight: That's when I call "parrot_config build_dir". | ||
| OS X | |||
| or any invocation of parrot_config | 17:19 | ||
| whiteknight | jrtayloriv: run "make headerizer" | 17:20 | |
| NotFound | jrtayloriv: you need to make headerizer before using the ASSERT_ARGS macro in a new function | ||
| And make headerizer usually doesn't work without executing make first, so you may need to temporarily delete the macro | 17:21 | ||
| (A nice project for beginners: fix this) ;) | 17:22 | ||
| jrtayloriv | thanks! ... now I can move on to my next batch of errors! :) | 17:23 | |
| whiteknight is very very interested to see this next patch... | |||
| NotFound | whiteknight: num_free_objects is used for something? Looks like is incremented and decremented but never checked | 17:29 | |
| whiteknight | NotFound: might not be, that's true | 17:30 | |
| I've got a lot of little cleanups I would like to make in there | |||
|
17:39
quek left
17:40
chromatic joined
|
|||
| whiteknight | hullo chromatic | 17:42 | |
| chromatic | morning | ||
| whiteknight | NotFound has been benchmarking the fixed-size allocator all morning, and there really doesn't appear to be any performacne benefit to it | 17:43 | |
| and I know you were doing some local work tuning the lazy allocator, but that doesn't currently offer any benefits either | |||
| NotFound | FSV of "benchmarking" | ||
| whiteknight | "timing" in either case, it shows that there is no real benefit | 17:44 | |
| which sort of surprised me, I figured it would be signficantly faster then malloc, especially once we get items coming in to the free list | 17:45 | ||
| Although maybe I'm overestimating how many calls to malloc we're making. | 17:46 | ||
| chromatic | I'll take a look. | 17:47 | |
| whiteknight | If that's only a small part of our performance problem, Amdahl's law says huge improvements to it won't affect overall system performance much | ||
| treed | BBL | ||
| whiteknight | chromatic: It's not a huge issue. I was hoping we could make up some of our performance losses with the new allocator, but isn't panning out that way | 17:50 | |
|
17:50
payload joined
|
|||
| whiteknight | we can look for other low-hanging fruit before the release | 17:50 | |
| chromatic | Last time I tried it, it did show some benefits. | 17:51 | |
| whiteknight | NotFound's numbers today were like 1-2% | 17:52 | |
| cotto | chromatic, what about this: | ||
| nopaste | "cotto" at 74.61.2.46 pasted "allow access to unprocessed argv list" (63 lines) at nopaste.snit.ch/17811 | ||
| chromatic | cotto, that's probably workable for now... but do we *need* that feature for the testing now? | 17:53 | |
| cotto | The alternative is always writing to stderr or stdout, which means an annoying redirect for any non-testing purposes. | 17:54 | |
| NotFound | cotto: can't you use getenv? | 17:55 | |
| chromatic | PARROT_PROFILE_OUTPUT or something? | 17:57 | |
| NotFound | Yes, something like that. | ||
| cotto | That'd also work and be less annoying. | 17:58 | |
| chromatic | Less code too. | 17:59 | |
| cotto | I'll just use that. Thanks for not missing a good obvious solution, NotFound++ | ||
| whiteknight | In reality, we probably don't want all our argument handling to happen internally to IMCC | ||
| at least not forever, since IMCC could be involved in a terrible code accident one day | 18:00 | ||
| that's a stylistic preference for now, of course | 18:01 | ||
| chromatic | I tried to move that code a couple of times. I always had trouble because it processes IMCC options too. | 18:02 | |
| whiteknight | yeah, we would need a non-trivial refactor of the IMCC interface to make that work correctly | 18:03 | |
| chromatic | Or leave that code there and pass in some non-mangled data to IMCC_initialize and let it set its own options. | ||
| whiteknight | I've actually been considering an interface refactor there for a while. Just haven't had any particular reason to attempt it | 18:04 | |
| It ain't so broke that it needs fixin' above any other projects | 18:05 | ||
| chromatic | It's not a big priority until pirc starts to get mergeable. | ||
|
18:11
davidfetter joined
|
|||
| Coke | whiteknight: re-ran the test. | 18:13 | |
| whiteknight | Coke: Let me guess, no real improvement? | 18:14 | |
| Coke | "2009-09-03 22:20",688,"r40959",97,7752,3570,2131,2051,8811,"--optimize" | ||
| "2009-09-04 09:05",690,"r40969",97,7752,3569,2132,2051,8287,"--optimize" | |||
| 8287/8811 | |||
| purl | 0.940528884349109 | ||
| Coke | looks like those 10 parrot revisions gave me a 5% speedup. | 18:15 | |
| (and one failed test. not sure what's up with that.) | |||
| so, just need to get it back down to 40897 speeds. (and then beyond. =-) | |||
| whiteknight | really? I'm surprised you saw 5% | 18:19 | |
|
18:21
darbelo joined
|
|||
| mikehh | All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r40970 - Ubuntu 9.04 amd64 (g++) | 18:25 | |
| cardinal - builds on parrot r40970 - rake test:all - same 3 failures - Ubuntu 9.04 amd64 (g++) | 18:27 | ||
| whiteknight | well that's surprising. Treed said he can't get cardinal to build at all | 18:29 | |
| mikehh | I noticed that - but it builds ok for at the moment | 18:30 | |
| NotFound | WTF is a HashIteratorKey ? | ||
|
18:31
Psyche^ joined
|
|||
| mikehh | ok for me | 18:31 | |
| Coke | NotFound: was that bacek? someone split up iterators into separate chunks. | 18:33 | |
| NotFound | I can avoid a segfault in partcl by fixing HashIteratorKey but don't know if the fix makes sense. | ||
| Well, I'll fix the segfault and let others make sense of it. | |||
| Coke | trac sloooow | 18:34 | |
| mikehh | rakudo (b51d94c) builds on parrot r40970 - make test / make spectest (up to r28187) PASS - Ubuntu 9.04 amd64 (g++) | 18:35 | |
| Coke | NotFound: that would potentially fix 2 of partcl's segfaults. | 18:36 | |
| (set-old and dict) | |||
| NotFound | Let me check parrot test first... | 18:37 | |
| mikehh | I tracked down the 3 failures in cardinal to r40788 - all three fail with - Method 'iterator' not found for invocant of class 'String' - they pass at r40787 and have failed since | ||
| dalek | rrot: r40971 | cotto++ | branches/pluggable_runcore/src/runcore/cores.c: [profiling] allow the output file to be specified by the PARROT_PROFILING_OUTPUT environment variable |
18:38 | |
| NotFound | Coke: set-old is the one I was checking | 18:41 | |
| dalek | rrot: r40972 | NotFound++ | trunk/src/pmc/hashiteratorkey.pmc: [pmc] fix? HashIteratorKey.get_string |
||
| Coke | updating, checking... | 18:43 | |
| chromatic | Why would an iterator exist without a hash? | 18:50 | |
| whiteknight | NotFound: looks sane to me | ||
| chromatic: that's actually a good question. I would be very interested to see the PIR snippet that was causing this | 18:51 | ||
| (and then make a test to insure it never happens again) | |||
| Coke | whiteknight: ... there is no snippet. | ||
| only several thousand lines of tcl. =-) | 18:52 | ||
| whiteknight | Coke: somewhere in that pile of TCL is a PIR fragment that causes this error | ||
| likely implicit, but it exists | |||
| Coke | not necessarily. | ||
| whiteknight | ...and it wouldn't be because...? | 18:53 | |
| mikehh | partcl r691 builds on parrot r40970 - make test PASS - Ubuntu 9.04 amd64 (g++) | ||
| Coke | I'm not saying you can't generate that with pir. I'm saying that you can't necessarily take the code I'm running, find the single offending bit, and then use that. there could have to be a GC run, some setup code ... | ||
| <initial something> <3000 lines of tcl which does god knows what include trigger a GC run> <sample<> | 18:54 | ||
| and the sample is where the segfault occurs, but if you run it alone, nothing happens. | |||
| nothing /bad/ | |||
| rindolf | whiteknight: which dynamic languages do you suggest as the basis for parspark? | 18:55 | |
| whiteknight: which Parrot front-end do you suggest as the basis for parspark? | |||
| Coke | that said, I have not tried to reduce that particular segfault down to a PIR sample. | ||
| whiteknight | rindolf: I'm not sure any existing language implementations are going to be a good prototype for an S-expression language. Your best bet is to start from scratch and look at developed implementations (like Rakudo or Cardinal) as you get stuck | 18:56 | |
| rindolf | whiteknight: ah. | ||
| whiteknight: is Cardinal a Ruby impl? | |||
| Tene | Yes. | ||
| whiteknight | Coke: knowing where the problem occurs in PIR, even if we can't always reproduce it completely, can be very instructive | ||
| rindolf | Tene: thanks. | ||
| Tene | s-exps? | 18:57 | |
| i have a scheme impl | |||
| whiteknight | "This code causes problems sometime" is good enough | ||
| Tene: what's the status of that? | |||
| rindolf | Tene: ah, for Parrot? | ||
| Tene | Yes, for parrot. | ||
| rindolf | Tene: nice. | ||
| Tene | i haven't read scrollback, what's up? | ||
| whiteknight: It's my standard PCT presentation demo. | 18:58 | ||
| whiteknight | Tene: What's it called? | ||
| Tene | github.com/tene/steme/tree/master | ||
| rindolf | Tene: fine. Want to start working on www.shlomifish.org/open-source/projects/Spark/ | ||
| Tene: ah. | |||
| whiteknight | Tene: rindolf is looking to implement a new lisp-like language on Parrot | ||
| rindolf | Tene: what licence is it under? | ||
| Coke | NotFound: dict.test and set-old.test now both complete. | ||
| ;that's an extra 291 PASSED. | |||
| NotFound | Nice :) | ||
| whiteknight | very nice | 18:59 | |
| Coke | that's >8% | ||
| Tene | rindolf: After at *least* 10 seconds of thinking about it, it's under the "Um... license? Dunno. Whatever you want." license. | ||
| rindolf | Tene: can it be MIT/X11? | ||
| Tene | rindolf: It certainly can be for you. | ||
| Coke | hey, yet another license! | ||
| rindolf | Tene: thanks! | 19:00 | |
| rindolf hugs Tene | |||
| Tene | rindolf: Spark is a new lisp-like language you'd like to write, I guess? | ||
| rindolf | Tene: yes. | 19:01 | |
| Tene: it's still in the planning stage. | |||
| Tene | That's great. I'd love to work with you on it. | ||
| Well, if you're planning to build it on Parrot. :) | |||
| rindolf | Tene: I released the first spec of it (back when it was called Park) after frustration from the fact that PG didn't release Arc. | ||
| Then he did, but I realised Arc kinda sucked. | 19:02 | ||
| Tene: yes , I'm planning to use Parrot. | |||
| dalek | TT #963 closed by coke++: segfault in Parrot_HashIteratorKey_get_string | ||
| Tene | I don't quite have the tuits to get into a completely different community right now. :) | ||
| rindolf | Tene: anyway read the web page www.shlomifish.org/open-source/projects/Spark/ | ||
| cotto | use the WTFPL | 19:03 | |
| Tene | rindolf: My email is /me at allalone.org if you want to contact me later. | ||
| Tene reads. | 19:04 | ||
| rindolf | Tene: ok. | ||
| Tene: got IM? | |||
| MSN/Jabber/etc.? | |||
| Tene | jabber: sweeks at gurulabs.com | ||
| rindolf | Tene: www.shlomifish.org/me/contact-me/ | ||
| Tene: adding you from ShlomiFish@jabber.org | 19:05 | ||
| Tene | great | ||
| rindolf | Tene: :-) | ||
| Tene: I've registered #spark on Freenode. | 19:06 | ||
| Coke ponders providing NotFound with beer credit. | 19:07 | ||
| dalek | rtcl: r691 | coke++ | trunk/ (3 files): rerun spec test, mainly to test speed for whiteknight++ Lost one test in upvar ?! |
19:08 | |
| rtcl: r692 | coke++ | wiki/SpecTestStatus.wiki: NotFound++ - these tests no longer segfault. |
|||
| rtcl: r693 | coke++ | trunk/config/PARROT_VERSION: This version avoids a segfault that gets us 291 more passing tests. |
|||
|
19:08
MoC joined
|
|||
| whiteknight | NotFound has been quite the rockstar this month | 19:10 | |
| NotFound gets a copy of Guitar Hero | |||
| whiteknight | NotFound *is* a guitar hero | 19:11 | |
| dalek | rtcl: r694 | coke++ | wiki/SpecTestStatus.wiki: add a table of contents |
19:12 | |
| chromatic | Is the switched core faster than the fast core? | 19:20 | |
| whiteknight | chromatic: from what I have seen, fast core is the fastest | ||
| makes some sense since it will be the friendliest to most branch predictors | |||
| switch core technically has fewer instructions per dispatch, but uses an indirect jump which is horrible on the predictors. | 19:21 | ||
| we're talking 100% miss rate | |||
| cotto | is there a portable way to do prefetching? | 19:22 | |
| whiteknight | cotto: what do you mean by that? | ||
| nopaste | "chromatic" at 72.87.39.97 pasted "GC Tuning Patch for Testing" (25 lines) at nopaste.snit.ch/17812 | 19:24 | |
| Coke | is fast core always built? | ||
| cotto | get the relevant memory into cache before it's needed so we don't get a cache miss | ||
| whiteknight | chromatic: can we make the values in that patch constant numbers, so we get the same numbers of PMCs allocated on x64 too? | 19:25 | |
| chromatic | Sure, I just wanted the most minimal patch here. | ||
| whiteknight | okay | ||
| In fact, if we could make the total arena allocation a multiple of the system page size, that would be the best | 19:27 | ||
| chromatic | Definitely. | 19:28 | |
| Coke | for partcl's "while.test" : | 19:29 | |
| -R fast : real 0m52.950s | |||
| <default> : real 0m55.665s | |||
| 52.950/55.665 | |||
| purl | 0.951226084613312 | ||
| Coke | so, not super fast. (but every bit helps.) | ||
| moritz | chromatic: timing 'make spectest' with your patch now | 19:30 | |
| dalek | rrot: r40973 | cotto++ | branches/pluggable_runcore/tools/dev/pprof2cg.pl: [pprof2cg] return the callgrind profile as a string and let main decide what to do with it |
||
| chromatic | 6.5% improvement on the primes.pasm benchmark with my patch. | ||
| whiteknight | Coke: Because our ops are so large and complicated, there is a relatively small boost to be had by improving dispatch | ||
| that is, most time is spent in the ops, not moving between them | 19:31 | ||
| Coke | chromatic: on speed? | ||
| chromatic | yes | ||
| whiteknight | If our op set was more atomic, like Lorito is intended to be, we would see more significant differences in dispatch mechanisms | ||
| Coke | (jit for while.test: real 1m19.580s | ||
| chromatic | 10.235% improvement between default core and fast core on primes.pasm benchmark. | 19:32 | |
| whiteknight | And JIT has more up-front cost. You need longer tests to amortize the costs | ||
| Coke | whiteknight: a test that runs for about sixty seconds isn't long enough? | 19:33 | |
| (obviously not, but should we reasonably expect that to be the case?) | |||
| whiteknight | Not saying it's not, just trying to provide some annotations :) | ||
| I assume that our JIT is producing heinously un-optimized machine code | 19:34 | ||
| chromatic | 26.51% improvement between default core and switch core on primes.pasm | 19:35 | |
| whiteknight | really? that is definitely not a result I have ever seen before | ||
| chromatic | I'm not claiming it's a representative test, just that it's interesting. | ||
| whiteknight | Once the pluggable runcore branch lands, I really want to take a stab at a context-threaded core | 19:36 | |
| chromatic | That's probably as good as we can get for now. | ||
| whiteknight | it really shouldn't be too hard to do, I hope, and should give us really good performance gains | ||
| well, not "really good", but nice | 19:37 | ||
| after that it's all blue skies and trace-based JIT | 19:38 | ||
| szbalint | and ponies | 19:41 | |
| Tene | Hmm. I still get that weird segfault when loading rakudo from steme. | 19:48 | |
| it goes away when I run Parrot with -G | |||
| whiteknight | solution: don't do that | ||
| Tene: can you reproduce that segfault consistently? | |||
| Tene | whiteknight: gist.github.com/181081 | 19:50 | |
| whiteknight: you can get steme at github.com/tene/steme/ | |||
| whiteknight | and that small amount of code triggers a segfault consistently? | ||
| Tene | Yes. | 19:51 | |
| whiteknight | well then | ||
| Tene | Every time I've run it for the past four or five months, iirc. | ||
| whiteknight | can you put this information into a ticket? | ||
| Tene | I think I already have... maybe. | ||
| magic-ticket-bot: Where is that ticket I posted once about something? | 19:52 | ||
| whiteknight | Oh, I'll have to dig for it | ||
| Tene | Oh, magic-ticket-bot doesn't exist yet. | ||
| trac.parrot.org/parrot/ticket/744 | |||
| you can ignore the start, these days | |||
| just 'make install' with rakudo | |||
| You even commented on it! :) | 19:53 | ||
| whiteknight | go me | 19:54 | |
| dalek | rrot: r40974 | NotFound++ | trunk/src/string/charset/unicode.c: [string] Dubious fix for an out-of-bounds string access, avoids TT #967 segfaults |
19:55 | |
| whiteknight | Tene: When does it segfault? Does it print the "zzz" or not? | ||
| Tene | It prints nothing. | ||
| It segfaults when it tries to load_language perl6.pbc | 19:56 | ||
| moritz | chromatic: with your GC patch Rakudo is a wee bit faster | ||
| whiteknight | oh, okay | ||
| moritz | (46 * 60 + 30) / (48 * 60 + 3) | ||
| purl | 0.967741935483871 | ||
| NotFound | Coke: more music for your ears | 19:57 | |
| whiteknight | We lost 13% on the contexts switchover, we're not going to make up all that ground by patching the GC | ||
| We do need to get into the Context pmc and fix that up eventually | 19:58 | ||
| chromatic | Hopefully we leak less memory with the Context switchover. | ||
| That'll help too. | |||
|
19:58
bacek joined,
iblechbot joined
|
|||
| darbelo | whiteknight: In time for the next release? | 19:58 | |
| whiteknight | darbelo: who knows? | 19:59 | |
| purl | and it's way past purl's bed time young man! | ||
| Tene | whiteknight: Oh... apparently it now segfaults with Cardinal, too. | 20:00 | |
| it used to work with Cardinal. | |||
| whiteknight | well, that's good for consistency | 20:02 | |
| Tene | Heh. | ||
|
20:08
donaldh joined
|
|||
| Tene | I wonder if hll interop between cardinal and rakudo still works... | 20:10 | |
| whiteknight | What we need to do is write compilers for at least two toy languages in the Parrot repo, and then write a whole suite of tests to make sure they can interact together | 20:17 | |
| jrtayloriv | whiteknight, If you have time later would you mind helping me figure out what is wrong with my gc refactor patch? It's really sloppy/unfinished right now (I'll make sure to clean it up before posting it to trac) but it at least completes the build of parrot at this point. Currently, it is failing at the "./parrot -o runtime/parrot/include/parrotlib.pbc runtime/parrot/library/parrotlib.pir" step with "Unknown PMC type to thaw 0" | 20:19 | |
| . Mind trying it out to see if you can find the error, and say what you do/don't like about it? If it doesn't work out, at the very least, there might be some good ideas that could be used to help clean up the GC system. | |||
| whiteknight | jrtayloriv: sure thing. I would love to see the patch | ||
| Although I don't know when I will have time to look at it | 20:20 | ||
| moritz | whiteknight: good idea | ||
| purl | moritz: Good Idea: Playing the scales on a piano. Bad Idea: Playing the scales on a fish. | ||
|
20:20
joeri joined
|
|||
| whiteknight | moritz: I'm wondering if we can get two bare-bones toy languages that we can use for meaningful tests | 20:20 | |
| because any compilers we write, we will want to use for all sorts of PCT and HLLCompiler tests too | 20:21 | ||
| jrtayloriv | whiteknight, msg me later when you can take a look -- thanks | ||
| whiteknight | GEnerated code tests, .HLL tests, etc | ||
| jrtayloriv: you could email me the patch | |||
| I'll be home in about 1hr and can see it then too | |||
| jrtayloriv | whiteknight, ok, will do. | 20:22 | |
| whiteknight | Okay, on that note I'm signing off. Later | ||
| dalek | kudo: 3db3e37 | moritz++ | build/gen_setting_pm.pl: [build] be a bit more idiomatic in gen_setting_pm.pl |
20:24 | |
| chromatic | Parrot_pcc_get_context_struct() is expensive. | 20:34 | |
| How about a little naughtiness? | 20:35 | ||
| Let's see if violating encapsulation improves things. | 20:36 | ||
| 11.35% performance improvement. | 20:38 | ||
| Heh. | 20:40 | ||
| darbelo | Didn't bacek just go through all sort of trouble to encapsulate that? | 20:41 | |
| chromatic | It's not so bad in this case. | ||
| The *real* problem here is that *every* REG_* and CTX_REG_* macro refetches the current context. | 20:42 | ||
| That's a problem in some ops which refer to multiple registers. | |||
| darbelo | *ouch* | ||
| chromatic | GCC can't optimize that because 1) it can't do cross-module optimizations 2) it doesn't know that these functions are pure, at least for the duration of the op and 3) there's a vtable dispatch it can't optimize through | 20:43 | |
| bacek | Good morning | ||
| purl | Here I am, brain the size of a planet, and all they say is 'Good Morning' | ||
| NotFound | A way to always have the current context in scope in the ops may be a good solution. | ||
| chromatic | Exactly what I had in mind. | ||
| First though, let's speed things up for people right now. | 20:44 | ||
| moritz | is there a portable way to write implicit Makefile rules? | 20:45 | |
| NotFound | moritz: yes, using gmake in every platform X-) | ||
| moritz | basically I want to write a rule that for each src/foo.pm calls a script to build build/foo.pm | ||
| and I have a list of all relevant files that match src/*.pm | 20:46 | ||
| bacek | chromatic: just "revert" r40871 | ||
| NotFound | moritz: maybe will be easy to do that in the Makefile generation | 20:47 | |
| chromatic | I don't think they're the problem necessarily. | ||
| dalek | rrot: r40975 | chromatic++ | trunk/src/call/context.c: [PCC] Made Parrot_pcc_get_context_struct() poke into the Context PMC's data big performance improvement (11.35% in primes.pasm), but it's also not as dangerous as it sounds for two reasons: * nothing extends the Context PMC, so it's safe for the time being * anything that did extend the Context PMC would need a similar struct here anyway This can be a temporary optimization until we stop extra context fetching in ops bodies. |
20:48 | |
| chromatic | Let's get some performance numbers on that and see what happens. | ||
| bacek to have "final sealed" pragmas for PMCs... | 20:51 | ||
| dalek | rrot: r40976 | bacek++ | trunk (4 files): [cage] Remove CHUNCKED_CTX_MEMORY and Parrot_gc_context. Contexts are |
20:56 | |
| rrot: r40977 | bacek++ | branches/context_attrs: Branch to remove Parrot_Context structure and use ATTRibutes |
|||
| chromatic | Parrot_inc_p (opcode_t *cur_opcode, Parrot_Interp interp) { | 20:57 | |
| ((*Parrot_pcc_get_PMC_reg((interp), (interp)->ctx, (cur_opcode[1]))))->vtable->increment(interp, (*Parrot_pcc_get_PMC_reg((interp), (interp)->ctx, (cur_opcode[1])))); | |||
| Definitely room for better macros there. | 20:58 | ||
|
21:03
ruoso joined
|
|||
| bacek | chromatic: it's autogenerated code. | 21:07 | |
|
21:14
PacoLinux joined
|
|||
| chromatic | Yep, easy to fix. | 21:17 | |
| dalek | rrot: r40978 | bacek++ | branches/context_attrs/src/pmc/context.pmc: Copy Parrot_Context content as attributes into Context PMC |
||
| chromatic | The switch core could be even faster here by using a stack variable above the switch and only fetching a new context *when the context has changed*. | ||
|
21:20
Whiteknight joined
|
|||
| chromatic waits for the backlog and the forehead slap | 21:23 | ||
| jrtayloriv | Whiteknight, just sent the email a moment ago | 21:24 | |
| Whiteknight | w00t | 21:25 | |
| jrtayloriv | :) | ||
| Coke | chromatic: seeing about a 4% speedup on t_tcl/while.test with recent parrot on default core, maybe 2% on fast core. | ||
| jrtayloriv | Whiteknight, really, really, unfinished right now ... just warning you :) | ||
| NotFound | Coke: have you looked at r40974 ? | 21:27 | |
| Whiteknight | jrtayloriv: I've seen worse | 21:28 | |
| hell, I've written worse | |||
| :) | |||
| chromatic | True. | ||
| Whiteknight | !!! | ||
| Coke | NotFound: saw it go by, haven't had time to recheck anything yet. will do so tonight or this weekend. | ||
| chromatic | As long as you're dogging on yourself, why not? When will I get that chance again? | ||
| Coke | chromatic++ #OH SNAP | ||
| jrtayloriv | Whiteknight, :) -- Please tell me everything I did wrong -- will make sure I don't do the same again -- thanks for taking a look at it. | ||
| Coke | problem #1: asking Whiteknight for coding advice. | 21:29 | |
| (OH SNAP) | |||
| NotFound | Coke: I'm running partcl spectest for a while and don't have any segfault yet | ||
| Coke | NotFound: I don't run the segfaults in the spectest run. =-) | ||
| Whiteknight | jrtayloriv: We should add an API function to src/gc/api.c that does WRITE_BARRIER stuff | ||
| NotFound | Oh, forgot that :D | ||
| Coke | you can run them directly with ./tclsh t_tcl/failing.test | ||
| Whiteknight | so that we we can keep all the pointers private to the GC system | ||
| Coke | also: | 21:30 | |
| code.google.com/p/partcl/wiki/SpecT...s#segfault | |||
| GeJ_ | Good morning everyone | ||
| Whiteknight | jrtayloriv: so like create a Parrot_gc_write_barrier and Parrot_gc_write_barrier_key function | ||
| Coke | two of those were covered by binary.test and parseExpr.test | 21:31 | |
| er, | |||
| that TT covered those 2. | |||
| jrtayloriv | Whiteknight, OK -- and would you then have that call the system specific write-barrier functions from a switch? | 21:32 | |
| Coke | that would leave 5 segfaults. | ||
| gotta run. | |||
| NotFound++ | |||
| jrtayloriv | Whiteknight, i.e. the ones in the GC_Subsystem struct? | ||
| Whiteknight | jrtaylor: inside the API functions we can call interp->gc_system->write_barrier() like you are doing now | ||
| we just don't want to give outside code access to GC data structures | |||
| jrtayloriv | oh, I see. | 21:33 | |
| NotFound | Coke: I don't have such file | ||
| Tene | Whiteknight: While I do agree that the hll interop stuff needs to be tested, it hasn't been actual hll interop stuff that's broken yet. | ||
| Whiteknight | Tene: so what is broken? | ||
| Tene | Whiteknight: it's always been GC, or other weird segfaults. | ||
| jrtayloriv | Whiteknight, Does the GC_Subsystem struct concept make sense though, as far as a place for each system to define it's own functions/data structures? | 21:34 | |
| Tene | For example, if I fudge the generated PIR so that rakudo.pbc is loaded before steme.pbc, everything works fine. Or if I call into steme code that calls into rakudo code, it works. | ||
| Whiteknight | jrtayloriv: yes, it makes very much sense | ||
| pmichaud | the hll interop isn't the source of the breakages, it just exposes them | ||
| PGE has had that problem for years | |||
| Whiteknight | jrtayloriv: A lot of this patch looks like fixups to the GMS core. I suggest separating that out into it's own patch | ||
| pmichaud: do you have any more insight about what, specifically, is causing this problem? | 21:35 | ||
| pmichaud | no | ||
| Whiteknight | Okay | ||
| nopaste | "tene" at 97.117.70.208 pasted "backtrace for WhiteKnight++" (64 lines) at nopaste.snit.ch/17813 | 21:36 | |
| Tene | that obj=0x1 looks very weird | 21:37 | |
| Whiteknight | Oh, I have seen that before, haven't I? | ||
| that stupid 0x01 bug | |||
| jrtayloriv | Whiteknight, Yes -- but also, a lot of the GMS stuff was spread around all over the place, in places it didn't need to be, so a lot of getting it cleaned up involved messing with GMS stuff. But there were also a lot of changes that I made while I was toying with the idea of getting GMS to work (before I realized that it's so broken it should just be rewritten), and I can easily seperate those changes from the others. | 21:38 | |
| Whiteknight | jrtayloriv: I would love to see GMS salvaged, but the smaller the patch is, the less pain it will be to apply it | 21:39 | |
| Tene: you in gdb right now? | |||
| Tene | No, but it's like 2s to get back there. | 21:40 | |
| ok, I am now | |||
| NotFound | I think that the root of the pbc problem comes from using the HLL of the current context, an attempt of solution might be creating a temporary 'parrot' context during the load. | ||
| bacek | Whiteknight: prove I'm wrong - we can't allocate arbitrary-size objects in current GC. | ||
| Whiteknight | Tene: run back to the segfault, and print out the frame #2 | ||
| Tene | How do I do that? | 21:41 | |
| Tene gdb fail. >.> | |||
| Whiteknight | actualy frame 1 | ||
| Tene: "up", then "frame" | |||
| Tene | it just prints the same line that's in the backtrace | ||
| #1 0x00007ffff7cbc54f in Parrot_Context_mark (interp=0x608080, pmc=0x9524d0) from /home/sweeks/parrot/lib/libparrot.so.1.5.0 | 21:42 | ||
| Whiteknight | well that's shitty | ||
| Tene | what should it do? | ||
| Whiteknight | it should print out the line of code that's being executed there | 21:43 | |
| I want to try to figure out which field in the Context struct has the bad value | |||
| pmichaud | just print the context struct, see what has 0x1 ? | ||
| bacek | Tene: l | ||
| Whiteknight | pmichaud: good idea! | ||
| purl | Whiteknight: Good Idea: Singing Christmas carols to your neighbors. Bad Idea: Singing Christmas carols to your neighbors on the Fourth of July. | ||
| bacek | it's probably value of PMC register... | ||
| Whiteknight | Tene: "p * (Parrot_Context*)pmc->data" | 21:44 | |
| Tene | $1 = {caller_ctx = 0x952530, bp = {regs_n = 0xa69de0, regs_i = 0xa69de0}, bp_ps = {regs_p = 0xa69e30, regs_s = 0xa69e30}, n_regs_used = {0, 0, 2, 10}, lex_pad = 0x6a9d30, outer_ctx = 0x0, current_sub = 0x731cb0, handlers = 0x6a9d30, current_cont = 0x952500, current_object = 0x0, current_namespace = 0x6dea00, | 21:45 | |
| results_signature = 0x, current_pc = 0x7ffff74fd6f8, current_results = 0x7ffff74fd6e8, c onstants = 0x70eed0, current_HLL = 1, warns = 0, errors = 5, trace_flags = 0, recursion_depth = 6, pred_offset = 17592167803956} | |||
| bacek | it is... | ||
| purl | Oh no it isn't! | ||
| Whiteknight | current_HLL? | 21:46 | |
| bacek | current_HLL is INTVAL | ||
| Whiteknight | so it has to be one of the P or S registers then | ||
| so here's the millon dollar question: Who the hell is writing 0x1 to one of the P or S registers? | 21:47 | ||
| and could whoever is doing it kindly knock it the hell off | |||
| darbelo blames gremlins. | 21:48 | ||
| gremlin | Who cares to blame ME??? | ||
| Whiteknight feeds bacek after midnight | |||
| dalek | rrot: r40979 | pmichaud++ | trunk/t/compilers/pge/perl6regex/rx_quantifiers: [pge]: typo in test description noticed by masak++ |
21:49 | |
| Whiteknight | Tene: "p i" | ||
| bacek | No way. It's old bug. | ||
| Tene | i = 8 | ||
| Whiteknight: it's not current_hll | |||
| Whiteknight | okay, so it's the eigth PMC register, because there are only 2 S regs and 10 P regs | ||
| Tene: thanks, we're past that now :) | 21:50 | ||
| Tene reading fail again. :) | |||
| bacek | <bacek> it's probably value of PMC register... | ||
| pmichaud | ninth PMC register :) | ||
|
21:50
MoC joined
|
|||
| pmichaud | can we see the contests of regs_p ? | 21:51 | |
| *contents | |||
| Tene | afk phone | 21:52 | |
| Whiteknight | nopaste? | ||
| purl | nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) 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) or gist.github.com/ or paste or gtfo | ||
| jrtayloriv | Whiteknight, so other than moving the GMS data structures into the generational_ms.h header, just leave out most of the changes to the functions in generational_ms.c? | ||
| nopaste | "Whiteknight" at 69.249.176.251 pasted "Patch for Tene++" (15 lines) at nopaste.snit.ch/17814 | 21:53 | |
| Whiteknight | jrtayloriv: yeah, those are my first suggestions. | ||
| rindolf | pmichaud: I've had lunch with someone from Tel-FOSS and he said he's using PmWiki. | ||
| Whiteknight | otherwise, it's a great looking patch | ||
| jrtayloriv | Whiteknight, thanks for your feedback -- I'll work on that and email you it once I've cleaned things up a bit. | 21:54 | |
| pmichaud | rindolf: excellent! I'm frequently surprised (and flattered) that PmWiki gets used as much as it does. | ||
| rindolf | pmichaud: yes. | ||
| chromatic suspects that the Context isn't really a context. | |||
| rindolf | pmichaud: I kinda like MediaWiki, but its syntax is very hard to parse. | ||
| Tene | Whiteknight: rebuilding... | ||
| rindolf | pmichaud: and its test suite has been broken for a while. | ||
| Whiteknight | chromatic: so like it's an unintialized value that's being treated as a Context? | ||
| that's a little harder now if they're PMCs | 21:55 | ||
| rindolf | pmichaud: but maybe because I'm the most used to MW. | ||
| MojoMojo also looks nice. | |||
| Whiteknight | because we can't even get into mark unless the PMC has a valid VTABLE | ||
| pmichaud | yes, I tried to be very careful with PmWiki's markup syntax. I find a lot of MW to be hard to parse. OTOH, a lot of people say the same for PmWiki's syntax, so who knows? ;-) | ||
| Tene | Whiteknight: it runs without a problem now. | ||
| whatever that means. | |||
| Whiteknight | It means that we can hide the problem a lot easier then we can fix it | 21:56 | |
| bacek | Whiteknight: bah! Cheater! | ||
| chromatic | Or it used to be a context. | ||
| Whiteknight | chromatic: that's true too. I think it's more likely that some rogue op is putting garbage into a register slot | 21:57 | |
| but time will tell | |||
| rindolf | pmichaud: I see. | 21:58 | |
| Whiteknight | I think it's a valid context, because it would have to be valid to get to this point | ||
| a lot of other pointers from that context have been marked by the time we get here | 21:59 | ||
| nopaste | "bacek" at 114.73.43.150 pasted "Epic PCC failure expose patch." (44 lines) at nopaste.snit.ch/17815 | 22:00 | |
| bacek | t/op/calling................................46/94 | ||
| # Failed test 'clone_key_arg' | |||
| # at t/op/calling.t line 1409. | |||
| # Exited with error code: [SIGNAL 6] | |||
| # Received: | |||
| # src/gc/alloc_register.c:534: failed assertion 'Parrot_pcc_get_regs_used(interp, ctx, REGNO_STR) > idx' | |||
| # Backtrace - Obtained 25 stack frames (max trace depth is 32). | |||
| This is root of problem | |||
| Whiteknight | bacek: that's this failure we're talkig about? | 22:01 | |
| bacek | Whiteknight: yes | ||
| Whiteknight | so the register allocator is allocating too few registers? | ||
| bacek | pcc accessing wrong register | ||
| darbelo | Say, is anyone on i386 available to test a small patch? | ||
| Whiteknight | no and no | ||
| bacek | or allocating less, than required register. | ||
| registers | 22:02 | ||
| purl | well, registers is better www.theregister.co.uk/2005/10/18/wi...y_problem/ | ||
| Whiteknight | I actually have to disappear. My wife wants me to all "do stuff" and "get off my ass" and "help out around the house for a while" | ||
| whatever that means | |||
| Tene | laaaaaaame | ||
| Whiteknight | that's what I said! | ||
| NotFound | Object must not override assign_pmc ? | ||
| Whiteknight | and I made a face | 22:03 | |
| Tene | *my* gf wants me to come home from work and take her to the park to socialize. | ||
| chromatic | My cat's breath smells like cat food. | ||
| Whiteknight | our lady friends should get together and take each other out to the park, while we stay on the computer | ||
| okay, later | 22:04 | ||
| pmichaud | My wife is falling asleep, which means I get to take daughter to fencing lesson | ||
| nopaste | "darbelo" at 200.49.154.172 pasted "[PATCH] Kill ->strstart uses in src/jit/i386/jit_defs.c" (56 lines) at nopaste.snit.ch/17816 | 22:05 | |
| darbelo | Can anyone on i386 can test nopaste.snit.ch/17816 check that nopaste.snit.ch/17816 works? | 22:06 | |
| Tene | sleep-fencing ftw | ||
| chromatic | blib/lib/libparrot.so: undefined reference to `Parrot_str_from_cstring' darbelo | 22:08 | |
| You probably meant Parrot_str_to_cstring. | 22:09 | ||
| With that changes, make testj passes fine for me. | 22:10 | ||
| darbelo | Ah. Yes, that's what I get for modifying files for other platforms. | ||
| chromatic | make test works fine for me too. | 22:11 | |
| darbelo | One less strstart. A whole lot more to go! | 22:12 | |
| pmichaud | afk, travel | 22:13 | |
| TimToady | /e | 22:23 | |
| nopaste | "jrtayloriv" at 96.238.200.246 pasted "[PATCH]: Minor GC refactoring" (349 lines) at nopaste.snit.ch/17817 | 22:24 | |
| jrtayloriv | Anyone mind taking a look at my GC patch? Whiteknight reviewed it for me, and told me to remove a lot of it (the patch was originally 800 lines, but I've cut it down to 360). | ||
| baah ... hold on -- I left out part of it when I was making the shorter patch -- that one builds, but it doesn't contain everything I've done. | 22:26 | ||
| darbelo | (/*JT: What SHOULD we be doing here?*/) : I would put a "default" GC there, or die horribly. | 22:30 | |
| jrtayloriv | darbelo, I was thinking die horribly, but didn't know how I should do so. But I guess I could just do the default instead. | 22:36 | |
| darbelo | I'm in favor of 'die horribly' "WTF? That's not a valid GC! *crash*" | ||
| but 'default' has merits too: "What? No, that's not a valid GC, let me fix that for you." | 22:37 | ||
| Maybe 'switch to the default and warn the user'. | 22:39 | ||
|
22:41
rg joined
23:03
dukeleto joined
|
|||
| chromatic | Heh. 30.565% performance improvement. | 23:04 | |
| 38.446% improvement overall. | |||
| jrtayloriv | jeebus ... What did you do? | ||
| chromatic | Avoided multiple context fetches in op bodies. | 23:06 | |
| dukeleto | chromatic: yay for that | ||
| jrtayloriv | Neato speedo! | ||
| dukeleto | chromatic: please translate for mere mortals | 23:07 | |
|
23:07
cotto joined
|
|||
| chromatic | vi src/ops/core_ops.c | 23:07 | |
| Read lines 17 - 20 | 23:08 | ||
| *every* register access would call a function to fetch the current context. | |||
| If you read four registers in an op body and assign to one, you call that function five times. | |||
| ... even if the context *does not change*. | |||
| By now, you're thinking "Hey, what if we cached..." and now you know. | 23:09 | ||
| dukeleto | chromatic: sweet | 23:10 | |
| cur_opcode[i] all over the place | 23:11 | ||
| dukeleto pours chromatic a frothy beer | 23:16 | ||
| chromatic | More benchmarks welcome. | 23:18 | |
| dalek | rrot: r40980 | chromatic++ | trunk/lib/Parrot (2 files): [ops] Changed slow/fast core ops body generation to look up the current context for *every* register access. This improves the primes.pasm benchmark performance by 38.45%. |
23:19 | |
| ose: r99 | Austin++ | trunk/build/Makefile.in: Removed SymbolLookupVisitor (replaced with Resolution) |
23:21 | ||
| jrtayloriv | chromatic, yep -- 2.08 seconds with old, 1.53 with your patch for fib.pir benchmark ... nice job! | 23:26 | |
| chromatic | Thanks. How was it before the context_pmc3 merge, any notes on that? | 23:27 | |
| Crazier thought: pass the context into op bodies, as the slow core always sets pc in the context before dispatching each op. | 23:31 | ||
| jrtayloriv | chromatic, don't know -- don't have any old revisions around right now. I had just checked out a few minutes prior to your patch (40979). | ||
| chromatic | The fast core is still 12.934% faster on the primes.pasm benchmark by avoiding that. Interesting. | ||
| jrtayloriv finally just took the time to learn how to check out a specific revision w/ SVN ... | 23:32 | ||
| 50% speedup ... I'm not impressed. Why don't you shave off another 10 or 15? ;) | 23:33 | ||
| darbelo | jrtayloriv: You can also do svn up -rWHATEVER in your working copy instead of checing aout a new one. | 23:34 | |
| s/checing/checking/ | 23:35 | ||
| dukeleto | anybody know what this means: ../../parrot -o ../../runtime/parrot/library/PCT.pbc --output-pbc PCT.pir | ||
| Invalid charset number '8' specified | |||
| jrtayloriv | darbelo, thanks -- didn't know that. | 23:36 | |
| szbalint | fib.pir is about 25% slower for me at HEAD than at 40521 (fairly old rakudo checkout) | 23:37 | |
| dukeleto | is anyone else using parrot with perl 5.10.1 ? | 23:41 | |
| cotto is | |||
| chromatic | szbalint, is that with r40980? | ||
| szbalint | yes | 23:42 | |
| chromatic | Still a ways to go then. | ||
| jrtayloriv | halfway there | 23:43 | |
| purl | i heard halfway there was closer than not at all | ||
| jrtayloriv | me too purl -- now shut up before I hurt you | ||
| dukeleto | purl, forget halfway there | ||
| purl | dukeleto: I forgot halfway there | ||
| chromatic | Hm, Parrot_gc_get_attribute_pool is more expensive than it should be. | ||
| dukeleto | cotto: are you using libicu as well? | 23:44 | |
| cotto | yup | ||
| dukeleto | cotto: well then, the world hates me | 23:47 | |
| mikehh | All tests PASS (pre/post-config, smoke, nqp_test, fulltest) at r40980 - Ubuntu 9.04 amd64 (gcc) | 23:48 | |
|
23:50
joeri left,
joeri joined
|
|||
| dukeleto | github is hating me now as well | 23:50 | |
| chromatic | Go eat worms. | 23:52 | |
| nopaste | "dukeleto" at 32.152.9.125 pasted "Invalid charset number '8' specified" (865 lines) at nopaste.snit.ch/17818 | 23:53 | |
| dukeleto | that happens to me on a clean checkout. i am totally stumped. | 23:54 | |
| all I know is that I upgraded darwin to perl 5.10.1 last night, so that is very suspicious | |||
| darbelo | dukeleto: Did you get the new perl from the same source as the previous perl? | 23:55 | |
| dukeleto | darbelo: i compiled from source | 23:56 | |
| darbelo: i didn't update the system perl, but I updated the perl that Configure.pl use's in my $PATH | |||
| darbelo | parrot is a bit too sensitive to changes in the flags used to compile perl. | 23:57 | |
| dukeleto | darbelo: that scares me | 23:58 | |