Camelia, the Perl 6 bug

IRC log for #parrot, 2009-11-04

Parrot | source cross referenced

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

All times shown according to UTC.

Time Nick Message
00:00 Zak joined #parrot
00:08 Whiteknight joined #parrot
00:17 kiwichris Is anyone else using gcc 4.4.2 ?
00:17 plobsing I have it
00:18 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
00:18 NotFound darbelo: no, 4.4.1
00:19 kiwichris I have something funny happening with the vargs.
00:19 Whiteknight I'm on 4.4.1
00:20 patspam joined #parrot
00:21 plobsing what's funny about them
00:24 Whiteknight three vargs walk into a bar...
00:25 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
00:25 darbelo That can only end in a segfault.
00:26 NotFound kiwichris: What type is that var?
00:26 darbelo STRING *
00:26 kiwichris NotFound, STRING
00:27 kiwichris The bad value is nicely handled all the way down to a pointer call and then boom
00:28 kiwichris Checked the asm code and it looks ok.
00:28 darbelo kiwichris: is this the same boom you were having earlier today?
00:28 Whiteknight how the hell can that possibly be happening
00:28 kiwichris Whiteknight, wish I knew
00:28 plobsing I've been compiling with it all night for x86_64 without a hitch
00:29 plobsing I assume 'make test' can trigger the segfault?
00:29 dukeleto plobsing: rtems does not have 'make'
00:29 kiwichris plobsing, no make on RTEMS
00:29 darbelo plobsing: kiwichris is cross-compiling to RTEMS.
00:30 plobsing ok, so then what are you running to trigger this?
00:30 dukeleto plobsing: ./parrot foo.pir triggers the error on rtems
00:30 kiwichris doing: parrot -v p/benchmarks/fir.pir
00:30 dukeleto plobsing: where foo.pir is nothing but an empty main function
00:30 kiwichris where p is mounted to the examples dir
00:30 dukeleto plobsing: the error seems to happen when reading in any PIR file on RTEMS
00:30 kiwichris Will do gdb si and report back
00:31 dukeleto kiwichris: thanks!
00:31 dukeleto kiwichris: thanks for all of your hard work.
00:31 darbelo dukeleto: The 'boom' hapens when IMCC constructs the bytecode, before any running can happen.
00:31 Whiteknight kiwichris++
00:32 kiwichris dukeleto, no problem
00:34 darbelo dukeleto: More precisely, when processing the name for the segment, before adding it to the packfiledirectory.
00:36 dukeleto darbelo: so we are dying in packfile-creation-time. interesting
00:36 * dukeleto searches for $food
00:37 darbelo Yes, but it could be unrelated, as we die in the middle of a Parrot_sprintf_c() call.
00:37 darbelo That simply formats the name of the segment into a STRING that gets handed off to the segment creation code.
00:38 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 #parrot
00:45 plobsing my gdb skills must be lacking. the varargs don't show up for me.
00:49 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
01:09 nopaste "kiwichris" at 203.206.130.106 pasted "RTEMS port, mangled pointer in varargs" (15 lines) at http://nopaste.snit.ch/18551
01:15 darbelo kiwichris: Hmm. Are you compiling to a i386 target from amd64?
01:15 kiwichris darbelo, yes
01:16 kiwichris darbelo, parrot configured for amd64 then config hacked by me
01:16 darbelo Ouch.
01:17 darbelo There's plenty that can go wrong there.
01:17 darbelo How, exactly, did you hack the configureation?
01:19 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 kiwichris darbelo, all changes by hand
01:19 darbelo To the makefile?
01:20 kiwichris darbelo, Makefile is hand made by me using the list of source built for Linux
01:21 kiwichris Our va_arg is mapped to the gcc builtin one, __builtin_va_arg
01:22 darbelo have you looked at include/parrot/config.h ?
01:24 darbelo 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:25 kiwichris darbelo, yeap, this is what I hacked.
01:25 darbelo Excelent, can you nopaste it?
01:25 kiwichris darbelo, will it now
01:26 abqar joined #parrot
01:26 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:27 darbelo I don0t know. I've never looked at how gcc handles varargs
01:28 nopaste "kiwichris" at 203.206.130.106 pasted "RTEMS hacked config.h for parrot-1.7.0" (185 lines) at http://nopaste.snit.ch/18552
01:28 kiwichris darbelo, might have a play
01:28 plobsing nope. gets called in Parrot_sprintf_c
01:28 plobsing that and va_end
01:30 darbelo #define PARROT_BYTEORDER        0x12345678
01:30 darbelo I think you want:
01:30 darbelo #define PARROT_BYTEORDER        0x1234
01:31 kiwichris plobsing, what about the arg thing in getstring_va ? ( I am not an expert with vaargs)
01:31 kiwichris darbelo, changed
01:32 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
01:33 kiwichris 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;
01:34 darbelo seeing as you put #define HUGEINTVAL_SIZE 8 later.
01:35 kiwichris darbelo, yeah, nice spotting.
01:35 darbelo same for hugeintval.
01:35 darbelo same for *U*hugeintval, I mean
01:35 darbelo HUGEFLOATVAL looks ok to me.
01:35 kiwichris darbelo, done and thanks
01:36 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
01:37 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
01:38 plobsing ah paste buffer error!
01:43 kiwichris plobsing, huh ?
01:43 plobsing utter nonsense. I cut a candidate response and it accidentally got pasted in later
01:44 plobsing sorry
01:45 japhb Tene, darbelo, dukeleto, pmichaud: any Plumage hackers around?
01:46 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 Tene What's up?
01:46 purl The Canadian Dollar
01:47 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?
01:48 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.
01:49 japhb Which means no going back (save by branching from the past).
01:49 japhb I've basically had it with waiting.
01:49 Tene I approve.
01:49 japhb Alright, good, at least I'm not completely nuts.
01:49 japhb And on that note ... dinner time.
01:49 japhb Hope you feel better soon, Tene!
01:50 Tene Me too!
02:09 pmichaud fwiw, I think that switching over to nqp-rx is a pretty good idea :)
02:11 kiwichris plobsing, I think I see what is happening but I am not sure gcc is doing it.
02:14 cotto_work joined #parrot
02:16 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.
02:22 kiwichris plobsing, I think PARROT_VA_TO_VAPTR is wrong. It is not the address of (x). Is this a config thing ?
02:22 kiwichris plobsing, must be a x86_64 ABI vs 32bit thing
02:24 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 plobsing so a VA is a pointer.
02:25 kiwichris plobsing, on a 86_64 the PARROT_VA_TO_VAPTR is the value passed in
02:26 kiwichris plobsing, it would seem on RTEMS 32bit it needs the address of what is passed in.
02:26 kiwichris plobsing, config tests for this
02:26 plobsing hmmm... does changing that solve the problem?
02:26 plobsing I don't see that macro getting called a lot
02:27 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
02:27 plobsing lucky
02:27 plobsing or not so much
02:32 nopaste "kiwichris" at 203.206.130.106 pasted "RTEMS run fir.pir !!" (30 lines) at http://nopaste.snit.ch/18553
02:35 japhb Congrats, kiwichris++
02:36 dalek parrot-plumage: e27a136 | japhb++ | :
02:36 dalek parrot-plumage: Initial try at supporting nqp-rx
02:36 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/e27a1368582ac3a387ffce414b7aba69770b8b52
02:37 japhb That's weird, I wasn't the one who did that commit; just the one that merged it to master.
02:40 plobsing who should I ask about the --optimize configure flag?
02:42 Coke msg darbelo if you use KHAAAAAN, that happens to be my license plate.
02:42 purl Message for darbelo stored.
02:47 japhb Coke: awesome.
02:48 Coke japhb: http://www.matoe.org/gallery2/v/to​matoe/favorites/IMGP0015.JPG.html
02:49 Coke (though I have a different car now)
02:49 Coke msg NotFound PASSED 90 tests in 20 files
02:49 purl Message for notfound stored.
02:49 japhb Very cool.  Well chosen.
02:52 eternaleye joined #parrot
02:52 dalek parrot-plumage: 57e1a01 | japhb++ | :
02:52 dalek parrot-plumage: [META] README: We're using NQP-rx now, but call it NQP
02:53 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/57e1a01420050ff5430c131cb26f3d3b21bbb999
02:54 allison joined #parrot
02:55 japhb pmichaud, does NQP-rx run MAIN() automagically?
03:08 dukeleto holy embedded real-time parrots, batman! http://nopaste.snit.ch/18553
03:10 pmichaud japhb: not yet, it probably will/should at some point
03:10 dukeleto japhb: ping!
03:10 pmichaud japhb: I haven't quite figured out how that should work.
03:11 pmichaud unfortunately, this is yet another place where parrot doesn't provide a feature we need, so we have to work around it somehow.
03:14 kiwichris dukeleto, just packaging up the work to make it available to others.
03:14 dukeleto kiwichris: awesome!
03:14 purl awesome is, like, a window manager or at http://awesome.naquadah.org or awesome
03:14 dukeleto purl, forget awesome
03:15 purl dukeleto: I forgot awesome
03:16 dalek partcl: d0eb532 | (Will Coleda)++ |  (85 files):
03:16 dalek partcl: Remove svn-style Id keys.
03:16 dalek partcl: Resolve issue #118
03:16 dalek partcl: review: http://github.com/partcl/partcl/commit/d​0eb5328c11eef78c200b5b1b6fc2350d7ad4322
03:20 dukeleto japhb: did you merge the nqprx branch into master in plumage?
03:20 japhb dukeleto, pong
03:21 japhb dukeleto, yes, I did.
03:21 dukeleto japhb: indeed you did
03:21 japhb dalek didn't seem to understand that very well ...
03:21 dukeleto japhb: yes, i don't know why I asked when I have git log ...
03:21 patspam joined #parrot
03:21 dukeleto japhb: dalek has a small bug with recognizing commits from gitorious
03:21 dukeleto japhb: it doesn't see the first commit in a branch, but then sees it when it is merged
03:21 japhb pmichaud, oy vey # having to work around parrot to implement MAIN ()
03:22 japhb dukeleto, that's odd
03:22 dukeleto japhb: it is how it reads the rss feed
03:22 dukeleto japhb: and the way gitorious shows it is a bit odd as well
03:23 dukeleto japhb: gitorious only gives the sha1 of the merge commit, not the symbolic ref
03:23 dukeleto kind of annoying
03:23 japhb nodnod
03:23 japhb dukeleto, gitorious definitely feels more low-level, less porcelain
03:24 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.
03:28 kiwichris dukeleto, can we discuss the 'exit' calls ?
03:28 dukeleto kiwichris: sure
03:28 dukeleto kiwichris: what is up?
03:28 purl Me, you bitches!  I'm high on crack!
03:29 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?
03:30 kiwichris dukeleto, in Parrot_exit in exit.c
03:30 kiwichris dukeleto, there are other places which are deeper in the code
03:30 dukeleto kiwichris: what should we do instead?
03:30 kiwichris dukeleto, if I could hook a handler before starting Parrot I could manage it from the outside.
03:31 kiwichris 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?
03:32 kiwichris dukeleto, yes but in Parrot_exit because of things like the Parror on exit chain
03:32 kiwichris dukeleto, I can create a patch and submit it if you like
03:34 dukeleto kiwichris: sure, a patch to exit.c would be great
03:34 dukeleto kiwichris: what if we just don't call exit() in Parrot_exit() if we are in rtems?
03:35 dukeleto kiwichris: or call some other function on rtems?
03:35 kthakore joined #parrot
03:35 kthakore um hi
03:35 kthakore where is a good place to look into PASM/PIR?
03:35 janus joined #parrot
03:35 kthakore Is there an equivalent of hello world?
03:36 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.
03:36 dukeleto kthakore: or examples/ in general
03:36 kthakore dukeleto: kk
03:36 kthakore thanks
03:36 dukeleto kthakore: examples/tutorial are the beginner docs
03:36 kiwichris dukeleto, how are patches submitted for review in parrot ?
03:36 plobsing that hook has the potential to be general. I can imagine some embeders wouldn't want parrot to exit their app on them
03:37 dukeleto kiwichris: a ticket is created on trac.parrot.org and the patch attached to it
03:37 kthakore dukeleto: thanks
03:37 dukeleto kiwichris: then send an email to parrot-dev asking people to review the patch
03:37 kthakore dukeleto: hopefully if I start now by Feb I can learn enough for SWIG
03:37 kthakore or alternative
03:37 dukeleto kthakore: why by feb?
03:37 kiwichris plobsing, yes very general, basically 'void (exiter*)(int status);"
03:37 kthakore dukeleto: SWIG is not looking that great for SDL as its 1 <--> 1
03:38 kthakore dukeleto: thats when I am done my exam and classes for a while
03:38 kthakore dukeleto: and hopefully redesign of SDL
03:38 dukeleto kthakore: nice
03:39 kthakore dukeleto: so any atlernatives for SWIG your blitz think I can look at ?
03:39 kthakore dukeleto: or ExtUtils::PASM ?
03:39 plobsing kthakore: if your XS bindings are shallow, you could parse and repurpose those
03:40 kthakore plobsing: how?
03:40 dalek parrot: r42251 | jkeenan++ | branches/configtests (3 files):
03:40 dalek parrot: Begin work on transforming tests of step classes to use results of configuration.  Create Parrot::Configure::Step::Test.
03:40 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42251/
03:40 plobsing if you don't have CODE/PPCODE sections, XS is just a signature defn
03:40 plobsing parrot has NCI
03:40 plobsing which accepts signatures
03:40 plobsing you'd need to convert from one to the other
03:41 plobsing 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 ?
03:41 plobsing how long are your CODE/PPCODE sections
03:42 plobsing thats what it comes down to.
03:42 kthakore plobsing: ranging from OneLine to 15 lines at most
03:42 plobsing parrot obviously can't provide perlguts for you
03:42 kthakore plobsing: ah ok
03:42 kthakore plobsing: I see where you are going
03:42 kthakore plobsing: ok well can I make an 'object' in parrot?
03:43 plobsing from C or from within?
03:43 kthakore plobsing: or hook into GC from NCI
03:43 plobsing you can do both, of course
03:43 plobsing hook GC from NCI?
03:43 kthakore plobsing: ok. I like this approach ... can I pm email so I can contact with more questions?
03:43 plobsing I think you have an XY problem
03:45 plobsing sure
03:45 kthakore whats XY problem and ... is there an example of this somewhere?
03:46 plobsing XY problem => you really want to do X, but you ask about doing Y
03:46 plobsing purl XY?
03:47 purl XY is at http://hello.com or at http://www.xymag.com or (: xy problem)
03:47 plobsing purl XY problem?
03:47 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 http://www.perlmonks.org/index.pl?node_id=542341
03:47 kthakore plobsing: ah agreed I have no clue what I am asking most of the time/
03:47 kthakore plobsing: XS -> Parrot is what I want, what should I ask for?
03:48 plobsing well parrot doesn't have a direct analog. many ppl consider XS to be somewhat evil
03:49 plobsing the closest/easiest thing is probably: http://docs.parrot.org/parrot/latest/html/​docs/pdds/draft/pdd16_native_call.pod.html
03:50 plobsing 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
03:50 plobsing it also has the ability to define new object types (PMCs) and new core operations
03:50 kthakore yay!
03:51 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
03:52 kthakore plobsing: I will look
03:52 kthakore plobsing thanks
03:52 plobsing no problem
03:57 kthakore dukeleto: thanks fo the examples
03:57 dukeleto kthakore: no worries. enjoy!
03:57 plobsing dukeleto: I looked at the factor FFI system as you suggested
03:58 dukeleto plobsing: and?
03:58 plobsing dukeleto: all I saw was nice *syntax*.
03:58 dukeleto kthakore: xs -> parrot is blizkost
03:58 dukeleto plobsing: yes, that is what I was referring to
03:58 plobsing dukeleto: as I understand i, that's not the domain of parrot, but hlls
03:58 dukeleto plobsing: their user-facing api for ffi
03:58 plobsing dukeleto: all parrot has to do is provide the functionality
03:59 dukeleto plobsing: you would be correct. but parrot will have a user-facing ffi api for hll devs
03:59 dukeleto plobsing: or hopefully something approaching an api
03:59 dukeleto blizkost?
03:59 purl well, blizkost is http://github.com/jnthn/blizkost/tree/master or the last Jonathan's project, an embedding of Perl 5 in Perl 6
03:59 dukeleto kthakore: if you want to talk to XS from PIR/PASM/NQP/Perl 6, start hacking on blizkost
04:00 kthakore dukeleto: ok thanks
04:00 dukeleto plobsing: i agree. xs is evil
04:00 plobsing dukeleto: the NCI pmc can be wrapped six ways to sunday if ppl want sugar
04:00 dukeleto plobsing: but we need a bridge from it so that people can flee it
04:00 dukeleto plobsing: people tend to want sugar
04:01 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
04:02 plobsing as I see it, there aren't a lot of users of the NCI API at the moment.
04:03 plobsing and I think that has more to do with the general lack of libraries of a young VM
04:04 plobsing we have great parser tools. if anyone wants a new DSL, nqp is right there
04:06 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.
04:06 plobsing I was going to look into that.
04:09 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?
04:10 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
04:10 kthakore dukeleto: will try later ...
04:10 plobsing japhb: can you do so on a wiki page?
04:10 plobsing NCI shortcommings or somesuch
04:11 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?  :-/
04:11 plobsing I saw those and started thinking.
04:11 japhb Well, that's a start.  :-)
04:12 plobsing one problem is that AFAICT, you can't do the signle-pointer callbacks in straight C or equivalent
04:12 plobsing which means it won't work some places (similar to places you can't JIT)
04:12 japhb OK, I'll try to whip something up later or tomorrow.  Right now being called by $better_half.
04:12 plobsing so I'm not sure how we want to handle that
04:14 dukeleto kthakore: broken examples?
04:14 dukeleto kthakore: please let us know which
04:14 dukeleto kthakore: there should be tests for those
04:14 plobsing t/examples ?
04:15 dalek parrot-plumage: 3fae3e0 | japhb++ | :
04:15 dalek parrot-plumage: [CORE] Glue.pir: Add eval(), print(), and say()
04:15 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/3fae3e0fc40a6cba526f1334a2fb6e033438da36
04:15 dalek parrot-plumage: bf4c551 | japhb++ | :
04:15 dalek parrot-plumage: [PROBES] cap-test.nqp: We have simple string interpolation now
04:15 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/bf4c551b7f869b284753c35f727b6f16685a2115
04:15 plobsing dukeleto: do you know anything about --optimize?
04:15 dukeleto plobsing: yes. what do you need to know?
04:15 plobsing the struct access it inlines, is it guarranteed to be equivalent?
04:16 plobsing 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?
04:18 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
04:18 dukeleto plobsing: try it out and let us know :)
04:19 plobsing I'm pretty sure its fine now. But after the next optimization round? who knows?
04:20 plobsing 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
04:20 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)
04:21 dukeleto eternaleye: i am not sure, but it would at least depend on the type of PMC
04:22 eternaleye dukeleto: Maybe, but I thought that all the type-dependent data was in pointers, rather than inline in struct PMC?
04:26 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
04:26 plobsing it appears to be fixed size
04:26 plobsing but I can't see any PDD saying that won't change
04:34 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:39 dalek TT #1183 closed by dukeleto++: dies_ok() for Test::More
04:42 plobsing I wasn't sure wether we were talking about at runtime or between releases
04:43 dukeleto plobsing: me either
04:43 dukeleto plobsing: perhaps eternaleye only meant at runtime
04:45 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 petdance joined #parrot
04:45 dukeleto eternaleye: then yes, you can rely on sizeof(PMC)
04:45 dukeleto http://leto.net/dukeleto.pl/2009/​11/realtime-embedded-parrots.html
04:48 tetragon_ joined #parrot
04:54 tetragon joined #parrot
04:56 Zak joined #parrot
05:10 theory joined #parrot
05:13 kiwichris joined #parrot
05:27 jsut joined #parrot
05:42 dalek tracwiki: v115 | japhb++ | WikiStart
05:42 dalek tracwiki: https://trac.parrot.org/parrot/wiki/W​ikiStart?version=115&amp;action=diff
06:38 japhb plobsing, see https://trac.parrot.org/parrot/wiki/NCITasklist
06:38 japhb That's my first pass brain dump on NCI weaknesses
06:38 dalek tracwiki: v1 | japhb++ | NCITasklist
06:38 dalek tracwiki: Initial brain dump
06:38 dalek tracwiki: https://trac.parrot.org/parrot/wiki/N​CITasklist?version=1&amp;action=diff
06:39 fperrad joined #parrot
06:39 japhb fperrad, I forget if you already answered this: Do you have any patches, tickets, etc. waiting on me?
06:41 fperrad japhb, currently nothing
06:41 japhb fperrad, excellent.  :-)
06:44 dukeleto japhb: so does plumage require nqp-rx now?
06:44 japhb dukeleto, yup
06:47 japhb pmichaud, ping
06:48 pmichaud pong
06:48 dukeleto japhb: what do you think about using a git submodule?
06:49 dalek parrot-plumage: a4ed590 | japhb++ | :
06:49 dalek parrot-plumage: [BUILD] Configure.nqp: Use string interpolation; fix out of date comments
06:49 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/a4ed59019249a248f6dd7b8d2a331e6b663c974c
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
06:49 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
06:50 japhb dukeleto, yep, I understand submodules.
06:50 dukeleto japhb: just checking ;)
06:50 dukeleto japhb: sounds like pmichaud doesn't want to deal with parrot deprecation policies, which is very understandable
06:50 japhb pmichaud, I'd like to start converting plumage's PGE regex handling to the NQP-rx native regexen.
06:51 japhb pmichaud, can you help by showing how that should look for something like plumage's Configure.nqp?
06:51 japhb ... and let me know what I can drop from Glue.pir in the regex/string handling section?
06:51 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
06:51 pmichaud japhb: I still haven't figured out the regex invocation syntax to use :-|
06:52 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:53 pmichaud I guess you're probably wanting    my $/ :=   $target ~~ /regex/;   ?
06:53 pmichaud or
06:53 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.
06:53 pmichaud my $match :=  $target ~~ /regex/;  ?
06:54 pmichaud 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,
06:54 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
06:54 japhb but I'm just looking to replace my rx() hack
06:55 japhb and all_matches()
06:55 pmichaud which isn't a bad hack, fwiw :)
06:55 japhb :-)
06:55 pmichaud oooh, all_matches isn't available yet
06:55 pmichaud oh, wait
06:56 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?
06:56 pmichaud i.e., the :global flag
06:56 japhb Yeah, non-overlapping
06:56 pmichaud okay, that can be emulated
06:56 japhb I didn't try for exhaustive
06:57 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.  :-)
06:57 japhb pmichaud, oh sure.
06:57 japhb no problem.
06:57 pmichaud yes, moving Glue.pir to be native nqp would be good
06:57 pmichaud actually, I'm eager for lots of nqp examples to test and improve the compiler
06:57 japhb And did you do try syntax yet?
06:57 pmichaud not yet, that's a bit trickier still
06:58 pmichaud 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.  :-)
06:58 japhb nodnod
06:58 pmichaud (and that's high priority, so it should happen fairly quickly for both)
06:58 japhb excellent
06:58 japhb Did you do closures?
06:58 pmichaud Test.pm in Rakudo needs try in order to work
06:58 japhb nodnod
06:58 pmichaud closures are present, I have no idea if they work :)
06:58 japhb heh
06:59 japhb Optional params and named optionals are there, yes?
06:59 pmichaud closures might have to be done with    pir::newclosure({ ... })
06:59 pmichaud oh, wait, that's silly
06:59 japhb heh
06:59 pmichaud I can always get bare blocks to newclosure themselves
06:59 pmichaud and they may do it already
06:59 pmichaud let's see if it works already or not
07:00 pmichaud (testing locally)
07:00 japhb k
07:00 pmichaud (recompiling locally)
07:00 eternaleye (think globally, but act in local variable scope)
07:01 pmichaud think globally, act lexically, don't accept any strange packages
07:01 japhb And always remember to contextualize
07:01 eternaleye What about Parcels? ;D
07:02 eternaleye I think we've Captured the essence of the joke.
07:02 eternaleye </puns>
07:04 nopaste "pmichaud" at 72.181.176.220 pasted "closures in nqp, sorta" (11 lines) at http://nopaste.snit.ch/18554
07:04 pmichaud nqp doesn't properly clone the closure, but that can be fixed.
07:05 japhb Does that include -> { ... } syntax and/or sub-inside-sub, or just bare blocks?
07:07 pmichaud at the moment it's just bare blocks
07:07 pmichaud pointy subs will be available soon
07:07 pmichaud sub-inside-sub works, but probably wants the cloning in order to act like a true closure
07:08 japhb OK, gotcha.
07:08 japhb What about slurpy/flatten?
07:08 pmichaud slurpy works, I don't have flatten yet
07:08 pmichaud tell you what though
07:08 pmichaud easiest for me would be either issue tracking or something on the wiki
07:08 japhb ... me guesses what's coming
07:09 pmichaud list the features you need and I can work from the list
07:09 pmichaud http://wiki.github.com/perl6/nqp-rx
07:09 pmichaud or
07:10 dukeleto pmichaud: githubs issue tracker ain't bad. or you could use trac
07:10 uniejo joined #parrot
07:10 japhb I actually hate most bug trackers ... they make the reporting task harder than it needs to be.  Sometimes by orders of magnitude.
07:11 japhb A wiki page I can do.
07:13 pmichaud http://github.com/perl6/nqp-rx/issues
07:13 pmichaud either of those work -- just ping me to check the lsits
07:13 pmichaud and I'll look into github issue tracking a bit more
07:13 dukeleto pmichaud: does nqp support binary prefix operators and friends? how do I define a binary prefix operator in grammar-oper.pg ?
07:14 dukeleto pmichaud: i am implementing a language which consists entirely of prefix operators
07:18 pmichaud dukeleto: nqp can be used to build a language with specialied operators, yes.
07:18 dalek markdown: 07f382a | fperrad++ | Configure.pir:
07:18 dalek markdown: add a shebang to Configure.pir
07:18 dalek markdown: review: http://github.com/fperrad/markdown/commit​/07f382ad4ed3e7a7caee640612a9005a70791298
07:18 pmichaud but I don't know of "binary prefix operator"
07:18 dalek markdown: 700ef97 | fperrad++ | t/ (19 files):
07:18 dalek markdown: fix shebang
07:18 dalek markdown: review: http://github.com/fperrad/markdown/commit​/700ef97efedb181005ad045225dee8f5c8b9332a
07:18 pmichaud all of the prefixes I'm used to are unary
07:20 dukeleto pmichaud: for instance, in Factor, all operators are prefix. they modify a global stack
07:21 dukeleto 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?
07:21 dukeleto pmichaud: all of my operators are basically 0-ary prefix ops, i think
07:22 dukeleto 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:23 dukeleto 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.
07:23 japhb you forth love if honk then
07:25 pmichaud dukeleto: you'd need a new operator expression engine for that, I think
07:25 pmichaud but essentially I'd be looking at something like
07:25 pmichaud token expr:sym<+> { '+' <expr> <expr> }
07:25 pmichaud token expr:sym<value> { \d+ }
07:26 pmichaud ...and maybe some of these need to be rules to handle whitespace
07:26 pmichaud it's an interesting idea, though
07:27 nopaste "pmichaud" at 72.181.176.220 pasted "closure returned from sub in nqp" (18 lines) at http://nopaste.snit.ch/18555
07:28 chromatic joined #parrot
07:29 dukeleto pmichaud: this 'interesting idea' is called Kea, Factor on Parrot
07:29 dukeleto pmichaud: are you saying that nqp-rx can't handle that syntax?
07:29 pmichaud depends on what youmean by "nqprx"
07:29 pmichaud if you're asking if nqprx can create a program to parse it, then sure, it can do it
07:29 pmichaud example coming up
07:30 dukeleto pmichaud: i want to know how to write my grammar-oper.pg, in the framework of the PCT
07:30 dukeleto pmichaud: example much appreciated
07:30 pmichaud grammar-oper is no longer used
07:30 pmichaud that's old PGE and nqp
07:31 pmichaud 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?
07:31 pmichaud japhb: no, it "works" already
07:31 japhb pmichaud, oh, but not cloned, so you only get to do it once?
07:31 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?
07:31 japhb (well, once and have it DWYM)
07:31 pmichaud not cloned, so values might "leak" from one closure to another
07:31 japhb right, gotcha
07:31 pmichaud dukeleto: I'm doing it, yes.
07:31 pmichaud dukeleto: just a sec
07:31 dukeleto pmichaud: thanks!
07:31 dukeleto pmichaud++ pmichaud++
07:32 japhb no kidding
07:32 nopaste "pmichaud" at 72.181.176.220 pasted "Kea example" (35 lines) at http://nopaste.snit.ch/18556
07:33 nopaste "pmichaud" at 72.181.176.220 pasted "Kea example #2" (35 lines) at http://nopaste.snit.ch/18557
07:35 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 http://nopaste.snit.ch/18558
07:36 japhb NICE
07:36 dukeleto pmichaud: shiny!
07:38 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?
07:39 japhb 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
07:39 pmichaud in nqp
07:39 pmichaud we can iterate hashes
07:39 pmichaud oh, wait I do know how to do it.
07:39 japhb What does hash iteration look like?
07:40 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
07:41 dukeleto pmichaud: how do I tie those examples into an HLL using the PCT?
07:41 dukeleto pmichaud: just make my PCT use nqp-rx?
07:41 dukeleto pmichaud: or is there lots of other stuff I am not understanding?
07:42 dukeleto pmichaud: or is the PCT not really needed anymore?
07:42 nopaste "pmichaud" at 72.181.176.220 pasted "hash.kv" (22 lines) at http://nopaste.snit.ch/18559
07:43 pmichaud dukeleto: nqp-rx is intended to be a complete front-end to pct
07:43 pmichaud indeed, nqp-rx is written in... nqp-rx
07:43 japhb 'for self { ... }'?!?  Woah.
07:43 pmichaud self is a Hash
07:43 pmichaud so 'for self { ... }'   ends up iterating over the hash
07:44 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.  :-)
07:44 pmichaud well, I still need to update the HLL compiler components
07:44 pmichaud japhb: perhaps the follwoing will be better
07:44 he__ joined #parrot
07:45 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:46 pmichaud dukeleto: my project for tonight was to be to write punie as an example compiler in nqp
07:46 pmichaud i.e., a full tutorial
07:47 pmichaud on writing a compiler in nqp
07:47 pmichaud but I'm getting a bit tired now (nearly 02h00 here), so I may do it in the morning.
07:47 pmichaud anyway, I should have a complete-ish example tomorrow or thu
07:47 japhb pmichaud, sorry for sidetracking you.
07:47 pmichaud japhb: no problem, I've been completely sidetracked since yesterday afternoon by a number of things
07:48 dukeleto pmichaud: that sounds great! i will definitely be one of your first implementors!
07:49 japhb pmichaud, Is this the kind of format you are looking for?  http://wiki.github.com/per​l6/nqp-rx/plumage-requests
07:49 pmichaud japhb: wfm
07:49 japhb OK, cool.
07:50 pmichaud parrot doesn't support "real pairs", so that's a bit tricky
07:50 pmichaud at least, on its own
07:50 pmichaud but we can start to create a P6Lib that gives these sorts of methods to Parrot's builtin classes
07:50 pmichaud actually, I'll do that too
07:50 pmichaud "use P6;"  :-)
07:50 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.
07:50 japhb Yeah!
07:51 pmichaud feel free to update that list and point me to it from time to time
07:51 japhb I will.
07:51 japhb I've got more ideas, but just know that I should stop now or regret it in the morning.  ;-)
07:52 pmichaud oooh! ooh!
07:52 pmichaud Glue.pir ++!  japhb++!
07:52 japhb ;-)
07:52 pmichaud I found a new toy.
07:52 pmichaud dukeleto: example coming up :-)
07:52 * japhb laughs until he coughs
07:52 dukeleto pmichaud: nice!
07:55 dukeleto pmichaud++ is teh awesome
07:57 nopaste "pmichaud" at 72.181.176.220 pasted "kea compiler in nqp" (41 lines) at http://nopaste.snit.ch/18560
07:57 pmichaud ...don't ask me for details, wait for the tutorial.
07:57 pmichaud let's just say that it works.  :)
08:05 japhb Oh, so many college programming projects are going to have to get SO much tougher just to break even now.
08:05 japhb Damn you dukeleto for keeping me up!
08:07 pmichaud japhb:  I updated the wiki page :)
08:10 iblechbot joined #parrot
08:13 chromatic Which wiki page?
08:13 pmichaud http://wiki.github.com/per​l6/nqp-rx/plumage-requests
08:13 pmichaud japhb had some feature requests for nqp, I marked the ones that are already implemented :)
08:13 chromatic Thanks.
08:13 pmichaud I'm just now adding @*ARGS
08:14 pmichaud ends up being a 1-line change.
08:14 chromatic Now you're showing off.
08:14 pmichaud heh
08:14 pmichaud nqp-rx is sooooo coool
08:14 pmichaud unfortunately, I have another opcode request
08:15 pmichaud whiteknight++ was working on it for me, but I've realized I really want something different
08:15 pmichaud I'd like a version of load_bytecode that also runs the sub marked :main
08:15 pmichaud (and if no sub is marked :main, the first one in the bytecode file)
08:16 pmichaud i.e., I want to run a bytecode file as if it were being executed from the command line
08:16 pmichaud in fact, it should probably be called   main_bytecode, and perhaps run the :init subs also
08:16 pmichaud still more powerful could be   load_bytecode 'file', flags
08:16 chromatic You said "opcode" and not "feature"; what makes this most useful as an opcode?
08:17 pmichaud currently the only way to load bytecode files is with load_bytecode
08:17 pmichaud however, there's not a way for me to flag a subroutine to be automatically run as if it's the mainline
08:17 chromatic Right.
08:17 pmichaud i.e., it's the difference between  "use" and "require" in p5
08:17 pmichaud (I think I have that right)
08:18 chromatic Not exactly, but I understand what you mean.
08:19 pmichaud we have :load, but that means I have to do some funky stuff to get the mainline to be executed last
08:19 pmichaud and then there's not a way to load a bytecode file without running its mainline
08:19 chromatic You want more flexibility in loading and executing PBC files.
08:19 pmichaud right
08:20 pmichaud 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 pmichaud what I had proposed to whiteknight was    $P0 = load_bytecode 'foo.pbc'
08:20 pmichaud which then returns me the Eval or other object that got loaded
08:20 pmichaud (and could then be introspected for various behaviors)
08:21 chromatic Or some object representing the bytecode.
08:21 pmichaud right.
08:22 pmichaud 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.
08:22 pmichaud we could make a convention for exporters to make that information available somehow
08:22 pmichaud anyway, I think I should come up with a more concrete proposal after trying a couple of things in my shiny nqp toy
08:23 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 chromatic I don't like relying on people to get fiddly details they don't often use directly correct.
08:31 JimmyZ joined #parrot
08:53 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
09:50 AndyA joined #parrot
09:56 gaz joined #parrot
10:08 kthakore win4
10:18 krunen joined #parrot
10:28 bacek joined #parrot
10:41 mokurai left #parrot
11:03 integral joined #parrot
11:20 masak joined #parrot
11:20 davidfetter joined #parrot
11:22 bacek o hai
11:22 bacek purl: winxed?
11:22 purl winxed is not javascript, just uses a familiar syntax. or http://code.google.com/p/winxed/
11:37 bacek NotFound, ping?
11:51 bacek 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 #parrot
12:30 s1n left #parrot
12:39 kthakore dukeleto: plobsing: japhb  Did you guys make NCI tickets?
12:39 kthakore dukeleto: plobsing: japhb For the problems japhb was having with in OpenGL to NCI ?
12:44 kthakore Found it no problem
12:44 kthakore dukeleto: I got errors in the example becuase I think I was using rakudo --gen-parrot to install
12:45 kthakore dukeleto: will try later
13:01 whiteknight joined #parrot
13:09 kj joined #parrot
13:10 whiteknight good morning #parrot
13:11 kj good morning whiteknight
13:11 whiteknight hello kj
13:11 tetragon joined #parrot
13:31 * Coke wonders what happened to the 'talk to the hll authors' initiative.
13:32 moritz we have HLL authors?
13:32 moritz what are they good for?
13:32 Coke something that particle tried to drive a few weeks ago.
13:37 dalek parrot: r42252 | jkeenan++ | branches/configtests/t/steps (6 files):
13:37 dalek parrot: Adapt steps test to use of all configuration data.
13:37 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42252/
13:52 Coke when managing a local-only git repo, do folks tend to put them in a common location, or just scatter them?
13:52 Coke (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 #parrot
14:07 allison joined #parrot
14:14 pdcawley joined #parrot
14:16 mikehh joined #parrot
14:23 jhorwitz joined #parrot
14:40 whiteknight Coke: I use some scripts locally to modify the prompt if it finds a ".git" folder
14:41 whiteknight that's how I keep track of which directories are git, which are svn, and which are "normal"
14:47 payload joined #parrot
14:47 Coke can I see those?
14:54 mikehh joined #parrot
14:58 PacoLinux joined #parrot
14:58 Coke nevermind, google has many options.
15:00 whiteknight probably better, mine are all very primitive
15:02 NotFound bacek: Winxed doesn't leak, it just uses a 'infinite memory' GC
15:03 Coke whiteknight: PS1='[\u@\h`__git_ps1` \W]\$ '
15:03 Coke (didn't realize my git setup those predefined things.)
15:04 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
15:04 purl Message for bacek stored.
15:05 mikehh joined #parrot
15:07 whiteknight NotFound: good GCs are hard to make. Easier to use a bad one
15:08 NotFound whiteknight: and fast, in this case.
15:09 NotFound Fast to write the code, fast at runtime.
15:09 whiteknight well, some bad GCs can be very slow
15:09 NotFound whiteknight: inifinite memory is very fast, for some values of infinite ;)
15:10 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 #parrot
15:13 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.
15:19 japhb Holy frack.  Coke++ # set |grep __git ==> lightbulb turns on
15:28 Psyche^ joined #parrot
15:38 whiteknight do we have a list anywhere of native libraries we would like to have wrappers for?
15:38 whiteknight I thought we did at one point, but can't find it now
15:42 dukeleto moritz: yes, I plan on making a script so that people can easily use the parrot twitter/identi. account
15:43 patspam joined #parrot
15:45 Coke whiteknight: (list) I think sdl and tcl/tk are on someone's list.
15:45 kthakore Coke: \o mines
15:45 kthakore :p
15:45 whiteknight oh shoot, there were some tcl/tk patches that we were supposed to apply I hink
15:45 * kthakore scurries back to #sdl
15:45 Coke whiteknight: evaluate, anyway.
15:45 whiteknight true
15:46 mikehh joined #parrot
16:00 theory joined #parrot
16:24 NotFound This code dies with assertion failure:
16:24 NotFound .sub foo
16:24 NotFound .local string s
16:24 NotFound .return(s)
16:24 NotFound .end
16:24 NotFound .sub main :main
16:24 NotFound .local pmc p
16:24 NotFound p= foo()
16:24 NotFound .end
16:24 Coke NotFound: no stringnull.
16:24 Coke add a null s before the return.
16:25 NotFound Coke: yes, but O expect p to get a null pmc or a string pmc containing a null string
16:25 NotFound s/O/I
16:25 Coke whoops. "null s" does the same thing. =-)
16:26 Coke (s='' works, unsurprisingly)
16:26 NotFound In any case, I don't expect a segfault for such innocent code.
16:26 Coke I would add that to the pile of "things that point to requiring a stringnull"
16:26 Coke or perhaps the pile of (kill strings and just use pmcs0
16:26 NotFound The problem is in callsignaturereturns.pmc
16:27 cognominal joined #parrot
16:27 NotFound Coke: I add to the pile of people calling a nonnull function with a null pointer
16:28 Coke sure, be specific. :P
16:28 Coke ;)
16:28 NotFound My doubt is: return a PMCNULL or creating a HLLmapped string pmc?
16:29 Coke can strings hold PMCNULLs?
16:29 Coke oh, whoops.
16:29 NotFound Coke: the problem is not the string, is the signature that wants a pmc
16:29 Coke I would say that a $P0 = string NULL  should probably be a PMCNULL
16:29 Coke not a HLLstring of ''
16:30 Coke 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 #parrot
16:36 dalek parrot: r42253 | NotFound++ | trunk/src/pmc/callsignaturereturns.pmc:
16:36 dalek parrot: [cage] set PMCNULL when the signature wants a PMC and have a NULL STRING*
16:36 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42253/
16:36 Coke NotFound: we need a test for that, yes? =-)
16:37 NotFound Coke: no, until we decide the intended result.
16:37 NotFound I'm going to fill a ticket.
16:38 Coke +1
16:38 purl 1
16:49 Coke plumage seems to be missing a pointer in the README for people just trying to use the thing.
16:50 Coke (even pointing at ./plumage usage would help.)
16:52 NotFound Coke: Have you evaluated Winxed harness?
16:53 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.
16:54 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?
16:55 Coke (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)
16:55 NotFound whiteknight: get_string_pmc takes a nonnull
16:55 whiteknight NotFound: that can be changed :)
16:56 mikehh got to go to the store - bbl
16:56 NotFound whiteknight: yes, but better do a mininal fix and fill a ticket.
16:56 whiteknight agreed. Just making an observation
16:58 NotFound BTW with this change I'm able to call "describe table" with Winxed Mysql nci example :)
16:59 * 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)
17:05 whiteknight which lib?
17:05 purl which lib are you using?  Frontier?
17:05 whiteknight purl forget which lib
17:05 purl whiteknight: I forgot which lib
17:05 cotto_work good morning
17:06 dukeleto cotto_work: 'ello
17:07 mdevan joined #parrot
17:11 whiteknight hello cotto_work
17:25 hercynium joined #parrot
17:35 dukeleto japhb: you were right, my stuff was backwards
17:38 mj41 joined #parrot
17:42 whiteknight mj41++
17:46 patspam joined #parrot
17:51 patspam joined #parrot
17:56 jsut|work joined #parrot
18:04 japhb Coke: I'm improving the Plumage readme now.  And yes, you should add an install target for partcl.  ;-)
18:09 japhb Coke:  There, pushed.  Let me know if the new USING section in the README is good enough for you.
18:11 dalek parrot-plumage: 944b826 | japhb++ | :
18:11 dalek parrot-plumage: [META] README: Add a USING section
18:11 dalek parrot-plumage: review: http://gitorious.org/parrot-plumage/parrot-plumag​e/commit/944b8268d9546c16ff8bdf5368aec32fa8e13e16
18:29 Coke whiteknight: the actual parrot lib.
18:35 chromatic joined #parrot
19:04 AndyA joined #parrot
19:05 mikehh joined #parrot
19:06 kthakore chromatic: hi
19:06 purl niihau, kthakore.
19:06 kthakore japhb: guess what ...
19:06 purl maybe.
19:06 kthakore purl no
19:06 purl Maybe.
19:06 kthakore purl not maybe
19:06 purl kthakore: huh?
19:07 japhb purl, go play in traffic
19:07 * purl wanders off to dent some cars.
19:07 kthakore japhb: hi
19:07 purl hola, kthakore.
19:07 moritz purl: die in a fire
19:07 purl HALP
19:07 kthakore japhb: so guess what I start hacking SDL::MultiThread
19:07 kthakore japhb: the first function wants a (func *)function
19:08 kthakore japhb: so I am like fuck that
19:08 kthakore and now I am here
19:08 kthakore :)
19:08 kthakore hi moritz
19:10 moritz hi kthakore
19:12 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).
19:12 kthakore moritz: my svn repo is gotten by rakudo --gen-install parrot thing
19:13 kthakore japhb: yeah ... don't know what I am goign to do for that yet
19:13 moritz kthakore: what error do you get?
19:13 kthakore kthakore:  um nothing
19:13 kthakore moritz: I jsut can't do parrot
19:13 kthakore in the cmd
19:13 japhb kthakore, if you used Rakudo's --gen-parrot, then when you did 'make install', it installed into another subdirectory of rakudo/ .
19:13 kthakore its not in /usr/bin or /usr/local/bin
19:13 moritz kthakore: then it's not in PATH
19:13 kthakore japhb: ahhh!
19:14 moritz it installs to parrot_install/bin/ by default
19:14 kthakore japhb: ok how do I change the prefix ?
19:14 moritz under the rakudo dir
19:14 japhb I tend to build and install parrot, then use Plumage to install Rakudo.
19:14 kthakore Plumage?
19:14 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 http://gitorious.org/parrot-plumage/parrot-plumage and the design docs are at https://trac.parrot.org/pa​rrot/wiki/ModuleEcosystem
19:14 kthakore ooh
19:14 kthakore ok
19:14 kthakore more stuff to learn
19:15 japhb And Parrot's install prefix is set with the '--prefix' option to Parrot's Configure.
19:15 kthakore japhb: ok thanks
19:15 kthakore japhb: btw how did you hnad (func *) parameters in XS >
19:15 kthakore ?
19:15 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.
19:16 kthakore japhb: is there a way to get (func *) of a perl function?
19:16 kthakore japhb: kk
19:16 japhb kthakore, I would look at how POGL does it ... since I don't remember.
19:17 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
19:17 japhb glxGetProcAddress.
19:17 kthakore japhb: Ironically thats the first thing I learned in Perl :P
19:17 japhb :-)
19:17 kthakore thanks
19:17 japhb np
19:18 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 ...
19:18 kthakore parrot + SDL mix
19:19 * 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
19:20 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 japhb (position within matrix, I mean)
19:20 kthakore japhb: lol POGL never implemented glxGetProcAddress
19:20 japhb kthakore, good, stick to it!
19:20 kthakore :p
19:20 japhb Oh sigh.
19:20 kthakore japhb: I will
19:21 whiteknight japhb: that's a good idea, yes
19:21 kthakore japhb:  np I have an idea I want to try
19:21 * kthakore goes deeper in to the rabbit hole
19:21 kthakore japhb: I am going to see how perl5 functions are made :)
19:22 kthakore yay more funs
19:22 japhb enjoy
19:22 kthakore will try too
19:22 kthakore moritz: see ya
19:22 whiteknight japhb: So the necessary helper function is then going to have a signature of PiNNNPf->N, which is perfectly fine
19:22 japhb whiteknight, oh, and thanks for the continued Plumage pimpage on your blog.
19:23 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?
19:23 whiteknight Pf = :flat
19:24 whiteknight obj.'foo'($N0, $N1, N2, args :flat)
19:25 whiteknight Actually, it probably shouldn't be "Pi" there, since we don't want these functions to have to be methods
19:25 whiteknight so "PNNNPf->N"
19:28 joeri joined #parrot
19:31 * Coke would be happy to defer 'make install' for partcl to someone who's already figured this out for some other language.
19:32 hercynium joined #parrot
19:35 Coke Are there any docs for this?
19:35 * Coke digs through pdd30
19:36 dukeleto msg whiteknight this link is broke on your newest blog post: https://trac.parrot.org/parrot/br​owser/trunk/docs/native_exec.pod
19:36 purl Message for whiteknight stored.
19:36 whiteknight damnit!
19:40 whiteknight the internet: flimsy
19:41 dukeleto whiteknight: also, your blog just ate my comment
19:41 * dukeleto is angry
19:42 dukeleto whiteknight: blogspot has a horrific comment interface
19:42 kthakore oh noes!!!!
19:42 purl hmmm... noes is sungo
19:42 whiteknight dukeleto: I know~!
19:42 kthakore who will save us from the wrath of duke of leto
19:42 dukeleto kthakore: only the old men of the desert
19:43 chromatic Unladen Swallow optimizations: http://lazypython.blogspot.com/2009/​11/diving-into-unladen-swallows.html
19:43 dalek parrot: r42254 | coke++ | trunk/docs/compiler_faq.pod:
19:43 dalek parrot: Languages don't live in the repo for some time now.
19:43 dalek parrot: review: https://trac.parrot.org/parrot/changeset/42254/
19:47 Coke RT is stalled at 96 tickets.
19:47 whiteknight it's not stalled: it's waiting for the final attack
19:49 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
19:49 cotto_work it used to be 2 for me
19:49 whiteknight considering how much we have to look things up in namespaces
19:49 Coke cotto_work: you snooze, you get more tickets!
19:49 Coke (probably found one you had opened that was Nobody's)
19:50 cotto_work zzzz
19:50 whiteknight "The observed a 32% speed-up in their benchmarks" from switching from stack-based to register-based
19:50 whiteknight I bet they are using a much more optimal version then Parrot does
19:51 cotto_work whiteknight, who?
19:51 purl whiteknight, is the win64 build working?
19:51 whiteknight http://code.google.com/p/unlad​en-swallow/wiki/RelevantPapers
19:52 cotto_work gotcha.  it must be nice only having to think of a single langauge. ;)
19:52 Coke cotto_work: you mean PIR?
19:52 * Coke ducks.
19:53 cotto_work quack
19:54 dukeleto squawk
19:55 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:56 mokurai joined #parrot
19:58 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 whiteknight damnit! I need an ACM membership to read some of these papers
19:58 allison whiteknight: using a GC at all, old Python is reference counting
19:59 allison whiteknight: I have ACM membership, and it's explicitly okay by their policy to pass on papers I download
19:59 allison whiteknight: send me links and I'll send you PDFs
19:59 whiteknight http://portal.acm.org/citation.cfm?id=​1134023&amp;coll=GUIDE&amp;dl=GUIDE&am​p;CFID=13233945&amp;CFTOKEN=85731901
19:59 whiteknight That paper is listed as "the most efficient collector"
19:59 whiteknight so I'm intrigued
20:00 desertm4x joined #parrot
20:02 whiteknight portal.acm won't even let me create a web account
20:03 whiteknight 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
20:03 whiteknight moritz++
20:03 cotto_work "if you can't debug and fix our broken code, you don't get a membership"
20:07 PacoLinux whiteknight: your mail ? I have the paper here
20:08 whiteknight whiteknight?
20:08 purl it has been said that whiteknight is mailto:wknight8111@gmail.com or the grand master funk or http://wknight8111.blogspot.com/
20:08 PacoLinux ok
20:08 allison whiteknight: paper emailed
20:10 NotFound You win!
20:11 PacoLinux now he has 2 copies :)
20:12 whiteknight this better be a good damn paper
20:12 allison PacoLinux: :)
20:14 whiteknight I hate all the little black and white charts in academic papers
20:14 whiteknight they can be so hard to read, they would do better to not put an image there at all
20:15 NotFound whiteknight: use a green phospor monitor, and they're no longer black & white.
20:15 bacek joined #parrot
20:18 dukeleto whiteknight: read more math papers. no pictures :)
20:19 whiteknight dukeleto: I read plenty. I prefer them
20:19 dukeleto whiteknight: a man after my own heart ;)
20:21 whiteknight ah, this collector is very interesting
20:21 whiteknight they set page traps to perform copies in a lazy kind of way
20:21 whiteknight very cache friendly
20:22 dukeleto http://code.google.com/p/unlad​en-swallow/wiki/RelevantPapers <-- wow, lots of useful papers
20:22 whiteknight yes, lots!
20:23 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
20:23 dukeleto desertm4x: you must be one of those n-category peeps, then ;)
20:25 desertm4x no, but some papers about numerical analysis have a section with numerical examples and pictures. ;)
20:26 whiteknight this Compressor GC uses a lot of platform-specific technologies that might cause some problems in Parrot
20:27 dukeleto desertm4x: what kind of math you study? mostly numerical?
20:27 dukeleto desertm4x: have you gotten into solving PDE's numerically?
20:30 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:33 patspam1 joined #parrot
20:44 * Coke drops off.
20:45 * whiteknight wishes to never see a Laplace equation again
20:46 GeJ Good morning everyone
20:46 whiteknight hello GeJ
20:46 GeJ Hello whiteknight, how are things going for you?
20:46 * NotFound is pondering to drop the pir implementation of the parrot-mysql module and replace it with a winxed one.
20:46 whiteknight GeJ: Things are going well, thanks! You?
20:46 whiteknight GeJ: How is living in paradise?
20:51 GeJ well except for that damn cold that a thoughtful coworker decided to share on my birthday, I guess it's pretty fine.
20:52 cotto_work Hmmm.  Cold of the damned?  That sounds dangerous.
20:52 whiteknight sounds like swine flue
20:53 GeJ hopefully not. I'm going to see a doc later this morning just to check.
20:55 patspam1 joined #parrot
20:56 whiteknight my wife finally got all her flu vaccines last week
20:57 whiteknight she'll still get sick anyway, but it won't be the flue
20:57 dukeleto desertm4x: interesting!
20:57 * whiteknight really needs to stop putting an "e" on the end of flu
21:06 payload joined #parrot
21:07 patspam joined #parrot
21:08 payload joined #parrot
21:08 Coke that plan is destined to go up in smoke.
21:12 Coke RT is still at 96.
21:19 patspam joined #parrot
21:21 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:24 Coke reopen to preserve history?
21:24 Coke (it doesn't really matter; 50/50)
21:25 * Coke wonders why util did it that way.
21:28 kurahaupo joined #parrot
21:40 GeJ Warning:  No permission to change ticket fields.
21:40 GeJ dang!
21:41 GeJ well, I uploaded a new patch to TT#1095 if anyone wants to have a look at it.
21:44 Coke want it reopened?
21:45 Coke 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.
21:45 GeJ thanks Coke.
21:46 Coke I think since MSWin32 is the only failure, we should probably reverse the sense of that patch.
21:46 Coke (so, if that, todo, else ok. instead of if ok, if ok, if ok, else todo)
21:47 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.
21:47 Coke seems like we should default to assuming things work.
21:49 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.
22:07 GeJ Coke: I commented on the ticket and added a new version of the patch.
22:20 Zak joined #parrot
22:29 Whiteknight joined #parrot
22:29 Whiteknight hello
22:30 dukeleto Whiteknight: yo
22:30 japhb aloga
22:30 japhb er
22:30 japhb aloha
22:31 japhb bash ... it's what I want to do everytime I use it
22:45 NotFound Who was working in a pir based pir compiler?
22:47 NotFound I was wondering how to access to interp->op_lib->op_code from pir.
22:48 bacek_at_work NotFound, I was
22:48 hercynium joined #parrot
22:49 NotFound bacek_at_work: how do you planned to obtain the opcode names?
22:50 bacek_at_work NotFound, extend ParrotInterpreter PMC to expose them :)
22:50 NotFound bacek_at_work: yeah, I was thinking about the same :)
22:51 NotFound 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
22:51 bacek_at_work NotFound, get_pmc_keyed not sufficient?
22:53 NotFound bacek_at_work: I'll think about that.
22:55 bacek_at_work NotFound, hmm.. May be introducing new ParrotOpLib PMC will be cleaner way to do it
22:56 jsut_ joined #parrot
22:56 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?
22:56 bacek_at_work NotFound, getting from interp
22:57 bacek_at_work anyway, meetings time. See you!
22:57 dalek rakudo: 16eab0f | moritz++ | src/setting/Complex.pm:
22:57 dalek rakudo: fix previous commit (Complex.perl), masak++ moritz--
22:57 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​6eab0f3c445d8a4c4c507b24cea65536a4eaccb
22:59 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.
22:59 NotFound Good point.
23:00 NotFound But dynamically loaded opcodes must be obtained from the running interp, isn't it?
23:02 chromatic We have to represent them somehow.  Maybe we need a PMC representing oplibs.
23:04 Whiteknight well, if we had an OpLib PMC, which returned Opcode PMC objects we could keep things pretty well encapsulated
23:05 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.
23:05 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
23:05 Whiteknight especially if we want a PIR-based compiler
23:06 NotFound Or a HLL-based compiler.
23:06 Whiteknight an ability to look up like-named ops by signature would be nice too
23:07 chromatic Before that, I think we need to fix bugs pmichaud has filed.
23:07 Whiteknight which bugs?
23:07 purl which bugs are those? :)
23:07 Whiteknight purl forget which bugs
23:07 purl Whiteknight: I forgot which bugs
23:15 dalek rakudo: 5e05b88 | moritz++ | t/spectest.data:
23:15 dalek rakudo: [t/spectest.data] remove junction test which is now gone.
23:15 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​e05b88b6df14e8c8792ece1d0cc1dfd7a8b6d70
23:15 chromatic How about TT #802, Whiteknight?
23:15 Whiteknight let me look
23:16 Whiteknight oh great, the freeze opcode
23:19 dukeleto FREEZE, or my VM will segfault!
23:21 moritz s/or/and/
23:22 payload joined #parrot
23:22 dukeleto moritz: ;)
23:23 Whiteknight okay, so the issue is that when we tries to freeze the compiled P6 code, it segfaults?
23:26 chromatic Looks like it.
23:41 plobsing joined #parrot
23:56 kthakore hi chromatic
23:57 chromatic afternoon
23:57 purl afternoon is when we eat my lunch.
23:57 kthakore chromatic: what's up
23:57 purl The birds, the sky, and the ceiling.
23:57 kthakore purl go die
23:57 purl i think go die is boojum's favorite.
23:58 chromatic Writing the Modern Perl book chapter on functions and subroutines.

| Channels | #parrot index | Today | | Search | Google Search | Plain-Text | summary

Parrot | source cross referenced