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