Parrot 2.5.0 Released! | parrot.org | Log: irclog.perlgeek.de/parrot/today | Nopaste: nopaste.snit.ch:8001 | GSOC Students: trac.parrot.org/parrot/wiki/GSoCersStartHere | Priorities: merge gc_massacre, remove deprecated items, add deprecation notices for 2.6, close tickets.
Set by moderator on 22 June 2010.
dalek rrot-linear-algebra: 1f0d9f8 | darbelo++ | setup.pir:
Fix for PLA setup.pir by NotFound++
00:00
darbelo Oh, crap. Did I just commit to the wrong branch? 00:02
cotto_work If you did, we'll have to point and laugh at you. 00:03
tcurtis mikehh: thanks. By the way, do you know how to fix nopaste.snit.ch/21525 ? 00:06
mikehh: It's from trunk.
mikehh tcurtis: looking at it 00:08
purl i guess looking at it is not reading it
darbelo Amusingly, the change works with both a recent and an old parrot. So the commit is techincally correct :) 00:12
NotFound++
whiteknight darbelo: don't worry about branches. Trying to target 2.3.0 with PLA is a losing proposition 00:13
nobody else does it
darbelo I do however need to start paying more attention to what branch I'm working on.
whiteknight: Well, the fix is now in teh parrot-head branch as well. 00:14
00:14 Coke joined 00:15 rtward joined
whiteknight darbelo++ 00:16
I will probably just delete tha branch
darbelo It's NotFound's work. I just committed blindly :)
mikehh tcurtis: it did not fail the test for me 00:21
darbelo whiteknight: Thinking about that a little. Shouldn't we have 'master' be the branch that tracks the parrot HEAD? And keep secondary 'mainteinance' branches for parrot releases? 00:26
Or maybe tags...
whiteknight darbelo: probably. I'm giving up tracking any particular release for now since it is too much of a hassle
darbelo If we track HEAD the we'll run on 2.6 when it's released. We branch on the release day and do whatever 'release engineering' we need to do on the branch and tag a release when we're done. 00:28
tcurtis mikehh: neither am I now. Odd.
darbelo Meanwhile we can keep master working after all of the world-shaking deprecations hit trunk.
00:29 Hunger joined
darbelo But I'm not sure we need to go through all that effor for the sake of our few (none?) users yet. 00:29
mikehh tcurtis: had it before to me - usually because I failed to do a make realclean properly, but not always 00:39
tcurtis mikehh: I think that's it. It disappeared when I did a realclean. 00:40
whiteknight darbelo: yeah, that's as good a plan as any. 00:44
Ideally I do want to be targetting specific stable releases, because it gives us a stable and reliable platform to develop for 00:45
having to track trunk AND add new features is a pain, especially for a small team
dalek rrot: r47792 | tcurtis++ | branches/gsoc_past_optimization (7 files):
POST::Pattern and subclasses added. Not yet tested.
00:47
bacek_at_work tcurtis++ # Optimisations ftw! 00:48
cotto_work +1. I'm looking forward to seeing how those can be integrated with PIRATE.
and by +1 I mean tcurtis++ 00:49
tcurtis bacek_at_work: The pattern classes are implemented. The transform method is not(or at least not usefully), since it still uses PAST::Transformer.
cotto_work bacek_at_work, is there any reason postshortcut is named that instead of "post"? 00:50
bacek_at_work cotto_work, stagename == PCT::HLLCompiler.method. And "post" already taken.
tcurtis, look forward for full implementation :) 00:51
cotto_work I ask because I want to type less when looking at post output.
maybe "postx" or "post2" 00:53
darbelo pst is shorter :) 00:54
cotto_work "" is shortest
though I don't know how --target= would work 00:55
tcurtis darbelo: not shorter, just offset a few hours.
darbelo lives in the PAST.
darbelo decides to investigat the porpect of future nutrition. 00:56
cotto_work and perhaps a new keyboard
bacek_at_work cotto_work, feel free to change it to something else.
cotto_work makes evil bikeshedding plans
darbelo Time go get some dead cow and a new keyboard. (not made of dead cow) 00:57
sorear bacek_at_work: why can't you override a method?
bacek_at_work sorear, how?
cotto_work I've seen a candy keyboard, but not one of meat.
sorear create a new method with the same name
bacek_at_work sorear, than parrot pick old one. 00:58
sorear that sounds like a bad nqp bug
bacek_at_work sorear, why? 00:59
it compiles down to .namespace [PCT;HLLCompiler]; .sub "post" :method
tcurtis bacek_at_work: You're in ".namespace [PIR;Compiler]", not ".namespace [PCT;HLLCompiler]". 01:00
sorear yes... but methods in subclasses should pretty much always be overriding superclass ones
if you don't have that, it's a stretch to call them classes at all
01:00 abqar joined
bacek_at_work hmm... I'll try tonight to change postshortcut to post ( if cotto will not beat me ). 01:01
afk # meetings...
cotto_work I will.
I'm just about out of here. 01:02
tcurtis sorear: it's definitely possible to override methods in NQP and get the correct behavior.
cotto_work clock/. 01:06
clock?
purl cotto_work: LAX: Wed 6:06pm PDT / CHI: Wed 8:06pm CDT / NYC: Wed 9:06pm EDT / LON: Thu 2:06am BST / BER: Thu 3:06am CEST / IND: Thu 6:36am IST / TOK: Thu 10:06am JST / SYD: Thu 11:06am EST /
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34556), fulltest) at r47792 - Ubuntu 10.04 amd64 (gcc with --optimize) 01:11
tcurtis cotto_work: I got distracted and changed postshortcut to post. 01:15
cotto_work Great! 01:19
dalek r: 777ddad | (Tyler Leslie Curtis)++ | (8 files):
Renamed postshortcut stage to post.
01:20
cotto_work tcurtis++ 01:22
and now we know your sekrit middle name
tcurtis cotto_work: that's okay. 1/6 of it was already in my email address. 01:26
01:32 plobsing joined
ash_ ping: plobsing 01:36
purl plobsing is part of our sanity injection framework or probably canadian or mailto:plobsing@gmail.com
plobsing ash_: pong
so as I understand it, your framebuilder is now working more or less, but with new-style signatures. 01:38
Have you had the chance to implement tests for your new signatures? 01:39
ash_ not yet, i am working to get all of the old tests passing 01:40
i realized i had a problem with returns, anything larger than an int was being lost
(doubles didn't work), but i think i have that worked out now, just rebuilding and testing currently
plobsing sweet
ash_ then i'll work on some new signatures that are not in the core thunks or extra thunks set of tests 01:41
plobsing so your current framebuilder accepts old-style signatures as well?
ash_ yeah 01:42
well, almost all of the old style still means the same thing
i catch stuff like 2, 3, 4 and map those to short, int, long
we can throw in deprecation warnings easily if we see them 01:43
plobsing so there aren't any ambiguous cases?
ash_ i just mixed the old stuff into the new stuff for now, so it won't break anything 01:44
not currently
but i haven't implemented i8, i16, i32, i64
plobsing i32 seems particularily problematic
ash_ (actually, currently all of the postfix modifiers are not being parsed yet, but for now, those are all optional things 01:45
)
tcurtis ash_: perhaps require some sentinel character at the beginning of the signature that wouldn't be valid in the old-style signatures to indicate that you want new-style?
plobsing we may have to do that, if only during transition 01:46
s/if/even if/
ash_ thats fine by me, i know the old one didn't allow spaces, but i ignore them, you could just put a space in front 01:47
is there some way of doing a runtime deprecation warning? 01:48
plobsing there is a facility for deprecated ops. you could look into how that works.
ash_ alright, maybe i can put in a warning if you use an old style declaration 01:49
plobsing I think it might just be Parrot_warn with a PARROT_WARNINGS_DEPRECATED_FLAG warnclass 01:50
01:50 japhb joined
tcurtis There's a Parrot_warn_deprecated C function. 01:50
bacek_at_work tcurtis, you can put yourself into parrot's CREDITS file. Than dalek will properly report your nick for github commits. 01:51
ash_ i am not using the ARGIN, ARGOUT, ARGMOD macro's on any of my arguments currently, but I can add those, I also pass all of the style tests (last i checked) 01:52
01:52 snarkyboojum joined
ash_ plobsing: if i get the tests working in the next day or so, is there any planning we should do for the llvm stack frame builder? 01:52
one thing that we can do, eventually, with the llvm stack frame builder is remove the places where NCI is used internally and maybe some of the other cases where NCI is used so we don't have to use libffi to make those calls because they can be slower than just directly building the calls 01:53
plobsing I'm not really sure. We have a libjit one, we have a libffi one, llvm should be pretty cookie cutter. 01:54
ash_: that is the approach taken by the libjit framebuilder
it is easier
so yes, do it
ash_ i know they did that in macruby, at one point they used libffi to call obj-c from ruby, then they replaced all of the libffi uses with llvm stuff and eventually removed libffi all together 01:55
'we have a libffi one' what did you mean there? libffi stack frame builder?
plobsing yeah, well what you've done works as though it were a frame builder 01:56
ash_ oh, yeah, thats true, i didn't realize that
i think the only thing that worries me about llvm is that its all in C++, it has a C interface, but i am not sure if it does all the same stuff the C++ one does 01:57
plobsing well, if you are separating things up properly, and you really should be, the C++ should be able to sit in a separate file. 01:58
also, you could have it as an external library to start off so that it doesn't interfere with core's strict C89 policy 01:59
ash_ is the stack frame pluggable like that? 02:00
plobsing look at my libjit-fb library. it provides a framebuilder as an external library
ash_ thats on github, right? 02:01
plobsing there are hooks. didn't you use those?
yes it is on github
ash_ which hooks? 02:02
plobsing github.com/plobsing/parrot-libjit-f...hes/master
IGLOBALS_NCI_FB_CB and IGLOBALS_NCI_FB_UD
ash_ no... all of my changes have centered around the src/pmc/nci.pmc file 02:03
plobsing nci_fb_cb gets called when a thunk is missing from the cache and nci_fb_ud is the userdata payload
I saw a lot of changes in src/pmc/nci.pmc. I assumed that was the new signature parser.
ash_ yeah 02:04
plobsing in my opinion, the libffi stuff has no business in the nci pmc proper if we can help it.
ash_ um.... where should it of gone? 02:05
did i do this wrong?
plobsing no. it works ergo you've done it right
I would have put it in a separate file (eg: src/nci/ffi_framebuilder.c)
ash_ i can re-organize my code, thats not hard in theory, i just put it in the nci.pmc because all of the old nci stuff was in there (except the thunks) 02:06
plobsing yeah, but libffi replaces thunks. 02:07
it's not much of a big deal. if you don't get around to it, I'll likely do it when I pull your changes back into svn 02:09
more important are tests
ash_ which parts do you think should go in the src/nci/ffi_framebuilder.c? right now i parse the signature and build the callframe at the same time, but it could be separated into different parts 02:10
plobsing I suppose the framebuilder does the signature parsing (it has to really). Maybe we should delegate that entirely to the framebuilder (previously framebuilders parsed the signature after NCI had already parsed it once) 02:11
ash_ parse_sig is where the parsing starts, then it calls parse_return, which in turn calls parse_identifier 1 time (since C only allows 1 return object), that's all parse_return does, then parse_sig calls parse_args, which calls parse_identifier until the end of the string 02:12
plobsing what I'm getting at is, maybe nci.pmc shouldn't be parsing signatures at all and just act as a front for the appropriate framebuilder 02:13
ash_ got ya, that would be a lot more pluggable 02:14
plobsing I hope to be done my current parrot project soon, so I'll try to move your stuff over into svn this week. 02:16
this is a fair amount of work. have you submitted a CLA?
ash_ yeah, i have 02:17
i have access to svn if you want me to make a branch
plobsing oh sweet. I wasn't sure where you were along that process 02:18
ash_ well, i emailed my CLA to legal@parrot.org before the GSoC started, i think Coke gave me svn access
i haven't actually double checked that yet, but i think it happened already, let me check 02:19
plobsing if you have svn commit access, it means your CLA was accepted IIUC
ash_ is there an easy way to get my changes moved from git to svn? 02:20
or should i just diff my master and the svn trunk
plobsing ash_: not sure. I was going to look into that. The diff method is tried and true.
but fails at history
ash_ yeah...
purl totally dude!
ash_ to bad there is no downstream branch on github :P 02:21
plobsing there should be a way to convince git-svn to do what we want 02:22
ash_ yeah, i was thinking that might work 02:23
i'll look at your frame builder you did in libjit, i think it would be cool if there was some way to dump the llvm-ir too 02:26
02:35 janus joined
ash_ is there a way i can test if i have svn write privleges? 03:04
sorear add your name to the CREDITs 03:05
your gonna have to do it eventually
ash_ good idea
nope, it says autherization failed 03:10
dalek rrot: r47793 | tcurtis++ | trunk/CREDITS:
Adding myself to CREDITS.
03:17
03:17 snarkyboojum joined
plobsing ash_: you are using your trac username/password correct? 03:20
ash_ yeah, i can log into trac
and yea, i used the same userame and password with svn
username*
plobsing hmmm maybe you don't have a commit bit yet. If noone has any better ideas, I'll bring it up at the next #parrotsketch. 03:23
ash_ i can ask coke next time i see him online 03:40
if you use string_make can you free the char* that you gave to string_make? or does the resulting string need that? 03:42
never mind, i figured it out, i mixed up two variables 03:49
04:04 snarkyboojum joined, PerlJam joined 04:13 JimmyZ joined
dalek rrot: r47794 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Add 'exists' and 'delete' pirops to PAST::Compiler.
04:22
cotto Wow. Youtube has a vuvuzela button now. 04:40
ash_ what is up with all the vuvuzela stuff 04:42
cotto I know it's from the World Cup, but beyond that it beats me. It's pretty funny though. 04:43
bacek_at_work cotto, if you replace postshortcut with post in pir.pir (line 43) we can have end-to-end PIR compilation in PIRATE :)
sorear a vuvuzela...button.
cotto I wonder why that didn't get changed. 04:44
I'm looking forward to PIRATE being self-hosting. 04:45
That'll be fun.
Or rather, that'll 04:46
b
e
f
u
n
. 04:47
ash_ are you calling it slow :P 04:48
cotto yes 04:51
plobsing now thinks that cotto knows 2 orthogonal definitions of fun
cotto gge is in a similar position 04:52
tcurtis gge?
purl gge is in a similar position
bacek_at_work cotto, for self-hosting we need .include working... 04:53
cotto masak's Perl 6 implementaion in perl 6
bacek_at_work, yes
ash_ plobsing: i am having a strange bug, nci stuff works fine the first call you make to it, but if you do a second call using the same nci object it's not returning the right result for some reason 04:54
plobsing ash_: are you getting bitten by cacheing by chance? 04:55
ash_ i don't think so, i made it re-gen the ffi_cif every time it was called and it still gives the same result, and thats the only thing i keep between calls 04:56
plobsing can you nopaste a small example that demonstrates the issue against origin/master ? 04:57
ash_ hmm, no, looking at it, i think its floats specifically that are not working, gist.github.com/451000 is the one that i am trying to fix (its the first one thats failing) 04:58
sorear issues with the evaluation stack? 04:59
ash_ issues with my nci changes 05:00
cotto bacek_at_work, What about doing .include as part of a preprocessor? I suspect that that's the only way to be fully compatible with imcc. (Whether that's a good idea is an open question.) 05:02
bacek_at_work cotto, I don't know yet. We do need some kind of "preprocessor" for macros. I hope we can avoid it for .include...
ash_ oops, i pasted the wrong one in there, i just updated the gist gist.github.com/451000 05:03
cotto Why do you want to avoid it for .include? file/line numbers? 05:04
bacek_at_work cotto, yes. And we have to fully parse _twice_... 05:05
cotto That's true. It wouldn't matter so much if parsing weren't so slow, but here we are.
ash_ you don't have to parse twice if you want macro support... rakudo is single pass parsing and it has macro's 05:06
bacek_at_work ash_, it's not about macro. It's .include. 05:07
05:08 LoganLK joined
ash_ oh sorry, i misread 05:08
plobsing I still don't see why you need to parse it twice
bacek_at_work <<"HEREDOC"; .include "some.pir"; HEREDOC
plobsing oh yeah. that's what makes IMCC's tokenizer pretty hairy. 05:09
but doesn't the same hold true for macros? 05:11
bacek_at_work plobsing, nope. We can expand macros in-place. 05:12
we just need way to switch NQP to parse different file preserving current state
(for .include)
plobsing <<"HEREDOC"; .macro not_a_macro() ... HEREDOC
bacek_at_work heredocs parsed as strings in pirate. 05:13
if we want "preprocessor" for .include we have to _parse_ it.
that's why we have to parse twice.
plobsing macros are essentially includes on stringhandles 05:19
tcurtis plobsing: the difficulty with .include and single-pass parsing is that you'd have to parse the file contents where you are in the process of parsing the file you're parsing and then continue with the original file at the same position in the parse when the other file ends. 05:23
A naive implementation of macros would suffer the same problem, but you could also modify the grammar in mid-parse(I think?) when you encounter a macro definition. 05:24
I think.
plobsing except macros are implemented as includes of string in IMCC allowing for all sorts of nast^Wfun things. 05:25
I'm not saying includes are easy, I'm saying that macros are equivalent to includes 05:26
cotto I wonder how many things would break if pir files were required to have some kind of self-containedness. 05:27
i.e. no partial subs
dalek rrot: r47795 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
Make sure we don't try to lookbeind for the first char in a string.
05:28
cotto kicks dalek 05:29
rrot: r47796 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
[pct]: Remove debugging 'say'
rrot: r47797 | pmichaud++ | failed to fetch changeset:
[nqp]: Update bootstrap files with regex, nqp-setting improvements.
cotto that was odd
dalek p-rx: 9157c78 | pmichaud++ | (2 files):
Allow hyphens and single-quotes in subrule calls.
05:32
p-rx: f0bed9b | pmichaud++ | (2 files):
Allow hyphen and single-quotes in NQP identifiers.
p-rx: a3d5c5b | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION to get debugging fix.
p-rx: ebaf06c | pmichaud++ | (2 files):
Add ResizablePMCArray .delete and .exists .
p-rx: 4ee17c4 | pmichaud++ | src/stage0/ (4 files):
Update bootstrap.
rrot: r47798 | tcurtis++ | branches/gsoc_past_optimization (9 files):
Rewrite PAST::Walker and PAST::Walker::Dynamic in NQP. Preparing for refactor.
05:45
cotto bacek_at_work, why doesn't namespace_key include the square brackets? 05:54
bacek_at_work cotto, nope. But we can always change Grammar to include it. 05:57
cotto ok 05:59
It's an easy change. I was just curious if it was intentional. 06:00
bacek_at_work cotto, nope. It just happened. 06:02
dalek rrot: r47799 | NotFound++ | trunk/t/pmc/orderedhashiterator.t:
fix silly omission: wrote a test sub but forgot to call it
06:18
rrot: r47800 | plobsing++ | branches/dynop_mapping/compilers/imcc/pbc.c:
update sub lookup fixup code
rrot: r47801 | NotFound++ | trunk/t/pmc/filehandle.t:
some FileHandle isatty tests
06:35
06:50 hercynium joined
dalek r: 19fe10a | cotto++ | (2 files):
use the post stage instead of postshortcut
07:06
r: 16fa680 | cotto++ | src/PIR/Grammar.pm:
make namespace_key include circumfix square brackets
bacek_at_work cotto, btw, we can avoid "keyed_op" rule. Just add more pir_instruction:sym<delete>, <exists> and <defined> similar to <set_keyed>/<get_keyed> 07:08
cotto quite sensible 07:11
It's too late for me to start on it now though.
bacek_at_work cotto, no worries 07:14
cotto well, it may be too late. We'll see. 07:15
bacek_at_work :)
07:16 TiMBuS joined
cotto what about exists $I0, $P1['x'] vs $I0 = exists $P1['x'] ? 07:16
bacek_at_work just create 2 rules? 07:17
cotto eew
but it's workable 07:18
bacek_at_work afk # bossess
cotto sure
nafk #no bosses
I'm done. 07:27
08:05 particle joined
dalek r: 72c3126 | cotto++ | (3 files):
add code and tests for explicit keyed set/get
08:26
rrot: r47802 | plobsing++ | branches/dynop_mapping/src/embed.c:
paper over Parrot_run_native issues
08:29
cotto msg bacek my last pirate commit adds a couple failing tests. My brain stopped going before I could nail them down. 08:59
purl Message for bacek stored.
dalek r: 92dc02d | cotto++ | (3 files):
add *broken* code and tests for normal and sugared delete, exists and defined
09:00
nopaste "moritz" at 192.168.1.3 pasted "PAST optimization usage error (for tcurtis++)" (11 lines) at nopaste.snit.ch/21531 09:44
moritz purl: msg tcurtics nopaste.snit.ch/21531 is what I get from my attempt at revision 47802 09:45
purl Sorry, I've never seen tcurtics before.
moritz purl: msg tcurtis nopaste.snit.ch/21531 is what I get from my attempt at revision 47802
purl Message for tcurtis stored.
moritz purl: msg tcurtis also t/library/pasttransformerdynamic.t dies before running any tests 10:08
purl Message for tcurtis stored.
10:23 ambs joined
dalek r: 15d8b8a | bacek++ | src/PIR/Grammar.pm:
Use <namespace_key> instead of <pir_key> in <op_params>
10:26
r: 0375344 | bacek++ | src/PIR/Grammar.pm:
Tune 'LTM' manually
10:32 ambs joined 10:34 Coke joined 10:38 JimmyZ joined
JimmyZ msg darbelo in r47795, do you mean pos == 0 ? 10:39
purl Message for darbelo stored.
10:42 lucian joined
dalek r: fb0e64a | bacek++ | src/POST/VanillaAllocator.pm:
Fix VanillaAllocator to properly initialize %type2idx
10:49
r: e7c3712 | bacek++ | t/pbc/basic.txt:
Fix test
r: 71e6497 | bacek++ | t/ (3 files):
Split keys tests into separate files
11:06
r: 9b47396 | bacek++ | (4 files):
Remove Key.keys, use children instead
11:07 rtward joined
dalek rrot: r47803 | mikehh++ | trunk/config/gen/makefiles/root.in:
add generated_hello.pbc to examples-clean
11:13
rrot: r47804 | mikehh++ | trunk:
add generated_hello.pbc to svn:ignore
11:23 cognominal joined
bacek msg cotto I finished Keys.Switching to PCC. Feel free to grab anything from TODO list. 11:32
purl Message for cotto stored.
dalek r: a6284af | bacek++ | (5 files):
Implement optimization of single int Keys
11:34
11:47 Coke joined 12:02 lucian_ joined
dalek rrot: r47805 | NotFound++ | trunk/src/pmc/handle.pmc:
fix stupid mistake in Handle.isatty
12:02
p-rx: a915b78 | bacek++ | (2 files):
Add bitwise operators
12:07
12:09 whiteknight joined 12:12 khairul joined
dalek rrot: r47806 | khairul++ | branches/gsoc_instrument (3 files):
Added test for loadlib event.
12:19
12:26 bluescreen joined
whiteknight good morning, #parrot 12:29
12:32 bkuhn joined
dalek tracwiki: v136 | gerd++ | Languages 12:50
tracwiki: trac.parrot.org/parrot/wiki/Languag...ction=diff
13:03 JimmyZ joined
dalek rrot: r47807 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
Add missing '='.
13:24
kudo: 18682c8 | pmichaud++ | build/PARROT_REVISION:
Bump PARROT_REVISION.
13:26
r: 0874100 | bacek++ | (3 files):
Use RPA instead of PCT::Node to store params
13:38
r: d8cbfd6 | bacek++ | (2 files):
Start building signatures
r: 65022d3 | bacek++ | (2 files):
More tests for build_sig. Fix handling multiple results from build_single_arg
r: 8a8efe3 | bacek++ | (2 files):
Use proper constant flag.
r: c555784 | bacek++ | t/pbc/call.txt:
Add test for simple sub invocation with sc param
r: 9ac2e47 | bacek++ | src/POST/Compiler.pm:
Handle Sub's .params
r: 8074806 | bacek++ | src/PIR/ (2 files):
Sub names can be bare <ident>
r: 8cb6e12 | bacek++ | src/POST/Compiler.pm:
Die with meaningfull message on NYI calls.
r: 93d66b4 | bacek++ | src/POST/Compiler.pm:
Awful untested ugly version of .return() handling
13:39 plobsing joined
whiteknight bacek++
bacek whiteknight, good morning :) 13:44
whiteknight hello bacek. Good work last night
or, this morning.
or whenever the hell it is where you are
dalek r: 8d78a43 | bacek++ | t/pbc/call.txt:
Add test for multiple args/params.
bacek It's almost tomorrow here :)
whiteknight tomorrow? but today just started! 13:45
bacek whiteknight, no way! 13:47
13:48 Coke joined
whiteknight there's only one reasonable answer: One of us is moving at the speed of light and time is dilating 13:49
bacek It's all relative. 13:53
Anyway, enough for tonight. I've got basic param passing.
dalek r: 5a69e7c | bacek++ | src/POST/Compiler.pm:
DRY: Factor out common build_pcc_call subroutine.
13:58
bacek Hooray! Handling PCC returns is also works! 13:59
It was easy. 14:00
And it's tomorrow now
14:00 bubaflub joined
bacek Time for recharge. Good night, humans. 14:00
whiteknight goodnight bacek 14:02
dalek r: f8e3240 | bacek++ | (2 files):
Handle PCC call returns
14:03
14:05 LoganLK joined
dalek rrot: r47808 | mikehh++ | trunk/MANIFEST.SKIP:
re-generate MANIFEST.SKIP
14:13
kudo: bf5bbd4 | pmichaud++ | src/core/ (2 files):
Turn Array.exists into List.exists, write it a bit cleaner.
14:15
kudo: 7e3ddca | pmichaud++ | src/core/EnumMap.pm:
Redo EnumMap.exists .
rrot: r47809 | NotFound++ | trunk/t/pmc/stringhandle.t:
test for StringHandle.isatty TT #1689
14:29
14:32 rtward joined 14:33 spinclad joined 14:43 ash_ joined 14:45 Andy joined 14:54 particle joined 15:05 particle joined
ambs purl: seen coke 15:06
purl coke was last seen on #parrot 19 hours, 16 minutes and 33 seconds ago, saying: (my lack, not nqp's)
ash_ is there any reason, char *s = Parrot_str_to_cstring(interp, a_string); would not be the same as "a_string->strstart" ? (i know i shouldn't peak inside the STRING object but s keeps ending up as "(null)" while the string has actual content 15:12
mikehh need to reboot - brb 15:16
whiteknight ash_: STRING->strstart is not null-terminated 15:17
ash_ no, when i call Parrot_str_to_cstring it literally puts "(null): into the cstring 15:18
whiteknight well, that doesn't seem right 15:19
unless a_string is "(null)"
ash_ yea... i think i am doing something wrong, let me double check my uses of the variable 15:21
whiteknight ok 15:22
ash_ so... here's my delima, i have a generic blob of data (its just a void** to a malloc of arbitrary size, its for holding the result of an NCI call, which varies depending on the signature), and the result contains the right data if i pretend i know what it is (eg. manually cast it to a *double in this case and print it) but Parrot_pcc_build_call_from_c_args isn't taking the value in correctly 15:26
to bad you cant dereference a void* :P it would be nice to be able to say "i don't care what this is, its just a chunk of memory that has the right value" 15:28
moritz well, the type encodes size information too 15:29
ash_ yup, i think thats the problem i am running into 15:30
moritz that's why derferencing a void* doesn't work
arnsholt I think gdb tries to be helpful if you cast it to (char*) and print it
Or char[100] or something (which would be smarter)
ash_ the value -555555.555500 as a C double is getting translated via Parrot_pcc_build_call_from_c_args into 6.95322297564109e-310
it seems to only happen with doubles though
int's pass through fine
arnsholt Have you double checked the exact types? Could be weirdness with loss of precision or signedness or something 15:31
ash_ Parrot_pcc_build_call_from_c_args(interp, call_object, "N", *(double*)return_data); (return data is a void** return_data = malloc(sizeof(double));)
thats the call thats not working correctly 15:32
yeah, i am doing some "bad things" there but i don't know my data types at compile time, i only know them at runtime...
arnsholt What's the prototype of the last arg of the function? 15:33
ash_ its a vararg, Parrot_pcc_build_call_from_c_args(PARROT_INTERP, call_object, char* , ...); # like that kinda
arnsholt Strange. 15:36
purl But true.
arnsholt ^^
ash_ to make sure its my bad casting, i am going to replace return_data with just a float constant like 12.34 15:37
arnsholt Good idea =)
ash_ *compiling*
15:41 mikehh joined
ash_ yeah its my bad casting 15:53
moritz that's less scary than a screwed-up calling convention :-) 15:54
ash_ hmmm this might not be good for structures
16:01 theory joined
ash_ whiteknight: ping 16:23
whiteknight ash_: pong 16:24
ash_ i have a question i think you could help me with
whiteknight sure, shoot 16:25
ash_ so, my idea of a 'stack frame builder' was whatever was building the call frame, eg. "say 1 + 2;" in my mind calls add, stores results then calls say
which is currently, if i am not mistaken, a while loop that iterates bytecode 16:26
my plan for the llvm stack frame builder, i think i am using the wrong words here, was to expand the bytecode into C calls so there is no loop anymore, its compiled directly to C via the llvm (and thus lets the llvm run its optimization passes over the code)
so the same example would end up with a dynamically compiled main function that does the same thing as the bytecode loop did, but with the added bonus of it could be dumped as a native executable, plus it has the llvm optimization passes done on it to do all the things they do (like dead code elimination and constant folding at the C level) 16:28
darbelo That is a bit more than I would expect from a frame builder. 16:29
ash_ yeah, i think i am misunderstanding "frame builder"
whiteknight ash_: Like a direct-threaded system? 16:30
ash_ i don't know what direct-threaded means 16:31
NotFound ash_: looks like you are trying to build a jit compiler.
ash_ NotFound: yes, using the llvm
for JIT and AOT compiling bytecode into native code
for (hopefully) a speed boost
thats what I wanted to do for the GSoC
NotFound ash_: nice, but that is much more than the nci frame builder. 16:32
ash_ i am almost done with the first part of my GSoC (the NCI changes to use libffi so you can have almost any signature for nci)
whiteknight ash_: www.cs.toronto.edu/syslab/pubs/demkea_context.ps
ash_ NotFound: there were 2 parts of my GSoC, nci was only part of it
whiteknight that's about "context threading", but gives lots of cool information about dispatch and defines direct threading
ash_ thanks whiteknight i'll read over that 16:33
NotFound ash_: but better avoid the name "frame builder" for that part, it leads to confusion.
ash_ alright, well, i guess i should say, i want to build a JIT and AOT bytecode compiler using the llvm 16:34
whiteknight ash_: direct-threading is the most efficint way to dispatch ops in a VM. Basically, instead of looping over bytecode, you convert the bytecode into machine code where each opcode is replaced by a function call to the op function
basically, you unwind the runloop
ash_ yeah
whiteknight Context Threading, which they describe in the paper, is similar but supposedly better yada yada yada
ash_ thats what I want to do, and let the llvm do it on the fly and make it into native code, so there is no runloop anymore, its like translating the loop into a big 'main' 16:35
the llvm has nice optimization passes too which might see that your doing the same thing in two places, or see that a section of code is unreachable and remove the un-need parts
whiteknight no, I misspoke. This paper describes "Context Threading", which the rest of the world calls "Direct Threading". And refers to "Direct Threading" which everybody else calls a runloop 16:37
ash_ my goal was to do basically the same thing that macruby did to ruby, it just with parrot
whiteknight so, same techniques, but different people call them diffrent things
16:38 gbacon joined
darbelo whiteknight: you can get a win by dispensing with the functions and dispatchig to labels (in compilers that support it) 16:41
It's what the old cgp runcore did IIRC.
whiteknight darbelo: not necessarily. Keep in mind that a function call is basically just a jump, plus a stack frame 16:42
a good optimizing compiler will see that every op has the same function signature, so we can avoid all those push/pops
Plus, function call/return tends to be very well understood by the branch predictor, so you actually will get better performance in that system over CGP 16:43
ash_ whiteknight: does that sound reasonable for me to do for the rest of my GSoC? to work on that? i need to talk to plobsing but i didn't get a chance last night
i think we are misunderstanding each other because i was confused by what 'stack frame builder' meant 16:44
whiteknight ash_: That's for plobsing to decide. Definitely make sure you do what your proposal says before doing anything else
darbelo whiteknight: I might be misremembering, but the number in the 'The strcture of efficient interpreters' paper seemed to disagree with you on that last point :)
numbers* 16:45
cotto ~~
darbelo ash_: Or make sure your mentor akys the 'anything else' first :)
ash_ i think my proposal was not really understood correctly because i worded it wrong... 16:46
whiteknight darbelo: I would have to look. I may be misremembering too
I would be surprised though, CGP is horrible on the branch predictor
ash_: Well, what do you mean by "stack frame builder"? 16:47
ash_ the stuff i described above with the llvm unrolling the runloop
whiteknight okay. So then your proposal was worded extremely wrong then :) 16:48
ash_ yup
whiteknight ash_: What you're talking about doing now is adding an LLVM-based direct- or context- threaded runcore 16:49
ash_ yea
brb lunch & 16:55
whiteknight en.wikipedia.org/wiki/Threaded_code
it's confusing that they refer to this whole mess as "threading" 16:57
atrodo very 16:58
17:06 Coke joined
cotto bacek, I'm off to work. Do you have any idea what's causing the segfaults in the pbc key tests? 17:08
dalek r: dcea987 | cotto++ | src/POST/Key.pm:
expand docs to make POST::Key a little less mysterious
17:12
rrot: r47810 | chromatic++ | trunk/src/pmc/class.pmc:
[PMC] Sped up Class PMC's isa vtable.

