|
Parrot 3.4.0 released | parrot.org | Log: irclog.perlgeek.de/parrot/today Set by moderator on 17 May 2011. |
|||
|
00:02
kid51 is now known as kid51_at_dinner
00:09
theory joined
00:39
mikehh_ joined
00:41
mikehh left
|
|||
| cotto | ~~ | 00:56 | |
|
00:58
kid51_at_dinner is now known as kid51
|
|||
| dalek | rrot/tt2118/check_depend: 3569fe3 | jkeenan++ | t/src/checkdepend.t: Group subroutine declarations together. Delete commented-out code. Small typographic reformatting. |
00:58 | |
|
01:00
theory left
01:07
dmalcolm left
|
|||
| soh_cah_toa | cotto: ping | 01:12 | |
| cotto | soh_cah_toa, poing | 01:17 | |
| soh_cah_toa | cotto: have you ever seen the "expected specifier-qualifier-list" error from gcc before? actually, it's "expected specifier-qualifier-list before 'hbdb_t'" to be exact | ||
| cotto | soh_cah_toa, didn't that already get fixed? | ||
| soh_cah_toa | cotto: i thought so too | ||
| cotto | that should probably be a pointer to hbdb_t rather than stuffing a whole hbdb_t into the interp | 01:19 | |
| bacek_at_work | ~~ | ||
| soh_cah_toa | cotto: ah, yes. i'll try that. though it's weird that's it's showing up now since it's always been a non-pointer | 01:20 | |
| cotto | soh_cah_toa, did you try bisecting where the error first appeared? | 01:21 | |
| hi bacek_at_work | |||
| bacek_at_work | aloha, cotto | ||
| cotto | soh_cah_toa, that won't fix the error but is still a good idea | 01:22 | |
| soh_cah_toa | cotto: no, i'm not too familiar w/ git-bisect. i'm pretty sure it appeared after i defined some new types in src/hbdb.c | ||
|
01:27
woosley joined
|
|||
| cotto | I feel like I'm missing something obvious. | 01:31 | |
| soh_cah_toa | cotto: i know. i'm gonna try bisecting. it doesn't seem too hard. though how do i revert to a previous commit so i can see whether it's good? git-reset? | 01:34 | |
| cotto | soh_cah_toa, I think it has to do with the headers you're including in hbdb.h . Note that debugger.h doesn't include anything. | 01:35 | |
| soh_cah_toa | cotto: don't i need parrot/parrot.h for opcode_t and stdio.h for FILE? | 01:36 | |
| cotto | I think the key is to not include any #defines in hbdb.h and ensure that when you include it in a C file, that you include parrot/parrot.h first. | ||
| doing that gets the build working for me | 01:37 | ||
| the problem is that hbdb.c was including hbdb.h but not parrot.h, so some of the types that hdbd.h weren't getting defined | 01:40 | ||
| soh_cah_toa | i think i tried #including parrot/parrot.h before. i'll double check | 01:41 | |
| here's what i got. frontend/hbdb/main.c #includes hbdb.h before parrot.h. src/hbdb.c as well and i removed all the other #includes. parrot/hbdb.h #includes nothing. i'm still seeing failure | 01:43 | ||
| except now gcc complains about opcode_t | 01:44 | ||
| cotto | parrot.h should be first | 01:46 | |
| soh_cah_toa | still complaining | 01:48 | |
| oh wait... | |||
| going...going... | |||
| soh_cah_toa sighs in relief | 01:49 | ||
| cotto | winner! | 01:50 | |
| soh_cah_toa | ok, good. but since hbdb.h uses FILE's and opcode_t's, should i at least test that those two are defined before including them rather than relying on that i include parrot.h before hbdb.h everywhere? | 01:51 | |
| s/defined/included/ | 01:52 | ||
| cotto | you control where hbdb.h is included | ||
| soh_cah_toa | alright | ||
| cotto | no need to be overly defensive about checking what's defined for something internal like that | ||
| soh_cah_toa | these chains of #include's can get quite lengthy | 01:54 | |
| cotto | I tend to fiddle and forget. | 01:58 | |
| soh_cah_toa | and another thing...is it possible to stop all the pmc2c's and c2str's from being run everytime i compile after making any changes to src/hbdb.c? i thought maybe ccache would help but i'm having other problems w/ linking to gcc | ||
| cotto | soh_cah_toa, if you're having problem, pmc2c and c2str probably aren't causing them. Can you nopaste what you're seeing? | 02:00 | |
| dalek | rrot/tt2118/check_depend: 48355d8 | jkeenan++ | t/src/checkdepend.t: Add kludgey way of excluding file src/nci/extra_thunks from consideration by checkdepend.t. |
||
| soh_cah_toa | cotto: it's not really an error or anything. it's just that they're run when i don't want them to | 02:01 | |
| cotto | it's necessary to run c2str. I'm not seeing any pmcs being rebuilt. | 02:02 | |
| you can run make corevm to avoid much of the build | 02:03 | ||
| soh_cah_toa | it was when i ran 'make hbdb'. though i can't seem it replicate it now. oh well, i'll figure out how to some other time | 02:06 | |
| cotto | ok | 02:07 | |
| soh_cah_toa | about ccache though. i can't seem to find anything on the web about this. when i run 'sudo ln -s ccache /usr/bin/gcc' from within /usr/bin it complains that /usr/bin/gcc already exists which makes sense. did you get anything like this before? | 02:09 | |
| cotto | the arguments for ln can be confusing. Think of it like cp. | 02:10 | |
| source first, destination second | |||
| you want to do something like ln -s /usr/bin/ccache /usr/local/bin/gcc | |||
| soh_cah_toa | i know ln is a pain. that's weird b/c that's backwards from what the ccache manual said | 02:12 | |
| let me try though | |||
| cotto | orly? | 02:13 | |
| the ccache manual says the same thing | 02:14 | ||
| soh_cah_toa | oh wait. no it's not. you just add the full path for ccache. whoops | ||
| cotto | ccache.samba.org/manual.html | ||
| soh_cah_toa | yeah | ||
| cotto | there you go | ||
| soh_cah_toa | oh i see | ||
| i want the link in another directory in my $PATH. it's NOT the same one that gcc's in and it has to be before /usr/bin | |||
| that makes sense | 02:15 | ||
| cotto | /usr/local/bin should come before /usr/bin | ||
| soh_cah_toa | yeah, i get it know. it works | 02:16 | |
|
02:16
kid51 left
|
|||
| soh_cah_toa | i noticed that parrot_debugger calls 'readline_interactive' using pcc to get its command input. this seems kinda...out of the way...when a simple fgets() would suffice. is there any advantage to using it over fgets()? | 02:21 | |
| cotto | readline takes care of some nice things like history and potentially tab completion | 02:22 | |
| soh_cah_toa | ohhh.... | ||
| cotto | I'm not sure why pcc needs to be involved, but I also doubt it slows down the responsiveness of the debugger meaningfully. | ||
| you can achieve a similar effect for free by using rlwrap | 02:23 | ||
| soh_cah_toa | yeah | ||
| isn't that how you use "pir-things" from c code? pcc? specifically, Parrot_pcc_invoke_from_c_args() | 02:24 | ||
| cotto | yes | ||
| that's how you invoke a method defined in pir from c | 02:25 | ||
| soh_cah_toa | alright, so there's an easier way rather than using a filehandle pmc w/ pcc? | 02:26 | |
| cotto | you could call the readline function directly. I can't say offhand why the current debugger does it that way, but code reuse may have something to do with it. | 02:28 | |
| soh_cah_toa | directly? how? | ||
| cotto | same way you call any other C function | 02:29 | |
| soh_cah_toa | is there some Parrot_io_readline_interactive() function i don't know about? | ||
| cotto | I though we were use libreadline for some reason. | 02:31 | |
| I guess not. | |||
| actually, it's there | 02:32 | ||
| ah. It's only used by the filehandle pmc | 02:35 | ||
| soh_cah_toa | that's what i thought | ||
| so readline_interactive() uses gnu readline? that's how it's able to have history and stuff? | 02:37 | ||
| cotto | looks like it | ||
| soh_cah_toa | so then i could use libreadline if i wanted to. i remember someone telling me not to in the beginning b/c of dependency issues but looking through NEWS it looks like libreadline is supported anyway | 02:39 | |
| though right now i just need basic io first | |||
| cotto | soh_cah_toa, actually filehandle is pretty defensive about making readline an optional dependency | 02:40 | |
| It may be there but it's not guaranteed | |||
| soh_cah_toa | well, if readline_interactive() has history at least, that's good enough for me. anything else is just bells and whistles that i don't necessarily need right away | 02:43 | |
|
02:59
Khisanth left
|
|||
| tcurtis | soh_cah_toa: I believe it has history if readline is available at configure-time (and not explicitly disabled by the (I think) --without-readline option to configure). | 03:02 | |
| soh_cah_toa | tcurtis: i see. so gnu readline is a dependency but if it's not installed the build doesn't fail. you just don't get the nice things it provides for readline_interactive() | 03:03 | |
| cotto: btw, did you notice that "assignment discards qualifiers from pointer target type" warning when compiling? it's referring to the line: file = argv[argc - 1];. i thought it was ok to have expressions within brackets since c89? or maybe it's c99, now i'm not sure | 03:05 | ||
| cotto | soh_cah_toa, it's probably complaining about differing constness | 03:08 | |
| soh_cah_toa | cotto: you're right. if i change "file" to a const char * then declare and define it at the same time, it shuts up | 03:15 | |
| cotto | there you go | 03:16 | |
| somewhere, andy is happy | 03:17 | ||
| soh_cah_toa | andy...? lester? | ||
| cotto | soh_cah_toa, yeah | 03:18 | |
| he does a lot of consting | |||
| soh_cah_toa | ah yes. const-correctness is always good practice | ||
| yuck...except i hate assignments (except NULL's) at the top of a block though. i'll figure something out later | 03:19 | ||
| tcurtis | soh_cah_toa: you shouldn't have to assign it when you declare it. | 03:23 | |
| const char * isn't a const pointer. | |||
| soh_cah_toa | tcurtis: argv is const | ||
| tcurtis: i had to to correct some compiler error | |||
|
03:24
mtk left
|
|||
| tcurtis | soh_cah_toa: are the pointers const or are the pointed-to things const? | 03:24 | |
| I believe it is the latter. | |||
| soh_cah_toa | "const char *argv[]" and "char *file" | ||
| tcurtis | Change file to "const char *file" and assign to it whenever you want. | 03:25 | |
| soh_cah_toa | i need to assign it there though, right? | ||
| tcurtis | The pointer itself isn't const. | ||
| soh_cah_toa | hmm, you're right | 03:26 | |
| why did i think that? | |||
| tcurtis | Because it's slightly confusing. | ||
| soh_cah_toa | too much java programming w/ final | ||
| tcurtis | I think char const * is also pointer to const char rather than const pointer to char, which is even more confusing. | 03:27 | |
| soh_cah_toa | yes | ||
| const pointer to char = char * const foo; | |||
| tcurtis | Oh well. I suppose that's far from the worst thing about C type syntax. | 03:29 | |
|
03:32
mtk joined
|
|||
| soh_cah_toa | true. i've grown to like c's little quirks somehow. in a weird way... ;) | 03:45 | |
| cotto | Stockholm syndrome | ||
| soh_cah_toa | hey, c does not have me hostage ;) | 03:47 | |
| cotto | That's the Stockholm syndrome at work. | ||
| tcurtis has also experienced this feeling regarding C. | 03:49 | ||
| soh_cah_toa | ha! actually, maybe it does have me hostage a little bit. | ||
| tcurtis also regularly makes plans to make a low-level language with S-expression syntax in order to not have to write C, but usually gets stuck on formatting type declarations. | 03:50 | ||
| sorear | C is a nice little language. it could be improved, but "the good is the enemy of the best" | ||
| tcurtis: that problem has already been solved | |||
| tcurtis: google "BitC" | 03:51 | ||
| soh_cah_toa | no, ddg "BitC" | ||
| i've fallen in love w/ ddg | |||
| cotto | ddg is pretty great | 03:53 | |
| tcurtis | sorear: ah, yes, I've been meaning to try BitC. | 03:55 | |
| cotto | allison, ping | 03:58 | |
|
04:01
bubaflub left
|
|||
| Tene | BitC seems to be a lot more than just that | 04:06 | |
| sorear, tcurtis: also, "Please Note: BitC has just made a transition from a LISP-like (s-expression) syntax to a more conventional syntax. The specification and the web site haven't caught up yet, and of course some of the published papers predate the change. " | 04:07 | ||
| sorear | oh well. | 04:08 | |
| when I first looked at it 2003-2005ish, it seemed to be mostly s-expression C | |||
| cotto | never a dull moment | ||
|
04:11
LordBrain joined,
mikehh_ is now known as mikehh
|
|||
| tcurtis | Tene: true, but it also appears at a glance to be a low-level language with a powerful type system that isn't a theorem prover, which is also something I've been looking for. | 04:12 | |
| sorear | TALs are fun | 04:13 | |
| tcurtis | well, actually, it does look like it has some support for verification, but it's at least less intimidating than ATS. | ||
| Tene | tcurtis: Sure, it's interesting, just a different sort | ||
| mikehh | opbots, names | 04:14 | |
| LordBrain | does parrot support lazy data structures directly? or do the lazy languages which compile to parrot have to do that work on their own? I have a feeling that if laziness has to go thru more layers of translation it might have an artificial disadvantage. | 04:25 | |
| hmmm maybe i haven't thought this out enough. | 04:26 | ||
|
04:30
soh_cah_toa left
04:46
silug left
|
|||
| allison | cotto: pong | 04:55 | |
| cotto | allison, what kind of papers do you look for when researching calling conventions? I'm trying to figure out where to start. | 04:56 | |
| allison | cotto: I tend to go for broadly relevant search terms, and then filter with human sense | 04:57 | |
| Util | LordBrain: Parrot directly supports Continuations, which are important to many sorts of lazyness, but does not (I think) provide any lazy DS. I suppose you could write a Dynamic PMC. If you named a particular lazy DS, we could reply more precisely. | 04:58 | |
| dalek | rrot: 36907a0 | petdance++ | t/steps/auto/ (2 files): removed unused File::Spec |
04:59 | |
| rrot: adcd580 | petdance++ | / (9 files): removed unnecessary "use File::Spec" |
|||
| allison | cotto: the tricky thing is that Parrot is fundamentally different that most existing approaches | ||
| s/that/than/ | |||
| cotto | and M0 is fundamentally different from Parrot's previous approach | 05:00 | |
| allison | aye | ||
| but, general techniques still apply | |||
| cotto | sure. It's not moon magic. | 05:01 | |
| allison | and, things like PIC and JIT will be relevant | ||
| cotto | What about VM calling conventions? | 05:04 | |
| allison | I mean PIC and JIT will be relevant to the calling conventions | 05:05 | |
| cotto | ok | ||
|
05:05
klavs joined
|
|||
| allison | that is, our choice of calling conventions affects how easy (or even possible) it is to use optimization techniques like PIC/JIT | 05:06 | |
| or to efficiently do multiple dispatch | |||
| do you remember the guy we met last year when we had a parrot meeting with jim keenan? working in efficient multiple-dispatch? | 05:07 | ||
| I'm trying to remember the name of his project | |||
| cotto | was he the one who recommended the prototypes with multiple dispatch paper? | ||
| allison | I think so, yes | 05:08 | |
| papers I can hand you later | 05:09 | ||
| but, on general history | |||
| Parrot has been through several phases in calling conventions | |||
| cotto | Getting something working is my current priority now, but getting something that *can* be efficient is next on the list. | ||
| allison | from "just stuff it in a register" | 05:10 | |
| to stuff it in a limited range of registers | |||
| to stuff it in registers with overflow in a PMC | |||
| to what was meant to be an elegant solution where no copies were made and callee just pulled values from caller | 05:11 | ||
| (but actually turned out to be a horrible mess because there were several different ways that callers could pass arguments to callees) | |||
| cotto | This is highly relevant. | 05:12 | |
| thanks | |||
| allison | (and we ended up passing partially consumed varargs around through nasty waves of code) | ||
| and in reaction to that mess, we moved on to the current strategy, with a single standard "intermediate storage" location for arguments | 05:13 | ||
| so that caller only has to know how to store things in the standard form | 05:14 | ||
|
05:14
klavs left
|
|||
| allison | and callee only has to know how to retrieve things from the standard form | 05:14 | |
| the problem being, that the standard form is GC-able | |||
| and so, puts more pressure on the already stressed GC | |||
| cotto | and here we are | 05:16 | |
| allison | it could be possible to alleviate that by making the intermediate storage a special "short-lived" GC-able like we talked about for contexts | ||
| or, by actually making it the context | 05:17 | ||
| either, caller creates the context and directly stores the arguments in registers | |||
| or, context has some additional "argument" storage | |||
| having the caller take responsibility for setting up the context and arguments and things is problematic though, because it doesn't allow for variation | 05:18 | ||
| Like, if the caller always creates a context, what about an NCI call, where you don't actually want to do anything but pass arguments along to a C function? | 05:19 | ||
| cotto | It'll be much easier to make the callee do the work once I understand the work that needs to be done. | ||
| allison | In Parrot at the moment, it's a lot of work, but it doesn't have to be | 05:20 | |
| (okay, less work that before the last refactor, but still too much) | 05:21 | ||
| cotto: what's the absolute smallest amount of work you can get away with and still have M0 pass arguments and execute the function? | 05:22 | ||
| cotto | allison, with or without creating a new call frame? | 05:23 | |
| Actually, without doesn't make too much sense. | |||
| With is what I'm finding out now. So far it involves allocating, initializing and activating a call frame, then activating the parent call frame when control flow returns to the chunk. | 05:25 | ||
| This assumes that the callee will know how to pick arguments out of the parent call frame. | |||
|
05:27
mikehh left
|
|||
| allison | the trickiest bit there was calling from C into Parrot | 05:27 | |
| because the C args are passed differently, and don't exist in a parent context | |||
| (that was where the partially consumed varargs came from) | 05:28 | ||
| it's possible to get around it by creating a dummy parent context and stuffing the args there, though | |||
| cotto | That sounds like a minimally unnatural solution. | 05:29 | |
| allison | hmmm... actually M0 may remove the two major pain points here | ||
| since, the intention is to have everything but the lowest level written in itself | |||
| cotto | yes | 05:30 | |
| eventually | |||
| allison | we don't have so much crossing back-and-forth across the C and Parrot level | ||
| cotto | That's one of the big selling points. | ||
| allison | so, the greatest pain of direct parent access is calling from or to C | 05:31 | |
| (basically, the problems we encountered trying out this approach before may not apply) | 05:32 | ||
| and, the advantage of leaving the arguments parent-side, is that it requires absolutely no work | |||
| cotto: my brain is fried and got to be up at 6am for conference calls | 05:37 | ||
|
05:37
mikehh joined
|
|||
| cotto | allison, ok. Thanks for the perspective. | 05:38 | |
| 'night | |||
| allison | cotto: are you keeping a wiki page of the ideas? | ||
| cotto: like, what got you thinking about caller-side? | |||
| cotto: or, a blog of running thoughts? | |||
| cotto | allison, I'm trying to write up a test in the m0-prototype branch. no more formal thoughts though | 05:39 | |
| allison | cotto: that's a good approach | 05:40 | |
| 'night | |||
|
05:45
theory joined
|
|||
| benabik | Huh. nqp-rx doesn't like POST::Sub.new( multi => $multi ) | 05:50 | |
| Ah, but :multi($multi) works. | 05:54 | ||
| cotto | nqp lives up to its name | 06:00 | |
| or family name, as it were | |||
| benabik | I hadn't realized NQP had the :name($val) syntax for some reason. | 06:02 | |
|
06:05
klavs joined
06:06
klavs left
|
|||
| dalek | rrot/m0-prototype: ae9273a | cotto++ | / (4 files): initial attempt at a calling conventions test It doesn't run correctly yet but it tries really hard. It does assemble, which is progress. |
06:22 | |
| cotto | msg klavs If you think you'll eventually want a commit bit, you should sign and send in a CLA ( www.parrot.org/sites/www.parrot.org...ot_cla.pdf ). Your contributions will still be welcome if you don't, but it's a requisite for direct commit access on github. | 06:25 | |
| aloha | OK. I'll deliver the message. | ||
| dalek | rrot/m0-spec: 62c85d9 | cotto++ | docs/pdds/draft/pdd32_m0.pod: make a few changes to allow implementing CPS with call frames |
06:26 | |
| cotto | sleep | ||
|
06:41
silug joined
06:55
theory left
07:16
jtpalmer_ left
07:18
jtpalmer joined
07:25
jtpalmer left,
mj41 joined
07:29
klavs joined
07:31
jtpalmer joined
07:47
klavs left
08:12
dod joined
08:13
klavs joined
09:12
klavs left,
particle1 joined
09:16
particle left
09:40
fperrad joined
09:48
klavs joined
10:00
nopaste left
10:06
nopaste joined
10:13
woosley left
10:30
klavs left
10:35
JimmyZ joined
10:42
ambs joined
11:13
mtk left
11:14
klavs joined
11:20
mtk joined
11:22
woosley joined
11:28
klavs left
11:29
klavs joined,
arnsholt left,
arnsholt joined
11:37
woosley left
11:38
dod left,
klavs left
11:41
klavs joined
11:43
dod joined
11:44
ambs left
11:45
ambs joined
11:49
dmalcolm joined
12:05
whiteknight joined
|
|||
| whiteknight | good morning, #parrot | 12:11 | |
| ls | 12:15 | ||
| fail | |||
| atrodo | ENOTYOURTTY | ||
| whiteknight | ETOOEARLYINTHEMORNING | 12:20 | |
| I use the same color scheme for my terminal and my IRC client, so my poor brain gets confused | 12:21 | ||
|
12:31
LordBrain left
12:34
contingencyplan left
12:35
contingencyplan joined
12:41
smash joined
|
|||
| smash | hello everyone | 12:42 | |
| whiteknight | good morning, smash | 12:45 | |
|
13:14
klavs left
13:16
bubaflub joined
13:17
particle1 is now known as particle
13:28
dmalcolm left
13:35
klavs joined
13:40
jsut left
13:48
hercynium joined
13:51
klavs left,
klavs joined
14:15
redicaps joined
14:20
theory joined
|
|||
| dalek | nxed: r1047 | NotFound++ | trunk/winxed (2 files): write to output instead of using an intermediate StringHandle in the non- This way it uses a lot less memory and bootstrap can be done again in less powered systems. |
14:24 | |
|
14:27
theory left
14:41
theory joined
14:42
jsut joined
|
|||
| benabik | morning | 14:45 | |
| whiteknight | hello benabik | 14:47 | |
|
14:48
mtk left
14:53
mtk joined
|
|||
| whiteknight | www.johndcook.com/stand_alone_code.html | 14:56 | |
|
15:04
theory left
|
|||
| cotto | princess doamba needs my help | 15:11 | |
| If Super Mario Bros. has taught me anything, it's that helping princesses is always a good idea. | 15:12 | ||
|
15:12
particle1 joined
|
|||
| whiteknight | and that no matter how hard you try, she's always chillin' in another castle | 15:16 | |
|
15:16
particle left,
dmalcolm joined
|
|||
| whiteknight | why does Koopa have so many castles? And what happens to them all when the housing market goes down, and the mortgages are all underwater? | 15:18 | |
| If he's got enough money to build, stock, staff, and operate all those castles, what does he need a princess for? | |||
| I think she only has one castle | 15:19 | ||
| NotFound | whiteknight: public relations. Look at Monaco. | ||
| whiteknight | :) | ||
| cotto | You can never have enough castles. When you're at zero you think one would be really great, but once you get it that other castle down the street starts to look really good. | 15:20 | |
| It's a vicious cycle. | |||
| Cool news: the people behind The Architecture of Open Source Applications ( www.aosabook.org/en/index.html ) are producing a second volume with a chapter about Parrot. | 15:26 | ||
| dayjob time | 15:27 | ||
|
15:35
particle1 is now known as particle
|
|||
| whiteknight | oh, so the sequel is about what not to do? | 15:45 | |
| :) no, we do have some good architectural ideas | 15:46 | ||
| benabik | Design good, implementation bad? | 15:47 | |
| Or perhaps, "pretty architecture, but are you sure a single 2x4 can hold up the entire second floor"? ;-) | 15:48 | ||
| whiteknight | the overall design of parrot has always been good: modular architecture, pluggable components, subclassibility, leave the details to the HLL | 15:50 | |
| those are all good things | |||
| we have good separation of subsystems, usually encapsulated through PMC wrappers or similar | |||
| benabik | We just want to take certain subsystems out back and put them out of our misery. IMCC-- | 15:51 | |
| (Just hit a subtle bug in something I wrote and get to rely on imcc--'s line numbers again...0 | 15:52 | ||
| aloha, karma imcc | 15:55 | ||
| aloha | benabik: imcc has karma of -17. | ||
| cotto_work | I found a use for pasm. | 15:56 | |
| Its syntax highlighting works nicely for M0. | |||
| whiteknight | yay! our cruft is being useful | ||
| benabik: in many cases, the architecture theory is much better than the architecture practice | |||
| IMCC was an error of convenience. It's current state was not the plan | 15:57 | ||
| actually its current state, architecturally speaking, is not so bad. It's much better encapsulated than it ever used to be | |||
| NotFound | If the architecture was worse, you can't know that the badness lies on imcc ;) | ||
| benabik | NotFound: TochƩ | ||
| NotFound: Er, touchƩ, even | 15:58 | ||
|
16:00
redicaps left
16:08
dod left
16:21
bubaflub left
16:25
mj41 left
|
|||
| dukeleto | ~~ | 16:26 | |
| incoming | 16:30 | ||
| cotto_work | oh noes | ||
| where's my umbrella | |||
| dalek | rrot/m0-prototype: 060b494 | dukeleto++ | t/m0/m0_assembler.t: Make a test diagnostic message more useful |
16:32 | |
| rrot/m0-prototype: 4eff688 | dukeleto++ | t/m0/m0_assembler.t: Add coverage for command line argument to m0 assembler |
|||
| rrot/m0-prototype: 19c59c3 | dukeleto++ | t/m0/ (2 files): Add coverage for detecting invalid M0 symbolic register names |
|||
| rrot/m0-prototype: 644daa0 | dukeleto++ | t/m0/ (2 files): Add more coverage for detecting invalid registers |
|||
| rrot/m0-prototype: e9e48dc | dukeleto++ | t/m0/ (2 files): Add coverage for a goto with an invalid label |
|||
| rrot/m0-prototype: 89fa31c | dukeleto++ | t/m0/ (2 files): Add test coverage for invalid opcode detection |
|||
| dukeleto | those commits were from 30,000 ft | ||
| whiteknight | awesome | 16:37 | |
| cotto_work | dukeleto: there's some breakage because I'm trying to get a minimal calling conventions example working in t/m0/integration/m0_poke_caller.m0 . My plan is to fix everything else once that test works. | 16:38 | |
|
16:40
particle1 joined
16:42
dodathome joined,
bubaflub joined
|
|||
| cotto_work | dukeleto: be careful with that file. atm it seems to quickly eat all available memory. | 16:42 | |
|
16:43
particle left
16:47
JimmyZ left
|
|||
| cotto_work | dukeleto: how would I make a warning like 'Use of reference "ARRAY(0x88c08f8)" as array index at src/m0/perl5/m0_interp.pl line 445.' fatal? | 16:47 | |
| dukeleto | cotto_work: hmm | 16:48 | |
|
16:48
lucian joined
|
|||
| dukeleto | cotto_work: use warnings FATAL => qw( all ); | 16:49 | |
| cotto_work: also, we may want to use search.cpan.org/~adamk/Test-NoWarni...arnings.pm | |||
| cotto_work | dukeleto: thanks | 16:50 | |
| dukeleto++ | |||
| lucian | uh, 'morning | ||
| cotto_work | If that happens in the M0 interp, it's probably a good indicator that something's wrong. | 16:51 | |
|
16:52
particle1 is now known as particle
|
|||
| whiteknight | good morning, lucian | 16:54 | |
| lucian | whiteknight: it is 5:54 pm, so assign appropriate amounts of salt | ||
| whiteknight | 5:54 am? | 16:56 | |
| seen rohit_nsit08 | 16:57 | ||
| aloha | rohit_nsit08 was last seen in #parrot 2 days 2 hours ago saying "Coke_: hello". | ||
| lucian | whiteknight: pm | 17:00 | |
|
17:00
davidfetter joined
17:08
mj41 joined
|
|||
| whiteknight | 5:54 is my least favorite of all the 5:5x minutes | 17:12 | |
| dalek | rrot: a8eb161 | dukeleto++ | t/ (2 files): Merge pull request #135 from ligne/nci-errors avoid NCI-related test failures. |
||
| dukeleto | msg kid51 why are you asking for patches attached to trac tickets when you have a merge button in front of you? | 17:13 | |
| aloha | OK. I'll deliver the message. | ||
| whiteknight | probably for local testing | ||
| merge button doesn't test locally | |||
| dalek | rrot: e9b3e89 | jkeenan++ | lib/Parrot/SHA1.pm: [codingstd] Correct misformulation of copyright line; keep test happy. |
17:14 | |
| rrot: e161100 | jkeenan++ | t/ (2 files): Merge branch 'master' of git@github.com:parrot/parrot |
|||
| dukeleto | whiteknight: that is a reasonable reason. I guess I am not reasonable. | 17:16 | |
| lucian | bah, parrot appears to have a mind of its own | 17:17 | |
| whiteknight | lucian: lolwat? | ||
| s/a mind of its own/a bug somewhere/ | |||
| lucian | whiteknight: i think attribute caching is messing me up | 17:18 | |
| whiteknight | that's entirely likely | ||
| lucian | it is deterministic at least, i guess | ||
| whiteknight | those caches are nothing but trouble | ||
| lucian | the cache itself appears to work correctly | ||
| but my __getattribute__ doesn't appear to work correctly at all | |||
| whiteknight | yes, but it would be nice to clear them or turn them off or something | ||
| lucian | yes, for testing | 17:19 | |
| whiteknight | our magical future 6model-based object system will have the ability to avoid caches entirely if you want | ||
| lucian | yes, of course. i'll see to that | ||
| whiteknight | The more I think about 6model, the more I don't understand how we've lived so long without it | 17:20 | |
| or something like it | |||
| jnthn__ | Avoiding caches is easy. You don't publish one. | ||
| ;) | |||
| lucian | whiteknight: well, i don't quite understand why something similar isn't already in | ||
| whiteknight | backwards compatibility. Deprecation policy. | 17:21 | |
| lucian | i'm not criticising, just surprised. implementing dynamic objects over static ones is established science | ||
| whiteknight | The sheer number of broken features for which we have test coverage | ||
| or the number of bugs on which our HLLs depend, knowingly or unknowingly | |||
|
17:21
rohit_nsit08 joined
|
|||
| rohit_nsit08 | hello #parrot | 17:21 | |
| whiteknight | hello rohit_nsit08 | 17:22 | |
| rohit_nsit08 | whiteknight: hi | ||
| whiteknight | rohit_nsit08: what time do you normal have meetings with coke? I'm being your mentor today | ||
| at least for the meeting | |||
| rohit_nsit08 | whiteknight: we prefer contacting by mails as the work hours are not very common between us | 17:23 | |
| gmail chat also sometimes | |||
| whiteknight | rohit_nsit08: okay. Meeting now? | 17:24 | |
| rohit_nsit08 | didn't had many meetings though, I was getting into cafe's parser code and code generator , the lack of documentation is posing some minor problems | ||
| whiteknight | anything I can help with? | ||
| rohit_nsit08 | ya, I was having some design problem, how should I prepare the base for code generator , I mean the steps needed to ensure less problems later | 17:25 | |
| I went through winxed's code as it is quite familiar to javascript to some respect for this | 17:26 | ||
| It helped | |||
| in getting how to set up it on parrot vm | |||
| dukeleto | rohit_nsit08: have you blogged recently? | 17:27 | |
| rohit_nsit08 | i'm currently trying to implement support for basic features this week and try object and functions in next week | ||
| dalek | TT #2129 created by ligne++: pbc_to_exe: missing runtime dependency | 17:28 | |
| TT #2129: trac.parrot.org/parrot/ticket/2129 | |||
| TT #935 closed by dukeleto++: PASM and PBC exit codes not correctly detected by Parrot::Test | |||
| TT #935: trac.parrot.org/parrot/ticket/935 | |||
| rohit_nsit08 | dukeleto: hi, ya I did it on my blog | ||
| dukeleto | rohit_nsit08: can you send emails to parrot-dev when you post a gsoc blog post? That would help us keep track of it | 17:29 | |
| rohit_nsit08 | dukeleto: doing it on parrot now, my internet connection is facing some, problem so using friends system | ||
| dukeleto | rohit_nsit08: also, are you on planet parrot? planet.parrotcode.org | ||
| rohit_nsit08: ok | |||
| rohit_nsit08 | dukeleto:ya , I'll pos on developer list regularly from now, It took some time to get back into the code after exam break :-) | 17:30 | |
| dukeleto: won't be a problem from now | 17:33 | ||
|
17:37
rohit_nsit08 left
|
|||
| benabik | Okay. I'm missing something: `my $islexical := $node.lexical(); if $islexical { ... }` The `...` code never gets run. | 17:42 | |
| whiteknight | is the node thingy a lexical? | 17:44 | |
| benabik | It is sometimes. | ||
| Original code was `.local int islexical ; islexical = node.'lexical'() ; unless islexical goto outer_done` | |||
| But it's never running even for the lexical blocks. | 17:45 | ||
| whiteknight | combine that down: "if $node.lexical { ... }" | ||
| maybe somethign is getting messed up in the assignment | |||
| benabik | the value gets used later. | ||
| But good idea. | |||
| whiteknight | ALL MY IDEAS ARE GOOD | ||
| well, at least a few of them | 17:46 | ||
| atrodo | whiteknight++ | ||
| whiteknight | NQP uses binding, not assignment for := | ||
| so if the variable that $lexical is bound to changes, $lexical changes | |||
| if you suspect that's an issue, you could do something like "my $lexical := pir::clone__PP($node.lexical);" | 17:47 | ||
| benabik | whiteknight: It's binding to the return value of a function, not another variable. | ||
| whiteknight | benabik: and what is that function returning, a reference to an attribute on $node? | 17:48 | |
| all that it "returns" is a pointer to an object. $lexical becomes the same pointer | |||
| so if the value of the attribute or whatever changes, $lexical might change too | |||
| benabik | whiteknight: It's somewhat close to $node{'lexical'}. | 17:49 | |
| whiteknight: And I don't think it's changing out from under me. | |||
| whiteknight | okay, so that's all that matters | ||
| do a "pir::say($lexical)" in there to see what it really thinks it is | 17:50 | ||
| if you see non-false things, you know there's a problem with $lexical or the condition | |||
| if you see only falsey things, you have a problem in $node.lexical() | |||
| benabik | 111111111001101111011... | 17:51 | |
| whiteknight | okay | ||
| so then we have entered the twilight zone | |||
| benabik | Excellent! Confusion is spread. | ||
| Okay, it is entering the block. Crud. The code in there just isn't working? Time to dig more. | 17:52 | ||
|
17:53
rohit_nsit08 joined
|
|||
| whiteknight | okay, that's slightly less bad | 17:53 | |
| brb walk | |||
| benabik | ... It's initializing all the variables at the top of the block so `my $old := $*VAR; my $var := $new' puts an Undef in $old. :-( | 17:55 | |
| That's the issue. | 17:56 | ||
| Sorry `my $old := $*VAR; my $*VAR := $new` | |||
| whiteknight | weird | 18:07 | |
| sorear | yeah, that doesn't work. | 18:08 | |
| whiteknight | it probably tries to autovivify $*VAR by putting undef into it? | 18:09 | |
| I don't see why that wouldn't work otherwise | |||
| benabik | whiteknight: Exactly. And it does it at the beginning of the block instead of at the my decl | ||
| whiteknight | wonderful | 18:12 | |
| i loves me some autovivification | |||
| dukeleto | we should do something with Parrot+IPv6 for world ipv6 day | 18:18 | |
| davidfetter | .oO(PL/TCP) |
18:20 | |
| whiteknight | when is ipv6 day? | 18:21 | |
| benabik | Huh. Awesome. $*SUB not found. Gaarg | ||
|
18:29
lucian left
18:32
lucian joined
|
|||
| dalek | website: rohit_nsit08++ | CorellaScript: Parsing JavaScript | 18:42 | |
| website: www.parrot.org/content/corellascrip...javascript | |||
| rohit_nsit08 | dalek: thanks, I have given the link to main post in this one. | 18:45 | |
| whiteknight | rohit_nsit08++ | 18:47 | |
| bubaflub | rohit_nsit08++ - i was wondering how your project was going | 18:50 | |
| rohit_nsit08 | bubaflub: hi | 18:56 | |
| bubaflub | rohit_nsit08: done with all your exams? | 18:57 | |
| rohit_nsit08 | bubaflub: yup. hmm... was waiting for something better result , so couldn't post frequently | 18:59 | |
| had to revise earlier work as well | |||
| I hate exams in between work :-) | |||
| bubaflub | rohit_nsit08: i hear ya. glad to see you blogging and coding. | ||
| rohit_nsit08 | bubaflub: I was referring to dragon book for code generator but don't think that will be enough. any suggestion? | 19:00 | |
| benabik | sorear: If `my $old := $*VAR; my $*VAR := $new` doesn't work, do you know a way to get the old value of a contextual while declaring a new one? | ||
|
19:00
lucian left
|
|||
| bubaflub | rohit_nsit08: hmmmm... not totally sure. i've read through the ANTLR book (pragprog.com/titles/tpantlr/the-def...reference) though that is specific to ANTLR compiler generator | 19:01 | |
|
19:01
lucian joined
|
|||
| rohit_nsit08 | bubaflub: thanks, I'll have look into it. | 19:03 | |
| bubaflub: so how is your project going ? | |||
| bubaflub | rohit_nsit08: i'm sure others here will have some suggestions. you could send an email to parrot-dev to ask. | ||
| rohit_nsit08: good! so far most of the code and the docs are generated. | |||
| rohit_nsit08 | I'm writing a mail to _Coke regarding it | ||
| bubaflub: awesome! | 19:04 | ||
| bubaflub: using any tool for documentation? | 19:05 | ||
| bubaflub | rohit_nsit08: yep, i'll need some more in depth documentation and a test suite, but it's looking good so far. | ||
| lucian | bubaflub: cool | ||
| i'm stalled | |||
| bubaflub | rohit_nsit08: i'm using POD, which are just specially formatted comments. i'll also have stand alone docs like README and INSTALL and what not. | 19:06 | |
| lucian: bummer. stuck on Winxed stuff? | |||
| lucian | bubaflub: i don't really know. i have some mysterious bugs, that may be parrot bugs | 19:07 | |
| whiteknight | lucian doesn't get stuck. He mercifully lets the code rest between beatings | ||
| rohit_nsit08 | bubaflub: ya, I have option of using available documentation generators for javascript, seems good on tests. | 19:08 | |
| bubaflub | rohit_nsit08: i'd recommend using whatever is used in JavaScript - makes it easier for other JS devs to use it | ||
| lucian | whiteknight: heh. torturing code is an interesting concept | 19:09 | |
| benabik | I'm just getting tortured by code. | ||
| rohit_nsit08 | bubaflub: that's true :-) | ||
|
19:09
SteveH joined
|
|||
| tcurtis | ~~ | 19:10 | |
|
19:15
SteveH left
|
|||
| whiteknight | hello tcurtis | 19:15 | |
| how goes the project? | |||
|
19:18
mj41 left
|
|||
| tcurtis | whiteknight: Slow going these last couple of weeks due to finals, but the last of those is tomorrow. | 19:19 | |
| whiteknight | awesome. Finals are such a bummer | ||
| tadzik | finals are paradise | 19:21 | |
| 3 finals in one week? Phew. And 3 attempts on each one. Paradise | |||
| dukeleto | ~~ | ||
| whiteknight | 3 attempts? wtf? | ||
| tadzik | I have 2 exams tomorrow and 4 on friday, 3 of them are deadly | ||
| twice in June, last one in September :) | |||
| dukeleto | msg allison i have time to talk about m0 stuff today | ||
| aloha | OK. I'll deliver the message. | ||
| tcurtis | whiteknight: Does Rosella have anything for providing a read-only view on an array? | 19:22 | |
| cotto_work | #ps in 67 | 19:23 | |
| allison | dukeleto: you catch the backscroll from cotto and I last night? | ||
| dukeleto: a little on calling conventions | 19:24 | ||
| cotto_work | dukeleto: +1. good stuff | ||
| dalek | website: benabik++ | GSoC 3: My God, It's Full of Goto | ||
| website: www.parrot.org/content/gsoc-3-my-go...-full-goto | |||
| whiteknight | tcurtis: not specifically. Easy enough to add | 19:26 | |
| cotto_work | whiteknight: you might be interested too. irclog.perlgeek.de/parrot/2011-06-07#i_3873547 | 19:27 | |
| whiteknight | cotto_work: I'm always interested | ||
| cotto_work | time for noms | 19:28 | |
| atrodo | allison, cotto> am I off base in thinking that having an explicit "this is another argument" opcode would be of benefit for jit? | 19:29 | |
| allison | hmmm... well for a JIT you want a prebaked list of parameters at compile time | 19:30 | |
| translating from runtime opcodes to compile-time parameters can be tricky | 19:31 | ||
| (we did have "add an argument" opcodes in one incarnation of Parrot) | |||
| having a single opcode of a complete list of arguments with argument signature is easier to chew up and JIT | 19:32 | ||
| dukeleto | allison: i will backlog | ||
| whiteknight | I want to get back to the "add an argument" opcodes | ||
| allison | whiteknight: they were expensive | 19:33 | |
| whiteknight | the single set_params opcode and its family are horrible | ||
| allison: I suspect things will be a little different now with current PCC. With specialized ops, we aren't building GCable signature PMCs anymore | |||
| fill_params calls vtable ops on the CallContext internally. that's no more expensive than a push or pop operation on the CallContext | 19:34 | ||
| allison: whiteknight.github.com/2011/05/12/p...mings.html | |||
| (I have data to support the idea) | |||
| allison | whiteknight: yah, but "add an op" isn't only expensive because of the storage, it's also expensive because you have to perform the same operation multiple times, instead of doing it once | ||
| with no opportunity for optimization | |||
| atrodo | allison> i'm having trouble wrapping my head around m0 would work | 19:35 | |
| allison | atrodo: there are several options for M0, no final answer yet | ||
| whiteknight | There are plenty of opportunities for optimization if we can reuse CallContexts in hotpaths | 19:36 | |
| or preconstruct parts of them and store the CallContext in the constants table, instead of an encoded signature array | |||
| atrodo | allison> example? I guess I've got the mental barrier of how a 3 arg opcode can list all the arguments and a signature | ||
| dukeleto has backlogged | 19:37 | ||
| allison | most simplistic is 1 arg as signature, 1 arg as an aggregate of args | 19:38 | |
| but, that's assuming you need any opcode for signatures and args at all | |||
| M0 is very, very basic | |||
| the most fundamental level | 19:39 | ||
| so, really all you have is "invoke" | |||
|
19:39
bluescreen joined
|
|||
| allison | and all argument handling is done in regular standard opcodes for creating objects, setting/getting arguments, and calling methods | 19:40 | |
| actually, you might not even have invoke | |||
| (as an opcode) | |||
| because that can be a method or vtable function | |||
| (there's not really much difference between method and vtable function at that level) | 19:41 | ||
|
19:41
theory joined,
theory left,
theory joined
|
|||
| tcurtis | allison: How do you call a method without invoke? | 19:42 | |
|
19:42
ambs_ joined
19:43
ambs left
|
|||
| allison | tcurtis: it's turtles all the way down :) | 19:43 | |
|
19:43
ambs_ is now known as ambs
|
|||
| whiteknight | tcurtis: same way the machine does: goto | 19:43 | |
| atrodo | I assume abuse of goto is involved | ||
| allison | atrodo: it's not abuse at the machine code level, that's just how control flow is done | ||
| atrodo: our fancy subroutines, and if blocks and for loops are just abstractions over goto | 19:44 | ||
| NotFound | Oh, I got it, "basic" ----> GOTO | ||
| allison | atrodo: now, it's nice to protect the programmer from goto, but M0 isn't at the programmer level | 19:45 | |
| atrodo: it's the implemention *behind* what the programmer sees | |||
| NotFound | The next level will have GOSUB. | ||
|
19:46
ambs_ joined
|
|||
| allison | whiteknight: I like the pcc refactor work. I think we can make much deeper improvements in M0, when we aren't trying to fit in with current dispatch. | 19:47 | |
| atrodo | allison> true, although I had hoped that m0 would provide more magic than just goto | ||
|
19:47
ambs left,
ambs_ is now known as ambs
|
|||
| benabik | atrodo: M0 = no magic :-D | 19:48 | |
| whiteknight | allison: Sure. I'm certain the M0 mechanisms and optimizations will be different from PIR | ||
| allison | whiteknight: that was one of my frustrations in the earlier calling conventions refactors, being hamstrung by existing code. | ||
| whiteknight | at the PIR level, we can get rid of set_params and friends for a net performance win at the PIR level. | ||
| NotFound | atrodo: assemblers can provide some magic, not but the machine code it assembles to. | ||
| allison | atrodo: magic comes in at M1 and higher | ||
| atrodo | i knew magic was the wrong word to use | ||
| NotFound | s/not but/but not | ||
| allison | atrodo: mmm... I think magic fits | 19:49 | |
| atrodo: by whatever name, M0 doesn't do much, which is intentional | |||
| atrodo | but to me, the concept of a function, arguments and invokable is a low level concept appropriate for m0 | 19:50 | |
| allison | whiteknight: I'd be curious to see tests on the same refactors using NCI, etc | 19:51 | |
| lucian | magic is a common word for abstraction | ||
| allison | whiteknight: a lot of the complexity in the current dispatch is precisely because we don't make all calls from PIR->PIR | ||
| whiteknight | allison: Yes, that would be a good set of tests to run. I suspect at the very least the speed does not decrease. NCI still builds CallContexts | 19:52 | |
| NotFound | In most machines codes a function call is push something to stack + goto, calling conventions are... conventions. | ||
| allison | whiteknight: and a lot of assumptions that work fine for PIR->PIR just don't work in Parrot | ||
| whiteknight | yeah, but that's the beauty of CallContext: It doesn't matter what puts stuff into it, only that the stuff ends up in it | ||
|
19:52
ambs left
|
|||
| whiteknight | and if we can make it faster to put stuff into a CallContext, it's a win for all recipients | 19:52 | |
| allison | That's for C->PIR, but there's also PIR->C | 19:53 | |
| and C->C | |||
| atrodo | lucian> but using the word magic invoked a reaction about the word, not necessarily what i was trying to express | ||
| whiteknight | allison: is same. PIR->C sstill builds a CallContext. The way the CallContext is decoded by NCI is a little different, but not by much | ||
| allison | whiteknight: yah, we regularized a lot in the last refactor | 19:54 | |
| lucian | atrodo: sure, it's a controversial term. ruby people have this annoying tendency to overuse it | ||
| NotFound | atrodo: you can call it midiclorians if you prefer. | ||
| whiteknight | allison: right. It's time we start leveraging those wonderful refactors | ||
| because we aren't utilizing them at all now for the optimization potential | |||
| allison | whiteknight: I'm not sure asking embedders to directly unpack a CallContext is the right answer | 19:56 | |
| whiteknight: it's a pretty unfriendly interface | |||
| whiteknight | allison: No need. We still have the C API functions for it and the embedders can still use those functions as-is | ||
| We don't need to refactor all parts, just change the way PIR puts things into a CallContext, and the way PIR takes things out of it | 19:57 | ||
| the C side doesn't change one iota | |||
| code generators like pmc2c can also do a lot to hide changing interfaces from most embedders | |||
|
19:58
preflex left
|
|||
| NotFound | Please don't reinvent XSub tools. | 19:58 | |
| whiteknight | and at the PIR level, the ".param" syntax will just unpack to a different sequence of PASM instructions, so that's transparent | ||
| sugared method and function calls too | |||
| one of the very few times when I am going to express happiness about PIR syntax sugar | 19:59 | ||
|
20:00
preflex joined
|
|||
| allison | whiteknight: I guess I probably can't really comment without looking at the code | 20:01 | |
| whiteknight: will leave that to cotto (wish I had time) | |||
| benabik | I really need a solution to `my $old := $*VAR ; my $*VAR := $new`. Anyone have any ideas? | ||
| whiteknight | benabik: use a different variable | 20:03 | |
| create $*VAR_temp. Set $*VAR := $*VAR_temp after everything else is initialized | |||
| or save the old $*VAR into a safe place, munge it, then restore | |||
| benabik | whiteknight: Save and restore is supposed to be exactly what contextuals are supposed to avoid, I thought. | 20:04 | |
| whiteknight | benabik: you're not in Perl6. You're in not-quite-perl6 | ||
| the nuances of contextuals have been left out of the "not-quite" part | |||
| benabik | Sad that it works in PIR, but not NQP. | 20:05 | |
| whiteknight | as Yoda might say: Problem solve the damn you must | ||
| Alternatively, submit a patch for NQP-rx to not do that thing you don't want | |||
| NotFound | benabik: as someone said, adding another level of indirection solves all problems. | 20:06 | |
|
20:08
klavs left,
theory_ joined
|
|||
| dalek | rrot: 5e12529 | dukeleto++ | t/src/e (2 files): Merge branch 'leto/embed_grant' |
20:11 | |
|
20:13
theory left,
theory_ is now known as theory
|
|||
| benabik | Sad little PIR block. | 20:15 | |
|
20:19
soh_cah_toa joined
20:21
ambs joined
20:24
rohit_nsit08 left
|
|||
| soh_cah_toa | cotto_work: ping (quick question) | 20:25 | |
| cotto_work | soh_cah_toa: ping (quick answer) | 20:27 | |
| soh_cah_toa | cotto_work: what do you think is a decent sized buffer for command input? i was thinking 128 bytes | ||
| cotto_work | soh_cah_toa: that's fine. It's easy to change later (or it should be). | 20:28 | |
| whiteknight | soh_cah_toa: why do you need an input buffer? | ||
| cotto_work | If you make it 5M, you'll still only need one. | ||
| soh_cah_toa | whiteknight: well how else am i gonna store what the user enters? | ||
| whiteknight | soh_cah_toa: how are you reading it in? Are you using a FileHandle PMC? | ||
| actually, nevermind. I have to pack up and go | 20:29 | ||
|
20:29
whiteknight left
|
|||
| soh_cah_toa | alright | 20:29 | |
| cotto_work | soh_cah_toa: are you planning on moving your branch to parrot's github repo? | 20:30 | |
| #ps in 0 | |||
| soh_cah_toa | cotto_work: sure, i just don't know how | ||
| cotto_work | soh_cah_toa: try to catch dukeleto. He' | ||
|
20:30
bubaflub left
|
|||
| cotto_work | ll be able to walk you through it. | 20:30 | |
|
20:30
bubaflub joined
|
|||
| soh_cah_toa | ok | 20:30 | |
| cotto_work | or point you in a useful direction. | ||
|
20:30
davidfetter left
|
|||
| dalek | rrot: 7a29a33 | mikehh++ | MANIFEST.SKIP: re-generate MANIFEST.SKIP |
20:32 | |
| rrot: 159838f | mikehh++ | src/gc/api.c: move =cut to get t/codingstd/c_function_docs.t to pass - docs still needed |
|||
|
20:35
alester joined
20:47
theory left
20:57
lichtkind joined
|
|||
| lichtkind | how far is the mo/lorito rewrite? | 20:58 | |
|
21:02
dodathome left
|
|||
| dukeleto | lichtkind: the m0 spec is still be tweaked | 21:05 | |
| lichtkind | dukeleto: so its in preparation but my geuss that lorito and mo is the same thing was right? | 21:07 | |
| sorear | lorito is a very fuzzy concept | ||
| it's more of a "next generation Parrot" programme | |||
| lucian | lichtkind: from what i understand, lorito is the whole project | ||
| cotto_work | lichtkind: kind of. Lorito is M0 plus an object model and whatever's needed to support it. | ||
| lucian | and m0 is a part of it | ||
| lichtkind | thank you guys | 21:08 | |
| cotto_work | lichtkind: np | ||
| lichtkind | i maybe ask some more dull questions too want to write an perl 6 update article | ||
| sorear | Lorito is M0, rewriting Parrot to use M0, the M0 object model, the M0-enabled JIT, PIRATE, maybe other things we haven't discovered yet | ||
| lichtkind | ah so m0 is the new basis and lorita the project to let parrot stand on that new basis | 21:09 | |
| cotto_work | lichtkind: that's not a bad way of looking at it | ||
| sorear | pretty much | 21:10 | |
| Lorito came first, though | |||
| cotto_work | M0 is an actual virtual machine specification. | ||
| sorear | Lorito was a project to re-imagine Parrot | ||
| cotto_work | dukeleto and I are working on implementing a prototype. | ||
| lichtkind | any other important parrot news (since last year) ? :) | 21:14 | |
| sorear | Parrot's joke GC has been overhauled, and is now generational by default, in addition to not segfaulting on long lists anymore | 21:17 | |
| lucian | sorear: and it seems to actually work :) | ||
| sorear | jnthn__ is developing a replacement for our current Object and Class PMCs, one that will support more languages natively | 21:18 | |
| lucian: hey, the old one worked. you could actually tell the difference between -g ms and -g inf. Most of the time. | |||
| mikehh | I think there might be missing writ barriers but otherwise ok | ||
| write | |||
| lucian | sorear: what i mean is that i can't manage to confuse it into forgetting objects | 21:19 | |
| sorear | Many improvements have been made to loading stuff from packfiles | ||
| IMCC is better encapsulated, like a cyst forming around a parasite | 21:20 | ||
| Cardinal and Pynie have been resurrected, we could see real use of non-Perl code on Parrot by the end of GSoC | |||
| mikehh | IMCC needs a new a new approach/to be replaced or something | ||
| sorear | we're in a time of great promise right now. | 21:21 | |
| cotto_work | there are some interesting gsoc projects going on too | ||
| lichtkind | what means generational GC im not so deep into that? | 21:25 | |
| sorear | much faster and more memory efficient | 21:26 | |
| lucian | lichtkind: www.google.com/url?url=http://en.wi...CCUQygQwAA | 21:27 | |
| bah, stupid google link | |||
| lichtkind | thank you | ||
| lucian | lichtkind: en.wikipedia.org/wiki/Garbage_colle...eral_GC.29 | ||
|
21:31
ambs left
|
|||
| lichtkind | how much faster? | 21:33 | |
| im am very glad to hear the good new | |||
| the nasty journalist question would be its because you feel the possibility of raudo to port to CRL or even JVM? | 21:34 | ||
| dukeleto | lichtkind: what exactly is your nasty journalist question? | 21:35 | |
| lichtkind | it would be: is you recent progress driven by the possibility of rakudo to port to CRL or even JVM? | 21:36 | |
| cotto_work | Parrot isn't yet to the point where we don't need to focus on improving performance. | 21:37 | |
| dukeleto | lichtkind: i would say that M0 is driven by the need for a JIT compiler, but we are very aware of Rakudo supporting multiple backends | 21:38 | |
| lucian | lichtkind: also, the design of M0 doesn't preclude it from potentially running on JVM/CLR itself | ||
| cotto_work | M0 is a big part of our long-term goal of removing some longstanding bottlenecks. | 21:39 | |
| lichtkind | yes thats the way i read the parrot docs | 21:40 | |
| sorear | lichtkind: parrot doesn't really care that much what Rakudo does | ||
| lichtkind | but you know that ugly journalists always after politics :) | ||
| mikehh | sorear: not entirely true | ||
| lichtkind | i would also think so | 21:41 | |
| sorear | and Rakudo, AFAIK, has never been talking about abandoning Parrot | ||
| lichtkind | since rakudo is the primary purpose of parrot | ||
| cotto_work | sorear: I don't agree. I want Parrot to provide as good a platform as possible for Rakudo. | ||
|
21:41
bluescreen left
|
|||
| lichtkind | yes never about abandoning , just talked about to to be locked | 21:42 | |
| jnthn__ | lichtkind: The ugly journalists are probably still too busy with Weiner's weiner to worry about Parrot. :-) Anyway, work on making Rakudo run on additional (*not* replacement) backends isn't a possibility, it's work in progress. | ||
| sorear | the CLR and JVM ports are, AFAIK, intended more to support exotic environments where hosting 10^5 lines of C89 is infeasable | ||
| e.g. WP7 | |||
| lichtkind | i dont understand wp 7 ? | 21:43 | |
| jnthn__ | Perl has long been "run anywhere". These days, VMs are important "anywheres", so Rakudo wants to run on all of them. But one thing at a time. :) | ||
| lucian | lichtkind: windows phone 7 i believe | ||
| lichtkind | i alsways was a fanboy of the archtitectural possibilities but there was at a time a feeling being stuck | ||
| im glad that this is overcome | |||
| NotFound | I was thinking WordPerfect. | 21:45 | |
| lichtkind | but you have no measurement how much faster the new GC is? | 21:47 | |
| cotto_work | lichtkind: how much faster it is depends very heavily on the workload | 21:48 | |
| lucian | lichtkind: benchmarks have shown an average of 30% i believe, but sometimes much, much better | ||
| lichtkind | than you | 21:51 | |
| lucian | lichtkind: but don't take my word for it, there were some blog posts about it | ||
| cotto_work | lichtkind: if you want a good workload, look at the core.pm step of the Rakudo build. | 21:52 | |
|
21:56
lucian_ joined
|
|||
| sorear | lichtkind: before, building Rakudo filled up all 2.375 GB of real+swap memory I have installed and OOMed | 21:57 | |
| lichtkind: after generational_gc landed, I can now build it in 320MB, leaving enough free to have a responsive system | |||
| lucian_ | of course, parrot itself gobbles up a lot of memory in general | 21:58 | |
|
22:00
lucian left,
lucian_ is now known as lucian
|
|||
| lichtkind | sorear: whst id OOMed? | 22:01 | |
| lucian | lichtkind: out of memory | ||
| lichtkind | oom prevention program? | ||
| sorear | program runs out of memory, program ends with an error | 22:02 | |
| lichtkind | ah, thanks | ||
|
22:02
linge joined
|
|||
| benabik | minor nqp-rx enhancement: gist.github.com/1013096 | 22:08 | |
| bubaflub | benabik: does that fix the lexical problem you were having before? | ||
| benabik | Declare variables where they were declared. This fixes my `my $old := $*VAR; my $*VAR := $new` | ||
| bubaflub: Yes | |||
| bubaflub | benabik: fantastic. you should ping jnthn__ or pmichaud to get the patch accepted | 22:10 | |
|
22:11
hercynium left
|
|||
| sorear | benabik: -1. that code isn't supposed to work. | 22:11 | |
| benabik | sorear: Why not? | ||
| lichtkind | thank you again guys i will come back with more questions :) | ||
| benabik | sorear: I don't see why NQP moves where I declare the variable. | 22:12 | |
|
22:12
fperrad left
|
|||
| sorear | benabik: because in Perl 6, variables are always declared at ENTER time | 22:13 | |
| benabik | That is both surprising and irritating. | 22:14 | |
| sorear | this is related to what makes declaring subs after using them work | ||
| benabik | Allowing `$x; my $x` seems like an error. | 22:15 | |
| sorear | jnthn__: ping | 22:16 | |
| jnthn__ | sorear: pong | 22:17 | |
| jnthn__ reads... | |||
| yes, the ENTER time bit is right | |||
| I suspect we should die at compile time about the $x usage before declaration. | 22:18 | ||
| sorear | jnthn__: benabik's actual problem is say $*FOO; my $*FOO = 6 | 22:19 | |
| arnsholt | Wouldn't that cause problems with dynamic vars? | ||
| jnthn__ | Guess the first one would print undef or something | ||
| benabik | It will "say" undef | ||
| arnsholt | Since my $*foo establishes a new binding | ||
| sorear | jnthn__: please explain to benabik why it has to. my cogent-explanation-generator isn't working today. | ||
| jnthn__ | If NQP supported it, my $*FOO := $*OUTER::FOO; would do what benabik wants. | 22:20 | |
| cah | |||
| I meant | |||
| my $*FOO := $*CALLER::FOO; | |||
| Anyway, "Allowing `$x; my $x` seems like an error." - this is correct | 22:21 | ||
| But so should be allowing $*x; my $*x | |||
| benabik | When there's an "outer" $*x, that seems to make perfect sense to me. | ||
| jnthn__ | A ticket on github.com/perl6/nqp/ is wlecome | 22:22 | |
| benabik | Hence me trying to use it. | ||
| jnthn__ | benabik: No, that's not allowed in Perl 6. | ||
| benabik: STD gives you a nice error if you try to use it for that. | |||
| NQP doesn't yet, I'm afraid. | |||
| benabik | Bah. | ||
| I vaugely understand the language decision, it's just hideously inconvenient for me right now. | |||
| jnthn__ | Does Parrot have an op for "look for a caller lexical, but skip n frames@? | 22:23 | |
| I know there's find_caller_lex__PS | 22:24 | ||
| benabik | I think pir::find_dynamic_lex skips the current lexpad... | ||
| jnthn__ | oh, it's find_dynamic_lex... | ||
| jnthn__ checks | |||
| benabik | There is also a find_caller_lex | ||
| jnthn__ | Whatever $*FOO compiles to uses one that looks in the current frame too | 22:25 | |
| benabik | The description the docs appears to say otherwise, but eh. | ||
| It does seem to search current lexpad, but the doc says "search through callar lexpads". | 22:26 | ||
| jnthn__ | find_dynamic_lex may do it | ||
| benabik | No, because $*FOO in nqp-rx does compile to it and that's not how nqp-rx works. | 22:27 | |
| arnsholt | benabik: A workaround should be to use two blocks where you have one | 22:28 | |
| jnthn__ | hmm | ||
| arnsholt | { my $old = $*foo; { my $*foo = $new; } } | ||
| jnthn__ | arnsholt: ah, yes | 22:29 | |
| benabik | arnsholt: I'd like that better if that inner block wasn't 100 lines, but yes | ||
| arnsholt | It's not aesthetically optimal, but hopefully it'll do what you want with a minimum of fuss | ||
| jnthn__ | I ever used that workaround before, come to think of it... | ||
| arnsholt | benabik: Yeah, that's what I was afraid of | ||
| jnthn__ | *even | ||
| NotFound | I told you before, all can be solved by adding another level ;) | ||
| arnsholt | But hopefully your fiddling with $*foo is located pretty close to the top, in which case a judiciously placed comment should go a long way | 22:30 | |
| benabik is wondering if the extra level of indentation is worse than three lines of PIR to create the variable where I need it. | 22:33 | ||
| arnsholt | Heh. Good question =) | 22:34 | |
|
22:34
hudnix left
|
|||
| jnthn__ | benabik: If you do that, please comment what NQP you really want. I can look at adding $*CALLER::FOO at some point. Again, please do ticket it. | 22:42 | |
| benabik | jnthn__: Sounds like $*CALLER::FOO is what I'd really like, but I guess I'll live with the block for now. Poking at ticket now. | 22:44 | |
|
22:52
lichtkind left
|
|||
| jnthn__ | benabik: thanks | 22:54 | |
| sleep & | |||
|
22:55
alester left
23:04
whiteknight joined
|
|||
| cotto_work | ohai whiteknight | 23:05 | |
| whiteknight | lolhi cotto_work | ||
| what's happenin? | 23:08 | ||
| dalek | rrot/m0-prototype: 2e54781 | cotto++ | / (2 files): make calling conventions test less wrong, but still wrong Also, hijack print_n to dump a register and exit. |
23:13 | |
|
23:29
theory joined
|
|||
| whiteknight | tcurtis: ping | 23:32 | |
|
23:39
kid51 joined
|
|||
| tcurtis | whiteknight: pong | 23:44 | |
| aloha, seen darbelo | |||
| aloha | tcurtis: darbelo was last seen in #parrot 11 days 2 hours ago joining the channel. | ||
| whiteknight | tcurtis: Rosella does have functionality to make a value immutable | 23:45 | |
| it doesn't currently support arrays, but it's trivial to ad | |||
| add | |||
| actually, I may do that now while I'm looking at the code | 23:49 | ||