|
Parrot 6.3.0 "Black-cheeked Lovebird" | parrot.org/ | Log: irclog.perlgeek.de/parrot | #parrotsketch meeting Tuesday 19:30 UTC Set by moderator on 15 April 2014. |
|||
|
01:23
FROGGS_ joined
02:01
particle joined
02:39
rurban1 joined
02:42
cooper joined
02:44
rurban2 joined
03:48
plobsing joined
04:31
Psyche^ joined
05:50
rurban1 joined
05:52
rurban2 joined
06:53
rurban1 joined
07:53
rurban1 joined
08:07
particle joined
08:49
basiliscos joined
08:54
rurban1 joined,
FROGGS joined
09:55
rurban1 joined
10:56
rurban1 joined
11:56
rurban1 joined
12:57
rurban1 joined
13:39
bluescreen joined
13:49
bluescreen_ joined
13:58
rurban1 joined
14:15
rurban1 joined
14:23
particle joined
14:58
me joined
|
|||
| me | Hi, is there interest in rewriting the parrot/tools in pir or pasm ? | 15:14 | |
| FROGGS | me: hi | 15:15 | |
| me: what could be the reason to do that? | |||
| I mean, my guess is that at least some of them are used to build parrot, so you would have a bootstrapping problem if these were not Perl 5 scripts anymore | 15:17 | ||
| me | more streamlined development environment. Ive been tinkering with parrot and I noticed I had to jump through a few hoops to dabble with the pct. ie, i had to install strawberry perl. | 15:18 | |
| FROGGS | I see | ||
| me | i thought it might be nice if you could do it all from within parrot itself | ||
| FROGGS | but as I said, you can only rewrite scripts that are not used to build parrot | ||
| rurban | there was interest, and it was an explicit goal once, yes. | 15:19 | |
| ops2c for example was previously perl5, and is now nqp. This turned out to be bad. | 15:20 | ||
| me | maybe I will start with a few dev tools like make_language, and bring my progress to parrot | ||
| rurban | make_language should be easy, yes. | ||
| me | awesome, i thought id ask here before i started. | 15:21 | |
| FROGGS | me: but anyway, I do not think you can come around installing a Perl 5... you'll need to run Configure.PL at least :o) | ||
| me | yea, i will start with the easy stuff, make_language seemed simple and self contained | 15:22 | |
| FROGGS | me: have fun | ||
| brb & | |||
| rurban | but we rather need better examples, benchmarks and tests if you want to learn pir. pasm is deprecated. | 15:23 | |
| or pir libraries, like semaphores or threaded hyper-op helpers for perl6 | |||
| the tools are pretty hard to maintain in pir/nqp. perl5 is usually easier | 15:24 | ||
| me | im interested in seeing golang on parrot | ||
| rurban | that would a good lang to target, yes | ||
| go or rust or elixir or D | 15:25 | ||
| me | these small project will get me familiar with parrot | ||
| running golang on parrot would be nice, golang has very little supported platforms | 15:26 | ||
| rurban | because they have their own compiler and linker. but now they got gccgo back in | 15:27 | |
| golang would be a good fit, because of select and channels. moarvm did the same recently but they still have their lock based threading model, while parrot data structures need no locks | 15:29 | ||
| we need to defer writes to the owner, which is a different kind of beast. but fits better to golang | |||
|
15:31
bluescreen joined
|
|||
| me | ok, I will get my feet wet with the dev tools rewrites, and learn more about parrot. I might take up the golang challenge. | 15:31 | |
| rurban | :) the parser and compiler will be easy and fun. but the lib support is not that easy then. parrots idea was to share lib code accross languages (as in .net). but we are still lacking | 15:32 | |
| I'm not so happy with dev/tools rewrites btw. | 15:33 | ||
| me | Why? | 15:35 | |
| I thought it would be nice to have the dev tools written in a langauge the vm understood. | 15:36 | ||
| rurban | nice yes, but maintaining perl5 tools is even nicer. we still have no dev tools to deal with pir code. no debugger | ||
| missing libraries | 15:37 | ||
| refactoring previous tools from perl5 to pir turned out bad for parrot (jit, ops2c) | |||
| just saying that it is not the best idea | 15:38 | ||
| me | oh, seemed like a cool project that I could use to get myself familiar with parrot, rewriting one tool at a time, and maybe even digging deeper into the core of parrot | 15:40 | |
| I will take what you said into consideration and rethink my approach to learning parrot. thanks for responding. | 15:44 | ||
| rurban | :) | 15:47 | |
| but converting make_language is not a problem. would be an easy enough project and we don't care that much about it | 15:48 | ||
| me | a few tools are self contained, so it shouldn't be a big deal. | 15:49 | |
| rurban | we were considering removing our old nqp-rx and use the new upstream one, but we have now tools requiring it. | 15:50 | |
|
15:54
Chirag joined
|
|||
| Chirag | Hey! | 16:00 | |
| I am trying to add WBs to arrayiterator.pmc but I am not sure if I am doing it right.. | |||
| For instance, I changed | |||
| VTABLE FLOATVAL pop_float() { | |||
| ----- | |||
| SET_ATTR_pos(INTERP, SELF, --pos); | |||
| return VTABLE_get_number_keyed_int(INTERP, array, pos); | |||
| } | |||
| to --> | 16:01 | ||
| VTABLE FLOATVAL pop_float() { | |||
| ----- | |||
| SET_ATTR_pos(INTERP, SELF, --pos); | |||
| PARROT_GC_WRITE_BARRIER(interp, _self); | |||
| arrayiterator.c gets updated accordingly but 'make' still shows TODO GC WB to pop_float | |||
| Where am I going wrong? | |||
| rurban | Because you need to change the pmc2c compiler to omit that warning if you see that the WB is already there :) | 16:03 | |
| I just added that warning, but the code is not complete nor correct yet | |||
| Chirag | oh.. I was expecting it to magically disappear :D | 16:04 | |
| rurban | ah, and write SELF instead of _self in .pmc files | ||
| :) | |||
| Chirag | and INTERP | ||
| right? | |||
|
16:06
FROGGS joined
|
|||
| rurban | yes | 16:14 | |
| Chirag | rurban: how to change the pmc2c compiler? | ||
| to omit the warning? | |||
| rurban | look at the code, and my changes to pmc2c in the branch | 16:17 | |
| Chirag | ok.. | 16:18 | |
| rurban | see # Skip methods with manual WBs. | 16:33 | |
| next if $self->vtable_method_has_manual_wb($name); | |||
| so we can add manual :manual_wb attributes to each method. see capture.pmc and fixedintegerarray.pmc | 16:35 | ||
| or we can parse for PARROT_GC_WRITE_BARRIER in the body | 16:36 | ||
| and set $method->attrs->{manual_wb} then | |||
| Chirag | ok.. i was going through pmc2c/emitter.pm .. but that todo warning is for all the pmc files .. I ll try what you have suggested | 16:38 | |
| rurban | add_write_barrier is wrong. it should really use rewrite_RETURNS | 16:40 | |
| I'll clean it up a bit | |||
| `git grep RETURN\\( src/pmc` shows the already correct code which can get WB automatically | 16:46 | ||
| lower case return not | 16:47 | ||
| Chirag | should I make all the ones i edit - manual > | 16:50 | |
| ? | 16:51 | ||
| rurban | wait a bit. I'll improve pmc2s | 16:53 | |
| You can add manual WB where needed, and pmc2c will pick it up. If not, and you use RETURN() pmc2c will WB it automatically | 16:54 | ||
|
16:54
bluescreen joined
|
|||
| rurban | and be sure to make clean before make, because the pmc vtables are cached. | 17:13 | |
| Chirag | I think I am missing a trick here.. | ||
| according to me, I have two alternatives - automatic or manual WB | 17:14 | ||
| 1. automatic does not require me to add "PARROT_GC_WRITE_BARRIER(INTERP, SELF);" or "manual_wb" | |||
| "RETURN(VTABLE_get_number_keyed_int(INTERP, array, pos));" should suffice | |||
| 2. manual would look like - | |||
| VTABLE FLOATVAL pop_float():manual_wb { | |||
| } | |||
| rurban | 3rd case: manual by simply adding a PARROT_GC_WRITE_BARRIER or /* no PARROT_GC_WRITE_BARRIER | 17:15 | |
| I'm just coding this one | |||
| Chirag | so i have got that right? | ||
| rurban | RETURN did only work for PCCMETHOD's, I'll add support for all method types now | 17:16 | |
| yes | |||
| exactly | |||
| Chirag | but the first case doesnt get rid of the TODO warning and the second case throws an error of RETURN being an implicit declaration | 17:17 | |
| oh only PCC methods | |||
| rurban | extra work is only needed for cases without manual PARROT_GC_WRITE_BARRIER yet, and with multiple returns, or where the single last return bla needs a WB | ||
| current work: gist.github.com/rurban/11224739 | 17:18 | ||
| Chirag | but why is the first case not getting rid of the warning? | 17:19 | |
| rurban | the warning is wrong | ||
| Chirag | oh.. | 17:20 | |
| rurban | and add_write_barrier is also wrong | 17:29 | |
|
17:50
rurban1 joined
17:52
rurban2 joined
17:55
benabik joined
|
|||
| Coke | eliminating in-repo tools that require nqp-rx is probably a good idea, esp. since we have another language written for parrot that we ship. We should probably standardize on that one. (And anything that happens post-build that is currently using perl5 could be switched to be written in that lang also. It's just the stuff that happens pre-build that's tricky) | 18:01 | |
| (^^ from deep in backlog) | |||
|
18:36
rurban1 joined
|
|||
| Chirag | rurban: In default.pmc, there are no pop_float, pop_integer ... functions; | 19:15 | |
| but default.c has them | |||
| Where do I put the write barriers? there are no values returning for any function | 19:17 | ||
| rurban | default needs none I guess | 19:37 | |
| well, a few: add_method, assign_pmc, and the arithmetic methods which return PMCs | 19:39 | ||
| divide | 19:40 | ||
| the other methods are auto-generated by pmc2c | |||
| because default and undef are fallbacks | 19:41 | ||
|
19:48
bluescreen joined
|
|||
| Chirag | so i ll just ignore the TODO warnings for them | 19:54 | |
| rurban | yes. I added a new :no_wb attribute in my gist | 19:55 | |
| :manual_wb if the WB is hidden in a macro (like capture) | |||
| :no_wb if no WB is needed at all | 19:56 | ||
| Chirag | I have used manual_wb even if its not hidden | 19:57 | |
| rurban | yeah, but we could remove it when the compilers sees the WB | ||
|
19:58
cooper joined
|
|||
| Chirag | I have pushed two commits till now .. can u please take a look to see if i am doing it right? | 19:58 | |
| rurban | well, for arrayiterator.pmc the :manual_wb's are not really needed. we just need to improve pmc2c. the WB look good | 20:01 | |
| same for callcontext.pmc | 20:02 | ||
| Chirag | so i ll remove manual_wb from all of them? | 20:03 | |
| rurban | yes, it's too much noise | 20:04 | |
| Chirag | alright so manual .. only when WB is hidden | ||
| rurban | or :no_wb when no WB is needed | ||
| Chirag | so that would be for all the remaining functions .. | 20:05 | |
| rurban | yes | 20:06 | |
| all which do not create a new PMC | |||
| with pointers to the old one | 20:07 | ||
| so simple INTVAL, FLOATVAL, STRING are safe without | |||
| this will speed up our methods measurably | |||
| Chirag | i cant update my branch with your changes now? | 20:08 | |
| rurban | see e.g. for glossary www.iecc.com/gclist/GC-algorithms.html | 20:09 | |
| my changes are not really good enough yet. add_write_barrier still broken | |||
| but you can try to debug it | |||
| Ok, I'll push it as WIP | 20:10 | ||
| Chirag | I came across this before.. will give it another read | 20:12 | |
| dalek | rrot/rurban/pmc2c_orig: d3f21ff | rurban++ | lib/Parrot/Pmc2c/ (4 files): [pmc2c] WIP :no_wb, detection of :manual_wb, RETURN() also for VTABLE methods add_write_barrier now calls Parrot::Pmc2c::PCCMETHOD::rewrite_RETURNs, but this does not work yet. |
||
| rrot/rurban/pmc2c_orig: 94cecb2 | rurban++ | src/pmc/ (2 files): [pmc] partially use new WB markers |
|||
| rurban | WB is only needed when GC pointers (i.e. PMC stuff) interact with each other during a GC | 20:13 | |
| INT, FLOAT are atomic | |||
| you can rebase now | 20:14 | ||
| git fetch; git rebase rurban/pmc2c_orig | |||
| you can try to debug add_write_barrier. the manual_wb attribute must be visible for the method, but is not | 20:15 | ||
| You can increase your perl debugging foo :) | |||
| step until gen_c, then set a breakpoint at add_write_barrier | 20:16 | ||
| perl -d -Ilib tools/build/pmc2c.pl --c src/pmc/arrayiterator.pmc | |||
| Chirag | I ll change the manual_wb part and look into this tomorrow .. early classes :( | 20:18 | |
| rurban | perl -d -Ilib tools/build/pmc2c.pl --dump src/pmc/arrayiterator.dump it is | 20:19 | |
| The trick is to tell the compiler to do most of the stupid and obvious work | |||
| no prob, have fun | |||
| Chirag | thanks! bye :) | ||
| dalek | rrot/rurban/pmc2c_orig: 164fd19 | rurban++ | lib/Parrot/Pmc2c/Parser.pm: [pmc2c] set manual_wb for :no_wb and PARROT_GC_WRITE_BARRIER in --dump detect it now earlier, in the parser |
20:55 | |
| rrot/rurban/pmc2c_orig: 8a61e52 | rurban++ | lib/Parrot/Pmc2c/Method.pm: [pmc2c] small decl optimization |
22:01 | ||
| rrot: 532d915 | rurban++ | examples/shootout/regexdna.pir: [examples] enable regexdna.pir argv to allow gdb debugging we now accept an optional filename arg to regexdna.pir to study GC write barrier crashes with gdb --args ./parrot examples/shootout/regexdna.pir examples/shootout/regexdna.pir_input |
|||
| parrot/rurban/pmc2c_orig: 3e8b2f5 | rurban++ | / (49 files): | 22:02 | ||
| parrot/rurban/pmc2c_orig: pmc2c: inline gc write barrier into vtable methods | |||
| parrot/rurban/pmc2c_orig: | |||
| parrot/rurban/pmc2c_orig: removed wrong UNUSED(INTERP) and UNUSED(SELF) | |||
| parrot/rurban/pmc2c_orig: some methods with return values are marked TODO, need to add the write barriers manually. | |||
| parrot/rurban/pmc2c_orig: | |||
| parrot/rurban/pmc2c_orig: A missing write barrier caused one error: | |||
| parrot/rurban/pmc2c_orig: t/examples/shootout.t: 16 examples/shootout/regexdna.pir SEGV | |||
| parrot/rurban/pmc2c_orig: | |||
| parrot/rurban/pmc2c_orig: TODO GC write barrier to: | |||
| parrot/rurban/pmc2c_orig: default.pop_float | |||
| parrot/rurban/pmc2c_orig: default.pop_integer | |||
| parrot/rurban/pmc2c_orig: default.pop_pmc | |||
| parrot/rurban/pmc2c_orig: default.pop_string | |||
| parrot/rurban/pmc2c_orig: default.shift_float | |||
| parrot/rurban/pmc2c_orig: default.shift_integer | |||
| parrot/rurban/pmc2c_orig: default.shift_pmc | |||
| parrot/rurban/pmc2c_orig: default.shift_string | |||
| parrot/rurban/pmc2c_orig: CallContext.shift_pmc | |||
| parrot/rurban/pmc2c_orig: CallContext.shift_string | |||
| parrot/rurban/pmc2c_orig: Key.shift_pmc | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.pop_float | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.pop_integer | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.pop_pmc | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.pop_string | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.shift_float | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.shift_integer | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.shift_pmc | |||
| parrot/rurban/pmc2c_orig: ArrayIterator.shift_string | |||
| parrot/rurban/pmc2c_orig: Task.pop_pmc | |||
| parrot/rurban/pmc2c_orig: Capture.pop_float | |||
| parrot/rurban/pmc2c_orig: Capture.pop_integer | |||
| parrot/rurban/pmc2c_orig: Capture.pop_pmc | |||
| parrot/rurban/pmc2c_orig: Capture.pop_string | |||
| parrot/rurban/pmc2c_orig: Capture.shift_float | |||
| parrot/rurban/pmc2c_orig: Capture.shift_integer | |||
| parrot/rurban/pmc2c_orig: Capture.shift_pmc | |||
| parrot/rurban/pmc2c_orig: Capture.shift_string | |||
| parrot/rurban/pmc2c_orig: HashIterator.shift_integer | |||
| parrot/rurban/pmc2c_orig: HashIterator.shift_pmc | |||
| parrot/rurban/pmc2c_orig: HashIterator.shift_string | |||
| parrot/rurban/pmc2c_orig: ImageIOThaw.shift_float | |||
| parrot/rurban/pmc2c_orig: ImageIOThaw.shift_integer | |||
| parrot/rurban/pmc2c_orig: ImageIOThaw.shift_pmc | |||
| parrot/rurban/pmc2c_orig: ImageIOThaw.shift_string | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.pop_float | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.pop_integer | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.pop_pmc | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.pop_string | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.shift_float | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.shift_integer | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.shift_pmc | |||
| parrot/rurban/pmc2c_orig: ResizablePMCArray.shift_string | |||
| parrot/rurban/pmc2c_orig: Object.pop_float | |||
| parrot/rurban/pmc2c_orig: Object.pop_integer | |||
| parrot/rurban/pmc2c_orig: Object.pop_pmc | |||
| parrot/rurban/pmc2c_orig: Object.pop_string | 22:03 | ||
| parrot/rurban/pmc2c_orig: Object.shift_float | |||
| parrot/rurban/pmc2c_orig: Object.shift_integer | |||
| parrot/rurban/pmc2c_orig: Object.shift_pmc | |||
| parrot/rurban/pmc2c_orig: Object.shift_string | |||
| parrot/rurban/pmc2c_orig: OrderedHashIterator.pop_pmc | |||
| parrot/rurban/pmc2c_orig: OrderedHashIterator.shift_pmc | |||
| parrot/rurban/pmc2c_orig: OrderedHashIterator.shift_string | |||
| parrot/rurban/pmc2c_orig: PMCList.pop_pmc | |||
| parrot/rurban/pmc2c_orig: PMCList.shift_pmc | |||
|
22:04
dalek joined
22:09
rurban1 joined
22:10
rurban2 joined
22:17
travis-ci joined
|
|||
| travis-ci | [travis-ci] parrot/parrot#1025 (master - 532d915 : Reini Urban): The build passed. | 22:17 | |
| [travis-ci] Change view : github.com/parrot/parrot/compare/4...2d915c6992 | |||
| [travis-ci] Build details : travis-ci.org/parrot/parrot/builds/23630093 | |||
|
22:17
travis-ci left
23:04
rurban1 joined
23:05
benabik joined
23:09
davidfetter joined
23:15
rurban1 joined
23:19
janus joined
23:41
benabik joined
23:56
benabik joined
|
|||