|
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 8 February 2011. |
|||
| dalek | rrot/generational_gc: b20e86a | bacek++ | src/gc/gc_gms.c: Use different stats to trigger GC |
00:16 | |
| rrot/generational_gc: f7ed1db | bacek++ | t/op/gc-leaky- (2 files): Increase number of iterations in gc test |
|||
| rrot/generational_gc: e19f4cf | bacek++ | src/gc/api.c: Add GMS to gc_sys_name. |
|||
| rrot/generational_gc: 34ef135 | bacek++ | t/op/gc-leaky- (2 files): Check mem_since_last_alloc for GMS in GC test |
|||
| whiteknight | nwellnhof: yeah, several failures are expected | 00:18 | |
| bacek_at_work | make test passed on gen_gc branch now. | ||
| whiteknight | bacek++ | 00:19 | |
| cotto_work | bacek++ | 00:20 | |
| How do you debug that so quickly? | |||
| whiteknight | magic. coding. robot. | 00:21 | |
| say it with me | 00:22 | ||
| Hackbinary | Magic. Coding. Robot. | ||
| cotto_work decommutes | 00:24 | ||
|
00:32
nwellnhof left
|
|||
| Tene | I'd lean more towards "put a lot of hard work in over a long time", which is rather more admirable to me than "magic". | 00:33 | |
| bacek_at_work | Tene, about 1.5 years actually. gen_gc for last 6 month. | 00:41 | |
| jnthn, ping | 00:43 | ||
| whiteknight | it looks like many of the remaining failures in imcc_compreg_pmc are because I'm not throwing exceptions properly on error | 00:45 | |
| cotto | Tene++ | 00:46 | |
| and bacek++ for being a hard-working coding robot | 00:47 | ||
|
00:51
vmspb left
01:01
benabik_ joined,
benabik_ left
01:02
benabik_ joined
|
|||
| dalek | rrot/generational_gc: a00a78b | bacek++ | src/string/api.c: Clean more flags in ugly hack in str_copy. |
01:09 | |
| dukeleto | ~~ | ||
| bacek_at_work | cotto, we do need some "very heavy GC test". Allocating a lot of PMC/STRINGs. In different generations. | ||
|
01:11
davidfetter left
01:13
kid51 joined
|
|||
| whiteknight | bacek: what does performance look like on that branch? improvement? | 01:14 | |
|
01:14
arnsholt left,
arnsholt joined
01:15
GeJ left
01:16
GeJ joined,
particle1 joined,
allison left,
Hunger left,
wagle left,
allison joined,
wagle joined
01:17
particle left,
[hudnix] left,
[hudnix] joined
01:18
Hunger joined
|
|||
| dukeleto | bacek_at_work: don't we have a gc stress test in examples/benchmarks ? | 01:18 | |
|
01:21
freeksh0w86 joined
01:23
dmalcolm_ left
|
|||
| whiteknight | nwellnhof++ I would never have found that GC bug, because I was only looking at code I had changed | 01:31 | |
| now that I'm past that, I feel like I can really make some progress on this damn brnch | |||
|
01:34
benabik_ left
|
|||
| dalek | website: jkeenan++ | "Do It for Python!" | 01:40 | |
| website: www.parrot.org/content/do-it-python | |||
|
01:55
freeksh0w86 left
02:01
sECuRE left
02:06
ryan joined
02:08
autark left
|
|||
| whiteknight is apparently a total n00b | 02:15 | ||
| I was passing a STRING* instead of a char* to Parrot_ex_throw_from_c_args | |||
| and I was wondering why my error messages were all b0rkd | |||
| kid51 | Didn't your mother warn you about that? | 02:16 | |
| whiteknight | my mother and her compiler | 02:17 | |
| Tene | my only fail on the generational_gc branch was t/pmc/socket_ipv6.t | 02:18 | |
| I think it's uploading a smoke report right now? | |||
| yeah, uploaded. | |||
| smolder.parrot.org/app/projects/rep...tails/8352 | |||
|
02:18
rurban left
|
|||
| dalek | rrot/whiteknight/imcc_compreg_pmc: c747815 | Whiteknight++ | / (5 files): be better about communicating success/failure from the guts of IMCC. throw a non-stupid exception on failure. This fixes some test failures, but not as many as I had hoped |
02:21 | |
| whiteknight | it bugs me how much text IMCC dumps out to stderr | ||
| plobsing | 2>/dev/null # problem solved! | 02:22 | |
| right? | |||
|
02:22
autark joined
|
|||
| whiteknight | rm -rf compilers/imcc/* | 02:22 | |
| that command makes me so happy, I could marry it | 02:23 | ||
| Tene | exec 2>/dev/null # all problems solved | ||
| plobsing | rm -rf compilers/imcc; git checkout compilers | ||
| do it as many times as you like | 02:24 | ||
| whiteknight | git rm compilers/imcc/*; git commit -a -m"HAHAHAHAA"; git push | 02:25 | |
| better than cocaine | |||
| well, I assume so anyway | |||
|
02:26
rurban joined
02:33
whiteknight left
|
|||
| kid51 | whiteknight/imcc_interfaces PASS smolder.parrot.org/app/projects/rep...tails/8351 | 02:34 | |
| nopaste | "bacek" at 192.168.1.3 pasted "gen_gc vs master "ops2c --core" "benchmark"" (65 lines) at nopaste.snit.ch/30922 | ||
| cotto | That's exciting news. | 02:35 | |
| bacek++ | |||
| thanks for all the work you're putting into that branch | |||
| bacek_at_work | We just have to fix our HLLs... | ||
| I have initial patch for rakudo (at home) | 02:36 | ||
| kid51 | bacek++ | ||
| bacek_at_work | But we'll need a lot of help from fperrad++ for Lua. I don't understand LuaFunction code at all. | ||
| plobsing | bacek_at_work: did you cook up some scheme involving switching around vtables to avoid requiring modifications? | ||
| s/did/didn't/ | 02:37 | ||
| bacek_at_work | plobsing, I got rid of it | ||
| kid51 | whiteknight/imcc_compreg_pmc branch: FAIL smolder.parrot.org/app/projects/rep...tails/8356 | ||
| bacek_at_work | I changed original VTABLE generation to put write barrier after call. | ||
| plobsing | bacek_at_work: how come some vtables get barriered and others not? eg: init vs init_int | 02:43 | |
| bacek_at_work | plobsing, I put write_barrier in :write vtables only. | ||
| but both init and init_int are marked with :write | 02:44 | ||
| plobsing | init is not getting the barriering AFAICT | ||
|
02:45
Drossel left
|
|||
| plobsing | although arguably, neither should get barriered because we can assume they operate on objects that will be in the nursery. | 02:46 | |
|
02:47
Kulag joined
|
|||
| bacek_at_work | plobsing, nope. It's barriered. | 02:47 | |
| commit 5b175bb2e2cea067aa4f784c409966ac4d9dd6b4 | 02:48 | ||
| Mark .init* functions with :write. | |||
| During initilization of PMC we can trigger GC. In this case we have to | |||
| put freshly allocated PMC into dirty_list to preserve old-to-young | |||
| pointers. | |||
| plobsing | generational_gc failures on x86_64 linux: t/op/gc-leaky-box.t[1,3] t/op/gc-leaky-call.t[3], t/op/gc.t[segfaulted] | ||
| bacek_at_work | plobsing, I fixed it few commits ago... | ||
| can you re-run them with verbose output? | 02:49 | ||
| plobsing | rebuilding with latest changes. will re-run. | 02:51 | |
| bacek_at_work: t/op/gc.t passes 123 tests before segfaulting (no plan, last test was "ok 123 - leaving write_barrier_1") | 02:56 | ||
| on latest | |||
| bacek_at_work | plobsing, shit... | 03:01 | |
| plobsing | t/op/gc-leaky-{box,call}.t appear to be fine now | ||
| it is happening outside of gc, in Parrot_Hash_get_pointer(), for a PMC with a null ->data | 03:03 | ||
| bacek_at_work | it's GC... | 03:04 | |
| Hash keys collected prematurely. Somehow. | |||
| plobsing | it is an optimized build fwiw. I'll try unoptimized in a sec. | 03:06 | |
| nopaste | "bacek" at 192.168.1.3 pasted "test patch for plobsing++" (17 lines) at nopaste.snit.ch/30923 | 03:10 | |
| bacek_at_work | plobsing, can you try optimized build with nopasted patch? | ||
|
03:12
Kulag left,
Kulag joined
|
|||
| plobsing | bacek_at_work: unoptimized build passes | 03:12 | |
|
03:13
ryan left
|
|||
| plobsing | bacek_at_work: with patch, still segfaults | 03:19 | |
| bacek_at_work | plobsing, it's bad... | ||
| plobsing | if I give you some GC parameters (please advise which ones), do you think you'd be able to reproduce the error? | 03:22 | |
| kid51 | generational_gc linux/i386 no optimize: one file FAIL: smolder.parrot.org/app/projects/rep...tails/8362 | 03:23 | |
| Sorry, 8362 was --optimize | |||
| bacek_at_work | plobsing, yes. At least I can try. | 03:25 | |
| kid51, there is no failures in smolder... | |||
| kid51 | Strange | 03:27 | |
| bacek_at_work | plobsing, I did reproduce it. We collect Hash prematurely. | 03:28 | |
| (gdb) up | |||
| #1 0xb7e642e0 in Parrot_set_p_kc_p (cur_opcode=0x811bd58, interp=0x8052020) at src/ops/core_ops.c:21949 | |||
| 21949\t VTABLE_set_pmc_keyed(interp, PREG(1), PCONST(2), PREG(3)); | |||
| (gdb) p _self->flags & b_PObj_on_free_list_FLAG | |||
| $28 = 131072 | |||
| kid51 | bacek_at_work: I got this: t/op/gc.t (Wstat: 11 Tests: 123 Failed: 0) Non-zero wait status: 11 Parse errors: No plan found in TAP output | 03:29 | |
| plobsing | kid51: that's the same error we're debugging | ||
| bacek_at_work | kid51, same failure as plobsing. | ||
| plobsing | and by we, I mean bacek++. I'm just the peanut gallery | ||
| bacek_at_work | :) | 03:30 | |
| kid51 | t/op/gc.t ................................... | ||
| All 123 subtests passed | |||
| bacek_at_work | plobsing, it's freshly allocated Hash PMC. At least it's from Gen0. | ||
| but CallContext is from Gen1. | 03:31 | ||
| ookey. | |||
| CallContext is sealed. Which means I missed update of PMC register somehow. | 03:32 | ||
| Gotcha! | |||
| plobsing | wait. do we WB on every set register? | ||
| bacek_at_work | In optimized builds REG_PMC/REG_NUM are accessing ctx directly. | 03:33 | |
| kid51 | meanwhile, without --optimize I get PASS on that branch: smolder.parrot.org/app/projects/rep...tails/8365 | ||
| bacek_at_work | plobsing, on every access. But after triggering WB it's disabled. | ||
| benabik | G'evening | ||
| nopaste | "bacek" at 192.168.1.3 pasted "Another patch." (14 lines) at nopaste.snit.ch/30927 | 03:37 | |
| bacek_at_work | plobsing, can you try it? | ||
| (nopasted patch) | |||
| old one can be wiped off | |||
|
03:39
Drossel joined
03:41
Kulag left
|
|||
| bacek_at_work | plobsing, yes. Looks like patching ops2c to emit WB is slightly better option. | 03:43 | |
| I'll commit current workaround and fix it properly later | |||
| karma jkeenan | 03:44 | ||
| aloha | jkeenan has karma of 289. | ||
| dalek | rrot/generational_gc: 500ddf6 | bacek++ | src/gc/gc_gms.c: Rerun headerizer |
03:45 | |
| rrot/generational_gc: 3917979 | bacek++ | src/gc/gc_gms.c: Put whole validate_objects into ifndef NDEBUG. |
|||
| rrot/generational_gc: f14c1a6 | bacek++ | include/parrot/context.h: Temporary workaround to enable write barriering of CallContexts. plobsing++ and jkeenan++ for testing. |
|||
| bacek_at_work | kid51, plobsing, can you retest optimized build with latest commit? | ||
|
03:46
simcop2387_ joined
03:48
simcop2387 left,
simcop2387_ is now known as simcop2387,
Kulag joined
03:49
Drossel left
|
|||
| plobsing | bacek_at_work: no more segfaults | 03:51 | |
|
03:51
simcop2387 left
|
|||
| plobsing | running fulltest | 03:51 | |
| bacek_at_work | plobsing++ # Yay! | ||
|
03:52
simcop2387 joined
|
|||
| bacek_at_work wander why do we have t/op/jit.t? | 03:53 | ||
| plobsing | they were tests originally created to test the jit, but are useful for testing any runcore | 03:55 | |
| they are the most basic of tests. if one were creating a runcore from scratch, those would be the ones that should be focused on to get off the ground. | 03:56 | ||
|
03:57
Kulag left
03:58
Kulag joined
04:02
kid51 left,
rurban_ joined
|
|||
| plobsing | bacek_at_work: failures in codetest: c_arg_assert, c_function_docs, c_cppcomments | 04:04 | |
|
04:05
rurban left,
rurban_ is now known as rurban
04:07
Kulag left
|
|||
| mikehh | plobsing: I fixed the first two in master, bacek uses c++ comments as markers for later removal | 04:08 | |
| plobsing | I know. those failures merely indicate that the tests got to there. | ||
| which is more or less pass | |||
| mikehh | plobsing: they were fixed after bacek merged master into generational_gc | 04:09 | |
| benabik | Woo! make test on gen_gc now only fails on checkdepend, which also fails in master. (src/platform.c). Now onto Rakudo. | 04:11 | |
| plobsing | bacek_at_work: any ideas to improve the "temporary workaround"? | 04:12 | |
| mikehh | generational_gc fails on g++ build: src/gc/gc_gms.c:1061:9: error: cannot convert ‘STRING*’ to ‘PMC*’ for argument ‘2’ to ‘void gc_gms_set_gen_flags(parrot_interp_t*, PMC*, int)’ | 04:14 | |
| benabik | Still segfaults building Perl6::Grammar in Rakudo. :'( | 04:15 | |
| plobsing | benabik: rakudo requires a patch for this. I beleive bacek has a patch. | ||
| benabik | plobsing: OIC | ||
| mikehh | I have no idea how to put casts into a macro :-{ | 04:17 | |
| benabik | mikehh: Like you put everything else in a macros: Very carefully. | 04:18 | |
| mikehh | benabik: hee - I hate macros in C | ||
| plobsing | mikehh: you like macros elsewhere? m4? lisp? | 04:19 | |
| benabik | mikehh: Some tools let you shoot yourself in the foot. Some tools start aimed at the floor. :-D | ||
| plobsing | OHAI I IS IMG MACRO | ||
| mikehh | benabik: one of the reasons I started using C++ (years ago) was to avoid macros | 04:20 | |
| benabik | mikehh: So you get to deal with templates instead... | ||
| Tene | bacek_at_work: do you have a rakudo fork on github, perhaps, or could I commit patches to a branch in rakudo for you? | 04:30 | |
| mikehh seriously needs sleep - it's 4:30am for me | 04:31 | ||
|
04:38
adu joined
|
|||
| bacek_at_work | Tene, it will be helpful. But I have patch at home. | 04:45 | |
| Tene | bacek_at_work: Ah. | ||
| You mean not everyone leaves their home workstation available over ssh constantly? ;) | 04:46 | ||
| dalek | rito: 4f737d2 | atrodo++ | internal_pmc/context.c: Remove debugging information |
04:47 | |
| rito: ad6297f | atrodo++ | / (2 files): Convert the ptrs struct in a PMC to an array of pointers |
|||
| rito: 0208700 | atrodo++ | / (5 files): Make the plunge so that names of the internal PMCs are Lorito_Str's |
|||
| rito: 8c2a2d7 | atrodo++ | core.c: Correct a typo where the wrong variable was being used |
|||
| rito: 8f0e31f | atrodo++ | / (4 files): Add internal_pmc/file as the code base for the file PMCs |
|||
| rito: e6ff0a0 | atrodo++ | loader.c: Correct a few bugs in the searching to load bytecode |
|||
| rito: 80ac662 | atrodo++ | loader.c: Don't increment the fileid until after the file has been opened |
|||
| bacek_at_work | Tene, yeah :) | ||
| rito: 7976f50 | atrodo++ | Makefile: Make the makefile a little more useful in showing errors |
|||
|
05:30
mtk left
05:36
mtk joined
06:02
rurban_ joined
06:04
adu left
06:05
rurban left,
rurban_ is now known as rurban
06:13
adu joined
|
|||
| dukeleto | ~~ | 06:17 | |
| cotto | hi dukeleto | 06:18 | |
|
06:31
woosley joined
|
|||
| Tene rather pleased about generational gc branch | 06:33 | ||
|
06:33
adu left
06:40
adu joined
|
|||
| dukeleto hears that gen_gc is passing "make test" ? | 07:21 | ||
| Tene | dukeleto: WFM | 07:22 | |
| dukeleto: you should submit a smoke report :) | |||
| dalek | rrot/generational_gc: a38436e | bacek++ | / (4 files): Add GC flags combinations and use them instead of specifing individual |
07:26 | |
| rrot/generational_gc: ad5a1f3 | bacek++ | / (2 files): Use macro instead of function to set generation flags |
|||
| rrot/generational_gc: 8cdd27a | bacek++ | src/gc/gc_gms.c: Remove now unused function |
|||
|
07:28
cosimo left
07:29
theory left
|
|||
| dukeleto | Tene: hah, I don't sent single reports. Only relentless waves of reports | 07:33 | |
| dukeleto switches to the gen_gc branch on his darwin smoker | 07:34 | ||
| ok, i got a darwin smoker on the gen_gc branch | 07:35 | ||
| what we really need are performance benchmarks for gen_gc | 07:36 | ||
| bacek_at_work | msg mikehh c++ build should be fixed now | ||
| aloha | OK. I'll deliver the message. | ||
| bacek_at_work | dukeleto, nopaste.snit.ch/30922 this one os good enough for me :) | 07:37 | |
| cotto | We know it's awesome, but it's important to quantify how awesome it is. | ||
| bacek_at_work | isparrotfastyet.com? | 07:39 | |
| Anyway gen_gc isn't tuned (yet). We can make it faster. | 07:41 | ||
| dukeleto | bacek_at_work: exciting! | 07:44 | |
|
07:46
fperrad joined
|
|||
| cotto | Is there a better place in the repo to do m0 planning than a pdd in docs/pdds/draft? | 08:15 | |
| dukeleto, ^ | |||
| dalek | rrot/m0-spec: 92f8218 | cotto++ | docs/pdds/draft/pdd32_m0.pod: add initial pdd for m0, completely composed of stubs for now |
08:22 | |
| ttbot | Parrot c34f278b i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/6733 | 08:25 | |
| dukeleto | cotto: i think that is a fine place | ||
| cotto++ # giving the m0 spec a home | 08:26 | ||
|
08:26
adu left
|
|||
| mj41 | sorry, not sure what ttbot is reporting ... trying to start building generational_gc branch | 08:28 | |
| dukeleto | mj41: no worries. sometimes things go bump in the night | ||
| mj41: good to see you around :) | |||
|
08:47
adu joined
|
|||
| mj41 | dukeleto: It's morning here. I just came to work :-) | 08:48 | |
| nopaste | "bacek" at 192.168.1.3 pasted "Initial patch for rakudo." (79 lines) at nopaste.snit.ch/30955 | 09:18 | |
| mj41 | tt.taptinder.org/buildstatus/parrot...ational_gc ... starting/configuring other clients | 09:35 | |
| bacek | mj41++ # Hooray! tt is even more useful now! | 09:36 | |
|
09:46
lucian joined
10:23
nwellnhof joined
|
|||
| ttbot | Parrot 117c0c1c i386-freebsd-64int make error tt.taptinder.org/cmdinfo/7110 | 10:27 | |
| dalek | rrot/generational_gc: a02c83d | bacek++ | src/gc/gc_ (2 files): Split print_stats into 2 functions to make it available in optimizied builds |
10:28 | |
| rrot/generational_gc: 6ef2023 | bacek++ | src/call/context.c: Add assert to CallContext PMC accessor. Object must be alive. |
|||
| rrot/generational_gc: d862ee4 | bacek++ | src/pmc/callcontext.pmc: Add assert to CallContext.push_pmc. Object must be alive. |
|||
| ttbot | Parrot d862ee46 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/7146 | 10:34 | |
|
10:37
lucian left
10:39
contingencyplan left
|
|||
| nwellnhof | bacek: i get a segfault when building runtime/parrot/library/nqp-setting.pbc with a GC threshold of 128K | 10:42 | |
| (generational_gc branch, of course) | |||
| bacek | nwellnhof, sigh... It's probably good thing if I can replicate it on my box. | 10:43 | |
| (If it's not in PBC_unpack) | 10:44 | ||
| nwellnhof | bacek: looks like it's related to TT #1990 | ||
| bacek | nwellnhof, indeed. It's crashed in do_sub_pragmas | 10:45 | |
| nwellnhof | i think we should block GC in Parrot_pf_execute_bytecode_program except for the final Parrot_pcc_invoke_sub_from_c_args | 10:46 | |
| bacek | nwellnhof, doesn't help... | 10:52 | |
| I'm trying it right now | |||
| Problem is: critical stuff was already collected. | 10:53 | ||
| nwellnhof | maybe this helps: github.com/parrot/parrot/commit/73...f0e4dc78ae | ||
| (my fix to whiteknight/imcc_compreg_pmc from yesterday) | 10:54 | ||
| bacek | ookey | ||
| let me try it | |||
| nwellnhof | no, it doesn't help. i just tried. | 10:55 | |
| bacek | sigh | 10:58 | |
| no, it doesn't | |||
| nopaste | "nwellnhof" at 192.168.1.3 pasted "GC block diff" (29 lines) at nopaste.snit.ch/30967 | 11:09 | |
| nwellnhof | that patch does the trick for me. but we should really fix TT #1990. | 11:10 | |
| bacek | nwellnhof, we should switch to Packfile PMC to properly fix it... | 11:13 | |
| nwellnhof | yes, indeed | 11:14 | |
| mikehh | bacek: get one failure - t/pmc/key.t - Failed 10/13 subtests - Non-zero wait status: 11 - segfaults after ok 3 | 11:58 | |
| bacek: also painfully slow - make test TEST_JOBS=4 -> real 15m4.460s, user 27m17.194s, sys 0m34.082s | 12:01 | ||
| bacek: presume it is because of the debug stuff | 12:02 | ||
|
12:04
dd070 joined,
adu left,
dd070 left
12:20
lucian joined
|
|||
| mikehh | bacek: much better with --optimize - Result: PASS - real 4m58.117s, user 8m20.595s, sys 0m30.366s | 12:26 | |
| bacek: thats on Ubuntu 10.10 i386 (g++-4.5 with --optimize) previous result no optimize | 12:28 | ||
|
12:34
lucian left
12:35
bluescreen joined
12:43
Kulag joined
13:17
mtk left
13:23
mtk joined
13:47
benabik_ joined
13:56
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 13:56 | |
|
14:03
benabik_ left
14:04
rurban_ joined
14:07
rurban left,
rurban_ is now known as rurban
14:15
plobsing left
14:26
GodFather joined
14:31
bluescreen left
14:57
mikehh left
|
|||
| whiteknight | msg NotFound can we change Parrot_ext_try so that the try function can return a value? | 15:11 | |
| aloha | OK. I'll deliver the message. | ||
| NotFound | whiteknight: pong | 15:14 | |
| whiteknight: What kind of value? | |||
| whiteknight | NotFound: nevermind, I think I will pass a data struct with a ->result field | 15:15 | |
| NotFound | whiteknight: yes, the idea was thas this is the more flexible way. | ||
| whiteknight | okay | 15:16 | |
| Hackbinary | good afternoon #parrot | 15:17 | |
| is there a 'glossary' of parrot-ish terms and acronyms? | 15:18 | ||
| NotFound | Hackbinary: docs/glossary.pod | 15:19 | |
| Hackbinary | thanks | 15:20 | |
| Coke | someone on #perl6 asking if they/we have nonblocking IO yet. | 15:21 | |
| nwellnhof | no, we don't | 15:23 | |
| NotFound | We have poll in handles, but limited to one handle each time is not very useful. | 15:25 | |
| Coke | if we had it, we might have another user. Just a data point. | ||
|
15:28
theory joined
|
|||
| PerlJam | Coke: I think it's more like "we might have another user that could leverage bunches of other users" | 15:29 | |
|
15:32
mikehh joined
15:40
theory left
15:43
mtk left
15:44
particle1 left
15:50
mtk joined,
particle joined
15:54
plobsing joined
|
|||
| dukeleto | ~~ | 15:57 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#8501) fulltest) at 3_0_0-509-gc6fa8b7 - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) | 16:00 | |
| cotto_work | ~~ | 16:16 | |
|
16:17
Patterner left,
Psyche^ joined,
Psyche^ is now known as Patterner
|
|||
| Coke | PerlJam: that's implied for all our users. | 16:20 | |
| but yah. | |||
|
16:21
woosley left
16:25
simcop2387_ joined,
simcop2387 left,
simcop2387_ is now known as simcop2387
|
|||
| dukeleto | cotto_work: mornin' | 16:27 | |
| dukeleto submits some talks to LinuxFestNW | |||
| Coke ponders submitting a talk to the local CF user's group to show them how much their regexes suck. | |||
| doesn't think it would go over too well. | 16:28 | ||
| whiteknight | I've had occasion to use CF at $dayjob. Can't say I disagree with your sentiment | 16:34 | |
| s/regexs/everything/ | |||
| plobsing | if ops2c generated different code to access 'in' GCable registers than for 'inout' and 'out' GCable registers we could WB only on the latter case, eliminating useless WB checks (which add to code size and amount of branching) on register reads. | 16:35 | |
| (the above is in the context of gen_gc) | |||
|
16:36
Andy joined,
simcop2387_ joined
|
|||
| benabik | Morning, all! | 16:37 | |
|
16:37
simcop2387 left,
simcop2387_ is now known as simcop2387
|
|||
| Coke | whiteknight: using CF9.0.1 and cfscript for as much as possible makes it much more palatable. as does using something like Framework/1 | 16:39 | |
| dukeleto | benabik: howdy! | ||
| Coke | but I still cringe whenever I have to deal with nested subcaptures. | ||
| plobsing | ping whiteknight | 16:46 | |
| mikehh | rakudo (03380cd) - builds on parrot (3_0_0-509-gc6fa8b7) - make test, make spectest_smolder[(#8512), roast (b3ef08d)] PASS - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) | ||
| 27,634 ok, 0 failed, 610 todo, 1,847 skipped and 0 unexpectedly succeeded | |||
| cotto_work | dukeleto: when do LinuxFest NW talks need to be submitted by? | 16:48 | |
| whiteknight | plobsing: pong | ||
| cotto_work | also, what are you talking about there? | 16:49 | |
| plobsing | whiteknight: how close is your IMCC work. there are changes I'd like to make to packfiles, but they'd involve changes to IMCC, and I'd like to avoid stepping on toes. | 16:50 | |
| whiteknight | plobsing: nwellnhof fixed my GC problems yesterday, and exposed some "real" test failures that I'm debugging right now. I have some pretty major changes coming in later today to the IMCC interface. I'm not going to be touching any code deeper than compilers/imcc/main.c | 16:51 | |
| Actually, I'm adding a new file compilers/imcc/api.c to implement a embedding API friendly interface to IMCC, and I'm rewriting frontend/parrot/main to use that instead | |||
| plobsing: What work are you doing? What's your timeline? This IMCC branch is at least 2-3 weeks from merging. | 16:52 | ||
| cotto_work | I'm curious about that too. | ||
| plobsing | whiteknight: I'd like to get started on packfiles being fully managed by PMCs. this of course involves changes to how IMCC handles things. | 16:53 | |
| I want to start on a base that already works, so starting from your branch in its current state is not an option. But, there are already changes on that branch that will almost certainly conflict with my changes should I work from master. | 16:54 | ||
| whiteknight | plobsing: Okay, what changes does that require? In IMCC right now we generate a PackFile*, then at the last moment we're wrapping it up in an Eval/UnManagedStruct. Are you thinking about adding the PMC component earlier in the process? | ||
| plobsing | whiteknight: IMCC will work with a PMC the whole time | 16:55 | |
| dukeleto | cotto_work: not for a while | ||
| whiteknight | that's awesome news | ||
| cotto_work | indeed | ||
|
16:55
dmalcolm joined
|
|||
| dukeleto | i just submitted a failing smoke report on generational_gc | 16:55 | |
| plobsing | even if it treats it as structy sometimes, it will always pass around a PMC handle and dereference from there. | ||
| dukeleto | cotto_work: actually, they are due tonight. hurry! | 16:56 | |
| whiteknight | plobsing: how long do you expect this to take? If it's going to take the same 2-3 weeks, maybe we work together on this IMCC branch. Give me a day or two to work out some of the bigger instabilities | ||
| cotto_work | dukeleto: heh | ||
| whiteknight | otherwise, I'm happy to incorporate your work into my branch later | ||
| plobsing | whiteknight: this isn't going to be a break-the-world type branch. I'm hoping to make a sprint sometime in the next week and get say all but 5 tests passing. | ||
| arnsholt | Is there a recommended way to move from "Configure.pl fetches from SVN" to "Configure.pl fetches from git" for my HLL? | 16:58 | |
| mikehh | winxed (803) - builds on parrot (3_0_0-509-gc6fa8b7) - make test/test1/test2 PASS, some examples ok - Kubuntu 10.10 amd64 (g++-4.5 with --optimize) | 17:00 | |
| whiteknight | plobsing: I'm making a hard push on the IMCC branch now, and want to get most of the major kinks worked out. You pick where you want to start working from, and I'll accomodate | ||
| plobsing: of course, if there's a conflict during a merge, I may ask for some help to correct it :) | |||
| plobsing | my opinion is that we cannot afford to remain blocked on this much longer if we intend to meet our 3.3 targets. | 17:01 | |
| whiteknight | right | ||
| plobsing | so I'll be branching master. | ||
| and begin work immediately | 17:02 | ||
| whiteknight | okay. I'll keep close eye on your branch | ||
|
17:06
lucian joined
17:16
jsut_ joined
|
|||
| plobsing | :qa | 17:19 | |
| ENOTVIM | |||
| cotto_work | That explains why my files keep disappearing. | 17:20 | |
|
17:21
jsut left
|
|||
| plobsing | actually I may have to shave yet another yack before I get to the packfiles. there is no acceptable builtin pointer type for what I want to do. | 17:22 | |
|
17:27
nwellnhof left,
ryan joined
|
|||
| plobsing | we have unmanagedstruct, managedstruct, and pointer. yet we still feel the need to implement custom pointer-ish pmcs from scratch like bigint, bignum, sockaddr, mappedbytearray, nci, nativepccmethod. | 17:28 | |
|
17:28
mj41_ joined
17:29
GodFather left
|
|||
| Coke | perhaps make them children of *struct? | 17:29 | |
| plobsing | *struct are poorly designed. the custom types are a symptom. | 17:30 | |
| the whole concept that the lowest level pointer objects carry around their representation for all to see (and dynamically calculate their own offsets) is wrong. we need to decouple the concept of "pointer" from the concept of "view" | 17:31 | ||
|
17:31
mj41 left,
mj41_ is now known as mj41
|
|||
| plobsing | My view is that a pointer is a pointer. nothing more. above that you can have managed pointers which have length, as well as optional free, mark, and clone functionality. on top of that you can have skins. | 17:33 | |
| dalek | TT #2002 created by kEAxTtHPsoXdTfX5++: Business cards | 17:36 | |
| TT #2002: trac.parrot.org/parrot/ticket/2002 | |||
| plobsing | 911! spam police! | 17:37 | |
| cotto_work | I don't see any spam. | 17:38 | |
| plobsing | should we have a captcha for account creation? | ||
| cotto_work | It's tempting to move to manual account creation or verification. | 17:40 | |
| dukeleto: what are you talking about at LinuxFest NW? | 17:42 | ||
|
17:42
vmspb joined
|
|||
| Coke | raising the bar on reporting bugs not necessarily a good thing. | 17:43 | |
| cotto_work | Coke: that's a significant concern. | ||
| Coke | (though you can report bugs anonymously via email, which is nice.) | ||
| cotto_work | if only trac didn't format such messages so uselessly | 17:44 | |
|
17:46
theory joined
|
|||
| Coke | cotto_work: easy to fix, just wrap in {{{}}} | 17:46 | |
|
17:53
kid51 joined
|
|||
| whiteknight | plobsing: fixing the pointer-related PMC fiasco would definitely be a good thing | 17:53 | |
| hardly high priority enough to end up on the roadmap however | |||
| if somebody can put together a nice design for a replacement, that would be a great first step | |||
| nopaste | "kid51" at 192.168.1.3 pasted "generational_gc: failures in t/pmc/key.t" (15 lines) at nopaste.snit.ch/31037 | 17:55 | |
|
17:55
kid51 left
|
|||
| plobsing | whiteknight: that's what I'm doig right now. then I'll reimplement all the pointerish stuff in terms of it. | 17:55 | |
| whiteknight | plobsing: I thought you were working on IMCC and packfiles? | ||
| benabik | Was that a drive-by bug report? | 17:56 | |
| plobsing | whiteknight: like I said, it looks like I'll have to shave this yack first. | ||
| whiteknight | ah, I missed that part | ||
| okay | |||
| power to you | |||
| plobsing | none of the pointer types currently built in provide all of the functionality I want | ||
| and the last thing I want to do is compound the problem by creating yet another custom purpose struct-pointer PMC type. | |||
| whiteknight | managedstruct, unmanagedstruct, pointer, and mappedbytearray can probably all be merged together without too much hassle | 17:57 | |
| I think there's benefit in keeping nci as a separate type, however | |||
| maybe that's just me | |||
| plobsing | whiteknight: it should also inherit properly to indicate that it is just another pointer | 17:59 | |
| it can skin on top of that as much as it likes | |||
| whiteknight | okay, I see what you are saying | ||
| yes, I'm in favor of that | |||
| I've been unhappy with managedstruct and unmanaged struct for a long time now. I would be very happy to see those two be overhauled | 18:01 | ||
| pointer is completely useless. I think it's only used inside PCC | |||
| plobsing | I actually see pointer as more like what I want, with a separate "pointer-view" type which can be used to skin pointers from managed code | 18:02 | |
| but pointer has a bunch of flat out stupid functionality attached | 18:03 | ||
| cotto_work | plobsing: how close is this to 6model? | ||
| plobsing | Pointer.get_string == segfault me harder | ||
| cotto_work: quite possibly fairly close. they overlap in some areas. but 6model is much bigger than what I want. | 18:04 | ||
| and will probably take much longer to land | |||
| whiteknight | plobsing: yes, pointer probably is a good base type, minus the crap. Like I said, it's mostly used in PCC so some of that crap is for that purpose | ||
| cotto_work | sure. I was just noticing that this sounds like a subset of that. | ||
| plobsing | if I do things right, 6model could be implemented somewhat in terms of this | 18:05 | |
| whiteknight | do it right | ||
| :) | |||
| plobsing | whiteknight: I'm always right ;) | 18:06 | |
| but sometimes the rest of the world is wrong ;( | |||
| whiteknight | well that's reassuring. Now we know that this project is in the correct hands :) | 18:11 | |
|
18:14
contingencyplan joined
|
|||
| whiteknight | ripping out crufty old code and replacing it with new and good things is very fun | 18:15 | |
| dukeleto | cotto_work: anything and everything | 18:21 | |
| whiteknight | urg, I updated some software on my Ubuntu VM, and now things are hella broken | ||
|
18:23
plobsing left
|
|||
| cotto_work | dukeleto: dairy farming and interstellar travel? | 18:28 | |
|
18:28
nwellnhof joined
|
|||
| dukeleto | cotto_work: that too | 18:29 | |
| i have at least 5 talk ideas to submit | |||
| I really hope they don't accept them all | |||
| cotto_work: would you be interested in doing some kind of "Parrot for Beginners" talk together? | 18:30 | ||
| cotto_work: i am not sure they allow that, but i don't like following rules anyway | |||
| whiteknight | "Parrot 4 t3h n00bz" | ||
| dukeleto | we can bring cluesticks with us and beat knowledge into peoples knuckles | 18:31 | |
| cotto_work | dukeleto: sure. I asked because I'd like to give a talk, but not talk about the same thing as you. | ||
| In the event that my oscon talk gets accepted, I want to get as much practice as I can. | 18:32 | ||
| dukeleto | cotto_work: of course. I am going to submit a PL/Perl6 talk, definitely. | ||
| dalek | rrot/whiteknight/imcc_compreg_pmc: e7ac3d3 | Whiteknight++ | / (2 files): remove a hack to support IMCC the old way |
||
| rrot/whiteknight/imcc_compreg_pmc: 83b1708 | Whiteknight++ | / (4 files): add in some API functions for IMCC so we can move some logic out of the front-end and into IMCC where it belongs. using the extending API is much more concise in these cases than using the embedding API, so we can cut down on a lot of bloated code. |
|||
| rrot/whiteknight/imcc_compreg_pmc: db1fa87 | Whiteknight++ | / (6 files): many changes to the new IMCC API. We're building again and doing about as well on the test suite as we were |
|||
| cotto_work | PL/Perl6 is pretty cool. | ||
| dukeleto needs to make it work again on modern stuff. | |||
| whiteknight | sorry, I had to push to get work off this infernal VM | ||
| dukeleto also needs to setup CI for it, so this junk doesn't happen again | 18:33 | ||
| nwellnhof | regarding the whole pointer thing: i think it would make sense to add a "nativ2e pointer slot directly to the PMC header. so we wouldn't have to allocate attributes for many PMCs like strings. | 18:36 | |
| *native | |||
| whiteknight | we used to do that. The pmc->data field used to be used for other things | 18:40 | |
| that raised hell with inheritance and subclassing for instance. Plus it made the allocator complicated as hell | 18:42 | ||
| adding a new field to every PMC header might be expensive | |||
| although we could use a flag and have "extended" PMC headers which contain a few more optional fields when needed | |||
| if our GC were smarter, we could have multiple PMC pools of various sizes, and have the attributes allocated right in line with the PMC header | 18:44 | ||
| nwellnhof | but then we wouldn't be able to "morph" PMCs. | ||
| whiteknight | we really can't do that now with most types. morph probably needs to die | 18:45 | |
| nwellnhof | it's a useful feature for some languages. Rakudo relies on it afaik. | ||
| btw, the inital gc_ms2 implementation added two words to every PMC header. now it's down to one. | 18:47 | ||
| benabik | nwellnhof: The only ref to morph I see in rakudo.git is a VTABLE entry with an empty body. | 18:48 | |
| whiteknight | which two? | ||
| nwellnhof | prev/next for a linked list | 18:49 | |
| whiteknight | right, okay | ||
| benabik | Although I suppose it could rely on something that uses morph and I wouldn't be wiser. | ||
| whiteknight | unlikely. Very few things use morph because it isn't consistently implemented throughout the codebase | 18:51 | |
| CallContext.morph, as an example I learned about recently, doesn't morph at all. It acts like a clear/reset | 18:52 | ||
| If you don't see any instances of the morph opcode, or VTABLE_morph in the rakudo codebase, it probably doesn't use it | 18:53 | ||
| and NQP too | |||
| benabik | If morph is being (mis-)used as other things, it seems likely it should be murdered and replaced with something more to the point. | ||
| whiteknight | thank you! | ||
| yes, that's exactly what should happen | |||
| murdered with a sharp stick | 18:54 | ||
| benabik | Only rakudo code ref to morph: src/pmc/objectref_pmc.template: VTABLE void morph(PMC *type) {} | 18:55 | |
| nwellnhof | Rakudo plays some games with PMC attributes directly. | ||
| benabik | But when the spot meant for one thing starts getting used for other things, it means the original meaning was useless... And when it's something like a VTABLE slot, that could be tricky. Encouraging people to mis-use VTABLEs can lead to funny errors. | 18:56 | |
| dukeleto | benabik: make sure you are looking at perl6/nqp as well | ||
| benabik | Funny "uh-oh", not funny "ha-ha". | 18:57 | |
| nwellnhof | all i'm saying is that having an indirection for PMC attributes is what makes them dynamic compared to the JVM for example. | ||
| lucian | i've been thinking about gobject lately | 18:58 | |
| benabik | dukeleto: I don't see any use of morph in NQP, actually. | ||
| whiteknight | I strongly suspect it isn't used | 18:59 | |
| and if that's the case, I say it gets ripped out and we maybe replace it with the kinds of vtables that we actually need | |||
| and without morph, We can add some non-trivial optimizations to the PMC allocator | |||
| dukeleto | i am +1 to removing the morph vtable with a few, more-specific, vtables | 19:00 | |
| which hopefully will be much easier to optimize | |||
| benabik: good, just wanted to make sure you were checking :) | 19:01 | ||
| benabik | whiteknight: If people (like rakudo) are playing with attributes directly, then we'd still need to be a little conservative. | ||
| dukeleto: I wasn't, but I'm pretty fast with ack and git-grep. :-D | |||
| nwellnhof | a VM for dynamic languages should have the ability to change the types of object dynamically. | ||
| dukeleto | benabik: as long as we deprecated appropriately, there should be an issue | ||
| nwellnhof: i agree. I just think the morph vtable is a bad design decision to get that feature | |||
| whiteknight | benabik: that's true, but if we can find out what they are doing to the attributes maybe we can provide better solutions to their problems | ||
| dukeleto | s/should/shouldn't/g | 19:02 | |
| benabik: rakudo is almost always amenable to "here, we made this less broken, please use the new shiny" | |||
| whiteknight | nwellnhof: Maybe. I'm not sure I agree. It's certainly a bit of a hassle to change the PMC type on the fly without causing memory leaks or other weird crap. This is all not to mention the problem of mapping data between two arbitrary PMC types | 19:03 | |
| benabik | Is morph the only way to cast a PMC? | ||
| whiteknight | at the moment | ||
| benabik | :-/ | ||
| whiteknight | a Class.map method might be a better alternative | 19:04 | |
| just switching the ->vtable and some flags on the PMC header, which is what we do now for the most part, is worthless. It's mapping of data that's the real problem | |||
| benabik | So a C-ish "x = (int) float_var" is "x = float_var; x.morph(int)"? | ||
| whiteknight | more or less | 19:05 | |
| nwellnhof | what i'm talking about is essentially smalltalk's "become" | ||
| NotFound | C is not a bad example for morphing-alike things. | ||
| whiteknight | nwellnhof: yeah, I suspect that's the primary inspiration behind our morph situation | ||
| NotFound | I mean, *is* a bad | ||
|
19:06
plobsing joined
|
|||
| benabik | NotFound: I meant C-ish more for the syntax than anything else. | 19:06 | |
| tadzik | I'd like Close to work well | 19:07 | |
| whiteknight | nwellnhof: the real problem is mapping data. If you don't preserve the data in some way, there's no real benefit to using morph. Mapping data could become a huge pain in the ass | ||
| you would need to add a per-class routine to handle mapping, and maybe per-class classes of mapper objects | |||
| it could all get out of control very quicklt | |||
| quickly | |||
| NotFound | IMO is more problem when you morph objects that maybe other parts are using for its own purposes | ||
| whiteknight | That said, there are some wins to be had if we can come up with a general solution to mapping data between HLL types, including types based on completely different object models | 19:08 | |
| THAT would be quite nifty | |||
| lucian | whiteknight: i don't think that can be solved generally | 19:09 | |
| dukeleto | whiteknight: that seems like a white whale right now | ||
| benabik | An analogue to Smalltalk's become is actually not bad. But that's not what morph appears to be doing. Morph swaps type, become swaps type _and data_. | ||
| dukeleto | whiteknight: i would love to see it, but i think we might want to focus on baby steps for now | ||
| whiteknight | right, that's my point | 19:10 | |
| dukeleto | whiteknight: with that end goal in mind | ||
| plobsing | become has nothing to do with the types in question. it should be implemented by the GC. | ||
| in fact, IIRC, rakudo already does something similar manually in the binder | |||
| (it's really ugly) | |||
| benabik | plobsing: With a base object class, you can do something like swap the data in-place instead of change all references to the object. | 19:11 | |
| whiteknight | a real, usable, flexible morph solution would look something like "morph(PMC *self, PMC *dest_class, PMC *mapper)", and we would need to add some standard methods to class | ||
| benabik | (Assuming there's enough memory at the destination, which might be an issue, I'll admit.) | ||
| lucian | i think morphing objects is a hard problem that can be solved with copying very quickly and inefficiently | ||
| plobsing | benabik: (at a simplified level) become should swap the vtable and the data pointers in the PMC pointer. | 19:12 | |
| no need to switch all instances | |||
| all instances point to the same header | 19:13 | ||
| benabik | plobsing: Right. That's about what I meant. :-) | ||
| lucian | plobsing: won't vtable functions operate that operate on instance data possibly break? (i may be misunderstanding pmcs) | ||
| plobsing | lucian: if I swap the data and vtables of PMC1 with those of PMC2, neither PMC has vtables that are inconsistent with the data representation of the PMC they represent | 19:14 | |
| lucian | plobsing are PMC1 and PMC2 instances? | 19:15 | |
| whiteknight | and the flags | ||
| actually, not all the flags, only the ones which are tied to the type | |||
| plobsing | lucian: (re: attr-less pointer PMCs suggested in backscroll) I'm working on a pointer type that has a notion of skinny vs. fat and manages both representations internally | 19:16 | |
| NotFound | Note that we have funny things like hash backpointing to the pmc that owns it. | ||
| whiteknight | NotFound: yes, that's something that we should probably fix eventually | ||
| plobsing | lucian: yes, PMC1 and PMC2 are instances of some type. I fail to see how that changes things. | ||
| lucian | plobsing: it doesn't. i thought you meant swapping the properties of the types | ||
| plobsing | types are instances too | 19:17 | |
| lucian | sure, but don't instances point to their type? | ||
| plobsing | yes. and if you swap out the type object from under instances, you get to deal with the fallout. with great power comes the ability to be left with an unmaintainable mess. | 19:18 | |
| same problem if you swap objects in under a type constraint. all of a sudden, then constraint is violated after the check. | |||
| whiteknight | These are all reasons why I think in-place morphing is a bad idea | 19:19 | |
| lucian | i see | ||
| i don't think hlls should have to deal with this | |||
| plobsing | but, the ability to harm yourself should not lead to an outright ban on stapplers (guns is such an overused analogy) | 19:20 | |
| dukeleto | in-place morphing seems to be very similar to in-place modifying opcodes, which we got rid of | ||
| whiteknight | plobsing: it's not just that there's the potential for harm. We lose a lot of optimization potential by having to support in-place morph | ||
| dukeleto | what are the implications of morph to our future JIT ? | ||
| lucian | plobsing: but is this particular stapler very useful? | ||
| whiteknight | we're hurting people who aren't even using morph | ||
| lucian | why not just copy? | 19:21 | |
| plobsing | lucian: you *CAN'T* fully implement smalltalk without it. | ||
| lucian: one use case is transparent lazy types | |||
| lucian | plobsing: i don't know smalltalk all that well, but i don't see how morphing can't be done with copying | ||
| plobsing | become != morph, but the argument is similar | 19:22 | |
| whiteknight | if we want to support the smalltalk becomes feature, we're still hardly doing it right | ||
| NotFound | If morph is something acepted to happen to any object, we risk to go to the same situation we had with strings before immutability: every time you return a PMC from anywhere you must return a copy just in case. | ||
| whiteknight | in that case, the PMC* header should be much thinner, and should point to an attributes structure which contains the vtable too | ||
| actually, that's probably still not the best way | 19:23 | ||
| nwellnhof | lucian: you can't copy because you might have other references to the object. | ||
| Coke | (getting rid of morph) how will you swap out vtables, then? | ||
| lucian | nwellnhof: right, so for that to work with copy you'd need another indirection? | 19:24 | |
| Coke sees he missed a bit of discussion after that note. | |||
| whiteknight | plobsing: in Smalltalk, is becomes a common operation? That is, should it be fast or can it be slow? | 19:25 | |
| plobsing | morph/becomes is powerful and it is expected to be used by users who *understand* the feature and its ramifications | 19:26 | |
| Coke | as usual, when planning to rip something out, please ask around (especially to rakudo) HLL devs to see if they actually need that bit you're annoyed at. | ||
| plobsing | if you morph/become and it breaks, you get to keep both halves | ||
| whiteknight | Coke: we're not planning anything yet | ||
| Coke | 13:54 <@whiteknight> murdered with a sharp stick | 19:27 | |
| lucian | btw, i'm sort of confused and annoyed with parrot's object system(s) in general | ||
| nwellnhof | lucian: i'm not sure if i understand your question but you need at least one level of indirection. | ||
| whiteknight | Coke: We *are* discussing it, but we're not planning it | ||
| Coke | I can see where folks reading backscroll might not realize that. | ||
| k. | |||
|
19:28
jan left
|
|||
| whiteknight | Coke: and my personal wishes hardly qualify as official Parrot developer team plans, I'm sorry to say | 19:28 | |
| lucian | nwellnhof: and if you had a second level of indirection, you could copy and swap the pointers | ||
| nwellnhof | lucian: one indirection is enough | ||
| NotFound | plobsing: Who many people in earth understand Smalltalk? ;) | ||
| Coke | whiteknight: given that you're a core developer and on the board, again, I can see where people reading the backscroll or your blog might not get that. | ||
| NotFound | S/Who/How | ||
| whiteknight | nwellnhof: it's worth noting that properly separating out a PMC header from it's attributes and data is a key component for a copying/compacting garbage collector | ||
| plobsing | whiteknight: traditionally, smalltalks had an "object table", and become was fast (just update the table entry). most modern smalltalks omit the object table in favour of more pre-dereferenced objects, and become is slow. | 19:29 | |
| whiteknight | so there's a chance we could support that as well if we properly implement morph | ||
| NotFound | So become became a different thing? | ||
| whiteknight | plobsing: Okay, because I'm thinking that if we need to re-allocate the attributes struct and call some kind of map/update routine it could become pretty slow indeed | ||
| plobsing | Parrot has an analogue to the object table - the PMC headers. For *other* reasons, we're not moving to more dereferenced objects. There is no reason why become should be slow | ||
|
19:30
jan joined
|
|||
| whiteknight | I don't know how we would be able to define the data mapping in PIR either, since we would need to be able to have two PMCs to copy data between. That's quite the tricky problem | 19:30 | |
| plobsing | whiteknight: why do we need to reallocate? | ||
| whiteknight | plobsing: because the two types might have different sized attributes structures | 19:31 | |
| if we don't at least resize the attributes structure, we're basically creating a segfault engine | |||
| plobsing | NotFound: if the interblags are to be beleived, most every Ruby hacker (despite the fact that they don't program in SmallTalk) | ||
| whiteknight: become takes two *already* allocated objects. all references to the first now point to the second. all references to the second now point to the first. | 19:32 | ||
| NotFound | I think there are a lot more big mouths than small talks. | ||
| whiteknight | plobsing: oh, that's very different from morph then. | ||
| I'm not sure at all how we would implement that, except maybe to turn the first into a transparent pointer object for the second | 19:33 | ||
| NotFound | In Ruby, and in any other language blogecosystem. | ||
| plobsing | whiteknight: yes, but the argument of "we don't want to be swapping things out from ourselves" apply to both equally, and I'm arguing it is a poor argument that dissallows useful functionality. | ||
| whiteknight | plobsing: I'm far less concerned about that point than I am concerned about the ramifications for the internal implementation | ||
| I would be perfectly happy providing a becomes operation for Parrot | 19:34 | ||
| but our current in-place morph routine is really...bad | |||
| NotFound | Don't even talk about pmc_reuse | ||
| plobsing | I agree morph is LTA. | ||
| whiteknight | NotFound: no, pmc_reuse is terrible also | 19:35 | |
| nwellnhof | whiteknight: i don't see why a separate PMC header is necessary for a copying/compacting GC | 19:38 | |
| whiteknight | nwellnhof: so that you can copy/compact the actual guts of the PMC without having to update every single reference to that PMC throughout the system | ||
| PMC header can come out of a small header slab, the guts can be moved around the system to wherever | |||
| plobsing | don't we already do that? | 19:39 | |
| whiteknight | sort of, but not to the degree that we would need for a compacting GC | 19:40 | |
| plobsing | why do we separate struct Parrot_TYPE_attributes from struct PMC? | ||
| nwellnhof | whiteknight: a real compacting GC also has to compact the PMC headers | ||
| whiteknight | the PMC header would really need to be much lighter, like a single pointer, for that to really be a benefit | ||
| the alternative is to add in some pretty invasive read barriers to update references on the fly | 19:41 | ||
| bacek | ~~ | ||
| nwellnhof | plobsing: we do that with strings currently, PMC attributes are never copied/compacted | ||
| bacek | Good morning, humans. | ||
| dukeleto | bacek: i submitted a bunch of smoke reports for gen_gc on darwin. t/pmc/key.t had some failures | ||
| bacek: also, top of the morning, meatbag | |||
| bacek | dukeleto, gen_gc is wrong. There is major problem with handling of dirty_list. | 19:42 | |
| whiteknight | bacek: another problem? | 19:44 | |
| bacek | whiteknight, yes | ||
| plobsing | bacek: I have an idea of how to get optimized register-access back. Ops2c needs to generate different code for 'in' register access vs. 'inout'/'out' register access. | 19:45 | |
| dukeleto | bacek: i only noticed it failing intermittently or only with certain compile flags. Not sure which. | ||
| bacek | plobsing, yes. But ops2c doesn't parse op body. | ||
| dukeleto | maybe it should. | 19:46 | |
| bacek | plobsing, which means I can't emit different code for $1, etc. | ||
| dukeleto, I don't want to implement good half of C parser. | |||
| plobsing | bacek: arguments to ops are declared in the signature (which ops2c *is* responsible for parsing) | 19:47 | |
| cotto_work | That was one of then negative goals of opsc | ||
| (not parsing C) | |||
| bacek | plobsing, yes. But accessors are always same - $n | ||
| plobsing | bacek: and they shouldn't decode to the same thing, depending on whether the argument was declared 'invar PMC' or 'out PMC'/something else | 19:48 | |
| it already makes different output based on these signatures | |||
| bacek | plobsing, oh. I did implement parsing of op body. | ||
| plobsing | 'in INT' vs 'in STR'. they get translated to different C code (obviously) | ||
| bacek | so yes. We can emit different code for in vs inout agrs | 19:49 | |
| plobsing | in *most* cases (I think), we only read from the register | 19:50 | |
| dukeleto | cotto_work: guess we failed at that negative goal ;) | ||
|
19:52
davidfetter joined
|
|||
| dalek | rrot/generational_gc: 973a7ff | bacek++ | src/gc/gc_gms.c: Explanation about flaw in GC algorithm. |
19:54 | |
| bacek | plobsing, yes. I can work on it. Later. After fixing main algo. | ||
| whiteknight, github.com/parrot/parrot/commit/973a7ff94d | |||
| luben | NotFound, hash does not backpoint to PMC anymore | ||
| NotFound | luben: glad to hear that | 19:55 | |
| whiteknight | bacek: ouch | 19:56 | |
| bacek: Are we going to need to compile inter-generational pointer lists? | |||
| dalek | rrot/generational_gc: 1205bb4 | bacek++ | src/gc/gc_gms.c: Move "constant" objects into next generations. |
19:57 | |
| rrot/generational_gc: 7683330 | bacek++ | src/gc/gc_gms.c: Limit number of generations to 2 to workaround bug in algo. |
|||
| bacek | whiteknight, I'm thinking about how to fix it... | ||
| NotFound | Note that ops files lack a revision about the validity of the signatures. I've see invar being modified more than one time. | ||
| ttbot | Parrot 1205bb45 i386-linux-thread-multi make error tt.taptinder.org/cmdinfo/8196 | 19:59 | |
| plobsing | NotFound: iff ops2c generated different code for invar registers, we could mark such pointers const and get the compiler to dissallow such usage | ||
| dukeleto | plobsing: +1 to that | ||
| NotFound | plobsing: that will be great. | ||
| plobsing | otherwise the annotations are useless and good luck trying to do lifetime analysis for eg: a register allocator | 20:00 | |
| bacek | plobsing, changing way of handling in vs inout regs will be great. | 20:02 | |
|
20:02
theory left
20:07
lucian left
20:09
lucian joined
|
|||
| arnsholt | Does the error "PARROT VM: Could not load bytecodeCONSTANT_ext/nqp-rx/src/stage0/NQP-s0.pir: Size in directory 23652 doesn't match size 0 at offset 0x16862" ring any bells for anyone? | 20:11 | |
| plobsing | arnsholt: suggests that PBC_COMPAT should have been bumped some time in the past but was not | 20:12 | |
| the solution is to recompile | |||
| nopaste | "bacek" at 192.168.1.3 pasted "Updated patch for rakudo" (86 lines) at nopaste.snit.ch/31060 | ||
| bacek | msg moritz "bacek" at 192.168.1.3 pasted "Updated patch for rakudo" (86 lines) at nopaste.snit.ch/31060 | ||
| aloha | OK. I'll deliver the message. | ||
| whiteknight | bacek: Does that gc write barrier function exist in master? | 20:14 | |
| bacek | whiteknight, function - no, macro - yes. | ||
| whiteknight | bacek: okay, I'm just trying to make sure the merge goes smoothly | 20:15 | |
| moritz | bacek: does it build now? | ||
| bacek | moritz, yes. On my box. | ||
| moritz | I'll try it here | ||
| dalek | rrot/generational_gc: 09bae79 | bacek++ | src/gc/gc_gms.c: Tune the Moon: use 1/100 of available memory for gc_threshold |
20:16 | |
| bacek | Why MMD_Cache is hash, not Hash PMC? | 20:19 | |
| cotto_work | bacek: have you added a noop write barrier to trunk? | 20:21 | |
| whiteknight | bacek better performance, right? | ||
| cotto_work: yes, he says it's a macro in master | |||
| cotto_work | ok. I'm behind on code review. | 20:22 | |
| bacek | cotto_work, I forgot to add function definition... | ||
|
20:22
whiteknight left,
whiteknight joined
|
|||
| bacek | cotto_work, but it can be cherry-picked from branch. | 20:23 | |
| cotto_work | I don't care if it's a function or a macro as long as HLLs continue to work. | ||
| bacek | moritz, make spectest fails (not epically) | ||
| tadzik | heh, will there be generational_gc_dynamic_treshold one day? :) | 20:24 | |
| moritz | bacek: compiling core.pm segfaults here | ||
| bacek | cotto_work, I'll fix it tonight. | ||
| moritz, can you get backtrace from gdb? | |||
| moritz, and you should use "bleeding edge" version of branch | 20:25 | ||
| moritz | bacek: when my daughter stops screaming, I'll try | ||
| bacek | moritz, ok. | ||
| moritz, how old is she? | 20:26 | ||
| moritz | rakudo: say DateTime.today - DateTime.new('2011-01-14), ' days' | ||
| p6eval | rakudo 03380c: OUTPUT«===SORRY!===Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 22» | ||
| moritz | rakudo: say Date.today - Date.new('2011-01-14'), ' days' | ||
| p6eval | rakudo 03380c: OUTPUT«26 days» | 20:27 | |
| bacek | moritz, wow. Congratulations! :) | ||
| moritz | bacek: thanks | ||
| that's on RELEASE_3_0_0-845-g7683330 | |||
| tadzik | LTA error message btw :) | 20:28 | |
| bacek | moritz, my git-fu is weak. How I can get this tag? | 20:29 | |
| moritz | bacek: git describe --tags | ||
| bacek | RELEASE_3_0_0-846-g09bae79 | ||
| moritz | .oO( the git foo is weak in this one... ) |
20:30 | |
| moritz pulls again | |||
| benabik | BTW: That means RELEASE_3_0_0 tag + 846 commits, current rev is 09bae79. | ||
| bacek | moritz, unlikely that it will help. | ||
| moritz | bacek: hasn't segfaulted yet, still compiling core.pm | 20:35 | |
|
20:35
nwellnhof left
|
|||
| bacek | moritz, optimized build? | 20:35 | |
| dalek | rrot/generational_gc: a7d4bdc | bacek++ | include/parrot/context.h: Disable shortcuts for setting CallContext fields. We do need write barriers. |
20:36 | |
| moritz | bacek: yes | 20:37 | |
| bacek: build succeeds, about a third of the spectests returns errors | 20:38 | ||
| bacek | moritz, same here. | 20:39 | |
| dalek | TT #2003 created by arnsholt++: Configure.pl from tools/dev/create_language.pl doesn't play nice with git | ||
| TT #2003: trac.parrot.org/parrot/ticket/2003 | |||
|
20:42
benabik left
20:48
lucian left,
lucian joined
20:53
vmspb left
20:55
plobsing left
21:00
plobsing joined
|
|||
| dalek | rrot/generational_gc: d9497e3 | bacek++ | src/embed/api.c: Apply patch from nwellnhof++ to disable GC during Packfile loading. Wallpapering problems ftw. |
21:01 | |
| whiteknight | what is the real problem there with packfile loading? | ||
| why are we having to apply this wallpapering? | |||
| bacek | whiteknight, because it's creating PackFile_* structs. Which aren't handled during GC. | 21:02 | |
| For example, unpacked Sub PMC will be collected. | |||
| Etc, etc, etc | |||
| We can remove this workaround after switching to PMCs internally, | 21:03 | ||
| Actually, we can create GSoC task - switch parrot internals to use PMCs only. | |||
| MMD_Cache, Packfiles, etc. | |||
| I suspect there is a _lot_ of places where we can simplify and improve things. | 21:04 | ||
|
21:04
perlite_ joined
|
|||
| bacek | afk # dayjob | 21:05 | |
| whiteknight | bacek: plobsing is doing that right now | 21:06 | |
| no GSoC project needed | |||
|
21:08
perlite left,
perlite_ is now known as perlite,
theory joined
|
|||
| plobsing | whiteknight: well I'm not doing that immediately. a few more yacks to shave. but it is my goal. | 21:14 | |
| whiteknight | plobsing: I can't keep track. I'm a poor Yak herder | 21:15 | |
| we need a little status feed, so we can see what developers are working on right now | 21:16 | ||
| "plobsing current status: GCable packfiles in IMCC" | |||
| "whiteknight current status: MURDER IMCC" | |||
| plobsing | speaking of GC tasks, can we pare down BigProjectIdeas a bit? I'm fairly sure we would *not* accept an independantly developped JIT system. too many people have too much invested in Lorito | 21:17 | |
| people reading that page might get the wrong idea about that | 21:19 | ||
| cotto_work | plobsing: good idea | 21:20 | |
| whiteknight | yes, that probably is a good idea | 21:24 | |
| we would accept it if it was high quality and was compatible with Lorito | |||
| but since Lorito is still mostly in a few people's heads and an outside developer probably isn't aware of all the details, that's unlikely | 21:25 | ||
| cotto_work | anyone making a jit would most likely need to drop by here | ||
| NotFound | And now... winxed C++ backend first steps: github.com/NotFound/winxedxx | ||
| plobsing | my take on that page is that it is a list of RFIs. for people that just want to hack something up without widely consulting the community beforehand. | ||
| because there are people who work like that (rare as they may be) | |||
| If I showed up tommorrow and asked about creating a JIT and you explained what Lorito was and the timeframe, I'd take that as "thanks, but come back later" and feel somewhat lied to | 21:27 | ||
| atrodo | I agree, the JIT is a task that needs Lorito figured out before someone can reasonably be able to work on it | 21:28 | |
| cotto_work | volunteers? | 21:29 | |
| dalek | tracwiki: v24 | plobsing++ | BigProjectIdeas | ||
| tracwiki: Remove JIT-related tasks. Adding a new JIT for the current system is not desirable. Lorito is the future. | |||
| tracwiki: trac.parrot.org/parrot/wiki/BigProj...ction=diff | |||
| cotto_work | or that | ||
|
21:30
whiteknight left
21:40
adu joined
|
|||
| dalek | tracwiki: v25 | whiteknight++ | BigProjectIdeas | 21:45 | |
| tracwiki: remove generational GC. We're doing that in-house | |||
| tracwiki: trac.parrot.org/parrot/wiki/BigProj...ction=diff | |||
|
21:47
fperrad left
|
|||
| plobsing | I'm not entirely sure we want i18n for internal error messages. The platform-encoding changes I made a while ago had the accidental effect of exposing localized C library error messages. NotFound protested vehemently. | 21:48 | |
| but that's a project policy decision. | 21:49 | ||
| Tene | What was his objection? | ||
| NotFound | We shouldn't do that without a deprecation period. | 21:50 | |
| plobsing | All I remember is "DO NOT WANT" | ||
| NotFound | Lots of code depend on the text of the error messages. | ||
|
21:59
wknight-phone joined
22:04
rurban_ joined
22:07
rurban left,
rurban_ is now known as rurban
|
|||
| cotto_work | msg whiteknight What was the GObject metamodel entry on BigProjectIdeas about? | 22:14 | |
| aloha | OK. I'll deliver the message. | ||
| bacek_at_work | cotto_work, probably from GNOME | 22:15 | |
| cotto_work | sure, but I'm curious why he picked that. | 22:17 | |
| maybe just because it was a C-based object model | |||
| bacek_at_work | probably | 22:18 | |
| "Perhaps the most profound difference is GObject’s emphasis on signals (called events in other languages). This emphasis derives from the fact that GObject was specifically designed to meet the needs of a GUI toolkit." | |||
| cotto_work | I'm reasonably sure that we can drop the idea in favor of a 6model-like implementation. I just want to check with him first since he added it. | ||
| bacek_at_work | I don't particularly like it... | ||
| And 6model is little bit more preferable. | 22:19 | ||
| cotto_work | It'd be helpful for all the gui code we have in Parrot. | ||
| bacek_at_work | we can implement GObject on top of 6model (I think) | 22:21 | |
|
22:27
wknight-phone left
22:29
Andy left
22:33
theory left
|
|||
| dalek | rrot/generational_gc: 016bd2c | bacek++ | src/call/context.c: Fix get_PMC_get assert to skip NULLs. |
22:51 | |
|
22:59
cosimo joined
23:06
cosimo left,
cosimo joined
|
|||
| Coke | (signal/events) absolutely need a decent event loop to handle tcl. | 23:10 | |
|
23:25
plobsing left
23:26
dmalcolm left
23:28
bacek left,
plobsing joined
23:29
theory joined
|
|||
| plobsing | if we aren't able to host GObject on top of 6model, I'd call that a failure | 23:33 | |
|
23:45
plobsing left
|
|||
| dukeleto | sounds like a good litmus test to me | 23:46 | |
| cotto_work | The only problem is finding someone interested in Parrot who knows GObject and wants to implement a 6model version. | 23:55 | |
| but it'd be an interesting test case | |||