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.
00:07 contingencyplan joined 00:10 mikehh_ joined
dalek rrot: r47118 | jonathan++ | trunk/src/ops (2 files):
[core] Another step towards better annotation output; this does the same for method calls as the previous patch did for other invocations.
00:13
plobsing how do backtraces handle TCO? 00:21
00:23 jnthn joined
jnthn plobsing: TCO? 00:23
purl i guess TCO is total cost of ownership
plobsing TCO is also tail call optimization
purl okay, plobsing.
00:23 whiteknight joined
jnthn plobsing: There is no frame. ;-) 00:24
00:24 gbacon joined
jnthn plobsing: The context is done, so we've no way to know we tailcalled when we get to produce the backtrace. 00:24
*gone
plobsing I guess there is no good way to handle that one. Might be a tad bit confusing for debugging though. 00:25
jnthn plobsing: Given how many problems we have producing decent backtraces today, if we get to the point where that's our biggest problem, I'll be happy. :-)
Last few patches have made things a *lot* better though. 00:26
One more nasty issue and then I can probably consider the data good enough to enable the Rakudo backtrace printer.
Hmm...does Parrot_cx_find_handler_local do any unwinding or does it just go looking? 00:28
oh whee, it does all sorts. :-) 00:29
dalek rrot: r47119 | jonathan++ | trunk/src (2 files):
[core] A little cleanup now we have GC-able contexts.
jnthn <- rusty Parrot guts skillz 00:31
davidfetter oh hai 00:34
GeJ plobsing: ping
Good morning everyone. 00:35
plobsing GeJ: pong
GeJ plobsing: I saw that you recently touched t/op/arithmetics_pmc.t to accomodate with the merge of ops_massacre. 00:36
You decreased the test count from 44 to 40.
plobsing yes. I moved the pow test to t/dynoplibs 00:37
GeJ However Its looks like I'm running 42 tests.
plobsing I didn't delete tests if that is your concern
weird
GeJ no gmp here. 00:38
plobsing oic. I need to decrement the skip count for non-GMP
GeJ maybe that changes the tests count?
plobsing fixed in r47120. 00:40
or should be. can you test it?
GeJ thanks.
yup, give me a couple of minutes. 00:41
plobsing: make test PASS. Thank you. 00:45
bbiab 00:46
&
dalek rrot: r47120 | plobsing++ | trunk/t (2 files):
adjust appropriate skips for non-GMP users
00:49 hercynium joined, joeri joined
jnthn GAH! 00:52
Pro debugging tip: never skip reading a line of code just because you think it's doing something too obvious go get wrong. 00:53
*to
dalek rrot: r47121 | jonathan++ | trunk/src/pmc/exception.pmc:
[core] Rather than just getting the thrower context, we should actually then use it to try and obtain a backtrace, not just toss it in favor of (probably the handler's) context.
01:02
rrot: r47122 | jonathan++ | trunk/src/exceptions.c:
[core] Exceptions thrown from ops also need to stash the thrower inside the Exception object so we can produce the backtrace.
rrot: r47123 | plobsing++ | trunk (2 files):
make opsc op_func_table output slightly prettier
jnthn OK, I think I've patched enough to actually have useful backtraces. 01:03
This very possibly makes the PIR backtraces a bit more informative too.
plobsing 2 options for fixing dynops in PBC: 01:11
1) scan code at compile time and add a fixup for every dynop instance 01:12
2) scan code at runtime and modify dynop instances
note that scanning code may be expensive as you have to ask each opcode what size it is 01:13
but many fixups will be bloaty
advice welcome 01:15
jnthn plobsing: What's the Actual Problem that you're looking to fix? 01:16
The fact that different PBCs may have assigned different numbers to dynops? 01:17
plobsing yes. and a loading parrot has no way of knowing this.
jnthn Does it know what dynop libs the PBC uses? 01:18
plobsing in an indirect way, yes
the interpreter state gets frozen into the pbc and merged with the current interpreter on load
I intend to make the dynop dependancies explicit
jnthn How about - and I'm *rusty* on Parrot guts - something like: 01:19
A PBC lists the dynoplibs it uses and the numeric range it gave to each
plobsing yes. this is what I intend to do about the explicit mapping.
jnthn OK
So today when you call code in another bytecode segment...
...you have to "switch" to that seg.
Could you associate with each bytecode segment a number -> op function pointer lookup table? 01:20
plobsing umm... not really. loading *appends* to the current segment. it is all kinds of ugly and wrong.
jnthn Oh.
Er, yeah.
whiteknight what the hell does interp->class_hash contain?
jnthn That sounds...awful.
plobsing in fact, parrot *can't* handle multiple segments.
GC doesn't mark constants for anything but the current segment 01:21
jnthn Heh. Even though all the stuff is there to switch to another segment when you call a sub?
Oh.
Do I want to ask why?
plobsing because multiple segments is the *right* way to do it.
just not the way we do it now
jnthn Yeah, it's what I'd have expected too.
Then you don't have to modify a load of stuff 01:22
Each seg can have its own mapping to the actual dynop functions.
Heck, a JITter can then even use the table to write the calls faster. Or a pre-deref core. Or whatever.
plobsing that would be nice. very nice. but a lot of work. 01:23
jnthn Fixing things to enable multiple segs would be? 01:24
Or the other fancy stuff I mentioned?
plobsing fixing things to enable multiple segs and then making enough things use multiple segments to make breaking it non-trivial 01:25
At some time in the past, I suspect multiple segments worked
jnthn I'm sure they did.
I'm not sure why things ended up going in the appending direction.
plobsing but then someone broke it and the tests didn't whine because everything was using one segment
jnthn I suspect it got broken long, long ago. 01:26
plobsing pushes segments issue to tasklist 01:27
jnthn whiteknight: clash_hash maps names to type IDs 01:29
whiteknight: $P0 = new 'ResizablePMCArray' # probably uses class_hash to map the name to the PMC ID 01:30
whiteknight: I have no idea wtf it's a namespace and not a hash.
whiteknight jnthn: yeah, that's the question I'm running into right now. Why the hell is it a namespace? 01:31
but, I think I'm understnading better how it is used now
jnthn whiteknight: Well, does making hash break anything?
er, making *it* a hash... :-)
Maybe the person who wrote it was making hash. ;)
whiteknight jnthn: I'm sure it does. It's called often with the get_pointer_keyed VTABLE, which I don't know if Hash implements in the same way
whatever, I'll consider changing it later 01:32
jnthn ugh
I thought the whole thing was meant to go away anyway.
plobsing can you make it a Hash of Integers? That would reduce memory usage *and* help GC.
sorear plobsing: The first time I read our handling of dynops, here's how I understood it working; it might be sufficient:
1. Dynops aren't real ops, but live in separate tables, one per dynop lib 01:33
2. Dynop libs have dynamically assigned numbers; each PBC has a fixup table for the constant pool
jnthn btw, with today's Parrot fixes, I can now get Rakudo start to spit out stuff like in gist.github.com/418686
sorear 3. When a dynop is assembled, it generates the _wrapper coreop, passing a constant table index (which gets fixed up) for the lib, a number for the op itself, and the op's args
jnthn Other HLL devs may be interested to do similar. :-) 01:34
plobsing sorear: so you're for using fixups in stead of scan on read?
jnthn plobsing: Anything that involves changing the bytecode in memory before running it is *very* bad. 01:35
That's the main thing to avoid.
plobsing jnthn: we already do that with fixups
jnthn ...
Wow.
sorear fixups need to exist, but they should be localized to a small area 01:36
plobsing also Parrot *mostly* works without multiple segments. I consider it to be a lower priority
sorear think about the PIC and GOT
that's the model we want to follow
(actually just the GOT; PIC isn't needed)
jnthn Guess all the "we can mmap bytecode files" stuff is kinda not happening then.
sorear jnthn: if all the fixups are on a single 4k page, no harm
plobsing doesn't the G in GOT stand for *global*?
sorear plobsing: yes 01:37
jnthn sorear: Troo.
plobsing so how does that keep the fixups local?
sorear plobsing: each module has its own GOT
it would be more correct to call it Intermodule Offset Table
they're "global" in the sense that they refer to external things
the offsets are what's global, not the table 01:38
plobsing jnthn: how does modifying bytecode after loading preclude mmapping?
jnthn plobsing: mmap lets one copy of a file be held in memory and shared between all running instances.
sorear plobsing: the whole point of using mmap is that it's lazy. If you mmap a 5MB bytecode file, the I/O doesn't occur until subs are called
jnthn Also that.
But the other thing is, imagine a CGI situation where people are running 20 instances of Perl 6 simultaneously. 01:39
sorear but if we're making 1 fixup on each of 1250 4kb pages, we force the whole thing to be loaded
plobsing I see. So it's that we want read-only bytecode.
jnthn Our bytecode file is, say, 6 megs.
sorear plobsing: this is also why we use native-endian bytecode
jnthn Having one copy of that in RAM rather than having to make 120 MB worth of copies of it is kinda preferable. :-)
sorear in a perfect world, the kernel would have a callback for "I just paged in some data at XYZ address; please byteswap or otherwise fix up the in-memory version" 01:40
but neither POSIX nor Linux has that
plobsing mmapping bytecode would be nice, but there are more pressing issues.
if you can figure out how to eliminate the fixup table, and get multiple segments working, it would likely be smooth sailing from there 01:41
sorear Is our fixup table a table of fixups or a table that is fixed up? 01:42
plobsing those are all things I'd like to do, but I only have so much time. Also single-instance parrot performance is still shitty, so I'll fix that before fixing multiple-instance performance 01:43
nopaste "GeJ" at 192.168.1.3 pasted "[PATCH] Partially fix `make codetest`" (71 lines) at nopaste.snit.ch/20732
plobsing I'll try and keep the fail in one place and use fixups then. 01:45
so to answer my initial RFC, option (2)
sorear: fixup table is table of bytecode fixups 01:46
mostly label and sub fixups ATM
I mean option (1). /me can't count apparently. 01:47
sorear plobsing: ah
the ELF global offset table is a data object at a known (PC relative) address which contains pointers to global functions and variables used in the module 01:48
all external references from the module indirect through the GOT 01:49
this means that, if a module imports 1000 functions, only a single 4kb page of pointers needs to be touched during dynamic linking
dalek kudo: b066578 | jonathan++ | (3 files):
First cut of a backtrace printer. With recent Parrot improvements, it actually

