Camelia, the Perl 6 bug

IRC log for #parrot, 2010-06-24

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:00 dalek parrot-linear-algebra: 1f0d9f8 | darbelo++ | setup.pir:
00:00 dalek parrot-linear-algebra: Fix for PLA setup.pir by NotFound++
00:00 dalek parrot-linear-algebra: review: http://github.com/Whiteknight/parrot-linear-algebr​a/commit/1f0d9f839cf3060fe5b4befe98206401c29cc507
00:02 darbelo Oh, crap. Did I just commit to the wrong branch?
00:03 cotto_work If you did, we'll have to point and laugh at you.
00:06 tcurtis mikehh: thanks. By the way, do you know how to fix http://nopaste.snit.ch/21525 ?
00:06 tcurtis mikehh: It's from trunk.
00:08 mikehh tcurtis: looking at it
00:08 purl i guess looking at it is not reading it
00:12 darbelo Amusingly, the change works with both a recent and an old parrot. So the commit is techincally correct :)
00:12 darbelo NotFound++
00:13 whiteknight darbelo: don't worry about branches. Trying to target 2.3.0 with PLA is a losing proposition
00:13 whiteknight nobody else does it
00:13 darbelo I do however need to start paying more attention to what branch I'm working on.
00:14 darbelo whiteknight: Well, the fix is now in teh parrot-head branch as well.
00:14 Coke joined #parrot
00:15 rtward joined #parrot
00:16 whiteknight darbelo++
00:16 whiteknight I will probably just delete tha branch
00:16 darbelo It's NotFound's work. I just committed blindly :)
00:21 mikehh tcurtis: it did not fail the test for me
00:26 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 darbelo Or maybe tags...
00:26 whiteknight darbelo: probably. I'm giving up tracking any particular release for now since it is too much of a hassle
00:28 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.
00:28 darbelo Meanwhile we can keep master working after all of the world-shaking deprecations hit trunk.
00:29 Hunger joined #parrot
00:29 darbelo But I'm not sure we need to go through all that effor for the sake of our few (none?) users yet.
00:39 mikehh tcurtis: had it before to me - usually because I failed to do a make realclean properly, but not always
00:40 tcurtis mikehh: I think that's it. It disappeared when I did a realclean.
00:44 whiteknight darbelo: yeah, that's as good a plan as any.
00:45 whiteknight Ideally I do want to be targetting specific stable releases, because it gives us a stable and reliable platform to develop for
00:45 whiteknight having to track trunk AND add new features is a pain, especially for a small team
00:47 dalek parrot: r47792 | tcurtis++ | branches/gsoc_past_optimization (7 files):
00:47 dalek parrot: POST::Pattern and subclasses added. Not yet tested.
00:47 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47792/
00:48 bacek_at_work tcurtis++ # Optimisations ftw!
00:48 cotto_work +1.  I'm looking forward to seeing how those can be integrated with PIRATE.
00:49 cotto_work 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.
00:50 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.
00:51 bacek_at_work tcurtis, look forward for full implementation :)
00:51 cotto_work I ask because I want to type less when looking at post output.
00:53 cotto_work maybe "postx" or "post2"
00:54 darbelo pst is shorter :)
00:54 cotto_work "" is shortest
00:55 cotto_work though I don't know how --target=  would work
00:55 tcurtis darbelo: not shorter, just offset a few hours.
00:55 * darbelo lives in the PAST.
00:56 * darbelo decides to investigat the porpect of future nutrition.
00:56 cotto_work and perhaps a new keyboard
00:56 bacek_at_work cotto_work, feel free to change it to something else.
00:56 * cotto_work makes evil bikeshedding plans
00:57 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?
00:57 bacek_at_work sorear, how?
00:57 cotto_work I've seen a candy keyboard, but not one of meat.
00:57 sorear create a new method with the same name
00:58 bacek_at_work sorear, than parrot pick old one.
00:58 sorear that sounds like a bad nqp bug
00:59 bacek_at_work sorear, why?
00:59 bacek_at_work it compiles down to .namespace [PCT;HLLCompiler]; .sub "post" :method
01:00 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
01:00 sorear if you don't have that, it's a stretch to call them classes at all
01:00 abqar joined #parrot
01:01 bacek_at_work hmm... I'll try tonight to change postshortcut to post ( if cotto will not beat me ).
01:01 bacek_at_work afk # meetings...
01:01 cotto_work I will.
01:02 cotto_work 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.
01:06 cotto_work clock/.
01:06 cotto_work clock?
01:06 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 /
01:11 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34556), fulltest) at r47792 - Ubuntu 10.04 amd64 (gcc with --optimize)
01:15 tcurtis cotto_work: I got distracted and changed postshortcut to post.
01:19 cotto_work Great!
01:20 dalek pir: 777ddad | (Tyler Leslie Curtis)++ |  (8 files):
01:20 dalek pir: Renamed postshortcut stage to post.
01:20 dalek pir: review: http://github.com/bacek/pir/commit/777​ddad53945e0a043466ce58d9c257f1712f440
01:22 cotto_work tcurtis++
01:22 cotto_work and now we know your sekrit middle name
01:26 tcurtis cotto_work: that's okay. 1/6 of it was already in my email address.
01:32 plobsing joined #parrot
01:36 ash_ ping: plobsing
01:36 purl plobsing is part of our sanity injection framework or probably canadian or mailto:plobsing@gmail.com
01:36 plobsing ash_: pong
01:38 plobsing so as I understand it, your framebuilder is now working more or less, but with new-style signatures.
01:39 plobsing Have you had the chance to implement tests for your new signatures?
01:40 ash_ not yet, i am working to get all of the old tests passing
01:40 ash_ i realized i had a problem with returns, anything larger than an int was being lost
01:40 ash_ (doubles didn't work), but i think i have that worked out now, just rebuilding and testing currently
01:40 plobsing sweet
01:41 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?
01:42 ash_ yeah
01:42 ash_ well, almost all of the old style still means the same thing
01:42 ash_ i catch stuff like 2, 3, 4 and map those to short, int, long
01:43 ash_ we can throw in deprecation warnings easily if we see them
01:43 plobsing so there aren't any ambiguous cases?
01:44 ash_ i just mixed the old stuff into the new stuff for now, so it won't break anything
01:44 ash_ not currently
01:44 ash_ but i haven't implemented i8, i16, i32, i64
01:44 plobsing i32 seems particularily problematic
01:45 ash_ (actually, currently all of the postfix modifiers are not being parsed yet, but for now, those are all optional things
01:45 ash_ )
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?
01:46 plobsing we may have to do that, if only during transition
01:46 plobsing s/if/even if/
01:47 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:48 ash_ 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.
01:49 ash_ alright, maybe i can put in a warning if you use an old style declaration
01:50 plobsing I think it might just be Parrot_warn with a PARROT_WARNINGS_DEPRECATED_FLAG warnclass
01:50 japhb joined #parrot
01:50 tcurtis There's a Parrot_warn_deprecated C function.
01:51 bacek_at_work tcurtis, you can put yourself into parrot's CREDITS file. Than dalek will properly report your nick for github commits.
01:52 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 snarkyboojum joined #parrot
01:52 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:53 ash_ 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:54 plobsing I'm not really sure. We have a libjit one, we have a libffi one, llvm should be pretty cookie cutter.
01:54 plobsing ash_: that is the approach taken by the libjit framebuilder
01:54 plobsing it is easier
01:54 plobsing so yes, do it
01:55 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 ash_ 'we have a libffi one' what did you mean there? libffi stack frame builder?
01:56 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
01:57 ash_ 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:58 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:59 plobsing also, you could have it as an external library to start off so that it doesn't interfere with core's strict C89 policy
02:00 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
02:01 ash_ thats on github, right?
02:01 plobsing there are hooks. didn't you use those?
02:01 plobsing yes it is on github
02:02 ash_ which hooks?
02:02 plobsing http://github.com/plobsing/par​rot-libjit-fb/branches/master
02:02 plobsing IGLOBALS_NCI_FB_CB and IGLOBALS_NCI_FB_UD
02:03 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
02:03 plobsing I saw a lot of changes in src/pmc/nci.pmc. I assumed that was the new signature parser.
02:04 ash_ yeah
02:04 plobsing in my opinion, the libffi stuff has no business in the nci pmc proper if we can help it.
02:05 ash_ um.... where should it of gone?
02:05 ash_ did i do this wrong?
02:05 plobsing no. it works ergo you've done it right
02:05 plobsing I would have put it in a separate file (eg: src/nci/ffi_framebuilder.c)
02:06 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:07 plobsing yeah, but libffi replaces thunks.
02:09 plobsing 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 plobsing more important are tests
02:10 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:11 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:12 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:13 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:14 ash_ got ya, that would be a lot more pluggable
02:16 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 plobsing this is a fair amount of work. have you submitted a CLA?
02:17 ash_ yeah, i have
02:17 ash_ i have access to svn if you want me to make a branch
02:18 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
02:19 ash_ 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
02:20 ash_ is there an easy way to get my changes moved from git to svn?
02:20 ash_ or should i just diff my master and the svn trunk
02:20 plobsing ash_: not sure. I was going to look into that. The diff method is tried and true.
02:20 plobsing but fails at history
02:20 ash_ yeah...
02:20 purl totally dude!
02:21 ash_ to bad there is no downstream branch on github :P
02:22 plobsing there should be a way to convince git-svn to do what we want
02:23 ash_ yeah, i was thinking that might work
02:26 ash_ 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:35 janus joined #parrot
03:04 ash_ is there a way i can test if i have svn write privleges?
03:05 sorear add your name to the CREDITs
03:05 sorear your gonna have to do it eventually
03:05 ash_ good idea
03:10 ash_ nope, it says autherization failed
03:17 dalek parrot: r47793 | tcurtis++ | trunk/CREDITS:
03:17 dalek parrot: Adding myself to CREDITS.
03:17 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47793/
03:17 snarkyboojum joined #parrot
03:20 plobsing ash_: you are using your trac username/password correct?
03:20 ash_ yeah, i can log into trac
03:20 ash_ and yea, i used the same userame and password with svn
03:20 ash_ username*
03:23 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:40 ash_ i can ask coke next time i see him online
03:42 ash_ if you use string_make can you free the char* that you gave to string_make? or does the resulting string need that?
03:49 ash_ never mind, i figured it out, i mixed up two variables
04:04 snarkyboojum joined #parrot
04:04 PerlJam joined #parrot
04:13 JimmyZ joined #parrot
04:22 dalek parrot: r47794 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
04:22 dalek parrot: [pct]:  Add 'exists' and 'delete' pirops to PAST::Compiler.
04:22 dalek parrot: Enable keyed PMCs in pirop signatures.
04:22 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47794/
04:40 cotto Wow.  Youtube has a vuvuzela button now.
04:42 ash_ what is up with all the vuvuzela stuff
04:43 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 :)
04:43 sorear a vuvuzela...button.
04:44 cotto I wonder why that didn't get changed.
04:45 cotto I'm looking forward to PIRATE being self-hosting.
04:45 cotto That'll be fun.
04:46 cotto Or rather, that'll
04:46 cotto b
04:46 cotto e
04:46 cotto
04:46 cotto f
04:46 cotto u
04:46 cotto n
04:47 cotto .
04:48 ash_ are you calling it slow :P
04:51 cotto yes
04:51 * plobsing now thinks that cotto knows 2 orthogonal definitions of fun
04:52 cotto gge is in a similar position
04:52 tcurtis gge?
04:52 purl gge is in a similar position
04:53 bacek_at_work cotto, for self-hosting we need .include working...
04:53 cotto masak's Perl 6 implementaion in perl 6
04:53 cotto bacek_at_work, yes
04:54 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:55 plobsing ash_: are you getting bitten by cacheing by chance?
04:56 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:57 plobsing can you nopaste a small example that demonstrates the issue against origin/master ?
04:58 ash_ hmm, no, looking at it, i think its floats specifically that are not working, http://gist.github.com/451000 is the one that i am trying to fix (its the first one thats failing)
04:59 sorear issues with the evaluation stack?
05:00 ash_ issues with my nci changes
05:02 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...
05:03 ash_ oops, i pasted the wrong one in there, i just updated the gist http://gist.github.com/451000
05:04 cotto Why do you want to avoid it for .include?  file/line numbers?
05:05 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.
05:06 ash_ you don't have to parse twice if you want macro support... rakudo is single pass parsing and it has macro's
05:07 bacek_at_work ash_, it's not about macro. It's .include.
05:08 LoganLK joined #parrot
05:08 ash_ oh sorry, i misread
05:08 plobsing I still don't see why you need to parse it twice
05:08 bacek_at_work <<"HEREDOC"; .include "some.pir"; HEREDOC
05:09 plobsing oh yeah. that's what makes IMCC's tokenizer pretty hairy.
05:11 plobsing but doesn't the same hold true for macros?
05:12 bacek_at_work plobsing, nope. We can expand macros in-place.
05:12 bacek_at_work we just need way to switch NQP to parse different file preserving current state
05:12 bacek_at_work (for .include)
05:12 plobsing <<"HEREDOC"; .macro not_a_macro() ... HEREDOC
05:13 bacek_at_work heredocs parsed as strings in pirate.
05:13 bacek_at_work if we want "preprocessor" for .include we have to _parse_ it.
05:13 bacek_at_work that's why we have to parse twice.
05:19 plobsing macros are essentially includes on stringhandles
05:23 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:24 tcurtis 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 tcurtis I think.
05:25 plobsing except macros are implemented as includes of string in IMCC allowing for all sorts of nast^Wfun things.
05:26 plobsing I'm not saying includes are easy, I'm saying that macros are equivalent to includes
05:27 cotto I wonder how many things would break if pir files were required to have some kind of self-containedness.
05:27 cotto i.e. no partial subs
05:28 dalek parrot: r47795 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
05:29 * cotto kicks dalek
05:29 dalek parrot: Make sure we don't try to lookbeind for the first char in a string.
05:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47795/
05:29 dalek parrot: r47796 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir:
05:29 dalek parrot: [pct]:  Remove debugging 'say'
05:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47796/
05:29 dalek parrot: r47797 | pmichaud++ | failed to fetch changeset:
05:29 dalek parrot: [nqp]:  Update bootstrap files with regex, nqp-setting improvements.
05:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47797/
05:29 cotto that was odd
05:32 dalek nqp-rx: 9157c78 | pmichaud++ |  (2 files):
05:32 dalek nqp-rx: Allow hyphens and single-quotes in subrule calls.
05:32 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/9​157c78be99aa186f8fdf54d81e8f46d45fc677c
05:32 dalek nqp-rx: f0bed9b | pmichaud++ |  (2 files):
05:32 dalek nqp-rx: Allow hyphen and single-quotes in NQP identifiers.
05:32 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/f​0bed9b2b89dd8ddf8c66de11f1128fcb42b75ad
05:32 dalek nqp-rx: a3d5c5b | pmichaud++ | build/PARROT_REVISION:
05:32 dalek nqp-rx: Bump PARROT_REVISION to get debugging fix.
05:32 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a​3d5c5bf525959fba3db3442870de269a706b09f
05:32 dalek nqp-rx: ebaf06c | pmichaud++ |  (2 files):
05:32 dalek nqp-rx: Add ResizablePMCArray .delete and .exists .
05:32 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/e​baf06c26e76302a25047f9ff5865802c4781b15
05:32 dalek nqp-rx: 4ee17c4 | pmichaud++ | src/stage0/ (4 files):
05:32 dalek nqp-rx: Update bootstrap.
05:32 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/4​ee17c43ffd3a7cbd378918c7d700fcb25649d69
05:45 dalek parrot: r47798 | tcurtis++ | branches/gsoc_past_optimization (9 files):
05:45 dalek parrot: Rewrite PAST::Walker and PAST::Walker::Dynamic in NQP. Preparing for refactor.
05:45 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47798/
05:54 cotto bacek_at_work, why doesn't namespace_key include the square brackets?
05:57 bacek_at_work cotto, nope. But we can always change Grammar to include it.
05:59 cotto ok
06:00 cotto It's an easy change.  I was just curious if it was intentional.
06:02 bacek_at_work cotto, nope. It just happened.
06:18 dalek parrot: r47799 | NotFound++ | trunk/t/pmc/orderedhashiterator.t:
06:18 dalek parrot: fix silly omission: wrote a test sub but forgot to call it
06:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47799/
06:18 dalek parrot: r47800 | plobsing++ | branches/dynop_mapping/compilers/imcc/pbc.c:
06:18 dalek parrot: update sub lookup fixup code
06:18 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47800/
06:35 dalek parrot: r47801 | NotFound++ | trunk/t/pmc/filehandle.t:
06:35 dalek parrot: some FileHandle isatty tests
06:35 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47801/
06:50 hercynium joined #parrot
07:06 dalek pir: 19fe10a | cotto++ |  (2 files):
07:06 dalek pir: use the post stage instead of postshortcut
07:06 dalek pir: review: http://github.com/bacek/pir/commit/19f​e10a1e2bd0083e99122f0c466be61fdec9ea2
07:06 dalek pir: 16fa680 | cotto++ | src/PIR/Grammar.pm:
07:06 dalek pir: make namespace_key include circumfix square brackets
07:06 dalek pir: review: http://github.com/bacek/pir/commit/16f​a68095f0b8f3ff8843886779d885c4877e1d9
07:08 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:11 cotto quite sensible
07:11 cotto It's too late for me to start on it now though.
07:14 bacek_at_work cotto, no worries
07:15 cotto well, it may be too late.  We'll see.
07:15 bacek_at_work :)
07:16 TiMBuS joined #parrot
07:16 cotto what about  exists $I0, $P1['x'] vs $I0 = exists $P1['x'] ?
07:17 bacek_at_work just create 2 rules?
07:17 cotto eew
07:18 cotto but it's workable
07:18 bacek_at_work afk # bossess
07:18 cotto sure
07:18 cotto nafk #no bosses
07:27 cotto I'm done.
08:05 particle joined #parrot
08:26 dalek pir: 72c3126 | cotto++ |  (3 files):
08:26 dalek pir: add code and tests for explicit keyed set/get
08:26 dalek pir: review: http://github.com/bacek/pir/commit/72c​31260f1c013a09f3f79fc049db0184e681230
08:29 dalek parrot: r47802 | plobsing++ | branches/dynop_mapping/src/embed.c:
08:29 dalek parrot: paper over Parrot_run_native issues
08:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47802/
08:59 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.
09:00 dalek pir: 92dc02d | cotto++ |  (3 files):
09:00 dalek pir: add *broken* code and tests for normal and sugared delete, exists and defined
09:00 dalek pir: review: http://github.com/bacek/pir/commit/92d​c02d87b19435e2649dee3056669f7a64838b0
09:44 nopaste "moritz" at 192.168.1.3 pasted "PAST optimization usage error (for tcurtis++)" (11 lines) at http://nopaste.snit.ch/21531
09:45 moritz purl: msg tcurtics http://nopaste.snit.ch/21531 is what I get from my attempt at revision 47802
09:45 purl Sorry, I've never seen tcurtics before.
09:45 moritz purl: msg tcurtis http://nopaste.snit.ch/21531 is what I get from my attempt at revision 47802
09:45 purl Message for tcurtis stored.
10:08 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 #parrot
10:26 dalek pir: 15d8b8a | bacek++ | src/PIR/Grammar.pm:
10:26 dalek pir: Use <namespace_key> instead of <pir_key> in <op_params>
10:26 dalek pir: review: http://github.com/bacek/pir/commit/15d​8b8aae80d327c8293846e534e56b025b34105
10:26 dalek pir: 0375344 | bacek++ | src/PIR/Grammar.pm:
10:26 dalek pir: Tune 'LTM' manually
10:26 dalek pir: review: http://github.com/bacek/pir/commit/037​53442feb57a38655e813462e013ee4153be3b
10:32 ambs joined #parrot
10:34 Coke joined #parrot
10:38 JimmyZ joined #parrot
10:39 JimmyZ msg darbelo in r47795, do you mean pos == 0 ?
10:39 purl Message for darbelo stored.
10:42 lucian joined #parrot
10:49 dalek pir: fb0e64a | bacek++ | src/POST/VanillaAllocator.pm:
10:49 dalek pir: Fix VanillaAllocator to properly initialize %type2idx
10:49 dalek pir: review: http://github.com/bacek/pir/commit/fb0​e64a746302529fe17f2f3267c08db7b402708
10:49 dalek pir: e7c3712 | bacek++ | t/pbc/basic.txt:
10:49 dalek pir: Fix test
10:49 dalek pir: review: http://github.com/bacek/pir/commit/e7c​3712a8f1c39cd0f56b738e6075ad6b4a23ebd
11:06 dalek pir: 71e6497 | bacek++ | t/ (3 files):
11:06 dalek pir: Split keys tests into separate files
11:06 dalek pir: review: http://github.com/bacek/pir/commit/71e​6497413cfab44a5e248cb0b68a740df8762c1
11:06 dalek pir: 9b47396 | bacek++ |  (4 files):
11:06 dalek pir: Remove Key.keys, use children instead
11:06 dalek pir: review: http://github.com/bacek/pir/commit/9b4​7396f321afe6593f05f8ec18a1c276ac0bf4d
11:07 rtward joined #parrot
11:13 dalek parrot: r47803 | mikehh++ | trunk/config/gen/makefiles/root.in:
11:13 dalek parrot: add generated_hello.pbc to examples-clean
11:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47803/
11:13 dalek parrot: r47804 | mikehh++ | trunk:
11:13 dalek parrot: add generated_hello.pbc to svn:ignore
11:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47804/
11:23 cognominal joined #parrot
11:32 bacek msg cotto I finished Keys.Switching to PCC. Feel free to grab anything from TODO list.
11:32 purl Message for cotto stored.
11:34 dalek pir: a6284af | bacek++ |  (5 files):
11:34 dalek pir: Implement optimization of single int Keys
11:34 dalek pir: review: http://github.com/bacek/pir/commit/a62​84afcc57c3b43d81a03eb60c515902ae969e2
11:47 Coke joined #parrot
12:02 lucian_ joined #parrot
12:02 dalek parrot: r47805 | NotFound++ | trunk/src/pmc/handle.pmc:
12:02 dalek parrot: fix stupid mistake in Handle.isatty
12:02 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47805/
12:07 dalek nqp-rx: a915b78 | bacek++ |  (2 files):
12:07 dalek nqp-rx: Add bitwise operators
12:07 dalek nqp-rx: review: http://github.com/perl6/nqp-rx/commit/a​915b7814fcb9c913ac0eb2b1c95c4487bcc7c2d
12:09 whiteknight joined #parrot
12:12 khairul joined #parrot
12:19 dalek parrot: r47806 | khairul++ | branches/gsoc_instrument (3 files):
12:19 dalek parrot: Added test for loadlib event.
12:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47806/
12:26 bluescreen joined #parrot
12:29 whiteknight good morning, #parrot
12:32 bkuhn joined #parrot
12:50 dalek tracwiki: v136 | gerd++ | Languages
12:50 dalek tracwiki: http://trac.parrot.org/parrot/wiki/L​anguages?version=136&amp;action=diff
13:03 JimmyZ joined #parrot
13:24 dalek parrot: r47807 | darbelo++ | branches/gsoc_nfg/src/string/encoding/nfg.c:
13:24 dalek parrot: Add missing '='.
13:24 dalek parrot: Make a note to stop committing at 2:30 am.
13:24 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47807/
13:26 dalek rakudo: 18682c8 | pmichaud++ | build/PARROT_REVISION:
13:26 dalek rakudo: Bump PARROT_REVISION.
13:26 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/1​8682c8c0208dc21ce9c864e1e03ef37b323810c
13:38 dalek pir: 0874100 | bacek++ |  (3 files):
13:38 dalek pir: Use RPA instead of PCT::Node to store params
13:38 dalek pir: review: http://github.com/bacek/pir/commit/087​410084febdf719215178a4215dce1bd545d50
13:38 dalek pir: d8cbfd6 | bacek++ |  (2 files):
13:38 dalek pir: Start building signatures
13:38 dalek pir: review: http://github.com/bacek/pir/commit/d8c​bfd62b65933a225dd2638907f3079572ccac1
13:38 dalek pir: 65022d3 | bacek++ |  (2 files):
13:38 dalek pir: More tests for build_sig. Fix handling multiple results from build_single_arg
13:38 dalek pir: review: http://github.com/bacek/pir/commit/650​22d32a8418bdeb14da4490a2ae68ae1bf9471
13:38 dalek pir: 8a8efe3 | bacek++ |  (2 files):
13:38 dalek pir: Use proper constant flag.
13:38 dalek pir: review: http://github.com/bacek/pir/commit/8a8​efe35d22e73eb17e5e6833ebb09286ea9897e
13:38 dalek pir: c555784 | bacek++ | t/pbc/call.txt:
13:38 dalek pir: Add test for simple sub invocation with sc param
13:38 dalek pir: review: http://github.com/bacek/pir/commit/c55​5784ceed887c4926f570a97e8997c08d133c9
13:38 dalek pir: 9ac2e47 | bacek++ | src/POST/Compiler.pm:
13:38 dalek pir: Handle Sub's .params
13:38 dalek pir: review: http://github.com/bacek/pir/commit/9ac​2e472837b38e5ca1103eade88e12e30a99b80
13:38 dalek pir: 8074806 | bacek++ | src/PIR/ (2 files):
13:38 dalek pir: Sub names can be bare <ident>
13:38 dalek pir: review: http://github.com/bacek/pir/commit/807​480630bb54991c22a5aee9179aeb9dbd52b1a
13:38 dalek pir: 8cb6e12 | bacek++ | src/POST/Compiler.pm:
13:39 dalek pir: Die with meaningfull message on NYI calls.
13:39 dalek pir: review: http://github.com/bacek/pir/commit/8cb​6e1291a3325968869fd79b73dfda11e44d36d
13:39 dalek pir: 93d66b4 | bacek++ | src/POST/Compiler.pm:
13:39 plobsing joined #parrot
13:39 dalek pir: Awful untested ugly version of .return() handling
13:39 dalek pir: review: http://github.com/bacek/pir/commit/93d​66b419728abd1dd0135a67e3cafee32842ada
13:39 whiteknight bacek++
13:44 bacek whiteknight, good morning :)
13:44 whiteknight hello bacek. Good work last night
13:44 whiteknight or, this morning.
13:44 whiteknight or whenever the hell it is where you are
13:44 dalek pir: 8d78a43 | bacek++ | t/pbc/call.txt:
13:44 dalek pir: Add test for multiple args/params.
13:44 dalek pir: review: http://github.com/bacek/pir/commit/8d7​8a43a285b1bd836d5bf0a8d575cd5630c0e86
13:44 bacek It's almost tomorrow here :)
13:45 whiteknight tomorrow? but today just started!
13:47 bacek whiteknight, no way!
13:48 Coke joined #parrot
13:49 whiteknight there's only one reasonable answer: One of us is moving at the speed of light and time is dilating
13:53 bacek It's all relative.
13:53 bacek Anyway, enough for tonight. I've got basic param passing.
13:58 dalek pir: 5a69e7c | bacek++ | src/POST/Compiler.pm:
13:58 dalek pir: DRY: Factor out common build_pcc_call subroutine.
13:58 dalek pir: review: http://github.com/bacek/pir/commit/5a6​9e7c7445aa20d697a038f6775db20dee42893
13:59 bacek Hooray! Handling PCC returns is also works!
14:00 bacek It was easy.
14:00 bacek And it's tomorrow now
14:00 bubaflub joined #parrot
14:00 bacek Time for recharge. Good night, humans.
14:02 whiteknight goodnight bacek
14:03 dalek pir: f8e3240 | bacek++ |  (2 files):
14:03 dalek pir: Handle PCC call returns
14:04 dalek pir: review: http://github.com/bacek/pir/commit/f8e​3240295d842b7276a20c34522bcf2487c56be
14:05 LoganLK joined #parrot
14:13 dalek parrot: r47808 | mikehh++ | trunk/MANIFEST.SKIP:
14:13 dalek parrot: re-generate MANIFEST.SKIP
14:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47808/
14:15 dalek rakudo: bf5bbd4 | pmichaud++ | src/core/ (2 files):
14:15 dalek rakudo: Turn Array.exists into List.exists, write it a bit cleaner.
14:15 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/b​f5bbd4ec5cf399878b786797b4cf1ca98250c0b
14:15 dalek rakudo: 7e3ddca | pmichaud++ | src/core/EnumMap.pm:
14:15 dalek rakudo: Redo EnumMap.exists .
14:15 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/7​e3ddca4adbe14f3a55fd9912b09e2ca1f151981
14:29 dalek parrot: r47809 | NotFound++ | trunk/t/pmc/stringhandle.t:
14:29 dalek parrot: test for StringHandle.isatty TT #1689
14:29 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47809/
14:32 rtward joined #parrot
14:33 spinclad joined #parrot
14:43 ash_ joined #parrot
14:45 Andy joined #parrot
14:54 particle joined #parrot
15:05 particle joined #parrot
15:06 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)
15:12 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:16 * mikehh need to reboot - brb
15:17 whiteknight ash_: STRING->strstart is not null-terminated
15:18 ash_ no, when i call Parrot_str_to_cstring it literally puts "(null): into the cstring
15:19 whiteknight well, that doesn't seem right
15:19 whiteknight unless a_string is "(null)"
15:21 ash_ yea... i think i am doing something wrong, let me double check my uses of the variable
15:22 whiteknight ok
15:26 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:28 ash_ 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:29 moritz well, the type encodes size information too
15:30 ash_ yup, i think thats the problem i am running into
15:30 moritz that's why derferencing a void* doesn't work
15:30 arnsholt I think gdb tries to be helpful if you cast it to (char*) and print it
15:30 arnsholt Or char[100] or something (which would be smarter)
15:30 ash_ the value -555555.555500 as a C double is getting translated via Parrot_pcc_build_call_from_c_args into 6.95322297564109e-310
15:30 ash_ it seems to only happen with doubles though
15:30 ash_ int's pass through fine
15:31 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));)
15:32 ash_ thats the call thats not working correctly
15:32 ash_ 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...
15:33 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
15:36 arnsholt Strange.
15:36 purl But true.
15:36 arnsholt ^^
15:37 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 =)
15:37 ash_ *compiling*
15:41 mikehh joined #parrot
15:53 ash_ yeah its my bad casting
15:54 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 #parrot
16:23 ash_ whiteknight: ping
16:24 whiteknight ash_: pong
16:24 ash_ i have a question i think you could help me with
16:25 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
16:26 ash_ which is currently, if i am not mistaken, a while loop that iterates bytecode
16:26 ash_ 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)
16:28 ash_ 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:29 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"
16:30 whiteknight ash_: Like a direct-threaded system?
16:31 ash_ i don't know what direct-threaded means
16:31 NotFound ash_: looks like you are trying to build a jit compiler.
16:31 ash_ NotFound: yes, using the llvm
16:31 ash_ for JIT and AOT compiling bytecode into native code
16:31 ash_ for (hopefully) a speed boost
16:31 ash_ thats what I wanted to do for the GSoC
16:32 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)
16:32 whiteknight ash_: http://www.cs.toronto.edu/sy​slab/pubs/demkea_context.ps
16:32 ash_ NotFound: there were 2 parts of my GSoC, nci was only part of it
16:32 whiteknight that's about "context threading", but gives lots of cool information about dispatch and defines direct threading
16:33 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.
16:34 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
16:34 whiteknight basically, you unwind the runloop
16:34 ash_ yeah
16:34 whiteknight Context Threading, which they describe in the paper, is similar but supposedly better yada yada yada
16:35 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 ash_ 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
16:37 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
16:37 whiteknight so, same techniques, but different people call them diffrent things
16:38 gbacon joined #parrot
16:41 darbelo whiteknight: you can get a win by dispensing with the functions and dispatchig to labels (in compilers that support it)
16:41 darbelo It's what the old cgp runcore did IIRC.
16:42 whiteknight darbelo: not necessarily. Keep in mind that a function call is basically just a jump, plus a stack frame
16:42 whiteknight a good optimizing compiler will see that every op has the same function signature, so we can avoid all those push/pops
16:43 whiteknight 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
16:44 ash_ 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
16:44 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 :)
16:45 darbelo numbers*
16:45 cotto ~~
16:45 darbelo ash_: Or make sure your mentor akys the 'anything else' first :)
16:46 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
16:46 whiteknight I would be surprised though, CGP is horrible on the branch predictor
16:47 whiteknight ash_: Well, what do you mean by "stack frame builder"?
16:47 ash_ the stuff i described above with the llvm unrolling the runloop
16:48 whiteknight okay. So then your proposal was worded extremely wrong then :)
16:48 ash_ yup
16:49 whiteknight ash_: What you're talking about doing now is adding an LLVM-based direct- or context- threaded runcore
16:49 ash_ yea
16:55 ash_ brb lunch &
16:55 whiteknight http://en.wikipedia.org/wiki/Threaded_code
16:57 whiteknight it's confusing that they refer to this whole mess as "threading"
16:58 atrodo very
17:06 Coke joined #parrot
17:08 cotto bacek, I'm off to work.  Do you have any idea what's causing the segfaults in the pbc key tests?
17:12 dalek pir: dcea987 | cotto++ | src/POST/Key.pm:
17:12 dalek pir: expand docs to make POST::Key a little less mysterious
17:12 dalek pir: review: http://github.com/bacek/pir/commit/dce​a987fb1555fea36409231b893abbc2a9c910e
17:13 dalek parrot: r47810 | chromatic++ | trunk/src/pmc/class.pmc:
17:13 dalek parrot: [PMC] Sped up Class PMC's isa vtable.
17:13 dalek parrot: Instead of delegating to isa_pmc, walking the flattened MRO is sufficient for
17:13 dalek parrot: testing Class identity.  This improves the Rakudo startup benchmark by 5% and
17:13 dalek parrot: should improve all Rakudo programs similarly.
17:13 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47810/
17:14 whiteknight chromatic++ # nice optimization!
17:31 cotto_work good mroning
17:32 cotto_work or at least slightly faster ;)
17:37 ash_ whiteknight: so, do you think, after i talk with plobsing, anyone would object to my changing my proposal a bit?
17:38 hercynium joined #parrot
17:39 moritz ash_: in general changes to gsoc proposals are OK if you have good reasons, and support from your mentor
17:42 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:43 ash_ well, the gist of it is to just unwind the bytecode into a main function that the llvm executes
17:44 ash_ 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?
17:45 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 ash_ dumping the llvm-ir isn't that hard once its made
17:49 ash_ 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:50 cotto_work Interesting.  I don't get a big explodey segfault on my work machine.
17:55 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:58 ash_ 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
18:01 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.
18:02 ash_ Coke: you got my cla didn't you?
18:02 Coke ash_: full name?
18:02 purl rumour has it full name is Web Developer 0.8 extension
18:02 ash_ John Harrison
18:02 ash_ might be John Lawrence Harrison
18:03 Coke ash_: yup, we have it.
18:03 Coke why, what's up?
18:04 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:05 Coke what is your trac id?
18:06 ash_ ash
18:07 Coke ash: try now.
18:12 ash_ yah, that works, thanks
18:14 Coke np
18:19 dalek parrot: r47811 | ash++ | trunk/CREDITS:
18:19 dalek parrot: Adding my name to the CREDITS, to test if i can commit
18:19 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47811/
18:21 whiteknight ash++
18:23 whiteknight opbots trust ash_
18:23 slavorgn But I already trust ash_
18:23 slavorg But I already trust ash_
18:23 whiteknight opbots help
18:23 slavorgn I'm slavorg, an op-bot.Commands: trust, distrust, believe, disbelieve, leave, join. See also http://jerakeen.org/programming/slavorg
18:23 slavorg I'm slavorg, an op-bot.Commands: trust, distrust, believe, disbelieve, leave, join. See also http://jerakeen.org/programming/slavorg
18:24 slavorg left #parrot
18:24 ash_ they must be twins
18:24 atrodo Haha, that link doesn't work
18:24 slavorg joined #parrot
18:30 theory joined #parrot
18:32 whiteknight that link for slavorg is dead. Looking through the website, there is no mention of slavorg or the code that runs it
18:42 sorear yeah I can't find any documentation on slavorg
18:42 sorear what do you want me to do?
18:43 sorear ah
18:43 sorear the command you wanted was "opbots names"
18:49 particle joined #parrot
18:49 * Andy plugs away at rebuilding his dev server
18:52 * cotto_work looks at his loaned copy of the CLI Annotated Standard.
18:55 patspam joined #parrot
18:57 rtward_ joined #parrot
18:57 sorear whatfor?
18:57 purl i think whatfor is logout if the session isn't cleared?
18:59 cotto_work steal the good ideas for Lorito
19:01 sorear meanwhile, I'm implementing Perl 6 on the CLI itself.
19:09 gbacon joined #parrot
19:11 rtward joined #parrot
19:39 theory joined #parrot
20:05 Psyche^ joined #parrot
20:07 ash_ sorear: does your code with with mono too? (isn't mono CLI for like linux?)
20:08 dmalcolm joined #parrot
20:08 whiteknight joined #parrot
20:18 sorear ash_: It's being developed on mono.  No clue if it works on .NET
20:18 ash_ ah
20:18 ash_ okay, thats cool
20:19 darbelo I find the idea of develping on the clone, without knowing wether it'll work on the original kind of amusing.
20:20 sorear the clone itself is a suprisingly nice piece of software
20:21 sorear for something that's essentially a clone of a clone of the Sun JVM, it uses 4x less memory than the original
20:22 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.
20:23 darbelo Put another way: C has a standard too.
20:24 ash_ lol true
20:24 ash_ 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"
20:25 darbelo Hey, even scheme has a (Revised revised revised revised revised) standard too!
20:28 ash_ javascript has a number of standards
20:28 ash_ that one, amazingly, runs fairly consistently, although the DOM spec sucks
20:29 darbelo Most of the time the problem is not the standard, but what it leaves out.
20:31 GeJ Bonjour everyone.
20:33 cotto_work good day, GeJ
20:35 dalek winxed: r521 | julian.notfound++ | trunk/winxedst1.winxed:
20:35 dalek 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:35 dalek winxed: needed
20:35 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=521
20:37 patspam joined #parrot
20:44 ambs joined #parrot
20:46 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 #parrot
20:56 spinclad joined #parrot
21:25 mikehh joined #parrot
21:30 Coke ambs: I said I'd send you an email! calm down!
21:30 Coke ;)
21:30 * ambs tries to calm down.
21:30 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. =-)
21:30 Coke if it makes you feel better, we have a drop dead date.
21:31 Coke back later.
21:31 ambs hope it wasn't a plane crash :)
21:31 ambs later ;)
21:39 bacek Good morning, humans
21:40 cotto_work hi bacek
21:40 whiteknight good morning, bacek
21:41 cotto_work Can someone test PIRATE on x86?
21:42 bacek cotto_work, not _64?
21:42 GeJ G'Day bacek.
21:42 cotto_work nope
21:42 bacek G'Day GeJ
21:42 GeJ Heya cotto_work, whiteknight.
21:42 whiteknight hello GeJ
21:42 cotto_work it segfaults violently on my home x86 machine but looks fine here on x64
21:43 whiteknight cotto_work: I'll fire up a VM here in a minute
21:43 cotto_work thanks
21:43 ambs l8r
21:44 bacek cotto_work, pirate's test passed on my box...
21:45 cotto_work all of them?  I see a call test failing.
21:45 dalek pir: 945d4db | bacek++ | t/post/call.txt:
21:45 dalek pir: Update test
21:45 dalek pir: review: http://github.com/bacek/pir/commit/945​d4db6365fd577f22acd17009b3d13543bbaf1
21:46 cotto_work sneaky
21:47 bacek :)
21:47 cotto_work bacek, did they pass on x86 or x64 for you?
21:47 bacek x64
21:47 cotto_work ok
21:48 cotto_work 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.
21:48 cotto_work At least we have somewhat useful pbc tools.
21:48 bacek Actually 2 bugs.
21:48 bacek 1 - LTM
21:49 bacek 2 - VanillaAllocator
21:49 cotto_work I'm referring to x86 PIRATE segfaulting.
21:49 bacek cotto_work, hmm... It is definitely not
21:49 cotto_work we'll see how that goes.
21:51 ash_ i am both glad and scared of the way C lets you cast random things into other random things
21:52 cotto_work It's all bits anyway.  What could possibly go wrong?
21:52 cotto_work Nothing.  That's what.
21:52 ash_ lol
21:52 darbelo ash_: That's exactly the kind of fear leads to segfaults, which lead to anger, etc.
21:53 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
21:53 darbelo Yes, but you can't eat it through the funny helmet.
21:54 darbelo That's why Vader was always so frustated in the old movies. He couldn't have his bacon.
21:55 ash_ its all bacons fault, thats why they blew up that one planet
22:01 dalek winxed: r522 | julian.notfound++ | trunk/winxedst1.winxed:
22:01 dalek winxed: minor refactor
22:01 dalek winxed: review: http://code.google.com/p/w​inxed/source/detail?r=522
22:02 GeJ anyone else experiencing failure in  t/compilers/imcc/syn/regressions.t  under runcore test?
22:02 GeJ error:imcc:build_key:Key too long, increase MAX_KEY_LEN.
22:04 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 #parrot
22:07 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 #parrot
22:11 cotto_work or not
22:11 dalek joined #parrot
22:11 dalek parrot: r47812 | bacek++ | trunk/CREDITS:
22:12 dalek parrot: One more alias for NotFound
22:12 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47812/
22:12 darbelo I think that test uses a 'too long' key, and then and then checks the error message.
22:14 NotFound bacek: thanks
22:15 bacek NotFound, you welcome :)
22:15 bacek karma julian.notfound
22:15 purl julian.notfound has karma of 308
22:15 bacek karma NotFound
22:15 purl notfound has karma of 1105
22:15 Util joined #parrot
22:16 dalek pir: f113ec9 | bacek++ | src/PIR/Grammar.pm:
22:16 dalek pir: Improve heredoc parsing slightly.
22:16 dalek pir: review: http://github.com/bacek/pir/commit/f11​3ec9b4f44d07b9d14ebcb26f889f17b65246e
22:16 dalek pir: 2058bdb | bacek++ | src/PIR/Grammar.pm:
22:16 dalek pir: <process_heredoc> is token, not rule.
22:16 dalek pir: review: http://github.com/bacek/pir/commit/205​8bdba526f98bcc26f93e6dd43d6d1559131e3
22:16 dalek pir: 3d5fe39 | bacek++ | TODO:
22:16 dalek pir: Remove completed items from TODO.
22:16 dalek pir: review: http://github.com/bacek/pir/commit/3d5​fe39235f464a74ce5fc151b5a16ec1ec5fead
22:17 cotto_work seen pmchaud?
22:17 purl I haven't seen 'pmchaud', cotto_work
22:17 cotto_work seen pmichaud?
22:17 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 #parrot
22:23 tcurtis joined #parrot
22:23 mikehh All tests PASS (pre/post-config, make corevm/make coretest, smoke (#34567), fulltest) at r47811 - Ubuntu 10.04 i386 (g++)
22:23 mikehh t/op/exit.t - TODO passed:   6 in testf
22:27 dalek pir: f456d4a | bacek++ | src/PIR/Actions.pm:
22:27 dalek pir: Add/remove comments.
22:27 dalek pir: review: http://github.com/bacek/pir/commit/f45​6d4ae93b122019a35db46264003ca537339dd
22:29 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
22:29 cotto_work thanks
22:41 bacek msg pmichaud Any objections on adding terminator:sym<if>, etc to NQP?
22:41 purl Message for pmichaud stored.
22:41 pmichaud bacek: do we have an example of something that fails?
22:42 nopaste "mikehh" at 192.168.1.3 pasted "Output from PIRATE test - Ubuntu 9.10 i386 (g++)" (122 lines) at http://nopaste.snit.ch/21558
22:42 bacek pmichaud, $past.push($_.ast) for $<node>;
22:42 cotto_work mikehh: that's what I saw too.
22:42 pmichaud why would that fail?
22:42 pmichaud that's..... odd.
22:43 treed joined #parrot
22:43 bacek pmichaud, "Confused at..."
22:43 pmichaud right, but I think it must be something else causing the problem.
22:43 bacek nqp _doesn't_ have "postfix" ops.
22:44 pmichaud I don't understand.
22:44 dalek parrot: r47813 | tcurtis++ | branches/gsoc_past_optimization (9 files):
22:44 dalek parrot: Move PAST::Transformer and PAST::Transformer::Dynamic to NQP prepatory to refactor.
22:44 dalek parrot: review: http://trac.parrot.org/parrot/changeset/47813/
22:44 bacek pmichaud, Perl6 grammar does have "token terminator:sym<for>    { 'for'    <.nofun> }". NQP doesn't.
22:45 pmichaud sure
22:45 pmichaud but the reasons for having the terminator don't seem to apply here.
22:45 pmichaud I think the problem is that $_ isn't defined.
22:46 bacek It spits "Symbol not defined" in such case.
22:46 pmichaud in particular, the following works:
22:47 pmichaud my $_; my @a;  @a.push($_) if 3;
22:47 pmichaud which tells me that the problem isn't really with handling of statement modifiers
22:47 pmichaud (which is why the terminator:... tokens are there)
22:48 pmichaud 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.
22:49 pmichaud (and then is unable to parse that)
22:49 pmichaud aha
22:49 pmichaud the problem is that NQP doesn't have 'for' as a statement modifier.
22:50 pmichaud (most likely because $_ is in the wrong place for that)
22:50 pmichaud so, we should add  statement_mod_loop:sym<for> { .panic("Statement modifier 'for' not implemented") }
22:52 bacek Got it. Let me try.
22:53 Psyche^ joined #parrot
22:54 bacek pmichaud, yes. Seems to work. I'll try to finish it tonight.
22:54 bacek afk # $dayjob
22:54 pmichaud bacek++
22:55 pmichaud 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?
22:59 cotto_work +1 to that whenever you can answer it
23:06 NotFound Finally I'm starting to use git: http://github.com/NotFound/wasix
23:09 davidfetter joined #parrot
23:10 whiteknight bacek: I don't think you can get the semantics of .include identical to IMCC in PIRATE
23:11 * darbelo doesn't think we *should* get the semantics of .include identical to IMCC in PIRATE.
23:12 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
23:12 darbelo IMCC-style textual inclusion is a pain in the ass.
23:12 whiteknight so a two-pass parser, first pass to include file contents together into a single buffer, second pass to parse it
23:12 cotto_work but parsing is slow
23:13 cotto_work 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
23:13 darbelo And it'll screw up line numbering.
23:13 whiteknight that second idea will save line numbering, since each parser only knows about one file
23:13 mikehh joined #parrot
23:14 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.
23:15 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.
23:15 cotto_work suggestion: "stop doing that"
23:16 cotto_work 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.
23:17 cotto_work Crud.  You're right.
23:18 NotFound And I think most languages use .include inside namespaces.
23:18 NotFound Inside .HLL, I meanç
23:21 tcurtis Are multi-methods inheritable?
23:22 whiteknight tcurtis: I don't see why not
23:22 whiteknight ...unless you have a failing test case :)
23:27 nopaste "tcurtis" at 192.168.1.3 pasted "whiteknight: what a coincidence" (24 lines) at http://nopaste.snit.ch/21559
23:29 ash_ joined #parrot
23:33 cotto_work tcurtis, should B be a subclass of A?
23:34 cotto_work It works with that change.
23:34 whiteknight tcurtis: should be class B is A, methinks
23:34 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.
23:36 tcurtis 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.
23:37 nopaste "tcurtis" at 192.168.1.3 pasted "For examlpe..." (32 lines) at http://nopaste.snit.ch/21561
23:37 tcurtis s/examlpe/example/
23:37 whiteknight wow, that sucks
23:37 purl The rock is now off.
23:40 mikehh cotto_work: still get same result for pir/PIRATE latest with parrot r47813 - Ubuntu 9.10 i386 (g++ with --optimize)
23:41 cotto_work mikehh, thanks.
23:41 mikehh i.e. result PASS but backtrace with t/03-pbc/04-call.t
23:41 cotto_work I'll be digging into that when I have some tuits.
23:42 * mikehh heading back to amd64
23:43 cotto_work tcurtis, interestingly if you add a multi for String to B, that's the one that gets called.
23:44 nopaste "cotto" at 192.168.1.3 pasted "let me show you it" (14 lines) at http://nopaste.snit.ch/21562
23:44 mikehh cotto_work: and with Ubuntu 10.04 i386  (g++ with --optimize)
23:44 mikehh brb
23:45 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 http://nopaste.snit.ch/21563
23:45 cotto_work B
23:46 cotto_work A already has one
23:48 cotto_work You seem to have found a bug.
23:48 * tcurtis will submit a ticket.
23:49 whiteknight tcurtis++
23:53 kthakore joined #parrot
23:53 theory joined #parrot
23:55 Psyche^ joined #parrot
23:56 mikehh joined #parrot

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

Parrot | source cross referenced