|
Parrot 3.0.0 Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Goals: Fix ipv6-related failures | Test imcc_interfaces and annotations-tree branches Set by moderator on 31 January 2011. |
|||
| whiteknight | I am not liking how this parrot-instrument library is so heavily dependent on P6object | 00:01 | |
| it's a small nit, perhaps | |||
| I see what's happening. The .nqp source files aren't being built by setup.pir. When it tries to instantiate an Instrument;Probe (defined in NQP) IZ T3H FAILZ | 00:02 | ||
| cotto | yeah. | 00:03 | |
| I can add that in a few minutes. | |||
| whiteknight | I will probably want to rewrite setup.pir into NQP soon | 00:05 | |
| cotto | yeah | 00:11 | |
| pir is annoying | |||
| done | 00:18 | ||
|
00:18
kid51 joined
00:21
vmspb left
|
|||
| Hackbinary | hello, is pir what happens after parrot has been eaten by the cat? | 00:22 | |
| dalek | rrot-instrument: 4a0fb2f | cotto++ | setup.pir: tell setup.pir how to build InstrumentLib |
00:23 | |
| cotto | whiteknight, feel free to rewrite setup.pir now | 00:24 | |
|
00:25
contingencyplan left
|
|||
| dukeleto | ~~ | 00:36 | |
| Hackbinary | ~~? | 00:37 | |
| cotto | () | 00:39 | |
| Hackbinary | $/ | ||
| dalek | rrot/tt1988_pmcemitter: b8fc5c0 | jkeenan++ | lib/Parrot/Pmc2c/ (2 files): Delete unused functions. |
00:41 | |
| dukeleto | Hackbinary: ~~ means "hey bots, give me my messages" also, it is the DWIM operator | 01:10 | |
| whiteknight | Oh, I thought it was some weird ascii-artish way to say "waves" | 01:12 | |
| dukeleto | whiteknight: lulz | ||
| whiteknight: ~~ is the smart match operator in Perl 5 | |||
| cotto | if that's what "dwim" means, then that's what it is | ||
| s/"//g | 01:13 | ||
| dukeleto | DWIM = Do What I Mean | ||
| and DWIM rhymes with SWIM :) | |||
| cotto | nm | ||
| dukeleto is also sickly and slightly delirious | |||
| dalek | rrot-instrument: 8ae872e | Whiteknight++ | t/instrument (7 files): now that we are building the right .pbc, make sure to load it in the test files |
01:14 | |
| dukeleto | it is nice to see gsoc-instreument is compiling again | ||
| cotto | dukeleto, verhy | 01:15 | |
| dalek | rrot: 1e98c1e | NotFound++ | t/pmc/resizablepmcarray.t: test RPA new with negative size |
01:19 | |
| rrot/tt1988_pmcemitter: 7c6b432 | jkeenan++ | lib/Parrot/Pmc2c/PCCMETHOD.pm: Delete 2 more unused functions: gen_arg_flags(); gen_arg_accessor(). |
|||
|
01:21
theory left
|
|||
| dukeleto | (deleted dead code)++ | 01:22 | |
|
01:31
kid51 is now known as kid51_at_dinner
01:33
lucian left
|
|||
| dukeleto | # Exception is: type 44 severity 2 message 'Multiple Dispatch: No suitable candidate found for 'cmp_pmc', with signature 'PP->P'' | 01:46 | |
| is that exception type and severity new stuff? | |||
| dalek | Heuristic branch merge: pushed 305 commits to parrot/leto/embed_grant by leto | 01:50 | |
| Tene | dukeleto: eh? | 01:56 | |
| dukeleto: exception type and severity is very very old; it's been around for a long time | |||
| rather longer than I've been around, at least. | |||
| NotFound | dukeleto: looks like info from Parrot_ext_try in extend.t | 01:59 | |
|
02:00
benabik_away is now known as benabik
|
|||
| NotFound | I mean extend_vtable.t | 02:00 | |
| Tene | dukeleto: my plan for after my now-dead exceptions subclassing branch was to largely replace types and severities with a real class/role hierarchy. | 02:04 | |
| dukeleto: there's still code in my exceptions_refactor branch to do class-based exception handling instead of "type and severity number" handling. | 02:05 | ||
| dukeleto: I'm more than glad to talk at length about the exceptions system any time; just let me know. | 02:06 | ||
| whiteknight | I definitely do want to switch over to a class-based exception dispatch | 02:10 | |
| it's not super-high on my list of priorities, but I think it would be a very good thing | |||
| Tene | the code for it is pretty trivial, iirc | 02:12 | |
| I even had a patch to get Cardinal's exceptions and handlers working properly, I think. | 02:13 | ||
| I really wish I had got that merged before I dropped out. | 02:14 | ||
| whiteknight | undrop out | 02:31 | |
| We need more Tene | |||
| MOAR | |||
| cotto | whiteknight, do you have any idea what's going wrong with loading InstrumentLib.pbc? | 02:34 | |
| Tene | whiteknight: I seem to be slowly getting more-functional again. It might happen. There's an open invitation for anyone to try to motivate me however they like. I have no recommendations for what might make me more-likely to contribute again. | 02:35 | |
|
02:35
kid51_at_dinner is now known as kid51
|
|||
| whiteknight | cotto: I haven't looked at it since the last fix | 02:37 | |
| Tene: I don't want to pressure you, but we can obviously use more programmers with your talents | |||
| We always need people with good ideas, and the ability to write good code | 02:38 | ||
| and we sometimes need people with really crazy ideas | 02:40 | ||
|
02:41
cognominal left,
cognominal joined
|
|||
| benabik | And if someone with really crazy ideas can write good code, then it's a huge win, right? | 02:42 | |
| whiteknight | benabik: the portion of the time when the crazy ideas turn out good | ||
| dalek | rrot: ffc1295 | mikehh++ | src/pointer_array.c: fix a couple of what looks like copy/paste errors |
||
| rrot: 9cf3225 | mikehh++ | t/op/gc.t: remove trailing space |
|||
| benabik | Details. | ||
| whiteknight | benabik: Why, you have some crazy ideas that need testin'? | 02:47 | |
| benabik | I'd love to say yes, but nothing's come up yet... Although I do need an MS thesis and if I can make it Parrot/NQP/Perl6 related, so much the better. :-D | 02:50 | |
| kid51 | benabik: Over the course of this year we will be setting quite a few roadmap goals that are aimed precisely at the improvement of that chain of programs. | 02:51 | |
| So we can certainly use your assistance in that area. | 02:52 | ||
| cotto | benabik, fun. Do you have a specific area of interest? | 02:53 | |
| benabik | key51: Woo! I plan on registering for GSoC this year, so I might manage to get several months of work in. :) | 02:54 | |
|
02:54
preflex left
|
|||
| benabik | cotto: Planning on doing a "Compilers & Tools" concentrations. Haven't actually figured out a thesis yet, but need to do so soon. | 02:55 | |
| dalek | rrot/tt1988_pmcemitter: e221f0e | jkeenan++ | lib/Parrot/Pmc2c/P (2 files): Eliminated these unused functions: Parrot::Pmc2c::PCCMETHOD::find_max_regs(); Parrot::Pmc2c::PCCMETHOD::make_arg_pmc(). |
||
| cotto | benabik: sure, but that's a big topic | ||
|
02:59
preflex joined
|
|||
| benabik | cotto: Yeah, I know... :-/ I tend to be fascinated by language design, and I try to pick up a new one every so often. Just starting to get into implementation, so I'm not sure where my focus is going to land exactly. | 02:59 | |
|
03:06
whiteknight left
03:10
theory joined
03:16
kid51 left
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#7708) fulltest) at 3_0_0-474-g9cf3225 - Ubuntu 10.10 i386 (g++-4.5) | 03:28 | |
| dalek | rrot-instrument: d04d75d | cotto++ | setup.pir: reorder some files in setup.pir. still broken |
03:32 | |
|
04:18
allison left
04:20
benabik is now known as benabik_away
|
|||
| dalek | rrot-instrument: fbc86c0 | cotto++ | src/runtime/Instrument/Instrument.pir: load instrument_group via .loadlib This may not be the right fix in the long term but it gets some tests passing (or running at least). |
05:31 | |
| cotto | msg whiteknight t/instrumentop.t now segfaults in Instrument::run when calling imcc_run_api. | 05:40 | |
| aloha | OK. I'll deliver the message. | ||
| cotto | This library is an interesting use case for Parrot. There aren't usually two or more interps floating around and interacting. | 05:41 | |
|
05:54
fperrad joined
|
|||
| dukeleto | cotto: PL/Parrot has many interps | 06:00 | |
|
06:00
rurban_ joined
06:03
rurban left,
rurban_ is now known as rurban
|
|||
| dukeleto | cotto: but you statement still stands | 06:06 | |
| cotto: parrot has some rough edges when many interps are alive | |||
| dalek | rrot/leto/embed_grant: 9a20528 | dukeleto++ | t/src/extend_vtable.t: Improve Parrot_PMC_cmp_pmc test, but it still isn't passing |
06:17 | |
| rrot/leto/embed_grant: 0929079 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_concatenate |
|||
| dukeleto | i sure am good at coredumping parrot | 06:23 | |
| cotto: if i pass a Parrot_String instead of a String PMC to some extend_vtable functions, they core dump. Bug or feature? | 06:25 | ||
| cotto: it seems we are missing some assertions | |||
| sorear | Parrot_String and PMC* sound like they should be incompatible pointer types | 06:26 | |
|
06:35
benabik_away left
06:36
benabik_away joined,
benabik_away left
|
|||
| dukeleto | sorear: indeed | 06:36 | |
|
06:36
benabik_away joined
|
|||
| dalek | rrot/leto/embed_grant: 497f573 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_concatenate_str |
06:39 | |
| rrot/leto/embed_grant: a9050e2 | dukeleto++ | t/src/extend_vtable.t: Fix Parrot_PMC_floor_divide_int test |
|||
| rrot/leto/embed_grant: 53c54f9 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_get_iter |
|||
| rrot/leto/embed_grant: 7486820 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_get_namespace |
|||
| rrot/leto/embed_grant: ac2ad78 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_get_pmc |
|||
| rrot/leto/embed_grant: 8003559 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_get_pointer |
06:47 | ||
| rrot/leto/embed_grant: f4b2391 | dukeleto++ | t/src/extend_vtable.t: [t] Parrot_PMC_hashvalue |
|||
| cotto | dukeleto, it might be nice to add a check for that if we can do so without a significant performance hit, but I'd call it a feature. | 07:34 | |
| maybe with an unoptimized parrot | 07:35 | ||
|
07:54
theory left
08:00
fperrad left
|
|||
| cotto | The interface for VTABLE_concatenate is lta. | 10:08 | |
| dukeleto seems to have noticed this. | 10:09 | ||
|
10:30
contingencyplan joined
10:56
fperrad joined
11:41
sheant joined
11:50
contingencyplan left
11:51
lucian joined
|
|||
| dalek | nxed: r796 | NotFound++ | trunk/examples/fly.winxed: more eye candy in example fly |
11:51 | |
|
12:05
mikehh left
12:19
mikehh joined
12:33
sheant left
12:41
whiteknight joined
13:29
kid51 joined
|
|||
| Hackbinary | Hello #parrot | 13:34 | |
| whiteknight | hello Hackbinary | 13:35 | |
| mikehh | hi Hackbinary | ||
| tadzik | hi | ||
|
13:54
ambs joined
14:00
rurban_ joined
|
|||
| whiteknight | msg cotto I'm seeing segfaults in other tests too. I don't think it's a problem with IMCC, I think it's a problem with memory corruption. The other segfaults are all also happening inside the GC | 14:01 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | rrot/tt1988_pmcemitter: 405ce0e | jkeenan++ | lib/Parrot/Pmc2c/PMC/ParrotClass.pm: Remove lib/Parrot/Pmc2c/PMC/ParrotClass.pm |
14:02 | |
| rrot/tt1988_pmcemitter: 55d5820 | jkeenan++ | lib/Parrot/Pmc2c/ComposedMethod.pm: Remove lib/Parrot/Pmc2c/ComposedMethod.pm. |
|||
|
14:03
rurban left,
rurban_ is now known as rurban
14:17
cotto left
14:20
mikehh left
14:24
nwellnhof joined
14:34
lucian_ joined,
lucian left
|
|||
| dalek | nxed: r797 | NotFound++ | trunk/examples/fly.winxed: a bit more of eye candy can't harm |
14:42 | |
| rrot/tt1988_pmcemitter: 98f1766 | jkeenan++ | lib/Parrot/Pmc2c/PMC.pm: For more consistent design, eliminate package scope lexical '' in favor of key-value pair in object. |
14:43 | ||
|
14:55
jsut_ joined
15:00
jsut left
15:07
mikehh joined
15:11
ambs left
15:16
kid51 left
15:19
nwellnhof left
15:40
lucian_ left
16:00
vmspb joined
16:16
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#7823) fulltest) at 3_0_0-474-g9cf3225 - Kubuntu 10.10 amd64 (g++-4.5) | 16:28 | |
|
16:28
allison joined
|
|||
| luben | msg bacek I have tested gc_generational branch, it seems there is a problem with Hash PMC - attributes get collected prematureley. For gdb session of the crash, see: pastebin.com/nT3NwpJx | 16:36 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | p-rx/nom: 57d4969 | moritz++ | build/Makefile.in: missing dependency on nqp-builtins.pir |
16:47 | |
| p-rx/nom: e778745 | moritz++ | / (2 files): add skip() builtin to avoid test-out-of-sequence for skipped tests |
|||
|
16:49
jsut joined
16:54
jsut_ left
17:02
edenc is now known as corinthiano,
corinthiano is now known as edenc
17:18
theory joined
17:23
benabik_away is now known as benabik
|
|||
| benabik | o/ | 17:23 | |
|
17:36
nwellnhof joined
|
|||
| nwellnhof | ~ | 17:36 | |
| dukeleto | ~~ | 17:37 | |
| benabik: i was reading in the logs that you are interested in doing a thesis related to parrot? | |||
| benabik | dukeleto: Would be interesting. :-D | 17:38 | |
| dukeleto | benabik: yes, indeed. are you going for a MS or PhD ? | 17:39 | |
|
17:39
sheant joined
|
|||
| benabik | dukeleto: MS | 17:39 | |
| dukeleto | benabik: do you have some kind of concentration? What are you interested in? | 17:40 | |
| benabik | dukeleto: Haven't declared one yet, but I'm trying to get into a compilers "cluster" (as RIT names them). | 17:41 | |
| dukeleto: Well, it's technically "Languages and tools" | 17:44 | ||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#7835) fulltest) at 3_0_0-474-g9cf3225 - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) | 17:51 | |
| dukeleto | benabik: what specifically about compilers interests you? have you hacked on any parrot stuff already? | 17:57 | |
| benabik | dukeleto: I'm just starting to get into parrot. Only thing I've done was an overview of PCT for my compilers class: www.cs.rit.edu/~bcg2784/Courses/201...piler/PCT/ | 17:58 | |
| dukeleto | benabik: cool! I will take a look at that now | 18:00 | |
| benabik | dukeleto: Be sure to let me know where I went wrong. Wrote it up in a very rushed week. | ||
| dukeleto | benabik: are there any languages that you are interested in? We have lots of Parrot languages that need help | ||
| whiteknight | Parrot has a recursive-descent parser (NQP) and a PEG parser (ohm-eta). We could use an LALR parser generator | 18:01 | |
| dukeleto | benabik: such as Cardinal | ||
| whiteknight: that sounds like a good GSoC project | |||
| whiteknight | yes, I have it listed down as an option | 18:02 | |
| dukeleto | whiteknight++ | ||
| benabik: i think POST stands for Parrot Opcode Syntax Tree | |||
| benabik | dukeleto: I thought someone was commenting that Cardinal had issues due to problems between Parrot and Ruby's object models. | ||
| whiteknight | dukeleto: It looks like they start accepting GSoC mentoring organization applications on Feb 28. Obviously I want to make that happen. What can I do to get ready for that? | 18:03 | |
| are we going to partner with TPF again? | |||
| dukeleto | benabik: yep, it does. Parrots object model will be improving greatly soon, to unblock Cardinal development | ||
| whiteknight: not sure. I would prefer the parrot community to decide that, rather than just me. | |||
| benabik | dukeleto: 6model or other general improvements? | ||
| dukeleto | benabik: mostly 6model "trickling down" to parrot :) | 18:04 | |
| benabik | dukeleto: I don't know where I picked up "Optimized" from. I was poking around some obsolete docs when I was starting. :-/ | 18:05 | |
|
18:05
kid51 joined
|
|||
| dukeleto | benabik: no worries, this is a really cool intro to PCT | 18:05 | |
| benabik | dukeleto: A bit high level since I was writing for people halfway through a grad course in compiler construction. | 18:06 | |
| dukeleto: But I tried to keep it fairly step-by-step. | |||
| Ah! Found it. The wikibook had it as POptimizedST | 18:07 | ||
| dukeleto | benabik: interesting. I think whiteknight wrote that | ||
| benabik: also "Register-based instructions can also create far more efficient bytecode than a stack." Do you have a reference to back that up? I am not quite sure that is correct. | |||
| benabik | dukeleto: Was based on commentary from the professor, mostly. | 18:08 | |
| dukeleto | benabik: interesting. I would love too see a reference for that. Can you ask you prof for some relevant papers that show that? | 18:09 | |
| s/love too/love to/ | |||
| benabik | dukeleto: I'm worried it may fall into "common wisdom"... Which isn't always able to be proved. | ||
| dukeleto | benabik: also, i don't see a mention of Parrot being Continuation-Passing-Style vs. stack-based in your presentation | 18:10 | |
| benabik | dukeleto: Because I failed to notice? ~.~ | ||
| It may also depend on how you determine "efficient". It generally takes less opcodes to do the same thing on reg v stack. | |||
| dukeleto | benabik: i am weary of "common wisdom" :) People used to think that the world was flat ... | ||
| benabik: but I must say that I have not been keeping up with CS literature | 18:11 | ||
| benabik checks the dragon book, the most convient reference at the moment. | |||
| dukeleto | benabik: Parrot Intermediate Language (PIR) should be Parrot Intermediate Representation | ||
| benabik: if you put your git repo on github, i can send you patches :) I hope you don't mind my telling you corrections, I just want you presentation to be as correct as possible | 18:12 | ||
| benabik | dukeleto: The presentation itself isn't in the git repo, sadly. | 18:13 | |
| Although I suppose I could change that. | |||
| dukeleto | benabik: ah, i was talking about the text, i haven't checked out the pres yet | ||
| benabik | benabik: Well, yes. That's what I meant. >.< I should have breakfast so I can talk clearly. | ||
| dukeleto | breakfast++ | 18:14 | |
| karma breakfast | |||
| aloha | breakfast has karma of 1. | ||
| dukeleto | benabik: you also may want to mention that PMCs stand for PolyMorphic Containers, or Parrot Magic Cookies :) | ||
| benabik | That seems low. | ||
| dukeleto: That did get mentioned in the slides. :-D | 18:15 | ||
| dukeleto | benabik: cool :) | 18:17 | |
| benabik: s/Rakdudo/Rakudo/ in your Overview | |||
| benabik | dukeleto: I did mention rushed, right? | 18:18 | |
| dukeleto | # PARROT_REVISION: a file that should hold the version of Parrot needed to run your language. Unfortunately broken. | ||
| dukeleto is to blame for that, i guess | |||
| benabik: yep, not judging, just helping you improve it :) | |||
| benabik | dukeleto: On the list of things that were important when moving SVN->Git, that's fairly low. | 18:19 | |
| dukeleto | benabik: yeah, our svn->git converstion was bloody | ||
| benabik: s/Test Anywhere Protocol/Test Anything Protocol/g | 18:20 | ||
| plobsing | Test Anywhatsit Protocol | ||
| benabik | github.com/Benabik/cish | 18:21 | |
| dukeleto | benabik++ | 18:24 | |
| Test Aleph_0 Protocol ? | |||
|
18:26
jan left
18:38
jan joined
|
|||
| mikehh | rakudo (684fdf8) - builds on parrot (3_0_0-474-g9cf3225) - make test, make spectest_smolder[(#7843), roast (63157bc)] PASS - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) | 18:40 | |
| 27,634 ok, 0 failed, 610 todo, 1,847 skipped and 0 unexpectedly succeeded | |||
| mikehh afk - bbl | 18:41 | ||
| dukeleto | mikehh++ # rakudo testing | 18:44 | |
|
18:50
cotto joined
|
|||
| tadzik | dukeleto: wouldn't that be Too Much testing? :) | 18:52 | |
| or should that be Too Many: for it's countable ;) | 18:53 | ||
| plobsing | how many testings do we have today? | 19:04 | |
| testings is countable, testing is not (unless you count time as discrete) | 19:06 | ||
| tadzik | nah, Aleph 0 is countable. * | 19:09 | |
|
19:09
allison left
19:10
allison joined
|
|||
| dalek | nxed: r798 | NotFound++ | trunk/winxedst1.winxed: refactor argument list handling out of CallExpr and reuse it in return and yield |
19:12 | |
| NotFound | dukeleto: en.wikipedia.org/wiki/Myth_of_the_Flat_Earth | 19:14 | |
| dukeleto | in case anybody is wondering: OSCON proposals are due by tomorrow | 19:41 | |
|
19:43
contingencyplan joined
|
|||
| dalek | nxed: r799 | NotFound++ | trunk/winxedst1.winxed: fix error in tailcall optimization from r798 |
19:45 | |
|
19:55
Coke left
20:07
Coke joined
|
|||
| benabik | For those curious about register vs stack VM, I found an interesting paper: www.usenix.org/events/vee05/full_pa...-yunhe.pdf | 20:10 | |
|
20:12
lucian joined
|
|||
| dukeleto | benabik++ | 20:24 | |
|
20:24
vmspb left
20:37
shockwave joined
|
|||
| shockwave | Hello | 20:37 | |
| I have a couple of questions regarding method invocation from an embedding application. | 20:38 | ||
| What is the function to fetch the return value of a pir-method call. | 20:40 | ||
| Parrot_api_*? | |||
| plobsing | there is none. you need to set up the callcontext with room for return arguments. this can be specified by the signature used. | 20:41 | |
| shockwave | Thanks, plobsing. I read your reply in the mailing list. I've setup the method signature, but I'm not sure how to fetch the return value after the invocation is done. | 20:42 | |
| jnthn | PMC *retval = VTABLE_get_pmc_keyed_int(interp, callctx, 0) # for first positional arg, for example | 20:50 | |
| glancing the mail, s/callctx/sig/ | 20:51 | ||
| In Parrot, the same object used to make the call is then re-used for storing the results. | 20:53 | ||
| shockwave | jnthn, testing it now... | 20:55 | |
|
20:57
mikehh left
21:01
kid51 left
|
|||
| shockwave | Thanks, jnthn. I did this and it works: | 21:01 | |
| Parrot_PMC ret; | |||
| Parrot_Int num; | |||
| Parrot_api_pmc_get_keyed_int(mInterp, sig, 0, &ret); | |||
| Parrot_api_pmc_get_integer(mInterp, ret, &num); | |||
| purl paste | 21:07 | ||
| plobsing | aloha, purl? | ||
| aloha | plobsing: purl is pretty annoying girl | ||
| plobsing | shockwave: purl is gone T_T. use aloha in her stead. | 21:08 | |
| shockwave | plobsing. Thanks | ||
| aloha paste | |||
| plobsing | aloha, nopaste? | 21:10 | |
| aloha | plobsing: nopaste is is nopaste.snit.ch (works with the script in $_PARROT/tools/dev/nopaste.pl) | ||
| shockwave | Thanks, again :) | 21:11 | |
| nopaste | "shockwave" at 192.168.1.3 pasted "how to continuesly call a pir-method" (15 lines) at nopaste.snit.ch/30741 | 21:12 | |
|
21:13
mikehh joined
|
|||
| shockwave | Above, i pasted a C++ function that I'm using to continuesly call an update method on the PIR side. | 21:13 | |
| The update method runs, but after a second or two, I get a recursion error. | 21:14 | ||
| The method that is called is empty. | |||
| Should this line be invoked every time?: | 21:15 | ||
| Parrot_api_pmc_set_keyed_int(mInterp, mUpdateSig, 0, mMainObject); | |||
|
21:16
sheant left
|
|||
| plobsing | so the update method gets called multiple times before the recursion depth error is triggered? | 21:18 | |
| shockwave | plobsing, yes. | ||
| plobsing | recursion depth is tracked on the callcontext, so what might be happening is that the recursion counter is not being decremented properly on return. the short-run fix is to just use a new callcontext for every call. the long run fix is to isolate a test case, file a ticket, and alert someone more knowledgable about PCC (eg: whiteknight, chromatic, etc). | 21:19 | |
| shockwave | @plobsing: I see. | 21:20 | |
| plobsing: OK. I'll ask a little more info about it to those other parties. I'll see their recommendation. | 21:24 | ||
| NotFound | Parrot_pcc_invoke_from_sig_object push a new context and pops it before return. | 21:25 | |
| jnthn | If you're not careful, I suspect reusing a context could mean trouble. | 21:26 | |
| Like if it sticks a closure somewhere. | 21:27 | ||
| shockwave | I'll try the new context on every call approach. I worry about performance a little because that function will need to complete in below 32 millis. | 21:28 | |
| Since the call context is managed by the GC, isn't that going to just explode the memory isuage, since it's being called 30 timers per second. | 21:30 | ||
| bacek_at_work | ~~ | 21:42 | |
| nopaste | "shockwave" at 192.168.1.3 pasted "Another version of C++ update function." (20 lines) at nopaste.snit.ch/30742 | 21:46 | |
| bacek_at_work | luben, ping | 21:47 | |
| shockwave | The version I pasted above does not have the recursion error, but the memory comsumption then becomes an issue. The memory will continue to climb just be calling an empty method. | ||
| luben | bacek, pong | ||
| bacek_at_work | luben, yes, I found very bad behaviour of write_barrier VTABLE override. In the nutshell - it doesn't work in some circumstances. | 21:48 | |
| NotFound | shockwave: you can try to create one time the signature object and clone it in VMachine::update | ||
| bacek_at_work | I'll try to come with new solution for it. Worse case scenario - manually put write_barriers everywhere... | ||
| luben | ok | 21:50 | |
| shockwave | NotFound: What is the difference between creating a new sig and cloning one? Would new memory still not be created? | 21:51 | |
| bacek_at_work | seen kid51 | 21:52 | |
| aloha | kid51 was last seen in #parrot 3 hours 46 mins ago joining the channel. | ||
| NotFound | shockwave: that way you don't need to create each time, or to store, the creation auxiliary objects. | ||
| bacek_at_work | msg kid51 Can you cleanup "mmd" related stuff in Pmc2c? It's not used anymore (for at least 3 years now). | ||
| aloha | OK. I'll deliver the message. | ||
| shockwave | NotFound. I'll give it a try. Do you know if there is an example somewhere on how to clone an object? | 21:53 | |
| NotFound | shockwave: include/parrot/extend_vtable.h | 21:56 | |
| dalek | p-rx/nom: ad21c53 | jonathan++ | / (5 files): Role composition for when a class just does a single role (we don't do the role summation case just yet). Seems method and attribute composition works, methods in the class beat ones from the role and mentions of $?CLASS are correctly generic. |
||
| NotFound | newpmc = Parrot_PMC_clone(interp, oldpmc); | 21:57 | |
| shockwave | NotFound: Thanks | 21:58 | |
| NotFound | Maybe we should provide a Parrot_api_pmc_clone function. | 22:00 | |
|
22:01
rurban_ joined
|
|||
| NotFound | shockwave: if you are doing things critical in speed you should consider using the extension api, the embedding one trades off speed for reliability. | 22:02 | |
|
22:03
rurban left,
rurban_ is now known as rurban
|
|||
| shockwave | NotFound: :0 | 22:04 | |
| NotFound: Currently, I'm just trying to get it to run (also, without eating up all the memory). | 22:05 | ||
|
22:09
nwellnhof left
|
|||
| plobsing | shockwave: would it be possible to trigger the GC during a time when you are not making use of parrot otherwise (and in a different thread than your main application)? that could keep your utilization fairly low. | 22:09 | |
| shockwave | plobsing: Based on how I'm planning to embed Parrot, the update function will always be called 30 times per second. Then, the Parrot side of things will have a chance to do the logic stuff. There won't be a time when Parrot is not running. But, | 22:12 | |
| I'm also planning to essentially turn off the GC collection. Then, at some point during the game (pause screen, next level, death) perform a full collection. | 22:13 | ||
| plobsing | turn... off... collection???? | ||
| parrot is pretty memory hungry. we mainly focus on CPU cycle performance, when we're even trying to go faster. | 22:14 | ||
| I'm not sure running without GC is feasible for anything more than a toy program. I'd love to be proven wrong. | 22:15 | ||
| shockwave | plobsing: By turning off I mean that the GC would still allocate memory, but it wouldn't try to free it on its own. I would tell it when to perform the freeing aspect of the GC. | 22:16 | |
| plobsing | It does provide an interesting game-paradigm tho: finish the level before you run out of memory | ||
| shockwave | With the current GC, is it possible to turn off collection? | 22:17 | |
| And, likewise, is it possible to instruct the GC to perform a full collection? | |||
| plobsing | both are possible. I was trying to get you to perform the later at regular, controlled intervals. | 22:18 | |
| sorear | yes and yes | ||
|
22:18
cosimo joined
|
|||
| shockwave | I'm sure I'll have to test the best way to deal with memory issues, and pause times. | 22:19 | |
| The first thing will be how to make the C++ update function not constantly consume memory just by calling an empty method. | 22:20 | ||
| sorear | I suspect you'll find that leaving the GC turned off for more than a few seconds will be fatal | ||
| but ... only one way to know for sure | |||
| shockwave | I'm trying to do the clone thing that NotFound proposed, but there is no Parrot_api_* method for that, so I'm trying emulate a similar functionality. | 22:21 | |
|
22:39
PacoLinux left
|
|||
| Hackbinary | dukeleto, ping | 23:05 | |
| dukeleto | Hackbinary: pong | 23:06 | |
| plobsing: ping | 23:07 | ||
| plobsing++ # releasing Ωη;)XD | |||
| Hackbinary | dukeleto, I have been running through the PCT tutorial, and I'd like to ammend it. Is there any source lieing around, or should I just add tutorial repository to my github? | 23:08 | |
| dukeleto, that would be the squaak tutorial | |||
| benabik | I think that's part of the parrot repo: examples/languages/squaak/doc | 23:09 | |
| plobsing | dukeleto: pong | ||
| sorear | shockwave: as part of one of my benchmarks, Parrot can create 500,000 CallContext PMCs per second on a 7 year old computer without running out of memory ever | 23:10 | |
| dukeleto | plobsing: nice work on Ωη;)XD, i am wondering if it can be used with my nascent Jaspers project : github.com/leto/jaspers | ||
| plobsing: i am currently not attached to a specific PEG library | 23:11 | ||
| plobsing: but PEG.js has a javascript parser already | |||
| Hackbinary: i would suggest forking parrot.git on github and submitting pull requests. Thanks! | |||
| Hackbinary: also, take a look at github.com/parrot/parrot/blob/mast...rkflow.pod | 23:12 | ||
| plobsing | dukeleto: Ωη bootstraps from OMeta/JS which has a JS grammar in OMeta as part of the implementation | ||
|
23:12
benabik is now known as benabik_away
|
|||
| dukeleto | plobsing: ooooh, shiny | 23:13 | |
| plobsing: then Ωη could be a viable option for Jaspers | |||
| plobsing | OMeta/JS uses JS in stead of Winxed in the semantic actions of course, so there are a couple slight incompatibilities. | ||
| but yes, I agree that Ωη is a good candidate for implementing JS on Parrot if you like the idea of PEGs | 23:14 | ||
| Hackbinary | benabik / dukeleto thanks :) | ||
| benabik / dukeleto +1 | |||
| plobsing | and I include "have not been brain damaged by YACC" in "like the idea of PEGs" | 23:15 | |
| dukeleto: github.com/alexwarth/ometa-js/blob...mpiler.txt is the JavaScript grammar | 23:19 | ||
| dukeleto | plobsing: thanks! I am very interested in PEGs and have been reading everything I can get my hands on | 23:29 | |
| plobsing | ometa adds some non-standard syntactic sugar to pegs. it took me a while to figure out that "x" desugars to token('x') and ``abcd'' desugars to seq('a', 'b', 'c', 'd') | 23:32 | |
| everything else is either standard or fairly self-explanatory | |||
| nopaste | "shockwave" at 192.168.1.3 pasted "Method invocation code." (26 lines) at nopaste.snit.ch/30743 | 23:34 | |
| shockwave | sorear: I don't doubt it's something I could be doing, but I just don't know what's the way to do it right. | 23:35 | |
| If I comment out the function above, memory levels at about ~20 megs. If I run the function as above, you can see in the task manager that memory increases about 1 meg per second, and it never decreases. | 23:36 | ||
| The method it is calling is essentially empty. | |||
|
23:37
fperrad left
|
|||
| shockwave | *the PIR method it is calling^^^ | 23:37 | |
| plobsing | I'm not sure we can fully eliminate the memory utilization in calling parrot functions. CPS requires heap-allocated call frames almost by definition. | 23:41 | |
| the strategy I would advocate is better and more flexible garbage collection schemes to deal with this cost. | 23:42 | ||
| shockwave | plobsing: But allocating every call? Why not just once if it is the same call? | 23:43 | |
| plobsing: Also, something is going on because memory doesn't go down. | |||
| plobsing | memory doesn't go down because the garbage collector doesn't release memory back to the OS. if you run the code for long enough, it should level off once the GC hits the allocation threshold and realizes most of the memory in current use is garbage. | 23:44 | |
| but it will not release that memory back to the system. it will hold it in reserve. | 23:45 | ||
| shockwave | plobsing: Ok, I'll see how far up it goes. | 23:46 | |
| But, it is going up very fast. About 1 meg per second. | |||
| bacek_at_work | shockwave, you can call VTABLE_morph(interp, cc, PMCNULL) on old allocated CallContext (totally unspecified "hack") | ||
| shockwave | bacek_at_work: I'm currently having issues with those kind of functions, the ones that take a regular interp* as first argument. Since I'm using the Parrot_api_*, and those functions deal with an Interp PMC, I haven't been able to use those functions. | 23:49 | |
|
23:49
hudnix joined
|
|||
| shockwave | I tried using the same method to extract the Interp* from the Interp PMC, but I get endless errors when I try to use the macroes that the Parrot_api_* uses. | 23:50 | |
| bacek_at_work | shockwave, ah. Ok. I think we need dukeleto++ "Embed API" branch for exposing more VTABLEs to embedders properly | 23:51 | |
| shockwave | The GC is going on 200 megs. | 23:52 | |
| The GC just passed the 250 meg mark. Something is wrong. | 23:54 | ||
| There is no way that memory should be going up by a meg per second. And there is no way the GC should allocate all that memory and never clean up. | 23:55 | ||
|
23:55
contingencyplan left
|
|||