testing Class identity. This improves the Rakudo startup benchmark by 5% and should improve all Rakudo programs similarly.
17:13
whiteknight chromatic++ # nice optimization! 17:14
cotto_work good mroning 17:31
or at least slightly faster ;) 17:32
ash_ whiteknight: so, do you think, after i talk with plobsing, anyone would object to my changing my proposal a bit? 17:37
17:38 hercynium joined
moritz ash_: in general changes to gsoc proposals are OK if you have good reasons, and support from your mentor 17:39
whiteknight ash_: I would have to see more of what you plan. A new runcore (especially one so diveregent from current cores) could be a big project 17:42
ash_ well, the gist of it is to just unwind the bytecode into a main function that the llvm executes 17:43
that was kinda why i did the independent study in the spring where i started re-implementing nqp-rx on the llvm 17:44
whiteknight ash_: Do that at runtime (like a proto-JIT) or do that ahead of time like an AOT compiler?
ash_ both, all that would be different is i could add a runtime flag that dumps the llvm-ir if its set, otherwise it executes it immediately 17:45
dumping the llvm-ir isn't that hard once its made
i could even dump the llvm-ir to the end of the pbc files or make a new bytecode file, so you only ever have to compute it once 17:49
cotto_work Interesting. I don't get a big explodey segfault on my work machine. 17:50
ash_ with the llvm, more real fake executables would be possible too, since it might be possible to make linkable functions out the code, you could have a real executable (relatively speaking anyway), instead of store the bytecode in a big string 17:55
that would be a bit out of the scope of the gsoc probably though, i think unrolling the runloop is possible by the end of the gsoc 17:58
Coke msg kthakore - i don't know anything about sdl nor could I run those files last time I checked. so... maybe? 18:01
purl Message for kthakore stored.
ash_ Coke: you got my cla didn't you? 18:02
Coke ash_: full name?
purl rumour has it full name is Web Developer 0.8 extension
ash_ John Harrison
might be John Lawrence Harrison
Coke ash_: yup, we have it. 18:03
why, what's up?
ash_ I tried checking something into the svn (adding my name to the credits to see if it worked) because i am getting close to finish my libffi changes to nci, but it gave me an authentication error 18:04
Coke what is your trac id? 18:05
ash_ ash 18:06
Coke ash: try now. 18:07
ash_ yah, that works, thanks 18:12
Coke np 18:14
dalek rrot: r47811 | ash++ | trunk/CREDITS:
Adding my name to the CREDITS, to test if i can commit
18:19
whiteknight ash++ 18:21
opbots trust ash_ 18:23
slavorgn But I already trust ash_
slavorg But I already trust ash_
whiteknight opbots help
slavorgn I'm slavorg, an op-bot.Commands: trust, distrust, believe, disbelieve, leave, join. See also jerakeen.org/programming/slavorg
slavorg I'm slavorg, an op-bot.Commands: trust, distrust, believe, disbelieve, leave, join. See also jerakeen.org/programming/slavorg
18:24 slavorg left
ash_ they must be twins 18:24
atrodo Haha, that link doesn't work
18:24 slavorg joined 18:30 theory joined
whiteknight that link for slavorg is dead. Looking through the website, there is no mention of slavorg or the code that runs it 18:32
sorear yeah I can't find any documentation on slavorg 18:42
what do you want me to do?
ah 18:43
the command you wanted was "opbots names"
18:49 particle joined
Andy plugs away at rebuilding his dev server 18:49
cotto_work looks at his loaned copy of the CLI Annotated Standard. 18:52
18:55 patspam joined 18:57 rtward_ joined
sorear whatfor? 18:57
purl i think whatfor is logout if the session isn't cleared?
cotto_work steal the good ideas for Lorito 18:59
sorear meanwhile, I'm implementing Perl 6 on the CLI itself. 19:01
19:09 gbacon joined 19:11 rtward joined 19:39 theory joined 20:05 Psyche^ joined
ash_ sorear: does your code with with mono too? (isn't mono CLI for like linux?) 20:07
20:08 dmalcolm joined, whiteknight joined
sorear ash_: It's being developed on mono. No clue if it works on .NET 20:18
ash_ ah
okay, thats cool
darbelo I find the idea of develping on the clone, without knowing wether it'll work on the original kind of amusing. 20:19
sorear the clone itself is a suprisingly nice piece of software 20:20
for something that's essentially a clone of a clone of the Sun JVM, it uses 4x less memory than the original 20:21
ash_ Mono's main aim was to implement C#, and C# has a standard 20:22
darbelo And a bazillion things that got left out of the standard too.
Put another way: C has a standard too. 20:23
ash_ lol true 20:24
but they had at least a semi-reliable guide of what they were making, so you can at least say "given X, Y should happen, as per the spec"
darbelo Hey, even scheme has a (Revised revised revised revised revised) standard too! 20:25
ash_ javascript has a number of standards 20:28
that one, amazingly, runs fairly consistently, although the DOM spec sucks
darbelo Most of the time the problem is not the standard, but what it leaves out. 20:29
GeJ Bonjour everyone. 20:31
cotto_work good day, GeJ 20:33
dalek nxed: r521 | julian.notfound++ | trunk/winxedst1.winxed:
change the way used to track predefs used and use it load trans dynops when
20:35
purl dalek: that doesn't look right
20:37 patspam joined 20:44 ambs joined
ambs purl: seen coke 20:46
purl coke was last seen on #parrot 2 hours, 31 minutes and 58 seconds ago, saying: np
20:47 gbacon joined 20:56 spinclad joined 21:25 mikehh joined
Coke ambs: I said I'd send you an email! calm down! 21:30
;)
ambs tries to calm down.
Coke I have now had yapc, travel, crash, full day of work, and just now decommuted. time for dinner, family, and then maybe you'll get your email. =-)
if it makes you feel better, we have a drop dead date.
back later. 21:31
ambs hope it wasn't a plane crash :)
later ;)
bacek Good morning, humans 21:39
cotto_work hi bacek 21:40
whiteknight good morning, bacek
cotto_work Can someone test PIRATE on x86? 21:41
bacek cotto_work, not _64? 21:42
GeJ G'Day bacek.
cotto_work nope
bacek G'Day GeJ
GeJ Heya cotto_work, whiteknight.
whiteknight hello GeJ
cotto_work it segfaults violently on my home x86 machine but looks fine here on x64
whiteknight cotto_work: I'll fire up a VM here in a minute 21:43
cotto_work thanks
ambs l8r
bacek cotto_work, pirate's test passed on my box... 21:44
cotto_work all of them? I see a call test failing. 21:45
dalek r: 945d4db | bacek++ | t/post/call.txt:
Update test
cotto_work sneaky 21:46
bacek :) 21:47
cotto_work bacek, did they pass on x86 or x64 for you?
bacek x64
cotto_work ok
I'm hoping that a bit got flipped or something. It doesn't sound like a fun bug to chase down. 21:48
bacek cotto_work, it _was_ fun bug.
cotto_work At least we have somewhat useful pbc tools.
bacek Actually 2 bugs.
1 - LTM
2 - VanillaAllocator 21:49
cotto_work I'm referring to x86 PIRATE segfaulting.
bacek cotto_work, hmm... It is definitely not
cotto_work we'll see how that goes.
ash_ i am both glad and scared of the way C lets you cast random things into other random things 21:51
cotto_work It's all bits anyway. What could possibly go wrong? 21:52
Nothing. That's what.
ash_ lol
darbelo ash_: That's exactly the kind of fear leads to segfaults, which lead to anger, etc.
cotto_work That chain ends in bacon, doesn't it? 21:53
ash_ thinks of that bacon cup filled with cheese i have seen on the interwebs
darbelo Yes, but you can't eat it through the funny helmet.
That's why Vader was always so frustated in the old movies. He couldn't have his bacon. 21:54
ash_ its all bacons fault, thats why they blew up that one planet 21:55
dalek nxed: r522 | julian.notfound++ | trunk/winxedst1.winxed:
minor refactor
22:01
GeJ anyone else experiencing failure in t/compilers/imcc/syn/regressions.t under runcore test? 22:02
error:imcc:build_key:Key too long, increase MAX_KEY_LEN.
mikehh bacek, cotto_work - building/testing parrot on i386 at the moment - will test PIRATE in a bit 22:04
cotto_work thanks
22:04 davidfetter joined
bacek mikehh, thanks 22:07
cotto_work GeJ: that looks like it's working correctly. I suspect it's just the test that needs updating.
22:10 PerlJam joined
cotto_work or not 22:11
22:11 dalek joined
dalek rrot: r47812 | bacek++ | trunk/CREDITS:
One more alias for NotFound
22:11
darbelo I think that test uses a 'too long' key, and then and then checks the error message.
NotFound bacek: thanks 22:14
bacek NotFound, you welcome :) 22:15
karma julian.notfound
purl julian.notfound has karma of 308
bacek karma NotFound
purl notfound has karma of 1105
22:15 Util joined
dalek r: f113ec9 | bacek++ | src/PIR/Grammar.pm:
Improve heredoc parsing slightly.
22:16
r: 2058bdb | bacek++ | src/PIR/Grammar.pm:
<process_heredoc> is token, not rule.
r: 3d5fe39 | bacek++ | TODO:
Remove completed items from TODO.
cotto_work seen pmchaud? 22:17
purl I haven't seen 'pmchaud', cotto_work
cotto_work seen pmichaud?
purl pmichaud was last seen on #parrot 1 days, 19 hours, 44 minutes and 43 seconds ago, saying: ...and I never ran into a place where I needed a Capture or Match to be marked as "does array" [Jun 23 02:32:41 2010]
22:20 pmichaud joined 22:23 tcurtis joined
mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34567), fulltest) at r47811 - Ubuntu 10.04 i386 (g++) 22:23
t/op/exit.t - TODO passed: 6 in testf
dalek r: f456d4a | bacek++ | src/PIR/Actions.pm:
Add/remove comments.
22:27
bacek cotto_work, I updated TODO (and add few todo comments). If you'll be bored tonight - feel free to grab any of them :) 22:29
cotto_work unlikely but possible
thanks
bacek msg pmichaud Any objections on adding terminator:sym<if>, etc to NQP? 22:41
purl Message for pmichaud stored.
pmichaud bacek: do we have an example of something that fails?
nopaste "mikehh" at 192.168.1.3 pasted "Output from PIRATE test - Ubuntu 9.10 i386 (g++)" (122 lines) at nopaste.snit.ch/21558 22:42
bacek pmichaud, $past.push($_.ast) for $<node>;
cotto_work mikehh: that's what I saw too.
pmichaud why would that fail?
that's..... odd.
22:43 treed joined
bacek pmichaud, "Confused at..." 22:43
pmichaud right, but I think it must be something else causing the problem.
bacek nqp _doesn't_ have "postfix" ops.
pmichaud I don't understand. 22:44
dalek rrot: r47813 | tcurtis++ | branches/gsoc_past_optimization (9 files):
Move PAST::Transformer and PAST::Transformer::Dynamic to NQP prepatory to refactor.
bacek pmichaud, Perl6 grammar does have "token terminator:sym<for> { 'for' <.nofun> }". NQP doesn't.
pmichaud sure 22:45
but the reasons for having the terminator don't seem to apply here.
I think the problem is that $_ isn't defined.
bacek It spits "Symbol not defined" in such case. 22:46
pmichaud in particular, the following works:
my $_; my @a; @a.push($_) if 3; 22:47
which tells me that the problem isn't really with handling of statement modifiers
(which is why the terminator:... tokens are there)
so, the only reason that 'for' would be a problem is if nqp somehow sees it as a valid infix operator 22:48
bacek let me check.
pmichaud (and then is unable to parse that) 22:49
aha
the problem is that NQP doesn't have 'for' as a statement modifier.
(most likely because $_ is in the wrong place for that) 22:50
so, we should add statement_mod_loop:sym<for> { .panic("Statement modifier 'for' not implemented") }
bacek Got it. Let me try. 22:52
22:53 Psyche^ joined
bacek pmichaud, yes. Seems to work. I'll try to finish it tonight. 22:54
afk # $dayjob
pmichaud bacek++
I'll be offline for the next few hours (in flight) 22:55
bacek pmichaud, side question - any ideas of best way of implementing .include in pirate?
cotto_work +1 to that whenever you can answer it 22:59
NotFound Finally I'm starting to use git: github.com/NotFound/wasix 23:06
23:09 davidfetter joined
whiteknight bacek: I don't think you can get the semantics of .include identical to IMCC in PIRATE 23:10
darbelo doesn't think we *should* get the semantics of .include identical to IMCC in PIRATE. 23:11
cotto_work whiteknight: it's probably not even a good idea to get the full imcc semantics, but we need something. 23:12
whiteknight the closest you can probably come is to do straight text substitution
darbelo IMCC-style textual inclusion is a pain in the ass.
whiteknight so a two-pass parser, first pass to include file contents together into a single buffer, second pass to parse it
cotto_work but parsing is slow
if it's evitable, we should avoid it 23:13
whiteknight or, you can recurse into a new parser object when you hit .include, and append the resulting tree at the point in the parent file
darbelo And it'll screw up line numbering.
whiteknight that second idea will save line numbering, since each parser only knows about one file
23:13 mikehh joined
darbelo The recursing approach won't work for some of the weird crap IMCC allows. 23:14
cotto_work Sometimes a backwards compatibility break is a feature.
darbelo In this case, it's a very useful feature. 23:15
NotFound Then you need to suggest alternatives, implement them, and deprectae weird usages with enough time.
cotto_work suggestion: "stop doing that"
I have no idea how often the stupid stuff is done. It's probably not often because it's stupid, but you never know. 23:16
NotFound For example .include 'test_more.pir' is used a lot.
cotto_work Crud. You're right. 23:17
NotFound And I think most languages use .include inside namespaces. 23:18
Inside .HLL, I meanƧ
tcurtis Are multi-methods inheritable? 23:21
whiteknight tcurtis: I don't see why not 23:22
...unless you have a failing test case :)
nopaste "tcurtis" at 192.168.1.3 pasted "whiteknight: what a coincidence" (24 lines) at nopaste.snit.ch/21559 23:27
23:29 ash_ joined
cotto_work tcurtis, should B be a subclass of A? 23:33
It works with that change. 23:34
whiteknight tcurtis: should be class B is A, methinks
tcurtis cotto_work: yes. Hmm... indeed it does. Let me see if I can un-minimalize my test case to a point where it fails again.
It looks like it only doesn't inherit if you override one of the multi-method specializations. 23:36
cotto_work That sounds more like a bug.
nopaste "tcurtis" at 192.168.1.3 pasted "For examlpe..." (32 lines) at nopaste.snit.ch/21561 23:37
tcurtis s/examlpe/example/
whiteknight wow, that sucks
purl The rock is now off.
mikehh cotto_work: still get same result for pir/PIRATE latest with parrot r47813 - Ubuntu 9.10 i386 (g++ with --optimize) 23:40
cotto_work mikehh, thanks. 23:41
mikehh i.e. result PASS but backtrace with t/03-pbc/04-call.t
cotto_work I'll be digging into that when I have some tuits.
mikehh heading back to amd64 23:42
cotto_work tcurtis, interestingly if you add a multi for String to B, that's the one that gets called. 23:43
nopaste "cotto" at 192.168.1.3 pasted "let me show you it" (14 lines) at nopaste.snit.ch/21562 23:44
mikehh cotto_work: and with Ubuntu 10.04 i386 (g++ with --optimize)
brb
tcurtis cotto_work: the B or the A one? 23:45
nopaste "cotto" at 192.168.1.3 pasted "let me show you its output" (19 lines) at nopaste.snit.ch/21563
cotto_work B
A already has one 23:46
You seem to have found a bug. 23:48
tcurtis will submit a ticket.
whiteknight tcurtis++ 23:49
23:53 kthakore joined, theory joined 23:55 Psyche^ joined 23:56 mikehh joined