Camelia, the Perl 6 bug

IRC log for #parrot, 2010-02-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:04 tetragon joined #parrot
00:08 Coke I have no idea. =-)
00:15 cotto_w0rk joined #parrot
00:20 Whiteknight cotto_w0rk: not too hard. I've set it up a few times
00:21 payload joined #parrot
00:56 bacek_at_work Aloha!
00:56 cotto_w0rk hi bacek_at_work
00:57 bacek_at_work hi cotto_w0rk
00:57 dukeleto o hai
00:58 patspam joined #parrot
00:58 hiroyuki_y joined #parrot
01:03 abqar joined #parrot
01:06 cognominal joined #parrot
01:19 Whiteknight hello bacek
01:22 cotto_w0rk anyone feel like fixing headerizer?
01:22 chromatic Should be simple; I can poke at it in 90 minutes if no one beats me.
01:23 particle joined #parrot
01:25 Whiteknight oh no...must rush to try and beat chromatic to fix headerizer...
01:47 theory joined #parrot
01:49 kid51 joined #parrot
02:02 sjn joined #parrot
02:14 ash_ joined #parrot
02:26 bacek_at_work Whiteknight, can you rush to fix gc_encapsulate? :)
02:26 chromatic joined #parrot
02:30 Whiteknight what needs fixin?
02:31 Whiteknight building now
02:32 dukeleto hola
02:32 purl what's up, dukeleto.
02:33 Whiteknight hello duke
02:36 bacek_at_work Whiteknight, everything!
02:36 purl rumour has it whiteknight, everything is building now, but when t/op/annotate.t runs, the above happens
02:36 cotto_w0rk botsnack
02:36 purl thanks cotto_w0rk :)
02:37 Whiteknight gdbing now
02:37 dukeleto Whiteknight: howdy, fine sir
02:38 * dukeleto is playing with new embedded hardware and researching how to get parrot on it
02:45 Whiteknight i'm going to have to read through this diff
02:50 Whiteknight damnit, no clean diff
02:54 dalek joined #parrot
02:56 * kid51 heard a talk tonight on systems programming on embedded hardware
02:57 KatrinaTheLamia joined #parrot
03:07 Whiteknight bacek: Nothing I can do tonight. More looking tomorrow
03:08 Whiteknight bacek: one thing I noticed is that we have an Object getting collected prematurely. Suggests that either a CallContext isn't getting marked completely or another Object isn't getting marked properly
03:09 Whiteknight anyway, Whiteknight out!
03:23 dalek joined #parrot
03:37 cxreg left #parrot
03:37 cxreg joined #parrot
03:39 dalek joined #parrot
03:47 bacek_at_work slacker...
03:47 purl hmmm... slacker is like lazy bum
04:08 eternaleye cotto_w0rk: Trac is pretty darn easy. Set it up on my laptop once just for kicks, spent more time learnign how apache config files work than setting up trac itself.
04:20 eternaleye joined #parrot
04:32 chromatic joined #parrot
04:39 Austin_away joined #parrot
05:42 Austin Well, a segfault is nice.
05:52 cotto a segfault?
05:52 purl it has been said that a segfault is http://xkcd.com/371/
05:53 cotto a segfault is also nice
05:53 purl okay, cotto.
05:53 Austin cotto: Yeah, 2.0.0
05:53 cotto I guess it may not be so nice then.
05:54 Austin Heh. I'm trying to debug by dumping arguments. Naturally, dumping arguments causes a segfault. :(
05:54 cotto d'oh
05:59 Austin Heh. I'm trying to debug by dumping arguments. Naturally, dumping arguments causes a segfault. :(
05:59 Austin Whoops. Lost track of the current window.
06:05 Austin Hoo hah.
06:06 Austin It segfaults in scalar concat called on a HashIteratorKey
06:07 Austin The Hash in question is an automatically created :named:slurpy parameter hash. :(
07:03 bacek joined #parrot
07:16 Austin Significantly, if I set the wayback machine to 1.7, I get a segfault from an exception raised by PObj_is_PMC_TEST(sig_pmc), whatever *that* means.
07:28 fperrad joined #parrot
07:34 cotto Is it just me or is this line not sane: http://trac.parrot.org/parrot/br​owser/trunk/src/pbc_merge.c#L616
07:36 cotto It seems to have been added during a merge.
07:36 Austin Why do you think it's not sane?
07:37 cotto because it's adding an unrelated value to a char*
07:38 Austin Knowing nothing at all about the code...
07:38 Austin It looks like mapping is allocated empty, then copied from somewhere.
07:39 Austin The offset is bumped by line numbers, but I don't know what that signifies. Is offset a line-number type?
07:40 Austin The filename is bumped by the const_start value of what looks like the current input - that is, the same data structure mapping was copied out of.
07:43 cotto It's odd.
07:43 cotto I guess it makes sense though.
07:44 Austin There's lots of other places in the code where inputs[...]->const_start gets added.
07:44 Austin I assume the filename is an offset of some kind.
07:45 Austin So const_start is where the constant data for that segment starts, which would have been relatively 0 before the merge began..
07:45 cotto In most cases it's clear why const_start is used.
07:46 Austin But considering that my segfault is in code that has been pbc_merged (and similar code, not merged, does not segfault) I encourage you to eliminate bugs in there.
07:46 cotto yeah.  Don't use pbc_merge right now.
07:47 Austin LOL. I'm counting on it.
07:47 cotto It's definitely broken.
07:47 cotto a workaround is to .include the files you need and compile that to a pbc with parrot
07:47 Austin Yeah.
07:47 Austin That's what I don't want to do.
07:48 cotto My goal right now is to get pbc_merge to the point where it can become a part of Parrot's build process.
07:48 cotto Once it's there, it'll be safe for you to use too.
07:48 Austin Is there some kind of -Dname=value supported by pir?
07:49 cotto only if you want to add it
07:49 Austin laugh
07:50 cotto (not that it'd be a bad idea, but I'm pretty sure that's not what you're hoping for)
07:50 Austin Much of the point of Kakapo is to provide a run-time library for nqp code, etc.
07:50 Austin Which requires "library-ness", which I interpret to mean "link against this separate binary".
07:51 Austin I'm okay with loading bytecode, but I hate the idea that every program has to have a .pir top level.
07:51 cotto which won't be doable until pbc_merge doesn't cause mysterious and wonderful failures
07:51 * cotto gets back to work
07:51 Austin Well, get back to work, then.
07:51 Austin :0
07:53 Austin I'm glad you were here, cotto. Now I can go to bed with a clear conscience.
07:53 Austin :)
07:53 Austin Niterz.
08:00 cotto .o0( It's nice to see that the problem I'm working on will forestall someone's eventual insanity. )
08:03 dalek parrot: r43714 | cotto++ | trunk/src/pbc_merge.c:
08:03 dalek parrot: [pbc_merge] Use arrays to map input constants to their location in the output file.
08:03 dalek parrot: This does't cause any changes now but will allow individual constants to be remapped.
08:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43714/
08:07 jan joined #parrot
08:51 ZeroForce joined #parrot
08:58 chromatic joined #parrot
09:03 payload joined #parrot
09:04 payload joined #parrot
09:06 payload joined #parrot
09:08 riffraff joined #parrot
09:44 eternaleye joined #parrot
09:53 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32053), fulltest) at r43714 - Ubuntu 9.10 amd64 (gcc with --optimize)
09:57 cotto good times
09:57 purl DON'T OPEN IT!  IT'LL CRASH AOL!
09:57 * cotto opens it expectantly
10:20 payload joined #parrot
10:40 cosimo joined #parrot
11:00 mj41_ joined #parrot
11:27 adu joined #parrot
11:27 mj41_ joined #parrot
12:13 payload joined #parrot
12:23 bluescreen joined #parrot
12:25 bluescreen joined #parrot
12:27 payload1 joined #parrot
13:17 whiteknight joined #parrot
13:29 whiteknight good morning #parrot
13:35 daqing joined #parrot
13:36 daqing hi, everyone! parrot 2.0.0 compiles failed on Mac OS X 10.6
13:41 daqing joined #parrot
13:43 daqing Parrot 2.0.0 compiles failed on my Mac OS X 10.6 machine, look at http://pastie.org/809296 for screen output. I
13:43 daqing My gcc version:
13:44 daqing https://gist.github.com/c18d37eaba4da7c3bb44
13:44 daqing anyone there?
13:45 * moritz takes a look, but it not very familiar with mac
13:45 moritz daqing: how did you configure parrot?
13:46 Infinoid the "\c" at the end of the compilation command line looks suspicious
13:46 daqing perl Configure.pl
13:46 moritz Infinoid: aye
13:47 daqing Infinoid: yes, but i don't know how to fix it
13:47 daqing maybe the "\c" should just be "\" ?
13:47 daqing or "-c"?
13:47 Infinoid that's a linker line, so probably not -c
13:48 moritz but why is it using c++ as a linker?
13:48 moritz I don't think it does that by default
13:49 Infinoid my parrot-fu is lacking, these days.  but what's the \c magic in Parrot::BuildUtil for?
13:50 daqing I looked at the generated Makefile, only found this line: ICU_SHARED  :=  -lpthread -lm   -L/opt/local/lib  -licuuc -licudata  -lpthread -lm  \c
13:50 daqing was ended with "\c"
13:51 Infinoid is there a \c elsewhere in that file?
13:51 daqing no
13:52 daqing is "\c"  a typo?
13:53 Infinoid I suspect it's a regular expression "control character" match, that was taken literally by mistake
13:53 Infinoid the ICU_SHARED stuff in 2.0 is generated by config/auto/icu.pm
13:53 daqing however, parrot 2.0.0 compiles perfectly on my ubuntu virtual machine, so this is weird.
13:54 Infinoid Does your mac have libicu installed?  Does your ubuntu have libicu installed?
13:55 Infinoid (I think this can be seen in the configure output.)
13:57 daqing auto::icu -           Is ICU installed....................................yes.
13:57 daqing yes
14:01 payload joined #parrot
14:04 daqing I just found out that the Make file generated on ubuntu had no "\c" character on that line..
14:10 Infinoid yeah, doesn't happen on my gentoo box either
14:15 adu hi all
14:15 Infinoid daqing: Any chance you can nopaste the output of "perl Configure.pl --verbose"?
14:15 d4l3k_ joined #parrot
14:15 daqing wait a moment..
14:19 daqing OK, I know the reason...
14:19 daqing I run "icu-config --ldflags" and get:  -lpthread -lm   -L/opt/local/lib -licui18n -licuuc -licudata  -lpthread -lm  \c
14:19 Infinoid oops :)
14:20 daqing thank you guys
14:21 Infinoid daqing++
14:23 cognominal joined #parrot
14:30 iblechbot joined #parrot
14:37 particle joined #parrot
14:43 Coke the \c bug is one that has been biting people on OSX on and off.
14:43 Coke for some reason the generated makefile ends up with them.
14:44 moritz maybe we should manually remove it from the output of icu-config
14:44 Coke oh, it's from Icu?
14:44 Coke yay.
14:45 moritz according to http://irclog.perlgeek.de/p​arrot/2010-02-04#i_1956595 yes
14:45 Coke yes, check out config/auto/icu.pm, presumably there's a good spot there to strip out the \\c
14:49 moritz there is indeed
14:52 redbrain hey guys have you done much more on jit support? I've been playing with llvm jit seems one would have to write a llvm jit driver in C++ then just have it callable from c code
15:12 dalek parrot: r43715 | moritz++ | trunk/config/auto/icu.pm:
15:12 dalek parrot: [config] remove \c that is sometimes returned from icu-config on MacOS
15:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43715/
15:22 particle joined #parrot
15:30 Psyche^ joined #parrot
15:39 whiteknight If I add a new project to the Modules page on the Tracwiki, it should get picked up by dalek?
15:40 bubaflub joined #parrot
15:42 Coke redbrain: I don't think anyone has touched llvm integration since we decided "yay, that's nice."
15:44 Infinoid whiteknight: yes, assuming dalek knows how to find and parse its rss feed
15:44 whiteknight yeah, it's a standard github project
15:44 Infinoid cool, should work.  May take dalek a couple hours to notice it tho
15:44 dalek tracwiki: v5 | whiteknight++ | Modules
15:44 dalek tracwiki: http://trac.parrot.org/parrot/wiki​/Modules?version=5&action=diff
15:44 dalek tracwiki: v6 | whiteknight++ | Modules
15:44 dalek tracwiki: PLA is in use by Matrixy and is mostly stable for now. Bump to Beta stage
15:44 dalek tracwiki: http://trac.parrot.org/parrot/wiki​/Modules?version=6&action=diff
15:44 whiteknight Infinoid: how often does dalek scrape that projects page?
15:45 whiteknight "Modules" page*
15:46 Infinoid it polls once per hour, I think
15:47 NotFound Impatience the Dark Side is ;)
15:47 Andy joined #parrot
15:48 Andy joined #parrot
15:57 dalek winxed: r401 | julian.notfound++ | trunk/winxedst1.winxed:
15:57 dalek winxed: tiny optimization of const statements in stage 1
15:57 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=401
16:03 redbrain Coke: yeah its alot of work i think but its interesting :)
16:08 ruoso joined #parrot
16:12 darbelo dukeleto: ping
16:19 davidfetter joined #parrot
16:27 hercynium joined #parrot
16:31 allison joined #parrot
16:33 cotto_working joined #parrot
16:46 PacoLinux joined #parrot
16:50 darbelo whiteknight: ping
16:51 whiteknight darbelo: pong
16:52 darbelo I tried to build parrot-linear-algebra and it failed with sh: ./probe: not found
16:52 whiteknight hmm... weird
16:52 darbelo Is the repo missing a file?
16:53 darbelo Or should I stay away from the setup.pir file?
16:53 whiteknight how did you try to build it?
16:53 whiteknight setup.pir is the way to do i
16:53 whiteknight it
16:53 darbelo "parrot setup.pir"
16:53 cotto_working joined #parrot
16:53 whiteknight you're on FreeBSD, right?
16:54 darbelo OpenBSD
16:54 whiteknight okay, you probably need to add configuation settings o system_linker_settings in setup.pir
16:54 theory joined #parrot
16:55 darbelo If you point me in the right direction I can probably do that.
16:55 whiteknight does OpenBSD have ldd?
16:56 darbelo Yep.
16:56 whiteknight okay, so you just need to figure out the install path where cblas or atlas is on your machine
16:57 whiteknight /usr/lib/libblas.so or /usr/lib/atlas/libcblas.so are the paths i have see in linuxland
16:57 darbelo And incorporate to system_linker_settings?
16:58 whiteknight exactly
16:58 whiteknight it should be straight-forward, I just wasn't sure what "$S0 = sysinfo 4" is on a BSD system
17:00 darbelo Oh, crap. I didn't have cblas on this box.
17:01 * darbelo facepalms
17:01 darbelo Still, I don't know where that reference to 'probe' came from.
17:01 whiteknight yeah, that's a weird one
17:02 plobsing joined #parrot
17:02 darbelo And, we should move the place where the lib-detection takes place.
17:03 particle joined #parrot
17:03 darbelo Right now that happens even if I try parrot "setup.pir update"
17:03 darbelo eh "parrot setup.pir update"
17:06 plobsing am I correct in thinking that RPA shift/unshift are going to suck for the forseable future?
17:06 whiteknight plobsing: yes
17:06 whiteknight plobsing: but take a look at http://github.com/Whiteknig​ht/parrot-data-structures/
17:07 whiteknight started a new project with higher-performance single-purpose PMCs
17:07 plobsing whiteknight: then we should find all places in core that use RPA and make sure they don't shift/unshift
17:07 plobsing I just did it for freeze/thaw in r43716.
17:07 whiteknight plobsing: that is probably a good idea
17:10 NotFound Emmmm... main args
17:11 whiteknight plobsing: freeze/thaw use an ImageIO PMC, not an RPA
17:11 NotFound Any program that uses GetOpts use shift.
17:11 darbelo That has an RPA inside.
17:11 whiteknight darbelo: it doesn't need to. It's encapsulated, we could fill it with whatever we want, eventually
17:12 NotFound You shift argv before passing it to GetOpts
17:12 darbelo whiteknight: It has an RPA now ;)
17:12 plobsing whiteknight: it doesn't make sense to have ImageIO manage it's own list when we have a type whose responsibility is to manage lists
17:12 whiteknight plobsing: we have a type whose responsibility is to provide maximum flexibilities in managing all sorts of lists
17:13 darbelo But, in my opinion, ImageIO has one list too many.
17:13 whiteknight when ImageIO only needs a very specific type of list
17:13 plobsing whiteknight: last time we wanted tunable lists like that, we wound up with src/list.c
17:14 plobsing darbelo: which is the one list too many?
17:14 plobsing darbelo: are you talking about merging todo and id_list?
17:14 whiteknight plobsing: list.c was the wrong approach, but was not born from a bad idea
17:14 whiteknight sparse arrays do have some benefit, and arrays implemented as linked-lists have benefit
17:15 plobsing darbelo: I've considered that. The visit loop would have to change and would likely not be compatible with the freezing logic.
17:15 plobsing darbelo: if you separated the freezing and the thawing, you could do that
17:15 whiteknight improved shift/unshift/push/pop performance in exchange for worse direct indexing and higher memory requirements
17:17 plobsing whiteknight: my main point is that an external library doesn't help core usages
17:17 darbelo plobsing: I've been thinking about that. And separating freeze from thaw looks like a win all around.
17:19 darbelo But doing that right probably means adding a vtable.
17:21 dalek parrot: r43716 | plobsing++ | trunk/src/pmc/imageio.pmc:
17:21 dalek parrot: use push/pop with imageio todo list instead of shift/unshift.
17:21 dalek parrot: gives a speadup of ~100 on examples/benchmarks/freeze.pasm (because RPA shift/unshift sucks)
17:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43716/
17:22 Coke 100 what?
17:22 purl 100 is the reference
17:22 plobsing 100 times
17:22 Coke ah. 100x would have been more clear to me.
17:22 plobsing 17s becomes 0.12s for me
17:23 Coke might be worth adding a note to RPA's pod docs about that. "if you're using this as a stack/queue/blah, prefer <foo> over <bar>"
17:26 NotFound I like the C++ approach: you have vector, deque and list, choose what's better to each task.
17:27 darbelo NotFound++
17:27 Coke huh. I'd never heard of deque before.
17:28 Infinoid queue?
17:28 purl queue is FIFO
17:28 NotFound You almos never use it directly, but is the default container for stack and queue.
17:29 NotFound Supposedly it has not bad direct access and not bad pop and shift.
17:30 NotFound In practice, check your standard library implementation.
17:31 Coke certainly that 100x speedup is a good reason to either 1) fix RPA or 2) split it out.
17:34 whiteknight plobsing: the external library does help if it is really good and we can make the case to merge it into trunk eventually
17:35 Coke certainly easier to prototype stuff out of core.
17:35 whiteknight exactly
17:35 Coke I wonder how much of a speed up partcl could get if it were smarter about its RPA usages.
17:35 Coke (ditto nqp-rx)
17:39 NotFound "This may seem like a joke, but it's not. The US Patent and Trademark Office will not accept patent filings faxed in if they arrive upside down. That's right, the home of innovation of the federal government is incapable of rotating an incoming fax file, whether electronically or on paper."
17:39 NotFound Ups, wrong channel.
17:44 Coke ... still, funny.
17:46 plobsing whiteknight: it all depends on when eventually is? 2.3? 3.0? my grand children might see it?
17:46 whiteknight true
17:49 ruoso joined #parrot
17:53 cognominal joined #parrot
17:58 plobsing what's the best way to get a stacktrace of everywhere RPA.shift or RPA.unshift is called in the testsuite?
17:58 Coke ... a stacktrace?
17:59 plobsing I'm looking for internal usages. I don't really care about calls from PIR, so I plan to filter out calls from src/ops/*
17:59 Coke if you don't care about PIR or PASm, the number of times it's invoked should be pretty miniscule.
18:00 Coke (explicitly)
18:01 plobsing this morning it was being called in freeze/thaw. I'm looking for similar cases.
18:01 plobsing low hanging fruit
18:01 Coke I don't know an easy way to do that, no.
18:01 Coke If I were looking for someone, I'd probably ping chromatic or cotto.
18:07 dngor Anyone still have svn projects they'd like to convert to git?
18:08 cotto_working Parrot.
18:08 * cotto_working ducks
18:09 * Coke wonders why opensolaris.org's website looks awful in every browser except firefox.
18:09 dngor Parrot... ducks... what next?  Flamingos?
18:09 szbalint crocoduck
18:10 dngor I've got snerp vortex working on a single repository (2700 commits) reasonably well (diff -r vs. svn checkout is identical) and somewhat fast (800 seconds to convert).
18:10 dngor It's only a single test case, though.
18:11 * szbalint will probably convert $work repo to git this month
18:11 dngor If people have some idle time to evaluate it, I'd love some bug reports.
18:14 dukeleto 'ello
18:15 cotto_working hi dukeleto
18:15 dukeleto are we talking about converting to git again?
18:16 dngor Oh, you know what, I'm in the wrong channel.  I recently re-sorted my windows.
18:16 dngor Epic ww fail.  Sorry.
18:16 dukeleto dngor: :)
18:17 szbalint pretty funky :)
18:17 * dngor wanders one window over to #perl.
18:17 szbalint anyone attending FOSDEM from here this weekend btw?
18:19 joeri joined #parrot
18:20 ruoso joined #parrot
18:23 payload joined #parrot
18:45 whiteknight plobsing: locally, modify the VTABLE_shift() macro to print __FILE__ and __LINE__ to stderr
18:46 plobsing whiteknight: that's too coarse, that gets all shifts. I could just grep for VTABLE_shift, but there are legitimate places to shift.
18:47 whiteknight plobsing: how many types do you suspect are using shift/unshift?
18:47 cotto_working You could further modify it to only print based on vtable->base_type.
18:48 darbelo dukeleto: ping
18:48 whiteknight #define VTABLE_shift(i, p) (fprintf(stderr, ((p->vtable->type == enum_class_ResizablePMCArray)?("%s, %d"):("")), __FILE__, __LINE__), p->vtable->shift(i, p));
18:48 plobsing cotto_working++ whiteknight++
18:49 whiteknight It's been a long time since I used that comma operator, so I might have put things in the wrong order
18:57 kurahaupo joined #parrot
19:19 Coke purl?
19:19 purl yes, Coke?
19:20 mikehh joined #parrot
19:28 hercynium joined #parrot
19:47 dukeleto darbelo: pong
19:48 dukeleto szbalint: davidfetter will be at FOSDEM
19:54 darbelo dukeleto: I'm thinking of starting a branch to improve our cross-compilation capabilities? Would you be willing to be a guinea pig?
19:55 dukeleto darbelo: yes
19:57 dukeleto darbelo++
19:57 dukeleto darbelo: i am doing research on my new BUG toy
19:57 dukeleto darbelo: how much do you know about OpenEmbedded?
20:03 darbelo dukeleto: Not much. Skimming their site now.
20:04 chromatic joined #parrot
20:04 kurahaupo1 joined #parrot
20:11 szbalint dukeleto: oh, he's even giving a postgres talk, excellent :)
20:14 clinton joined #parrot
20:23 dukeleto darbelo: i have an embedded linux device that runs PokyLinux, which is a distro of OpenEmbedded
20:24 Coke Anyone here using Padre?
20:24 Coke (for working on parrot?)
20:24 dukeleto szbalint: yes, and he will be telling people about PL/Parrot as well
20:29 szbalint excellent :)
20:30 davidfetter joined #parrot
20:39 dalek tracwiki: v24 | kurahaupo++ | ArrayTasklist
20:39 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Arr​ayTasklist?version=24&amp;action=diff
20:40 bluescreen joined #parrot
20:43 dalek parrot-linear-algebra: a050c24 | Whiteknight++ | setup.pir:
20:43 dalek parrot-linear-algebra: editor auto-removed some whitespace
20:43 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/a050c24a33a817fa874a3bc6e2ea64cd7cca00f0
20:47 Coke array tasklist shows "depreation of array" as a task item; already ripped out.
20:54 chromatic Parrot VM: Can't stat ext/nqp-rx/nqp-rx.pbc, code 2.
20:55 whiteknight oh that looks wonderful
20:55 whiteknight nqp-rx didn't get deleted from the repo, right?
20:55 chromatic No Makefile in that directory either.
20:57 chromatic ... which isn't a problem.
20:58 chromatic Maybe I should use parrot-nqp.pbc instead.
20:58 whiteknight does the new nqp build in the repo, or are the .pbc files just dumpd there?
20:59 Tene whiteknight: build in the repo.
21:02 whiteknight ok
21:02 chromatic NQP generated code does a fair amount of RPA unshifting for exception handlers.
21:04 chromatic It doesn't lead to array resizing though; one RPA and one EH per invocation, so far.
21:30 cotto_work easy karma if someone feels like ripping out the malloc return value checks from src/pbc_merge.c
21:31 cotto_work The malloc functions already handle failed allocations.
21:31 chromatic I have a fresh master checkout.
21:33 bluescreen joined #parrot
21:36 chromatic make: *** No rule to make target `include/parrot/list.h', needed by `src/string/api.o'.  Stop.
21:36 chromatic Hm.
21:37 Coke wasn't that ripped out recently? checking...
21:37 cotto_work The list code was removed recently with the Array excision iirc.
21:38 Coke You would think someone would have noticed that by now, though.
21:38 cotto_work You'd think.
21:38 chromatic It's strange.
21:39 chromatic Let me reconfigure.
21:40 dalek parrot: r43717 | chromatic++ | trunk/src/gc (3 files):
21:40 dalek parrot: [GC] Don't run a full mark and sweep when a constant pool is out of free
21:40 dalek parrot: objects; they won't get freed.  This is a minor improvement on short-lived
21:40 Coke WFM with a fresh checkout.
21:40 dalek parrot: benchmarks.
21:40 purl benchmarks are like college lab reports....often fudged to achieve the desired results
21:40 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43717/
21:40 Coke you're using git-svn, yes?
21:40 chromatic Yes, like God and queen intended.
21:41 Coke no, they meant for git.
21:41 Coke git-svn is evil. =-)
21:41 chromatic I'm no royalist.
21:42 chromatic God and Queen (without Paul Rodgers) want me to use git.
21:42 chromatic The monarchy... well, they're pragmatic.  That's the difference between established positions of power and artists who play the piano and sing high.
21:43 chromatic A reconfigure and rebuild fixed things.  La plus ca change...
21:44 dukeleto did someone say git?
21:44 dukeleto and yes, git-svn is evil
21:45 dukeleto i have found out that my embedded hardware is a "Freescale i.MX31 ARM-based processor"
21:46 darbelo dukeleto: /me thinks he know how to enable cross-building.
21:46 dukeleto darbelo: go ONNNNNNNN
21:46 darbelo dukeleto: does your new hardware have perl ported to it?
21:46 dukeleto darbelo: yes
21:48 darbelo Then we just have to convince Configure to ingore what the perl used to run is tells it and to feed it data from the other perl.
21:48 dukeleto darbelo: interesting
21:48 dukeleto darbelo: quite a nice little trick
21:48 darbelo That and a medium sized hints file should give us a makefile that can cross build most of the c code.
21:49 darbelo I guess we might be alble to get as far as miniparrot on that.
21:49 dukeleto this boot loader gets a prize for having a cool name: http://en.wikipedia.org/wiki/Das_U-Boot
21:49 dukeleto darbelo: sounds like a plan. do you want to make a branch for it?
21:49 cotto_work chromatic++
21:49 chromatic Where'd dalek go?
21:50 cotto_work bot vacation
21:50 chromatic bot trek
21:50 cotto_work probably to 01
21:50 dukeleto botbattical
21:51 chromatic walkabot
21:53 darbelo dukeleto: I'll bran myself when I get some code written.
21:53 darbelo s/bran/branch/
21:56 dukeleto darbelo: sounds good! let me know if you need testing
21:56 dalek parrot: r43718 | chromatic++ | trunk/src/pbc_merge.c:
21:56 dalek parrot: [pbc_merge] Removed malloc() checking, because libparrot's malloc() wrappers
21:56 dalek parrot: perform these checks anyway.  Deleting ugly code is fun!
21:56 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43718/
22:03 GeJ Good morning everyone.
22:08 dukeleto GeJ: o hai
22:22 Whiteknight joined #parrot
22:23 Whiteknight I would like to write a parrot plugin for xchat\
22:25 darbelo I don't use xchat, but will offer moral support to the endeavor ;)
22:29 elmex joined #parrot
22:33 dalek winxed: r402 | julian.notfound++ | trunk/winxedst1.winxed:
22:33 dalek winxed: time and floattime predefs in stage 1, quick fix for float * operator
22:33 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=402
22:36 patspam joined #parrot
22:38 dalek winxed: r403 | julian.notfound++ | trunk/examples/opengl.winxed:
22:38 dalek winxed: opengl example
22:38 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=403
22:50 japhb NotFound++ # OpenGL examples, w00t!
22:50 dalek tracwiki: v7 | cotto++ | Modules
22:50 dalek tracwiki: typo fix
22:50 dalek tracwiki: http://trac.parrot.org/parrot/wiki​/Modules?version=7&amp;action=diff
22:50 NotFound japhb: just one more incarnation of the infamous triangle ;)
22:51 * japhb is considering porting his old Perl 5 Doom Classic level viewer to Parrot.  I was thinking PIR or NQP, but maybe Winxed is dying for some OpenGL hackery ....
22:52 NotFound I'll support such noble goal
22:53 * japhb is currently reading a code review of Carmack's recent "official" port of Doom Classic to the iPhone.
22:53 NotFound Looks like Doom is on the wave right now, there is even an iphone port.
22:53 japhb :-)
22:53 dukeleto wowzers
22:53 NotFound japhb: I've readed it this morning.
22:55 * japhb loves the fact that Carmack has been respecting the spirit of his GPL release by starting all his recent iPhone ports from community releases (iPhone Doom Classic is I believe based on prBoom, for example, and iPhone Wolfenstein 3D is based on Wolf Redux), and then re-releasing the upgraded source ....
22:56 joeri left #parrot
22:56 tewk What can't RPA just have a start pos and a length field and be a circular buffer that only moves data when it overflows, That should support shift, unshift, pop and push in constant time.
22:57 tewk What does perl5 do internally? its fast right?
22:59 Whiteknight circular buffers can't be easily resized
22:59 japhb Whiteknight: why not?
22:59 tewk Whiteknight, sure they can, its just two memcpys
22:59 Whiteknight "easy"
23:00 Whiteknight that's worse then current wit one memcpy
23:00 japhb A little pointer fiddling and an extra memcpy do not argue against a vastly faster implementation.
23:00 japhb And the memcpy is amortized well if you do exponential resizing.
23:01 japhb (or heck, any decent resizing scheme)
23:01 japhb Plus, you can save a memcpy invocation by simply checking whether one of them is zero length.
23:01 tewk two memcopies are performance bounded by total memory moved not by two vs one function calls
23:01 japhb What tewk said
23:02 Whiteknight memcpy tends to be higy optimized. biggest part of it is the call and setup
23:02 japhb Speaking of performance improvements,
23:02 Whiteknight fewer calls == less overhead == better performance
23:02 tewk no the malloc before the memcopies is the bottle neck
23:03 tewk Whiteknight, thats not true
23:03 * japhb idly wonders if there's a way to reserve a register for interp.  Might be a win on 16+ register arches.
23:03 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32058), fulltest) at r43718 - Ubuntu 9.10 amd64 (g++ with --optimize)
23:04 darbelo japhb: There is no portable way to do anything to registers ;)
23:04 chromatic Any decent compiler should already realize that where it matters.
23:04 tewk performance on modern processors is almost always a function of cache misses not ops.
23:04 japhb Whiteknight, I agree with generally trying to save calls, but in this case as I said most of the time one of the memcpys can be avoided anyway.
23:05 japhb chromatic, I disbelieve that "any decent compiler" will notice that we use a param called 'interp' freaking everywhere and realize it ought to be a register, and stop thrashing the stack with it.
23:05 Whiteknight can't be avoided in a threade app
23:06 darbelo japhb: it's always called 'interp' but it's not allways the same interp ;)
23:06 Whiteknight true, especially in interp cloning routines
23:07 japhb Whiteknight, there's no reason that reserving a register would be a problem with a threaded app, because the thread switch will save and restore all registers.  It *would* be a problem if it was a memory global.
23:07 Whiteknight what we could do to save effort is set the compiler to use fastcall for calls by default.
23:07 japhb Interp cloning would be a special case.
23:08 Whiteknight but then we would need to add _declspec(cdecl) to PARROT_EXPORT
23:08 Whiteknight that would save on stack thrashing
23:08 chromatic If a compiler can't recognize that the first parameter passed to a function gets used as the first parameter for every sub function call, it's not a decent compiler.
23:08 tewk x86_64 calling convetions already pass it in a register all the time.  Just wait for 32bit to die.
23:09 japhb chromatic, fair enough ... but we're talking about gcc (which fails to recognize all sorts of things) and msvc (which still can't manage to update to a C spec over a decade old)
23:09 Whiteknight tewk: when's the heat death of the universe again?
23:09 chromatic I don't recall calling GCC or MSVC particularly "decent", no....
23:09 Whiteknight I like ICC, good optimizations (on some platforms)
23:10 Whiteknight I'm also liking clang when I use it
23:10 japhb 32-bit never dies, it just moves downmarket (and gains orders of magnitude more devices, sigh)
23:12 japhb tewk: ooh, I hadn't read a calling conventions spec since the dark ages.  Didn't realize x86_64 did the "first 4 params in registers" optimization.  Very nice.
23:12 Whiteknight I'm surprised I can't find any 16-bit PCs at best buy
23:13 darbelo dukeleto: http://nopaste.snit.ch/19478
23:13 chromatic That's because they haven't upgraded their sales droids from 8-bit.
23:13 japhb They're all over in the "truly embedded" space ... but at this point I think a million transistors (a 486) is so freaking small that you're completely swamped by packaging costs, so why not go 32-bit?
23:14 japhb Hell, a modern Intel chip contains a 486-equivalent embedded in it just to compute power saving states.  Cause when a million transistors is .1% of the die, why not?
23:14 darbelo japhb: Actually, that's what happening. The embedded market is abandoning 8-bit and 16-bit and going to ARM this days.
23:15 japhb darbelo, nodnod.  I knew that, I just worded my comment poorly.
23:15 chromatic I wonder if we could shove __attribute__((fastcall)) in the PARROT_INTERP macro.
23:15 chromatic No, that's not where it goes.
23:16 japhb I still have a few freaky friends in my Perl Mongers group (dominated by EE types) that still do PIC-controlled devices, but I think they just do it for the retro fun.
23:17 darbelo japhb: Well, I was part of an embedded-control project two years back that was built around an 8-bit uC. Not for the retro fun, but becouse of the costs.
23:17 tewk Also I'm guessing the microcode on x86 32bit cpus tears apart stack parameter passing instructions and highly optimizes them, but I may be wrong.
23:18 japhb darbelo, reduction in board traces and layers?
23:20 darbelo Not really, it was a thorougly dumb device in a small control loop with no need for speed. And most of the sensors were off-board.
23:21 darbelo The most coplicated part in it was a small 64x128 pixel screen.
23:21 * japhb has visions of 8-by-8 sprite blocks
23:22 chromatic We could try regparm(3).
23:22 darbelo You can't go cheaper than a 8051-alike with those constraints.
23:23 japhb chromatic, not in my manpages ... what OS?
23:23 * japhb wonders if Debian decided not to include one of the base manpages again
23:24 chromatic GCC should have it since at least 3.0.
23:25 chromatic It's a function attribute, not a syscall.
23:28 japhb ah.  The (3) confused me.
23:28 chromatic Yeah, I realized that as soon as you asked.
23:34 chromatic It segfaults nicely, at least.  That indicates that *something* is working.
23:34 dalek parrot: r43719 | darbelo++ | trunk (3 files):
23:34 dalek parrot: Make the used hints file overridable on the Configure.pl command line.
23:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/43719/
23:41 chromatic Hm, that naive patch made things slower.
23:45 japhb Maybe gcc is defaulting to doing something similar already?
23:47 plobsing joined #parrot
23:53 cotto_work Whiteknight, your blog post has an unusually entertaining typo: "PriorityPMCQueue: This is a queue type where each element has an ass"
23:54 Whiteknight I copy+pasted that from wikipedia :)
23:54 cotto_work That doesn't make it true.
23:55 Whiteknight lies!
23:55 cotto_work I know of very few queue ATDs that have asses.

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

Parrot | source cross referenced