|
Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply merge Set by moderator on 23 October 2009. |
|||
| jonathan | whiteknight: OK, thanks. I'll investigate tomorrow. | 00:00 | |
| Coke | In fact, I'm pretty sure I've been using install-dev since then with no problems. | ||
| (but yah, it's not exactly an alias at this point.) | 00:05 | ||
| pmichaud_ | oh, wait, "make install" does "install-bin install-dev"? | 00:09 | |
| that's a problem. | |||
| fixing. | |||
| dalek | rrot: r42095 | pmichaud++ | trunk/config/gen/makefiles/root.in: [install]: Restore install-dev target to also do 'make install' actions. |
||
| pmichaud_ | also, I should note that "make help" says: | 00:10 | |
| install-dev: Same as 'install' but also install support for development. | |||
| (which it will do again in a moment) | |||
| jonathan -> sleep, see y'all tomorrow. | |||
| dalek | rrot: r42096 | pmichaud++ | trunk/config/gen/makefiles/root.in: [install]: Oops, previous patch resulted in a circular dependency. 'make install-dev' depends on 'install-bin'. |
00:12 | |
| japhb | pmichaud_, there should be a target that does *only* the non-bin stuff. | 00:15 | |
| 'install-devel'? | |||
| pmichaud_ | ...why? | ||
| japhb | For packagers. | ||
| pmichaud_ | okay, install-devel then | ||
| part of me wants "install-devlibs" instead | 00:16 | ||
| wait | |||
| that doesn't make any sense | |||
| japhb | ... with a comment explaining why 'install-dev' and 'install-devlibs' both exist. | ||
| pmichaud_ | what were packagers using before now...? | ||
| japhb | pmichaud_, they were guessing. | ||
| ttbot | Parrot trunk/ r42095 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/123645.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) | ||
| pmichaud_ | where "guessing" means...? | ||
| Austin | how about "make for-packagers" | 00:17 | |
| pmichaud_ | Austin: packagers have two targets they want to make | ||
| Austin: they want to be able to get a runtime | |||
| japhb | probably reading the install-dev script, figuring out what it does, and figuring out the list of files it would install | ||
| pmichaud_ | on ubuntu at least, the standard package name is "*-devel" | 00:18 | |
| are there any packaging systems that use "*-dev"? | |||
| what's the typical RPM name ? | |||
| Austin | Ad placement fail: failblog.org/2009/10/23/ad-placement-fail-4/ | ||
| japhb | pmichaud_, core debian uses -dev | 00:19 | |
| whiteknight | PL/Parrot? | ||
| purl | PL/Parrot is probably a really cool project irc://irc.freenode.net/plparrot | ||
| japhb | Fedora/Redhat use -devel | ||
| pmichaud_ | so I think it should be -devel then | ||
| japhb | I'm fine with that | ||
| pmichaud_ | oh wait, ubuntu uses -dev | 00:20 | |
| grrrr | |||
| Austin | What's the other target name? | ||
| pmichaud_ | what we had previously (before this weekend) | ||
| 'make install' -- install parrot runtime environment | |||
| 'make install-dev' -- same as 'make install', plus all files needed for development | |||
| Austin | Why does a packager want that? | 00:21 | |
| pmichaud_ | they don't | ||
| but developers do (more) | |||
| japhb | (My only concern was that there be targets in the makefile that packagers could use for both cases, so they stopped trying to guess what we really want. I don't strongly care what they are named, as long as it makes some semblance of sense.) | ||
| pmichaud_ | typically if I do "apt-get install foo-dev", I expect to get 'foo' plus its development environment | ||
| I vote for "install-dev-only" | |||
| japhb | pmichaud_, fine with that | ||
| pmichaud_ | which *only* installs the development files | ||
| japhb | yup | 00:22 | |
| pmichaud_ | and perhaps install-bin should be install-bin-only | ||
| but I'll let someone else make that decision/change | |||
| japhb | fine with that too. | ||
| plobsing | could someone take a look at TT1147 ? | 00:23 | |
| japhb | So now we'd have install -> install-dev -> (install-bin-only + install-dev-only) | ||
| ttbot | Parrot trunk/ r42096 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/123678.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) | ||
| pmichaud_ | actually, I'm going to do | ||
| install-dev -> install | |||
| install -> (install-bin + install-dev-only) | |||
| japhb | check it in. ;-) | 00:24 | |
| pmichaud_ | testing now. | ||
| tested, committed. | 00:28 | ||
| dalek | rrot: r42097 | pmichaud++ | trunk/config/gen/makefiles/root.in: [install]: Per further discussion on irc, add a new 'make install-dev-only' and 'install-dev-only', and 'make install-dev' is just an alias for 'make install'. |
00:29 | |
| purl | 'make install' is just plain all over the place for non-module things..like templates, etc | ||
| japhb | purl, forget 'make install' | 00:31 | |
| purl | japhb: I forgot 'make install' | ||
| japhb | I spend more time telling purl to forget stuff than any other interaction, I think. | ||
| Austin | :) Japhb, you just have to love her for what she is. Trying to change her is like teaching a pig to sing. | 00:32 | |
| pmichaud_ | I don't mind that parrot automatically picks up useless facts, I just mind that she spouts them off when not explicitly asked for them. | ||
| s/parrot/purl/ | |||
| Liza | How do you feel about she spouts them off when not explicitly asked for them? | 00:34 | |
| pmichaud_ whips out his bazooka ... "THIS IS HOW I FEEL ABOUT IT. MUWAHAHAHAHAH" | 00:35 | ||
| wow.... latest parrot is _much_ faster (for nqp-rx) than 1.7.0 | 00:36 | ||
| (parrot-devs)++ | |||
| bacek_at_work | pmichaud_, about 40% faster. Still slower than 1.4... | ||
| pmichaud_ | yes, 40% is about what I'm seeing | 00:37 | |
| Coke | no, 'make install' is <reply> | ||
| (then she can't relearn it. | 00:38 | ||
| ttbot | Parrot trunk/ r42097 MSWin32-x86-multi-thread make error tt.ro.vutbr.cz/file/cmdout/123728.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) | ||
| pmichaud_ | oh, wait | 00:39 | |
| I might be testing the wrong version of nqp-rx | |||
| Austin | Pmichaud_, I'm getting an error saying "A method named '_ABSTRACT_METHOD' already exists in class 'Class::BaseBehavior'. It may have been supplied by a role. | 00:40 | |
| pmichaud_ | Austin: never seen anything like it before | ||
| Austin | Is that from reloading pbc, or re-defining the class, or what? | ||
| pmichaud_ | probably from one of those two items, yes. | ||
| Austin | :( | 00:41 | |
| Neither have I. | |||
| pmichaud_ | I've seen the "already exists" message before, yes. | ||
| it often occurs when attempting to redefine a class | |||
| or when something gets run/loaded more than once | |||
| especially things like :init :load subs that appear at the top of a .pir file and there is no :main | |||
| whiteknight | bacek++ and chromatic++ have been kicking ass on the optimization front | 00:43 | |
| pmichaud_ | ugh. I _really_ need to find a way to get a handle on the :main sub inside of a .pbc file | ||
| e.g., when loaded via load_bytecode | |||
| Austin | I'm working on that. | 00:44 | |
| pmichaud_ | how so? | ||
| Austin | krt0.pir | ||
| pmichaud_ | that doesn't mean anything to me :-| | ||
| Austin | It's a framework that grabs control, sets up some stuff, etc. | ||
| pmichaud_ | I think that load_bytecode should be able to return the .pbc that was loaded. | 00:45 | |
| Austin | So [],main is called, unless you register_main something else. And init ordering is supported. | ||
| I agree. | |||
| It would be nice to be able to inspect the namespaces, etc, that just came in. | |||
| whiteknight | pmichaud_: what are you talking about, that you would be able to get a Sub PMC for the :main sub? | ||
| pmichaud_ | whiteknight: yes | ||
| so that I can execute the .pbc's mainline code somehow | 00:46 | ||
| (but preserve the ability to load the .pbc w/o executing the mainline code) | |||
| Austin | Whiteknight: When you do load_bytecode, currently it returns nothing. For managing libraries, it would be nice to inspect the loaded pbc, get a list of :mains, :inits, etc. | ||
| pmichaud_ | currently rakudo jumps through all sorts of hoops to try to manage the order of execution under the various load/init/main contexts | 00:48 | |
| and it looks like I'll have to do something similar for nqp-rx | |||
| ideally I'd expect to get back the same sort of PMC that doing a runtime PIR compilation would give me | 00:49 | ||
| i.e,. it's a PMC that contains the entire bytecode image that was loaded | |||
| Austin | There's your answer. | ||
| Don't use load_bytecode, just compile the pir. | |||
| :) | |||
| pmichaud_ | that's actually pretty tempting. | 00:50 | |
| of course, that doesn't help me out when all I have is a .pbc that I got from somewhere else. | |||
| alas, looks like I was wrong about the speed improvement :-( | 00:51 | ||
| Austin | pbc_dump --disassemble file.pbc > /tmp/newfile.pasm ? | ||
| pmichaud_ | I was running a very old (and much smaller) copy of nqp-rx | ||
| whiteknight | I've been trying to plan a comprehensive redo of the way subs are compiled and execued | 00:55 | |
| so all this information is good feedback | |||
| Austin | Man, even without annotations the exception-locator was off by 5000 lines. :( | 00:58 | |
| whiteknight | IMCC should return an array of all compiled subs, and then I think some sort of execution engine (the scheduler?) should execute them in order | ||
| pmichaud_ | I prefer what we have now | ||
| IMCC returns an Eval PMC, which contains an array of all compiled subs | |||
| invoking the Eval PMC invokes the first compiled sub | 00:59 | ||
| whiteknight | that's basically what I'm saying | ||
|
00:59
abqar joined
|
|||
| pmichaud_ | certainly "execute all compiled subs in order" is incorrect. | 00:59 | |
| whiteknight | I'm simplifying | ||
| probably too muc | |||
| pmichaud_ | I'd like for load_bytecode to likewise return an Eval PMC | ||
| then I can start introspecting it for things that I need | |||
| whiteknight | okay. So if we add another variant of load_bytecode that returns the Eval PMC, that would satisfy? | 01:00 | |
| pmichaud_ | seems like it would, yes. | ||
| it would certainly remove quite a few hoops I currently have to jump through. | 01:01 | ||
| whiteknight | where does the Eval PMC come from now, the PIR compreg? | ||
| pmichaud_ | yes. | ||
| whiteknight | okay. | 01:02 | |
| okay, I think I see how this works | 01:08 | ||
| If I create an Eval PMC, and pass that to Packfile_fixup_subs, it should populate it | |||
| I wonder if that will execute :load subs though? | |||
| pmichaud_: do you want :load subs to execute immediately, or do you want them in the Eval PMC and you can execute them manually? | 01:09 | ||
| pmichaud_ | execute immediately, same as IMCC | ||
| I suspect that if I don't want them to execute immediately I'd just use 'thaw' | |||
| whiteknight | okay, I think I can add this | 01:10 | |
| Austin | Okay, now I'm into space weirdness. I'm getting an exception from a sub that doesn't exist anymore. ?:-( | 01:11 | |
| How do I print out the searchpath for pir/pbc files? | 01:12 | ||
| whiteknight | pmichaud_: patch in testing now | 01:23 | |
| ah, nevermind. PGE doesn't build now | 01:29 | ||
| so I'm probably not handling :load subs correctly now | |||
| will work on it tomorrow | |||
| Going to bed now. Goodnight | |||
| Austin sings, "Children, I hope you sleep tight! And don't let the bedbugs bite. If you should die before you wake, pray good God your soul to take!" | 01:31 | ||
|
01:33
s1n_mini joined
|
|||
| dalek | p-rx: a669f19 | pmichaud++ | build/ (2 files): Clean up Makefile a bit, bump PARROT_REVISION. |
02:23 | |
| p-rx: 920efd9 | pmichaud++ | src/PAST/Compiler-Regex.pir: [regex]: Add 'pastnode' type for PAST::Regex. |
02:24 | ||
|
02:34
eternaleye joined
|
|||
| bacek_at_work | pmichaud_, can you give some good example in nqp-rx for performance testing? I'll try to do something tonight. | 02:41 | |
| Coke | so, when I switch from a tclint pmc (subclass of Integer) to a class defined in PIR, I start getting MMD errors (no suitable candidate) for add. I wasn't overriding add before. any clues/ | 03:11 | |
| ? | |||
| pmichaud_ | Coke: sounds like the ongoing mmd bugs. | 03:19 | |
|
03:24
eternaleye joined
03:27
eternaleye joined
03:47
janus joined
04:20
mikehh joined
04:24
mikehh joined
04:55
eternaleye joined
04:58
eternaleye joined
05:03
mikehh joined
05:06
theory joined
05:10
mberends joined
05:15
hiroyuk__ joined
|
|||
| dalek | p-rx: 63139fe | pmichaud++ | (3 files): Refactor the build/bootstrap build process to avoid cross-stage conflicts. |
05:29 | |
| p-rx: 1a369e2 | pmichaud++ | (6 files): More build process cleanups. Add :PIR{{...}} modifier for inlined PIR |
|||
|
05:33
kurahaupo joined
|
|||
| dalek | p-rx: 4039648 | pmichaud++ | build/Makefile.in: Improve "make clean" target a bit. |
05:41 | |
|
05:47
eternaleye joined
05:52
rhr joined
05:58
chromatic joined
06:00
patspam joined
06:09
JimmyZ joined
06:26
cotto joined
|
|||
| cotto | hi | 06:35 | |
| bacek_at_work | cotto: looks like you've lost last "o" :) | 06:48 | |
|
06:59
uniejo joined
07:13
desertm4x joined
07:18
desertm4x_ joined
07:32
KatrinaTheLamia joined
07:39
iblechbot joined
07:42
fperrad joined
07:50
flh joined
|
|||
| flh | is there a way to manipulate contexts from a dynpmc? I'm trying to call for example Parrot_set_new_context, but the linker complains about this symbol not being found (I guess it's due to the fact that it doesn't have PARROT_EXPORT) | 07:57 | |
| chromatic | What problem are you trying to solve with that call? | 08:00 | |
| flh | I want to push a new context (like the current Sub PMC does), to call some PIR code | 08:01 | |
| actually, it sounds like there are functions to call PIR subs from C :) | 08:02 | ||
| ok, but this will probably create a nested runloop, which was not really part of my plan | 08:05 | ||
| so I'll try to give move details: I have a subroutine, which returns another subroutine | 08:07 | ||
| when the first one returns, I want its result to be automatically invoked | |||
| so I wanted to use a continuation PMC, which would invoke the result sub: pushing a new context (so between the caller's context and the sub's context) would allow the continuation to fetch the second subroutine | 08:09 | ||
| unfortunately, it seems that I actually have no way to play with contexts from a dynpmc | 08:10 | ||
| chromatic | That sounds like a tailcall to me. | 08:13 | |
| dukeleto | 'ello | 08:14 | |
| flh | more or less: I want "first_sub(a,b)" to act as "$P0 = first_sub(a, b) ; .tailcall ($P0())" | 08:15 | |
| treed | wouldn't that be an infinite loop? | 08:16 | |
| since the first thing your function does is call itself? | |||
| with the same parameters | |||
| It'd never reach the tailcall | 08:17 | ||
| (Unless I'm missing something.) | |||
| flh | actually, the syntax "first_sub(a,b)" does not have the same semantics in my two statements | ||
| treed | I see. | 08:18 | |
| so the first one wasn't PIR? | |||
| dukeleto | msg Whiteknight the RTEMS devs are going to send me a makefile that compiles and then we have to make our configure system generate that. darbelo is on board to hack on it as well | ||
| purl | Message for whiteknight stored. | ||
| flh | the first one isn't PIR :) It's my-own-invoke | ||
| treed | Aha. | 08:19 | |
| treed really has to go to bed. | |||
| flh | the thing is: I want this to be regular PIR, but with a custom Sub PMC which redefines the invoke method to behave like the statement on the right | ||
| desertm4x_ | dukeleto: What's RTEMS, btw? | 08:20 | |
| moritz | RTEMS? | 08:21 | |
| purl | RTEMS is a real time OS | ||
| desertm4x_ | oh, thanks purl, moritz. :-) | ||
| moritz | (I don't know more than that either :) | ||
| JimmyZ | purl: no, RTEMS is the Real-Time Operating System for Multiprocessor Systems, see www.rtems.com/ for more. | 08:24 | |
| purl | okay, JimmyZ. | ||
| JimmyZ | RTEMS? | ||
| purl | RTEMS is the Real-Time Operating System for Multiprocessor Systems, see www.rtems.com/ for more. | ||
|
08:25
KatrinaTheLamia joined
|
|||
| Austin | flh: If you have a custom sub pmc, what are you expecting to put in it? | 08:28 | |
| flh | it extends the core Sub, and only redefines invoke | ||
| Austin | Sure, but Subs are instantiated objects. So whose code is going to be compiled down to this object type? | 08:29 | |
| flh | maybe the answer is: they will map Sub in my HLL | ||
| dukeleto | desertm4x_: a real-time embedded OS | 08:30 | |
| desertm4x_: i talked a bunch with their core devs, and they are very interested in getting parrot working on it | |||
| which i think is pretty awesome | |||
| i also got lots of interesting security ideas from the Tor folks | 08:31 | ||
| flh | Austin: so every sub created by my HLL should use this custom sub pmc | ||
| Austin | I genuinely don't know if that will work or not. If you compile 7 .sub 'foo' ; .return (1) ; .end from PIR, and load it in an HLL that remaps Sub, I suspect that the loader is not going to honor the HLL map, unless you get the PBC to reference the sub type somehow. | ||
| desertm4x_ | dukeleto: That sounds good, thanks for the answer. | ||
| Austin | But a better question is, what on earth for? | 08:32 | |
| flh | it's actually part of handling natively curried subs | 08:33 | |
| Austin | Okay. | ||
| Can you give me a simple example? | 08:34 | ||
| flh | take: .sub 'identity' ; .param pmc x ; .return (x) ; .end | ||
|
08:34
gaz joined
|
|||
| Austin takes 'identity'. | 08:35 | ||
| flh | so "identity(identity)" is again the identity function: I want in this case "identity(identity, 42)" to return 42 | ||
| Austin | But that's not identity, it's apply. | 08:36 | |
| flh | in some sense your right | ||
| I want my sub pmc to realise that "identity" only takes one argument | 08:37 | ||
| Austin | And pre-execute the inner identity? | 08:38 | |
| flh | so it leaves the "42" somewhere, then calls "identity(identity)", gets the result of this application and feeds the "42" to it | ||
| Austin | Ah. | ||
| flh | that's it | ||
| Austin | You want it to be 7 identity(identity)(42) , instead of 7 identity( identity(42) ), right? | 08:39 | |
| flh | yes, left one is what I want | ||
| Austin | Would that be recursive? Should 7 identity(identity, identity, identity, 42) also work? | 08:40 | |
| flh | it's actually lambda-calculus: (((id id) id) id) 42 | 08:41 | |
| so yes, I expect it to work :) | |||
| Austin | I don't think you need a new Sub pmc. | 08:42 | |
| flh | I know Parrot was not specifically designed for such questions, take it as a challenge | ||
| Austin | :) | ||
| flh | if you have a better suggestion, I would be really happy to hear it | 08:43 | |
| but I definitely want the syntax "identity(identity, identity, identity, 42)" to work in PIR | 08:44 | ||
| Austin | In pir? | ||
| Or in your hll? | |||
| dalek | trixy: 12424a0 | dukeleto++ | ROADMAP.pod: Fix a pod warning in ROADMAP.pod |
||
| trixy: d303187 | dukeleto++ | README.pod: Fix warning in README.pod |
|||
| flh | Austin, in PIR | 08:45 | |
| dukeleto | i recently learned that ohloh.net makes money by selling info to big corporations about development activity in languages/countries/app stacks/etc. Good to keep in mind. | 08:46 | |
| Austin | The only way that can work in PIR would be if identity was a register. | ||
| moritz | urgh. | ||
| dukeleto: any link which describes that? | |||
| I mean it doesn't disturb me as long they don't sell infos about individual developers, for example | 08:47 | ||
| dukeleto | moritz: nope, I just talked to one of their devs | ||
| moritz: i do not know the level of detail involved | |||
| Austin | flh: PIR does not support lexicals or package scope references that don't go through a lookup opcode. | 08:48 | |
| 7 $P0 = get_global 'identity' ; $P0($P0, $P0, $P0, 42) | |||
| flh | this one is certainly ok for me | ||
| Austin | ? | 08:49 | |
| moritz | flh: is your goal to implement some functional language? | ||
|
08:49
eternaleye_ joined
|
|||
| flh | moritz, yes it is | 08:50 | |
| moritz | flh: would it make sense to do the partial application thing by static analysis, and emit more idiomatic PIR code instead? | ||
| (don't know if "idiomatic" is the right word here...) | 08:51 | ||
|
08:51
bacek joined
|
|||
| bacek | o hai | 08:51 | |
| flh | I'm not sure there exists an easy way to figure out how to write the application | ||
| Austin | What happens if the arity is > 1? | ||
| flh | moritz, for sure, I know the type of my functions, but I cannot easily distinguish between (a -> a) -> (a -> a) (which is identity(identity) in my previous example and (a -> a) -> a -> a (the sub which takes two arguments and returns the second one) | 08:53 | |
| moritz | and can you distinguish between the two non-easily? :-) | 08:54 | |
| flh | I'm running into trouble certainly because I want my subs to look uncurried if someone wants to see them this way | ||
| Austin | I think this may be a non-issue. You just define an arglist coercion rule and include that in all your generated subs. | 08:55 | |
| flh | moritz, I think I can only know at runtime, when the sub is actually invoked (imagine: read a boolean, define $P0 as identity(identity) when it is true, and the second projection when the boolean is false ; then call $P0: depending on the value of the boolean, we have to choose between two different ways to call $P0) | 08:58 | |
| Austin | 7 .sub 'foo' ; .param pmc a ; .param pmc b ; .param pmc more :slurpy ; $I0 = elements more ; unless $I0 goto do_work ; ... coerce args ... ; do_work : ... .end | ||
| Is there a common or standard args coercion rule? | 09:00 | ||
| If I define add(a, b) and then call it as add(a, b, c), what do I get? | |||
| flh | if "add(a,b)" returns a function, then "add(a,b,c)" is this function applied to c | 09:01 | |
| if "add(a,b)" doesn't return a function, then "add(a,b,c)" gives you an error | |||
| Austin | So the rule in that case would be "die 'too many args'"? | 09:02 | |
| flh | yes | ||
| Austin | (Which is what Parrot does by default, btw.) | 09:03 | |
| flh | but my DynPMC would work if it were allowed to call Parrot_set_new_context... | 09:05 | |
| Austin | I can't help you there. Sorry. | ||
| flh | is there a reason not to PARROT_EXPORT it? | ||
| moritz | ask allison :-) | ||
|
09:05
mikehh joined
|
|||
| chromatic | I'm still not sure that's an approach we want to encourage, manually setting control flow like that. | 09:06 | |
| flh | continuations already provide the ability to do strange things with control flow | 09:08 | |
| chromatic | Sure, but you're talking about manipulating them at below the level of continuations. | 09:09 | |
| flh | but it's just a very little bit below this level :) | 09:10 | |
| chromatic | Maybe, but I'd grab the current continuation at the first invoke, inspect the return value of the sub, then invoke it if it's invokable with the stored continuation. | 09:11 | |
| flh | I think that's what I'm trying to do | 09:13 | |
| the tricky part is "inspect the return value of the sub": I think I need to set up a specific context to grab this return value | |||
| chromatic | Not if you're dispatching from C. | 09:14 | |
| flh | ok, agree on that | ||
| there was a problem with exceptions thrown from inferior runloops, has it been resolved? | 09:15 | ||
| bacek | chromatic: ping | 09:22 | |
| chromatic | pong | 09:23 | |
|
09:24
xenoterracide joined
|
|||
| bacek | what about merging CallSig and Context? | 09:24 | |
| chromatic | Seems like the next logical step. | 09:25 | |
| We should list on the wiki the behavior they both have to support (especially in terms of attributes and the vtable interface). | |||
| bacek | there is not intersection between Context and CallSig currently | 09:26 | |
| (in VTABLEs) | |||
| Apart from set|get_attr, which is resolvable | |||
| chromatic | There's not much in Context at all, is there? | 09:27 | |
| bacek | chromatic: almost nothing | ||
| purl | it has been said that almost nothing is up to date | ||
| bacek | I think we merge Context into CallSig. | 09:28 | |
| Just add pointer for Parrot_Context | |||
| chromatic | Which is easier, moving the fields of the context stored in Context's PMC_data() into Context attributes and getting rid of the old struct, or merging in CallSig? | ||
| bacek | Parrot_Context has variable size... | ||
| chromatic | Also, what are the implications for the :call_sig behavior and custom CallSigs in Rakudo? | 09:29 | |
| bacek | :call_sig will just return "The Context" | ||
| chromatic | I'm sure we could figure out variable sizes somehow. | ||
| bacek | which is union of Context and CallSig | ||
| chromatic: we can. But we can't use ATTRs for it | 09:30 | ||
| chromatic | I don't see why not. | ||
| It's only the register storage that's variable sized. | 09:31 | ||
| bacek | chromatic: then we have to use second call to alloc registers. | 09:32 | |
| chromatic | True. | 09:33 | |
| bacek | it was main reason why I didn't migrate Context to ATTRs... | ||
| chromatic | We have to do three allocs for a Context/CallSig PMC anyway: the header, the attributes, and the register storage. | 09:35 | |
| bacek | Right. I can trade allocation of whole Parrot_Context for allocation of registers only. | 09:36 | |
| let's create branch! | |||
| chromatic | Bring it on. | 09:37 | |
| purl | That's allright, that's OK, you're gonna pump our gas some day | ||
| bacek | "context_unify"? | ||
| chromatic | Sure. | ||
| bacek | oh shi... git decided to fetch old history... It will take some time... | 09:40 | |
| dalek | rrot: r42098 | bacek++ | branches/context_unify: Branch for merging CallSignature and Context |
09:41 | |
| bacek | chromatic: CallSignature, Context of CallContext? | 09:42 | |
| s/of/or/ | |||
| or even ParrotContext | 09:43 | ||
| moritz | CallFoo :-) | ||
| bacek | CallFu :) | ||
| chromatic | ParrotCall? | ||
| bacek | it's not "Call" only. | 09:44 | |
| "Frame"? (ignoring fact of CPS) | |||
| chromatic | Returns are calls in CPS. | 09:45 | |
| Maybe the simplest is CallContext. | |||
| bacek | deal | ||
| btw, if I put fields from CallSig into Parrot_Context then we can have 2 allocations only | 09:46 | ||
| chromatic | Exactly. | 09:47 | |
| We might have to profile and move things around depending on processor cache access though. | |||
| bacek | Sure | 09:49 | |
|
09:51
masak joined
|
|||
| jonathan ain't sure how this context/call-sig merge is going to work out. | 09:57 | ||
| I'll handle getting Rakudo going on trunk again, but I'd appreciate patches as needed if this second branch works out/lands. | 09:58 | ||
| dukeleto | msg Infinoid dalek still does not know about pl/parrot, even tho' it is on the wiki languages page | 10:02 | |
| purl | Message for infinoid stored. | ||
|
10:04
abqar joined
|
|||
| chromatic | jonathan, it should be reasonably transparent. | 10:04 | |
| jonathan | chromatic: The main thing I see is that I'd rely on being able to use the CallSignature multiple times. | 10:06 | |
| And if the context and call signature are merged, that may get more interesting. | |||
| May have to start cloning it for example. | |||
| dalek | rrot: r42099 | bacek++ | branches/context_unify/src (1 files): Rename Context into CallContext. |
10:07 | |
| rrot: r42100 | bacek++ | branches/context_unify (3 files): Copy ATTRs from CallSignature into Parrot_Context structure. |
|||
| rrot: r42101 | bacek++ | branches/context_unify/src/pmc/callcontext.pmc: Move functions from CallSignature into CallContext |
|||
| rrot: r42102 | bacek++ | branches/context_unify/src/pmc/callcontext.pmc: Move banch of VTABLE and functions from CallSignature into CallContext. |
10:24 | ||
| rrot: r42103 | bacek++ | branches/context_unify/src/pmc/callsignature.pmc: Remove CallSignature PMC. |
10:37 | ||
| rrot: r42104 | bacek++ | branches/context_unify (3 files): Update various build_sig_object functions to use CallContext |
|||
|
10:37
plobsing joined
|
|||
| bacek | oookey. "It compiles" :) | 10:39 | |
| hmm... Not really. | 10:40 | ||
|
10:42
zak_ joined
11:04
szabgab joined
|
|||
| dalek | rrot: r42105 | bacek++ | branches/context_unify/config/gen/makefiles/root.in: Update makefile dependencies. |
11:06 | |
| rrot: r42106 | bacek++ | branches/context_unify (2 files): Added accessors for new Parrot_Context fields. |
11:09 | ||
| rrot: r42107 | bacek++ | branches/context_unify/src/call/context.c: Initialise new fields in Parrot_alloc_context. |
|||
| rrot: r42108 | bacek++ | branches/context_unify (2 files): Remove duplicated field "current_results" vs "results" |
|||
| moritz | msg chromatic rt.cpan.org/Public/Bug/Display.html?id=50794 if you haven't seen it already | 11:25 | |
| purl | Message for chromatic stored. | 11:26 | |
|
11:32
bacek joined
11:36
mikehh joined
11:43
patspam joined
|
|||
| dalek | rrot: r42109 | bacek++ | branches/context_unify/src/call/args.c: Use CallContext accessors instead of poking into dead CallSignature attributes |
12:05 | |
|
12:07
bluescreen joined
|
|||
| dalek | rrot: r42110 | bacek++ | branches/context_unify (7 files): Remove current_sig from Parrot_Context. Start switching to CallContext from CallSignature |
12:08 | |
| Coke yawns. | 12:09 | ||
|
12:20
whiteknight joined
|
|||
| whiteknight | good morrow #parrot | 12:26 | |
| Coke | guten morgen | 12:31 | |
| whiteknight | hello Coke | 12:41 | |
| how is partcl doing today? | 12:59 | ||
| Coke | segfaulting. | 13:10 | |
| purl | segfaulting is probably hardly a good way to deal with bad data | ||
| Coke | (trac.parrot.org/parrot/ticket/1131) | ||
|
13:23
iblechbot joined
13:28
bluescreen joined
|
|||
| whiteknight | well, segfaulting is lousy | 13:30 | |
| there are two assign_p_p calls in that code snippet. Which one segfaults? | 13:31 | ||
|
13:34
mikehh joined
|
|||
| Coke | I think it's the second one. | 13:39 | |
| whiteknight | okay, that's interesting | 13:57 | |
|
14:00
Andy joined
|
|||
| pmichaud_ | hmmmm.... somewhere either I (or parrot) has introduced a bug somewhere that causes 'nqp-rx' to randomly fail. | 14:12 | |
| jonathan | :-( | 14:13 | |
| pmichaud_: Random in what sense? Fail in what sense? | |||
| pmichaud_ | random in the sense that sequential executions of the same script give different results | 14:14 | |
| jonathan | Oh, ouch. | ||
| -G ? | |||
| purl | i guess -G is computed goto | ||
| jonathan | purl: I GUESS IT'S NOT. | ||
| purl | jonathan: excuse me? | ||
| jonathan | purl: forget -G | ||
| purl | jonathan: I forgot -g | ||
| pmichaud_ | I'll try that, but I think last time I tried it made no difference | ||
| moritz | pmichaud_: did that happen after you bump PARROT_REVISION the other day? | 14:15 | |
| *bumped | |||
| pmichaud_ | it's only been happening over the past few days, yes | ||
| but I also tried putting PARROT_REVISION back to 1.7.0 and I still get the random fails | |||
| Coke | jonathan: --gc-debug might be more useful. (fail early, fail often.) | ||
| jonathan | Aye, that too. | 14:16 | |
| pmichaud_ | somehow I don't think this is a gc bug. | ||
| (just a hunch) | |||
| jonathan | pmichaud_: That sounds odd. You sure it's not anything to do with timestamps stuff during the compile? | ||
| I know you fixed that kinda stuff lately though... | |||
| So I guess not. | |||
| pmichaud_ | timestamps in the compile has been my suspicion too, but the weirdness doesn't seem to follow (more) | 14:17 | |
| for example, I'll do "make nqp-test" and of the 9 test files, only 09-var.t will fail. | |||
| Then I'll run the same command again immediately, and this time I get fails in all of 05-, 06-, 07-, and 08-, but 09 will pass. | |||
| not only that, but the 05- through 08- fails are "immediate" | 14:18 | ||
| Coke | pmichaud_: are you running the tests in || ? | ||
| pmichaud_ | no, sequential. | ||
| Coke | k. | ||
| pmichaud_ | pmichaud@orange:~/nqp-rx$ ./par -G t/p6regex/01-regex.t | grep '^ok' | wc -l | ||
| 603 | |||
| pmichaud@orange:~/nqp-rx$ ./par -G t/p6regex/01-regex.t | grep '^ok' | wc -l | |||
| 591 | |||
| jonathan | Wow, it need not even be under the harness too. :-S | 14:19 | |
| pmichaud_ | pmichaud@orange:~/nqp-rx$ ./par -G t/p6regex/01-regex.t | grep '^ok' | wc -l | ||
| 545 | |||
| pmichaud@orange:~/nqp-rx$ ./par -G t/p6regex/01-regex.t | grep '^ok' | wc -l | 14:20 | ||
| 603 | |||
| whiteknight | pmichaud_: how are they failing? unhandled exception? segfault? | ||
| pmichaud_ | every once in a while, when run from the harness, it'll fail immediately with "no tests run". | 14:21 | |
| But I can't see what the actual output was. If I run the harness with -v, it never fails immediately. | |||
| (at least, it's never done so yet) | |||
| at the moment they fail by simply returning the wrong output | |||
| nopaste.snit.ch/18451 # sequential make test runs in nqp-rx | 14:24 | ||
| Coke | what is "./par" ? | 14:25 | |
| pmichaud_ | it's a symlink to the parrot binary executable | ||
| I can't call it "parrot" because there's a parrot subdir | |||
| Coke | is it linking to the same parrot in the path in your nopaste? | 14:26 | |
| pmichaud_ | should be | ||
| it's the parrot in parrot_install/bin/parrot | |||
| (where parrot_install is the locally-created version of parrot for nqp) | |||
| (created via --gen-parrot) | |||
| and what's really kinda weird is the way in which the tests fails | 14:28 | ||
| for example, looking at the last "make test", the first set of failures are tests 17-26 | |||
| i.e., the failures often come in blocks | 14:29 | ||
|
14:29
mikehh joined
|
|||
| Coke | are /any/ failures expected at this point? | 14:29 | |
| pmichaud_ | yes | 14:30 | |
| oh, geezum | |||
| Coke | without looking at tests 17-26, it seems more likely that they are testing something similar. | ||
| pmichaud_ | nopaste coming | ||
| Coke | (is it me, or is feather getting sloooower?) | 14:31 | |
| pmichaud_ | nopaste.snit.ch/18452 # sequential "make nqp-test" runs in nqp-rx | ||
| jonathan | Wow, in the last run it fails 'em all?! | 14:32 | |
| pmichaud_ | yes | ||
| jonathan | Super odd. | ||
| pmichaud_ | not only that, but in this case each test runs in a separate process | ||
| as opposed to the earlier "make test" case where all of the tests run in a single process | 14:33 | ||
| nopaste.snit.ch/18453 # more nqp-rx oddness | 14:34 | ||
| it's gotta be an uninitialized value/register that is coming back random, something based on time, or some other random-generated sort of thing :-| | 14:35 | ||
| jonathan | I suppose you already tried realclean, and all that stuff? Not that I can see why it'd make a big difference... | ||
| pmichaud_ | yes, I've tried realclean, and multiple recent versions of Parrot | ||
| I suppose I could try a much older version of Parrot | |||
| jonathan | nod | ||
| Hmm | |||
| pmichaud_ | I suspect the problem is in nqp-rx and not parrot itself, but I'm kinda lost as to where to begin tracking it down | 14:36 | |
| moritz | bisect? | ||
| pmichaud_ | it's hard to know when I have a "good" case, though | 14:37 | |
| jonathan | Aye. | ||
| Hmm. | |||
| pmichaud_ | let's see if I can get a failure in a simple case | ||
| whiteknight | the failures look like they are all happening in comp_unit | 14:42 | |
| dump the PIR code of that rule and let's pick through it | 14:43 | ||
| pmichaud_ | comp_unit is just the place where the failure gets noticed | ||
| it's not the source of the error | |||
| i.e., a match failed somewhere that should've passed | |||
| jonathan | whiteknight: Parrot trunk currently fails to build for me on MS VC++ - known? | ||
|
14:44
payload joined
|
|||
| jonathan | nci_test.obj : error LNK2001: unresolved external symbol _PMCNULL | 14:44 | |
|
14:44
theory joined
|
|||
| whiteknight | jonathan: not that I am aware of | 14:44 | |
| pmichaud_ | (I suggest working on jonathan's bug more than mine at the moment -- it's more critical) | ||
| jonathan | whiteknight: Wait, didn't you fix this issue once? | 14:45 | |
| whiteknight: The nci_test.dll failing to build? | |||
| whiteknight | jonathan: I did fix it at one point. the pcc_reapply merger may have undone it | 14:46 | |
| jonathan | Ah. | ||
| whiteknight | SVN branch merges: "We suck so bad, you're going to wish we didn't suck so bad" | ||
| jonathan | Can you remember what you did? It looks like libparrot.lib is actually in the link line, which I thought was the issue. | ||
|
14:48
payload joined
|
|||
| whiteknight | Added a reference to libparrot to the link line for libnci_test.dll | 14:51 | |
| i'm sure if you check the SVN log for root.in, you'll see the change in there somewhere | 14:52 | ||
| jonathan | whiteknight: Hmm. But that appears to be in the link line. :-S | 14:53 | |
| gah, the log only shows it changing in the merge... | 14:55 | ||
| Coke | pmichaud_: I can duplicate the non-repeatable failures on feather with npq-rx latest and parrot-latest. | 14:57 | |
| pmichaud_ | nopaste.snit.ch/18454 # narrowing it down a bit! | ||
| in the nopaste, 01-regex.t has been modified to run exactly one test | 14:58 | ||
| Coke | pmichaud_: is one of the things in your toolchain generating ids based on timestamp? | 14:59 | |
| pmichaud_ | yes | ||
| not solely on timestamp, but timestamp is a component | |||
| Coke | so you're not really running the same code each time. =-) | ||
| pmichaud_ | right, but the timestamp is simply used as a string | ||
| oh, this is interesting. | 15:00 | ||
|
15:00
eternaleye joined
|
|||
| pmichaud_ | nopaste.snit.ch/18455 # running 01-regex.t with the -t flag to parrot | 15:01 | |
| Coke | (also, -D60 is helpful to dig through the pir code that is built at runtime.) | ||
| pmichaud_ | I *always* get the segfault. | ||
| at the same place. | |||
| Coke | yay. | ||
| what's after that getinterp? | |||
| an hll map, guessing based on the code before it. | 15:02 | ||
| pmichaud_ | I'd have to go find the getinterp, it's in one of the parrot libs | ||
|
15:03
mikehh joined
|
|||
| pmichaud_ | $P0 = getinterp | 15:03 | |
| $P0 = $P0['namespace';1] | |||
| so it's asking for the caller's namespace | |||
| guess it's time to grab gdb on this one :) | 15:06 | ||
| bah | |||
| the segfault is in the tracer | |||
| that doesn't tell me anything other than -t has a bug in it :-( | |||
|
15:06
PacoLinux joined
|
|||
| whiteknight | urg | 15:08 | |
| pmichaud_ | nopaste.snit.ch/18456 # execution and backtrace | ||
| jonathan | whiteknight: Heh. I have a patch that, uh, "works". | 15:09 | |
| whiteknight | jonathan: stop building libnci_test? | ||
| jonathan | whiteknight: Thing is, nci_test.c really is an excention, so it should define PARROT_IN_EXTENSION. | ||
| *extension | 15:10 | ||
| pmichaud_ | since I don't want to spend my morning debugging the -t option, I think I'll run gdb w/o the -t | ||
| whiteknight | pmichaud_: good idea | ||
| purl | whiteknight: Good Idea: Finding Easter eggs on Easter morning. Bad Idea: Finding Easter eggs on Christmas morning. | ||
| jonathan | whiteknight: However, it doesn't, meaning that we don't end up importing PMCNULL, we try and export it instead. Then we fail. | ||
| whiteknight: However, we then get the "fun" that nci_test.c wants to mark stuff as exported. | |||
| whiteknight | jonathan: that actually makes goo sense | ||
| jonathan | And we only seem to define PARROT_EXPORT, which depends on PARROT_IN_EXTENSION | 15:11 | |
| pmichaud_ | before I do that, let me see if I can file a ticket for the -t segfault | ||
| jonathan | So I can get this to work by ripping all uses of PARROT_EXPORT out of nci_test.c and defining PARROT_IN_EXTENSION at the top. | ||
| I wonder if I now fail tests though. | 15:12 | ||
|
15:12
Psyche^ joined
|
|||
| whiteknight | jonathan: parrot builds for me on win32 no problem | 15:13 | |
| jonathan | whiteknight: Compiler? | ||
| purl | Compiler is a controversial feature of Perl5.005 which will probably be used for evil ends or a way for the unenlightened to make themselves think their programs will run faster. | ||
| whiteknight | jonathan: strawberry | ||
| purl | somebody said strawberry was a Perl for Windows that works just like Perl everywhere else. See win32.perl.org/wiki/index.php?title...berry_Perl or well where is RAWBERRY | ||
| particle | i haven't been able to build parrot on windows for two weeks | ||
| jonathan | Oh | ||
| That's MinGW | |||
| Not MS VC++ | |||
| whiteknight | oh, you're on VC++? | 15:14 | |
| jonathan | Yes. | ||
| whiteknight | urg | ||
| jonathan | I'm guessing particle is too. | ||
| particle | yep, of course | ||
| whiteknight | so then 1.7.0 probably went out the door not building on VC++ | ||
| particle | yep | ||
| jonathan | Well, heh, I fail all of the nci tests. | ||
| But that beats not building | |||
| whiteknight | all my testing was strawberry | ||
| jonathan | So in goes the patch. | ||
| whiteknight | jonathan++ | ||
| particle | 1.7 went out without building on msvc | ||
| jonathan | And we can iterate on it. | ||
| Coke | particle: what happened to our windows remote access? | ||
| whiteknight | We need to kill those tests anyway, rework them into something better | ||
| Coke | (is it just waiting for someone to use it?) | 15:15 | |
| whiteknight | we have remote access to a windows machine somewhere? | ||
| particle | coke: gotta ask alias about that, i guess. iunno if that ever happened for cpan users, either. | ||
| jonathan | whiteknight: I think we also need to define some separate symbol for if you want to just mark something as export that isn't tangle up in whether we're inside Parrot or in an extension. | ||
| particle | alas, i haven't been in touch with microsoft for quite some time now | ||
| pmichaud_ | trac.parrot.org/parrot/ticket/1149 | 15:16 | |
| dalek | TT #1149 created by pmichaud++: [bug] Segfault in -t trace output | 15:17 | |
| pmichaud_ | (what dalek++ said) | ||
| jonathan | oh wait, I can use PARROT_DYNEXT_EXPORT | 15:18 | |
| Hopefully this fixes the build *and* passes the tests... | 15:19 | ||
|
15:22
eternaleye joined
|
|||
| pmichaud_ | nopaste.snit.ch/18457 # segfault and backtrace when running minimal 01-regex.t | 15:22 | |
| it appears the problem always occurs when attempting to take a substr | |||
| sometimes it gives "Cannot substr on a null string" | 15:23 | ||
| sometimes it works | |||
| sometimes it segfaults | |||
| unfortunately the backtrace doesn't give me a lot of clues about _which_ substr operation resulted in the segfault. | |||
|
15:24
mikehh joined
|
|||
| jonathan | pmichaud_: cur_opcode=0xb6d09ea4 will, er, help if you can find a pointer to the start of the current bytecode data segment... | 15:25 | |
| dalek | rrot: r42111 | jonathan++ | trunk/src/nci_test.c: Corret usage of symbol import/export in nci_test.c. Fixes the build on MS VC++. |
||
| jonathan | ...and then somehow match that up with the PIR (maybe pbcdump) | ||
| But it's a long shot. :-( | |||
| pmichaud_ | yes, not having -t1 here really hurts. | ||
| jonathan | got a bt for -t1 segfault pasted? | 15:27 | |
| pmichaud_ | I can get one easily. | ||
| I just added a backtrace to the ticket | 15:28 | ||
| trac.parrot.org/parrot/ticket/1149 | |||
| although, given that both segfaults are related to producing strings, I wonder if they are, in fact, related :) | 15:29 | ||
| oh, hmm, I bet I can follow the interp structure to figure out what sub I'm in. | 15:30 | ||
| Coke | (nci_test) are we still linking that into the parrot executable? | ||
| jonathan | Coke: I didn't know we ever were. | 15:31 | |
| Coke: We aren't now though, for sure. | |||
| We link against libparrot | |||
| Coke | er. | ||
| ok. yah, should we be doing that, even? | |||
| that is, I'd expect nci_test to depend on libparrot, but not vice versa. | 15:32 | ||
| jonathan | That's how it is. | 15:33 | |
| pmichaud_ | nopaste.snit.ch/18458 # can someone explain frame #0 in this backtrace ? | 15:34 | |
|
15:40
uniejo joined
|
|||
| pmichaud_ | in gdb, how can I display the current_sub entry of a context PMC? | 15:41 | |
| (I used to know how to do it when contexts weren't PMCs) | |||
| nm, found it. | 15:42 | ||
|
15:42
ruoso joined,
Essobi joined
|
|||
| Essobi | Howdy. | 15:43 | |
|
15:43
payload joined
|
|||
| Essobi | I can't find any documents relevant to the state of threading in the PVM... Am I overlooking something? | 15:45 | |
| pmichaud_ | Essobi: I'm not aware of any current documents on threading. | 15:46 | |
| moritz | trac.parrot.org/parrot/ticket/757 describe some not-so-nice aspects of the current state | 15:47 | |
|
15:50
masak joined
15:51
einstein joined
|
|||
| Essobi | www.parrot.org/files/Fagerholm-Parrot.pdf mentions it | 15:58 | |
| moritz | that's like, 4 years old | 15:59 | |
| is there any subsystem that wasn't revamped in the last 4 years? | |||
|
16:01
masak joined
|
|||
| Essobi | moritz: Fair enough. So.. are there no threading ops in PIR? | 16:02 | |
| moritz | Essobi: there is some threading support, but not yet good enough for most HLLs | ||
| pmichaud_ | There may be threading ops, but I don't know what they are. | ||
| Essobi | Drat. | 16:03 | |
| moritz | pdd25_concurrency.pod should document them | ||
| but I don't know how up-to-date it is | |||
|
16:07
solarion joined
|
|||
| solarion just got the Parrot Developer's Guide: PIR. :) | 16:07 | ||
| Essobi | - Parrot supports multiple concurrency models, including POSIX threads, event-based programming, and asynchronous I/O. <--- YAAAAAAY | 16:08 | |
| pmichaud_ | it might be more accurate to say that Parrot's *design* supports .... | 16:09 | |
| moritz wonders if that is a flat lie | |||
|
16:09
davidfetter joined
|
|||
| pmichaud_ | I'm not sure if the implementation supports all of that yet :-| | 16:09 | |
| Essobi | docs.parrot.org/parrot/devel/html/d...y.pod.html | ||
| pmichaud_ | "pdd" == "Parrot Design Document", fwiw | 16:10 | |
| Essobi | right right.. I get it. | 16:11 | |
| pmichaud_ | okay, I *think* I've narrowed down the nqp-rx problem I'm seeing, but could use some feedback | 16:12 | |
| I think the problem is that I have a hash that has entries added to it while it's being iterated. Is that a no-no in Parrot? | |||
| (I didn't realize the hash was being modified during iteration until just now) | 16:13 | ||
| moritz | it would certainly explain a lot | ||
| pmichaud_ | anyway, that seems to confuse the heck out of the Iterator, and it ultimately returns me a null string | ||
| Essobi | .... there is a pmc for threads... | ||
| jonathan | The Rakudo branch pccupdate on github is the initial bits on getting us using the new Parrot Calling Conventions. | ||
| pmichaud_ | (not an empty string, a true string NULL pointer) | 16:14 | |
| jonathan | We can now compile the pmcs and ops again. | ||
| However, segfault soon arrives later on. | |||
| pmichaud_ | jonathan++ !!! | ||
| or it otherwise returns a garbage pointer | |||
| jonathan | pmichaud_: I don't know either way, but it sounds like a good suspect. | 16:15 | |
| Essobi | and the concurrency scheduler.. | ||
| pmichaud_ | is there something that randomizes hashes somehow now? | ||
| I've noticed that identical runs often produce different hash results | |||
| cotto_w0rk | pmichaud_, yes | 16:16 | |
| pmichaud_ | that would explain why I'm getting random results, then. | ||
| jonathan | Aha. | ||
| Nice explanation. | |||
| jonathan needs to go lie down for a bit - feeling ill-ish. :-/ | 16:17 | ||
| moritz hopes jonathan recovers quickly | |||
| whiteknight | Essobi: we have threads, and they do work, but they are not good | 16:22 | |
| we have event-based stuff with tasks and exceptions | |||
| we don't have asynchronous IO | 16:23 | ||
| Essobi: see the examples in t/pmc/threads.t, t/pmc/task.t, t/pmc/timer.t and t/pmc/scheduler.t | |||
| dalek | rrot: r42112 | NotFound++ | trunk/src/runcore/trace.c: [core] fix trace keys, TT #1149 |
16:24 | |
| whiteknight | pmichaud_: bacek did a refactor a while back that randomized hash keys | 16:25 | |
| and as far as I am aware, modifying a hash while iterating it is a big no-no | |||
| pmichaud_ | yes, but is "segfault" a correct response to that? ;-) | 16:26 | |
| dalek | TT #1149 closed by NotFound++: [bug] Segfault in -t trace output | ||
| moritz | pmichaud_: probably not :-) | ||
| cotto_w0rk | pmichaud_, if you want it to be deterministic, I think src/string/api.c +274 is the right code to change | 16:28 | |
| pmichaud_ | well, it's good to know that instead of blaming the garbage collector for our random segfaults, we can now start to blame hashes for them as well. 1/2 :-) | ||
|
16:29
uniejo joined
|
|||
| cotto_work | maybe we should make it deterministic on non-optimized builds under the assumption that optimized is what end-users will care about. | 16:29 | |
| whiteknight | modifying a hash that is under iteration should probably throw an exception instead | ||
| pmichaud_ | how would a hash know it's under iteration, though? | ||
| whiteknight | i didn't say it would be easy to do it :) | 16:30 | |
| pmichaud_ | the onus is on the iterator, not the hash | ||
| just because an iterator exists for a hash doesn't mean it's ever going to be iterated again. we might've broken out of a loop. | |||
| an iterator would need to detect that a hash has been modified, and then throw an exception. | |||
| whiteknight | that works too | 16:31 | |
| NotFound | Iterator existence may mean just the GC is being lazy ;) | ||
| dalek | rrot: r42113 | NotFound++ | trunk/src/runcore/trace.c: [cage] drop redundant cast from r42112 |
||
| cotto_work | xkcd is special today | 16:34 | |
| japhb | cotto_work, I don't think anything should vary semantically between opt and non-opt builds. | 16:35 | |
| NotFound | Great! :) | ||
| cotto_work | japhb, thinking about it more, I agree. | 16:36 | |
| it'd be nice to have an easy way to make hashing repeatable, though | 16:37 | ||
| japhb | Sounds like a Configure option to me | 16:38 | |
| cotto_work | I was thinking runtime, but those are kinda crufty atm. | 16:39 | |
| japhb | I would have said 'env var' but I know random hashing is a security thing, so I don't want to make it any easier for the attacker | ||
| cotto_work | Yeah. It's "randomized" in the first place to avoid vulnerabilities from predictable hashing. | 16:42 | |
| mikehh | All tests PASS (pre/post-config, smoke (#29400), fulltest) at r42111 - Ubuntu 9.10 RC amd64 | ||
| pmichaud_ | well, random hashes also makes it less likely for someone to write code that (inadvertently) depends on the ordering of the hash | ||
| cotto_work | I remember finding that out when I added the randomization. ;) | 16:43 | |
| mj41 | MS VC++ fixed in r42111, jonathan++ | 16:47 | |
| pmichaud_ | yay, avoiding the modification-while-iterate seems to have resolved the problem. | 16:48 | |
| thanks to all for suggestions and help | 16:49 | ||
| jonathan | pmichaud++ # debugging skillz | 16:52 | |
| moritz: I think I'm just a tad exhausted, that's all. | |||
| cotto_work | ugh. Flashbacks. www.guidebookgallery.org/screenshots/macos70 | ||
| pmichaud_ | jonathan: how was IPW, btw? | 16:53 | |
|
16:55
hercynium joined
|
|||
| jonathan | pmichaud_: IPW was good. I gave a couple of talks, and demo'd a partial Lolsql -> sql convertor running in Rakudo. :-) | 16:55 | |
| pmichaud_ | niiiiiice | 16:56 | |
| jonathan | I'll pop the code somewhere when I get a chance. | ||
| I didn't get loads of sleep while there and then had to get up at 4:30am to go to the airport yesterday though...so I'm kinda exhausted righ tnow. | |||
| Well, I'm hoping its that, and not that I've caught some bug. | 16:57 | ||
| pmichaud_ | understandable. On Saturday I went to the Texas Regional Python Workshop and gave some presentations there | ||
| jonathan | Ooh, nice. On PCT? | ||
| pmichaud_ | Pynie and Git | ||
| jonathan | Cool. :-) | ||
| pmichaud_ | but they also wanted to hear about Perl culture and how Perl was addressing problems they're experiencing in the Python community | 16:58 | |
| (it's amazing to see the parallels) | |||
| japhb | Do tell! | ||
| jonathan | Oh, interesting. | ||
| NotFound | Look at the parallels in perspective, and they converge ;) | ||
| pmichaud_ | for example, they are also finding themselves hamstrung by an inability to get rid of old modules out of their standard libraries (the ones shipped with python) | 16:59 | |
| purl | okay, pmichaud_. | ||
| whiteknight | if all these languages were running on Parrot, everybody would be having the same problems! | ||
| dalek | kudo: 22ded10 | (Carlin Bingham)++ | src/setting/IO/Socket.pm: Change IO::Socket.recv() to accept a parameter specifying the number of bytes which will be received |
||
| purl | dalek: that doesn't look right | ||
| pmichaud_ | other issues in dealing with module archive infrastructure, and steering committees, and the like | 17:00 | |
| japhb | OOC, do you remember anything about the module archive infrastructure complaints? | 17:01 | |
| pmichaud_ | many of the same issues we hear about cpan :-) | 17:02 | |
| figuring out how to manage module dependencies, especially when modules can be installed in multiple locations on a system | |||
| some people want to have a global "module registry", others are dead-set against any form of registry | 17:03 | ||
| japhb | sigh | ||
| pmichaud_ | there's an existing dependency on a standard setup/install script, which has some problems but is so complex that refactoring it or redesigning it will be a pain | 17:04 | |
| moritz | well, I don't think perl 6 will work without a module registry | ||
| pmichaud_ | moritz: the word is "cache" | ||
| we won't have a registry, we'll have cache indexes | |||
| cotto_work | sneaky | ||
| whiteknight | anything to avoid confusion with the horrible Windows Registry | 17:05 | |
| japhb | heh | ||
| cotto_work | +yes | ||
| pmichaud_ | I've had some discussions with obra++ and a few others on the topic, and I'm fairly convinced that registry is not workable | ||
| moritz | pmichaud_: if that's only a question of terminology, there's nothing wrong with "cache" | ||
| whiteknight still has nightmares of regedt32 | |||
| japhb | OK, so "make sure Plumage is easy to iterate". Check. | ||
| pmichaud_ | moritz: it's not just terminology | ||
| a "registry" is something where each module adds itself as it is installed | 17:06 | ||
| that's not what we want | |||
| a "cache" is something that keeps track of what has been discovered, and adapts itself to whatever is in existence | |||
| put another way, registries tend to think that there's one global, correct view of the system. They're usually wrong. | 17:07 | ||
| caches provide views from a particular location in the system, which could be different | |||
| another way to think of it is that caches act more like lexically-scoped views, while registries tend to be global-scoped views | |||
| moritz | well, if we can come up with good ideas for module name mangling, that might be workable | 17:08 | |
| pmichaud_ | the nice thing about a cache is that the name doesn't become important | ||
| the cache can introspect the module for the metadata, and keep it locally based on whatever name/locator the module has | |||
| in other words, the locator information (file path and/or file name) should not be responsible for holding the metadata. (it can be a key for a metadata index, but it shouldn't be the metadata) | 17:09 | ||
| japhb | Plumage already has the concept that the project name is just a key. | 17:10 | |
| I guess that's one I have right-ish. | 17:11 | ||
| One thing that's increasingly bothering me is what to do about uninstall and upgrade-where-some-files-should-disappear | |||
| pmichaud_ | that was discussed also. I don't think there's a universal answer, I think such decisions have to be managed by site policy | 17:12 | |
| japhb | Yeah. | 17:13 | |
| pmichaud_ | parrot question: If I use the "-L" option to Parrot to add another directory to the library search path, it always adds the directory at the end. This means that a system or current-directory copy of a library will always be used in preference to any that might be found in the library directory. Is this intentional? | 17:14 | |
| (same goes for -I) | |||
| japhb | And as for supporting the Perl 6 "you can have any version of any module under any authority you can name" magic, I'm not sure how to make that work with Parrot. | ||
| pmichaud_ | I suspect Perl 6 will have to layer its own module management on top of Parrot, unless Parrot wants to also handle that case. | 17:15 | |
| japhb | The problem will be modules that need PIR or C level help. | ||
| Parrot will be forced to deal with the versioning ... or alternately we create a massive name-mangling thing on top so that Parrot think's it's just loading really crazy module names. | 17:16 | ||
| Coke | ah, C++ | ||
| japhb | Coke, yeah, and that's part of why it's causing me dispepsia | 17:17 | |
| Mmmm, Pepsi | |||
| Coke | anything with ***** in it can't be good for you. | ||
| japhb | heh | ||
| pmichaud_ | agreed -- that's one of the few commercial beverages I refuse to drink. | ||
| "I'll have a Dr Pepper." "We only have Pepsi." "I'll have water." | 17:18 | ||
| Coke | I appreciate the inadvertent solidarity. | 17:19 | |
| cotto_work | Darn. I seem to have "American Dinosaurs" stuck in my head. | 17:20 | |
| japhb | Apropos of the Coke/Pepsi thing -- I spoke to a soda fountain repair guy once about the whole Pepsi Challenge thing, way back in the day. Turns out there was a reason they served the samples warm -- Pepsi and Coke react differently to temperature; Coke's flavor changes if it is not mixed and served cold. Pepsi is the same, but significantly less so. So the Pepsi Challenge was served warm. | ||
| dalek | p-rx: 09880e0 | pmichaud++ | src/NQP/ (2 files): Refactor scope and variable declarators. |
||
| p-rx: 9f56d59 | pmichaud++ | src/Regex/Cursor-protoregex-peek.pir: [regex]: Building a tokrx hash can result in the protoregex hash we get the complete list of method names from the protoregex hash before we start building tokrx. |
|||
| p-rx: 18624fc | pmichaud++ | build/ (2 files): Bump PARROT_REVISION to get Parrot -t fixes, and fix build sequence |
|||
| pmichaud_ | it's been a real pain lately because Pepsi has made exclusive deals with both of the Dallas-area airports so that only Pepsico beverages are available. | ||
| p-rx: 45d5132 | pmichaud++ | src/stage0/P6 (2 files): Update bootstrap versions of P6Regex/P6Grammar. |
|||
| pmichaud_ | which means that flying outbound from Dallas I'm stuck with water in the airport. :) | 17:21 | |
| cotto_work | And don't even try to take it onto the plane. ;) | ||
| pmichaud_ | well, I meant "after the security gate" | ||
| Coke | particle, allison: Are we signed up to get spammed by efax.com? | ||
| cotto_work | ah | 17:22 | |
| PerlJam | pmichaud_: It was the same thing in Las Vegas pepsi-- | ||
| Coke | karma pepsi? | ||
| purl | pepsi has karma of -4 | ||
| pmichaud_ | pepsi-- | ||
| Coke cannot remember the last time he had a real coke. | |||
| Coke suspects it was kosher-for-passover coke about ... 10 years ago. | |||
| japhb | I'm an equal opportunity caffeinated-carmel-colored-phosphoric-acid-containing-beverage drinker. | 17:23 | |
| particle | coke: pafo has an efax account | ||
| pmichaud_ | is that just another way of saying you have no taste? ;-) ;-) | ||
| japhb | Mmmm, sugared coke. | ||
| Coke | particle: yes. and they keep sending us spam. | ||
| japhb | No, I just think of them as different drinks | 17:24 | |
| Coke | for example, the gotomypc ad that I'm about to discard. | ||
| japhb | I like Coke in a bottle from Mexico. | ||
| jonathan didn't actually like any fizzy drink when he was a kid. | |||
| Coke | (being sent to legal@parrot.org) | ||
| jonathan: HERETIC | |||
| NotFound | pmichaud_: -L option was a quick addition without any design | ||
| Coke | jonathan: *screamy noise from end of invasion of the body snatchers, spock version* | ||
| jonathan | Coke: Nor baked beans, or eggs. | ||
| Coke | jonathan: I'm not sure there's a pattern there. | 17:25 | |
| pmichaud_ | NotFound: hmmm. | ||
| Infinoid | those don't make very good drinks, either | ||
| jonathan | No. | ||
| japhb | You're forgiven for not liking baked beans. Eww. | ||
| NotFound | pmichaud_: I know, I added it ;) | ||
| Coke | bah. we had baked beans for special occasions. | ||
| pmichaud_ | generally -I and -L on other systems (e.g., Perl, C) prepend the directory to the path, not append it | ||
| jonathan | japhb: Yes, while I do now not dislike most fizzy drinks, and I can handle egg in more forms, I never managed to like baked beans. | ||
| cotto_work | NotFound, maybe it should get designed before it's too late to fix it. | ||
| pmichaud_ | NotFound: when did it get added? | ||
|
17:25
mikehh joined
|
|||
| NotFound | pmichaud_: maybe a year ago | 17:26 | |
| whiteknight doesn't drink Coke or pepsi. No soda at all, in fact | |||
| PerlJam | japhb: you're a fan of real-sugar in your Coke? | ||
| pmichaud_ | it's causing major fits for nqp-rx at the moment, because it means that the build process always prefers an older/installed version of a library to the one that I've just built | ||
| PerlJam | whiteknight: good, you're healthier for it | ||
| whiteknight: plus that leaves more for me :) | 17:27 | ||
| japhb | PerlJam, definitely. And I really hate the artificial "diet" sweeteners. I tolerate HFCS. Sorta. | ||
| PerlJam takes a sip of his ice cold Dr Pepper | |||
| NotFound | pmichaud_: I think we can change it without breaking anything, but better ask in #ps | ||
| pmichaud_ | I'll put it in my queue. Or I can send a message to parrot-dev | ||
| PerlJam | japhb: I do not drink diet anything. They taste odd enough that I can't stand it. | ||
| japhb | Ditto | 17:28 | |
| pmichaud_ | I have reactions to Nutrasweet, Splenda, and the others | ||
| so "diet soda" is also out for me :) | |||
| japhb | Sodium Saccharin for the cancer causing win! | ||
| PerlJam | The wind just picked up here quite a bit and now it's raining big fat rain drops | 17:31 | |
| big, fat, high velocity rain drops | |||
| japhb | PerlJam, a la "A Bug's Life"? | 17:33 | |
| PerlJam | worse IMHO, but yeah. | 17:35 | |
|
17:35
payload joined
|
|||
| pmichaud_ | we've gotten a huge amount of rain here this year | 17:36 | |
| Coke | pmichaud_: no Tab, even? =-) | ||
| japhb | We're getting it all as flash floods this fall. | ||
| ... and landslides for the mountain residents. | 17:37 | ||
| pmichaud_ | Yesterday was supposed to be week 9 of our soccer season (out of 10), and thus far we've only been able to play five games (the rest have been rained-out) | ||
| PerlJam | From one of my student workers .. "this wind + heavy rain is nuts. I just double checked the weather to make sure it wasn't a hurricane I didn't know about" | ||
| pmichaud_ | so at the moment the league is trying to figure out how to fit in four make-up games in the next couple of weeks, in addition to the regularly scheduled games. | 17:38 | |
| and, of course, every other soccer league in the area is trying to do the same thing. | |||
| japhb | ouch # to both | 17:39 | |
| cotto_work | whiteknight, nice mixed metaphor in your blog post | 17:40 | |
|
17:41
payload1 joined
|
|||
| cotto_work | also, nice alliteration | 17:41 | |
| whiteknight | cotto_work: Thanks! I'm sure I put some conscious effort into either of those things :) | 17:42 | |
|
17:43
darbelo joined
18:03
payload joined
|
|||
| whiteknight | we have a surprising number of little projects like that, which don't get a lot of exposure | 18:08 | |
| Coke | is 70025 a perl6 ticket? | 18:11 | |
| (or is that for perl5?) | 18:12 | ||
| (looks like the latter) | |||
| einstein | if think I found litte bug in trunk/parrot/src/call/context_accessors.c->get_context_str_fast | 18:13 | |
| I replaced return PMC_data_typed(ctx, Parrot_Context *); with return PARROT_CONTEXT(ctx)->context; | 18:14 | ||
| to make my copy (with lots of my changed) of the code working | |||
| whiteknight | einstein: what's the bug? | 18:15 | |
| purl | the bug is www.cbttape.org/funny/bug3.jpg or img227.imageshack.us/img227/2596/featureiu1.jpg | ||
| einstein | sorry it is no problem | 18:17 | |
| I'am still busy with ticket 1020 and removed the auto_attr (all pmc have attributes), for that reason it was problem for me | 18:18 | ||
| whiteknight | ok | 18:19 | |
| einstein | the rest of the pcc reapply update did nicely merge into my changed code (had to do some minor changed) so I can go further :) | 18:21 | |
| whiteknight | nice | 18:22 | |
| I don't know if there has ever been any kind of consensus on #1020. It was a pretty big change | |||
| cotto_work | I wasn't even aware of it until you mentioned it just now. I don't seem to be alone. | 18:24 | |
| einstein | I know | ||
| cotto_work | Getting Warnocked is almost as much fun as getting rickrolled. | 18:25 | |
| einstein | I did post a message in the mailing list, but got only reaction of whiteknight on the ticket :$ | 18:27 | |
| dalek | kudo: fc56071 | markmont++ | src/ (3 files): make $! always be a Perl object instead of sometimes being a Parrot Exception PMC. |
18:28 | |
| einstein | But i though I could try to see where would end and it is still going as planned | ||
| Coke | segfaaaaaaaaaaaaaaaaault. | 18:35 | |
| kthakore | Coke: fun! | 18:36 | |
| jonathan | meh. Guess what I gotta hunt down next in my efforts to get Rakudo to run on Rakudo trunk... :-/ | 18:38 | |
| Coke | jonathan: a recursion recursor? | ||
| jonathan | Coke: no. segfaaaaaaaaaaaaaaaaault. | 18:39 | |
| Coke | (do you mean parrot trunk?) | ||
| jonathan | Yes. | ||
| oh | |||
| damm | |||
| Coke | hopefully it's the same segfault that's killing partcl. =-) | ||
| jonathan | Well, it's possible. | ||
|
18:39
chromatic joined
|
|||
| jonathan | Annoyingly, it doesn't involve any of the Rakudo specific stuff in the backtrace. | 18:39 | |
| dalek | kudo: 657d55c | (Kyle Hasselbacher)++ | src/setting/ (2 files): [setting] make !% work with Whatever |
18:45 | |
| whiteknight | haha, that commit message is very funny, unintentionally | 18:52 | |
| nopaste | "coke" at 72.228.52.192 pasted "improve this perl6 code..." (15 lines) at nopaste.snit.ch/18460 | 18:53 | |
| japhb | Coke: What is your definition of "improve"? | 18:54 | |
| Coke | japhb: vague. | ||
| japhb | Well, instead of has_twin doing an if-else, just return the result of the if expression directly. | 18:55 | |
| Or if you're really feeling picky about the exact return, at least use a ternary instead ... | 18:56 | ||
| jonathan | Oh ouch. | ||
| I've realized why we haz a segfault. | |||
| japhb | jonathan, "we" as in Rakudo, or "we" as in Rakudo and Partcl? | ||
| jonathan | japhb: Parrot. | 18:57 | |
| get_iter in the MultiSub PMC assumes that we are currently doing a call. | |||
| It thus tries to sort based on the current call signature. | |||
| However, that is Null. | |||
| So we explode. | |||
| It used to just give you the candidates without worrying about a sort. | 18:58 | ||
| japhb | Coke: also, the for loop can be considerably compacted. Perhaps: say "$_\\t{has_twin($_)}" for 1...20; | ||
| jonathan | I guess I'll just check for nullness... | ||
| Coke | japhb: if I don't do the if, I get 1 or undef. | ||
| (i'd really have it show true or false.) | |||
| japhb | Coke, then booleanize it. | ||
| jonathan | Oh hmm...get_iter complains about no applicable candidates too? :-S | 18:59 | |
| japhb | so: sub has_twin(Int $n) { ?is_prime(all($n,any($n+2|$n-2)))) } | 19:00 | |
| chromatic | jonathan, I think we can safely remove that code from MultiSub's get_iter. It looks almost unused. | 19:01 | |
| Unless it's a guard condition, but it's a segfaulty guard condition. | 19:02 | ||
| jonathan | chromatic: Hmm. | ||
| chromatic: I'm not sure if it's used. It looks...weird...to have that in there though. | |||
| japhb | Coke, actually, that looks like redundant junctioning. How about: sub has_twin(Int $n) { ?is_prime($n & ($n+2|$n-2)) } | ||
| jonathan | chromatic: otoh it means its possible to sort the candidates and iterate over the result which may well be useful. | ||
| chromatic | It doesn't returned the sorted results or the best candidate, however. | 19:03 | |
| jonathan | chromatic: No, but I'm guessing it sorts the list in place? | 19:04 | |
| dalek | rrot: r42114 | jonathan++ | trunk/src/pmc/multisub.pmc: [core] Eliminate a segfault and fix a regression in get_iter for MultiSub. |
||
| jonathan | chromatic: I've patched it not to segfault. Feel free to rip out the whole thing and just leave the superclass method to be called though. | ||
| japhb | Coke: So, without running it to see if it all works, I'd leave is_prime() alone, and do the much shorter versions of has_twin() and the for loop. Good enough? | 19:05 | |
| jonathan | Blech. | ||
| Now the stage 1 compiler starts, but soon after promptly segfaults. | |||
| Coke | japhb: much better, danke. | 19:09 | |
| japhb | Coke: np, glad I could help | ||
| dalek | rrot: r42115 | pmichaud++ | trunk/compilers/pct/src/PAST (2 files): [pct/past]: Add 'nsentry' attribute to PAST::Block. |
19:11 | |
| chromatic | Wow, another big jump in Rakudo passing tests. | ||
| jonathan | chromatic: Might you have a moment to sanity check something with me? | 19:12 | |
| I'm looking at Parrot_call_method | 19:13 | ||
| (extend.c) | |||
| It takes const char *signature | |||
| chromatic | Right. | ||
| jonathan | It then does char return_sig = signature[0]; | 19:14 | |
| In the lines after it gets up Pi first - for the invocant. | |||
| And then it strcats signature on | |||
| chromatic | Yes, Coke found that the other day. It's buggy. | ||
| jonathan | Thing is, that means Parrot_pcc_build_sig_object_from_varargs | ||
| gets PiPP | |||
| And then seems to segfault. | |||
| Since one of those P's is the return type. | |||
| chromatic | allison said to use Parrot_call_ext instead. | ||
| whiteknight | should be PiP->P | ||
| is it Parrot_ext_call or Parrot_call_ext? | 19:15 | ||
| jonathan | whiteknight: Not according to the code. | ||
| chromatic | Someone* was going to write some tests in t/src/extend.t for those functions and then I'd fix them, but I've forgotten who or if that was me. | ||
| jonathan | chromatic: Any reason not to patch Parrot_call_meth | ||
| ? | |||
| whiteknight | Parrot_call_method is definitely going away | ||
| jonathan | ...wow. | 19:16 | |
| allison | Parrot_ext_call is the same as Parrot_pcc_invoke_sub_from_c_args, but is the public interface (and so the one guaranteed to stick around) | ||
| chromatic | There's no reason not to call it, but I wanted some tests first for this. I think I was trying to give Coke homework. | ||
| jonathan | I thought I applied a patch to switch Rakudo away from using something else *to* using Parrot_call_meth not so long ago. :-/ | ||
| allison | whiteknight: ext is the prefix for the extend/embed subsystem | ||
| whiteknight: otherwise it would just be Parrot_call | 19:17 | ||
| jonathan | allison: So which should I use? | ||
| whiteknight | allison: right, I was getting confused | ||
| jonathan: Parrot_ext_call | |||
| purl | Parrot_ext_call is the same as Parrot_pcc_invoke_sub_from_c_args, but is the public interface (and so the one guaranteed to stick around) | ||
| allison | jonathan: Parrot_ext_call, everything else is deprecated | ||
| whiteknight was supposed to write up deprecation notices for all of them | |||
| whiteknight was supposed to put together a list first | |||
| allison | whiteknight: I started adding some deprecation notices | 19:18 | |
| whiteknight | allison++ | ||
| jonathan | allison: OK, but otoh if it's not going away until the next deprecation cycle is up, we probably should make it not segfault. | ||
| allison: Anyway, I'll switch over. | 19:19 | ||
| whiteknight | where is Parrot_call_method defined? | ||
| jonathan | whiteknight: you'll love this | ||
| extend.c ;-) | |||
| whiteknight | that was my first guess | ||
|
19:20
joeri joined
|
|||
| jonathan | The one time I bother to use something that's actually in the API, it's wrong. ;-) | 19:20 | |
| meh, OK, even with my patch Parrot_call_method still ends up doing something that leads to a (diferent) segfault. | |||
| whiteknight | jonathan: info on the segfault? backtrace? | ||
| jonathan switches to Parrot_ext_call, hoping it is left shafted. | |||
| whiteknight: It segfaults inside the inner runloop now, doing a can. | 19:21 | ||
| Probably because of some argument passing fail. | |||
| allison: Argh, Parrot_ext_call uses the -> form of signatures. | 19:22 | ||
| That means I gotta do updates all over. :-| | 19:23 | ||
| whiteknight | ah, Parrot_call_method doesn't pass the invocant to Parrot_pcc_build_sig_object_from_varargs | ||
| jonathan | whiteknight: Yeah, the whole thing looks generally messed. :-( | ||
| whiteknight | so it's overflowing the va_list | ||
| jonathan | whiteknight: Yeah, that was my analysis. | ||
| whiteknight | creates a pointer to whatever garbage is on the stack, then segfault | ||
| jonathan | whiteknight: I figure I'll spend tuits on switching to Parrot_ext_call though, since we'll have to in the end. | ||
| whiteknight | okay, good | ||
| jonathan | whiteknight: I'll nopaste the other bit of the patch I wrote. | 19:24 | |
| whiteknight: gist.github.com/218945 | |||
| whiteknight | too many interfaces to the PCC code! | ||
| jonathan | Yeah, and the one to switch to here is going to make me re-arrange quite a bit of code. | 19:26 | |
| jonathan is a little pissed off that he spent a while switching to Parrot_call_method after being told the previous thing he was using was not API, only to learn that it is deprecated also. | 19:27 | ||
| whiteknight | jonathan: PCC refactors were always going to be painful | 19:28 | |
| Coke | whiteknight: when you change the API, that isn't a refactor. | ||
| whiteknight | in fact, I remember the rakudo people asking us to push it forward anyway, despite the problems and the need for deprecation cycles | ||
| Coke: that's what they are being called colloqially | |||
| Coke | whiteknight: <chromatic>words mean things</chromatic> | 19:29 | |
| besides, he's only a /little/ pissed. =-) | |||
| chromatic | PCC rewrites were always going to be painful. | ||
| The problem is, the old, deprecated functions don't work because they don't have any tests. | 19:30 | ||
| Their interfaces stayed the same. | |||
| whiteknight | and because they are held together by duct tape, prayers, and unicorn tears | ||
|
19:30
bacek joined
|
|||
| chromatic | They're not great code, I admit, but they're untested code. | 19:31 | |
| bacek | Good morning | ||
| chromatic | Anyone who feels the least bit of surprise that they don't work, I don't know what to say. | ||
| whiteknight | hello bacek | ||
| bacek | G'Day whiteknight | ||
| dalek | rrot: r42116 | bacek++ | branches/context_unify/include/parrot/context.h: Add optimised Context accessors |
19:33 | |
| rrot: r42117 | bacek++ | branches/context_unify/lib/Parrot/Pmc2c/PCCMETHOD.pm: Update PCCMETHOD.pm to use CallContext |
|||
| rrot: r42118 | bacek++ | branches/context_unify/src/call/args.c: Reimplement early return from fill_params |
|||
| chromatic | I'm *sympathetic* to HLLs that have trouble tracking Parrot, but when tests don't flow from HLLs to Parrot -- especially tests of C components and APIs -- then I'm not surprised that HLLs have trouble with Parrot's C components. | ||
| dalek | p-rx: caa7f04 | pmichaud++ | src/cheats/hll-compiler.pir: [hll]: Remove obsolete emulation of old grammar+action setup. |
19:34 | |
| p-rx: 4c4a0e2 | pmichaud++ | (3 files): [nqp] Initial subroutine declaration code (still missing params). |
|||
| Coke | chromatic: perhaps if parrot's documentation indicated which things were untested, it would be easier for us to know when to help out. | 19:35 | |
|
19:35
nnunley joined
|
|||
| Coke | as it is, I try to report whenever something breaks. It's not always easy to derive tests back. | 19:36 | |
| dalek | rrot: r42119 | bacek++ | branches/context_unify/src/pmc/callcontext.pmc: Remove marking of non-existing field |
||
| chromatic | Assume that every time you have a bug, we need a test. | ||
| rrot: r42120 | bacek++ | branches/context_unify/src/call/pcc.c: invoke_from_sig_object doesn't require to push_context |
|||
| rrot: r42121 | bacek++ | branches/context_unify/tools/build/nativecall.pl: Update NCI to use CallContext |
|||
| rrot: r42122 | bacek++ | branches/context_unify/src/pmc/continuation.pmc: Update Continuation to use CallContext |
|||
| rrot: r42123 | bacek++ | branches/context_unify/src/pmc/multisub.pmc: Update MultiSub to use CallContext |
|||
| cotto_work | bacek, do you expect any speedup from that branch or is it just to reduce code duplication? | ||
| bacek | cotto_work: I already win about 15% | 19:38 | |
|
19:38
kthakore left
|
|||
| cotto_work | bacek++ | 19:38 | |
|
19:38
kthakore joined
|
|||
| chromatic | That's with removing some of the optimizations from trunk, isn't it? | 19:38 | |
| bacek | cotto_work: and expect to return back to 1.4 speed | ||
| chromatic: nope | |||
| chromatic | I thought I saw some macros yanked in earlier patches. | 19:39 | |
| bacek | chromatic: I replaced them with other macros :) | ||
| chromatic | Good. | ||
| bacek | branch can compile already. | ||
| Many tests are broken | 19:40 | ||
| Positive note: fib.pir is faster :) | |||
| whiteknight | I think maybe we should put together a database of benchmark times | ||
| chromatic | I have fib.pir within 0.292% of pre-merge right now. cotto, that's with an optimized build at -O3. | 19:41 | |
| cotto_work | I'd really like to get a good benchmark that exercises the basic code that a HLL would use and make a graph charting our expected real-world performance as a function of the current parrot revision. | ||
| chromatic, how do you get that number? | |||
| chromatic | Callgrind. | ||
| purl | callgrind is probably a very intresting profiling tool for linux with details at kcachegrind.sourceforge.net/cgi-bin/show.cgi | ||
| cotto_work | and just use the instruction count? | ||
| chromatic | Yes. | ||
| whiteknight | instruction count isn't necessarily a good metric for performance | 19:42 | |
| especially if a reduction in instruction count hoses the pipeline | 19:43 | ||
| chromatic | I pay attention to the pipeline as well, but IC is the closest thing we have to a reliable and comparable metric for performance. | ||
| whiteknight | does callgrind give metrics on things like pipeline hazards, cache misses, page faults, etc? | 19:44 | |
| cotto_work | you can get some of that with cachegrind | 19:45 | |
| chromatic | Cachegrind does some of those -- mostly cache misses. | ||
| whiteknight | cache misses are probably very important to Parrot performance right now | ||
| chromatic | Pipeline depends too much on the specific processor, and I'm not sure you can annotate that without perturbing the results past the point of no meaning. | ||
| whiteknight | I'll give you that. Won't worry about pipeline nonsense | 19:46 | |
| cotto_work | I suppose that on platforms where it's supported we could use clock_gettime to count exactly how much time parrot spent running. | ||
| chromatic | Cache misses show what we should already know: per-GCable GC flags are ex-pen-si-ve. | ||
| whiteknight | The next big GC performance improvement might be that cardmarking scheme of yours | 19:47 | |
| chromatic | That'll help caching, but I really do think the linked-list scheme gets us out of sweep, which cuts out half of the time and half of the memory churn of mark and sweep. | 19:48 | |
| whiteknight | although I'm sure PMC_is_free_TESTALL() would become more expensive | ||
| chromatic | It's also not incompatible with a full mark and sweep. | ||
| whiteknight | it doesn't get us out of sweep, just reduces the number of PMCs that need sweeping | 19:49 | |
| and, it accesses the memory in a much more random pattern | |||
| chromatic | Sweep becomes "prepend this list of headers to that list of headers". | ||
| whiteknight | after "search this entire list of headers for headers with flag X set" | ||
| chromatic | No searching necessary. | ||
| whiteknight | oh, you're right | 19:50 | |
| I'm conflating algorithms in my head | |||
| chromatic | The nice part about this is that the lists can be *generations*. | ||
| whiteknight | it's a nice thought. Have to worry about intergenerational pointers, however | 19:51 | |
| cotto_work | moritz, iwbn if the irclog search highlighted search terms in the results. | ||
| chromatic | We need reliable write barriers for that. | ||
| whiteknight | correction: we need ANY write barriers for that | ||
| chromatic | True. | 19:52 | |
| szbalint [offtopic] is tempted to reply to that maemo bug page | |||
| whiteknight | i really need to look back at some of my notes. I can't put my finger on it, but I have an uneasy feeling about this algorithm | 19:54 | |
| as per usual, I may be full of shit and garbage | |||
| chromatic | Your uneasy feeling is probably "But what if something gets allocated during the mark?" | ||
| whiteknight | it would have to be stop-the-world | 19:57 | |
| dalek | p-rx: 4c594ad | pmichaud++ | src/NQP/ (2 files): [nqp]: Add simple parameters to signatures. |
19:58 | |
| whiteknight | or, we could use a multi-tier scheme. Each GC run, marked items move to the top, everything else moves down 1 level | ||
| have 3 levels, so every PMC needs to survive at least every other mark | |||
| (which means new PMCs can survive the first mark without being marked | 19:59 | ||
| Add additional tiers as generations which get marked less often but don't automatically demote | |||
| chromatic | My recent realization was that we can put new PMCs on a "maybe free" list as soon as we allocate them. | ||
| Once we start marking, we create a new maybe free list. | |||
| whiteknight | Benefit to this scheme is that it translates very readily into a concurrent scheme | ||
| chromatic | After we've finished marking, the previous maybe free list is the obviously free list, and we prepend that to the current free list. | 20:00 | |
| whiteknight | why "maybe free" and not "newly allocated" | ||
| einstein | I have to go, but i would like to note that Parrot_pcc_build_sig_object_from_varargs does via CallSignatureReturns.pmc store pointers to data which is on the stack. It works but it can be dangerous if used in inproper way | ||
| whiteknight | chromatic: similar to what I was just saying, just a slight difference in the order and meanings of the various lists | ||
| chromatic | They're the same thing, but my theory is that we make a lot of transient garbage. | 20:01 | |
| whiteknight | I would agree with that. | ||
| chromatic | My naming assumes that most of those GCables won't survive their first mark. | ||
| whiteknight | a scheme that lets transient garbage get recycled lazily is good. The only effort we need to do is lift "live" PMCs up, and let everything else sink as group | ||
| so we only need to change the linked list root node to move the whole damn group down a peg | 20:02 | ||
| chromatic | Basically. | ||
| whiteknight | "YOU'SE GONNA DIE" | ||
| that's a quote that I actually heard one time on the subway | |||
| chromatic | Once we've let mark() move the reachable ones out of that group. | ||
| whiteknight | exactly | 20:03 | |
| did you see that Paper on the concurrent collection algorithm? I've been very inspired by it | |||
| chromatic | I didn't read it. | 20:04 | |
| cotto_work | My "throw stuff at whiteknight and see if it sticks" algorithm seems to have succeeded. | ||
| whiteknight | chromatic: doc.cat-v.org/inferno/concurrent_gc/ | ||
| cotto_work++ | 20:05 | ||
| I've got so many of these printed out papers in my apartment that it's creating a firehazard | |||
|
20:08
Wolong joined
|
|||
| whiteknight | what I like about that algorithm, and there are obviously places to improve, is that the transient garbage falls out the bottom in a pretty lazy fashion | 20:08 | |
| And I think we can make a single-threaded implementation of it quite easily | 20:09 | ||
| theory hugs chromatic | |||
| whiteknight | I think enough of the gristle has been removed from the GC now that we can start seriously thinking about implementing a new core | 20:14 | |
| In fact, I would like a few new cores that we can race | |||
| like a soapbox derby, only a lot more frustrating and esoteric | |||
| and less fun | |||
| purl | less fun is when the other people in the dream don't listen | ||
| whiteknight thinks that purl hangs around in some pretty shady chatrooms | 20:15 | ||
| and now it's time for me to leave. Later | 20:16 | ||
| jonathan | Switching to Parrot_ext_call seems to have helped somewhat. | 20:17 | |
|
20:18
kj joined
|
|||
| jonathan | Well, I get different failures now, anyways... | 20:18 | |
|
20:21
janus joined
|
|||
| dalek | p-rx: 8d35cab | pmichaud++ | src/Regex/P6Grammar/ (2 files): [p6grammar]: Allow names of form category:symļæ½fooļæ½ . |
20:23 | |
| p-rx: c4b8459 | pmichaud++ | (4 files): [nqp]: Add relational ops, prefix ops. |
|||
| rrot-linear-algebra: 34615d0 | darbelo++ | config/Makefile.in: Cleanup makefile variables to use Configure data. |
20:24 | ||
|
20:25
desertm4x joined,
ash_ joined,
kurahaupo joined
|
|||
| Coke | jonathan: silver lining1 | 20:29 | |
| dalek | rrot: r42124 | bacek++ | branches/context_unify/src/call/pcc.c: Don't create new ret_continuation in invoke_from_sigobject |
20:31 | |
| rrot: r42125 | bacek++ | branches/context_unify/src/pmc/continuation.pmc: Update passing params in Continuation |
20:34 | ||
| chromatic makes the function pointers in the vtable struct const, just for laughs. | 20:38 | ||
| Ah, memcpy() -- I love your type unsafe evil. | 20:39 | ||
| dalek | rrot: r42126 | chromatic++ | trunk/src/pmc/multisub.pmc: [PMC] Removed get_iter() vtable entry from MultiSub, as it may be possible to to the SUPER implementation instead. |
20:41 | |
| jonathan | eww | 20:42 | |
| attempt to access code outside of current code segment | |||
| :-/ | |||
| cotto_work | That's just a segfault wearing a nice hat. | 20:43 | |
| jonathan | Aye | ||
|
20:46
baest joined
|
|||
| dalek | p-rx: d38591b | pmichaud++ | (2 files): [nqp]: Complete subroutine declarations (positionals only), |
20:46 | |
| Coke | jonathan: I was seeing that on my segfault every so often. | 20:47 | |
| trac.parrot.org/parrot/ticket/1131 | |||
| (the original big tcl file was occasionally saying that, as I recall. after I trimmed it down, it started segfaulting consistently.) | 20:48 | ||
| jonathan | Hmm | 20:50 | |
| Coke: My guess in your case may be that one of the two PMCs that you pass in there is somehow invalid. | 20:51 | ||
| (e.g. the two involved in the assign op) | |||
|
20:51
mokurai joined
|
|||
| Coke | jonathan: worked immediately before the pcc mergeback. | 20:51 | |
| jonathan | That's what seems to often be the case when there's a segv in an op body. | ||
| Coke | and if I print out $P1, $P0, ISTR they were ok. I could be mistaken, though. | ||
| jonathan | Coke: Aye, what I'm thinking is that somehow, one of those parametrs is somehow damaged...I may be wrong, it's just what I often discover in backtraces that look this way. | 20:52 | |
| Coke | jonathan: given that the 'sort' there is PIR callling C calling PIR throwing an exception, my money is on PCC. =-) | ||
| (would explain why it fails just after the sort.) | |||
| jonathan | *nod* | ||
| I'm doing similar evil. | |||
| Coke | jonathan: I'll see if I can generate a PIR only version of that this evening. | 20:54 | |
| chromatic: converting partcl over to the new pct-like thing might help in generating easy-to-test PIR for you. | |||
| s/you/parrot/ | 20:55 | ||
| chromatic | That would be nice. | 20:56 | |
|
20:57
payload joined
|
|||
| bacek | purl: ( 4637738821 - 3981486428) / 4637738821 * 100 | 20:59 | |
| purl | 14.1502662898662 | ||
| cotto_work | Where | 21:00 | |
| 's that win coming from? | |||
| bacek | GC pressure | ||
| purl | i guess GC pressure is the biggest problem right now. | ||
| bacek | botsnack | ||
| purl | thanks bacek :) | ||
| cotto_work | Does the branch allow more PMC reuse or create fewer PMCs? | 21:01 | |
| chromatic | It should create about 25% fewer. | ||
| bacek | create fewer PMC. | ||
| sjn | bacek: looks like swedish phone numbers are 14.15% better than italian ones. | ||
|
21:02
hercynium joined
|
|||
| jonathan | sjn: That's because Sweden has a lovely telephone system. ;-) | 21:02 | |
| sjn | jonathan: yeah, they're much cooler too (mostly because of the cold weather though) | 21:03 | |
| jonathan | Mmmm...cold weather. :-) | 21:04 | |
|
21:04
kid51 joined
|
|||
| sjn | +5 C in Oslo clears the mind :-) | 21:04 | |
| jonathan | Did anything much change during pcc_reapply to do with a Sub's invoke vtable, or return continuation invocation? | 21:08 | |
| Notably, anything that might have broken an inovke of a sub followed by an invoke of the return continuation installed in the created context without necesarily entering the runloop inbetween? | |||
|
21:17
Whiteknight joined
21:26
joeri left
|
|||
| chromatic | You might need Parrot_cs_switch_to_seg or whatever that is. | 21:27 | |
| darbelo | Whiteknight: ping | ||
|
21:29
mikehh joined
|
|||
| Whiteknight | darbelo: pong | 21:29 | |
| darbelo | Looking at nummatrix2d.pmc now. | 21:30 | |
|
21:31
bluescreen joined
|
|||
| darbelo | Are you sure it needs PObj_custom_destroy ? | 21:31 | |
| I don't see a destroy() VTABLE there. | |||
| Also, if it's using auto_attrs, you shouldn't allocate them in init() | 21:32 | ||
| desertm4x | That's probably my fault, I basically copied these things from another PMC I've written (that did not use auto_attrs). | 21:33 | |
| darbelo | Also, I think they are pre-zeroed. But I'm not sure on that point. | 21:34 | |
| jonathan | chromatic: Ah...worth checking. I thought VTABLE_invoke always did that, but will verify. | 21:35 | |
| darbelo | The other thing is about resize_matrix | ||
| jonathan | chromatic: It looks also though like I was not saving some state when doing nested calls, and it was thus getting trampled. | ||
| darbelo | Why are we doing a double loop instead of straight memcpy()? | 21:36 | |
| chromatic | VTABLE_invoke() should do that, yes. | ||
| darbelo | And we should probably consider making that function deal with raw storage, instead of PMCs. | 21:39 | |
|
21:41
joeri joined
|
|||
| desertm4x | darbelo: In my opinion, memcpy would be the better option (but maybe Whiteknight didn't do this for a reason). But why should resize_matrix deal with raw storage? | 21:42 | |
| bacek | chromatic: ping | 21:44 | |
| Whiteknight | darbelo: we can't do a memcpy because of the way memory is laid out | ||
| rows are allocated end-to-end | |||
| so if we increase the length of the rows, we have to loop anyway | |||
| dalek | p-rx: 64e2c87 | pmichaud++ | (3 files): [nqp]: Add infix:<||>, infix:<&&>, and infix:<//>. |
||
| p-rx: ccd1d5b | pmichaud++ | (3 files): [nqp]: More operators and tests. |
|||
| Whiteknight | keep in mind that arrays should be preallocated for best performance | 21:45 | |
| darbelo | Sorry, I meant memcpy() the rows. Go down to 1 loop. | ||
| bacek | chromatic: I hit major roadblock. It's not quite clear who should create new context... | 21:47 | |
| chromatic: Sub.invoke, build_sigobject, someone else? | 21:48 | ||
| darbelo | We start with a pointer to the beggining of each buffer, we memcpy() the data, and increment each pointer by the size of a row. | ||
| chromatic | My first guess is Sub.invoke. | ||
| jonathan | I don't think Sub.invoke can. | 21:49 | |
| Since multi-dispatchers need the call signature before they pick what to invoke. | |||
| moritz | cotto_work: I have a large TODO list for the irclog search, and I plan to re-do it completely, based on KinoSearch | ||
| cotto_work: but it's unlikely that I'll get to it this year | |||
| jonathan | I'm guessing that we'd create it wherever we create the CallSignature now, and invoke just fills in the missing bits. | 21:50 | |
| chromatic | Good point. | ||
| bacek | chromatic: it was mine too... | ||
| cotto_work | moritz, ok. It's usable as-is but I'm glad you plan on making it better. | 21:53 | |
| nopaste | "chromatic" at 72.87.39.97 pasted "Make vtable function pointers const (segfaults, but an interesting idea)" (102 lines) at nopaste.snit.ch/18463 | 21:56 | |
|
21:58
joeri left
22:07
integral joined
|
|||
| nopaste | "darbelo" at 200.49.154.173 pasted "Whiteknight: memcpy() the rows" (26 lines) at nopaste.snit.ch/18464 | 22:11 | |
| NotFound | chromatic: don't lie to the compiler. They aren't const. | 22:13 | |
| chromatic | Everywhere except the initialization they are. | 22:14 | |
| NotFound | Enough to fool the compiler. | 22:15 | |
| jonathan | chromatic: Interestingly, Rakudo's benchmarks (the tools/benchmark.pl one) don't seem to lose too much. | ||
| darbelo | desertm4x: nopaste.snit.ch/18464 | ||
| jonathan | chromatic: That is, after switching to trunk. | ||
| chromatic: There's a loss, sure, but on the other hand I didn't switch to just taking the :call_sig yet (one step at a time...) | 22:16 | ||
| chromatic | ~10%? | ||
| darbelo | Unless I have x and y crossed in my head. Which has happened before. | ||
| jonathan | chromatic: About that, no more than 15%. | ||
| desertm4x | darbelo: In my opinion this should work (better than the current solution). | 22:17 | |
| jonathan | chromatic: Unfortunately, right now somehow 1 + 1 doesn't even work, so we don't do very well on the sanity tests. ;-) | ||
| desertm4x | I'm just checking whether you crossed x and y. ;-) | ||
| chromatic | NotFound, can you think of a place where we modify the function pointers in a vtable besides PMC class init? I can't. | ||
| darbelo | I also think we should do shrinking on both dimesions a no-op. | 22:18 | |
| NotFound | chromatic: update_vtable functions use asiignment, so they can't be const. | 22:24 | |
| dalek | p-rx: 190f5e9 | pmichaud++ | (3 files): [nqp]: Add while/until/repeat_while/repeat_until . |
22:25 | |
| p-rx: 01986c7 | pmichaud++ | t/nqp/14-while.t: [nqp]: Add tests for "repeat [while|until] <xblock>" form. |
|||
| rrot-linear-algebra: a92780f | darbelo++ | dynext/IGNORE: Remove IGNORE file. |
22:26 | ||
| rrot-linear-algebra: b4d7970 | darbelo++ | dynext/.gitignore: Add empty .gitignore file in dynext/ to keep the dir alive. |
|||
| rrot-linear-algebra: fdade98 | darbelo++ | src/pmc/nummatrix2d.pmc: Remove ATTR allocation and initialization, auto_attrs should handle that for us. |
|||
| chromatic | NotFound, those all get called from class_init. | ||
| dalek | rrot-linear-algebra: 22d7dfd | darbelo++ | src/pmc/nummatrix2d.pmc: Make non-METHOD, non-VTABLE function static. |
||
| allison | jonathan: yes, Parrot_ext_call uses the -> form of signatures | 22:27 | |
| jonathan: everything is moving to that form, the old form can be considered deprecated | |||
| NotFound | chromatic: yes, and you may need a nightmare of casts and/or copying to make that work. | 22:28 | |
|
22:29
Whiteknight joined
|
|||
| chromatic | I'd like to see 1) what that nightmare of casts/copying looks like (in generated code) and 2) if const function pointers in the vtable helps C compilers optimize out repeated subexpression fetches. | 22:29 | |
| Whiteknight | EUBUNTUCRASHED | 22:30 | |
| darbelo | Whiteknight: nopaste.snit.ch/18464 | ||
| NotFound | chromatic: mmmm... maybe a few casts in the VTABLE macros can do the desired work easily. | 22:31 | |
| chromatic | I never thought of that. I like the idea. | 22:32 | |
|
22:32
kid51 joined
|
|||
| Whiteknight | darbelo: I would be surprised if that actually helped performance at all | 22:34 | |
| plus, like I said, resizes should be uncommon. | 22:35 | ||
| kj | hi #parrot | ||
| cotto_work | hi kj | ||
| Whiteknight | hello kj | ||
| NotFound | chromatic: What type of repeated subexpressions are you thinking about? | 22:36 | |
| kj | well, found some interesting things happening. Some bugs in PIRC have been fixed.. without fixing PIRC! However, new issues have automatically introduced themselves. | ||
| jonathan | allison: OK, I've done the switch now. | 22:37 | |
| chromatic | Repeated pointer dereferencing and its consequences for branch prediction, grabbing a vtable pointer out of a PMC in a tight loop. | ||
| darbelo | kj: You were probably experiencing parrot bugs that got fixed^W replaced with other bugs. | ||
| kj | darbelo: Yes. You think it would help to just wait for the others to be fixed automatically? :-) | 22:38 | |
| s/others/new ones/ | |||
| NotFound | chromatic: Using the same pmc during the loop? | 22:39 | |
| chromatic | yes | ||
|
22:39
particle joined
|
|||
| NotFound | The problem I see is that PMC are never const, so the compiler can't assume that pmc->vtable doesn't chenge | 22:40 | |
| darbelo | kj: It eventually comes down to what new bugs the fixes introduce. | ||
| If you do it yourself you get to pick the bugs introduced. ;) | |||
| kj | darbelo: Yes. well this is scary. PIRC-generated bytecode runs fine on Windows, but on MacOS it's faulty | ||
| darbelo parsed that as "MacOS: it's faulty" | 22:41 | ||
| darbelo agrees. | |||
| NotFound | Maybe a pbc_diff program will be useful. | ||
| chromatic | Hm, maybe we need to mark certain PMCs as const then. | 22:42 | |
| moritz | kj: the server on which you had access for testing has been replaced by a new one... do you need access to a linux box again? | ||
| chromatic | I mean, in parameter signatures or stack variables. | ||
| kj | moritz: yes that would be handy | ||
| moritz: haven't used it in ages, since i havent worked on it for ages.. | |||
| NotFound | chromatic: we almost never can because vtable functions take pointer to non-const. | ||
| Some time ago we talked about what vtable functions can take const pmc, and te answer was none. | 22:44 | ||
| dalek | tracwiki: v3 | jkeenan++ | ArchivedNewsEvents | ||
| tracwiki: trac.parrot.org/parrot/wiki/Archiv...ction=diff | |||
| tracwiki: v112 | jkeenan++ | WikiStart | |||
| tracwiki: Moved some completed 'news and events' to archived news events | |||
| tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff | |||
| chromatic | The third thing I do when I get a time machine is to go back in time and replace C as the systems programming language with, say, ML. | ||
| dalek | rrot: r42127 | allison++ | trunk/docs/embed.pod: [cage] Delete deprecated and deleted functions from the extend/embed API. |
||
| NotFound | chromatic: Maybe we must rewrite parrot in Forth ;) | 22:46 | |
| Whiteknight | chromatic: you thin ML would be superior to C for that purpose? | ||
| chromatic | From this angle of my particular frustration with C today, yes. | 22:47 | |
| darbelo | chromatic: third? What are the frist two? | ||
| s/frist/first/ | |||
| chromatic | One is a business plan. The second is a personal goal. | ||
| darbelo | Ah. | ||
| allison | How about a new C-level language? | 22:48 | |
| NotFound | PL/I ? | ||
| purl | PL/I is a stinking abomination. or FAQ at www.faqs.org/faqs/computer-lang/pli-faq/ | ||
| dalek | rrot: r42128 | allison++ | trunk/lib/Parrot/Pmc2c/Object.pm: [cage] Remove an unused code path that hasn't worked in several years. |
||
| allison | project goal "to develop a compelling replacement for C" | ||
| kid51 | kj ping | ||
| kj | kid51: hi | ||
| allison | (al la svn) | ||
| NotFound | That can be the personal goal part. | ||
| Whiteknight | C is very good for particular uses. The important part is knowing what the boundaries of those uses are | 22:49 | |
| kid51 | kj: are you kjs (as in TT #1146)? | ||
| NotFound | And business plan for it, thee birds in a shot. | ||
| kj | i am kjs yes | ||
| and also the one in 1146 for that matter | |||
| jonathan | Eww! | ||
| The way do_run_ops decides whether to invoke or not is, erm, ouch. | |||
| darbelo | allison: There's about a dozen of those. Some of them are even used by their authors :) | ||
| kid51 | So, it's been so long that we had any work done in pirc, I don't know how to get to this command: $ ./pirc -b -x inv.pir | ||
| NotFound | Whiteknight: for example, to write a Winxed compiler C++ is better ;) | ||
| kid51 | How do I get a pirc executable? | 22:50 | |
| allison | darbelo: then they clearly aren't "compelling" | ||
| kj | kid51: cd compilers/pirc && make | ||
| Whiteknight | NotFound: C is portable assembly (though it could be better in that regard). It's good for low-level stuff | ||
| kj | kid51: I had some problems building on windows I think | ||
| jonathan | allison: Is there a way a dynpmc can flag itself as having an invoke method that leads to us wanting to run bytecode, besides inheriting from Sub? | ||
| kid51 | which make target | ||
| Whiteknight | jonathan++ fixed some windows issues today | ||
| kj | and on Cygwin the build is broken for some reason, haven't looked into that | ||
| kid51 | Do you mean: cd compilers/pirc && make | 22:51 | |
| jonathan | allison: My problem is that P6Invocation doesn't. | ||
| kj | kid51: make target, are you assuming there it's in the main Makefile? It's not. | ||
| NotFound | Whiteknight: That's the beauty of C++:: you can do the low level stuff parts without switching language. | ||
| jonathan | allison: And I kinda really don't need it to (and worry about will happen if I make it do so). | ||
| kj | kid51: yes, you have to manually build it in the compilers/pirc directory | ||
| allison | jonathan: not sure I understand the question | ||
| chromatic | I wish I could believe that C++ was finally cross-platform compatible. | ||
| kj | eh, manually build=manually invoke make there. it's not compiled as part of parrot build process | ||
| Whiteknight | NotFound: C++ isn't much higher-level then C is. | ||
| NotFound | Whiteknight: but you don't need to be low-level in all parts of the code. | 22:52 | |
| allison | jonathan: any object with an invoke vtable function should be polymorphically substitutable for Sub | ||
| jonathan: if it isn't, I'd call it a bug | |||
| jonathan | allison: See do_run_ops in src/call/pcc.c | 22:53 | |
| allison: It would appear it is a bug. ;-) | |||
| Whiteknight | allison: we still have a little ways to go before they're all perfectly polymorphically | ||
| allison | jonathan: yup, bug | 22:54 | |
| jonathan | allison: OK, glad you agree. :-) | ||
| allison | jonathan: (hardcoding class names for feature selection = bad) | ||
| jonathan | Sure. At the very least it should be a "provides". | ||
| allison | aye | ||
| kj | kid51: sorry for confusion. added a note on how to get a pirc executable in the ticket. | ||
| pmichaud_ | chromatic: patch for t/op/fetch.t at nopaste.snit.ch/18465 if you get a chance :) | 22:55 | |
| jonathan | allison: I'm not quite sure exactly what a fix would look like. | ||
| pmichaud_ | (and I'm at a point where having fetch could be very useful to me). | 22:56 | |
| (but can continue to live w/o it) | |||
| jonathan | I guess we could try comparing the_pmc->vtable->invoke with the one of the default PMC but that feels not quite right -ish. | ||
| (e.g. what if it had the readonly vtable swapped in...) | 22:57 | ||
| allison | jonathan: I'd add another check after VTABLE_isa | ||
| NotFound | jonathan: looks like the bug is the control flow inside that sub. | ||
| allison | jonathan: for VTABLE_does | 22:58 | |
| NotFound | Mmm... no, is ugly but correct. | ||
| jonathan | allison: What would we be checking for? | ||
| allison | jonathan: but would have to move the check for enum_class_core_max after the isa and does checks | ||
| darbelo has just stumbled across doc.cat-v.org/plan_9/4th_edition/pa.../acidpaper | |||
| allison | jonathan: make it up | ||
| jonathan | NotFound: lol...you mean the max_class_core... :-) | 22:59 | |
| allison: invokable? ;-) | |||
| allison | jonathan: sounds good | ||
| jonathan | allison: No no, letting me name things is always a bad idea. :-) | ||
| oh wow :-) | |||
| NotFound | allison: Replacing VTABLE_isa with VTABLE_does will be enough? | ||
| allison | could be does invoke | ||
| jonathan | allison: It turns out making P6Invocation like about being a Sub works too, but that's...bad. | 23:00 | |
| allison | NotFound: not at the moment, since Sub isn't marked with this magical does property | ||
| jonathan | By the way, with that, we now pass all of the Rakudo sanity tests on top of latest Parrot trunk. | ||
| allison | jonathan: yes, pretending inheritance is just nasty | ||
| jonathan | allison: Aye, but at least now I know something like this will be a good ifx. | 23:01 | |
| *fix | |||
| Will add the does check. | |||
| kj | kid51: any luck with that, or weren't you looking into that? | 23:02 | |
| NotFound | The enum_class_core_max can be placed before the enum_class checks, and do some checks in the if branch and other in a else part. | ||
| jonathan | After that, it'll be time to see how epicly Rakudo fails its spectests. | ||
| NotFound | Let me do a few tests... | 23:03 | |
| Whiteknight | there are a surprisingly large number of Parrot_PCCINVOKE() calls in the codebase still | 23:04 | |
| allison | Whiteknight: we didn't do the search and replace on that in the branch | ||
| Whiteknight | allison: should we? | 23:05 | |
| allison | Whiteknight: it just needs a direct replacement with Parrot_pcc_invoke_method_from_c_args, which is identical | ||
| (really, identical, they're cut-and-paste the same code) | |||
| nopaste | "kid51" at 68.237.19.30 pasted "pirc: make test on Darwin/PPC (got similar on Linux/i386)" (45 lines) at nopaste.snit.ch/18466 | 23:06 | |
| Whiteknight | yes. Parrot_PCCINVOKE was externally-facing, right? So I can't just chop it entirely? | ||
| allison | Parrot_PCCINVOKE isn't part of the public API, so could be removed without a deprecation cycle | ||
| (though, it's a bit of an edge case) | |||
| jonathan | allison: The role check works nicely. | 23:07 | |
| allison | Whiteknight: it at least falls under deprecation item TT #443 | ||
| darbelo | Whiteknight: Chop! Chop! Chop! | ||
| allison | jonathan: excellent | ||
| nopaste | "NotFound" at 213.96.228.50 pasted "patch for call/ppc Sub check" (30 lines) at nopaste.snit.ch/18467 | ||
| NotFound | jonathan: That can work? | 23:08 | |
| allison | NotFound: not "Sub" on the does check | ||
| NotFound: something like "Invokable" | |||
| jonathan | NotFound: should be | ||
| || VTABLE_does(interp, sub_obj, CONST_STRING(interp, "Sub")); | |||
| oh fail | |||
| || VTABLE_does(interp, sub_obj, CONST_STRING(interp, "invokable")); | |||
| NotFound | Ah, yes. | 23:09 | |
| jonathan | NotFound: You going to commit this soon (e.g. after a make test run)? | 23:10 | |
| NotFound | jonathan: I'd like to have some way to test it first. | ||
| allison | NotFound: will CONST_STRING work across lines like that? | 23:11 | |
| NotFound: IIRC, it has a silly bug that won't allow it on split lines | 23:12 | ||
| (bug, feature, whatever) | |||
| jonathan | Wow, while runtime benchmarks for Rakudo are not bad, the spectests feel way slower. :-( | ||
| I'm guessing parsing related things. | |||
| NotFound | allison: I fail to understand under what circunstances CONST_STRING think there are multiple lines implied. | ||
| jonathan | allison: I think it's only triggered when it's more like CONST_STRING(interp, <newline> "monkey") | 23:13 | |
| allison | NotFound: in my experience, it's anytime the CONST_STRING isn't on the same line as the start of that code | ||
| Whiteknight | what needs to happen to fix CONST_STRING to dtrt? | ||
|
23:13
plobsing joined
|
|||
| NotFound | I'll write a static inline function with written in a cleaner way and let the compiler optimize it, then. | 23:14 | |
| allison | we have a special exception in the coding standards tests not to flag the line length of anything with CONST_STRING in it | ||
| chromatic | Whiteknight, we have to fix all stupid C compilers everywhere. | ||
| Did I mention the words "ML" and "time machine" yet? | |||
| allison | replace C! | ||
| Whiteknight | chromatic: why does it have to do with C compilers at all? Isn't it a perl5-based translator? | 23:15 | |
| allison | Whiteknight: but it's translated *to* C | ||
| Whiteknight: specifically, it's translated to this bizarre macro system based on line number | 23:16 | ||
| Whiteknight | allison: right. So why can't we have perl5 generate better code? | ||
| chromatic | C preprocessors don't handle #line reliably. | ||
| allison | Whiteknight: because it's generating C code | 23:17 | |
| Whiteknight | allison: we can generate anything we want. we can generate better C code | ||
| allison | Whiteknight: we could use a completely different way of preprocessing the CONST_STRINGs... but probably not in Perl 5 | ||
| Whiteknight | we don't need to use #line directives | ||
| dalek | p-rx: d9b2cc4 | pmichaud++ | (3 files): [nqp]: Add 'for' statement and tests. |
23:18 | |
| Whiteknight | one situation I'm thinking of is to store the literal string constants in a separate file as a series of uniquely-named globals, and replace CONST_STRING in the code with a pointer to that string constant | ||
| preserves line numbering for debugging | |||
| allison | Whiteknight: before we run too far down that path, we should take a look at internationalization | 23:19 | |
| Whiteknight | if we stored string constants by hash, we could reuse identical strings and save space | ||
| allison | Whiteknight: which will have to do something very similar | ||
| Whiteknight | exactly. | ||
| allison | (with substitutions for different languages) | ||
| nopaste | "NotFound" at 213.96.228.50 pasted "patch for call/ppc Sub check - second edition" (47 lines) at nopaste.snit.ch/18468 | 23:20 | |
| plobsing | TT1147 - fix NCI for pcc_reapply. Any takers? | 23:21 | |
| allison | NotFound: should one of the VTABLE_isa checks in is_invokable be VTABLE_does? | ||
| NotFound | Uh, today I'm not very clear %- | 23:22 | |
| allison | plobsing: think you could split that patch out a bit? | ||
| plobsing | sure, I'll try. | 23:23 | |
| nopaste | "NotFound" at 213.96.228.50 pasted "patch for call/ppc Sub check - service pack" (47 lines) at nopaste.snit.ch/18469 | ||
|
23:23
mikehh joined
|
|||
| allison | plobsing: particularly, some parts can be applied before 2.0, others have to wait until after | 23:23 | |
| plobsing | what parts have to wait? | 23:24 | |
| dalek | rrot: r42129 | whiteknight++ | trunk (15 files): [pcc] rename all instances of Parrot_PCCINVOKE to the more modern Parrot_pcc_invoke_method_from_c_args |
||
| allison | plobsing: and changes to nativecall.pl should be separate from changes to the PMC | 23:25 | |
| NotFound | Passes all test. | 23:26 | |
| nopaste | "jonathan" at 89.173.82.225 pasted "NotFound - here is the patch I wrote, fwiw" (14 lines) at nopaste.snit.ch/18470 | 23:27 | |
| jonathan | NotFound: ^ | ||
| NotFound: If it's going to be functionally equivalent to that, should be just fine. ;-) | |||
| NotFound | jonathan: Do you have some idea on how to write a quick test? | ||
| jonathan | NotFound: Off hand, not too easily. | ||
| dalek | rrot: r42130 | whiteknight++ | trunk/src/call/pcc.c: [pcc] add a deprecation note to the POD of Parrot_PCCINVOKE. Future reference: Don't use this function! You have been warned |
23:28 | |
| jonathan | NotFound: I ran into it because of a dynpmc that I use. | ||
| That an overloaded find_method hands back. | |||
| plobsing | allison: OK. I don't see what parts need to wait for 2.0 though. I don't think I've removed or modified a public facing interface. | ||
| jonathan | So it's a fairly...convoluted...example. | ||
| ;-) | |||
| NotFound | jonathan: I can commit it right now and we can create a todo ticket for the test, then. | ||
| Whiteknight | speaking of dynpmcs: Does anybody here know how to go about installing one? | ||
| jonathan | Whiteknight: Rakudo's make install target surely does. | ||
| darbelo | Whiteknight: I do. | 23:29 | |
| Whiteknight | darbelo: parrot-linear-algebra needs a make install target | ||
| darbelo | Whiteknight: look at the decnum-dynpmcs cfg/makefile.in | ||
| Whiteknight | okay, I can do tha | ||
| darbelo | Whiteknight: It's ok, I'm on it. | ||
| allison | plobsing: it looked like you changed the signature strings for NCI | ||
| darbelo | Just give me a sec to finish off something else. | 23:30 | |
| plobsing | no, I changed the parsing of them to generate the new pcc strings | ||
| apparently the diff wasn't smart enough | |||
| Whiteknight | darbelo: I don't see an install target anywhere in decnum-dynpmcs | 23:31 | |
| allison | plobsing: dropped some METHODs from the object | ||
| darbelo | Whiteknight: cfg/Makefile.in line 172 | 23:32 | |
| It's been there since ages immemorial. | |||
| Whiteknight | oh, I was looking in the wrong Makefile.in | ||
| allison | plobsing: aye, it can get confused with large diffs | ||
| NotFound | allison: Is fine to commit that change now and create a todo ticket for a test? | ||
| allison | NotFound: yes, good fix | ||
| NotFound: sounds like a candidate for a new dynpmc | 23:33 | ||
| Whiteknight | darbelo: got it! Working on it now | ||
| plobsing | oops sorry, I guess I dropped set_raw_nci_ptr. | ||
| allison | NotFound: testinvokable.pmc, or something like that | ||
| plobsing | fixing | ||
| NotFound | I'm not sure about what are the immediate intended usages, better if someone that knows writes the ticket. | 23:34 | |
|
23:38
Whiteknight joined,
patspam joined
|
|||
| Whiteknight | EUBUNTUCRASHEDAGAIN | 23:38 | |
| cotto_work | Whiteknight, are you playing with the 9.10 beta? | 23:39 | |
| darbelo | I think that ubuntu has been the greatest incentive ever to keep me on OpenBSD. | ||
|
23:40
nbrown joined
|
|||
| Whiteknight | cotto_work: maybeee.... | 23:40 | |
| I loved 9.04. Absolutely loved it | |||
| and 9.10 will be awesome too when they work these bugs out | |||
| (which is why I like to be on the forefront of testing) | |||
| cotto_work | From what I've read, I'm not going to bother upgrading until I'm convinced it's significantly less buggy. | ||
| Apart from a few apps, I didn't care for the hassle of upgrading last time I bothered. | 23:41 | ||
| jonathan doesn't do OS upgrades often. | 23:42 | ||
| Too lazy, and don't enjoy it. | |||
| Whiteknight | they're switching to a new power manager. and there are obviously some kinks to work out with that | 23:44 | |
| dalek | rrot: r42131 | NotFound++ | trunk/src/call/pcc.c: [pcc] allow Parrot_pcc_invoke_from_sig_object to take a PMC that isa Sub or does invokable |
||
| Whiteknight | my laptop has been running noticably warmer since the upgrade, for instance | ||
| cotto_work | I'm really unimpressed by the inability to restart dbus without screwing stuff up. | 23:47 | |
| nopaste | "darbelo" at 200.49.154.173 pasted "Install target for Whiteknight" (14 lines) at nopaste.snit.ch/18471 | 23:52 | |
| Whiteknight | darbelo: just committed it | 23:53 | |
| thanks though! | |||
| darbelo | Whiteknight: Have you pushed it? | 23:54 | |
| Whiteknight | ....did now | 23:56 | |
| allison | save an endangered parrot? www.saveyourlogo.org/en | ||
|
23:58
Essobi joined
|
|||