come, but commit early, commit often and all that. :-)
01:53
kudo: 339d0b9 | jonathan++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get latest Parrot with various backtrace production
01:57 tcurtis joined
sorear also, \\o/ JONATHAN RETURNS 02:00
02:05 Andy joined
dalek rrot: r47124 | plobsing++ | trunk (4 files):
partial codetest fixes submitted by GeJ++

  $ prove t/distro/file_metadata.t 2>&1 1>/dev/null | perl -nle '/#\\s*(svn ps.*)$/ and print($1) and system($1)'
02:08
kudo: 8b3bb0b | jonathan++ | src/Perl6/BacktracePrinter.pm:
Include fully qualified names of routines in the backtrace, plus better handling
02:22
tracwiki: v2 | plobsing++ | PlobsingTaskList 02:27
tracwiki: trac.parrot.org/parrot/wiki/Plobsin...ction=diff
02:30 eternaleye joined
dalek rrot: r47125 | plobsing++ | trunk (6 files):
eliminate unused fixup type 'label'
02:41
03:01 janus joined
dalek rrot: r47126 | plobsing++ | trunk/t/native_pbc (4 files):
mk_native_pbc
03:15
plobsing I broke PBC_COMPAT twice in one week. Let's see if I can make it a hattrick ;-) 03:19
dalek kudo: 6e39fe1 | jonathan++ | src/Perl6/Compiler.pir:
Little tweak so things in the core setting get shown in the backtrace with a
03:21
kudo: 34542f7 | jonathan++ | src/Perl6/Actions.pm:
Emit file annotation so backtraces have file names.
GeJ plobsing: even at r47126, I seem to have problems with packfile tests. 03:52
"PackFile_unpack: This Parrot cannot read bytecode files with version 6.19." 03:55
plobsing yes. someone seems to have added *other* PBCs that don't get updated when I run mk_native_pbc. 03:56
(whoever did that)--
03:56 patspam joined
plobsing I am in the process of updating them 03:56
sorear wonders how hard it would be to add a "write little endian 32-bit PBC" function to Parrot
GeJ Great. Sorry for the repeated annoyances. 03:57
sorear we already have code to massage PBC integers...we run it when loading non-native PBC
plobsing sorear: probably very. we have *many* places that simply do '*cursor++ = x;' for writing PBC
plobsing is more interested in if we could make opcode_t smaller than native pointer size 03:58
then I could make 16-bit PBC for epic compression levels
GeJ: pointing out failures I introduced is *usefull*. no need to appologize. 04:00
04:05 Andy joined
dalek rrot: r47127 | plobsing++ | trunk/t/native_pbc (3 files):
mk_packfile_pbc
04:21
GeJ I don't doubt that there is some use in my pointing at errors and or mistakes. However I can't stop thinking that it may make me look like a whining bitch to all of you guys who make the real work (which is definitely not my intent I can assure you). 04:24
cotto GeJ, doing nothing but complaining about valid problems with Parrot still counts as making a valuable contribution. 04:26
GeJ Hah! my point exactly. I'm not so much "complaining" about anything. I'm more in the line of "Hey guys, when I run make codetest, I get this, this and this. Would be nice if someone had a few minutes to fix it." 04:30
Hence my apologies if I sound like always complaining. :)
cotto I consider that to be complaining, but I think I have a less negative connotation attached to the word than you do. 04:31
If it helps, mentally substitute "report
" for "complain" and you won't lose any information.
GeJ Well, my English sucks. I may have translated it to my native language in which "complain" holds a negative connotation. You're lucky I don't apologize for that every couple of lines I type something here. 04:33
cotto Heh. I'll make sure to say "report" more often then.
GeJ Nah, "complain" is fine. :) 04:34
cotto ooc, what's your native language? French?
GeJ yes.
cotto good to know 04:35
I wouldn't have guessed without having Wikipedia to look up New Caledonia's official language
sorear GeJ: complain has a strong negative connotation in Englsih too
GeJ Speaking about foreign languages and translations, Christian Aperghis-Tramoni has written his second series of articles about Parrot. They have been published in France in a F/OSS-oriented magazine. Their policy is to publish the articles online 6 months after the paper version. 04:55
The first series of articles were about PASM. And the second one are about PIR.
The first article of the second series has been put online. 04:56
www.unixgarden.com/index.php/progra...ere-partie (in French)
Not quite sure about licence and rights restrictions, but since they're pretty well witten and cover a lot of topics, they could be a nice addition to the docs. 04:58
I'll try to get some info about this. 05:03
sorear grumbles at the lack of good Anglophone technical writers 05:04
cotto It's good that they have url at the bottom, but I'm not sure why they wouldn't want to make them into actual links. 05:12
Has the author been on #parrot? 05:13
GeJ cotto: my guess, quick copy-and-paste from the paper version.
cotto probably the case
plobsing wow finite 32 registers of each set? how old is that article? 05:14
cotto if they wait 6 months to publish articles online, the interwebs are most like ancillary to the print version
Maybe we'll get another hacker or some bug reports out of the deal. 05:18
GeJ plobsing: yep, that seemed weird to me when I read it. I had the ide that this limitation had been guillotined a long time ago. 05:19
plobsing it also claims our register allocator works
GeJ FYI, in src/exceptions.c on line 213, there are some trailing spaces that if removed make `make fulltest` passes all tests. 05:21
cotto fix't 05:23
sorear ...what 05:25
traling spaces in C code cause bugs?
cotto no. It's just a coding standards test 05:26
GeJ not bugs, but failures in `make codetest`
dalek rrot: r47128 | cotto++ | trunk/src/exceptions.c:
[codingstd] trailing space fix, gej++ for noticing
05:27
05:39 JimmyZ joined
cotto hola, JimmyZ 05:42
JimmyZ Hi
purl privet, JimmyZ.
tcurtis Is there a way in Perl 6(preferably also in NQP) regexes to be able to add the ability to do something like <foo(bar, baz)>, where foo is a named regex that takes parameters? Not necessarily with that syntax, but with some simple convenient syntax? 05:46
plobsing I'm looking into associating dynops with bytecode segments in stead of interpreters (like jnthn++ and sorear++ advised earlier). 05:47
It would be a clean design but would require deciding between 2 tables of ops (1 for core ops, 1 for currently active dynops)
I'm sure it might cause some controversy
tcurtis I retract my question. Looking at dev.perl.org/perl6/doc/design/apo/A05.html I see that <foo(bar, baz)> is indeed valid. Is that implemented in NQP-rx? 05:50
sorear yes 05:52
we use it extensively
token scope_declarator:sym<our> { <sym> <scoped('our')> } 05:53
eg
from Rakudo
tcurtis Wonderful! 05:56
sorear Are you doing this for tree gramamrs? 06:02
tcurtis Yes. 06:03
sorear Excellent.
tcurtis This is a very simple single optimization(independent optimizations should probably be roles, I'd rather a tree grammar "does FoldArithmetic::Optimization does TailCallElimination::Optimization does BlockLocalExceptionElimination::Optimization" than "is ... is ... is ...") gist.github.com/418828 06:25
thoughts, anyone? 06:29
sorear it looks pretty much exactly like I imagined 06:32
note that NQP doesn't have roles
what you're doing is a rewrite system, not really a parser, though 06:33
"make" is as such slightly wrong
you'd still need a set of classes to build a rewrite engine 06:34
maybe you would want a new regex declarator rewrite{}
rewrite names are used only for documentation; a rewrite engine take a rewrite grammar and calls rules in the right places 06:35
Perl6 'tr' is an example of a rewrite engine for strings
(it's incomparably more powerful than perl5 tr) 06:36
try this: pastie.org/983986 06:39
the Grammar/Actions split arguably has no place in this context; it's optional in Perl6 06:40
tcurtis That is much nicer. Although, I think a Grammar/Actions split might be sensible for larger groups of more complicated optimizations. 06:43
sorear or better yet
pastie.org/983989 06:45
proto regex means to take fold:foo, fold:bar, fold:quux in the current inheritence hierarchy and merge them by conjunction into one super-regex named fold
now, the rewrite engine you're going to use for constant folding is going to look like this 06:46
sub rewrite-past-bottom-up($past, $grammar, $rule) { 06:47
for ($past.children) { $_ = rewrite-past-bottom-up($_, $grammar, $rule); }
while ($past ~~ /<$grammar::$rule>/) { $past = $/.ast } 06:48
$past
}
there will be different rewrite engines for different occassions; top-down ones, ones that work on POST, etc
plobsing tcurtis: you have to be carefull about constant folding PMCs. PMCs are free to do whatever they want when you ask them to add. This is one of the things that makes parrot great (or horrible, flip sides of the same coin really). 06:49
bacek Hello humans 06:50
purl hey, what about me?
bacek purl, good girl :)
purl thanks bacek :)
bacek plobsing, (about your mail) what about store dynops with each segment, have global core ops and create full table of ops per segment during unpack? 06:51
plobsing so option (3)? 06:52
bacek plobsing, e.g. option "5" - copy in Parrot_switch_cs + copy in PackFile_unpack
tcurtis plobsing: noted.
plobsing tcurtis: you might want to maintain a "well behaved" list of PMCs and use available type information (if available) to make inferences on what you actually can fold 06:54
cotto plobsing, could hll mapping mess that up? 06:55
plobsing I would assume that HLLs would be the people specifying what optimizations are legal and/or providing the list of well behaved PMCs 06:56
sorear replies to plobsing
plobsing bacek: the problem with that option is that every PBC bytecode segment gets its own rather large ops table. core ops alone is almost 1K entries. 06:57
cotto There won't be that many different ops tables. That strikes me as something we could be smart about to avoid excessive memory bloat. 06:59
(different wrt contents) 07:00
bacek plobsing, how many bytecode segments do we usually have? What if pbc_merge will properly merge them? 07:01
cotto That's also an important question.
sorear plobsing: reply is now sent.
bacek: 1 07:02
but that's due to change
(right now, pbc load *appends to the current segment*)
plobsing sorear++. bacek, cotto: while I do enjoy the immediate discussion IRC allows, please at least put a summary on the list.
cotto sorear, nice suggestions 07:03
plobsing (trying to keep discussion entirely in one place)
re pbc_merge, appending segments: those actually perform shallow packfile merging (ie: only at the directory level). bytecode segments remain distinct. 07:06
sorear: I don't understand your 3a suggestion. please elaborate 07:14
sorear instead of having 1000 core ops + N*M dynops 07:15
have 0 core ops
IMCC will always act as if the core ops were implicitly loadlib's 07:16
'd
so the user notices no difference
but because all ops are in the dynop table, we can trim them
plobsing I thought you might be getting at that, but given the recent issues with removing core ops, I thought it impossible for someone to suggest that
sorear say the user uses 57 distinct core ops. that's a 228 byte "core op" section
plobsing sorear: that assumes you can load ops with a granularity of a single op 07:17
sorear plobsing: the core ops are only removed if the packfile doesn't use them
plobsing: why couldn't we? PIRC knows what ops are used, it doesn't have to generate dispatch table entries for /all/ of them 07:18
tcurtis Even if you load all of the ops in an oplib, you wouldn't need to keep all of them in every op table. 07:19
plobsing OK, I think I have a grasp on what you're getting at. Now I can form a response on the list with a little more than "I have no idea what you just said".
tcurtis I have an idea which would probably be equivalent or very similar to sorear's 4b. But if so, no harm in describing it more explicitly, eh? And if not, perhaps it's at least worth considering. 07:25
Have a global ops table that holds both core and dynops. Have a separate dynops table for each segment that maps from dynop numbers used in the segment to the index into the global ops table for each segment.
When you execute an op above HIGHEST_CORE_OP_NUMBER, get the dynop table for the current bytecode segment, execute the op found at $global_table[$current_dynop_table[$dynop_number - HIGHEST_CORE_OP_NUMBER - 1]]
plobsing IIUC, that's a pretty close variant of what I suggested in (4) with the exception that you lose thread-locality 07:27
cotto How much of this applies to dynpmcs?
plobsing sorear: what's the difference between the redispatch op of (4a) and the stub ops of (4b)?
sorear there is only 1 or a small number of redispatch ops 07:28
cotto: None. dynpmcs are referenced by name.
plobsing no they aren't
sorear D:
plobsing actually, this has a little to do with dynpmcs, but the problems with their numbering ends after the bytecode is loaded. 07:29
as opposed to dynops, whose mapping remains important throughout runtime
so the redispatch looks like "dynop_redispatch <dynop_num> <dynop_args>", whereas the stub looks like "<magic_stub> <dynop_args>"? 07:31
sorear yes
dynop 1395, <args> vs dynop_1395 <args> 07:32
the former is actually how I misunderstood the dynop code the first time I read it
plobsing anything that requires platform-specific code is likely to fall into disrepair for anything except x86(_64)? linux very quickly 07:35
cotto I got the impression that it'd only be a tiny snippet of assembly. 07:37
sorear it couldn't be the only option 07:39
plobsing case and point: do we actually ever use src/atomic ?
that has platform-specific stuff
sorear (for a start, many of the machines bubaflub is trying to port Parrot to have separated I/D spaces and *cannot* support this)
plobsing: it will be impossible to have sanely working threads without it, so if the GSoC thread guy succeeds, we will 07:40
pthreads, RTEMS threads, and NT threads all offer CPU-independant atomic op APIs 07:41
cotto sorear, did you mean that 4b would be possible with straight C but could be sped up with asm?
plobsing sorear: what modern architectures are pure Harvard?
sorear if we aren't using those, we should
dalek rrot: r47129 | bacek++ | branches/gc_massacre:
Yet another massacre. See wiki GCMassacre for details
sorear plobsing: AIUI, many microcontrollers
cotto: yes 07:42
cotto ok. that's sane
sorear (my favorite is 3a)
plobsing sorear: I think I'm missing something about (3a). see my response on list. 07:44
07:47 fperrad joined
plobsing sorear: I've done some work with microchip and atmel uCs and they provide ways (albeit convoluted) of mixing data with code 07:47
07:47 eternaleye joined
sorear it wouldn't actually be asm written; it would be a small chunk of C that does t = malloc(11); /* pretend I got that from a W&X pool somewhere */ memcpy(t, "\\xA1\\x00\\x00\\x00\\x00\\xFF\\xA0", 11); *(int*)(t+1) = (int)&current_dynop_table; *(int*)(t+7) = (int)(opnum * 4); 07:49
plobsing: Did you send it to me only in error, or is it truly secret and I should reply in kind? 07:53
plobsing lolno. /me fails at mailing lists often
cotto I was wondering about that same question. 07:55
07:55 fperrad_ joined
plobsing it is now forwarded appropriately 07:55
cotto (how does parrot know which op table to dispatch to)
plobsing whichever one is current. each code segment gets one. you can only be executing one code segment in one thread of execution at any one time. 07:56
(see Parrot_switch_to_cs, which is where we'd put the code to support switching between tables) 07:57
sorear plobsing: replied 08:01
plobsing: I was thinking of PIC, so I guess I was wrong. This is without hardware modification? 08:02
plobsing: Anyways, runtime code generation is not portable between CPUs, not portable between OSes (if PROT_EXEC is fully supported), and flat out impossible under maximum-security SELinux 08:03
we'd be fools to not support doing without 08:04
tcurtis Good night, folks. I'll work some more on example code(probably quite similar to your idea, sorear) of possible tree grammar syntax tomorrow and probably post on the list about it. By the way, sorear, you could reduce the memory usage by...nevermind...you already mentioned an essentially equivalent version(mine would have used a sentinel value for the end, but length prefix is slightly better, now that I think about it). 08:06
plobsing one thing about (4a) I dislike: it introduces a variable length op, which are hard to work with 08:07
cotto istr that we already have some 08:08
plobsing and I wish we'd eliminate them
cotto +1, and I'm certainly not saying more are justifiable if there's a better way 08:09
dalek rrot: r47130 | moritz++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
[PCT] print backtraces to STDERR by default, not STDOUT
08:14
moritz oh fun 08:16
plobsing moritz: what?
moritz that commit makes rakudo segfault on producing an error message
plobsing moritz: you can get at stderr without using dynops
getinterp => interp.stdhandle => print
moritz plobsing: will try that, thanks 08:17
plobsing or you could just use "die"
ttbot Parrot trunk/ r47130 MSWin32-x86-multi-thread make error tt.taptinder.org/file/cmdout/332232.txt ( tt.taptinder.org//buildstatus/pr-Pa.../rp-trunk/ )
sorear ...why does PCT print backtraces?
that belongs in src/exception.c 08:18
plobsing sorear: it is so you can overload backtraces. so that java on parrot can be just as fun to debug 08:20
dalek rrot: r47131 | bacek++ | branches/gc_massacre (3 files):
Start cutting PMC_Attribute_Pool as Pool_Allocator.
08:31
rrot: r47132 | bacek++ | branches/gc_massacre/src/gc (2 files):
Cargo-cult PMC_Attributes_Pool as Pool_Allocator
rrot: r47133 | moritz++ | trunk/compilers/pct/src/PCT/HLLCompiler.pir:
[pct] print backtraces to STDERR without using dynops. plobsing++
rrot: r47134 | bacek++ | branches/gc_massacre/src/gc (2 files):
Add .is_owned method to Pool_Allocator
rrot: r47135 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
Don't allocate objects smaller than sizeof(void*). Always allocate full 4kb page
lscript: 83982a0 | fperrad++ | setup.pir:
refactor with runtests()
08:42
rrot: r47136 | fperrad++ | trunk/runtime/parrot/library/distutils.pir:
[distutils] add a helper runtests()
08:48
a: 6f78f52 | fperrad++ | setup.pir:
refactor with runtests (from distutils)
08:50
08:57 sorear joined 08:59 purl joined
dalek kudo: dd8b9f0 | moritz++ | docs/ChangeLog:
update ChangeLog
09:07
kudo: 5aba135 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION yet again to get backtraces printed to STDERR
kudo: 6eec67c | moritz++ | src/core/Seq.pm:
Seq hash coercion
p-rx: d1d1d31 | moritz++ | src/stage0/ (4 files):
update stage0
09:36
rrot: r47137 | moritz++ | trunk/ext/nqp-rx/src/stage0 (4 files):
[nqp-rx] update bootstrap files to get $/.chars fix for failed matches
09:38
rrot: r47138 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
Fix rounding up Pool_Allocator_Arena
rrot: r47139 | bacek++ | branches/gc_massacre/src/gc/gc_private.h:
Uncomment GC_Subsystem.gc_private. We'll need it.
rrot: r47140 | bacek++ | branches/gc_massacre (3 files):
Add stub for double-linked lists
rrot: r47141 | bacek++ | branches/gc_massacre/src/gc (2 files):
Implement linked-list. Not tested
09:55
rrot: r47142 | bacek++ | branches/gc_massacre/src/gc/gc_ms.c:
Add mark_{pmc,string,buffer} stubs into GCMS. Allocate @objects.
10:17 aukjan joined 10:36 whiteknight joined 10:38 TiMBuS joined
whiteknight good morning, #parrot 10:47
10:54 JimmyZ joined
dalek p-rx: 45a6612 | masak++ | src/Regex/P6Regex/Actions.pm:
aligned error message with STD's
11:13
rrot: r47143 | bacek++ | branches/gc_massacre/src/gc (2 files):
Made Parrot_gc_create_pool_allocator public
11:17
bacek aloha whiteknight 11:23
whiteknight aloha, bacek
bacek whiteknight, I pleased that my GC pseudo-code is useful :) 11:24
dalek kudo: 5a8bd03 | masak++ | src/core/IO.pm:
[IO.pm] better params name in &note
11:33
rrot: r47144 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
Implement destruction of Pool_Allocator.
11:34
rrot: r47145 | bacek++ | branches/gc_massacre/src/gc (2 files):
Move guts of mark_FOO_fun into gc_ms.c from api.c
rrot: r47146 | bacek++ | branches/gc_massacre/src/gc/system.c:
Use mark_PMC_alive during tracing of system stack.
rrot: r47147 | bacek++ | branches/gc_massacre/src/gc (3 files):
Remove GC_Subsytem.mark_string_alive. Use mark_pobj_alive instead
kudo: 3d540b8 | moritz++ | build/PARROT_REVISION:
bump PARROT_REVISION to get fix for RT #74694
11:39
whiteknight thinks he's finally figured out how to get a proxy from a namespace 11:43
...maybe not 11:56
12:01 gbacon joined
dalek kudo: ff31b59 | jonathan++ | src/Perl6/Module/Loader.pm:
Set $?FILES in module loader, so we end up with the correct filename annotation
12:08
kudo: 478ba48 | jonathan++ | src/pmc/p6opaque.pmc:
Correct busted format string to fix bad error message noticed by moritz++.
12:10 JimmyZ joined, smash joined
smash hello everyone 12:10
nopaste "mikehh" at 192.168.1.3 pasted "remaining errors in make corevm/make coeretest at r47147" (71 lines) at nopaste.snit.ch/20739 12:20
mikehh the tests pass in make test
make corevm/make coretest FAILs - see: nopaste.snit.ch/20739 12:23
all other tests PASS (pre/post-config, smoke (#34129), fulltest) at r47147 - Ubuntu 10.04 amd64 (g++)
t/op/annotate-old.t - TODO passed: 1 in testf 12:29
dalek kudo: 1727ca5 | moritz++ | (2 files):
implement Cool.succ and .pred
12:37
mikehh gotta reboot - bbiab 12:38
12:44 mikehh joined 13:13 snarkyboojum joined
dalek rrot: r47148 | jonathan++ | trunk/src/ops (2 files):
[core] One more tweak for better annotation reporting, from feedback by masak++; this gets us able to identify the correct line number that a failed sub call happened on.
13:14
13:31 JimmyZ joined 13:41 joeri joined 13:44 elmex joined
mikehh make corevm/make coretest FAILs - see: nopaste.snit.ch/20739 (same failures) 13:50
all other tests PASS (pre/post-config, smoke (#34132), fulltest) at r47147 - Ubuntu 10.04 i386 (g++)
t/op/annotate-old.t - TODO passed: 1 in testf
t/op/exit.t - TODO passed: 6 in testf
in testf the first TODO passes on amd64 but not the second 13:52
cognominal I can't find how to compile pdb :( 14:05
I see stuff in the Makefilethough 14:06
ho, apparently, it is called a longer name... that's why I could not find it. 14:07
but still rough at the edges : ./parrot_debugger 14:11
Segmentation fault
bash-3.2$ ./parrot_debugger --help
stat failed: No such file or directory
purl (Core dumped)
14:13 aukjan joined 14:25 lucian joined 14:37 lucian joined 14:41 seatek joined 14:43 tetragon joined
nopaste "bacek" at 192.168.1.3 pasted "chromatic, it works :)" (12 lines) at nopaste.snit.ch/20742 14:48
bacek msg chromatic nopaste.snit.ch/20742 - first working version of TriColour M&S on gc_massacre branch. 14:49
purl Message for chromatic stored.
nopaste "bacek" at 192.168.1.3 pasted "chromatic, some TriColour stats for t.pir" (10 lines) at nopaste.snit.ch/20743 14:51
14:53 kid51 joined
dalek rrot: r47149 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Copy INF GC to TMS GC as barebone future GC implementation
14:55
rrot: r47150 | bacek++ | branches/gc_massacre/src/gc/list.h:
Fix list macros.
rrot: r47151 | bacek++ | branches/gc_massacre/src (2 files):
Add TMS into command-line options.
rrot: r47152 | bacek++ | branches/gc_massacre/config/gen/makefiles/root.in:
Build TMS
rrot: r47153 | bacek++ | branches/gc_massacre/src/gc (2 files):
Initial version of TMS
rrot: r47154 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Initialize self.objects in constructor.
rrot: r47155 | bacek++ | branches/gc_massacre/src/gc/api.c:
Actually create TMS when requested
rrot: r47156 | bacek++ | branches/gc_massacre/src/gc (3 files):
Sketch implmenetation of TMS
kid51 got the same errors as mikehh doing make corevm && make coretest
I don't really understand why something that is described as 'core' can fail a test ... and then pass that same test when 'core' is built with 'ancillaries' (terminology used in config/gen/makefiles/root.in). 15:00
Why would the 'ancillaries' fix something that was failing in 'core'? 15:01
Moreover, why would something fail with "error:imcc:syntax error" in 'core' but not fail with syntax error when 'ancillaries' are added to the build? 15:03
bacek kid51, I suspect dynops/ops2c "misunderstanding" 15:04
ops2c depends on NQP/PCT 15:05
which should not be part of corevm.
nopaste "kid51" at 192.168.1.3 pasted "Two make coretest errors as run thru 'prove -v'" (104 lines) at nopaste.snit.ch/20744
kid51 Is that to say that the functionality being tested at the failure points should not be expected to pass at those points? 15:07
... or, given recent changes in trunk, should *no longer* be expected to pass at those points (i.e., prior to nqp-rx)
bacek Testing of functionality dependent on dynops should be moved out of coretest
kid51 Aha, so the tests now are 'prematurely run', in effect? 15:08
bacek E.g. splitting tests into two parts - one for coretest, one for test
kid51, yes.
look at t/op/sprintf.t line 489
kid51 I don't often do 'make corevm && make coretest'
So I don't have past builds and test runs as reference points. 15:09
bacek There is "sysinfo" op which is part of dynops now.
dalek rrot: r47157 | bacek++ | branches/gc_massacre/src/gc/gc_private.h:
Add GC_Sys.is_pmc_ptr.
15:12
rrot: r47158 | bacek++ | branches/gc_massacre/src/gc/gc_ms.c:
Expose GC.is_pmc_ptr
rrot: r47159 | bacek++ | branches/gc_massacre/src/gc/list.c:
Fix removing items from 'other' list
rrot: r47160 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.c:
Fix Pool_Allocator.is_owned slighly by almost copy logic from contained_in_pool
rrot: r47161 | bacek++ | branches/gc_massacre/src/gc/list.c:
Sigh... Fix List.append again
rrot: r47162 | bacek++ | branches/gc_massacre/src/gc/pool_allocator.h:
Rerun headerizer
rrot: r47163 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
First working version of TMS
rrot: r47164 | bacek++ | branches/gc_massacre/src/gc/system.c:
Quick hack to make trace_memory_block work with TMS
kudo: 5fc925c | smashz++ | src/core/IO/Socket/INET.pm:
Fail if can't create socket.
15:21
kid51 TT created 15:23
dalek rrot: r47165 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Add bits of comments
15:29
15:31 jan joined
dalek TT #1666 created by jkeenan++: t/op/sprintf.t and t/pmc/sub.t fail during 'make coretest' 15:38
TT #1666: trac.parrot.org/parrot/ticket/1666
kudo: 749fe91 | moritz++ | Test.pm:
[Test.pm] simplify eval_exception

need for nesting try { eval() } anymore.
15:50
16:09 aukjan joined 16:12 khairul joined
nopaste "mariano" at 192.168.1.3 pasted "Problem in actions.pm with resizablepmc arrays @parrot-2.3.0" (20 lines) at nopaste.snit.ch/20746 16:21
mariano could you please take a look at nopaste, I'm having problems with NQP when shifting unshifting things 16:22
plobsing could you try figuring out if there's anything in the array between the unshift and the shift? 16:26
moritz like say(+$variable)
plobsing btw, shift/unshift is a degenerate case for the performance of RPA. using push/pop will be much faster.
mariano the code i pasted is the actual code 16:28
nothing in the middle
thanks for the tip about the pop/push
moritz rakudo: say ~3.2 16:29
sorry, wrong channel
plobsing yes, I'm asking you to put a debug print there. one of the operations is failing. I want to know which.
mariano says 0 16:31
so i think the push is wrong
I've changed it to push/pop
plobsing maybe this is a bug in autoviv. try initializing @?BLOCK with something 16:38
mariano how? 16:39
plobsing @?BLOCK = ( 'some', 'rubish', 'here' );
or maybe @?BLOCK = Array.new(); 16:41
or however NQP-rx gets at arrays 16:42
kid51 plobsing: If you get a chance, can you take a look at trac.parrot.org/parrot/ticket/1666 ? 16:53
possible fallout from ops massacre
cotto there's been a lot of that lately
dalek kudo: 8081285 | moritz++ | src/core/Match.pm:
make Match.Str return a Perl 6 Str
16:54
kudo: c227238 | moritz++ | Test.pm:
[Test.pm] return comparsion result from is_deeply
plobsing seriously, what is with our test suite and calculating Pi? There are other irrational numbers people! 17:00
dalek TT #1667 created by jkeenan++: t/op/sprintf2.t: Misleading documentation 17:01
TT #1667: trac.parrot.org/parrot/ticket/1667
cotto We tried ε but it was too small. ;) 17:02
dalek rrot: r47166 | fperrad++ | trunk/tools/dev/fetch_languages.pl:
fix Mercurial command
17:08
rrot: r47167 | plobsing++ | trunk/t/pmc/sub.t:
use something other than Pi for an irrational. avoids the use of dynop atan
mariano plobising: if I do @?BLOCK := (1,2,3); it works, so I guess your theory is correct about the autoviv
cotto phi is a nice number 17:10
plobsing mariano: I don't know enough about nqp to actually fix the bug. Now that we've isolated it, I suggest you file a ticket at trac.parrot.org. 17:14
mariano is there any guidelines for opening bugs? I'm asking cause I know how hateful is to read bugs without enough information 17:15
cotto just make sure there's enough information to reproduce the bug 17:16
mariano alright then, thanks 17:17
pmichaud @?BLOCK should autoviv. 17:18
but perhaps doesn't
16:26 <plobsing> btw, shift/unshift is a degenerate case for the performance of RPA. using push/pop will be much faster. 17:19
we use shift/unshift so that the current block is always in @?BLOCK[0]
speed is generally not an issue here anyway, there aren't that many blocks. 17:20
plobsing oic. I don't know much about PCT, but I do remember the performance bottlenecks we ran into when we changed over from Array to RPA everywhere.
pmichaud ...Array?
plobsing we had a general purpose Array PMC at one point 17:21
it had ... erm ... issues
pmichaud iirc, it wasn't resizable.
plobsing it was. you just had to accept a 1% chance of segfault 17:22
it was a linked-list of chunks. the code implementing that was quite hairy. not helped by the premature optimizations. 17:23
dalek kudo: fe19e82 | masak++ | src/Perl6/BacktracePrinter.pm:
[BacktracePrinter.pm] indented backtrace a bit

error message will be easier to spot.
17:29
TT #1668 created by bluescreen++: NQP: Problem with arrays when unshifting/pushing 17:34
TT #1668: trac.parrot.org/parrot/ticket/1668
cotto mariano, you should try to reduce your code down to a self-contained test case. 17:38
mariano do you want me to attach that to the TT? 17:39
cotto sure
17:46 lucian joined
mariano doen 17:53
cotto That code seems to work fine. 17:54
It prints 1 17:55
mariano if you run it with parrot-nqp maybe 17:57
cotto how else would you run it/
?
mariano but running with parrot compilers/nqp/nqp.pbc bug.nqp
it was able to reproduce it 17:58
moritz nqp is deprecated
cotto yes
the real nqp lives in github and is copied into ext/nqp-rx on occasion 17:59
moritz and compiled to parrot-nqp
plobsing maybe old-nqp should printerr on startup to warn users
cotto +yes
moritz +1
purl 1
moritz botfail
cotto why is it still around
yes, purl is botfail
not that I don't love confusing newcomers 18:00
plobsing can't remove. deprecation policy and many old languages depend on it. can't ditch nqp without ditching "30 dynamic languages run on parrot" 18:01
mariano cotto: got it.. so my makefile has "compilers/nqp/nqp.pbc" what should I change it for?
plobsing whu? compilers/nqp doesn't exist in current trunk. guess it got axed 18:02
moritz mariano: what version of parrot are you using? 18:07
mariano 2.3.0, but before any speculation i started my project using parrot 1.4
pmichaud nqp was deprecated in 2.3.0 18:08
mariano so i was upgrading parrot and never change the makefile other than the parrot version
pmichaud so it was removed shortly thereafter
(the one in compilers/nqp)
mariano so should I "mk_language_shell" again? 18:09
pmichaud that might work. the language tools have evolved quite a bit over the last six months
mariano thx 18:11
18:19 joeri joined
plobsing coverage? 18:40
purl?
purl yes, plobsing?
plobsing cover?
urg. where are our coverage stats at?
Do I need a deprecation to remove some of the complex and braindead op rewriting rules in IMCC? 18:51
18:57 kid51 joined 19:06 ingy joined
moritz only if it implies semantic change for HLLs 19:25
dalek kudo: dd0e5dd | moritz++ | t/spectest.data:
run test file for line numbers in error messages
19:44
rrot: r47168 | jkeenan++ | branches/tt1452_configure_debug:
Create branch to work on TT #1452.
19:54
GeJ Good morning everyone. 20:11
cotto hio GeJ 20:34
arnsholt Does anyone know if NQP-rx can be made to work with a token being possible to interpret as both a term and an operator? 20:35
cotto what are you trying to parse that necessitates that? 20:40
20:42 plobsing joined
arnsholt cotto: Prolog 20:43
In some cases operators are valid literals 20:44
GeJ servus cotto.
arnsholt For example, the draft standard I'm using for reference cites this as a valid example: f(:-, ;, [:-, :-|:-]) 20:45
(Yes, you may now recoil in horror)
cotto all I see is a smiley getting progressively happier 20:46
cotto looks up prolog syntax
arnsholt f(':-', ';', [':-', ':-' | ':-']) is a more readable version 20:47
cotto I'm not sure I agree.
arnsholt [] is a list constructor, and the [ foo | bar ] construct is the same as (cons 'foo 'bar) in Lisp (if you're familiar) 20:48
Yeah, it's not much better
cotto I'll be quiet until I have something other than noise to contribute. 20:49
arnsholt Heh, right. Anyways, :- and ':-' are equivalent (and one of the central operators, incidentally)
So I need to figure out a way to allow the looser operators in certain contexts, but not in others 20:51
cotto I'd wager that pmichaud or some of the #perl6 folks would have enough familiarity with prolog to point you in the right direction. 20:52
arnsholt Probably a good suggestion 20:54
I just try to keep my Prolog project out of #perl6, since it's not strictly the right place =) 20:55
cognominal hi, is need_ext needed anymore in pmcs? I don't see that handled anywhere but they are still there in 1 pmc in parrot and 8 in rakudo 21:00
plobsing take it out and see where it fails tests 21:07
rand > 0.5 and s/where/if/
dalek rrot: r47169 | plobsing++ | trunk/DEPRECATED.pod:
deprecate logical vtables TT #1655
21:18
cognominal plobsing, compiling, but bet that ATTRS feels the ecological niche previously occupied by the need_ext fossil 21:27
21:32 Patterner joined
dalek rrot: r47170 | jkeenan++ | branches/tt1452_configure_debug (26 files):
Begin to implement Parrot::Configure::debug().
21:34
bacek Good morning, humans 21:37
mikehh hiho bacek
bacek aloha, mikehh
cotto bacek, the gc_massacre build works fine with tms but 'splodes with the default set to ms 21:38
mikehh bacek: how's your massa-cre branch goin'
cotto it's also funny becuase I'm used to tms standing for transcranial magnetic stimulation, which is completely not a gc 21:39
bacek cotto, I know. Last commit broke ms.
mikehh, pretty well :)
cotto, I'm planning to replace ms with tms and rename it to ms. 21:40
cotto ms is really that useless?
bacek ms is really very naive. 21:42
cotto good for you hacking out tms so quickly 21:45
bacek cotto, I spend about month thinking how to make it :) 21:46
21:46 aloha joined
bacek A-ha! It works :) 21:46
aloha, cotto
cotto is that your bot?
bacek yeap
cotto does it do anything? 21:47
bacek nope :)
cotto and is it running in Parrot?
plobsing it allows autocompletion!
bacek plobsing, it's sole purpose of this bot :)
plobsing aloha++
bacek cotto, hmm. Good idea. Care to migrate POE to parrot? 21:48
cotto aloha, aloha
plobsing is the structure of POE necessary in the presence of full CPS? 21:49
bacek plobsing, not really. But Bot::BasicBot runs on POE. 21:51
22:02 mikehh_ joined
plobsing what non-toy HLLs (beyond rakudo) are in a resonably testable state? I'm looking to make sure some changes I want to make don't affect anything. 22:02
bacek plobsing, lua 22:06
or partcl-nqp afaik
arnsholt And nqp, I suppose? 22:08
plobsing nqp is dead 22:09
nqp-rx ftw
sorear that said, if rakudo works, nqp does 22:10
plobsing parrot lua? 22:11
lua?
damnit purl!
bacek purl, lua? 22:12
purl bacek: no idea
bacek purl, lua is github.com/fperrad/lua
purl OK, bacek.
mikehh opbots, names 22:14
arnsholt plobsing: Er, right. That's what I meant 22:16
I've not really done anything with old nqp, so nqp-rx is just nqp to me =)
sorear plobsing: You should also check out winxed. The author refuses to use PCT, so it's probably a much better test than Yet Another NQP Language 22:17
22:21 mariano joined
dalek rrot: r47171 | bacek++ | branches/gc_massacre/src/gc (2 files):
Rename PoolAllocator.attrib_size to .object_size
22:24
rrot: r47172 | bacek++ | branches/gc_massacre/src/gc (2 files):
Always use lazy allocator in PoolAllocator.
rrot: r47173 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Allocate 'constant' PMCs from separate pool
plobsing sorear: winxed is my favorite parrot language. it's the first one I check. 22:27
22:29 mariano joined
plobsing rakudo spec is tl;dnr 22:30
22:31 bluescreen joined
plobsing removing misfeatures from 2003 is fun 22:40
dalek rrot: r47174 | plobsing++ | trunk (5 files):
Eliminate <cmp_op>_(str|num) virtual ops (AKA IMCC op rewrite rules).

are generally a bad idea, and are unused. If these ops are actually desired, they should be added as real ops that DTRT.
22:41
nopaste "mikehh" at 192.168.1.3 pasted "make corevm/make coretest 1 remaining failure" (20 lines) at nopaste.snit.ch/20754 22:43
plobsing ooh. palendromic commit number!
mikehh: noted. see TT #1666 for discussion. 22:44
mikehh make corevm/make coretest 1 remaining failure - see: nopaste.snit.ch/20754
all other tests PASS (pre/post-config, smoke (#34138), fulltest) at r47170 - Ubuntu 10.04 i386 (gcc with --optimize)
t/op/annotate-old.t - TODO passed: 1 in testf 22:45
t/op/exit.t - TODO passed: 6 in testf
sorear bacek: What does gc_tms do? Just non-incremental tricolor? 22:47
(Why is it called GC Massacre if you're adding GCs?)
bacek sorear, yes. It's described on GCMassacre wiki page
sorear, I'm going to kill Memory_Pools, old GC, and maybe few kittens 22:48
22:48 hercynium joined
mikehh plobsing: there's just the one remaining test failing and I have tested on both i386/amd64 with gcc/g++ with qnd without --optimize 22:48
and
also the with the TODO passes, the first seems to pass on bot amd64 and i386 in testf but the latter only on i386 22:50
both
bacek: as long as you leave the poor puppies alone :-} 22:51
cotto rrot: r47177 | cotto++ | branches/puppy_massacre:
Create a branch to remove all puppies. We only like parrots.
22:54
bacek LOOOOL 22:55
mikehh cotto: ROFL - should have thought of that :-} 22:56
plobsing ENOPUPPIES
cotto It's a short-lived branch. 22:57
not unlike the puppies
dalek rrot: r47175 | bacek++ | branches/gc_massacre/src/gc (3 files):
Made Memory_Pools optional during gc_mark_root
rrot: r47176 | bacek++ | branches/gc_massacre/src/gc/gc_tms.c:
Remove allocating of Memory_Pools in gc_tms. They are not needed anymore
NotFound Winxed is not a very good test not just because of not using PCT, also because It doesn't have lexicals. 23:02
And don't HLL map. So you can break a lot of important parrot parts without affecting winxed. 23:03
BTW I don't "refuse" to use PCT, I just don't use it. 23:04
sorear What's the difference? 23:05
NotFound Refuse sounds pejorative to me.
sorear ah. 23:06
dalek tracwiki: v59 | bacek++ | ParrotQuotes 23:12
tracwiki: No puppies!
tracwiki: trac.parrot.org/parrot/wiki/ParrotQ...ction=diff
23:29 snarkyboojum joined
mikehh bacek: should I regen manifest etc in gc_massacre branch 23:30
bacek_at_work mikehh, not really. It's long way before branch will be ready for codetest fixes. 23:41
mikehh bacek_at_work: 'k just testin' then 23:46
NotFound About whiteknight's 1.000 man-hours estimate to build a compiler on top of Parrot: I wrote most of winxed in two months. 23:51
Calendar months, not work time ;) 23:53
sorear How sophisticated is winxed?
NotFound A lot less than perl ;) 23:54
But is a compiler anyway.
mikehh heading back to amd64 - bbiab 23:55