|
Parrot 3.3.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today | trac accounts are wonky; talk to cotto, coke or whiteknight if you have trouble Set by moderator on 10 May 2011. |
|||
| whiteknight | (and it's a mess because we might tailcall into IMCC, and IMCC treats the interp as it's own personal dumping ground) | 00:00 | |
| plobsing | whiteknight: I thought it didn't do that anymore. | 00:01 | |
| whiteknight | plobsing: it might not, but I'm not prepared to remove any of that safety code | ||
| plobsing: I think it still does, especially for :immediate and that kind of stuff | 00:02 | ||
| plobsing | IMCC calls into libparrot to manage :immediate and :postcomp. if those screw things up, that's parrot's fault. | 00:03 | |
| whiteknight | I have to look at it all again | ||
| actually, IMCC isn't an NCI PMC anymore | |||
| so the issue might be moot | 00:04 | ||
| NotFound | If :immediate messes with the current context, it should stopping doing it and create its own. | ||
| whiteknight | although IMCCompiler uses that tailcall code | ||
| NotFound | :immediate invocation in imcc, I mean. | ||
| whiteknight | we can try removing that. It hasn't been high on my priorities list | ||
| NotFound | I'm sure :immediate invocation should not be speed-critical in any reasonable parrot usage. Optimizing by complicating other parts is not right. | 00:07 | |
| whiteknight | Sub.invoke perplexes me | ||
| why is the lexical/autoclose logic in there? | |||
| and the lexpad stuff? | |||
| I feel like setting up lexicals and outers should be done by the invoke opcodes, and be in place before we ever get to Sub.invoke | 00:08 | ||
| like chromatic points out, eventually we will want to have multiple types of invokable PMC, and we will want that logic factored out | 00:09 | ||
|
00:11
theory left,
theory_ joined
00:13
kid51_at_dinner is now known as kid51,
theory_ left,
theory joined
|
|||
| kid51 does cage cleaning on recent trac tickets | 00:13 | ||
| whiteknight | brb, have to restart the computer | 00:14 | |
|
00:14
whiteknight left
00:18
whiteknight joined,
spinclad joined
00:19
lucian_ left
|
|||
| plobsing | We also want to slim down our Sub PMCs. They're a convenient place to hang all sorts of innappropriate info, so they're overly bloated | 00:20 | |
| whiteknight | plobsing++ I couldn't have said that any better myself | 00:21 | |
| sorear | what's worse is that the clone/capture_lex combo copies the entire structure | ||
| kid51 | seen moritz? | 00:22 | |
| aloha | moritz was last seen in #perl6 3 hours 14 mins ago saying "of course web frameworks can help you with it". | ||
| plobsing | sorear: our subs are 23 machine words in size and track information like "the vtable slot that this sub should go in" | 00:27 | |
| oh misparsed | |||
|
00:28
theory left
00:32
jsut joined
|
|||
| whiteknight is extremely impressed by Unity and Ubuntu 11.04 on first blush | 00:32 | ||
| kid51 | Hmm, I'm wondering whether our current Trac problems mean that people who no longer have current passwords will not receive email notifications of additions to tickets (e.g. "cc"; e.g. new posts to tickets they originally created). | 00:33 | |
|
00:37
jsut_ left
|
|||
| NotFound | Looks like :call_sig is not handled well in the caller side. | 00:40 | |
| whiteknight | NotFound: I did the initial implementation of :call_sig, and I know it's not good | 00:41 | |
| it was a quick prototype and we never went back to improve i | |||
| NotFound | I mean, not handled at all. | ||
|
00:41
Coke left
00:42
Coke joined
|
|||
| NotFound | Uh... /* EXPERIMENTAL! This block adds provisional :call_sig param support on the callee side only. | 00:42 | |
| We have ben warned ;) | |||
| whiteknight | heh, I know it's ugly | 00:44 | |
| I spent a whole 10 minutes on it | |||
| NotFound | param_count - 1 isn't always 0 in that branch, or I'm misreading something? | 00:47 | |
| whiteknight | NotFound: if we have :call_sig, it should be 0. You can only have :call_sig, no other parameters | 00:48 | |
| I think we check that in IMCC, which is bad | |||
| NotFound | whiteknight: it is in the esle part of: if (param_count > 2 || param_count == 0) | 00:49 | |
| else | |||
| Oh, never mind. | 00:50 | ||
| whiteknight | I don't know | ||
| NotFound | It may be an invocant in case of method calls. | ||
|
00:50
jsut_ joined
|
|||
| NotFound | I've misread > as >= | 00:51 | |
| Eh, no... I just need to sleep %-) | 00:52 | ||
| whiteknight | :) | ||
| that code is terrible, don't read it too hard | |||
| NotFound | The point is, without support in the caller side we can't do proof of concept. | ||
| whiteknight | we can do half. We can do it on the callee side | 00:53 | |
| NotFound | Well, we can, by adding an indirection, giving less meaning to the tests. | ||
| Testing only the callee is almost trivial. | 00:54 | ||
| function test(args[call_sig]) | |||
| { | |||
| say('test'); | |||
| say(args[0]); | 00:55 | ||
| } | |||
| whiteknight | this proof of concept would only prove that the mechanism works. It doesn't show us speed because we still use a signature and still hit fillparams | ||
| fill_params | |||
|
00:55
jsut left
|
|||
| NotFound | whiteknight: but it will show if filling the params with pir ops is fast enough. | 00:55 | |
| whiteknight | true. It shouldn't be any slower | 00:56 | |
| I want to add a 2-argument invokecc opcode to take a CallContext, and then we can start doing real tests | 00:57 | ||
| NotFound | And the support in the caller can bypass fill_params almost completely, like it does for the callee side. | ||
| whiteknight | and I can add in a get_call_context op for the callee | ||
| if we hand-roll the callee, we don't need to use get_params | |||
| NotFound | An experimental op will be fine, yes. | ||
| And I can add experimental support to winxed. | 00:58 | ||
| No need to touch imcc. | 00:59 | ||
| For basic tests, I mean, not for testing nqp or rakudo. | 01:00 | ||
| Stupid idea of the day: add a winxed backed to pct ;) | 01:01 | ||
| Definitely need sleep. Bye. | 01:02 | ||
| whiteknight | goodnight | 01:03 | |
| kid51 | Can anyone speculate as to why certain tests fail with a "Dubious" exit status when run under 'make test' -- but not under 'prove', 'perl t/harness' or even a smaller test target such as 'make dynoplibs_tests'? | 01:05 | |
| whiteknight | kid51: Dubious usually means a non-zero exit code | 01:08 | |
| and exit codes are not printed by default, so you wouldn't know if you ran it directly | |||
| kid51 | Why should the test file exit with a non-zero code when run under, say, 'make smolder_test' but not under 'prove' or 'make library_tests'? | 01:09 | |
| whiteknight | oh. good question | 01:10 | |
| kid51 | I should note that I encounter this problem (a) on Darwin/PPC; | ||
| (b) on files I suspect touch GC heavily; | |||
| whiteknight | does anything else change? Any tests fail in that file? | ||
| kid51 | (c) but on different files at different commit points. | ||
| For example, tonight, at head, under 'make smolder_test', t/compilers/opsc/02-parse-all-ops.t reported: Non-zero wait status: 11; Parse errors: Bad plan. You planned 19 tests but ran 9. | 01:11 | ||
| But I get all PASS when run individually under 'prove' or as part of 'make library_tests' | |||
| Last night, it was a different file (lemme think which) | 01:12 | ||
| t/compilers/pge/p5regex/p5rx.t | |||
|
01:13
woosley joined
|
|||
| kid51 | In the case of t/compilers/pge/p5regex/p5rx.t, it was the first bad result I'd ever seen from this file. | 01:13 | |
| t/compilers/opsc/02-parse-all-ops.t, in contrast, is the mother of all GC test files. Takes forever on this box, but has consistently PASSed for a long time. | 01:14 | ||
|
01:14
cotto joined
|
|||
| cotto | ~~ | 01:15 | |
| whiteknight | gen::makefiles - Generate makefiles and other build files...value for '@cc_build_call_frames@' in config/gen/makefiles/root.in is undef at lib/Parrot/Configure/Compiler.pm line 572, <$in> line 95. | 01:18 | |
| wtf? | |||
| kid51 | whiteknight: There were changes in last 24 hours that might have generated that. | ||
| whiteknight | blah | 01:19 | |
| I just updated ubuntu too. I've already had a version problem with my ICU install | |||
| kid51 | Perhaps 3f4486932fa, whose log message reads: eliminate unused buildframes code (this is now handled by libffi) | 01:20 | |
| whiteknight | and I'm seeing that problem with errno.h again | 01:21 | |
| kid51 | whiteknight: Problem confirmed. I just looked at my last Configure output | ||
| whiteknight | blah. I really wanted to start looking at some PCC stuff tonight, but now I have to twiddle files around to make parrot build | 01:22 | |
| kid51 | It's probably the commit I cited. The commit immediately before that has Configure.pl running clean | 01:23 | |
| (However, this problem did not prevent me from building tonight on either linux or darwin.) | |||
| YMMV | |||
| dalek | TT #2105 closed by jkeenan++: New build failure on darwin/PPC at runtime/parrot/library/YAML/Tiny.pir | 01:24 | |
| TT #2105: trac.parrot.org/parrot/ticket/2105 | |||
| kid51 | Trying a correction | 01:25 | |
| whiteknight: pull | 01:35 | ||
| dalek | rrot: 650471b | jkeenan++ | config/gen/makefiles/root.in: Remove reference to cc_build_call_frames, which probably should have been done along with other recent work on frames. Configure.pl once again runs cleanly. |
||
| rrot: 5893e91 | Whiteknight++ | frontend/parrot/main.c: We don't have a -p option |
01:38 | ||
| whiteknight | configing now | ||
| yes, work | |||
| works | |||
| kid51++ | |||
| dalek | TT #2109 created by whiteknight++: Can't find asm/errno.h | 01:40 | |
| TT #2109: trac.parrot.org/parrot/ticket/2109 | |||
| whiteknight is going to bed now. Goodnight | 01:44 | ||
|
01:44
whiteknight left
01:58
frodwith left
02:01
frodwith joined
|
|||
| Coke_ | msg mj41 started. | 02:02 | |
| aloha | OK. I'll deliver the message. | ||
|
02:03
mtk left
|
|||
| dalek | rrot/m0-prototype: 43a14dc | dukeleto++ | src/m0/m0_assembler.pl: Refactor writing of bytecode to a documented function |
02:06 | |
| rrot/m0-prototype: dfd717c | dukeleto++ | src/m0/m0_assembler.pl: Add a stub to_bytecode function which takes a line of M0 and returns the bytecode representation |
|||
| cotto | dukeleto++ | ||
|
02:09
Andy joined
|
|||
| dukeleto | Andy: slightly OT, but can you release a new version of Test::WWW::Mechanize? The latest release on CPAN fails tests, but them seem to be fixed in svn | 02:11 | |
| s/them seem/they seem/ | |||
|
02:11
mtk joined
|
|||
| Andy | I did. | 02:11 | |
| Today | |||
| dukeleto | Andy! | ||
| Andy | yes? | ||
| dukeleto | Andy++ # /me goes back in his cave | ||
| Andy | and it's not in svn any more. IT's on github. | 02:13 | |
| cotto | Mmmmm. Future. | 02:16 | |
| bacek_at_work | ~~ | 02:20 | |
| kid51 | And with my most recent git pull, yet another different file borks early under 'make smolder_test' on Darwin/PPC. This time it's t/library/yaml_tiny.t. | 02:27 | |
| ingy | o/ | 02:31 | |
|
02:32
theory joined
|
|||
| dalek | rrot: f29f90c | petdance++ | src/call/args.c: Removed unused variables |
02:33 | |
| rrot: 9b2ad7c | petdance++ | / (2 files): Merge branch 'master' of github.com:parrot/parrot |
|||
| Andy | bah | ||
| bacek_at_work | Andy, git config branch.master.rebase true ? | 02:42 | |
| Andy | I always do --rebase | 02:43 | |
| bacek_at_work | hmm | 02:44 | |
| why then do you have merge commits? | |||
| Andy | I don't know. | ||
| ttbot | Parrot 9b2ad7cb MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/2372 | ||
| Andy | Hmm, shouldn't that update my ~/.gitconfig | 02:45 | |
| plobsing | I have an alias that does 'pull --rebase'. That seems to work for me. | 02:53 | |
| how did that change break the build? it boggles the mind. | 02:59 | ||
| bacek_at_work | plobsing, same GC failure is reported by kid51++ for Darwin/PPC. Someone does't WB properly... I'll try to look at it tonight. | 03:03 | |
|
03:12
benabik joined
03:13
kid51 left
03:16
hudnix left
03:31
ShaneC1 joined
|
|||
| dalek | rrot: 8628ca5 | petdance++ | / (2 files): fix an arg annotation |
03:44 | |
|
03:45
ShaneC1 left
|
|||
| ttbot | Parrot 8628ca58 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/2532 | 03:55 | |
| Andy | Anyone got guesses why this diff github.com/parrot/parrot/commit/f2...d1a0861985 which only removes unused vars would cause this failure tt.taptinder.org/cmdinfo/2401 | 04:06 | |
| plobsing | Andy: bacek guesses it has to do with write barriers. | ||
| I'm tempted to believe that. | |||
| Andy | What is a write barrier | 04:07 | |
| plobsing | it is a necessary part of generational GC | ||
| it is somewhat analogous to incref/decref operations in a reference counting scheme | 04:08 | ||
| if a reference from an object in an older generation to an object in a younger generation, the old-gen object has to be marked as "dirty" (which makes it a part of the rootset when only GCing the young generation) | 04:09 | ||
|
04:11
soh_cah_toa left
|
|||
| Andy | my guess is that const INTVAL named_arg_count = h->entries; causes linkage tohappen. | 04:11 | |
| plobsing | linkage? | 04:12 | |
| Andy | tt.taptinder.org/cmdinfo/2401 | 04:13 | |
| that removing that causes the link failure | |||
| vs. the unused stack vars. | |||
| plobsing | that isn't a link failure | 04:14 | |
| that's a segfault int parrot-nqp.exe | |||
| there are some link *warnings* | |||
| dalek | rrot/get-entropy: f71bf5d | cotto++ | / (3 files): add Parrot_platform_get_entropy implementations for generic and win32 The generic code relies on /dev/urandom, which seems to be common enough. The win32 code relies on MS' Cryptograph API and needs testing. |
04:15 | |
| rrot/get-entropy: 77191d6 | cotto++ | src/interp/inter_create.c: initialize Parrot's prng from system entropy |
|||
|
04:16
benabik left
|
|||
| Andy | plobsing: What in there tells you its a segfault? | 04:16 | |
| ooh ooh, it's not trying to make parrot-nqp | 04:17 | ||
| make is using parrot-nqp,which segfaults. | |||
| plobsing | bingo | ||
| Andy | and only on Windows which I can't do anything with | ||
| plobsing | Andy: we've been seeing failures are Darwin/PPC as well | 04:18 | |
| Andy | I have no darwin | ||
| plobsing | go fish | ||
| Andy | I mean, no PPC | ||
| ooh wait, I might | |||
| I think Quinn's mini is ppc | |||
| cotto | anyone on windows mind testing that branch? | 04:19 | |
| Andy | Maybe I"ll try running that build step for nci_test under splint | 04:21 | |
| I'm gonna splint on nci_test.c | 04:23 | ||
| plobsing | I'm fairly sure none of the steps to build libnci_test use parrot-nqp. I think make has moved on or is working in parallel. | ||
| Andy | waaah | 04:25 | |
| plobsing | and the darwin/ppc errors don't necessarily present in the same locations. | 04:26 | |
| they tend to move based on apparently unrelated changes | |||
| Andy | Are the functions in nci_test.c supposed to be unused anywhere else in the codebase? | 04:27 | |
| Is that the nature of the testing? | |||
| plobsing | yes. To my knowledge, they are only used by t/pmc/nci.t | ||
| Andy | splint is unhappy about nci_ttt() but I find it not used anywhere | ||
| indeed, no ttt anyway | 04:29 | ||
| anywhere | |||
| plobsing | what does it find objectionable? | ||
| Andy | sprintfing into a potentially-NULL buffer | 04:30 | |
| What I find objectionable is sprintfing into a string and pritnfing it | |||
| but I'm not seeing it used anywhere | 04:31 | ||
| plobsing | Andy: it doesn't *only* printf it, it also returns it | ||
| Andy | so it does | ||
| i'm just seeing if I can yank it entirely. | 04:32 | ||
| as a leftover | |||
| plobsing | I'm betting it is | ||
| Andy | it is what? A leftover? | ||
| plobsing | yep. | ||
| In fact, I have good evidence that it is. It isn't cited as an export by libnci_test.def, meaning it isn't an exported symbol on win32 | 04:33 | ||
| Andy | Yanking it. | 04:37 | |
| (testing first) | |||
| dalek | rrot/get-entropy: ccf2d6a | cotto++ | src/string/api.c: use system entropy for hash seed randomization |
04:44 | |
| rrot: 570ced6 | petdance++ | src/nci_test.c: Dropped used nci_ttt function. Consted some local vars, and updated argument annotations in function delcarations |
04:45 | ||
|
04:50
bubaflub left
|
|||
| cotto | plobsing, I'd like to know your thoughts on the get-entropy branch. It seems like the kind of thing you'd know more about than I do. | 04:52 | |
|
04:53
eternaleye_ joined,
eternaleye left
|
|||
| plobsing | cotto: it looks like a good start. I'd like to see some error checking. | 04:54 | |
| Also, I am not aware of any OS standard (well, the linux FHS probably) that defines where in the file system a random device should be found | 04:56 | ||
| so that is a point of concern | |||
| ttbot | Parrot 570ced68 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/2680 | 04:57 | |
| sorear | there's naturally no inter-OS standard | 04:58 | |
| cotto | plobsing, I looked around and /dev/urandom seemed to be very common | ||
| sorear | on Linux it's *always* /dev/u?random | ||
| devfs is dead | |||
| cotto | Error handling is tricky. The code is used during interp init. | 05:00 | |
|
05:01
pjcj joined
|
|||
| plobsing | cotto: an impolite bail is better than a silent fail-and-continue | 05:01 | |
| if the operation consistently fails, we will likely get a constant random seed (most likely 0) | 05:02 | ||
| dalek | rrot: b4be648 | petdance++ | config/gen/makefiles/root.in: splinting nci_test.c is OK |
||
| cotto | plobsing, I guess so | 05:03 | |
|
05:03
elmex_ joined
|
|||
| plobsing | sorear: even on GoboLinux? | 05:03 | |
|
05:05
TiMBuS|Away joined
05:06
Hunger left,
elmex left,
TiMBuS left,
TiMBuS|Away is now known as TiMBuS,
elmex_ is now known as elmex,
Hunger- joined
05:07
eternaleye_ is now known as eternaleye
05:08
Andy left
|
|||
| tadzik | plobsing: yes | 05:12 | |
| "Through a mapping of traditional paths into their GoboLinux counterparts, we transparently retain compatibility with the Unix legacy" | |||
| ttbot | Parrot b4be648b MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/2740 | 05:14 | |
|
05:25
birdwindupbird joined
05:49
alh left
06:05
dngor_ joined,
GeJ_ joined,
cxreg2 joined,
autark_ joined,
jtpalmer joined,
jsut joined
06:06
dngor left,
cxreg left,
jsut_ left,
sjn left,
rblackwe_ left,
jtpalmer_ left,
KaeseEs left,
autark left,
GeJ left,
KaeseEs joined
06:10
sjn joined
06:24
TiMBuS left
06:25
athomason left
06:29
TiMBuS joined
06:31
cxreg2 is now known as cxreg
|
|||
| dalek | rrot: 715d913 | NotFound++ | / (2 files): Make parrot_iterate_hash more consistent by always expecting a semicolon after it |
06:33 | |
|
06:34
athomason joined
06:38
TiMBuS left,
TiMBuS joined
06:48
ShaneC joined
|
|||
| NotFound | Given that ttbot has been silent for some time, I'll assume 715d913 fixed the problem. | 07:00 | |
| bacek_at_work | But how??? | 07:06 | |
| NotFound | bacek_at_work: either do a web search for 'do while(0)' or accept it as white magic ;) | 07:15 | |
|
07:15
mj41 joined
|
|||
| bacek_at_work | Magical Coding Robots do not believe in magic! Oh, wait... | 07:15 | |
| NotFound | In short: macros intended to be used as statemente are tricky. | 07:17 | |
| bacek_at_work | Ookey. | 07:18 | |
| NotFound | For the details you'll need to expand its usages by hand or with cpp help... which I didn't. | 07:19 | |
| And to understand why it failed only on some platforms... I give up. | |||
|
07:40
theory left
07:43
SHODAN joined
07:46
rurban_ joined
07:47
alh joined
07:48
rurban left,
rurban_ is now known as rurban
08:57
dod joined
|
|||
| bacek | ~~ | 09:40 | |
|
09:52
mtk left
09:58
mtk joined
10:19
contingencyplan left
|
|||
| dalek | rrot: 81c9e6b | bacek++ | include/parrot/context.h: Provide optimized definitions for Parrot_pcc_foo functions. It was obvious leftovers from GMS implementation branch. valgrind++ for pointing out. |
10:36 | |
| ttbot | Parrot 81c9e6b8 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3121 | 10:46 | |
|
10:50
woosley left
|
|||
| mikehh | bacek: you done broke it again :-} | 10:52 | |
| bacek | mikehh, meh... It's flacking failure. Same as all other GC fails | ||
| mikehh | bacek: 759d13 was probably just luck | 10:56 | |
| bacek | mikehh, indeed | ||
|
11:02
Psyche^ joined
|
|||
| dalek | rrot: e744d10 | bacek++ | src/gc/gc_gms.c: Fix off-by-one error in selecting generation to collect. |
11:03 | |
|
11:07
Patterner left,
Psyche^ is now known as Patterner
|
|||
| ttbot | Parrot e744d10b MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3181 | 11:13 | |
| mikehh | What is fatal error U1077 | ||
| bacek | "segfault" I think | 11:15 | |
| SHODAN | is there a way for a mere mortal to comment on a ticket? trac.parrot.org/parrot/ticket/2107 for example. | ||
| bacek | SHODAN, did you register in trac? | 11:17 | |
| SHODAN | just did | ||
| (and couldn't find a way to comment) :) | |||
| mikehh | bacek: looks like a nmake error - can't find something in include path | ||
| bacek | SHODAN, yes. We have to disable trac activity for "fresh users" few weeks ago due abnormal spam activity. Just msg whiteknight/coke with your trac id. They can whitelist you. | 11:19 | |
| mikehh, return code 0xc0000005 is segfault. nmake is just not smart enough to report absence of YAML/Tiny.pir properly. | 11:20 | ||
| SHODAN | i see | ||
| bacek | SHODAN, sorry for inconvenience. | 11:22 | |
| mikehh | bacek: so it is segfaulting building YAML/Tiny.pir - that is/was yours no? | 11:33 | |
| bacek | mikehh, I'm not sure who is responsible for this fault. But most likely it's me. | 11:34 | |
| moritz finds "who fixes it?" much more interesting than "who broke it?" | 11:35 | ||
| mikehh | bacek: I take it you don't have a Windoze machine to test this on (me either) | ||
| bacek | mikehh, nope | 11:36 | |
| mikehh | moritz: yeah - not trying to cast any blame, just trying to track down the fault | 11:37 | |
| with neither bacek nor me having windoze platforms, it becomes that much more difficult | 11:39 | ||
| moritz | I understand, yes | 11:40 | |
| mikehh | anyway have just installed Ubuntu 11.04 i386 (again), built perl 5.14.0 and am now going to test parrot on it :-} | 11:43 | |
|
11:48
KaeseEs left
11:54
KaeseEs joined
12:07
dngor_ is now known as dngor
12:12
ambs joined
12:13
lucian joined
12:18
bluescreen joined
12:19
bubaflub joined
12:24
PacoLinux_ joined
|
|||
| bacek | msg pmichaud I've got bad feelings that recent changes in rakudo slowed down "gcd" again. | 12:28 | |
| aloha | OK. I'll deliver the message. | ||
|
12:29
hudnix joined
|
|||
| bacek | aloha, (191-184)/192*100 | 12:29 | |
| aloha | bacek: 3.64583333333333 | ||
| pmichaud | bacek: did gcd change since my last set of patches yesterday? | 12:36 | |
| pmichaud looks at commit log | |||
| bacek | pmichaud, I comparing your initial commit for improve gcd with master (which adds few gcd related multisubs) | 12:37 | |
| But I can be totally wrong. | 12:38 | ||
| pmichaud | the gcd operators are definitely faster than what we had in master as of 48 hours ago | ||
| ~16% faster on my box | |||
| however, sin.t could still be slower than what we had in the 2011.01 release | 12:39 | ||
| I didn't have callgrind numbers for 2011.04 to work from to be able to decide if the problem was just since 2011.04 or perhaps from farther back | |||
| gist.github.com/966698 # results of gcd changes -- rakudo-work is the version with the changes | 12:41 | ||
| afk, taking kids to school. bbiab | |||
|
12:42
redicaps joined
|
|||
| bacek | pmichaud, gist was done on your original commit to fix gcd. It was few commits after related to it. | 12:43 | |
|
12:53
PacoLinux_ left
|
|||
| pmichaud | I suppose it could've slowed down because of the multi | 12:53 | |
| I'll check that | |||
|
12:56
PacoLinux_ joined
|
|||
| pmichaud | (re gc and speedup) I suspect you're correct about gc on my box. What we've been able to show is that in situations where gc dominates (boxes with smaller memory footprints, or programs that generate lots of gcables), the gms gc is now a big improvement over what existed in 2011.01. That's good work. (more) | 12:58 | |
| In other words, gc is no longer the bottleneck it was in 2011.01. To get more speedups, we can start looking at other pieces of the puzzle and not just say "oh, it's the gc slowing us down". | 12:59 | ||
| so, bacek++ bacek++ | |||
| moritz points to PCC | |||
| pmichaud | yes, I suspect PCC is a big culprit. | ||
|
13:00
whiteknight joined
|
|||
| dukeleto | ~~ | 13:01 | |
| whiteknight | good morning, #parrot | ||
| pmichaud | good morning, whiteknight | ||
| whiteknight | hello pmichaud, dukeleto | ||
| pmichaud | sorry for flooding your ticket (re errno.h) with replies last night :) | 13:02 | |
| whiteknight | pmichaud, no worries. That's what I get for filing a ticket right before I sign off and go to bed | 13:03 | |
| atrodo | whiteknight++ The PCC blog had some good info | ||
| dukeleto | whiteknight: mornin' | ||
| whiteknight | atrodo: my goal for today is to put together a mini benchmark to prove it | ||
| dukeleto | whiteknight: i also read your PCC blog post and enjoyed the thoroughness of explanation :) | ||
| moritz | url? | 13:04 | |
| dukeleto | cotto++ # entropy branch | ||
| whiteknight | atrodo: unfortunately, I have to use PASM to avoid the PIR-mandated infrastructure | ||
| atrodo | whiteknight> Some of the choices you went over left me curious why it had been done that way | 13:05 | |
| whiteknight> For instance, the CallContext as a part of the interp, is that left over from previous refactors or was that a designed feature? | 13:06 | ||
| moritz | ah, whiteknight.github.com/2011/05/11/p...ments.html | ||
| pmichaud | bacek: you're correct, the additional multis slow rakudo down slightly: gist.github.com/968447 | ||
| whiteknight | atrodo: most of it is a hold-over | ||
| the last round of PCC refactors was a herculean task, and we didn't clean up everything that needed cleaning | |||
| plus, we didn't want to break too much backwards compatibility | |||
| atrodo | whiteknight> Makes sense. So how was it done before the refactor? Did the refactor create CallContext? | 13:07 | |
| whiteknight | atrodo: before the refactor, there were at least 3 different code paths for different types of invocation. There was no CallContext | 13:08 | |
| All the functions labeled "Parrot_pcc_" didn't exist | |||
| atrodo | whiteknight> So how were the arguments passed? | 13:09 | |
| moritz | "In short, we have plenty of information available at compile time, but we discard it" | 13:14 | |
| that's what hurt(s) rakudo too | |||
| pmichaud | I envision a potential problem with the proposed refactor | 13:16 | |
| although I guess it must be handled already somehow/somewhere | 13:17 | ||
| dalek | rrot: a7862a2 | mikehh++ | src/nci_test.c: fix =item after consting |
||
| rrot: 42b1d80 | mikehh++ | src/gc/gc_gms.c: fix codetest failure - trailing spaces |
|||
| rrot: 6456502 | mikehh++ | include/parrot/context.h: fix codetest failure - c_parens there should be at least one space between a C keyword and any subsequent open parenthesis |
|||
| pmichaud | is CallContext able to store native types in the positional and named slots? | ||
| whiteknight | pmichaud: yes, it handles native types without boxing | 13:19 | |
| otherwise the situation would be even worse | |||
| pmichaud | so, even in the new scheme, CallContext still has a "signature" that keeps track of the types of the things in each slot | ||
| but there'd be only one, set up when the CallContext gets values stored into it | 13:20 | ||
| i.e., if my call context is $P9, then $P9[2] = 4 sets a flag in the CallContext so that we know that the 3rd positional slot contains an int | 13:21 | ||
| whiteknight | CallContext still has internal bookkeeping stuff, yes. PCC uses an entirely separate set of signature PMCs | ||
| pmichaud | got it | ||
| whiteknight | so we have a signature PMC and a separate CallContext PMC, then a handful more temporary PMCs to deal with both of them | ||
| dukeleto | whiteknight: i particularly don't like that there are multiple types of signature PMCs | ||
| whiteknight | and temporary strings to lookup signatures *by name* in CallContext | 13:22 | |
| er, it looks up attributes by name | |||
| dukeleto just crafted an email begging for somebody to look into getting our trac usernames+passwords back | |||
| moritz | in a hash? | ||
| pmichaud | anyway, fwiw, Rakudo already does the new model on the callee-side of things | ||
| whiteknight | moritz: No. A chain of if(STREQ(...)) checks to get the attribute by name | 13:23 | |
| moritz | hm | ||
| whiteknight | pmichaud: exactly. That's how I know that it works AND it's what users really want | ||
| pmichaud | i.e., our subs have a single :call_sig parameter, and then we have a specialized opcode to unpack it the way we need based on whatever's in the CallContext | ||
| whiteknight: correct :) | |||
| whiteknight | If we have the decision between Parrot implementing the semantics in a way that nobody wants, or Parrot exposing the primitives to the user to implement those semantics themselves.... | 13:24 | |
| pmichaud | +1. That's kinda what we (Rakudo) argued a long time ago. | ||
| whiteknight | even without performance savings, which bacek doubts, we still give much win to the users | ||
| moritz | our code is license compatiable with your code (hint, hint) :-) | 13:25 | |
| *compatible | |||
| whiteknight | moritz: :) It's more a matter of Parrot ripping bad code out than borrowing your good code | ||
| There are inefficiencies inherent in your implementation that we can reduce | |||
| moritz | well, rakudo needs some weird stuff that parrot doesn't need | 13:26 | |
| like, filling positional parameters by name | |||
| ttbot | Parrot 42b1d800 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3257 | ||
| whiteknight | yes, so we'll expose the CallContext to you directly, and you do whatever with it that you want | ||
| or even provide a subclass of CallContext, or something different entirely | 13:27 | ||
| what you pass to a subroutine is no business of mine | |||
| pmichaud | whiteknight++ # excellent blog post | 13:28 | |
| whiteknight | pmichaud, thanks! I sincerely hope some of these ideas pan out | ||
| pmichaud | now let's see if I can grok valgrind and get the call numbers bacek++ was producing | 13:29 | |
| atrodo | I'm not a fan of magic that assumes it knows what the end-user wants | 13:33 | |
| whiteknight> And actually, your proposed change is in line with what I had been working towards for Lorito | |||
| whiteknight | atrodo: I've been thinking about these suggestions specifically with Lorito in mind | ||
| atrodo | whiteknight> I think the current m0-spec has argument passing done with registers | 13:37 | |
| dukeleto | atrodo: argument passing to what? | 13:39 | |
| atrodo | dukeleto> Between methods | 13:40 | |
| dukeleto | atrodo: well, i would say that a continuation is passed along, but yes, the continuation boils down to registers | ||
| pmichaud | ooc, is there a reason we want/need a separate CallContext PMC? | 13:41 | |
| would it make sense to make all of the argument passing stuff a part of the Context PMC? | |||
| hmmm, probably not, because of CPS and coroutines | 13:42 | ||
| nm | |||
| (and continuations) | |||
| atrodo | pmichaud> Perhaps I'm missing the difference between CallContext and Context | 13:43 | |
| pmichaud | Context holds the registers and information for a currently executing Sub | ||
| iiuc, CallContext just holds the information for an invocation of a sub | |||
| I'm sure I have my names wrong anyway... too early in the morning, too many other things going on | 13:44 | ||
| afk, traveling across town | 13:45 | ||
| bbl | |||
| dukeleto | in M0, we are going to take things that shouldn't be in the interp object and put them in the current context, where they belong | 13:46 | |
| interps will still hold a small collection of truly global state info, tho | 13:47 | ||
| whiteknight | do we have a Context PMC? | 13:49 | |
| I don't think we have a separate Context | |||
| Lorito might separate that out | |||
| atrodo | whiteknight> What do you mean? | 13:50 | |
| whiteknight | We only have a CallContext PMC. There is no separate Context type | ||
| atrodo | whiteknight> I see what you're saying. That's a good question | 13:51 | |
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, make world/make test, fulltest) at 3_3_0-214-g6456502 | ||
| Ubuntu 11.04 i386 (g++) | |||
|
13:52
JimmyZ joined
|
|||
| mikehh | that is with perl 5.14.0 | 13:52 | |
|
13:52
JimmyZ left
13:53
JimmyZ joined
|
|||
| ttbot | Parrot 64565020 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3357 | 13:53 | |
| mikehh | I get a deprecation warning in pre-/post-config tests: | ||
| Use of qw(...) as parentheses is deprecated at config/init/defaults.pm line 305. | |||
| 6 times and once in config | 13:54 | ||
| dukeleto | mikehh: interesting. which version of perl ? | 13:55 | |
| mikehh | otherwise perl 5.14.0 looks good with parrot - have not tested some of the /tools/dev progs | 13:56 | |
| dukeleto | mikehh: sounds like a new deprecation | ||
| mikehh | I just did a fresh install of Ubuntu 11.04 and built perl 5.14.0 on top of it and have just now built and tested parrot using it | 13:57 | |
| it seems to be in perldelta.pod | |||
| it is still on RC3 | 13:58 | ||
| of course Ubuntu is still on perl 5.10.1 :-{ | 13:59 | ||
|
14:00
rj_ac joined
|
|||
| mikehh | I am still on perl 5.12.3 on my Kubuntu/Ubuntu 11.04 amd64 | 14:04 | |
|
14:06
JimmyZ left
14:13
JimmyZ joined
14:17
JimmyZ left
|
|||
| NotFound | whiteknight: thinking about hand decoding call_sig, a posiible slowdown is the distinction between a named optional unfilled and filled with a new value need several ops. | 14:21 | |
| s/new/null | |||
|
14:29
redicaps left
14:31
lucian left
14:33
woosley joined,
woosley left
14:38
simcop2387 left
14:39
PacoLinux_ left
14:47
SHODAN left
15:00
SHODAN joined
15:04
SHODAN left
15:05
theory joined
15:10
darbelo joined
15:15
lucian joined
15:18
SHODAN joined,
davidfetter joined
15:27
PacoLinux_ joined
15:29
PacoLinux_ left
15:30
PacoLinux_ joined
|
|||
| cotto | ~~ | 15:30 | |
| dalek | rrot/whiteknight/pcc_prototyping: b2cae51 | Whiteknight++ | / (5 files): Add in a few new opcodes required for my PCC refactors idea. invokecc_p_p, new_call_context_p, and get_call_context_p. I'm working on a writeup now to discuss why these would be necessary to replace set_args, get_params, set_returns and get_results |
15:38 | |
|
15:39
SHODAN left
15:46
rurban_ joined
15:48
rurban left,
rurban_ is now known as rurban
|
|||
| dalek | p: d846b25 | moritz++ | src/Regex/P6Regex/Grammar.pm: more awesome error message for unrecognized meta character in regexes not quite awesome yet, it does not report the actual offending character |
15:50 | |
| atrodo | whiteknight++ | 15:51 | |
| cotto | I suspect that watching MacGuyver may not be the best thing for my code. | 15:53 | |
| atrodo | cotto> What's the worse that could happen. Remember, MacGuyver's hacks always worked and never had side effects | 15:54 | |
|
15:56
benabik joined
|
|||
| benabik | ~~ | 15:59 | |
| cotto | Did someone get NotFound access to his trac account? | 16:00 | |
| dalek | rrot: 4f65ae6 | mikehh++ | config/init/defaults.pm: add parentheses around qw(...) to avoid deprecation warning in perl 5.14.0 |
||
| rrot/m0-prototype: ec14582 | dukeleto++ | src/m0/m0_assembler.pl: Generate less wronger M0 bytecode |
16:03 | ||
| benabik | I managed to get into my Trac account by asking for a new password... | 16:05 | |
|
16:07
alester joined
|
|||
| alester | dukeleto: Are you using the new TWMech OK? | 16:08 | |
| whiteknight | atrodo: You like some of those timings? It's good validation | ||
| atrodo | whiteknight> what timings? | ||
| whiteknight> Ah, new blog. I was giving you karma for the branch | 16:09 | ||
| whiteknight | atrodo: Oh, I thought you were ++ing my latests blog | ||
| :) | |||
| cotto | benabik, some users don't remember which email they set for password recovery (if any) | ||
| atrodo | whiteknight++ that too | ||
| benabik | cotto: Well, that would be a problem yes. | ||
|
16:10
dodathome joined
|
|||
| ttbot | Parrot 4f65ae6b MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3425 | 16:10 | |
| NotFound | I think I set it, but I'm not completely sure. | 16:11 | |
| cotto | dukeleto, I don't think the M0 assembler needs to do as much work as you think it does. | 16:12 | |
|
16:17
mj41 left
|
|||
| atrodo | whiteknight> So thinking outloud, how would this change hll interop? | 16:17 | |
| dukeleto | alester: haven't tried the newest version, yet. Will let you know. | 16:18 | |
|
16:20
simcop2387 joined
|
|||
| dukeleto | cotto: please explain | 16:20 | |
| Coke_ | shodan, userid? | 16:26 | |
|
16:26
PacoLinux_ left
|
|||
| cotto | dukeleto, cotto_work will. | 16:26 | |
|
16:26
cotto left
|
|||
| Coke_ | I'm happy to play tracadmin, but need trac IDs in order to assign privs. Ping me if it's still an issue. | 16:28 | |
| whiteknight | atrodo: Good question. Right now it's the wild west. Parrot tries to provide a system, and if you don't like it (how Rakudo doesn't) you provide your own | 16:32 | |
| atrodo, in my system, the only interface is that you put parameters into the CallContext, and the recipient unpacks it however they want | |||
|
16:33
bluescreen left
|
|||
| whiteknight | and if you do it that way, there's no reason why CallContext even needs to contain the actual values. It could just contain references to the registers where those values are held | 16:36 | |
| or CallContext could be lazy, and not load values until they are unpacked | |||
| dukeleto | BREAKING NEWS FROM OSL | 16:38 | |
| whiteknight | something like Javascript's arguments[] array becomes trivial to implement. "arguments" is just an alias over the CallContext | ||
| dukeleto | they have restored our trac htpasswd file from a backup | 16:39 | |
| NotFound | whiteknight: note that javascript has no named parameters. | ||
| dukeleto | and the version we have been modifying is now called parrot.htpasswd.bak is the same directory. | ||
| benabik | dukeleto: woo! | ||
| whiteknight | NotFound: right | ||
| dukeleto | which means people can go back to their passwords before the madness | 16:40 | |
| NotFound | dukeleto: verfied, I'm logged now. | ||
| People actually do backups? I'm amazed ;) | 16:42 | ||
| I thought they were an urban legend. | |||
| Or even pre-urban. | |||
| benabik | whiteknight: re blog: is a two argument invoke basically call/cc and three arg tail recursion (i.e. never comes back to here)? | 16:43 | |
| atrodo | whiteknight> So if js doesn't have named params, how would they get named params? | ||
| whiteknight | benabik, right now we have invokecc (1 arg) and invoke (2 args). invoke takes a sub and a return continuation | ||
| atrodo | Although, that probably doesn't change with the new callcontext | ||
| whiteknight | benabik, I think we could condence down to a single invoke op with 2 or 3 args. The optional third arg would be the return continuation | ||
| atrodo, if javascript doesn't have named params, they wouldn't be generating code to access them | 16:44 | ||
| benabik | whiteknight: If you have "invoke sub, contination" then "say 'Hi'", the code never prints anything because it never comes back, right? (Just trying to be certain I have the structure right.) | ||
| whiteknight: It invokes the continuation at return instead of coming back to after the invoke. | |||
| whiteknight | atrodo: If they wanted to be able to receive named args from code written in a different language, they could add a custom function or override named attribute access on "arguments" | 16:45 | |
| benabik, exactly right. The return continuation is where the subroutine jumps to when it is over | |||
| benabik, and there's no reason it has to jump back to the point of the call | |||
| it can jump directly to another chained sub, or a continuation somewhere | 16:46 | ||
| benabik | whiteknight: Right, right. I was just making sure I wasn't assuming the wrong thing. | ||
| whiteknight | no, you've got it | ||
| benabik | :-D | ||
| benabik has been stuck in Java-land for 3 days. | |||
| benabik puts away Eclipse and doesn't want to touch it again any time soon. | |||
| whiteknight | brb | 16:47 | |
|
16:47
whiteknight left,
whiteknight joined,
alh left
|
|||
| dukeleto | benabik: good idea | 16:47 | |
| NotFound | Note that on the callee side you can already do all that, just by using a :call_sig arg | 16:48 | |
| benabik | dukeleto: I like Eclipse when I have to work in Java, but I don't like working in Java. I've been working in Ruby, Scala and Parrot for too long. | ||
|
16:48
bluescreen joined
|
|||
| benabik | Hm. Does parrot have any way to bypass repeated type lookups? i.e. can I do something like `mypmc = get_type "MyPMC"; a = new mypmc; b = new mypmc` instead of `a = new "MyPMC"; b = new "MyPMC"`? | 16:53 | |
| cotto_work | ~~ | ||
| plobsing | benabik: yes. I believe it is called 'get_class' | 16:57 | |
|
16:57
birdwindupbird left
|
|||
| benabik | plobsing: Interesting. I was wondering about that because of whiteknight's blog and comment about the slowness of `new "CallContext"`. Although a dedicated op new_callcontext is probably best because we need that to be as fast as possible all the time. | 16:59 | |
| cotto_work | dukeleto: the M0 assembler doesn't need to care about what op arguments mean. Looking things up is the responsibility of the M0 interp. | 17:00 | |
| whiteknight | benabik: I didn't try get_class at all. I might want to include that in a benchmark instead of a dedicated new opcode | ||
|
17:00
rj_ac left
|
|||
| dalek | rrot: dbfe940 | plobsing++ | config/gen/opengl.pm: convert opengl NCI signatures to new format |
17:00 | |
| rrot: 5e2b6af | plobsing++ | runtime/parrot/library/OpenGL.pir: handle new signature change at runtime |
|||
| rrot: 5e2f161 | plobsing++ | runtime/parrot/library/NCI/Utils.pir: update call_toolkit_init for new call by reference calling convention |
|||
| whiteknight | Notfound: :call_sig on the callee does not do quite the same thing I do. It still calls get_params, which calls fill_params. fill_params does a check for :call_sig flag and returns early | ||
| benabik | whiteknight: get_class only helps people who make multiple calls while an opcode helps everyone. And without the opcode, we'll just end up with every single bit of PIR code with a dedicated CallContext class register. | ||
| whiteknight | it's less work than doing the whole fill_params show, but it's more than we need | ||
| plobsing | benabik: be careful not to fall into the "add an op for it" trap. adding ops just pushes the complexity elsewhere | ||
| benabik | plobsing: True enough. | ||
| NotFound | whiteknight: I mean "you" the compiler writer. | ||
| plobsing | NotFound: opengl appears to be fixed now | 17:02 | |
| whiteknight | plobsing: Yeah, that's my least favorite part of this approach. I find comfort in the idea that we should be able to delete more ops than we add | ||
| benabik | plobsing: But performing calls is such a vital part of the VM that it doesn't seem uncalled for. | ||
| NotFound | whiteknight: "you" can wtite the code to get the arguments. | ||
| benabik | (Uncalled for, heh.) | ||
| NotFound | plobsing: nice, going to test... | ||
| whiteknight | Notfound: yes, true. Getting the call context is still more expensive now than it needs to be | ||
| plobsing | whiteknight: WRT callcontext referencing the caller context, we already have something that does that - Keys. Perhaps we could merge the two concepts. | 17:03 | |
| whiteknight | blah. I have an irrational and unfounded hatred of keys | 17:04 | |
| benabik | plobsing: Keys? | ||
| whiteknight | benabik: basically, something like a magical linked list | ||
| plobsing | whiteknight: the implementation is a bit lacking, but the concept is necessary | ||
| whiteknight | src/key.c and src/pmc/key.pmc | ||
| benabik | whiteknight: I have a distrust of "magical". | ||
| plobsing | whiteknight: there is nothing that *requires* keys to be a linked list | ||
| they could just as easily be implemented using an array of integeres | 17:05 | ||
| benabik | I also distrust comments like "Sometimes it's the next key, sometimes it's not. The Key code is like that." | ||
| plobsing | the caller convention would then be (1) fetch key constant describing call (functions as signature PMC) (2) clone key and bind clone to current context (3) pass cloned key during call | 17:06 | |
| NotFound | That comments can be remanants from a previous epoch, the key usage is more clean right now. | 17:07 | |
| plobsing | fetching a constant is cheap, cloning a key (if implemented using an integer array) could be cheap, binding a key to a context is a single pointer assign | 17:08 | |
|
17:08
contingencyplan joined
|
|||
| plobsing | the caller side of PCC becomes increadibly inexpensive | 17:08 | |
| whiteknight | can we implement all that inexpensiveness inside CallContext? | 17:09 | |
| NotFound | plobsing: examples/fly flies again :) | ||
| benabik | Key is a constant heterogeneous list? | ||
| plobsing | benabik: yes, it is used to implement keyed access to aggregates | ||
| ttbot | Parrot dbfe9404 MSWin32-x86-multi-thread make error tt.taptinder.org/cmdinfo/3497 | ||
| plobsing | keys can also reference registers | ||
| whiteknight: we can. and then we can kill keys replace them with callcontext, and rename callcontext to key | 17:10 | ||
| they are the same concept | |||
| benabik | plobsing: They sound more like "closely related concepts" than the same one. | 17:11 | |
| whiteknight | CallContext does a lot more than just passing arguments. It also holds the registers and all context information for the sub | ||
| plobsing | see, that strikes me as just wrong | ||
| whiteknight | We could CallContext isa Key, if you think that's worthwhile. The whole thing gives me the heeby-jeebies, so I don't want to think about it much | 17:12 | |
| plobsing | the register frame should be independant of the callcontext | ||
| whiteknight | plobsing: We combined the two during the PCC refactors because it was seen as needlessly wasteful to create a CallSignature AND a Context for every call | ||
| and since the two almost always have a 1:1 relationship, they were merged. Great savings. There was much rejoicing | 17:13 | ||
| plobsing | but some of that information is much more long-lived than other information | ||
| the call info is only alive during the call | |||
| whiteknight | I'm not saying it's the best decision on all levels | ||
| plobsing | and should be reclaimed afterwards | ||
| whiteknight | but it was an optimization with significant performance benefits | ||
| a better design that doesn't regress miserably on performance would be eagerly considered | 17:14 | ||
| plobsing | GenGC means we should aggressively seek to split information with different lifetimes | ||
| whiteknight | to the point of turning one PMC allocation per call into two PMC allocations per call, across the board? | 17:15 | |
| plobsing | young generation garbage is cheap | 17:16 | |
| call info is young generation except in special cases | |||
| dukeleto | msg bacek you gonna unbreak master anytime soon? jitterbug.leto.net:3000/project/parrot | 17:19 | |
| aloha | OK. I'll deliver the message. | ||
| dukeleto | msg bacek i would prefer you break a branch | ||
| aloha | OK. I'll deliver the message. | ||
|
17:19
fedov joined
|
|||
| dukeleto | cotto_work: i am going afk for a while. Can you send an email to me or parrot-dev explaining exactly what an M0 assembler should and should not do ? | 17:22 | |
| cotto_work | dukeleto: srue | ||
| *sure | 17:23 | ||
|
17:25
davidfetter left
17:27
fedov left
17:47
jevin joined
|
|||
| lucian has just submitted his dissertation. yay for mediocrity! :) | 17:55 | ||
| benabik | lucian++ | ||
| lucian | whiteknight: with a good gc, constant-size allocation is free | 17:56 | |
| whiteknight: so overall, i agree with plobsing, although PMC construction might be more complex that i immagine | |||
| benabik: thanks | |||
| benabik | lucian: Is this the final dissertation? Ready for defense and everything? | 17:57 | |
| benabik just started talking to a prof about a thesis. | |||
| lucian | benabik: yeah, pretty much | ||
| done with uni after this | |||
| benabik | lucian: Awesome! | ||
| lucian | not really, it's kinda crap | ||
| whiteknight | lucian: okay, I'll take your work and plobsing's word for it. I don't think we need to be changing around the way CallContext works for the first upcoming round of refactors | ||
| I mean, we can do it, or we can start cleaning crap up and make a new plan when the dust settles | 17:58 | ||
| lucian | and i have plenty of coursework and exams left ... | ||
| whiteknight: if you think about it, you can arrange your gc so that allocation is just incrementing a pointer | |||
| benabik | Do we currently have allocation pools for constant sized objects? | ||
| lucian | PyPy's and jdk's do that | ||
| whiteknight | lucian: yes, that's how we do allocations in Parrot now, for the most part | 17:59 | |
| lucian | whiteknight: but you certainly know more than me about parrot, it might not be feasible/good idea short-term | ||
| whiteknight | for a fresh pool, we increment a pointer. Once the pool has been exhausted the first time, we GC and then pull off a linked free list | ||
| lucian | right. so if the pools are too small/not aligned to pmc size, two allocations might be an issue | 18:00 | |
| whiteknight | pools should be plenty large and are aligned | ||
| lucian | btw, dl.dropbox.com/u/317039/paper.pdf if anyone cares about my paper. don't distribute it please, 'cause i'm not sure i'm allowed | ||
| whiteknight | because each pool only services objects of one size | ||
| lucian | and is PMC initialisation expensive? | ||
| whiteknight | I would say so, yes | 18:01 | |
| benabik | lucian: IRC channels are logged, so that link is now "public", so you might want to move it after a short time. :-/ | ||
| whiteknight | for each PMC we have to allocate an attributes structure for it, assign a vtable, and call VTABLE_init | ||
| lucian | benabik: for some definition of "public" | ||
| benabik | lucian: In this case, by public I mean "indexed by Google" | 18:02 | |
| cotto_work | There's a pretty good chance it'll be indexed by various search engines at some point. | ||
| lucian shrugs. it "slipped" out of my dropbox | |||
| whiteknight: right. could this be reduced? | |||
| if nothing else, a zygote PMC might help | 18:03 | ||
| after 3 years, i truly regret doing uni | 18:04 | ||
| benabik | lucian: That sucks. :-( Despite the panic at the end of this quarter, I've been really enjoying it. | 18:05 | |
| lucian | benabik: at least mine's been mostly useless | ||
| only 3rd year have i learned new things | |||
| and even then, the exams and coursework is usually stupid | 18:06 | ||
| benabik | lucian: Well, that's no good. I've had three classes a quarter so far and it's broken down into: 1 bleh, 1 kinda interesting, 1 awesome. | 18:07 | |
| lucian | right. my first year was all bleh, second year mostly bleh with a little interesting, 3rd mostly interesting with a little awesome | ||
| darbelo | ~~ | 18:08 | |
| benabik | lucian: Oh well. :-( | ||
| lucian: Hopefully the little bit of paper they'll give you will be useful at least. :-D | |||
| cotto_work | Anyone know windows and want to take a look at the get-entropy branch? | ||
| lucian | benabik: doubtful, but hopefully | 18:09 | |
| whiteknight | cotto_work: yes, and no | 18:14 | |
| :) | |||
| cotto_work | sad face | 18:15 | |
| whiteknight | I'm looking now | ||
| benabik | lunch! | ||
|
18:15
benabik left
|
|||
| cotto_work | happy face | 18:15 | |
| whiteknight++ | |||
| whiteknight | cotto_work, where is the entropy stuff defined? | ||
| cotto_work | src/platform/win32/entropy.c | ||
| new file | 18:16 | ||
| whiteknight | okay, what am I looking at? | 18:18 | |
| just make sure it works, or you want me to fill in the blanks? | 18:19 | ||
| cotto_work | Why it won't build with the msvc toolchain | ||
| whiteknight | ah, okay | ||
| cotto_work | the blanks are the easy part | ||
| I just left them blank in case the surrounding code needed to be changed. | |||
| whiteknight | cotto_work, it doesn't look like we are linking against advapi32.dll | 18:24 | |
| that's where those functions are defined | 18:25 | ||
| cotto_work | whiteknight: ok. | ||
| do you have the tuits to fix it? | 18:26 | ||
| whiteknight | lemme look | 18:27 | |
| I'm trying a build now. | 18:30 | ||
| cotto_work | much appreciated | ||
| figured out how to fix the Makefile | 18:33 | ||
| whiteknight | yeah, me too | 18:34 | |
| cotto_work | and where to add the .lib | 18:35 | |
| whiteknight | okay, parrot builds but the build now fails building ops2c | ||
| .\\parrot-nqp.exe --target=pir --output=compilers/opsc/gen/Ops/Compiler/Grammar.pir compilers/opsc/src/Ops/Compiler/Grammar.pm | |||
| NMAKE : fatal error U1077: '.\\parrot-nqp.exe' : return code '0xc0000005' | |||
| Stop. | |||
| everything up to that point passes | |||
| cotto_work | I saw that on mingw | 18:36 | |
| atrodo | Looks like we're legit: www.yapc2011.us/yn2011/event/877 | ||
| cotto_work | atrodo: wootsauce | ||
| atrodo | www.yapc2011.us/yn2011/event/876 | ||
| cotto_work | whiteknight: trying after adding advapi.lib to the mswin32 hints | 18:37 | |
| whiteknight | cotto_work: that's what I did the first time. It's in the commandline for building parrot-nqp | 18:38 | |
| cotto_work | build looks good for me | 18:39 | |
| dalek | rrot/get-entropy: 42dda94 | cotto++ | config/init/hints/mswin32.pm: add advapi32 to the list of libs libparrot gets linked to |
18:40 | |
| cotto_work | That wasn't quite as painful as I'd expected. | 18:41 | |
| It seems to work and generate superficially random-looking numbers. | 18:43 | ||
| dalek | rrot/get-entropy: c59893a | cotto++ | src/platform/win32/entropy.c: pass PARROT_INTERP to entropy function instead of void |
18:44 | |
| cotto_work | nice to have that working | 18:45 | |
| whiteknight: thanks | 18:47 | ||
| and whiteknight++ | |||
| The mingw build still explodes on opsc. | 18:50 | ||
| I saw that on master too, though. | |||
| whiteknight | that's worrisome | 18:51 | |
| I wasn't building with mingw | 18:52 | ||
| cotto_work | yes | ||
| The entropy code also doesn't dtrt on mingw. | 19:06 | ||
|
19:08
SHODAN joined
|
|||
| cotto_work | having msvc working is definite progress | 19:14 | |
| mikehh | plobsing: perlcritic does not like the prototype on line 48 of config/gen/opengl.pm | 19:24 | |
| whiteknight: bacek claims that error code is a segfault | 19:26 | ||
| whiteknight | mikehh: which error code? | 19:27 | |
| mikehh | whiteknight: NMAKE : fatal error U1077: '.\\parrot-nqp.exe' : return code '0xc0000005' <- this one | ||
| whiteknight | oh, nice | 19:28 | |
| mikehh | U1077 indicates nmake can't find it - the return code is supposed to be a segfault | 19:29 | |
| whiteknight | ok | 19:30 | |
| cotto_work | awesome | 19:31 | |
| mikehh | IOW it fails to build and '0xc0000005' indicates a segfault has occurred (at least according to bacek) me I don't know from nothing | ||
| cotto_work | It's been too long since I've seen a segfault. | ||
| whiteknight | I can make a bunch more for you, if you want | 19:43 | |
| entropy generator + pointer dereference seems like a good system for making them | 19:46 | ||
| cotto_work | whiteknight: sounds good | 19:47 | |
| dukeleto | ~~ | 19:51 | |
| cotto_work | hio dukeleto | 19:54 | |
| dukeleto | cotto_work: howdy | 19:56 | |
| dalek | rrot/get-entropy: 782b0e5 | cotto++ | src/platform/win32/entropy.c: add enough magic to fix entropy for the mingw build |
20:00 | |
| dukeleto | cotto_work: which platforms has get-entropy not been tested on yet? | ||
|
20:01
darbelo left,
darbelo joined
|
|||
| dalek | nxed: r997 | NotFound++ | trunk/winxedst1.winxed: extract creation of predef caller into a function |
20:01 | |
| cotto_work | dukeleto: I've tested on windows (msvc and mingw) and Ubuntu 10.10 (x86) and 11.04 (x64). | 20:02 | |
| dukeleto: any other *nix would be great. /dev/urandom seems to be very common, but there's no fallback for if it doesn't exist. | 20:03 | ||
|
20:04
benabik joined
20:06
ShaneC left
20:15
benabik left
20:19
benabik joined
|
|||
| Coke_ | benabik: (java land) hey, I'm in cold fusion land. | 20:25 | |
|
20:26
ShaneC joined
|
|||
| benabik | Coke_: Cold fusion in physics is neat. In programming, not so much. | 20:26 | |
|
20:27
ambs left
|
|||
| whiteknight | FYI: github.com/blog/854-scheduled-main...-22-00-pst | 20:27 | |
|
20:28
ambs joined,
whiteknight left
20:30
particle left
20:32
ShaneC left
20:34
particle joined
20:37
dodathome left
20:42
bubaflub left
|
|||
| dalek | nxed: r998 | NotFound++ | trunk/winxedst1.winxed: check validity of instanceof left operand |
20:49 | |
|
20:51
ambs_ joined,
ambs left,
ambs_ is now known as ambs
|
|||
| NotFound | Winxed millenium edition is approaching ;) | 20:55 | |
| tadzik | yay :) | 20:56 | |
| cotto_work | worst marketing evar | 20:57 | |
|
20:57
Coke left
20:58
Coke joined
|
|||
| plobsing | NotFound: oh noes. I'll have to rush to ensure all my code is w1k compliant | 20:58 | |
|
20:59
perlite_ joined
|
|||
| NotFound | if (r % 100 > 99) ... | 20:59 | |
|
21:02
perlite left,
perlite_ is now known as perlite
21:05
Coke left,
Coke joined
21:07
SHODAN left
|
|||
| dalek | TT #2110 created by cotto++: mingw build fails while building opsc | 21:15 | |
| TT #2110: trac.parrot.org/parrot/ticket/2110 | |||
|
21:18
bubaflub joined
|
|||
| dalek | nxed: r999 | NotFound++ | trunk/winxedst1.winxed: check invalid initialization from void |
21:20 | |
| bacek | Good morning, humans | 21:30 | |
| dukeleto, I didn't brake build. GC maybe. But not build. | 21:31 | ||
|
21:32
ambs left
|
|||
| cotto_work | aloha, bacek | 21:32 | |
| bacek | msg whiteknight Nice post. Just 2 "small" problems: "C boundaries" and "MMD". | ||
| aloha | OK. I'll deliver the message. | ||
| bacek | cotto_work, aloha | ||
| cotto_work | msg whiteknight The formatting on your latest blog post looks wacky. There's a big gap between the first paragraph and the code snippet. | 21:39 | |
| aloha | OK. I'll deliver the message. | ||
| bacek | msg whiteknight And another "small" problem - ":flat/:slurpy". E.g. ($P1, $P2 :slurpy) = foo($P3 :flat) where "foo" is declared with ".param int a; .param pmc b :slurpy". | 21:40 | |
| aloha | OK. I'll deliver the message. | ||
| benabik | 'lo bacek! I'm one major project closer to working on GSoC. :-D | 21:41 | |
| bacek | msg whiteknight and .return ("foo", "bar", "baz", $P3 :flat). Good luck! | ||
| aloha | OK. I'll deliver the message. | ||
| bacek | benabik, good to know! How many left? | ||
| benabik | bacek: 1 large paper, 1 homework, 3 finals. | ||
| bacek | benabik, which is equal to (in days)? | ||
| benabik | bacek: Monday the projects are done, and I can actually spend some (but not too much) time in Parrot-land. Friday morning is my last final and I can really dig in after that. | 21:42 | |
| bacek | benabik, hooray! | 21:43 | |
| benabik | bacek: I'm not overly worried about the finals this quarter. Need to do some studying, but nothing too bad. It's been the projects due today and Monday that have taken ALL OF MY TIME. | 21:44 | |
| bacek | benabik, fair enough :) | 21:48 | |
| benabik | ETOOMANYFINALS ETOOMANYPROJECTS ENOTENOUGHTIME ETOOMANYERRORS | ||
| cotto_work | ENOTENOUGHROBOTS | ||
| bacek | msg whiteknight gist.github.com/969536 - this is why we have all "fill_params hell". Without splitting PCC into 2 parts a-la "fastcall" vs "smartcall" we can't do it much faster. | 21:51 | |
| aloha | OK. I'll deliver the message. | ||
|
21:56
bluescreen left,
darbelo left
|
|||
| bacek | cotto_work, #2110 (mingw fail) Is it optimized build? | 22:08 | |
| cotto_work | bacek: no | 22:09 | |
|
22:09
bluescreen joined
|
|||
| bacek | cotto_work, hmm. Can you obtain backtrace for it? | 22:10 | |
|
22:15
bluescreen_ joined
|
|||
| cotto_work | bacek: I need to install gdb first | 22:21 | |
| apparently strawberry doesn't include it | 22:22 | ||
| should have something in a minute or two | 22:24 | ||
|
22:27
alester left
|
|||
| cotto_work | doesn't seem to fail under gdb | 22:28 | |
| benabik | cotto_work: I love that kind of bug. | ||
|
22:29
alester joined
|
|||
| benabik | I have a bug in git where a change in the configuration code causes git-fsck to fail a test, but only when I run the test on a ramdisk. If I run fsck manually or run the test on my hard drive, it works fine. I call it a quantum bug. Its behavior is different depending on how I observe it. | 22:30 | |
| lucian | benabik: sounds like a timing bug | 22:32 | |
| cotto_work | What's $? in CMD.COM? | ||
| er, what's its equivalent. | |||
| benabik | lucian: I think it's timing and memory allocation. When a variable changed from a static buffer to an allocated one, it started exploding. Fun to track down at any rate. (Which I'll spend some cycles on after finals.) | 22:33 | |
| lucian: It'll give me good practice for GC bugs in Parrot. ;-) | |||
| lucian | i try to stay away from anything that can deadlock | ||
| benabik: good luck with that :) | 22:34 | ||
| seeing as how i hate C so much, the only gc work i plan to maybe to would be either porting jikes rvm gcs or writing gcs in winxed | 22:36 | ||
| cotto_work | looks like %errorlevel% is what I wanted | ||
| lucian | s/maybe to/maybe do/ | ||
| cotto_work: i can never remember all the odd windows constants | |||
| cotto_work | bacek: any suggestions? | ||
|
22:47
lucian left
22:50
lucian joined
|
|||
| bacek_at_work | cotto_work, is there something like "ulimit -c unlimited" on win32? | 22:50 | |
| cotto_work | beats me. lemme dig | 22:51 | |
| lucian | i've been thinking that perhaps parrot could adopt one of the OS abstraction libs | 22:55 | |
| cotto_work | lucian: you mean something like apr? | 22:56 | |
| lucian | that, or nspr or glib | ||
| benabik | Wasn't someone talking about glib interop? | ||
| cotto_work | Historically, we've tried to be very minimal in our dependencies. | 22:57 | |
| benabik: that's GObject interop at the PMC level | |||
| lucian | cotto_work: but doesn't that involve a lot of new wheels? | ||
| like with threads. either one of those gives you threads, presto | |||
| at least locks | |||
|
22:58
bubaflub left
|
|||
| dalek | rrot/get-entropy: 8f424c1 | cotto++ | / (5 files): shorten entropy function name, implement error checking/reporting |
23:03 | |
|
23:03
benabik left
|
|||
| cotto_work | lucian: I'll have to dig around to form a proper response to that. I think a big reason we're not using something like apr is that it'd limit the potential for embedded applications, but honestly it's an assumption that I've inherited and not thought about a lot. | 23:08 | |
| lucian | i see. it's just one more of the things i run background tasks in my brain for | 23:09 | |
| cotto_work: myself, i rather like glib, and vala to some extent | |||
| it might even be interesting to couple PMCs and gobject more closely, or even base PMC on gobject | 23:12 | ||
| but that's a lot of work with little clear benefit | 23:13 | ||
| cotto_work | yeah | ||
|
23:17
Caelum left
|
|||
| lucian | well, there are clear benefits | 23:19 | |
|
23:20
whiteknight joined
|
|||
| lucian | but as you said, there may be features that can't be done easily this way | 23:20 | |
| bacek_at_work | cotto_work, can you try to revert 19962bf49db7a9fb7f60f54d17786a52f64758c4 locally? It's only one "big" change in GC which can cause this failure. | ||
|
23:21
Khisanth left
23:22
Khisanth joined
|
|||
| cotto_work | bacek_at_work: trying now | 23:24 | |
| whiteknight | what failure are we looking at? | 23:27 | |
| whiteknight needs to backlog | |||
| bacek_at_work: I suspect we are going to need two new ops, one to pass :flat args and one to gather :slurpy args. Both of those things could also be done using loops/iterators or even the old slice vtable | 23:29 | ||
| cotto_work | whiteknight: mingw build 'splosion | ||
|
23:30
lucian left,
bubaflub joined
|
|||
| dalek | rrot/get-entropy: 0596d98 | cotto++ | src/platform/win32/entropy.c: add missing semicolon |
23:31 | |
| cotto_work | bacek_at_work: same failure after reverting that commit | 23:34 | |
| bacek_at_work | cotto_work, oookey. | 23:35 | |
| cotto_work, what about reverting 6f0cfa824ff117c6731ab47320e0375402f14e80? | |||
| cotto_work, or even better - just bisect RELEASE_3_3_0..HEAD | 23:36 | ||
| cotto_work | or that | ||
| might be a while | 23:38 | ||
| whiteknight | I can debug it tomorrow in VisualStudio if needed | 23:40 | |
| I didn't have time for that earlier today | |||
| cotto_work | whiteknight: good to know | ||
| we'll see how far I can get | |||
| whiteknight | ok | ||
|
23:46
rurban_ joined
|
|||
| KaeseEs | has anyone started on the m0 disassembler? i have some tuits tonight and tomorrow | 23:48 | |
|
23:48
rurban left,
rurban_ is now known as rurban
23:49
hudnix left
|
|||
| cotto_work | KaeseEs: it's all yours | 23:53 | |
| KaeseEs: please do any m0-related work in the m0-prototype branch | |||