Camelia, the Perl 6 bug

IRC log for #parrot, 2010-05-31

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:13 * plobsing wonders how much it would take to go from winxed to javascript
00:16 whiteknight joined #parrot
00:23 Coke joined #parrot
00:29 whiteknight bacek: TMS is "working"?
00:33 * whiteknight has a lot of new code to read
00:36 mikehh joined #parrot
00:38 * Coke skips review.
00:45 tcurtis joined #parrot
01:07 kid51 joined #parrot
01:09 dalek parrot: r47177 | jkeenan++ | branches/tt1452_configure_debug (5 files):
01:09 dalek parrot: [configure] Config step auto::extra_nci_thunks does not conduct a probe; hence, does not need to be a separate 'auto' step.  Merge into init::defaults.
01:10 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47177/
01:10 bacek_at_work whiteknight, yes (fsvo)
01:10 whiteknight bacek: I see that it copies a lot of logic from gc_inf for now
01:17 bacek_at_work whiteknight, it was quickest way to get GC skeleton
01:18 bacek_at_work but TMS logic is brand new :)
01:22 bacek_at_work whiteknight, starting from line 539 in gc_tms.c
01:22 whiteknight yeah, I saw all that. What you have so far looks nice
01:23 bacek_at_work It's almost one-to-one translation from GCMassacre wiki page.
01:26 dalek parrot: r47178 | jkeenan++ | branches/tt1452_configure_debug/MANIFEST:
01:26 dalek parrot: Update MANIFEST.
01:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47178/
01:26 dalek parrot: r47179 | jkeenan++ | branches/tt1452_configure_de​bug/t/steps/auto/msvc-01.t:
01:26 dalek parrot: Update test file to reflect change in handling of verbose debugging output.
01:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47179/
01:26 dalek parrot: r47180 | jkeenan++ | branches/tt1452_configure_d​ebug/t/steps/auto/gmp-01.t:
01:26 dalek parrot: Update test file to reflect change in handling of verbose debugging output.
01:26 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47180/
01:26 whiteknight I suggest deprecating the new_s and new_s_i opcodes
01:26 whiteknight with immutable strings, they are useless
01:35 GeJ TMS ?
01:39 bacek_at_work GeJ, TriColour Mark & Sweep
01:43 dalek parrot: r47181 | jkeenan++ | branches/tt1452_configure_debu​g/t/steps/auto/readline-02.t:
01:43 dalek parrot: Update test file to reflect change in handling of verbose debugging output.
01:43 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47181/
01:44 GeJ bacek_at_work: Thanks. time to google.
01:45 bacek_at_work GeJ, http://trac.parrot.org/parrot/wiki/GCMassacre
01:49 plobsing whiteknight: clone_s_s should probably go to for similar reasons
02:15 whiteknight maybe
02:15 whiteknight It's a similar concept, but I can imagine a situation where maybe we would want two distinct headers pointing to a single buffer
02:16 whiteknight probably not common, but worth an RFC
02:16 dalek parrot: r47182 | jkeenan++ | branches/tt1452_configure_​debug/config/auto/pcre.pm:
02:16 dalek parrot: Re-order arguments to _evaluate_cc_run() to be consistent with similar subroutines in other steps.
02:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47182/
02:16 dalek parrot: r47183 | jkeenan++ | branches/tt1452_configure_debug/t/steps (6 files):
02:16 dalek parrot: Update test file to reflect change in handling of verbose debugging output.
02:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47183/
02:16 tcurtis To anyone interested in my GSoC: please have a look at my message to parrot-dev if you have a chance.
02:17 GeJ make fulltest PASS all test on FreeBSD 7 @47181
02:18 whiteknight tcurtis: I'll give it a complete once-over tomorrow morning
02:18 GeJ bacek_at_work: Sorry, I forgot to report it to you. I checked at home, and unfortunately had previously upgraded my laptop to 7.1
02:18 GeJ so, no 6.x anymore.
02:24 tcurtis whiteknight: thanks. I have a preference about the matter, but I want to get as much feedback as possible about it before making a decision regarding what to start implementing.
02:25 bacek_at_work GeJ, no worries. It was stale headers in very old svn checkout.
02:33 dalek tracwiki: v12 | jkeenan++ | GCMassacre
02:33 dalek tracwiki: Small spelling and grammar corrections
02:33 dalek tracwiki: http://trac.parrot.org/parrot/wiki/G​CMassacre?version=12&action=diff
02:39 JimmyZ joined #parrot
02:43 bluescreen joined #parrot
02:47 JimmyZ_ joined #parrot
02:49 dalek parrot: r47184 | jkeenan++ | branches/tt1452_configure_debug (4 files):
02:49 dalek parrot: Continue to modify handling and testing of verbose/debugging output.
02:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47184/
03:04 bacek_at_work purl: 107267 + 80912
03:04 purl 188179
03:04 cotto TMS?
03:04 bacek_at_work purl: 64405 + 513469
03:04 purl 577874
03:04 cotto TMS is tri-color mark and sweep
03:05 bacek_at_work cotto, yes. new_pmc_header + mark_and_sweep calls for TMS and MS.
03:05 cotto TMS is also http://trac.parrot.org/parrot/wiki/GCMassacre
03:05 bacek_at_work TMS?
03:05 cotto purl, tms?
03:05 purl i haven't a clue, cotto
03:05 dalek parrot: r47185 | jkeenan++ | branches/tt1452_configure_debug (2 files):
03:05 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
03:05 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47185/
03:06 cotto purl, TMS is tri-color mark and sweep (garbage collection algorithm)
03:06 purl OK, cotto.
03:06 cotto TMS is also http://trac.parrot.org/parrot/wiki/GCMassacre
03:06 cotto purl, TMS is also http://trac.parrot.org/parrot/wiki/GCMassacre
03:06 purl OK, cotto.
03:06 cotto purl, TMS is also transcranial magnetic stimulation
03:06 purl OK, cotto.
03:06 cotto purl, tms?
03:06 purl i haven't a clue, cotto
03:06 cotto purl, TMS?
03:06 purl cotto: no idea
03:06 cotto stupid bot
03:06 cotto purl, purl, tms?
03:06 purl bugger all, i dunno, cotto
03:12 cotto $purl.stupid(0);
03:13 plobsing , TMS?
03:13 janus joined #parrot
03:13 bacek_at_work .oO ( May be I can add fact-plugin to aloha )
03:22 sorear let's add tetra-color mark and sweep
03:24 cotto live, maybe, dead and zombie?
03:24 LoganLK joined #parrot
03:30 tcurtis Slightly lighter gray or slightly darker gray, sorear? Or really-black or really-white?
03:32 bacek_at_work We have tetra-color mark in parrot now...
03:32 bacek_at_work Bloody "constant" zombiez.
03:33 plobsing bacek_at_work: what actually gets marked constant these days?
03:33 plobsing (I know that const table entries don't)
03:34 bacek_at_work they are not marked
03:34 bacek_at_work at all
03:35 plobsing I know what constant means to GC. I'm just wondering what is actually using that.
03:38 bacek_at_work ack PObj_constant_FLAG src | wc -l
03:38 bacek_at_work 51 hit
03:38 dalek parrot: r47186 | jkeenan++ | branches/tt1452_configure_d​ebug/config/auto/isreg.pm:
03:38 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
03:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47186/
03:40 dalek tracwiki: v60 | cotto++ | ParrotQuotes
03:40 dalek tracwiki: we love this code
03:40 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=60&action=diff
03:41 cotto bacek_at_work, 28 in trunk after realclean
03:42 bacek_at_work it's 28 more than I would like to see
03:55 dalek parrot: r47187 | jkeenan++ | branches/tt1452_configure_debu​g/config/init/hints/darwin.pm:
03:55 dalek parrot: Adapt to debug method.
03:55 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47187/
04:07 dalek TT #449 closed by plobsing++: [TODO] Migrate non-essential ops to dynops
04:07 dalek TT #449: http://trac.parrot.org/parrot/ticket/449
04:11 dalek parrot: r47188 | plobsing++ | branches/constant_unfolding:
04:11 dalek parrot: creating branch to work on constant unfolding
04:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47188/
04:11 dalek parrot: r47189 | plobsing++ | branches/ops_massacre:
04:11 dalek parrot: branch has been merged and is no longer needed
04:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47189/
04:11 dalek parrot: r47190 | plobsing++ | trunk/DEPRECATED.pod:
04:11 dalek parrot: remove deprecation notice for TT #449
04:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47190/
04:11 dalek parrot: r47191 | plobsing++ | branches/constant_unfolding/compilers/imcc (2 files):
04:11 dalek parrot: add constant unfolding stage to ops selection (try_weaken_const_to_temp)
04:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47191/
04:12 plobsing wooo! constant unfolding works!
04:14 bacek_at_work plobsing, hmmm... What is the reason behind?
04:14 plobsing bacek_at_work: it allows us to eliminate all of those const permutations for rare ops
04:14 plobsing also we can ditch the constant folder (which has had issues even recently)
04:15 plobsing or move it to elsewhere
04:15 bacek_at_work makes sense
04:15 plobsing now all that needs doing is modifying opsc to not emit const variants except for specially marked ops/args
04:17 cotto Yay!  The first modification of opsc that doesn't require a corresponding change in the ops2c perl code!
04:18 cotto what's your plan for that, plobsing?
04:19 plobsing I'm thinking it will be a flag on the op. :gen-const, :hot-const, :hot-potato
04:19 plobsing it doesn't provide much granularity, but that's fine
04:19 plobsing for now, at least
04:20 cotto we've got a full-blown parser for op signatures.   There's no reason not to have :gen-const(1,3,4) or something similar.
04:20 cotto other than a little extra code complexity
04:20 plobsing grumble, grumle, more work, grumble
04:21 cotto actually it might be easier just to annotate the individual args
04:22 cotto do whatever you feel like
04:22 cotto no worries if the first approximation is a little blunt
04:24 plobsing hmmmm... we already seem to have 'inconst' op args. I wonder if I can build off of those.
04:36 contingencyplan joined #parrot
04:40 cotto fakescience++
04:40 plobsing 'in' => constant and variable versions; 'invar' => variable only; 'inconst' => constant only?
04:40 plobsing s/?//
04:40 plobsing fakescience?
04:41 cotto http://fakescience.tumblr.com
04:42 cotto it provides clear and simple explanations for everyday phenomena
04:45 bacek_at_work plobsing, +1 for invar
04:45 plobsing +1 for already existing
04:47 parthm joined #parrot
04:49 TiMBuS joined #parrot
04:57 dalek TT #1375 closed by jimmy++: [patch]changed class.pmc to use GET_ATTR syntax
04:57 dalek TT #1375: http://trac.parrot.org/parrot/ticket/1375
05:01 dalek parrot: r47192 | plobsing++ | branches/constant_unfolding (5 files):
05:01 dalek parrot: kill off 30 find_cclass and find_not_cclass const variant ops as a proof of concept.
05:01 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47192/
05:02 plobsing wow. killing ops this way is *much* easier than moving things to dynops
05:02 cotto plobsing, you could add the ops to ops.skip if you need a simple poc
05:03 plobsing just converting the argument specification from in to invar does the trick
05:03 cotto ok
05:03 plobsing but thanks for the suggestion
05:03 sorear I have a modest proposal.
05:04 cotto does that mean that you won't have to hack on opsc?
05:04 sorear Let's eliminate STRING, STRING registers, and _s op variants.
05:04 plobsing cotto: exactly
05:04 plobsing it already exists
05:04 cotto nice
05:05 plobsing (prescient ops2c.pl hackers)++
05:05 plobsing sorear: why eliminate strings?
05:05 cotto sorear, are you suggesting that we only use string PMCs?
05:05 sorear cotto: yes
05:06 sorear STRING has a header, a body, GC fields, and a (actually two) vtables
05:06 cotto That'll be a tough case to make.  It'd be a massive amount of work just to update the code.
05:06 sorear it's very much like a PMC
05:06 sorear now that immutable strings are in, a lot of stuff which formerly didn't belong to the buffer can now be put in the buffer, shrinking struct STRING to the same size as struct PMC
05:07 sorear cotto: yes.
05:07 plobsing I think it is still useful to make the distinction. we poke strings in ways we shouldn't be poking PMCs
05:09 cotto sorear, is this a serious idea yet or are you just toying with it as a thought experiment?
05:11 sorear somewhere in between
05:12 sorear plobsing's last comment is the main thing stopping it from being a serious proposal
05:13 sorear I am watching darbelo closely; as the diversity of behaviors of strings increases, the degree of indirection in Parrot_str_ will converge with the vtable api
05:20 plobsing sorear: my comment might carry less weight than you think. I said "shouldn't be" in stead of "aren't" for  a reason. :-/
05:21 sorear plobsing: I had the concern before your comment
05:34 dalek parrot: r47193 | plobsing++ | branches/constant_unfolding/t/​compilers/imcc/imcpasm/opt1.t:
05:34 dalek parrot: skip constant folding tests which no longer work
05:34 dalek parrot: note: we should keep these around for if/when we get a decent optimizer
05:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47193/
05:55 aukjan joined #parrot
05:56 dalek rakudo: 5c09771 | moritz++ | t/spectest.data:
05:56 dalek rakudo: run whatever.t again
05:56 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/5​c097714cb7ab95b7f2ad7b5c005263ac80014c5
06:12 uniejo joined #parrot
06:27 parthm left #parrot
06:33 cognominal joined #parrot
06:57 dalek parrot: r47194 | plobsing++ | branches/constant_unfolding (6 files):
06:57 dalek parrot: shave off 8 ops by removing const variants of rarely used loadlib, dlfunc, and dlvar ops
06:57 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47194/
07:00 sorear plobsing: the _cclass ops are what powers NQP-rx, fwiw
07:01 plobsing well on the plus side, it got heavy use without breaking
07:02 plobsing does NQP-rx use find_cclass of find_not_cclass with constant variants in tight loops?
07:02 plobsing and would a decent loop invariant lifter be able to optimize the inserted set instructions?
07:04 sorear find_cclass *is* a tight loop
07:05 sorear any loop which contains find_cclass is once removed from being tight
07:06 plobsing like I mentioned in the email, I chose those ops because I hadn't seen them before and they each had 16 variants (which is way to big).
07:07 plobsing we could just as easily enable certain arguments of those ops to efficiently handle constants.
07:10 sorear NQP only uses find_[not_]?cclass $I11, <constant>, <reg>, $I0, <reg>
07:10 sorear s/I0/I10/
07:10 sorear I doubt that a single instance of constant unfolding is going to make a huge difference here
07:11 sorear especially if IMCC is smart enough to re-use the same unfolded IREG
07:11 plobsing sorear: that's the punchline. we have no register allocator
07:11 sorear umm
07:11 sorear how does .local work
07:12 plobsing it grabs the next available register
07:12 plobsing that is also how allocating temps works
07:12 plobsing IIUC
07:12 sorear so if I have 500 unfoldable ops, I have a 500 word frame?
07:13 plobsing that assumes only 1 constant unfolded per op, but yes.
07:13 sorear *snrk*
07:13 plobsing the idea of unfoldable ops is to make them only the uncommon ones
07:14 plobsing plus, constant unfolding would be a great idea if only we had a decent optimizer.
07:15 fperrad joined #parrot
07:15 plobsing loop-invariant lifting (temp registers containing constants are invariant), register allocation (temp registers are short lived), constant folding (for ops that can be const folded, ie: don't fold rand())
07:15 plobsing those can all alleviate or eliminate the consts of the unfolding
07:16 plobsing s/consts/costs/
07:17 sorear I presume you are talking about Lorito here
07:18 cotto see  khairul
07:18 cotto seen khairul
07:18 purl khairul was last seen on #parrot 2 days, 15 hours, 5 minutes and 17 seconds ago, saying: cotto_work: what do you mean?  [May 28 16:13:29 2010]
07:19 plobsing eSure. Or maybe someone gets fed up and writes a simple optimizer (not full Lorito). Or maybe once we decouple IMCC from its optimizer fully (unfolding reduces dependancy on folding) we can get IMCC's optimizer working to some degree.
07:19 plobsing s/eSure/Sure/
07:19 fperrad_ joined #parrot
07:19 sorear Oh
07:19 cotto phew.  I thought I was in the dot com boom again.
07:19 sorear I see.
07:20 sorear Well, you can approximate that
07:20 plobsing no. we've been through eX. the latest fad is iX. To be ahead of the curve, we should start prefixing things with 'o'
07:21 sorear Suppose no op in a function has more than 3 unfolded parameters
07:21 sorear Allocate 3 registers - perhaps I36, I37, I38
07:21 cotto plobsing, like oauth? ;)
07:21 plobsing or -Ofun
07:21 sorear Use them
07:21 plobsing sorear: that requires cross-communication between instruction selections increasing coupling in an already over-coupled IMCC
07:22 sorear oh.
07:22 plobsing the right answer is to have a register allocator
07:22 sorear how much mangling are we expecting IMCC to do?
07:22 sorear I feel like bytecode is the wrong level to do loop-invariant code motion
07:22 plobsing If IMCC doesn't find an op it will:
07:23 sorear it should be on some sort of tree form
07:23 plobsing 1) try and swap certain g[et] for l[et]
07:23 sorear but, goto
07:23 sorear nevermind
07:23 plobsing 2) weaken constants to temps
07:23 plobsing 3) weaken intvals to numvals
07:24 plobsing 4) some const folding that I want to eliminate
07:24 plobsing const folding still happens when you would have to do both const => temp and int => num
07:24 plobsing eg: $N0 = sqrt 1
07:24 plobsing but it would be easy enough to require sqrt 1.0
07:25 moritz does IMCC fold the sqrt at compile time too?
07:25 plobsing currently, yes. I think that should only happen if you ask it to optimize.
07:26 plobsing const folding is still a little buggy. I fixed one of them a week or two ago.
07:26 sorear but IMCC doesn't rearrange instructions or move branches around or anything crazy like that?
07:26 * moritz remembers
07:27 plobsing sorear: it has code to do that, but noone in their right mind runs IMCC at -O2
07:27 sorear wait a second
07:27 sorear aren't you the big IMCC *fan* here?
07:27 plobsing I think it has *potential*
07:28 plobsing more like "don't throw the baby out with the dishwater" than "this is awesome"
07:29 plobsing I think if we got things straightened out a little, some of IMCC's optimizer passes could be made useful.
07:29 plobsing For example -O1 doesn't break too much of parrot fulltest. It does however, take >1 hour (I gave up) to compile Rakudo.
07:30 cotto ouch
07:30 sorear what does -O1 and -O2 do?
07:30 cotto break parrot a little and a lot
07:31 plobsing -O1 enables some "lighter" optimizations like constant folding, -O2 enables the graph-coloring register allocator
07:31 plobsing or did until I ripped it out
07:31 plobsing but stuff on that order
07:31 sorear does -O2 do anything now?
07:32 plobsing it probably does. there's a lot it can do with the liveness graph.
07:32 plobsing dead-code elimination is -O2 methinks
07:32 plobsing the problem with -O1 is that it isn't single pass. there's a loop that watches for no change (assumed progress). I think certain inputs can make the optimizations work against each other.
07:33 moritz maybe try to run each optimization only once?
07:33 moritz the output will not be ideal, but probably better than now
07:34 plobsing yes. that's one of the things I might try. But first I'd like to decouple the parser from the optimizer slightly.
07:35 plobsing ideally, I could make the optimizer a separate program (I'd probably call it pbc_to_pbc for lack of a better name).
07:36 plobsing I may have caught whiteknightitis (the inability to come up with entertaining names for projects)
07:36 moritz depessimize :-)
07:37 plobsing it's a shame demoronize is taken
07:38 sorear you could call it demoronise
07:38 cotto pbc_demoronizatinator?
07:39 sorear birdbrain
07:39 cotto fastinator
07:39 plobsing +1 to birdbrain
07:39 plobsing fastinator? really? are you even trying anymore?
07:40 plobsing make-parrot-go-faster-program
07:40 cotto birdbrain has its charm
07:40 cotto whoever starts hacking on it gets to decide the name
07:41 plobsing exactly. My parrot calendar is pretty full with putting out fires ATM, so that project is likely vapourware for a while at least.
07:42 cotto we have many fires to choose from
07:47 GeJ clock?
07:48 cotto purl?
07:48 purl yes, cotto?
07:48 cotto clock?
07:48 cotto purl, clock?
07:48 purl wish i knew, cotto
07:48 cotto purl, purl?
07:48 purl cotto: i haven't a clue
07:48 cotto the bot's definitely broken
07:48 cotto karma bacek
07:48 purl bacek has karma of 2700
07:48 cotto at least that's working
07:48 cotto karma purl
07:48 purl purl has karma of 8972
07:48 cotto purl--
07:48 purl cotto: huh?
07:49 plobsing (purl)--
07:49 cotto purl-- ajfdlksa;jflsk
07:49 purl cotto: huh?
07:49 cotto asdkfjhskjd purl-- ajfdlksa;jflsk
07:49 plobsing karma purl
07:49 purl purl has karma of 8970
07:49 cotto karma purl
07:49 purl purl has karma of 8970
07:49 GeJ ok, roughly 1AM. I still have 6h hours to fix my code.
07:49 tcurtis (purl)--
07:49 tcurtis karma purl
07:49 purl purl has karma of 8969
07:49 cotto purl, status
07:49 purl Since Sun May 30 08:59:35 2010, there have been 152 modifications and 43 questions.  I have been awake for 22 hours, 50 minutes, 14 seconds this session, and currently reference 844319 factoids. Addressing is in optional mode.
07:49 plobsing botsmack
07:50 GeJ botsnack?
07:50 purl thanks GeJ :)
07:51 parthm joined #parrot
07:57 cotto tcurtis, I appreciate your epic posts to parrot-dev.
07:58 cotto tcurtis++
08:03 tcurtis Thanks, cotto. "Epic", eh? I like that. Sounds much better than "excessively long and possibly containing mistakes because it's too long to pay full attention all throughout proofreading."
08:04 dalek parrot: r47195 | plobsing++ | branches/constant_unfolding/src/ops/core.ops:
08:04 dalek parrot: [codetest] fix up docs after last ops removal
08:04 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47195/
08:20 bacek ~~
08:20 cotto <>
08:20 khairul joined #parrot
08:21 cotto khairul, ping
08:21 dalek parrot: r47196 | khairul++ | branches/gsoc_instrument (3 files):
08:21 dalek parrot: Added method to get the values for op args. Added PARROT_EXPORT to key_string function annotation in src/key.c
08:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47196/
08:21 dalek parrot: r47197 | khairul++ | branches/gsoc_instrument/examples/library (2 files):
08:21 dalek parrot: Rewrote tracer.pir in nqp and removed older pir example.
08:21 khairul cotto: pong
08:21 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47197/
08:22 cotto khairul, is there a difference in your instrument pmc code between supervisor and the interp that's passed to all functions via PARROT_INTERP?
08:24 cotto I don't see the reason to keep ->supervisor around if using INTERP/interp would have the same effect.
08:25 khairul yup, there's no difference. its an artifact for get_pointer. i'll remove that soonish. i don't think i use it anywhere else though. checking.
08:25 cotto ok
08:29 khairul i remember now, i needed it to get a reference to the supervisor interp in the runcore.
08:30 cotto Have you run any big chunks of code under instrumentation?  It'd be interesting to see if the potential speed advantage of an op table vs the PMC arrays you have now is worthwhile.
08:30 khairul yup...
08:30 khairul mostly i run those in examples/pir
08:31 mberends joined #parrot
08:32 khairul i got real 3m27.883s, user 2m26.525s sys 0m4.760s running tracer.nqp on examples/pir/mandel.pir
08:33 khairul in comparison to real 2m28.807s user 0m36.826s sys 0m3.256s for the trace runcore.
08:34 cotto what about the default runcore?
08:35 khairul that, is no comparison. 0m0.096s real
08:36 cotto might be worthwhile to play with overriding the op table
08:37 cosimo joined #parrot
08:37 khairul op tables are shared amongst all the interpreters right?
08:39 cotto not sure
08:42 parthm left #parrot
08:49 dalek cardinal: c84be84 | fperrad++ | src/classes/File.pir:
08:49 dalek cardinal: File is now a dynpmc, so load it
08:49 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/c84be84062e98711eacc383e8bb25c184d725eb8
08:56 cotto khairul, it looks like there's only one copy of the op lib unless you explicitly make another.
08:58 cotto It looks like the op lib is a global too, so wheee
09:00 cotto if it'd make life less painful for you, you could bring up making the op lib non-static
09:00 cotto at next #ps
09:00 cotto I wouldn't expect that it needs to be static but I haven't taken a shot at changing the code yet.
09:05 cotto also not sure what implications that'd have for the work plobsing++ is doing on dynfixups
09:06 cotto lots of questions
09:06 cotto probably workable though
09:06 cotto g/night
09:06 khairul hrm...
09:06 dalek cardinal: 8d9d275 | fperrad++ | setup.pir:
09:06 dalek cardinal: refactor additional tests with runtests from distutils (instead of Perl5 prove)
09:06 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/8d9d275468e1a132f52ffa26c72111cf4000cd3b
09:06 khairul nite
09:06 khairul i'll think it through first and discuss with you tmr.
10:03 mikehh joined #parrot
10:17 dalek parrot: r47198 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:17 dalek parrot: Don't initialize freshly allocated List_Item. List.append will do it.
10:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47198/
10:17 dalek parrot: r47199 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:17 dalek parrot: Skip marking of 'constant' objects
10:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47199/
10:24 whiteknight joined #parrot
10:34 dalek parrot: r47200 | bacek++ | branches/gc_massacre/include/parrot/settings.h:
10:34 dalek parrot: Eat your own food - use TMS as default GC.
10:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47200/
10:34 dalek parrot: r47201 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:34 dalek parrot: Implement mark blocking in TMS
10:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47201/
10:34 dalek parrot: r47202 | bacek++ | branches/gc_massacre/src/gc/list.c:
10:34 dalek parrot: Decrement list count on List.remove
10:34 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47202/
10:34 dalek parrot: r47203 | bacek++ | branches/gc_massacre/src/gc/system.c:
10:34 dalek parrot: Made Memory_Pools even more optional during trace_memory_block
10:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47203/
10:35 dalek parrot: r47204 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:35 dalek parrot: More fixes to TMS
10:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47204/
10:35 dalek parrot: r47205 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:35 dalek parrot: Invoke M&S earlier during allocating of new pmc header.
10:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47205/
10:35 dalek parrot: r47206 | bacek++ | branches/gc_massacre/include/parrot/pobj.h:
10:35 dalek parrot: Add POBJ_grey_FLAG
10:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47206/
10:35 dalek parrot: r47207 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
10:35 dalek parrot: Don't remark grey objects.
10:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47207/
10:51 dalek parrot: r47208 | bacek++ | trunk (2 files):
10:52 dalek parrot: Disable building of dynops for corevm
10:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47208/
10:52 dalek parrot: r47209 | bacek++ | branches/gc_massacre (18 files):
10:52 dalek parrot: Merge branch 'master' into gc_massacre
10:52 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47209/
11:14 dalek rakudo: aebd0c5 | (Solomon Foster)++ | src/core/metaops.pm:
11:14 dalek rakudo: Extend hyper to handle nested lists / arrays.  Patch courtesy of Prakash
11:14 dalek rakudo: Kailasa.
11:14 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​ebd0c5f32ef311bb9d1af11c5f35ac91117ffe3
11:27 dalek cardinal: 25498b0 | fperrad++ | src/classes/File.pir:
11:27 dalek cardinal: some opcodes are gone
11:27 dalek cardinal: review: http://github.com/cardinal/cardinal/commit​/25498b0db979a2812f753977e2d8e14fce39c79c
11:41 dalek parrot: r47210 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
11:41 dalek parrot: Disable debug output.
11:41 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47210/
11:51 tetragon joined #parrot
11:58 dalek parrot: r47211 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
11:58 dalek parrot: More checks of pointer in is_pmc_ptr.
11:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47211/
11:58 dalek parrot: r47212 | bacek++ | branches/gc_massacre/src/gc/list.c:
11:58 dalek parrot: Use classical algorithm to remove item from list.
11:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47212/
11:58 dalek parrot: r47213 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
11:58 dalek parrot: Fix PoolAllocator.is_owned.
11:58 dalek parrot: PoolAllocator.arenas are forward list, not backward.
11:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47213/
11:58 dalek parrot: r47214 | bacek++ | branches/gc_massacre/src/gc/list.c:
11:58 dalek parrot: Simplify List.append
11:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47214/
11:58 dalek parrot: r47215 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
11:58 dalek parrot: Add more assertions into tms_mark_and_sweep
11:58 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47215/
12:05 clinton joined #parrot
12:23 bacek seen chromatic
12:23 purl chromatic was last seen on #parrot 1 days, 14 hours, 10 minutes and 59 seconds ago, saying: That seems workable.  [May 29 22:12:45 2010]
12:23 bacek slacker...
12:31 dalek parrot: r47216 | bacek++ | branches/gc_massacre/src/gc (3 files):
12:31 dalek parrot: Add more debug to catch list brokage
12:31 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47216/
12:31 JimmyZ joined #parrot
12:39 whiteknight how do I get the stdout FileHandle in current parrot?
12:40 lucian joined #parrot
12:40 bacek whiteknight, step 1 - checkout gc_massacre branch. step 2 - gdb --args ./parrot --gc-debug t/compilers/imcc/syn/labels.t
12:41 bacek After fixing assert failure you'll reach nirvana and filehandle will appear in your hands
12:41 aloha joined #parrot
12:44 khairul joined #parrot
12:47 aloha joined #parrot
12:47 dalek parrot: r47217 | bacek++ | branches/gc_massacre/src/gc (2 files):
12:47 dalek parrot: Remove unused List.prepend
12:47 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47217/
12:49 aloha joined #parrot
12:49 kid51 joined #parrot
12:54 bacek aloha, kid51
12:55 bacek joined #parrot
13:02 aloha joined #parrot
13:03 aloha joined #parrot
13:09 bacek aloha, TMS?
13:09 aloha bacek: No clue. Sorry.
13:09 bacek aloha, TMS is TriColor Mark & Sweep
13:09 aloha bacek: Okay.
13:09 bacek aloha, TMS?
13:09 aloha bacek: TMS is TriColor Mark & Sweep
13:09 bacek aloha, TMS is also http://trac.parrot.org/parrot/wiki/GCMassacre
13:09 aloha bacek: Okay.
13:09 bacek aloha, TMS?
13:09 aloha bacek: TMS is TriColor Mark & Sweep or http://trac.parrot.org/parrot/wiki/GCMassacre
13:10 bacek purl, TMS?
13:10 purl i haven't a clue, bacek
13:10 bacek purl, TMS is TriColor Mark & Sweep
13:10 purl OK, bacek.
13:10 bacek purl, TMS?
13:10 purl bacek: bugger all, i dunno
13:10 bacek meh
13:10 bacek aloha, aloha?
13:10 aloha bacek: No clue. Sorry.
13:11 bacek aloha, aloha is little purl sister which can memoize things
13:11 aloha bacek: Okay.
13:11 bacek aloha, aloha?
13:11 aloha bacek: aloha is little purl sister which can memoize things
13:18 bacek aloha, no, aloha is <reply>I'm little purl's sister which can memoize things
13:18 bacek aloha, aloha?
13:18 aloha bacek: aloha is little purl sister which can memoize things
13:19 bacek aloha, aloha?
13:19 aloha bacek: aloha is little purl sister which can memoize things
13:20 moritz aloha!
13:20 aloha joined #parrot
13:20 bacek stupid bot...
13:20 bacek aloha, aloha?
13:20 aloha bacek: aloha is little purl sister which can memoize things
13:20 bacek aloha, forget aloha
13:20 aloha bacek: I forgot about aloha.
13:20 bacek aloha, aloha is <reply>I'm little purl's sister which can memoize things
13:20 aloha bacek: Okay.
13:21 bacek aloha, aloha?
13:21 aloha bacek: I'm little purl's sister which can memoize things
13:21 bacek much better
13:21 bacek aloha, moritz?
13:21 aloha bacek: Search me, bub.
13:21 bacek aloha, moritz is great!
13:21 aloha bacek: Okay.
13:21 bacek aloha, moritz?
13:21 aloha bacek: moritz is great!
13:22 bacek :)
13:22 jsut_ joined #parrot
13:25 bacek Anyway, main purpose of this silly bot is tab completion :)
13:27 bacek msg chromatic If you want to help with GC massacre -  step 1 - checkout gc_massacre branch. step 2 - gdb --args ./parrot --gc-debug t/compilers/imcc/syn/labels.t
13:27 purl Message for chromatic stored.
13:29 bacek msg chromatic I manage to fail with implementing of linked list. labels.t asserting on list ownershit...
13:29 purl Message for chromatic stored.
13:30 kid51 Hmm.  Either the 'make smolder_coretest' is seriously out of date ... or we have just suffered massive errors.
13:30 kid51 http://smolder.plusthree.com/ap​p/projects/report_details/34153
13:30 kid51 I suspect the former
13:31 moritz kid51: I think 'make coretest' has some dependency problems... mikehh talked about it before
13:32 kid51 I was able to run 'make coretest' yesterday and resolve most problems.
13:32 bacek I think I fixed it in latest commit in trunk...
13:32 dalek rakudo: 7a2ede9 | (Solomon Foster)++ | src/core/metaops.pm:
13:32 dalek rakudo: Simple implementation of hyper on hashes.
13:32 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​a2ede99d88bdd30d544e44c7d003efc43769e77
13:33 kid51 Only one I couldn't handle was:  http://trac.parrot.org/parrot/ticket/1666
13:34 bacek Actually no. I broke it even more.
13:35 kid51 Indeed:  http://smolder.plusthree.com/ap​p/projects/report_details/34154   Regular smolder
13:38 dalek parrot: r47218 | jkeenan++ | branches/tt1452_configure_debug (2 files):
13:38 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
13:38 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47218/
13:38 kid51 Do we indeed want to "Disable building of dynops for corevm" (r47208 commit message) ?
13:39 bacek kid51, yes. opsc depends on NQP/PCT
13:39 kid51 Okay.  Is the problem in make corevm or make coretest?
13:41 nopaste "kid51" at 192.168.1.3 pasted "Recent change in makefiles/root.in" (23 lines) at http://nopaste.snit.ch/20768
13:46 bacek kid51, "coretest"
13:46 bacek corevm should not include PCT/NQP/*
13:46 bacek coretest depends on dynops
13:47 bacek dynops depends on opsc
13:47 bacek opsc implemented in NQP
13:47 bacek NQP is not part of corevm
13:47 bacek chicken and egg problem...
13:49 bacek Anyway, coretest should not include dynops
13:49 ruoso joined #parrot
13:53 mikehh bacek, kid51: a lot of tests in coretest did depend on dynops, and now fail
13:54 mikehh we seriously now need to consider which tests should be in coretest now
13:54 dalek parrot: r47219 | bacek++ | trunk/t/compilers/imcc/syn/tail.t:
13:54 dalek parrot: Don't use printerr in test to avoid dependency on opsc for dynops.
13:54 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47219/
13:54 dalek parrot: r47220 | bacek++ | trunk/t/op/interp.t:
13:54 dalek parrot: Use stdout to avoid dependency on dynops.
13:55 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47220/
13:55 dalek parrot: r47221 | jkeenan++ | branches/tt1452_configure_debug​/config/auto/cpu/i386/auto.pm:
13:55 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
13:55 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47221/
14:00 bacek mikehh, at least dynpmc should not be in coretest
14:01 mikehh bacek: quite a few dynpmc tests were in coretest
14:02 mikehh bacek: in fact I think all were
14:02 bacek indeed
14:03 plobsing joined #parrot
14:03 mikehh and since plobsing's masscree a lot more stuff has been moved there
14:07 mikehh and a who;le bunch of tests are failing make test too
14:09 PacoLinux joined #parrot
14:11 dalek parrot: r47222 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu (2 files):
14:11 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
14:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47222/
14:11 dalek parrot: r47223 | jkeenan++ | branches/tt1452_configure_debu​g/config/auto/cpu/ppc/auto.pm:
14:11 dalek parrot: Continue to adapt config steps to new approach to verbose/debugging output.
14:11 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47223/
14:11 dalek parrot: r47224 | bacek++ | trunk/t/pmc (3 files):
14:12 dalek parrot: Remove dependencies on dynops to be able to run tests in coretest
14:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47224/
14:12 dalek parrot: r47225 | jkeenan++ | branches/tt1452_configure_de​bug/config/auto/memalign.pm:
14:12 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
14:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47225/
14:28 dalek parrot: r47226 | bacek++ | trunk/t/pmc/eval.t:
14:28 dalek parrot: Migrate most of the test to dynopsless variant to avoid dependency on opsc.
14:28 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47226/
14:28 dalek parrot: r47227 | NotFound++ | trunk/t/pmc/resizablepmcarray.t:
14:28 dalek parrot: tests for RPA splice with negative offset
14:28 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47227/
14:28 dalek parrot: r47228 | bacek++ | trunk/lib/Parrot/Harness/DefaultTests.pm:
14:28 dalek parrot: Remove dynpmcs from coretest. They are not belong to this stage of testing
14:28 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47228/
14:32 mikehh bacek: better but still failing a whole bunch of tests
14:44 dalek parrot: r47229 | NotFound++ | trunk/t/pmc/resizableintegerarray.t:
14:45 dalek parrot: test for RIA shift from empty
14:45 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47229/
14:45 dalek parrot: r47230 | jkeenan++ | branches/tt1452_configure_debug/config/gen (2 files):
14:45 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
14:45 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47230/
15:01 dalek parrot: r47231 | jkeenan++ | branches/tt1452_configure_d​ebug/config/gen/opengl.pm:
15:01 dalek parrot: Move a 'die' statement closer to where its death condition is determined.
15:01 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47231/
15:03 patspam joined #parrot
15:04 kid51 In 'make test', now getting one failure in t/pmc/eval.t and one in t/pmc/threads.t
15:06 kid51 http://smolder.plusthree.com/ap​p/projects/report_details/34155
15:09 dalek rakudo: 4f9ca44 | (Solomon Foster)++ | src/core/metaops.pm:
15:09 dalek rakudo: Handle single-arg hash hypers as well.
15:09 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/4​f9ca44ecafa417c21f057ccc92f8706939da5de
15:14 Coke joined #parrot
15:19 khairul joined #parrot
15:21 jsut joined #parrot
15:24 integral joined #parrot
15:29 Myhrlin joined #parrot
15:53 zostay joined #parrot
16:37 athomason joined #parrot
16:39 szabgab joined #parrot
16:39 Infinoid joined #parrot
16:39 dmagnus_ joined #parrot
16:39 Tene joined #parrot
16:39 krunen joined #parrot
16:39 Maddingue joined #parrot
16:39 nnunley joined #parrot
16:39 cotto joined #parrot
16:39 GeJ joined #parrot
16:39 treed joined #parrot
16:39 bacek_at_work joined #parrot
16:39 dngor joined #parrot
16:39 slavorg joined #parrot
16:39 sri joined #parrot
16:39 tewk joined #parrot
16:39 Ryan52 joined #parrot
16:39 ascent joined #parrot
16:39 knewt joined #parrot
16:39 ttbot joined #parrot
16:39 moritz joined #parrot
16:39 arnsholt joined #parrot
16:39 silug joined #parrot
16:39 TonyC joined #parrot
16:39 nopaste joined #parrot
16:39 darbelo joined #parrot
16:39 simcop2387 joined #parrot
16:39 spinclad joined #parrot
16:39 Util_ joined #parrot
16:39 pmichaud joined #parrot
16:39 cotto_work joined #parrot
16:39 TimToady joined #parrot
16:39 preflex joined #parrot
16:39 particle joined #parrot
16:39 jnthn joined #parrot
16:39 sorear joined #parrot
16:39 Patterner joined #parrot
16:39 janus joined #parrot
16:39 contingencyplan joined #parrot
16:39 cognominal joined #parrot
16:39 mberends joined #parrot
16:39 cosimo joined #parrot
16:39 mikehh joined #parrot
16:39 whiteknight joined #parrot
16:39 lucian joined #parrot
16:39 bacek joined #parrot
16:39 aloha joined #parrot
16:39 PacoLinux joined #parrot
16:39 patspam joined #parrot
16:39 NotFound joined #parrot
16:39 ruoso joined #parrot
16:39 purl joined #parrot
16:53 kid51 joined #parrot
17:11 kid51 Just got over an unusual Net outage:  Couldn't reach my own web site/server; could reach google, nytimes, etc.  Couldn't do IRC.
17:21 cotto I think the chicken/egg problem can be partially solved by checking in the dynpmc generated files.
17:21 cotto the only problem with that is that the dynpmc makefiles are known to be goofy
17:22 darbelo dynpmc makefiles should be generated, like we do for the core pmcs.
17:23 darbelo In fact, most of that config step could be reused for that purpose.
17:23 cotto they are partially generated
17:23 dalek tracwiki: v61 | cotto++ | ParrotQuotes
17:23 dalek tracwiki: bacek might have a hidden agenda
17:23 dalek tracwiki: http://trac.parrot.org/parrot/wiki/Pa​rrotQuotes?version=61&amp;action=diff
17:24 darbelo The .in file (And hence most dep info) is still human-made.
17:25 cotto that's why I say partially
17:25 darbelo The makefile for core pmcs has less humans involved.
17:25 cotto it's definitely something that we should be able to generate easily.
17:25 cotto bonus points for doing it in nqp
17:26 darbelo NQP at Configure time? Urgh.
17:29 dalek parrot: r47232 | jkeenan++ | branches/tt1452_configure_debug (2 files):
17:29 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
17:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47232/
17:32 joeri joined #parrot
17:37 NotFound Don't you think that ops that are so needed to test core must be in core?
17:47 tcurtis joined #parrot
17:51 aukjan joined #parrot
18:02 cotto whiteknight, interesting tool.  Is it on github or something?
18:02 whiteknight cotto: not yet. Hacked it together this morning. It's extremely limited
18:03 dalek parrot: r47233 | jkeenan++ | branches/tt1452_configure_debug (2 files):
18:03 dalek parrot: Update config step and test file to reflect change in handling of verbose debugging output.
18:03 whiteknight it's basically the world's worse home-brew "parser" for the worlds smallest subset of PIR
18:03 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47233/
18:03 cotto I thought it'd be something like that.
18:05 whiteknight my goal is to use this tool to find a reasonably small subset of PIR that lets us do the things we need to do, and then we call it "Lorito"
18:06 cotto I'm not convinced that a mere subset of pir would be sufficient for what we want Lorito to do.
18:11 gbacon joined #parrot
18:12 whiteknight cotto: I'm also adding in some C-specific features, like the ability to declare a variable as a C type instead of an INSP, and ability to call a C function
18:12 whiteknight so, not a true subset of existing PIR
18:20 cotto Using C-specific features sounds like it'll limit our future jitting possibilities.
18:21 whiteknight cotto: the idea being that anything we can do in C, we can do in ASP
18:21 whiteknight ASM
18:21 whiteknight calling funcs, dereferencing pointers, etc
18:21 whiteknight so long as the ops stay atomicish, there's no problem
18:22 cotto bad typo there
18:22 cotto ;)
18:23 cotto so you're thinking of a subset of pir with some C-sauce added
18:23 cotto how would it work with nqp or other hlls?
18:24 cotto part of the charm of Lorito is that it loosens the limits of which language we can use to implement core functionality
18:30 dalek winxed: r482 | julian.notfound++ | trunk/winxedst1.winxed:
18:30 dalek winxed: add missing optimize step to NewExpr and use new instead of root_new in new
18:30 dalek winxed: 'literal'
18:30 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=482
18:36 dalek parrot: r47234 | jkeenan++ | branches/tt1452_configure_deb​ug/config/inter/libparrot.pm:
18:36 dalek parrot: Delete commented-out code.
18:36 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47234/
18:50 clinton joined #parrot
19:04 dalek rakudo: cde6abe | moritz++ | src/core/system.pm:
19:04 dalek rakudo: enable argumentless sleep(); closes RT #57294
19:04 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/c​de6abe86278dd11e335d8b7bd24036dcbc51c14
19:09 Themeruta joined #parrot
19:14 bluescreen joined #parrot
19:25 dalek winxed: r483 | julian.notfound++ | trunk/winxedst1.winxed:
19:25 dalek winxed: fix: predef die has void result
19:25 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=483
19:30 dalek winxed: r484 | julian.notfound++ | trunk/winxedst0.cpp:
19:30 dalek winxed: use const REGnone in stage 0 for predef void return type, like in stage 1
19:30 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=484
19:40 whiteknight cotto: this is an exploratory exercise. Start with a very simple "compiler" here, and add operations until we can recreate all the C code that we need in Parrot (or, the part of Parrot that Lorito will be used for)
19:41 whiteknight at that point, we say that set of operations is the list of operations Lorito needs to support
19:41 whiteknight the only thing that's "PIR" about this is the syntax, and even then I'm taking some liberties for ease
19:45 cotto ok
19:45 cotto what's the tool written in?
19:46 GeJ Good morning everyone.
19:47 moritz rakudo: say :(3).perl
19:47 moritz sorry, wrong channel
19:48 * darbelo wants to write ops in LOLCODE.
19:50 whiteknight cotto: pure PIR
19:51 whiteknight not pretty PIR
19:51 whiteknight let me jam it up on github for perusal
19:53 whiteknight http://github.com/Whiteknight/subpir2c
19:53 whiteknight cotto: op bodies are in oprules.pir, the main driver is subpir.pir
19:55 darbelo Line oriented conversion? Ew.
19:56 darbelo The PIR is not particularly ugly, though.
20:02 Psyche^ joined #parrot
20:03 cotto it's hard to have especially ugly pir
20:04 dalek winxed: r485 | julian.notfound++ | trunk/winxedst1.winxed:
20:04 dalek winxed: allow new with a string constant as class name, too much special cases but
20:04 dalek winxed: allows some use cases
20:04 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=485
20:05 darbelo Is that a challenge?
20:06 darbelo ;)
20:07 whiteknight darbelo: I wanted to use NQP, but when I had my idea I figured it would be faster to just do line-based PIR conversion than it would be to ask the questions I would need about adding a C-code generator to an NQP-RX grammar
20:07 NotFound An obfuscated PIR contest?
20:08 darbelo whiteknight: Makes sense for a proptotype, but it's going to get limiting if you want to push it further.
20:09 whiteknight darbelo: of course. It's only a stupid prototype. I put it together in about 2 hours this morning as proof-of-concept
20:09 whiteknight a proper NQP-RX grammar and custom code generator would be ideal
20:09 whiteknight there is a lightning storm happening here now, I may lose power
20:10 darbelo Dont worry, tt happens to all electricity wilding superheroes eventually.
20:11 darbelo It'll come back in an issue or two.
20:11 sorear we need to figure out allison's problems with NQP-rx too
20:12 darbelo .oO( allison has problems with NQP-rx ? )
20:12 darbelo Boy am I out of at least one loop.
20:14 sorear darbelo: allison replied to tcurtis on parrot-dev@, saying that PIR was much superior to NQP-rx for writing optimization passes or something like that
20:15 sorear http://lists.parrot.org/pipermail​/parrot-dev/2010-May/004349.html
20:15 sorear scroll down to "hopelessly byzantine"
20:16 darbelo The part that says "Which is *not* to say that PIR is the best tool for the job"?
20:16 sorear yes
20:17 darbelo Okay.
20:19 jnthn lol...I've had the exact opposite experience writing stuff in NQP rather than PIR. :-/
20:20 jnthn (Get stuff done much quicker, less hassle, easier to maintain, easier for others to hack on...)
20:26 cotto I much prefer nqp after getting over its quirks, but I can't rule out that it might not be better than straight pir for some tasks.
20:27 cotto multis will be nice
20:27 jnthn Yeah, I think some recent things went in that aim at getting some multi support for nqp.
20:30 dalek parrot: r47235 | NotFound++ | trunk/t/pmc/resizablebooleanarray.t:
20:30 dalek parrot: tests for RBA set negative size and get with negative index out of range
20:30 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47235/
20:31 theory joined #parrot
20:49 eternaleye joined #parrot
21:05 confound joined #parrot
21:48 lucian_ joined #parrot
22:21 bacek aloha, humans
22:22 darbelo aloha, botmaker
22:23 darbelo bacek++ # Tab completion bot.
22:27 Coke you were too lazy to type "aloha"?
22:27 * Coke is confused.
22:27 bacek Coke, yes of course!
22:27 bacek aloha, Coke
22:54 Chandon joined #parrot
23:01 tcurtis Is there a way to distinguish between PBCs intended to be loaded and used as libraries and PBCs intended to be executed as main programs?
23:01 cotto I'm going to make a "hi" bot.
23:01 darbelo tcurtis: programatically? I don't think so.
23:02 cotto I'd say that you could look for a :main but I think those get marked by default if there's not an explicit one.
23:02 darbelo An explicitly marked :main sub is a pretty good hint in PIR;
23:02 darbelo But I'0m not sure that's preserved into the PBC
23:03 cotto I don't know if it'd be completely reliable.
23:03 darbelo ... or what cotto said...
23:03 darbelo I need to stop typing into one window while looking at another.
23:06 darbelo There is also the chance that the file is a library, but can be run standalone with a 'test' main.
23:07 darbelo Java programmers are fond of that trick, and PIR would allow them to keep using it here.
23:08 NotFound darbelo: it does, actually.
23:08 cotto we could add explicit metadata if the information were important enough
23:09 cotto pbc_merge --library -o libfoo.pbc foo.pbc bar.pbc buz.pbc
23:09 darbelo A 'fake main' is at the top of the file it runs "as intended" without explicit marking.
23:11 cotto tcurtis, why do you ask?
23:11 tcurtis Actually, what I was thinking of wouldn't need anything to be done on the PBC. My idea is that if you are just compiling something to be ran as a program rather than loaded as a library, some more aggressive optimizations could be performed that might break its ability to be used as a library(e.g. removing dead globals and subs). I suppose ensuring it isn't accidentally loaded could be done by inserting an :init sub that throws.
23:13 * NotFound thinks that lately people looks more interested in breaking things than in make things work.
23:13 * darbelo hasn't broken anything yet.
23:14 darbelo tcurtis: The only way to make sure "This won't be used as a library" is to ask the programmer.
23:15 dalek parrot: r47236 | bacek++ | branches/gc_massacre/src/gc (2 files):
23:16 dalek parrot: Move ListItem.owner under ifndef NDEBUG condition
23:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47236/
23:16 dalek parrot: r47237 | bacek++ | branches/gc_massacre/src/gc (2 files):
23:16 dalek parrot: Add List.check for validating list
23:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47237/
23:16 dalek parrot: r47238 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
23:16 dalek parrot: Split objects and black_objects during mark. Comment out free_pmc_header. It's dangerous
23:16 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47238/
23:17 darbelo Also people can build lots of little pbc's and then merge them into one big one. In that case you'll never see all of the PAST, and won't know what optimizations are 'safe' fro that piece of code.
23:19 tcurtis Good point.
23:22 darbelo Of course, when the programmer knows he won't be doing any of that stuff (maybe he's just going to make the whole thinkg into a fakecutable), he can be explicit and ask you to optimize wildly.
23:23 cotto a fakecutable definitely won't be used as a library
23:24 darbelo Exactly, but that information is not available at the PAST level.
23:24 tcurtis darbelo: Obviously, the compiler user would need to specify when to do such aggressive optimizations. My "how to make sure this isn't used as a library" thought was geared to making sure that no one mistakenly tries to load_bytecode the generated PBC.
23:25 darbelo tcurtis: Just make the optimization is documented as "don't do that if you want a lib" ;)
23:25 NotFound Why not?
23:26 NotFound There are lots of conceivable usages that may want to load programs with main.
23:26 darbelo Then when people mistakenly load_bytecode the thing we get to point and laugh if it breaks.
23:27 darbelo "Only do crazy shit when explicitly asked" is a good motto for an optimizer, IMHO.
23:27 tcurtis NotFound: I'm talking about optimizations that involve doing things like changing the signature of subs, removing unused globals and subs, etc. If you're trying to use the generated PBCs as a library, everything might work fine. Or the sub you are trying to use might have been optimized away and you get an exception for null PMC in invoke().
23:28 tetragon joined #parrot
23:30 whiteknight tcurtis: might be worthwhile to add some flags to functions for the optimizer to read
23:31 whiteknight manually flag functions which are API functions, and ones which are internal-only, inlineable, etc
23:31 NotFound Yeah, I want a flag "Don't touch me"
23:31 NotFound Set on by default.
23:33 darbelo .sub 'main' :go-wild-on-me-cowboy
23:34 whiteknight i like the idea, but the wording should be a little less sexual
23:34 darbelo .sub 'main' :optmize-me-like-you-would-your-dog
23:35 whiteknight i said less sexual. And maybe you shouldn't have a dog
23:37 darbelo It's actully (paraphrased) shakespeare ;)
23:39 cotto because Shakespeare was never sexual
23:39 darbelo After a quick googling I notice that (once stripped of round-trip translation artifacts) it should be ":optmize-me-but-as-your-spaniel"
23:40 darbelo It's art, dude.
23:41 tcurtis .sub 'main' :internal or similar would be nice, although it has the disadvantage of each HLL having to have a representation for :internal(although immediate blocks like those used for if and such could probably be marked :internal by default(or at least by default by the HLL compiler upon constructing them)).
23:44 darbelo :inline or :inlineable could be used as well. Even if they lack that shakespearean touch I was looking for.
23:44 whiteknight being able to attach that flag to a whole namespace would be good
23:45 whiteknight or a whole file
23:45 cotto I don't know if pbc would have a nice existing mechanism to do that
23:46 darbelo I though he was transforming PAST trees?
23:47 darbelo All he needs is for the compiler (who should be quite knowledgeable about the language it's compiling) to mark the proper nodes as :thoroughly-optmizable
23:48 cotto My brain got confused about which layers we're talking about.
23:49 dalek parrot: r47239 | bacek++ | branches/gc_massacre/src/gc (2 files):
23:49 dalek parrot: Add List.is_owned for precise check in GC.is_pmc_ptr
23:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47239/
23:49 dalek parrot: r47240 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
23:49 dalek parrot: Increment marks_run after mark.
23:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47240/
23:49 dalek parrot: r47241 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
23:49 dalek parrot: Add commented out precise check in GC.is_pmc_ptr
23:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47241/
23:49 dalek parrot: r47242 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
23:49 dalek parrot: Don't mark constant PObj
23:49 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47242/
23:50 NotFound I think that storing information in the pbc about what optimizations or wathever has been done is unnecessary. If you want to be sure about if a function has been optimized out or not, just look for it.

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

Parrot | source cross referenced