|
Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply and context_auto_attrs merges | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs Set by moderator on 1 November 2009. |
|||
|
00:00
Zak joined
00:08
Whiteknight joined
|
|||
| kiwichris | Is anyone else using gcc 4.4.2 ? | 00:17 | |
| plobsing | I have it | ||
| darbelo | I think mikehh and NotFound, but I might be wrong. Is that the one on the latest ubuntu? | 00:18 | |
| plobsing | seems to work fine | ||
| NotFound | darbelo: no, 4.4.1 | ||
| kiwichris | I have something funny happening with the vargs. | 00:19 | |
| Whiteknight | I'm on 4.4.1 | ||
|
00:20
patspam joined
|
|||
| plobsing | what's funny about them | 00:21 | |
| Whiteknight | three vargs walk into a bar... | 00:24 | |
| NotFound | Three vargs for muster mark | 00:25 | |
| kiwichris | plobsing, in create_seg name has the address 0x6f1660 but in Parrot_sprintf_c args has it as 0x6f1664 | ||
| darbelo | That can only end in a segfault. | ||
| NotFound | kiwichris: What type is that var? | 00:26 | |
| darbelo | STRING * | ||
| kiwichris | NotFound, STRING | ||
| The bad value is nicely handled all the way down to a pointer call and then boom | 00:27 | ||
| Checked the asm code and it looks ok. | 00:28 | ||
| darbelo | kiwichris: is this the same boom you were having earlier today? | ||
| Whiteknight | how the hell can that possibly be happening | ||
| kiwichris | Whiteknight, wish I knew | ||
| plobsing | I've been compiling with it all night for x86_64 without a hitch | ||
| I assume 'make test' can trigger the segfault? | 00:29 | ||
| dukeleto | plobsing: rtems does not have 'make' | ||
| kiwichris | plobsing, no make on RTEMS | ||
| darbelo | plobsing: kiwichris is cross-compiling to RTEMS. | ||
| plobsing | ok, so then what are you running to trigger this? | 00:30 | |
| dukeleto | plobsing: ./parrot foo.pir triggers the error on rtems | ||
| kiwichris | doing: parrot -v p/benchmarks/fir.pir | ||
| dukeleto | plobsing: where foo.pir is nothing but an empty main function | ||
| kiwichris | where p is mounted to the examples dir | ||
| dukeleto | plobsing: the error seems to happen when reading in any PIR file on RTEMS | ||
| kiwichris | Will do gdb si and report back | ||
| dukeleto | kiwichris: thanks! | 00:31 | |
| kiwichris: thanks for all of your hard work. | |||
| darbelo | dukeleto: The 'boom' hapens when IMCC constructs the bytecode, before any running can happen. | ||
| Whiteknight | kiwichris++ | ||
| kiwichris | dukeleto, no problem | 00:32 | |
| darbelo | dukeleto: More precisely, when processing the name for the segment, before adding it to the packfiledirectory. | 00:34 | |
| dukeleto | darbelo: so we are dying in packfile-creation-time. interesting | 00:36 | |
| dukeleto searches for $food | |||
| darbelo | Yes, but it could be unrelated, as we die in the middle of a Parrot_sprintf_c() call. | 00:37 | |
| That simply formats the name of the segment into a STRING that gets handed off to the segment creation code. | |||
| dukeleto | darbelo: so we are dying during segment creation? | 00:38 | |
| darbelo | It looks more like we the strings subsystem is hosed. Making segment cration fail. | ||
|
00:43
zak_ joined
|
|||
| plobsing | my gdb skills must be lacking. the varargs don't show up for me. | 00:45 | |
| kiwichris | plobsing, varargs shows up as a parameter and is a pointer to contents which in this case is a "void*, void*". You need x /2x args | 00:49 | |
| nopaste | "kiwichris" at 203.206.130.106 pasted "RTEMS port, mangled pointer in varargs" (15 lines) at nopaste.snit.ch/18551 | 01:09 | |
| darbelo | kiwichris: Hmm. Are you compiling to a i386 target from amd64? | 01:15 | |
| kiwichris | darbelo, yes | ||
| darbelo, parrot configured for amd64 then config hacked by me | 01:16 | ||
| darbelo | Ouch. | ||
| There's plenty that can go wrong there. | 01:17 | ||
| How, exactly, did you hack the configureation? | |||
| kiwichris | darbelo, yes I know. I build parrot on a 32bit machine and copied the sizes. The actual change is not that big. | 01:19 | |
| darbelo, all changes by hand | |||
| darbelo | To the makefile? | ||
| kiwichris | darbelo, Makefile is hand made by me using the list of source built for Linux | 01:20 | |
| Our va_arg is mapped to the gcc builtin one, __builtin_va_arg | 01:21 | ||
| darbelo | have you looked at include/parrot/config.h ? | 01:22 | |
| That gets generated by the config stage. That and the various compiler flags in the makefile take care of defining the various datatypes parrot uses. | 01:24 | ||
| kiwichris | darbelo, yeap, this is what I hacked. | 01:25 | |
| darbelo | Excelent, can you nopaste it? | ||
| kiwichris | darbelo, will it now | ||
|
01:26
abqar joined
|
|||
| kiwichris | I see getstring_va does not have a va_start and the Linux man page states it should. Is this confusing the gcc builtins ? | 01:26 | |
| darbelo | I don0t know. I've never looked at how gcc handles varargs | 01:27 | |
| nopaste | "kiwichris" at 203.206.130.106 pasted "RTEMS hacked config.h for parrot-1.7.0" (185 lines) at nopaste.snit.ch/18552 | 01:28 | |
| kiwichris | darbelo, might have a play | ||
| plobsing | nope. gets called in Parrot_sprintf_c | ||
| that and va_end | |||
| darbelo | #define PARROT_BYTEORDER 0x12345678 | 01:30 | |
| I think you want: | |||
| #define PARROT_BYTEORDER 0x1234 | |||
| kiwichris | plobsing, what about the arg thing in getstring_va ? ( I am not an expert with vaargs) | 01:31 | |
| darbelo, changed | |||
| plobsing | getstring_va is further down the call chain. it expects the va_arg it gets passed to be initialized/finalized elsewhere | 01:32 | |
| kiwichris | plobsing, ok | ||
| darbelo, also changed PARROT_EXEC_OS_linux and PARROT_amd64 to 0 | 01:33 | ||
| darbelo | And, I think you want to typedef long long HUGEINTVAL; | ||
| seeing as you put #define HUGEINTVAL_SIZE 8 later. | 01:34 | ||
| kiwichris | darbelo, yeah, nice spotting. | 01:35 | |
| darbelo | same for hugeintval. | ||
| same for *U*hugeintval, I mean | |||
| HUGEFLOATVAL looks ok to me. | |||
| kiwichris | darbelo, done and thanks | ||
| darbelo | No prob. There might me more, but I have to go now. I have an exam early tomorrow. | 01:36 | |
| kiwichris | darbelo, thanks and best of luck | ||
| darbelo | Thanks, hope I don't need it ;) | 01:37 | |
| plobsing | that is a pointer to the va_list originally passed to Parrot_sprintf_c | ||
| ah paste buffer error! | 01:38 | ||
| kiwichris | plobsing, huh ? | 01:43 | |
| plobsing | utter nonsense. I cut a candidate response and it accidentally got pasted in later | ||
| sorry | 01:44 | ||
| japhb | Tene, darbelo, dukeleto, pmichaud: any Plumage hackers around? | 01:45 | |
| Tene | japhb: I'm here. I've got a fever, and I've been in and out of consciousness today, but I'm here now. | 01:46 | |
| What's up? | |||
| purl | The Canadian Dollar | ||
| japhb | Tene, just wanted a sanity check on my near-term plans, because I can sense they are emotionally driven. | 01:47 | |
| Tene | can you summarize them here? | ||
| japhb | Since the nqprx branch seems to be more or less working, I'm going to merge it back to master, then start converting the whole thing to using the improved nqp-rx syntax. | 01:48 | |
| Tene | I like it. | ||
| japhb | Which means no going back (save by branching from the past). | 01:49 | |
| I've basically had it with waiting. | |||
| Tene | I approve. | ||
| japhb | Alright, good, at least I'm not completely nuts. | ||
| And on that note ... dinner time. | |||
| Hope you feel better soon, Tene! | |||
| Tene | Me too! | 01:50 | |
| pmichaud | fwiw, I think that switching over to nqp-rx is a pretty good idea :) | 02:09 | |
| kiwichris | plobsing, I think I see what is happening but I am not sure gcc is doing it. | 02:11 | |
|
02:14
cotto_work joined
|
|||
| plobsing | kiwichris: so the config changes didn't solve your problem? | 02:16 | |
| kiwichris | plobsing, no. Just nopasting the problem but I cannot see the solution. | ||
| plobsing, I think PARROT_VA_TO_VAPTR is wrong. It is not the address of (x). Is this a config thing ? | 02:22 | ||
| plobsing, must be a x86_64 ABI vs 32bit thing | |||
| plobsing | I'm not a big ABI haxor, but AFAIK, a va_list is a pointer to the stack space where the varargs are | 02:24 | |
| so a VA is a pointer. | |||
| kiwichris | plobsing, on a 86_64 the PARROT_VA_TO_VAPTR is the value passed in | 02:25 | |
| plobsing, it would seem on RTEMS 32bit it needs the address of what is passed in. | 02:26 | ||
| plobsing, config tests for this | |||
| plobsing | hmmm... does changing that solve the problem? | ||
| I don't see that macro getting called a lot | |||
| kiwichris | plobsing, building (dumb makefile). The 32bit Linux wants the address of. | 02:27 | |
| plobsing | in fact it only gets called once. in one of the callers of getstring_va | ||
| lucky | |||
| or not so much | |||
| nopaste | "kiwichris" at 203.206.130.106 pasted "RTEMS run fir.pir !!" (30 lines) at nopaste.snit.ch/18553 | 02:32 | |
| japhb | Congrats, kiwichris++ | 02:35 | |
| dalek | rrot-plumage: e27a136 | japhb++ | : Initial try at supporting nqp-rx |
02:36 | |
| japhb | That's weird, I wasn't the one who did that commit; just the one that merged it to master. | 02:37 | |
| plobsing | who should I ask about the --optimize configure flag? | 02:40 | |
| Coke | msg darbelo if you use KHAAAAAN, that happens to be my license plate. | 02:42 | |
| purl | Message for darbelo stored. | ||
| japhb | Coke: awesome. | 02:47 | |
| Coke | japhb: www.matoe.org/gallery2/v/tomatoe/fa...5.JPG.html | 02:48 | |
| (though I have a different car now) | 02:49 | ||
| msg NotFound PASSED 90 tests in 20 files | |||
| purl | Message for notfound stored. | ||
| japhb | Very cool. Well chosen. | ||
|
02:52
eternaleye joined
|
|||
| dalek | rrot-plumage: 57e1a01 | japhb++ | : [META] README: We're using NQP-rx now, but call it NQP |
02:52 | |
|
02:54
allison joined
|
|||
| japhb | pmichaud, does NQP-rx run MAIN() automagically? | 02:55 | |
| dukeleto | holy embedded real-time parrots, batman! nopaste.snit.ch/18553 | 03:08 | |
| pmichaud | japhb: not yet, it probably will/should at some point | 03:10 | |
| dukeleto | japhb: ping! | ||
| pmichaud | japhb: I haven't quite figured out how that should work. | ||
| unfortunately, this is yet another place where parrot doesn't provide a feature we need, so we have to work around it somehow. | 03:11 | ||
| kiwichris | dukeleto, just packaging up the work to make it available to others. | 03:14 | |
| dukeleto | kiwichris: awesome! | ||
| purl | awesome is, like, a window manager or at awesome.naquadah.org or awesome | ||
| dukeleto | purl, forget awesome | ||
| purl | dukeleto: I forgot awesome | 03:15 | |
| dalek | rtcl: d0eb532 | (Will Coleda)++ | (85 files): Remove svn-style Id keys. |
03:16 | |
| dukeleto | japhb: did you merge the nqprx branch into master in plumage? | 03:20 | |
| japhb | dukeleto, pong | ||
| dukeleto, yes, I did. | 03:21 | ||
| dukeleto | japhb: indeed you did | ||
| japhb | dalek didn't seem to understand that very well ... | ||
| dukeleto | japhb: yes, i don't know why I asked when I have git log ... | ||
|
03:21
patspam joined
|
|||
| dukeleto | japhb: dalek has a small bug with recognizing commits from gitorious | 03:21 | |
| japhb: it doesn't see the first commit in a branch, but then sees it when it is merged | |||
| japhb | pmichaud, oy vey # having to work around parrot to implement MAIN () | ||
| dukeleto, that's odd | 03:22 | ||
| dukeleto | japhb: it is how it reads the rss feed | ||
| japhb: and the way gitorious shows it is a bit odd as well | |||
| japhb: gitorious only gives the sha1 of the merge commit, not the symbolic ref | 03:23 | ||
| kind of annoying | |||
| japhb | nodnod | ||
| dukeleto, gitorious definitely feels more low-level, less porcelain | |||
| dukeleto | japhb: indeed. but i haven't seen it go down yet. but that may just be to having fewer users | 03:24 | |
| japhb | dukeleto, possible ... but I definitely also get the feel that it's built on a fairly solid base. | ||
| kiwichris | dukeleto, can we discuss the 'exit' calls ? | 03:28 | |
| dukeleto | kiwichris: sure | ||
| kiwichris: what is up? | |||
| purl | Me, you bitches! I'm high on crack! | ||
| kiwichris | dukeleto, it would be good if we can avoid exit being called. | 03:29 | |
| dukeleto | kiwichris: where are we calling exit that is messing rtems up? | ||
| kiwichris | dukeleto, in Parrot_exit in exit.c | 03:30 | |
| dukeleto, there are other places which are deeper in the code | |||
| dukeleto | kiwichris: what should we do instead? | ||
| kiwichris | dukeleto, if I could hook a handler before starting Parrot I could manage it from the outside. | ||
| dukeleto, if the handler is not hooked call exit | 03:31 | ||
| dukeleto | kiwichris: do you want your own custom handler called when 'exit' is called? | ||
| kiwichris | dukeleto, yes but in Parrot_exit because of things like the Parror on exit chain | 03:32 | |
| dukeleto, I can create a patch and submit it if you like | |||
| dukeleto | kiwichris: sure, a patch to exit.c would be great | 03:34 | |
| kiwichris: what if we just don't call exit() in Parrot_exit() if we are in rtems? | |||
| kiwichris: or call some other function on rtems? | 03:35 | ||
|
03:35
kthakore joined
|
|||
| kthakore | um hi | 03:35 | |
| where is a good place to look into PASM/PIR? | |||
|
03:35
janus joined
|
|||
| kthakore | Is there an equivalent of hello world? | 03:35 | |
| dukeleto | kthakore: examples/pir | 03:36 | |
| kiwichris | dukeleto, we could but with a handler to hook there is not conditional code plus users of RTEMS can handle it in different ways. | ||
| dukeleto | kthakore: or examples/ in general | ||
| kthakore | dukeleto: kk | ||
| thanks | |||
| dukeleto | kthakore: examples/tutorial are the beginner docs | ||
| kiwichris | dukeleto, how are patches submitted for review in parrot ? | ||
| plobsing | that hook has the potential to be general. I can imagine some embeders wouldn't want parrot to exit their app on them | ||
| dukeleto | kiwichris: a ticket is created on trac.parrot.org and the patch attached to it | 03:37 | |
| kthakore | dukeleto: thanks | ||
| dukeleto | kiwichris: then send an email to parrot-dev asking people to review the patch | ||
| kthakore | dukeleto: hopefully if I start now by Feb I can learn enough for SWIG | ||
| or alternative | |||
| dukeleto | kthakore: why by feb? | ||
| kiwichris | plobsing, yes very general, basically 'void (exiter*)(int status);" | ||
| kthakore | dukeleto: SWIG is not looking that great for SDL as its 1 <--> 1 | ||
| dukeleto: thats when I am done my exam and classes for a while | 03:38 | ||
| dukeleto: and hopefully redesign of SDL | |||
| dukeleto | kthakore: nice | ||
| kthakore | dukeleto: so any atlernatives for SWIG your blitz think I can look at ? | 03:39 | |
| dukeleto: or ExtUtils::PASM ? | |||
| plobsing | kthakore: if your XS bindings are shallow, you could parse and repurpose those | ||
| kthakore | plobsing: how? | 03:40 | |
| dalek | rrot: r42251 | jkeenan++ | branches/configtests (3 files): Begin work on transforming tests of step classes to use results of configuration. Create Parrot::Configure::Step::Test. |
||
| plobsing | if you don't have CODE/PPCODE sections, XS is just a signature defn | ||
| parrot has NCI | |||
| which accepts signatures | |||
| you'd need to convert from one to the other | |||
| but that would require your XS bindings to be very shallow or your parser to be very "deep" | 03:41 | ||
| kthakore | plobsing: how do I determine 'shallowness' of XS ? | ||
| plobsing | how long are your CODE/PPCODE sections | ||
| thats what it comes down to. | 03:42 | ||
| kthakore | plobsing: ranging from OneLine to 15 lines at most | ||
| plobsing | parrot obviously can't provide perlguts for you | ||
| kthakore | plobsing: ah ok | ||
| plobsing: I see where you are going | |||
| plobsing: ok well can I make an 'object' in parrot? | |||
| plobsing | from C or from within? | 03:43 | |
| kthakore | plobsing: or hook into GC from NCI | ||
| plobsing | you can do both, of course | ||
| hook GC from NCI? | |||
| kthakore | plobsing: ok. I like this approach ... can I pm email so I can contact with more questions? | ||
| plobsing | I think you have an XY problem | ||
| sure | 03:45 | ||
| kthakore | whats XY problem and ... is there an example of this somewhere? | ||
| plobsing | XY problem => you really want to do X, but you ask about doing Y | 03:46 | |
| purl XY? | |||
| purl | XY is at hello.com or at www.xymag.com or (: xy problem) | 03:47 | |
| plobsing | purl XY problem? | ||
| purl | They ask how to do X, but that's because they really want to do Y but think X will get them there and most of the time they are wrong. (: "XY probability") or see also XYZ problem, XY chromosome problem or www.perlmonks.org/index.pl?node_id=542341 | ||
| kthakore | plobsing: ah agreed I have no clue what I am asking most of the time/ | ||
| plobsing: XS -> Parrot is what I want, what should I ask for? | |||
| plobsing | well parrot doesn't have a direct analog. many ppl consider XS to be somewhat evil | 03:48 | |
| the closest/easiest thing is probably: docs.parrot.org/parrot/latest/html/...l.pod.html | 03:49 | ||
| parrot has: NCI which allows you to define C-ish function signatures and call arbitrary fn pointers (that you get from a dynamic library) | 03:50 | ||
| kthakore | plobsing: I am a statanic worshipper so I don't mind XS :P | ||
| plobsing | it also has the ability to define new object types (PMCs) and new core operations | ||
| kthakore | yay! | ||
| plobsing | but those, while being shiny are probably not as close to XS. so if you want to be lazy, your best bet is NCI | 03:51 | |
| kthakore | kk | ||
| plobsing: I will look | 03:52 | ||
| plobsing thanks | |||
| plobsing | no problem | ||
| kthakore | dukeleto: thanks fo the examples | 03:57 | |
| dukeleto | kthakore: no worries. enjoy! | ||
| plobsing | dukeleto: I looked at the factor FFI system as you suggested | ||
| dukeleto | plobsing: and? | 03:58 | |
| plobsing | dukeleto: all I saw was nice *syntax*. | ||
| dukeleto | kthakore: xs -> parrot is blizkost | ||
| plobsing: yes, that is what I was referring to | |||
| plobsing | dukeleto: as I understand i, that's not the domain of parrot, but hlls | ||
| dukeleto | plobsing: their user-facing api for ffi | ||
| plobsing | dukeleto: all parrot has to do is provide the functionality | ||
| dukeleto | plobsing: you would be correct. but parrot will have a user-facing ffi api for hll devs | 03:59 | |
| plobsing: or hopefully something approaching an api | |||
| blizkost? | |||
| purl | well, blizkost is github.com/jnthn/blizkost/tree/master or the last Jonathan's project, an embedding of Perl 5 in Perl 6 | ||
| dukeleto | kthakore: if you want to talk to XS from PIR/PASM/NQP/Perl 6, start hacking on blizkost | ||
| kthakore | dukeleto: ok thanks | 04:00 | |
| dukeleto | plobsing: i agree. xs is evil | ||
| plobsing | dukeleto: the NCI pmc can be wrapped six ways to sunday if ppl want sugar | ||
| dukeleto | plobsing: but we need a bridge from it so that people can flee it | ||
| plobsing: people tend to want sugar | |||
| plobsing | when they want it, they'll have a better idea of what they want | 04:01 | |
| kthakore | sugar is sweet until you get a toothache | ||
| plobsing | as I see it, there aren't a lot of users of the NCI API at the moment. | 04:02 | |
| and I think that has more to do with the general lack of libraries of a young VM | 04:03 | ||
| we have great parser tools. if anyone wants a new DSL, nqp is right there | 04:04 | ||
| japhb | plobsing, one of the reasons I don't spend more time with the NCI stuff is that it has some fundamental problems ... if some of that stuff was fixed, I'd be back on the OpenGL case in a hurry. | 04:06 | |
| plobsing | ah the callbacks issue. | ||
| I was going to look into that. | |||
| japhb | plobsing, also, no handling of some basic types (such as 'long long' and friends), really painful handling of C structures and packed arrays (and SoA and AoS is even more sucky). | 04:09 | |
| kthakore | dukeleto: lot of the examples/ are broken for me? | ||
| japhb | plobsing, and improper conversion of signedness, and poor handling of strictly sized types, ... I could go on at length. | 04:10 | |
| plobsing | I think we'll have to get better C structure handling to support lorito | ||
| kthakore | dukeleto: will try later ... | ||
| plobsing | japhb: can you do so on a wiki page? | ||
| NCI shortcommings or somesuch | |||
| japhb | plobsing, only if you promise to pay attention. The tickets I filed for such things got ignored for so long Coke assigned them back to me this morning just to move them to Trac. | 04:11 | |
| japhb is rather sour on the NCI stuff, can you tell? :-/ | |||
| plobsing | I saw those and started thinking. | ||
| japhb | Well, that's a start. :-) | ||
| plobsing | one problem is that AFAICT, you can't do the signle-pointer callbacks in straight C or equivalent | 04:12 | |
| which means it won't work some places (similar to places you can't JIT) | |||
| japhb | OK, I'll try to whip something up later or tomorrow. Right now being called by $better_half. | ||
| plobsing | so I'm not sure how we want to handle that | ||
| dukeleto | kthakore: broken examples? | 04:14 | |
| kthakore: please let us know which | |||
| kthakore: there should be tests for those | |||
| plobsing | t/examples ? | ||
| dalek | rrot-plumage: 3fae3e0 | japhb++ | : [CORE] Glue.pir: Add eval(), print(), and say() |
04:15 | |
| rrot-plumage: bf4c551 | japhb++ | : [PROBES] cap-test.nqp: We have simple string interpolation now |
|||
| plobsing | dukeleto: do you know anything about --optimize? | ||
| dukeleto | plobsing: yes. what do you need to know? | ||
| plobsing | the struct access it inlines, is it guarranteed to be equivalent? | ||
| I am trying to work around the issues having half-macro-half-function frankensteins gives the JIT | 04:16 | ||
| eternaleye | I have a couple questions for people who understand PMCs. 1.) Is sizeof(PMC) a constant? 2.) what is the implementation currently used for the Hash PMC? | ||
| plobsing | dukeleto: for example, if I were to use a manually inlined version without --optimize, would parrot explode? | 04:18 | |
| dukeleto | eternaleye: 1) i would not count on it. 2) src/pmc/hash.pmc | ||
| plobsing: try it out and let us know :) | |||
| plobsing | I'm pretty sure its fine now. But after the next optimization round? who knows? | 04:19 | |
| and thats what I'm asking. will it continue to work if it works now? | 04:20 | ||
| dukeleto | plobsing: mostly, all I know is that it --optimize sets -02 and a few debug flags | ||
| eternaleye | dukeleto: Thanks. I was asking because I just ran across Judy trees, and they would seem to be a good pick for all types of key (int, string, and PMC) if the answer to my first question was yes (Judy trees have a JudyHS form for arbitrary fixed-length byte sequences as keys, as well as JudySL for string keys and JudyL for word_t keys) | ||
| dukeleto | eternaleye: i am not sure, but it would at least depend on the type of PMC | 04:21 | |
| eternaleye | dukeleto: Maybe, but I thought that all the type-dependent data was in pointers, rather than inline in struct PMC? | 04:22 | |
| dukeleto | eternaleye: that doesn't mean that the size of a PMC can't change. at least I don't think it does. | 04:26 | |
| plobsing | struct PMC is in include/parrot/pobj.h | ||
| it appears to be fixed size | |||
| but I can't see any PDD saying that won't change | |||
| dukeleto | plobsing: that is what I am sayin' . it might be fixed right now, but I am not sure if that fact is written down as part of the API | 04:34 | |
| dalek | TT #1183 closed by dukeleto++: dies_ok() for Test::More | 04:39 | |
| plobsing | I wasn't sure wether we were talking about at runtime or between releases | 04:42 | |
| dukeleto | plobsing: me either | 04:43 | |
| plobsing: perhaps eternaleye only meant at runtime | |||
| eternaleye | I did - it doesn't particularly matter if it changes between releases, since you'll just initialize the Judy tree with sizeof(PMC). Zero code would change. | 04:45 | |
|
04:45
petdance joined
|
|||
| dukeleto | eternaleye: then yes, you can rely on sizeof(PMC) | 04:45 | |
| leto.net/dukeleto.pl/2009/11/realti...rrots.html | |||
|
04:48
tetragon_ joined
04:54
tetragon joined
04:56
Zak joined
05:10
theory joined
05:13
kiwichris joined
05:27
jsut joined
|
|||
| dalek | tracwiki: v115 | japhb++ | WikiStart | 05:42 | |
| tracwiki: trac.parrot.org/parrot/wiki/WikiSt...ction=diff | |||
| japhb | plobsing, see trac.parrot.org/parrot/wiki/NCITasklist | 06:38 | |
| That's my first pass brain dump on NCI weaknesses | |||
| dalek | tracwiki: v1 | japhb++ | NCITasklist | ||
| tracwiki: Initial brain dump | |||
| tracwiki: trac.parrot.org/parrot/wiki/NCITas...ction=diff | |||
|
06:39
fperrad joined
|
|||
| japhb | fperrad, I forget if you already answered this: Do you have any patches, tickets, etc. waiting on me? | 06:39 | |
| fperrad | japhb, currently nothing | 06:41 | |
| japhb | fperrad, excellent. :-) | ||
| dukeleto | japhb: so does plumage require nqp-rx now? | 06:44 | |
| japhb | dukeleto, yup | ||
| pmichaud, ping | 06:47 | ||
| pmichaud | pong | 06:48 | |
| dukeleto | japhb: what do you think about using a git submodule? | ||
| dalek | rrot-plumage: a4ed590 | japhb++ | : [BUILD] Configure.nqp: Use string interpolation; fix out of date comments |
06:49 | |
| dukeleto | japhb: with a submodule, we can say "commit xyz of plumage must use commit abc of nqp", and checkout commit abc of nqp into this directory | ||
| japhb | dukeleto, last I heard pmichaud was still working on the "shipped with core parrot" angle, but yes the git submodule is our backup plan | ||
| dukeleto, yep, I understand submodules. | 06:50 | ||
| dukeleto | japhb: just checking ;) | ||
| japhb: sounds like pmichaud doesn't want to deal with parrot deprecation policies, which is very understandable | |||
| japhb | pmichaud, I'd like to start converting plumage's PGE regex handling to the NQP-rx native regexen. | ||
| pmichaud, can you help by showing how that should look for something like plumage's Configure.nqp? | 06:51 | ||
| ... and let me know what I can drop from Glue.pir in the regex/string handling section? | |||
| dukeleto | japhb: seems like parrot core should upgrade to nqp-rx, but plumage will always have a newer version, and/or can install the newer version for parrot to use | ||
| pmichaud | japhb: I still haven't figured out the regex invocation syntax to use :-| | ||
| japhb | dukeleto, yeah, the deprecation policy is painful. I see the desire for it, but right now I believe it is overly strict (not enough room for reasonable discretion). | 06:52 | |
| pmichaud | I guess you're probably wanting my $/ := $target ~~ /regex/; ? | 06:53 | |
| or | |||
| japhb | ... funny, I was just today reading about how 'zero tolerance' really means 'zero discretion', what problems there are with that, and how to make a better process instead. | ||
| pmichaud | my $match := $target ~~ /regex/; ? | ||
| I might be able to get infix:<~~> to work | 06:54 | ||
| japhb | pmichaud, actually I'm right now at a lower level. The above syntax would be great, | ||
| dukeleto | japhb: i think parrot will upgrade to nqp-rx, but there will be no syncing policy. none is needed if end users can upgrade nqp with plumage | ||
| japhb | but I'm just looking to replace my rx() hack | ||
| and all_matches() | 06:55 | ||
| pmichaud | which isn't a bad hack, fwiw :) | ||
| japhb | :-) | ||
| pmichaud | oooh, all_matches isn't available yet | ||
| oh, wait | |||
| japhb | Feel free to steal back from Plumage then, Glue.pir steals lots from Rakudo .... ;-) | 06:56 | |
| pmichaud | all_matches means "matches after this one", not "backtrack and try again", right? | ||
| i.e., the :global flag | |||
| japhb | Yeah, non-overlapping | ||
| pmichaud | okay, that can be emulated | ||
| japhb | I didn't try for exhaustive | ||
| pmichaud | since I have other plans for tonight, perhaps I can work on it tomorrow? | 06:57 | |
| japhb | Right now Glue.pir's all_matches is pretty simple, but if it was redundant, that would be nice to know. :-) | ||
| pmichaud, oh sure. | |||
| no problem. | |||
| pmichaud | yes, moving Glue.pir to be native nqp would be good | ||
| actually, I'm eager for lots of nqp examples to test and improve the compiler | |||
| japhb | And did you do try syntax yet? | ||
| pmichaud | not yet, that's a bit trickier still | ||
| there will be one, but I need to implement try in Rakudo first | 06:58 | ||
| japhb | Oh believe me, plumage can grow pretty much without bound as an NQP test. :-) | ||
| nodnod | |||
| pmichaud | (and that's high priority, so it should happen fairly quickly for both) | ||
| japhb | excellent | ||
| Did you do closures? | |||
| pmichaud | Test.pm in Rakudo needs try in order to work | ||
| japhb | nodnod | ||
| pmichaud | closures are present, I have no idea if they work :) | ||
| japhb | heh | ||
| Optional params and named optionals are there, yes? | 06:59 | ||
| pmichaud | closures might have to be done with pir::newclosure({ ... }) | ||
| oh, wait, that's silly | |||
| japhb | heh | ||
| pmichaud | I can always get bare blocks to newclosure themselves | ||
| and they may do it already | |||
| let's see if it works already or not | |||
| (testing locally) | 07:00 | ||
| japhb | k | ||
| pmichaud | (recompiling locally) | ||
| eternaleye | (think globally, but act in local variable scope) | ||
| pmichaud | think globally, act lexically, don't accept any strange packages | 07:01 | |
| japhb | And always remember to contextualize | ||
| eternaleye | What about Parcels? ;D | ||
| I think we've Captured the essence of the joke. | 07:02 | ||
| </puns> | |||
| nopaste | "pmichaud" at 72.181.176.220 pasted "closures in nqp, sorta" (11 lines) at nopaste.snit.ch/18554 | 07:04 | |
| pmichaud | nqp doesn't properly clone the closure, but that can be fixed. | ||
| japhb | Does that include -> { ... } syntax and/or sub-inside-sub, or just bare blocks? | 07:05 | |
| pmichaud | at the moment it's just bare blocks | 07:07 | |
| pointy subs will be available soon | |||
| sub-inside-sub works, but probably wants the cloning in order to act like a true closure | |||
| japhb | OK, gotcha. | 07:08 | |
| What about slurpy/flatten? | |||
| pmichaud | slurpy works, I don't have flatten yet | ||
| tell you what though | |||
| easiest for me would be either issue tracking or something on the wiki | |||
| japhb | ... me guesses what's coming | ||
| pmichaud | list the features you need and I can work from the list | 07:09 | |
| wiki.github.com/perl6/nqp-rx | |||
| or | |||
| dukeleto | pmichaud: githubs issue tracker ain't bad. or you could use trac | 07:10 | |
|
07:10
uniejo joined
|
|||
| japhb | I actually hate most bug trackers ... they make the reporting task harder than it needs to be. Sometimes by orders of magnitude. | 07:10 | |
| A wiki page I can do. | 07:11 | ||
| pmichaud | github.com/perl6/nqp-rx/issues | 07:13 | |
| either of those work -- just ping me to check the lsits | |||
| and I'll look into github issue tracking a bit more | |||
| dukeleto | pmichaud: does nqp support binary prefix operators and friends? how do I define a binary prefix operator in grammar-oper.pg ? | ||
| pmichaud: i am implementing a language which consists entirely of prefix operators | 07:14 | ||
| pmichaud | dukeleto: nqp can be used to build a language with specialied operators, yes. | 07:18 | |
| dalek | rkdown: 07f382a | fperrad++ | Configure.pir: add a shebang to Configure.pir |
||
| pmichaud | but I don't know of "binary prefix operator" | ||
| dalek | rkdown: 700ef97 | fperrad++ | t/ (19 files): fix shebang |
||
| pmichaud | all of the prefixes I'm used to are unary | ||
| dukeleto | pmichaud: for instance, in Factor, all operators are prefix. they modify a global stack | 07:20 | |
| pmichaud: each operator (or "parsing word", as they are called in Factor) has a "stack effect", basically, how many items from the stack they need as input, and how many items they return to the stack | 07:21 | ||
| japhb | dukeleto, you mean postfix? | ||
| dukeleto | pmichaud: all of my operators are basically 0-ary prefix ops, i think | ||
| japhb: Example: + 2 3 <== 2 and 3 are literals, which get pushed on to the stack, then + takes two items from the stack and returns 1 | 07:22 | ||
| japhb: + is a prefix operator there. but they are all 0-ary, so it kind of doesn't matter | 07:23 | ||
| japhb | Oh that's just deeply wrong to a Forth guy. | ||
| you forth love if honk then | |||
| pmichaud | dukeleto: you'd need a new operator expression engine for that, I think | 07:25 | |
| but essentially I'd be looking at something like | |||
| token expr:sym<+> { '+' <expr> <expr> } | |||
| token expr:sym<value> { \\d+ } | |||
| ...and maybe some of these need to be rules to handle whitespace | 07:26 | ||
| it's an interesting idea, though | |||
| nopaste | "pmichaud" at 72.181.176.220 pasted "closure returned from sub in nqp" (18 lines) at nopaste.snit.ch/18555 | 07:27 | |
|
07:28
chromatic joined
|
|||
| dukeleto | pmichaud: this 'interesting idea' is called Kea, Factor on Parrot | 07:29 | |
| pmichaud: are you saying that nqp-rx can't handle that syntax? | |||
| pmichaud | depends on what youmean by "nqprx" | ||
| if you're asking if nqprx can create a program to parse it, then sure, it can do it | |||
| example coming up | |||
| dukeleto | pmichaud: i want to know how to write my grammar-oper.pg, in the framework of the PCT | 07:30 | |
| pmichaud: example much appreciated | |||
| pmichaud | grammar-oper is no longer used | ||
| that's old PGE and nqp | |||
| and the operator precedence parser really only knows how to do unary prefix | 07:31 | ||
| japhb | pmichaud, oooh, closure returned from sub ... did you just make that work just now? | ||
| pmichaud | japhb: no, it "works" already | ||
| japhb | pmichaud, oh, but not cloned, so you only get to do it once? | ||
| dukeleto | pmichaud: ok. well, the language skeleton script in the parrot repo uses that. can we make a new skeleton script that uses nqp-rx? | ||
| japhb | (well, once and have it DWYM) | ||
| pmichaud | not cloned, so values might "leak" from one closure to another | ||
| japhb | right, gotcha | ||
| pmichaud | dukeleto: I'm doing it, yes. | ||
| dukeleto: just a sec | |||
| dukeleto | pmichaud: thanks! | ||
| pmichaud++ pmichaud++ | |||
| japhb | no kidding | 07:32 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "Kea example" (35 lines) at nopaste.snit.ch/18556 | ||
| "pmichaud" at 72.181.176.220 pasted "Kea example #2" (35 lines) at nopaste.snit.ch/18557 | 07:33 | ||
| dukeleto | pmichaud: cool! | 07:35 | |
| nopaste | "pmichaud" at 72.181.176.220 pasted "Kea example #3 (okay, now I'm just showing off :-)" (35 lines) at nopaste.snit.ch/18558 | ||
| japhb | NICE | 07:36 | |
| dukeleto | pmichaud: shiny! | ||
| pmichaud | dukeleto: is that along the lines of what you were looking for? ;-) | 07:38 | |
| japhb | pmichaud, I'm not sure how to express one of these requests. I want exists and kv for hashes, but I'm not sure if I should be asking for methods or syntax, or having pair support, or what? | ||
| I guess I could just say "exists and kv for hashes" :-) | 07:39 | ||
| pmichaud | japhb: jnthn was asking about that earlier. I don't quite know how to do that | ||
| in nqp | |||
| we can iterate hashes | |||
| oh, wait I do know how to do it. | |||
| japhb | What does hash iteration look like? | ||
| pmichaud | at the moment hash iteration (unlike p6) produces a list of hash keys | 07:40 | |
| japhb | ... so the equivalent of Glue.pir's keys() function, then | ||
| dukeleto | pmichaud: how do I tie those examples into an HLL using the PCT? | 07:41 | |
| pmichaud: just make my PCT use nqp-rx? | |||
| pmichaud: or is there lots of other stuff I am not understanding? | |||
| pmichaud: or is the PCT not really needed anymore? | 07:42 | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "hash.kv" (22 lines) at nopaste.snit.ch/18559 | ||
| pmichaud | dukeleto: nqp-rx is intended to be a complete front-end to pct | 07:43 | |
| indeed, nqp-rx is written in... nqp-rx | |||
| japhb | 'for self { ... }'?!? Woah. | ||
| pmichaud | self is a Hash | ||
| so 'for self { ... }' ends up iterating over the hash | |||
| dukeleto | pmichaud: so I just write my entire HLL in nqp, and I never have to deal with PCT? nqp takes care of that? | 07:44 | |
| japhb | Yeah, made sense after a sec, but I never would have guessed that one from first principles. :-) | ||
| pmichaud | well, I still need to update the HLL compiler components | ||
| japhb: perhaps the follwoing will be better | |||
|
07:44
he__ joined
|
|||
| dukeleto | pmichaud: i am very interested in using nqp-rx to implement Kea, so if you can give me some pointers about how to do that, I would greatly appreciate it | 07:45 | |
| pmichaud | dukeleto: my project for tonight was to be to write punie as an example compiler in nqp | 07:46 | |
| i.e., a full tutorial | |||
| on writing a compiler in nqp | 07:47 | ||
| but I'm getting a bit tired now (nearly 02h00 here), so I may do it in the morning. | |||
| anyway, I should have a complete-ish example tomorrow or thu | |||
| japhb | pmichaud, sorry for sidetracking you. | ||
| pmichaud | japhb: no problem, I've been completely sidetracked since yesterday afternoon by a number of things | ||
| dukeleto | pmichaud: that sounds great! i will definitely be one of your first implementors! | 07:48 | |
| japhb | pmichaud, Is this the kind of format you are looking for? wiki.github.com/perl6/nqp-rx/plumage-requests | 07:49 | |
| pmichaud | japhb: wfm | ||
| japhb | OK, cool. | ||
| pmichaud | parrot doesn't support "real pairs", so that's a bit tricky | 07:50 | |
| at least, on its own | |||
| but we can start to create a P6Lib that gives these sorts of methods to Parrot's builtin classes | |||
| actually, I'll do that too | |||
| "use P6;" :-) | |||
| japhb | I'll need to add more to that later. About 6.5 hours to rousting kids, so should try to get some rest, I think. | ||
| Yeah! | |||
| pmichaud | feel free to update that list and point me to it from time to time | 07:51 | |
| japhb | I will. | ||
| I've got more ideas, but just know that I should stop now or regret it in the morning. ;-) | |||
| pmichaud | oooh! ooh! | 07:52 | |
| Glue.pir ++! japhb++! | |||
| japhb | ;-) | ||
| pmichaud | I found a new toy. | ||
| dukeleto: example coming up :-) | |||
| japhb laughs until he coughs | |||
| dukeleto | pmichaud: nice! | ||
| pmichaud++ is teh awesome | 07:55 | ||
| nopaste | "pmichaud" at 72.181.176.220 pasted "kea compiler in nqp" (41 lines) at nopaste.snit.ch/18560 | 07:57 | |
| pmichaud | ...don't ask me for details, wait for the tutorial. | ||
| let's just say that it works. :) | |||
| japhb | Oh, so many college programming projects are going to have to get SO much tougher just to break even now. | 08:05 | |
| Damn you dukeleto for keeping me up! | |||
| pmichaud | japhb: I updated the wiki page :) | 08:07 | |
|
08:10
iblechbot joined
|
|||
| chromatic | Which wiki page? | 08:13 | |
| pmichaud | wiki.github.com/perl6/nqp-rx/plumage-requests | ||
| japhb had some feature requests for nqp, I marked the ones that are already implemented :) | |||
| chromatic | Thanks. | ||
| pmichaud | I'm just now adding @*ARGS | ||
| ends up being a 1-line change. | 08:14 | ||
| chromatic | Now you're showing off. | ||
| pmichaud | heh | ||
| nqp-rx is sooooo coool | |||
| unfortunately, I have another opcode request | |||
| whiteknight++ was working on it for me, but I've realized I really want something different | 08:15 | ||
| I'd like a version of load_bytecode that also runs the sub marked :main | |||
| (and if no sub is marked :main, the first one in the bytecode file) | |||
| i.e., I want to run a bytecode file as if it were being executed from the command line | 08:16 | ||
| in fact, it should probably be called main_bytecode, and perhaps run the :init subs also | |||
| still more powerful could be load_bytecode 'file', flags | |||
| chromatic | You said "opcode" and not "feature"; what makes this most useful as an opcode? | ||
| pmichaud | currently the only way to load bytecode files is with load_bytecode | 08:17 | |
| however, there's not a way for me to flag a subroutine to be automatically run as if it's the mainline | |||
| chromatic | Right. | ||
| pmichaud | i.e., it's the difference between "use" and "require" in p5 | ||
| (I think I have that right) | |||
| chromatic | Not exactly, but I understand what you mean. | 08:18 | |
| pmichaud | we have :load, but that means I have to do some funky stuff to get the mainline to be executed last | 08:19 | |
| and then there's not a way to load a bytecode file without running its mainline | |||
| chromatic | You want more flexibility in loading and executing PBC files. | ||
| pmichaud | right | ||
| currently the only good ways to do that are by setting up :load subs that communicate the options via out-of-band channels | 08:20 | ||
| what I had proposed to whiteknight was $P0 = load_bytecode 'foo.pbc' | |||
| which then returns me the Eval or other object that got loaded | |||
| (and could then be introspected for various behaviors) | |||
| chromatic | Or some object representing the bytecode. | 08:21 | |
| pmichaud | right. | ||
| as it is now, when a module gets loaded, it's very difficult to know what got loaded. :) | 08:22 | ||
| chromatic | Almost impossible, unless you want to root around in namespaces. | ||
| pmichaud | we could make a convention for exporters to make that information available somehow | ||
| anyway, I think I should come up with a more concrete proposal after trying a couple of things in my shiny nqp toy | |||
| chromatic | That's like the fetch/vivify vtable convention. We rely on people to get complex details correct, or else we can't use their stuff reliably. | 08:23 | |
| I don't like relying on people to get fiddly details they don't often use directly correct. | |||
|
08:31
JimmyZ joined
|
|||
| moritz | dukeleto: if you consider the parrotvm twitter account something public, maybe we could write an IRC bot that let people here in #parrot twitter over that account | 08:53 | |
|
09:50
AndyA joined
09:56
gaz joined
|
|||
| kthakore | win4 | 10:08 | |
|
10:18
krunen joined
10:28
bacek joined
10:41
mokurai left
11:03
integral joined
11:20
masak joined,
davidfetter joined
|
|||
| bacek | o hai | 11:22 | |
| purl: winxed? | |||
| purl | winxed is not javascript, just uses a familiar syntax. or code.google.com/p/winxed/ | ||
| bacek | NotFound, ping? | 11:37 | |
| msg NotFound winxed leaks as sieve, has a lot of premature pessemizations and require some kind of major rewrite in "Modern C++" :) | 11:51 | ||
| purl | Message for notfound stored. | ||
|
12:02
kthakore joined
12:30
s1n left
|
|||
| kthakore | dukeleto: plobsing: japhb Did you guys make NCI tickets? | 12:39 | |
| dukeleto: plobsing: japhb For the problems japhb was having with in OpenGL to NCI ? | |||
| Found it no problem | 12:44 | ||
| dukeleto: I got errors in the example becuase I think I was using rakudo --gen-parrot to install | |||
| dukeleto: will try later | 12:45 | ||
|
13:01
whiteknight joined
13:09
kj joined
|
|||
| whiteknight | good morning #parrot | 13:10 | |
| kj | good morning whiteknight | 13:11 | |
| whiteknight | hello kj | ||
|
13:11
tetragon joined
|
|||
| Coke wonders what happened to the 'talk to the hll authors' initiative. | 13:31 | ||
| moritz | we have HLL authors? | 13:32 | |
| what are they good for? | |||
| Coke | something that particle tried to drive a few weeks ago. | ||
| dalek | rrot: r42252 | jkeenan++ | branches/configtests/t/steps (6 files): Adapt steps test to use of all configuration data. |
13:37 | |
| Coke | when managing a local-only git repo, do folks tend to put them in a common location, or just scatter them? | 13:52 | |
| (I want to manage a few documents via git, but am concerned I'll lose track of which directories are git and which aren't.) | |||
|
13:58
pdcawley joined
14:07
allison joined
14:14
pdcawley joined
14:16
mikehh joined
14:23
jhorwitz joined
|
|||
| whiteknight | Coke: I use some scripts locally to modify the prompt if it finds a ".git" folder | 14:40 | |
| that's how I keep track of which directories are git, which are svn, and which are "normal" | 14:41 | ||
|
14:47
payload joined
|
|||
| Coke | can I see those? | 14:47 | |
|
14:54
mikehh joined
14:58
PacoLinux joined
|
|||
| Coke | nevermind, google has many options. | 14:58 | |
| whiteknight | probably better, mine are all very primitive | 15:00 | |
| NotFound | bacek: Winxed doesn't leak, it just uses a 'infinite memory' GC | 15:02 | |
| Coke | whiteknight: PS1='[\\u@\\h`__git_ps1` \\W]\\$ ' | 15:03 | |
| (didn't realize my git setup those predefined things.) | |||
| whiteknight | Coke: I don't understand that at all, but it's much more succinct then what I have | 15:04 | |
| NotFound | msg bacek Winxed doesn't leak, it just uses a 'infinite memory' GC | ||
| purl | Message for bacek stored. | ||
|
15:05
mikehh joined
|
|||
| whiteknight | NotFound: good GCs are hard to make. Easier to use a bad one | 15:07 | |
| NotFound | whiteknight: and fast, in this case. | 15:08 | |
| Fast to write the code, fast at runtime. | 15:09 | ||
| whiteknight | well, some bad GCs can be very slow | ||
| NotFound | whiteknight: inifinite memory is very fast, for some values of infinite ;) | ||
| whiteknight | right, it's very fast until the system has to buffer to disk | 15:10 | |
| NotFound | In this case, the life of the compiler is short, so no problem. | ||
|
15:11
iblechbot joined
|
|||
| NotFound | msg bacek for the Modern C++ part, the simpler C++ you use the less problems you have with people using older compilers | 15:13 | |
| purl | Message for bacek stored. | ||
| japhb | Holy frack. Coke++ # set |grep __git ==> lightbulb turns on | 15:19 | |
|
15:28
Psyche^ joined
|
|||
| whiteknight | do we have a list anywhere of native libraries we would like to have wrappers for? | 15:38 | |
| I thought we did at one point, but can't find it now | |||
| dukeleto | moritz: yes, I plan on making a script so that people can easily use the parrot twitter/identi. account | 15:42 | |
|
15:43
patspam joined
|
|||
| Coke | whiteknight: (list) I think sdl and tcl/tk are on someone's list. | 15:45 | |
| kthakore | Coke: \\o mines | ||
| :p | |||
| whiteknight | oh shoot, there were some tcl/tk patches that we were supposed to apply I hink | ||
| kthakore scurries back to #sdl | |||
| Coke | whiteknight: evaluate, anyway. | ||
| whiteknight | true | ||
|
15:46
mikehh joined
16:00
theory joined
|
|||
| NotFound | This code dies with assertion failure: | 16:24 | |
| .sub foo | |||
| .local string s | |||
| .return(s) | |||
| .end | |||
| .sub main :main | |||
| .local pmc p | |||
| p= foo() | |||
| .end | |||
| Coke | NotFound: no stringnull. | ||
| add a null s before the return. | |||
| NotFound | Coke: yes, but O expect p to get a null pmc or a string pmc containing a null string | 16:25 | |
| s/O/I | |||
| Coke | whoops. "null s" does the same thing. =-) | ||
| (s='' works, unsurprisingly) | 16:26 | ||
| NotFound | In any case, I don't expect a segfault for such innocent code. | ||
| Coke | I would add that to the pile of "things that point to requiring a stringnull" | ||
| or perhaps the pile of (kill strings and just use pmcs0 | |||
| NotFound | The problem is in callsignaturereturns.pmc | ||
|
16:27
cognominal joined
|
|||
| NotFound | Coke: I add to the pile of people calling a nonnull function with a null pointer | 16:27 | |
| Coke | sure, be specific. :P | 16:28 | |
| ;) | |||
| NotFound | My doubt is: return a PMCNULL or creating a HLLmapped string pmc? | ||
| Coke | can strings hold PMCNULLs? | 16:29 | |
| oh, whoops. | |||
| NotFound | Coke: the problem is not the string, is the signature that wants a pmc | ||
| Coke | I would say that a $P0 = string NULL should probably be a PMCNULL | ||
| not a HLLstring of '' | |||
| but I'd get a slightly wider concensus. | 16:30 | ||
| NotFound | In any case, anything is better than a segfault so I'm going to patch it. | ||
|
16:31
pdcawley_ joined
|
|||
| dalek | rrot: r42253 | NotFound++ | trunk/src/pmc/callsignaturereturns.pmc: [cage] set PMCNULL when the signature wants a PMC and have a NULL STRING* |
16:36 | |
| Coke | NotFound: we need a test for that, yes? =-) | ||
| NotFound | Coke: no, until we decide the intended result. | 16:37 | |
| I'm going to fill a ticket. | |||
| Coke | +1 | 16:38 | |
| purl | 1 | ||
| Coke | plumage seems to be missing a pointer in the README for people just trying to use the thing. | 16:49 | |
| (even pointing at ./plumage usage would help.) | 16:50 | ||
| NotFound | Coke: Have you evaluated Winxed harness? | 16:52 | |
| dalek | TT #1193 created by NotFound++: Setting PMC to NULL STRING | 16:53 | |
| Coke | nope. on my list, but it probably makes more sense to use something tcly. | ||
| whiteknight | NotFound: I suspect all that logic could be moved into get_string_pmc() | 16:54 | |
| Coke | plumage folk: partcl is known to not be installable. should it fail immediately when you issue the plumage command for it? | ||
| (or should I simplify your life and add an install target?) | 16:55 | ||
| mikehh | I am getting different failures in testr with g++ and gcc builds on Ubuntu 9.10 amd64 (both segfaults gcc in t/pmc/eval.t, g++ in t/pmc/threads.t) | ||
| NotFound | whiteknight: get_string_pmc takes a nonnull | ||
| whiteknight | NotFound: that can be changed :) | ||
| mikehh | got to go to the store - bbl | 16:56 | |
| NotFound | whiteknight: yes, but better do a mininal fix and fill a ticket. | ||
| whiteknight | agreed. Just making an observation | ||
| NotFound | BTW with this change I'm able to call "describe table" with Winxed Mysql nci example :) | 16:58 | |
| Coke does an ldd on the built (and uninstalled) tclsh and finds a lib dep on his build dir of parrot (even though he built partcl from the installed parrot) | 16:59 | ||
| whiteknight | which lib? | 17:05 | |
| purl | which lib are you using? Frontier? | ||
| whiteknight | purl forget which lib | ||
| purl | whiteknight: I forgot which lib | ||
| cotto_work | good morning | ||
| dukeleto | cotto_work: 'ello | 17:06 | |
|
17:07
mdevan joined
|
|||
| whiteknight | hello cotto_work | 17:11 | |
|
17:25
hercynium joined
|
|||
| dukeleto | japhb: you were right, my stuff was backwards | 17:35 | |
|
17:38
mj41 joined
|
|||
| whiteknight | mj41++ | 17:42 | |
|
17:46
patspam joined
17:51
patspam joined
17:56
jsut|work joined
|
|||
| japhb | Coke: I'm improving the Plumage readme now. And yes, you should add an install target for partcl. ;-) | 18:04 | |
| Coke: There, pushed. Let me know if the new USING section in the README is good enough for you. | 18:09 | ||
| dalek | rrot-plumage: 944b826 | japhb++ | : [META] README: Add a USING section |
18:11 | |
| Coke | whiteknight: the actual parrot lib. | 18:29 | |
|
18:35
chromatic joined
19:04
AndyA joined
19:05
mikehh joined
|
|||
| kthakore | chromatic: hi | 19:06 | |
| purl | niihau, kthakore. | ||
| kthakore | japhb: guess what ... | ||
| purl | maybe. | ||
| kthakore | purl no | ||
| purl | Maybe. | ||
| kthakore | purl not maybe | ||
| purl | kthakore: huh? | ||
| japhb | purl, go play in traffic | 19:07 | |
| purl wanders off to dent some cars. | |||
| kthakore | japhb: hi | ||
| purl | hola, kthakore. | ||
| moritz | purl: die in a fire | ||
| purl | HALP | ||
| kthakore | japhb: so guess what I start hacking SDL::MultiThread | ||
| japhb: the first function wants a (func *)function | |||
| japhb: so I am like fuck that | 19:08 | ||
| and now I am here | |||
| :) | |||
| hi moritz | |||
| moritz | hi kthakore | 19:10 | |
| kthakore | moritz: so I don't knwo what I am doing wrong here ... I can seem to do make install on parrot | 19:12 | |
| japhb | kthakore, yup. That's a biggie for OpenGL too. Being unable to handle (func *) func() pretty much kills OpenGL on Windows (and sucks everywhere else). | ||
| kthakore | moritz: my svn repo is gotten by rakudo --gen-install parrot thing | ||
| japhb: yeah ... don't know what I am goign to do for that yet | 19:13 | ||
| moritz | kthakore: what error do you get? | ||
| kthakore | kthakore: um nothing | ||
| moritz: I jsut can't do parrot | |||
| in the cmd | |||
| japhb | kthakore, if you used Rakudo's --gen-parrot, then when you did 'make install', it installed into another subdirectory of rakudo/ . | ||
| kthakore | its not in /usr/bin or /usr/local/bin | ||
| moritz | kthakore: then it's not in PATH | ||
| kthakore | japhb: ahhh! | ||
| moritz | it installs to parrot_install/bin/ by default | 19:14 | |
| kthakore | japhb: ok how do I change the prefix ? | ||
| moritz | under the rakudo dir | ||
| japhb | I tend to build and install parrot, then use Plumage to install Rakudo. | ||
| kthakore | Plumage? | ||
| purl | Plumage is, like, the future Parrot module ecosystem. It will include tools to search metadata, handle dependencies, install modules, and so forth. The repository is at gitorious.org/parrot-plumage/parrot-plumage and the design docs are at trac.parrot.org/parrot/wiki/ModuleEcosystem | ||
| kthakore | ooh | ||
| ok | |||
| more stuff to learn | |||
| japhb | And Parrot's install prefix is set with the '--prefix' option to Parrot's Configure. | 19:15 | |
| kthakore | japhb: ok thanks | ||
| japhb: btw how did you hnad (func *) parameters in XS > | |||
| ? | |||
| japhb | I set it to /usr/local/parrot in order to keep it from sticking things in my other /usr/local/... trees. Keeping it separated means that if I screw something up, it's easy to rm -rf that one directory, and start again. | ||
| kthakore | japhb: is there a way to get (func *) of a perl function? | 19:16 | |
| japhb: kk | |||
| japhb | kthakore, I would look at how POGL does it ... since I don't remember. | ||
| kthakore | japhb: ok! do you know a function (perl side) that uses this? | 19:17 | |
| japhb | Been a long time since I had to code a big XS from scratch | ||
| glxGetProcAddress. | |||
| kthakore | japhb: Ironically thats the first thing I learned in Perl :P | ||
| japhb | :-) | ||
| kthakore | thanks | ||
| japhb | np | ||
| kthakore | hope I am not bugging you too much in here but #sdl is quite now ... | 19:18 | |
| japhb | I would have answered there too, if you had pinged me there. But most of your questions were Parrot-related anyway, so ... | ||
| kthakore | parrot + SDL mix | ||
| japhb has too many channels open at once to backlog all of them, especially the chatty ones. | 19:19 | ||
| kthakore | japhb: I am fixated on SDL it seems for now | ||
| japhb | whiteknight, your iterate_function concept for NumMatrix2D ... might be nice to offer a way to not only get the old value, but the old *coordinates* in the helper function. That way you can implement position-dependent functions. | 19:20 | |
| (position within matrix, I mean) | |||
| kthakore | japhb: lol POGL never implemented glxGetProcAddress | ||
| japhb | kthakore, good, stick to it! | ||
| kthakore | :p | ||
| japhb | Oh sigh. | ||
| kthakore | japhb: I will | ||
| whiteknight | japhb: that's a good idea, yes | 19:21 | |
| kthakore | japhb: np I have an idea I want to try | ||
| kthakore goes deeper in to the rabbit hole | |||
| japhb: I am going to see how perl5 functions are made :) | |||
| yay more funs | 19:22 | ||
| japhb | enjoy | ||
| kthakore | will try too | ||
| moritz: see ya | |||
| whiteknight | japhb: So the necessary helper function is then going to have a signature of PiNNNPf->N, which is perfectly fine | ||
| japhb | whiteknight, oh, and thanks for the continued Plumage pimpage on your blog. | ||
| whiteknight | japhb: so long as I gets mah monay, it ain't no thang | 19:23 | |
| japhb not up to speed on new signatures ... 'Pi' => invocant PMC, and 'Pf' => function PMC? | |||
| whiteknight | Pf = :flat | ||
| obj.'foo'($N0, $N1, N2, args :flat) | 19:24 | ||
| Actually, it probably shouldn't be "Pi" there, since we don't want these functions to have to be methods | 19:25 | ||
| so "PNNNPf->N" | |||
|
19:28
joeri joined
|
|||
| Coke would be happy to defer 'make install' for partcl to someone who's already figured this out for some other language. | 19:31 | ||
|
19:32
hercynium joined
|
|||
| Coke | Are there any docs for this? | 19:35 | |
| Coke digs through pdd30 | |||
| dukeleto | msg whiteknight this link is broke on your newest blog post: trac.parrot.org/parrot/browser/tru...e_exec.pod | 19:36 | |
| purl | Message for whiteknight stored. | ||
| whiteknight | damnit! | ||
| the internet: flimsy | 19:40 | ||
| dukeleto | whiteknight: also, your blog just ate my comment | 19:41 | |
| dukeleto is angry | |||
| whiteknight: blogspot has a horrific comment interface | 19:42 | ||
| kthakore | oh noes!!!! | ||
| purl | hmmm... noes is sungo | ||
| whiteknight | dukeleto: I know~! | ||
| kthakore | who will save us from the wrath of duke of leto | ||
| dukeleto | kthakore: only the old men of the desert | ||
| chromatic | Unladen Swallow optimizations: lazypython.blogspot.com/2009/11/div...llows.html | 19:43 | |
| dalek | rrot: r42254 | coke++ | trunk/docs/compiler_faq.pod: Languages don't live in the repo for some time now. |
||
| Coke | RT is stalled at 96 tickets. | 19:47 | |
| whiteknight | it's not stalled: it's waiting for the final attack | ||
| Coke | allison: 6, chromatic: 5, coke: 8, cotto_work: 3; Infinoid: 3; jonathan 2; particle: 5; Andy: 2; pmichaud: 4, whiteknight: 4 | 19:49 | |
| whiteknight | chromatic: especially that optimization for loading globals looks promising | ||
| cotto_work | it used to be 2 for me | ||
| whiteknight | considering how much we have to look things up in namespaces | ||
| Coke | cotto_work: you snooze, you get more tickets! | ||
| (probably found one you had opened that was Nobody's) | |||
| cotto_work | zzzz | 19:50 | |
| whiteknight | "The observed a 32% speed-up in their benchmarks" from switching from stack-based to register-based | ||
| I bet they are using a much more optimal version then Parrot does | |||
| cotto_work | whiteknight, who? | 19:51 | |
| purl | whiteknight, is the win64 build working? | ||
| whiteknight | code.google.com/p/unladen-swallow/w...vantPapers | ||
| cotto_work | gotcha. it must be nice only having to think of a single langauge. ;) | 19:52 | |
| Coke | cotto_work: you mean PIR? | ||
| Coke ducks. | |||
| cotto_work | quack | 19:53 | |
| dukeleto | squawk | 19:54 | |
| whiteknight | it appears that the unladen swallow people are really focusing on three things: (1) using registers instead of stack, (2) context threading, and (3) trace-based JIT | 19:55 | |
|
19:56
mokurai joined
|
|||
| whiteknight | they also appear to be looking at GC improvements, but I don't see a particular algorithm that they are focusing on | 19:58 | |
| damnit! I need an ACM membership to read some of these papers | |||
| allison | whiteknight: using a GC at all, old Python is reference counting | ||
| whiteknight: I have ACM membership, and it's explicitly okay by their policy to pass on papers I download | 19:59 | ||
| whiteknight: send me links and I'll send you PDFs | |||
| whiteknight | portal.acm.org/citation.cfm?id=1134...N=85731901 | ||
| That paper is listed as "the most efficient collector" | |||
| so I'm intrigued | |||
|
20:00
desertm4x joined
|
|||
| whiteknight | portal.acm won't even let me create a web account | 20:02 | |
| I fill out the form and I get a page full of error messages and debugging information | 20:03 | ||
| cotto_work | that's part of the process | ||
| whiteknight | moritz++ | ||
| cotto_work | "if you can't debug and fix our broken code, you don't get a membership" | ||
| PacoLinux | whiteknight: your mail ? I have the paper here | 20:07 | |
| whiteknight | whiteknight? | 20:08 | |
| purl | it has been said that whiteknight is mailto:wknight8111@gmail.com or the grand master funk or wknight8111.blogspot.com/ | ||
| PacoLinux | ok | ||
| allison | whiteknight: paper emailed | ||
| NotFound | You win! | 20:10 | |
| PacoLinux | now he has 2 copies :) | 20:11 | |
| whiteknight | this better be a good damn paper | 20:12 | |
| allison | PacoLinux: :) | ||
| whiteknight | I hate all the little black and white charts in academic papers | 20:14 | |
| they can be so hard to read, they would do better to not put an image there at all | |||
| NotFound | whiteknight: use a green phospor monitor, and they're no longer black & white. | 20:15 | |
|
20:15
bacek joined
|
|||
| dukeleto | whiteknight: read more math papers. no pictures :) | 20:18 | |
| whiteknight | dukeleto: I read plenty. I prefer them | 20:19 | |
| dukeleto | whiteknight: a man after my own heart ;) | ||
| whiteknight | ah, this collector is very interesting | 20:21 | |
| they set page traps to perform copies in a lazy kind of way | |||
| very cache friendly | |||
| dukeleto | code.google.com/p/unladen-swallow/w...vantPapers <-- wow, lots of useful papers | 20:22 | |
| whiteknight | yes, lots! | ||
| desertm4x | dukeleto: The math papers I prefer to read actually have many pictures. ;-) | 20:23 | |
| whiteknight | I have several of them already, but a few are new | ||
| dukeleto | desertm4x: you must be one of those n-category peeps, then ;) | ||
| desertm4x | no, but some papers about numerical analysis have a section with numerical examples and pictures. ;) | 20:25 | |
| whiteknight | this Compressor GC uses a lot of platform-specific technologies that might cause some problems in Parrot | 20:26 | |
| dukeleto | desertm4x: what kind of math you study? mostly numerical? | 20:27 | |
| desertm4x: have you gotten into solving PDE's numerically? | |||
| desertm4x | I am not that spezialized yet, but I wrote my bachelor thesis about solving a certain type of Laplace equation using boundary element method. | 20:30 | |
|
20:33
patspam1 joined
|
|||
| Coke drops off. | 20:44 | ||
| whiteknight wishes to never see a Laplace equation again | 20:45 | ||
| GeJ | Good morning everyone | 20:46 | |
| whiteknight | hello GeJ | ||
| GeJ | Hello whiteknight, how are things going for you? | ||
| NotFound is pondering to drop the pir implementation of the parrot-mysql module and replace it with a winxed one. | |||
| whiteknight | GeJ: Things are going well, thanks! You? | ||
| GeJ: How is living in paradise? | |||
| GeJ | well except for that damn cold that a thoughtful coworker decided to share on my birthday, I guess it's pretty fine. | 20:51 | |
| cotto_work | Hmmm. Cold of the damned? That sounds dangerous. | 20:52 | |
| whiteknight | sounds like swine flue | ||
| GeJ | hopefully not. I'm going to see a doc later this morning just to check. | 20:53 | |
|
20:55
patspam1 joined
|
|||
| whiteknight | my wife finally got all her flu vaccines last week | 20:56 | |
| she'll still get sick anyway, but it won't be the flue | 20:57 | ||
| dukeleto | desertm4x: interesting! | ||
| whiteknight really needs to stop putting an "e" on the end of flu | |||
|
21:06
payload joined
21:07
patspam joined
21:08
payload joined
|
|||
| Coke | that plan is destined to go up in smoke. | 21:08 | |
| RT is still at 96. | 21:12 | ||
|
21:19
patspam joined
|
|||
| GeJ | in r41963, Util reverted the patch I sent for TT#1095. If I wanted to add 'freebsd' to the working OS's, should I reopen the ticket and add a new patch or should I create a new ticket? | 21:21 | |
| Coke | reopen to preserve history? | 21:24 | |
| (it doesn't really matter; 50/50) | |||
| Coke wonders why util did it that way. | 21:25 | ||
|
21:28
kurahaupo joined
|
|||
| GeJ | Warning: No permission to change ticket fields. | 21:40 | |
| dang! | |||
| well, I uploaded a new patch to TT#1095 if anyone wants to have a look at it. | 21:41 | ||
| Coke | want it reopened? | 21:44 | |
| done. | 21:45 | ||
| GeJ | Well, if you think it;s worth it. I could also simply create a new one. It's such a small patch, I want to make as little fuss as possible. | ||
| thanks Coke. | |||
| Coke | I think since MSWin32 is the only failure, we should probably reverse the sense of that patch. | 21:46 | |
| (so, if that, todo, else ok. instead of if ok, if ok, if ok, else todo) | |||
| dalek | TT #1095 reopened by coke++: [PATCH] un-TODO unconditionally some tests in t/op/io.t | 21:47 | |
| GeJ | so listing all the systems that b0rk? I could write that. | ||
| Coke | seems like we should default to assuming things work. | ||
| GeJ | Ok, I'm on it. Better work on that than on some crappy XML messages for a platform that doesn't work as advertised. | 21:49 | |
| Coke: I commented on the ticket and added a new version of the patch. | 22:07 | ||
|
22:20
Zak joined
22:29
Whiteknight joined
|
|||
| Whiteknight | hello | 22:29 | |
| dukeleto | Whiteknight: yo | 22:30 | |
| japhb | aloga | ||
| er | |||
| aloha | |||
| bash ... it's what I want to do everytime I use it | 22:31 | ||
| NotFound | Who was working in a pir based pir compiler? | 22:45 | |
| I was wondering how to access to interp->op_lib->op_code from pir. | 22:47 | ||
| bacek_at_work | NotFound, I was | 22:48 | |
|
22:48
hercynium joined
|
|||
| NotFound | bacek_at_work: how do you planned to obtain the opcode names? | 22:49 | |
| bacek_at_work | NotFound, extend ParrotInterpreter PMC to expose them :) | 22:50 | |
| NotFound | bacek_at_work: yeah, I was thinking about the same :) | ||
| A method on the interprter PMC, maybe? | 22:51 | ||
| bacek_at_work | NotFound, and change ops2pm.pl to made enum parrot_opcode_enums PIR visible | ||
| NotFound, get_pmc_keyed not sufficient? | |||
| NotFound | bacek_at_work: I'll think about that. | 22:53 | |
| bacek_at_work | NotFound, hmm.. May be introducing new ParrotOpLib PMC will be cleaner way to do it | 22:55 | |
|
22:56
jsut_ joined
|
|||
| chromatic | Maybe interp->op_lib->op_code isn't the right approach at all. | 22:56 | |
| NotFound | bacek_at_work: not a bad idea. And instantiating it directly, or getting it from the interp pmc? | ||
| bacek_at_work | NotFound, getting from interp | ||
| anyway, meetings time. See you! | 22:57 | ||
| dalek | kudo: 16eab0f | moritz++ | src/setting/Complex.pm: fix previous commit (Complex.perl), masak++ moritz-- |
||
| NotFound | chromatic: if we provide a higher level acces, the low level details can be easily changed later. | 22:59 | |
| chromatic | Before we provide higher level access, we have to figure out the information we really need. | ||
| NotFound | Good point. | ||
| But dynamically loaded opcodes must be obtained from the running interp, isn't it? | 23:00 | ||
| chromatic | We have to represent them somehow. Maybe we need a PMC representing oplibs. | 23:02 | |
| Whiteknight | well, if we had an OpLib PMC, which returned Opcode PMC objects we could keep things pretty well encapsulated | 23:04 | |
| NotFound | Maybe we must provide two ways for asking about ops, one for native ops and one for any op loaded. | 23:05 | |
| chromatic | Now we need to figure out what those PMCs do and what we need for them. | ||
| Whiteknight | At the most basic, I think we need a way to look up the op number and get the op name, and vice-versa | ||
| especially if we want a PIR-based compiler | |||
| NotFound | Or a HLL-based compiler. | 23:06 | |
| Whiteknight | an ability to look up like-named ops by signature would be nice too | ||
| chromatic | Before that, I think we need to fix bugs pmichaud has filed. | 23:07 | |
| Whiteknight | which bugs? | ||
| purl | which bugs are those? :) | ||
| Whiteknight | purl forget which bugs | ||
| purl | Whiteknight: I forgot which bugs | ||
| dalek | kudo: 5e05b88 | moritz++ | t/spectest.data: [t/spectest.data] remove junction test which is now gone. |
23:15 | |
| chromatic | How about TT #802, Whiteknight? | ||
| Whiteknight | let me look | ||
| oh great, the freeze opcode | 23:16 | ||
| dukeleto | FREEZE, or my VM will segfault! | 23:19 | |
| moritz | s/or/and/ | 23:21 | |
|
23:22
payload joined
|
|||
| dukeleto | moritz: ;) | 23:22 | |
| Whiteknight | okay, so the issue is that when we tries to freeze the compiled P6 code, it segfaults? | 23:23 | |
| chromatic | Looks like it. | 23:26 | |
|
23:41
plobsing joined
|
|||
| kthakore | hi chromatic | 23:56 | |
| chromatic | afternoon | 23:57 | |
| purl | afternoon is when we eat my lunch. | ||
| kthakore | chromatic: what's up | ||
| purl | The birds, the sky, and the ceiling. | ||
| kthakore | purl go die | ||
| purl | i think go die is boojum's favorite. | ||
| chromatic | Writing the Modern Perl book chapter on functions and subroutines. | 23:58 | |