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