Parrot 2.4.0 "Sulfur Crest" Released | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere
Set by moderator on 18 May 2010.
plobsing wonders how much it would take to go from winxed to javascript 00:13
00:16 whiteknight joined 00:23 Coke joined
whiteknight bacek: TMS is "working"? 00:29
whiteknight has a lot of new code to read 00:33
00:36 mikehh joined
Coke skips review. 00:38
00:45 tcurtis joined 01:07 kid51 joined
dalek rrot: r47177 | jkeenan++ | branches/tt1452_configure_debug (5 files):
[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:09
bacek_at_work whiteknight, yes (fsvo)
whiteknight bacek: I see that it copies a lot of logic from gc_inf for now
bacek_at_work whiteknight, it was quickest way to get GC skeleton 01:17
but TMS logic is brand new :) 01:18
whiteknight, starting from line 539 in gc_tms.c 01:22
whiteknight yeah, I saw all that. What you have so far looks nice
bacek_at_work It's almost one-to-one translation from GCMassacre wiki page. 01:23
dalek rrot: r47178 | jkeenan++ | branches/tt1452_configure_debug/MANIFEST:
Update MANIFEST.
01:26
rrot: r47179 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/msvc-01.t:
Update test file to reflect change in handling of verbose debugging output.
rrot: r47180 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/gmp-01.t:
Update test file to reflect change in handling of verbose debugging output.
whiteknight I suggest deprecating the new_s and new_s_i opcodes
with immutable strings, they are useless
GeJ TMS ? 01:35
bacek_at_work GeJ, TriColour Mark & Sweep 01:39
dalek rrot: r47181 | jkeenan++ | branches/tt1452_configure_debug/t/steps/auto/readline-02.t:
Update test file to reflect change in handling of verbose debugging output.
01:43
GeJ bacek_at_work: Thanks. time to google. 01:44
bacek_at_work GeJ, trac.parrot.org/parrot/wiki/GCMassacre 01:45
plobsing whiteknight: clone_s_s should probably go to for similar reasons 01:49
whiteknight maybe 02:15
It's a similar concept, but I can imagine a situation where maybe we would want two distinct headers pointing to a single buffer
probably not common, but worth an RFC 02:16
dalek rrot: r47182 | jkeenan++ | branches/tt1452_configure_debug/config/auto/pcre.pm:
Re-order arguments to _evaluate_cc_run() to be consistent with similar subroutines in other steps.
rrot: r47183 | jkeenan++ | branches/tt1452_configure_debug/t/steps (6 files):
Update test file to reflect change in handling of verbose debugging output.
tcurtis To anyone interested in my GSoC: please have a look at my message to parrot-dev if you have a chance.
GeJ make fulltest PASS all test on FreeBSD 7 @47181 02:17
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
so, no 6.x anymore.
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:24
bacek_at_work GeJ, no worries. It was stale headers in very old svn checkout. 02:25
dalek tracwiki: v12 | jkeenan++ | GCMassacre 02:33
tracwiki: Small spelling and grammar corrections
tracwiki: trac.parrot.org/parrot/wiki/GCMassa...ction=diff
02:39 JimmyZ joined 02:43 bluescreen joined 02:47 JimmyZ_ joined
dalek rrot: r47184 | jkeenan++ | branches/tt1452_configure_debug (4 files):
Continue to modify handling and testing of verbose/debugging output.
02:49
bacek_at_work purl: 107267 + 80912 03:04
purl 188179
cotto TMS?
bacek_at_work purl: 64405 + 513469
purl 577874
cotto TMS is tri-color mark and sweep
bacek_at_work cotto, yes. new_pmc_header + mark_and_sweep calls for TMS and MS. 03:05
cotto TMS is also trac.parrot.org/parrot/wiki/GCMassacre
bacek_at_work TMS?
cotto purl, tms?
purl i haven't a clue, cotto
dalek rrot: r47185 | jkeenan++ | branches/tt1452_configure_debug (2 files):
Update config step and test file to reflect change in handling of verbose debugging output.
cotto purl, TMS is tri-color mark and sweep (garbage collection algorithm) 03:06
purl OK, cotto.
cotto TMS is also trac.parrot.org/parrot/wiki/GCMassacre
purl, TMS is also trac.parrot.org/parrot/wiki/GCMassacre
purl OK, cotto.
cotto purl, TMS is also transcranial magnetic stimulation
purl OK, cotto.
cotto purl, tms?
purl i haven't a clue, cotto
cotto purl, TMS?
purl cotto: no idea
cotto stupid bot
purl, purl, tms?
purl bugger all, i dunno, cotto
cotto $purl.stupid(0); 03:12
plobsing , TMS? 03:13
03:13 janus joined
bacek_at_work .oO ( May be I can add fact-plugin to aloha ) 03:13
sorear let's add tetra-color mark and sweep 03:22
cotto live, maybe, dead and zombie? 03:24
03:24 LoganLK joined
tcurtis Slightly lighter gray or slightly darker gray, sorear? Or really-black or really-white? 03:30
bacek_at_work We have tetra-color mark in parrot now... 03:32
Bloody "constant" zombiez.
plobsing bacek_at_work: what actually gets marked constant these days? 03:33
(I know that const table entries don't)
bacek_at_work they are not marked 03:34
at all
plobsing I know what constant means to GC. I'm just wondering what is actually using that. 03:35
bacek_at_work ack PObj_constant_FLAG src | wc -l 03:38
51 hit
dalek rrot: r47186 | jkeenan++ | branches/tt1452_configure_debug/config/auto/isreg.pm:
Update config step and test file to reflect change in handling of verbose debugging output.
tracwiki: v60 | cotto++ | ParrotQuotes 03:40
tracwiki: we love this code
tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff
cotto bacek_at_work, 28 in trunk after realclean 03:41
bacek_at_work it's 28 more than I would like to see 03:42
dalek rrot: r47187 | jkeenan++ | branches/tt1452_configure_debug/config/init/hints/darwin.pm:
Adapt to debug method.
03:55
TT #449 closed by plobsing++: [TODO] Migrate non-essential ops to dynops 04:07
TT #449: trac.parrot.org/parrot/ticket/449
rrot: r47188 | plobsing++ | branches/constant_unfolding:
creating branch to work on constant unfolding
04:11
rrot: r47189 | plobsing++ | branches/ops_massacre:
branch has been merged and is no longer needed
rrot: r47190 | plobsing++ | trunk/DEPRECATED.pod:
remove deprecation notice for TT #449
rrot: r47191 | plobsing++ | branches/constant_unfolding/compilers/imcc (2 files):
add constant unfolding stage to ops selection (try_weaken_const_to_temp)
plobsing wooo! constant unfolding works! 04:12
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
also we can ditch the constant folder (which has had issues even recently)
or move it to elsewhere 04:15
bacek_at_work makes sense
plobsing now all that needs doing is modifying opsc to not emit const variants except for specially marked ops/args
cotto Yay! The first modification of opsc that doesn't require a corresponding change in the ops2c perl code! 04:17
what's your plan for that, plobsing? 04:18
plobsing I'm thinking it will be a flag on the op. :gen-const, :hot-const, :hot-potato 04:19
it doesn't provide much granularity, but that's fine
for now, at least
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
other than a little extra code complexity
plobsing grumble, grumle, more work, grumble
cotto actually it might be easier just to annotate the individual args 04:21
do whatever you feel like 04:22
no worries if the first approximation is a little blunt
plobsing hmmmm... we already seem to have 'inconst' op args. I wonder if I can build off of those. 04:24
04:36 contingencyplan joined
cotto fakescience++ 04:40
plobsing 'in' => constant and variable versions; 'invar' => variable only; 'inconst' => constant only?
s/?//
fakescience?
cotto fakescience.tumblr.com 04:41
it provides clear and simple explanations for everyday phenomena 04:42
bacek_at_work plobsing, +1 for invar 04:45
plobsing +1 for already existing
04:47 parthm joined 04:49 TiMBuS joined
dalek TT #1375 closed by jimmy++: [patch]changed class.pmc to use GET_ATTR syntax 04:57
TT #1375: trac.parrot.org/parrot/ticket/1375
rrot: r47192 | plobsing++ | branches/constant_unfolding (5 files):
kill off 30 find_cclass and find_not_cclass const variant ops as a proof of concept.
05:01
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
plobsing just converting the argument specification from in to invar does the trick 05:03
cotto ok
plobsing but thanks for the suggestion
sorear I have a modest proposal.
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.
plobsing cotto: exactly
it already exists
cotto nice
plobsing (prescient ops2c.pl hackers)++ 05:05
sorear: why eliminate strings?
cotto sorear, are you suggesting that we only use string PMCs?
sorear cotto: yes
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.
sorear it's very much like a PMC
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
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
cotto sorear, is this a serious idea yet or are you just toying with it as a thought experiment? 05:09
sorear somewhere in between 05:11
plobsing's last comment is the main thing stopping it from being a serious proposal 05:12
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:13
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:20
sorear plobsing: I had the concern before your comment 05:21
dalek rrot: r47193 | plobsing++ | branches/constant_unfolding/t/compilers/imcc/imcpasm/opt1.t:
skip constant folding tests which no longer work
05:34
05:55 aukjan joined
dalek kudo: 5c09771 | moritz++ | t/spectest.data:
run whatever.t again
05:56
06:12 uniejo joined 06:27 parthm left 06:33 cognominal joined
dalek rrot: r47194 | plobsing++ | branches/constant_unfolding (6 files):
shave off 8 ops by removing const variants of rarely used loadlib, dlfunc, and dlvar ops
06:57
sorear plobsing: the _cclass ops are what powers NQP-rx, fwiw 07:00
plobsing well on the plus side, it got heavy use without breaking 07:01
does NQP-rx use find_cclass of find_not_cclass with constant variants in tight loops? 07:02
and would a decent loop invariant lifter be able to optimize the inserted set instructions?
sorear find_cclass *is* a tight loop 07:04
any loop which contains find_cclass is once removed from being tight 07:05
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:06
we could just as easily enable certain arguments of those ops to efficiently handle constants. 07:07
sorear NQP only uses find_[not_]?cclass $I11, <constant>, <reg>, $I0, <reg> 07:10
s/I0/I10/
I doubt that a single instance of constant unfolding is going to make a huge difference here
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
sorear umm
how does .local work
plobsing it grabs the next available register 07:12
that is also how allocating temps works
IIUC
sorear so if I have 500 unfoldable ops, I have a 500 word frame?
plobsing that assumes only 1 constant unfolded per op, but yes. 07:13
sorear *snrk*
plobsing the idea of unfoldable ops is to make them only the uncommon ones
plus, constant unfolding would be a great idea if only we had a decent optimizer. 07:14
07:15 fperrad joined
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
those can all alleviate or eliminate the consts of the unfolding
s/consts/costs/ 07:16
sorear I presume you are talking about Lorito here 07:17
cotto see khairul 07:18
seen khairul
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]
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
s/eSure/Sure/
07:19 fperrad_ joined
sorear Oh 07:19
cotto phew. I thought I was in the dot com boom again.
sorear I see.
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'
sorear Suppose no op in a function has more than 3 unfolded parameters 07:21
Allocate 3 registers - perhaps I36, I37, I38
cotto plobsing, like oauth? ;)
plobsing or -Ofun
sorear Use them
plobsing sorear: that requires cross-communication between instruction selections increasing coupling in an already over-coupled IMCC
sorear oh. 07:22
plobsing the right answer is to have a register allocator
sorear how much mangling are we expecting IMCC to do?
I feel like bytecode is the wrong level to do loop-invariant code motion
plobsing If IMCC doesn't find an op it will:
sorear it should be on some sort of tree form 07:23
plobsing 1) try and swap certain g[et] for l[et]
sorear but, goto
nevermind
plobsing 2) weaken constants to temps
3) weaken intvals to numvals
4) some const folding that I want to eliminate 07:24
const folding still happens when you would have to do both const => temp and int => num
eg: $N0 = sqrt 1
but it would be easy enough to require sqrt 1.0
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.
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?
moritz remembers
plobsing sorear: it has code to do that, but noone in their right mind runs IMCC at -O2 07:27
sorear wait a second
aren't you the big IMCC *fan* here?
plobsing I think it has *potential*
more like "don't throw the baby out with the dishwater" than "this is awesome" 07:28
I think if we got things straightened out a little, some of IMCC's optimizer passes could be made useful. 07:29
For example -O1 doesn't break too much of parrot fulltest. It does however, take >1 hour (I gave up) to compile Rakudo.
cotto ouch 07:30
sorear what does -O1 and -O2 do?
cotto break parrot a little and a lot
plobsing -O1 enables some "lighter" optimizations like constant folding, -O2 enables the graph-coloring register allocator 07:31
or did until I ripped it out
but stuff on that order
sorear does -O2 do anything now?
plobsing it probably does. there's a lot it can do with the liveness graph. 07:32
dead-code elimination is -O2 methinks
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.
moritz maybe try to run each optimization only once? 07:33
the output will not be ideal, but probably better than now
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:34
ideally, I could make the optimizer a separate program (I'd probably call it pbc_to_pbc for lack of a better name). 07:35
I may have caught whiteknightitis (the inability to come up with entertaining names for projects) 07:36
moritz depessimize :-)
plobsing it's a shame demoronize is taken 07:37
sorear you could call it demoronise 07:38
cotto pbc_demoronizatinator?
sorear birdbrain 07:39
cotto fastinator
plobsing +1 to birdbrain
fastinator? really? are you even trying anymore?
make-parrot-go-faster-program 07:40
cotto birdbrain has its charm
whoever starts hacking on it gets to decide the name
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:41
cotto we have many fires to choose from 07:42
GeJ clock? 07:47
cotto purl? 07:48
purl yes, cotto?
cotto clock?
purl, clock?
purl wish i knew, cotto
cotto purl, purl?
purl cotto: i haven't a clue
cotto the bot's definitely broken
karma bacek
purl bacek has karma of 2700
cotto at least that's working
karma purl
purl purl has karma of 8972
cotto purl--
purl cotto: huh?
plobsing (purl)-- 07:49
cotto purl-- ajfdlksa;jflsk
purl cotto: huh?
cotto asdkfjhskjd purl-- ajfdlksa;jflsk
plobsing karma purl
purl purl has karma of 8970
cotto karma purl
purl purl has karma of 8970
GeJ ok, roughly 1AM. I still have 6h hours to fix my code.
tcurtis (purl)--
karma purl
purl purl has karma of 8969
cotto purl, status
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.
plobsing botsmack
GeJ botsnack? 07:50
purl thanks GeJ :)
07:51 parthm joined
cotto tcurtis, I appreciate your epic posts to parrot-dev. 07:57
tcurtis++ 07:58
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:03
dalek rrot: r47195 | plobsing++ | branches/constant_unfolding/src/ops/core.ops:
[codetest] fix up docs after last ops removal
08:04
bacek ~~ 08:20
cotto <>
08:20 khairul joined
cotto khairul, ping 08:21
dalek rrot: r47196 | khairul++ | branches/gsoc_instrument (3 files):
Added method to get the values for op args. Added PARROT_EXPORT to key_string function annotation in src/key.c
rrot: r47197 | khairul++ | branches/gsoc_instrument/examples/library (2 files):
Rewrote tracer.pir in nqp and removed older pir example.
khairul cotto: pong
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:22
I don't see the reason to keep ->supervisor around if using INTERP/interp would have the same effect. 08:24
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
khairul i remember now, i needed it to get a reference to the supervisor interp in the runcore. 08:29
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...
mostly i run those in examples/pir
08:31 mberends joined
khairul i got real 3m27.883s, user 2m26.525s sys 0m4.760s running tracer.nqp on examples/pir/mandel.pir 08:32
in comparison to real 2m28.807s user 0m36.826s sys 0m3.256s for the trace runcore. 08:33
cotto what about the default runcore? 08:34
khairul that, is no comparison. 0m0.096s real 08:35
cotto might be worthwhile to play with overriding the op table 08:36
08:37 cosimo joined
khairul op tables are shared amongst all the interpreters right? 08:37
cotto not sure 08:39
08:42 parthm left
dalek rdinal: c84be84 | fperrad++ | src/classes/File.pir:
File is now a dynpmc, so load it
08:49
cotto khairul, it looks like there's only one copy of the op lib unless you explicitly make another. 08:56
It looks like the op lib is a global too, so wheee 08:58
if it'd make life less painful for you, you could bring up making the op lib non-static 09:00
at next #ps
I wouldn't expect that it needs to be static but I haven't taken a shot at changing the code yet.
also not sure what implications that'd have for the work plobsing++ is doing on dynfixups 09:05
lots of questions 09:06
probably workable though
g/night
khairul hrm...
dalek rdinal: 8d9d275 | fperrad++ | setup.pir:
refactor additional tests with runtests from distutils (instead of Perl5 prove)
khairul nite
i'll think it through first and discuss with you tmr.
10:03 mikehh joined
dalek rrot: r47198 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Don't initialize freshly allocated List_Item. List.append will do it.
10:17
rrot: r47199 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Skip marking of 'constant' objects
10:24 whiteknight joined
dalek rrot: r47200 | bacek++ | branches/gc_massacre/include/parrot/settings.h:
Eat your own food - use TMS as default GC.
10:34
rrot: r47201 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Implement mark blocking in TMS
rrot: r47202 | bacek++ | branches/gc_massacre/src/gc/list.c:
Decrement list count on List.remove
rrot: r47203 | bacek++ | branches/gc_massacre/src/gc/system.c:
Made Memory_Pools even more optional during trace_memory_block
rrot: r47204 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
More fixes to TMS
rrot: r47205 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Invoke M&S earlier during allocating of new pmc header.
rrot: r47206 | bacek++ | branches/gc_massacre/include/parrot/pobj.h:
Add POBJ_grey_FLAG
rrot: r47207 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Don't remark grey objects.
rrot: r47208 | bacek++ | trunk (2 files):
Disable building of dynops for corevm
10:51
rrot: r47209 | bacek++ | branches/gc_massacre (18 files):
Merge branch 'master' into gc_massacre
kudo: aebd0c5 | (Solomon Foster)++ | src/core/metaops.pm:
Extend hyper to handle nested lists / arrays. Patch courtesy of Prakash
11:14
rdinal: 25498b0 | fperrad++ | src/classes/File.pir:
some opcodes are gone
11:27
rrot: r47210 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Disable debug output.
11:41
11:51 tetragon joined
dalek rrot: r47211 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
More checks of pointer in is_pmc_ptr.
11:58
rrot: r47212 | bacek++ | branches/gc_massacre/src/gc/list.c:
Use classical algorithm to remove item from list.
rrot: r47213 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
Fix PoolAllocator.is_owned.
rrot: r47214 | bacek++ | branches/gc_massacre/src/gc/list.c:
Simplify List.append
rrot: r47215 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Add more assertions into tms_mark_and_sweep
12:05 clinton joined
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]
bacek slacker...
dalek rrot: r47216 | bacek++ | branches/gc_massacre/src/gc (3 files):
Add more debug to catch list brokage
12:31
12:31 JimmyZ joined
whiteknight how do I get the stdout FileHandle in current parrot? 12:39
12:40 lucian joined
bacek whiteknight, step 1 - checkout gc_massacre branch. step 2 - gdb --args ./parrot --gc-debug t/compilers/imcc/syn/labels.t 12:40
After fixing assert failure you'll reach nirvana and filehandle will appear in your hands 12:41
12:41 aloha joined 12:44 khairul joined 12:47 aloha joined
dalek rrot: r47217 | bacek++ | branches/gc_massacre/src/gc (2 files):
Remove unused List.prepend
12:47
12:49 aloha joined, kid51 joined
bacek aloha, kid51 12:54
12:55 bacek joined 13:02 aloha joined 13:03 aloha joined
bacek aloha, TMS? 13:09
aloha bacek: No clue. Sorry.
bacek aloha, TMS is TriColor Mark & Sweep
aloha bacek: Okay.
bacek aloha, TMS?
aloha bacek: TMS is TriColor Mark & Sweep
bacek aloha, TMS is also trac.parrot.org/parrot/wiki/GCMassacre
aloha bacek: Okay.
bacek aloha, TMS?
aloha bacek: TMS is TriColor Mark & Sweep or trac.parrot.org/parrot/wiki/GCMassacre
bacek purl, TMS? 13:10
purl i haven't a clue, bacek
bacek purl, TMS is TriColor Mark & Sweep
purl OK, bacek.
bacek purl, TMS?
purl bacek: bugger all, i dunno
bacek meh
aloha, aloha?
aloha bacek: No clue. Sorry.
bacek aloha, aloha is little purl sister which can memoize things 13:11
aloha bacek: Okay.
bacek aloha, aloha?
aloha bacek: aloha is little purl sister which can memoize things
bacek aloha, no, aloha is <reply>I'm little purl's sister which can memoize things 13:18
aloha, aloha?
aloha bacek: aloha is little purl sister which can memoize things
bacek aloha, aloha? 13:19
aloha bacek: aloha is little purl sister which can memoize things
moritz aloha! 13:20
13:20 aloha joined
bacek stupid bot... 13:20
aloha, aloha?
aloha bacek: aloha is little purl sister which can memoize things
bacek aloha, forget aloha
aloha bacek: I forgot about aloha.
bacek aloha, aloha is <reply>I'm little purl's sister which can memoize things
aloha bacek: Okay.
bacek aloha, aloha? 13:21
aloha bacek: I'm little purl's sister which can memoize things
bacek much better
aloha, moritz?
aloha bacek: Search me, bub.
bacek aloha, moritz is great!
aloha bacek: Okay.
bacek aloha, moritz?
aloha bacek: moritz is great!
bacek :) 13:22
13:22 jsut_ joined
bacek Anyway, main purpose of this silly bot is tab completion :) 13:25
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.
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.
kid51 Hmm. Either the 'make smolder_coretest' is seriously out of date ... or we have just suffered massive errors. 13:30
smolder.plusthree.com/app/projects/...ails/34153
I suspect the former
moritz kid51: I think 'make coretest' has some dependency problems... mikehh talked about it before 13:31
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...
dalek kudo: 7a2ede9 | (Solomon Foster)++ | src/core/metaops.pm:
Simple implementation of hyper on hashes.
kid51 Only one I couldn't handle was: trac.parrot.org/parrot/ticket/1666 13:33
bacek Actually no. I broke it even more. 13:34
kid51 Indeed: smolder.plusthree.com/app/projects/...ails/34154 Regular smolder 13:35
dalek rrot: r47218 | jkeenan++ | branches/tt1452_configure_debug (2 files):
Update config step and test file to reflect change in handling of verbose debugging output.
13:38
kid51 Do we indeed want to "Disable building of dynops for corevm" (r47208 commit message) ?
bacek kid51, yes. opsc depends on NQP/PCT 13:39
kid51 Okay. Is the problem in make corevm or make coretest?
nopaste "kid51" at 192.168.1.3 pasted "Recent change in makefiles/root.in" (23 lines) at nopaste.snit.ch/20768 13:41
bacek kid51, "coretest" 13:46
corevm should not include PCT/NQP/*
coretest depends on dynops
dynops depends on opsc 13:47
opsc implemented in NQP
NQP is not part of corevm
chicken and egg problem...
Anyway, coretest should not include dynops 13:49
13:49 ruoso joined
mikehh bacek, kid51: a lot of tests in coretest did depend on dynops, and now fail 13:53
we seriously now need to consider which tests should be in coretest now 13:54
dalek rrot: r47219 | bacek++ | trunk/t/compilers/imcc/syn/tail.t:
Don't use printerr in test to avoid dependency on opsc for dynops.
rrot: r47220 | bacek++ | trunk/t/op/interp.t:
Use stdout to avoid dependency on dynops.
rrot: r47221 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu/i386/auto.pm:
Update config step and test file to reflect change in handling of verbose debugging output.
bacek mikehh, at least dynpmc should not be in coretest 14:00
mikehh bacek: quite a few dynpmc tests were in coretest 14:01
bacek: in fact I think all were 14:02
bacek indeed
14:03 plobsing joined
mikehh and since plobsing's masscree a lot more stuff has been moved there 14:03
and a who;le bunch of tests are failing make test too 14:07
14:09 PacoLinux joined
dalek rrot: r47222 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu (2 files):
Update config step and test file to reflect change in handling of verbose debugging output.
14:11
rrot: r47223 | jkeenan++ | branches/tt1452_configure_debug/config/auto/cpu/ppc/auto.pm:
Continue to adapt config steps to new approach to verbose/debugging output.
rrot: r47224 | bacek++ | trunk/t/pmc (3 files):
Remove dependencies on dynops to be able to run tests in coretest
rrot: r47225 | jkeenan++ | branches/tt1452_configure_debug/config/auto/memalign.pm:
Update config step and test file to reflect change in handling of verbose debugging output.
rrot: r47226 | bacek++ | trunk/t/pmc/eval.t:
Migrate most of the test to dynopsless variant to avoid dependency on opsc.
14:28
rrot: r47227 | NotFound++ | trunk/t/pmc/resizablepmcarray.t:
tests for RPA splice with negative offset
rrot: r47228 | bacek++ | trunk/lib/Parrot/Harness/DefaultTests.pm:
Remove dynpmcs from coretest. They are not belong to this stage of testing
mikehh bacek: better but still failing a whole bunch of tests 14:32
dalek rrot: r47229 | NotFound++ | trunk/t/pmc/resizableintegerarray.t:
test for RIA shift from empty
14:44
rrot: r47230 | jkeenan++ | branches/tt1452_configure_debug/config/gen (2 files):
Update config step and test file to reflect change in handling of verbose debugging output.
rrot: r47231 | jkeenan++ | branches/tt1452_configure_debug/config/gen/opengl.pm:
Move a 'die' statement closer to where its death condition is determined.
15:01
15:03 patspam joined
kid51 In 'make test', now getting one failure in t/pmc/eval.t and one in t/pmc/threads.t 15:04
smolder.plusthree.com/app/projects/...ails/34155 15:06
dalek kudo: 4f9ca44 | (Solomon Foster)++ | src/core/metaops.pm:
Handle single-arg hash hypers as well.
15:09
15:14 Coke joined 15:19 khairul joined 15:21 jsut joined 15:24 integral joined 15:29 Myhrlin joined 15:53 zostay joined 16:37 athomason joined 16:39 szabgab joined, Infinoid joined, dmagnus_ joined, Tene joined, krunen joined, Maddingue joined, nnunley joined, cotto joined, GeJ joined, treed joined, bacek_at_work joined, dngor joined, slavorg joined, sri joined, tewk joined, Ryan52 joined, ascent joined, knewt joined, ttbot joined, moritz joined, arnsholt joined, silug joined, TonyC joined, nopaste joined, darbelo joined, simcop2387 joined, spinclad joined, Util_ joined, pmichaud joined, cotto_work joined, TimToady joined, preflex joined, particle joined, jnthn joined, sorear joined, Patterner joined, janus joined, contingencyplan joined, cognominal joined, mberends joined, cosimo joined, mikehh joined, whiteknight joined, lucian joined, bacek joined, aloha joined, PacoLinux joined, patspam joined, NotFound joined, ruoso joined, purl joined 16:53 kid51 joined
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:11
cotto I think the chicken/egg problem can be partially solved by checking in the dynpmc generated files. 17:21
the only problem with that is that the dynpmc makefiles are known to be goofy
darbelo dynpmc makefiles should be generated, like we do for the core pmcs. 17:22
In fact, most of that config step could be reused for that purpose. 17:23
cotto they are partially generated
dalek tracwiki: v61 | cotto++ | ParrotQuotes
tracwiki: bacek might have a hidden agenda
tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff
darbelo The .in file (And hence most dep info) is still human-made. 17:24
cotto that's why I say partially 17:25
darbelo The makefile for core pmcs has less humans involved.
cotto it's definitely something that we should be able to generate easily.
bonus points for doing it in nqp
darbelo NQP at Configure time? Urgh. 17:26
dalek rrot: r47232 | jkeenan++ | branches/tt1452_configure_debug (2 files):
Update config step and test file to reflect change in handling of verbose debugging output.
17:29
17:32 joeri joined
NotFound Don't you think that ops that are so needed to test core must be in core? 17:37
17:47 tcurtis joined 17:51 aukjan joined
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
dalek rrot: r47233 | jkeenan++ | branches/tt1452_configure_debug (2 files):
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
cotto I thought it'd be something like that.
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:05
cotto I'm not convinced that a mere subset of pir would be sufficient for what we want Lorito to do. 18:06
18:11 gbacon joined
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
so, not a true subset of existing PIR
cotto Using C-specific features sounds like it'll limit our future jitting possibilities. 18:20
whiteknight cotto: the idea being that anything we can do in C, we can do in ASP 18:21
ASM
calling funcs, dereferencing pointers, etc
so long as the ops stay atomicish, there's no problem
cotto bad typo there 18:22
;)
so you're thinking of a subset of pir with some C-sauce added 18:23
how would it work with nqp or other hlls?
part of the charm of Lorito is that it loosens the limits of which language we can use to implement core functionality 18:24
dalek nxed: r482 | julian.notfound++ | trunk/winxedst1.winxed:
add missing optimize step to NewExpr and use new instead of root_new in new
18:30
rrot: r47234 | jkeenan++ | branches/tt1452_configure_debug/config/inter/libparrot.pm:
Delete commented-out code.
18:36
18:50 clinton joined
dalek kudo: cde6abe | moritz++ | src/core/system.pm:
enable argumentless sleep(); closes RT #57294
19:04
19:09 Themeruta joined 19:14 bluescreen joined
dalek nxed: r483 | julian.notfound++ | trunk/winxedst1.winxed:
fix: predef die has void result
19:25
nxed: r484 | julian.notfound++ | trunk/winxedst0.cpp:
use const REGnone in stage 0 for predef void return type, like in stage 1
19:30
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:40
at that point, we say that set of operations is the list of operations Lorito needs to support 19:41
the only thing that's "PIR" about this is the syntax, and even then I'm taking some liberties for ease
cotto ok 19:45
what's the tool written in?
GeJ Good morning everyone. 19:46
moritz rakudo: say :(3).perl 19:47
sorry, wrong channel
darbelo wants to write ops in LOLCODE. 19:48
whiteknight cotto: pure PIR 19:50
not pretty PIR 19:51
let me jam it up on github for perusal
github.com/Whiteknight/subpir2c 19:53
cotto: op bodies are in oprules.pir, the main driver is subpir.pir
darbelo Line oriented conversion? Ew. 19:55
The PIR is not particularly ugly, though. 19:56
20:02 Psyche^ joined
cotto it's hard to have especially ugly pir 20:03
dalek nxed: r485 | julian.notfound++ | trunk/winxedst1.winxed:
allow new with a string constant as class name, too much special cases but
20:04
darbelo Is that a challenge? 20:05
;) 20:06
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?
darbelo whiteknight: Makes sense for a proptotype, but it's going to get limiting if you want to push it further. 20:08
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
a proper NQP-RX grammar and custom code generator would be ideal
there is a lightning storm happening here now, I may lose power
darbelo Dont worry, tt happens to all electricity wilding superheroes eventually. 20:10
It'll come back in an issue or two. 20:11
sorear we need to figure out allison's problems with NQP-rx too
darbelo
.oO( allison has problems with NQP-rx ? )
20:12
Boy am I out of at least one loop.
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:14
lists.parrot.org/pipermail/parrot-d...04349.html 20:15
scroll down to "hopelessly byzantine"
darbelo The part that says "Which is *not* to say that PIR is the best tool for the job"? 20:16
sorear yes
darbelo Okay. 20:17
jnthn lol...I've had the exact opposite experience writing stuff in NQP rather than PIR. :-/ 20:19
(Get stuff done much quicker, less hassle, easier to maintain, easier for others to hack on...) 20:20
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:26
multis will be nice 20:27
jnthn Yeah, I think some recent things went in that aim at getting some multi support for nqp.
dalek rrot: r47235 | NotFound++ | trunk/t/pmc/resizablebooleanarray.t:
tests for RBA set negative size and get with negative index out of range
20:30
20:31 theory joined 20:49 eternaleye joined 21:05 confound joined 21:48 lucian_ joined
bacek aloha, humans 22:21
darbelo aloha, botmaker 22:22
bacek++ # Tab completion bot. 22:23
Coke you were too lazy to type "aloha"? 22:27
Coke is confused.
bacek Coke, yes of course!
aloha, Coke
22:54 Chandon joined
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.
darbelo tcurtis: programatically? I don't think so.
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;
But I'0m not sure that's preserved into the PBC
cotto I don't know if it'd be completely reliable. 23:03
darbelo ... or what cotto said...
I need to stop typing into one window while looking at another.
There is also the chance that the file is a library, but can be run standalone with a 'test' main. 23:06
Java programmers are fond of that trick, and PIR would allow them to keep using it here. 23:07
NotFound darbelo: it does, actually. 23:08
cotto we could add explicit metadata if the information were important enough
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.
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.
NotFound thinks that lately people looks more interested in breaking things than in make things work. 23:13
darbelo hasn't broken anything yet.
tcurtis: The only way to make sure "This won't be used as a library" is to ask the programmer. 23:14
dalek rrot: r47236 | bacek++ | branches/gc_massacre/src/gc (2 files):
Move ListItem.owner under ifndef NDEBUG condition
23:15
rrot: r47237 | bacek++ | branches/gc_massacre/src/gc (2 files):
Add List.check for validating list
rrot: r47238 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Split objects and black_objects during mark. Comment out free_pmc_header. It's dangerous
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:17
tcurtis Good point. 23:19
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:22
cotto a fakecutable definitely won't be used as a library 23:23
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.
darbelo tcurtis: Just make the optimization is documented as "don't do that if you want a lib" ;) 23:25
NotFound Why not?
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.
"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
whiteknight tcurtis: might be worthwhile to add some flags to functions for the optimizer to read 23:30
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"
Set on by default.
darbelo .sub 'main' :go-wild-on-me-cowboy 23:33
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
whiteknight i said less sexual. And maybe you shouldn't have a dog 23:35
darbelo It's actully (paraphrased) shakespeare ;) 23:37
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"
It's art, dude. 23:40
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:41
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
or a whole file 23:45
cotto I don't know if pbc would have a nice existing mechanism to do that
darbelo I though he was transforming PAST trees? 23:46
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:47
cotto My brain got confused about which layers we're talking about. 23:48
dalek rrot: r47239 | bacek++ | branches/gc_massacre/src/gc (2 files):
Add List.is_owned for precise check in GC.is_pmc_ptr
23:49
rrot: r47240 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Increment marks_run after mark.
rrot: r47241 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Add commented out precise check in GC.is_pmc_ptr
rrot: r47242 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Don't mark constant PObj
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. 23:50