Camelia, the Perl 6 bug

IRC log for #parrot, 2009-09-27

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:02 NotFound darbelo: it was a polite way of say: "Just merge it!" ;)
00:18 theory joined #parrot
00:29 dalek parrot: r41505 | NotFound++ | trunk/t/pmc/codestring.t:
00:29 dalek parrot: [t] cover %% usage in CodeString
00:29 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41505/
00:37 mokurai joined #parrot
00:40 slxix joined #parrot
00:42 TiMBuS joined #parrot
00:43 slxix gcc.  green-cheecked conure or gnu c compiler?
00:44 payload joined #parrot
00:46 NotFound purl: gcc?
00:46 purl gcc is a huge monster of a package. or written in C
00:49 dalek parrot: r41506 | coke++ | trunk/t/pmc/null.t:
00:49 dalek parrot: fix typo in test description. Avoid "temp"-style var names when we already have $I regs for that.
00:49 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41506/
00:55 Whiteknight joined #parrot
01:10 Austin_away joined #parrot
01:11 Austin_away Good morning, #parrot
01:33 rhr joined #parrot
01:39 jrtayloriv morning Austin
01:39 Austin_away Hello, jt4. How goes phemer?
01:40 Wolong joined #parrot
01:40 jrtayloriv Working on it ... in a blundering sort of way.
01:40 jrtayloriv But I'm learning ;)
01:40 jrtayloriv (which was the whole point anyhow)
01:42 Austin_away Sure. Did you get it repo'd yet?
01:43 jrtayloriv Austin_away, Yes -- http://svn.jrtayloriv.net/phemer/trunk
01:44 Austin I suppose I should not be away any more.
01:44 jrtayloriv :)
01:45 jrtayloriv It's probably oozing with bad practice and logic errors ... so brace yourself.
01:45 Austin Your perlmonks entry talked about R6RS scheme, and the readme says R5. Is there a fundamental difference?
01:45 jrtayloriv Austin, I haven't updated the PM page -- it's R5RS
01:45 Austin Ok
01:45 cconstantine joined #parrot
01:45 jrtayloriv But if I design it properly, it should be easy to change to R6RS later.
01:47 jrtayloriv It really doesn't do anything now, though. My main blocker is figuring out a non-kludgy way to initialize the bindings for the top level environment (i.e. how to make my builtin functions map to symbols in the PAST::Block in method TOP)
01:47 Austin That was my question. What's the 5/6 difference?
01:48 jrtayloriv unicode and internal numeric handling are the two big ones
01:48 Austin But nothing in the grammar?
01:48 jrtayloriv also various things like a new comment style, etc.
01:48 jrtayloriv yes -- a few minor grammar changes as well.
01:49 Austin (You might want to check out my Close blog: http://close-parrot.blogspot.co​m/2009/09/whitespace-hack.html)
01:49 jrtayloriv I just wanted to do R5RS because of the large amount of documentation and suppot.
01:50 Austin Ahh. Documentation. Yes.
01:50 jrtayloriv s/suppot/support/
01:50 jrtayloriv Thanks for the link -- I'll definitely do some reading there.
01:54 Austin Do you know how you are going to interact with parrot namespaces?
01:55 dalek parrot: r41507 | darbelo++ | branches/remove-next_for_GC (2 files):
01:55 dalek parrot: Remove reference to next_for_GC from the docs.
01:55 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41507/
01:55 jrtayloriv Austin, That's part of the problems I've having with figuring out the initialization. (figuring out which namespaces I should put certain things in, for example) ... so, not really
01:56 Austin I'm thinking about user code.
01:56 jrtayloriv How do you mean?
01:56 jrtayloriv As in how would I access non-scheme structures from scheme code?
01:56 Austin_away joined #parrot
01:57 Austin_away That was weird.
01:57 jrtayloriv A doppleganger?
01:57 Austin_away I'm thinking about user code.
01:57 Austin_away Does scheme have any kind of namespace mechanism you need to worry about?
01:57 Austin_away (Sorry, I got disconnected.)
01:58 jrtayloriv Austin, I don't think so -- from what I understand, everything is just lexically scoped with top-level environment being the outermost scope.
01:59 Austin_away Okay. So there's your answer.
02:00 jrtayloriv Austin, Right -- but I meant stuff like builtins/*.pir and such. i.e. which namespaces their contents should go in.
02:00 Austin_away As far as builtins, put them in a private namespace _phemer, and set package vars to point to them.
02:00 Austin_away Or just bring them in directly.
02:01 jrtayloriv Austin, I was going to use a global '%_toplevel_env_symbol_hash' and the PAST::Block .symbol() method
02:02 jrtayloriv Is that the wrong way to do it?
02:02 Austin I think it's less good than it could be, because you're duplicating work that the system already does.
02:02 jrtayloriv Yes, it looks very sloppy.
02:03 Austin Have you thought about supporting in-line PIR in your parser?
02:03 Whiteknight hello
02:04 jrtayloriv As in, inline PIR within scheme code?
02:04 Austin Hello, Andrew.
02:04 Whiteknight (i'm not here long, just checking messages)
02:04 Whiteknight Hello Austin
02:04 jrtayloriv howdy whiteknight
02:04 Austin Jrtayloriv: yes.
02:04 Whiteknight hello jrtayloriv
02:04 jrtayloriv Austin, No, I haven't.
02:04 Austin I suggest you make that a priority.
02:05 Austin It's easy to do in PCT, and it means you can build stuff as you go.
02:05 Austin It would also solve your builtin function problem, I think.
02:06 jrtayloriv Austin, I would probably fail very hard at doing something like that at this point. But I will start thinking about it and taking notes as I learn more, and try to figure out how I would go about it.
02:06 Austin :)
02:07 Austin It's easy as pie, Jesse. It's just a PAST::Op with an inline type.
02:08 Whiteknight okay, that's all the time we have for tonight. Later!
02:08 Austin g'night, Andrew
02:08 jrtayloriv night Whiteknight
02:08 Whiteknight goodnight
02:09 Austin In theoretical terms, what does the scheme interpreter do with the sequence of s-exprs you give it?
02:09 Austin Does it eval them in order, or does it magically install them all and then call the one named main, or what?
02:10 jrtayloriv It evals them in order.
02:10 Austin Okay.
02:10 Austin So how do I define a function?
02:10 jrtayloriv at the top level though.
02:10 jrtayloriv for instance (foo bar baz) is an s-expr (a list)
02:10 Austin (Please correct me if I start using the wrong terminology.)
02:10 Austin Ok. So (foo ...) is a list.
02:11 Austin And it calls 'foo' ?
02:11 jrtayloriv and the order in which the values of each of the list members after foo are evaluated is undefined
02:11 jrtayloriv (according to R5RS)
02:11 Austin oooo kay.
02:11 jrtayloriv (assuming foo is a procedure)
02:11 Austin But that means you can make up whatever you want, right?
02:11 jrtayloriv yes
02:11 Austin good enough
02:12 Austin So at the top level it's all symbol-defining operations, or operations that reference already-defined symbols?
02:12 jrtayloriv and yes, if you give and unquoted list like that (foo bar baz) vs '(foo bar bas) then it applys the procedure foo to bar and baz
02:12 jrtayloriv Austin, Yes, or eval'ing constants (strings, numbers, chars)
02:13 Austin So how do you do "Hello, world!" in scheme?
02:13 jrtayloriv "Hello world"
02:13 purl rumour has it "Hello world" is the user's real name, RFC-822 perversion...  :)
02:13 Austin Just the string, no parens?
02:13 jrtayloriv yes
02:13 jrtayloriv strings eval to themselves
02:13 Austin Ahh. And the interpreter is supposed to print whatever it runs, yes?
02:13 jrtayloriv it should print the return value of everything, yes
02:14 jrtayloriv but for instance (define foo 5) doesn't print anything
02:14 Austin Right.
02:14 jrtayloriv (since it doesn't return anything)
02:14 jrtayloriv that was another thing I couldn't figure out, but it didn't matter. I've just been running the compiler in interp mode with --target=past to make sure it's working
02:15 jrtayloriv I'm sure it's simple, but I'm very much still learning to work w/ PAST
02:15 dalek parrot: r41508 | jkeenan++ | branches/library_files (3 files):
02:15 dalek parrot: Rename get_default_tests() to get_common_tests(); adjust as needed in t/harness and t/pharness/*.t.
02:15 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41508/
02:16 Austin So your pheme.pir should be evaling and printing the results.
02:16 Austin But your eval just returns things.
02:17 jrtayloriv Austin, no the compiler should just be returning things -- normally there is a seperate interpreter that prints the values in a Read-Eval-Print loop
02:17 Austin Right. But that loop is going to have to be in phemer.pir - that's the program.
02:18 Austin And it calls 'eval', which calls 'compile'.
02:18 jrtayloriv I think the way that you would print from a compiled program is with (display "Hello World")
02:18 Austin Ahh.
02:18 jrtayloriv Which prints the return value of "Hello World"
02:19 jrtayloriv Austin, What exactly did you mean earlier when you said "As far as builtins, put them in a private namespace _phemer, and set package vars to point to them."
02:20 Austin Hmm.
02:20 jrtayloriv As far as package vars, do you mean "our" variables?
02:21 Austin Sort of.
02:21 Austin Except that an 'our' variable ISA package var
02:22 jrtayloriv Right, it's also lexical, right?
02:22 jrtayloriv doesn't make sense ... nm
02:22 jrtayloriv I'm trying to figure out all of this scoping terminology as well.
02:22 Austin No, just that (talking about NQP) an our variable compiles down to a package var in Parrot
02:23 Austin Read this: http://code.google.com/p/c​lose/wiki/CianIntroduction
02:23 Austin (The section on Parrot Hardware Model)
02:25 dalek parrot: r41509 | jkeenan++ | branches/library_files (2 files):
02:25 dalek parrot: Eliminate @Parrot::Harness::DefaultTests::standard_tests.  It was not used anywhere and had not been for a long time.
02:25 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41509/
02:27 jrtayloriv Austin, Very nice -- this is one of the better guides that I've read. Thanks.
02:27 Austin Thanks. Just be aware that everything about Close is a lie.
02:28 jrtayloriv :)
02:28 Austin (I'm working on it, but I'm not much ahead of where you are.)
02:28 Austin So the point is that a subroutine reference can be made in two ways.
02:29 Austin If you emit PIR that looks like this:   7$P0 = "foo"()  the PIR compiler (assembler) will tie the foo sub directly in to your code.
02:29 Austin This is bad, for you.
02:30 Austin But if you emit PIR that looks like this: 7   $P0 = get_global 'foo'   ;   $P1 = $P0()   the PIR compiler will emit code that does just that.
02:31 Austin It looks up a package-scope variable 'foo', and invoke()s the contents.
02:31 jrtayloriv I was trying something like ---> .lex 'Sub' sym_hash['set!'] = get_global ['_phemer'], 'set!';
02:31 Austin Yeah, but why?
02:31 purl Yeah, but why is, like, it called a lambda
02:32 jrtayloriv to try to store a reference to the _phemer::'set!'() sub in sym_hash['set!']
02:33 Austin Because you want to be able to replace them, right?
02:33 jrtayloriv exactly
02:34 Austin Okay, does set! work on vars, or functions, or both, or what?
02:34 Austin Err. Change that.
02:34 jrtayloriv set! binds a name to a value.
02:34 Austin *what* is the mechanism for replacing a named function with another function?
02:35 janus joined #parrot
02:35 jrtayloriv (define (inc x) (+ x 1)) creates the variable 'inc' and binds it to the the procedure that adds one to x
02:35 Austin Ok
02:36 jrtayloriv then (set! inc 5) changes it to not point to a procedure anymore. Now it points to constant int 5
02:36 Austin Ok
02:36 Austin So functions are variables in scheme?
02:36 Austin That is, a variable pointing to runnable-code instead of data?
02:36 dalek parrot: r41510 | darbelo++ | trunk (78 files):
02:36 dalek parrot: Moerge remove-next_for_GC brach to trunk.
02:36 jrtayloriv no -- but you can bind a variable to a function
02:36 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41510/
02:36 jrtayloriv exactly
02:36 Austin ok
02:37 yanger joined #parrot
02:37 Austin Now, about symbol lookup. Are symbols dynamic, or lexically scoped?
02:37 jrtayloriv you can execute an anonymous sub without every storing it in a variable, for instance
02:37 jrtayloriv lexical
02:38 Austin So if a calling function defines a variable 'x', there's no chance for me to see it?
02:38 Austin (Except if the two functions are lexically nested)
02:39 * jrtayloriv heard and is making sure he understands
02:40 Austin Say function foo and function bar are both defined at the top level (not nested). If foo internally defines 'x', and then calls bar, can bar see 'x' without receiving it as a parameter?
02:40 darbelo Austin: In scheme, no.
02:40 Austin Okay.
02:40 jrtayloriv (define foo 5) (define (bar x) (+ foo 1)) will work
02:41 Austin Okay.
02:41 Austin Why?
02:41 Austin Because define modifies the ... of its caller? Or because it returns a binding?
02:43 jrtayloriv Sorry, if I'm being dense -- I thought I understood what lexical scoping meant until just now :) ... let me think about it for a moment ...
02:43 Austin :)
02:43 Austin This may be a parrot-ism, but I don't think so.
02:43 Austin Let me give you an example.
02:43 Austin Do you know java?
02:43 purl If java had true garbage collection, most applications would delete themselves.
02:43 jrtayloriv Basically, (define foo 5) creates a binds the name 'foo' to 5 in the current environment.
02:44 jrtayloriv then (define (bar x) (+ foo x)) creates a block inside of that environment that has a local 'x', but no local 'foo'
02:44 darbelo Austin: in his example (define ) creates foo at the top-level
02:45 jrtayloriv so bar tries to find a local foo, and doesn't, so it looks in the next 'level up' (top-level environment in this case)
02:45 Austin darbelo: Because the "current environment" is the top level, no?
02:46 jrtayloriv (define (bar x) (+ foo x)) is really shorthand for (define bar (lambda (x) (+ foo x)))
02:46 darbelo Yes, if he had another foo inside bar, it would 'hide' the top-level one.
02:46 jrtayloriv exactly
02:47 Austin So 'define' is a function that modifies the environment of its caller?
02:47 jrtayloriv if I did (define (bar foo) (+ foo foo)) ... then (bar 7) would return 14,
02:47 jrtayloriv not 10
02:49 Austin What does this do: http://nopaste.com/p/arbjxV7Ofb
02:50 jrtayloriv (define foo 5) creates a variable 'foo', allocates storage an int, and binds the symbol 'foo' to the storage, in the current environment (the env it's called from)
02:51 jrtayloriv syntax error -- did you mean this: http://pastebin.com/db60957f
02:51 jrtayloriv that returns 12
02:52 Austin Cool
02:53 jrtayloriv the reason you have to do 'bar' instead of '(bar)' is that bar isn't bound to a procedure, it's bound to the value of (baz 7)
02:53 Austin And I change it: http://pastebin.com/m619ff64a
02:53 Austin What happens now?
02:54 Austin Does baz see global-foo, or caller-foo ?
02:54 rg1 joined #parrot
02:58 jrtayloriv You can't do that -- it's an error (trying to figure out how to explain why clearly). You do this: http://pastebin.com/d4025ce28 ... and it returns 12
02:58 patspam joined #parrot
02:59 Austin Okay. As long as you understand it, my lack of scheme is survivable.
02:59 Austin So baz sees the global foo, not the caller's foo.
02:59 Austin It's lexical.
02:59 Austin (Not dynamic.)
03:00 jrtayloriv That's what I had convinced myself of, from reading. But you clearly showed that although I thought I knew so, I really just got lucky :)
03:00 Austin :)
03:00 jrtayloriv 50/50 chance you know ;)
03:00 Austin So to make a function renamable, you put it in a lexical variable.
03:01 jrtayloriv Right -- that's why I was going to use PAST::Block .symbol() method.
03:01 jrtayloriv It seems like it would act the right way.
03:01 Austin Umm, yes and no.
03:01 purl Go not to the Elves for counsel, for they shall say both no and yes.
03:02 Austin Is there some way to say (define (foo) 5) -- where the contents of foo, rather than the name, become the name of the symbol?
03:06 GeJ darbelo: ping
03:06 jrtayloriv I don't understand. Are you saying like, if I did (define foo 'bar), which makes binds the name 'foo' to storage containing the symbol 'bar', you would like to do (define foo 5) next, and have bar hold 5?
03:06 Austin Maybe.
03:07 Austin But what I'm thinking is 7  (define x "foo") (define $x 5)   where $x is perl syntax, not scheme?
03:08 Austin The point being that a totally new name, foo, is defined.
03:09 jrtayloriv I don't think so. But I'm not sure.
03:09 Austin Ok
03:09 jrtayloriv let me play around with my scheme interpreter for a sec, and try to make that happen.
03:10 GeJ msg darbelo It looks like r41510 introduced a regression namely a segfault in t/op/calling.t   see smolder reports 28151  (before the merge) and 28150 (after the merge). Would you like me to fill a TT?
03:10 purl Message for darbelo stored.
03:13 jrtayloriv Austin, I don't think you can do that, at least not using 'define' (although there might be some weird way of doing it, that I haven't come across yet)
03:13 Austin okay
03:15 Austin So what's the difference between set and define, now?
03:17 jrtayloriv 'define' allocates the storage and binds the variable to it, and sets the value. 'set!' only works on variables that have already been created
03:18 jrtayloriv think of it like 'define' --> int x =1       set! ---> x=1
03:18 jrtayloriv in c)
03:18 Austin okay
03:18 Austin and what about let?
03:19 jrtayloriv 'let' basically creates a new scope and defines some local variables in it
03:19 yanger hello, is there an emacs mode for editing .pg files?
03:19 Austin So it's a lexical block?
03:19 darbelo if you GeJ pong
03:19 Austin Yanger: I think so. Check trac.parrot.org
03:20 jrtayloriv so (define foo 5) (display foo) (let ((foo 1)) (display foo)) ... prints 5 then 1
03:20 jrtayloriv Austin, yes -- a lexical block
03:21 jrtayloriv but (define foo 5) (display foo) (let ((bar 1)) (display foo)) prints 5 5
03:21 Austin yanger: I was wrong: http://docs.parrot.org/parrot/de​vel/html/editor/README.pod.html
03:22 quek joined #parrot
03:23 Austin jrtayloriv: What about this?   (define X 5) (define foo ((display X) (define X 1))) foo
03:23 yanger thank you
03:23 Austin * + (display X) at the end of foo
03:23 bacek yanger: just search for Perl6 mode for emacs. It should exists somewhere.
03:23 cconstantine joined #parrot
03:25 Austin Does that redefine, or throw an error because it's already defined?
03:25 jrtayloriv Austin, Error, but because it's bad syntax. You can't use 'define' in places where it's expecting an expression -- like how you used (define X 1), since it doesn't return a value. One moment -- let me rewrite it to do what you want (I think)
03:29 darbelo msg GeJ Please file a TT and attache backtrace if available.
03:29 purl Message for gej stored.
03:31 jrtayloriv Austin, Displays 5 then 1 http://pastebin.com/d39908523
03:31 jrtayloriv (can't use define unless at top level), you either use let or set! in nested scopes
03:32 Austin Cool. So set! looks up the symbol, right? Or does it always affect globals?
03:32 jrtayloriv (if I understand correctly)
03:32 jrtayloriv set! looks up the symbol in the current environment, and if it doesn't find it, looks in the next scope out, until it reaches top level, and if it doesn't find it there BORK BORK BORK
03:33 Austin okay.
03:33 Austin And can I do this:   (define X 1) (define X 2)
03:33 dalek parrot: r41511 | darbelo++ | branches/remove-next_for_GC:
03:33 dalek parrot: Branch has merged to trunk and is no longer needed.
03:33 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41511/
03:33 jrtayloriv unspecified in r5rs, illegal in r6rs
03:34 Austin mkay
03:34 jrtayloriv most r5rs implementations let you, and treat the second like a set!
03:34 jrtayloriv in r6rs, you will get a "trying to define an already defined variable" error.
03:34 Austin If I do this:  2  (define X 1) (define foo (display X)) (set! X 2) (foo)  what do I get?
03:35 Austin (Closure detection...)
03:36 jrtayloriv 2
03:36 Austin Really?
03:37 jrtayloriv http://pastebin.com/d180ab1c9 <--- right?
03:37 jrtayloriv that gives 2
03:38 Austin That's a surprise.
03:38 bacek Austin: why?
03:39 slxix makes sense to me. "<jrtayloriv> (can't use define unless at top level), you either use let or set! in nested scopes"
03:39 Austin Bacek: Because I expected set! to replace the "pmc"
03:39 bacek set! just rebind value
03:40 jrtayloriv foo is just dealing with a name, not a value
03:41 bacek Austin: there is explicit (lambda ...) for such things
03:41 jrtayloriv (foo) just says "get me the value at the storage that X is bound to"
03:41 Austin bacek ?
03:41 purl bacek is THE MANIAC or some sort of magical coding robot
03:41 cconstantine joined #parrot
03:42 jrtayloriv Austin, if you want the free variables to be in a closure, you use lambda
03:42 quek left #parrot
03:42 Austin aha.
03:42 yanger @bacek , are .pg files written in perl6 syntax? I downloaded cperl-mode (updated for Perl6) from here http://www.mail-archive.com/pe​rl6-all@perl.org/msg60892.html,  but no syntax highlighting
03:43 bacek yanger: yes, .pg is "Perl6 Grammar" files. You probably have to explicitly set file-mode (or whatever it called)
03:43 * jrtayloriv didn't even know what a 'free variable' or a 'closure' was a few days ago ...
03:44 Austin :)
03:44 Austin I'm still not sure I do.
03:44 quek joined #parrot
03:44 bacek jrtayloriv: when you grok "call/cc" you can declare "I LEARNED SCHEME!" :)
03:45 jrtayloriv bacek, Haven't even gotten that far in my scheme book :)
03:45 bacek "sicp"?
03:45 slxix jrtayloriv, which scheme book?
03:46 jrtayloriv s/book/books/ ... "The Scheme Programming Language", "An Intro to Scheme and It's Implementation", and slowly working through SICP
03:47 JimmyZ joined #parrot
03:47 jrtayloriv And the PLT scheme documentation
03:48 jrtayloriv which has a lot of stuff below the language level, but is very useful for understanding how things work
03:49 slxix I am reading through "LISP 1.5 Programmers Manual".
03:49 Austin jrtayloriv: Can I redefine 'define' ?
03:50 jrtayloriv austin yes
03:50 Austin Okay.
03:50 Austin :(
03:50 jrtayloriv (define define 5) define prints 5
03:50 Austin And (define x 1) won't work afterwards, right?
03:50 jrtayloriv sorry not clear ... (define define 5) define  ....  prints 5
03:50 jrtayloriv right
03:51 Austin You need to look at partcl for how he is (currently) rewriting upvar
03:51 Austin That's going to be your define builtin.
03:52 jrtayloriv ok -- fetching a copy now.
03:52 Austin Be wary, because the tcl stuff was written in PIR before almost any of the PCT stuff existed.
03:53 yanger @bacek, thanks, i am now reading perl6 grammar(trying out squaak example). However, though I got this  http://www.svn.pugscode.org/util/cperl-mode.el and supposedly  is updated for perl6 and despite my loading this el file, it doesn't highlight the syntax.
03:53 Austin So (a) it's confusing, because it's different; and (b) Coke is sometimes twitchy, when other people have causing his code to fail.
03:54 bacek yanger: sorry, have no idea. I'm the-other-editor-guy
03:54 Austin ed, man! Ed is the standard!
03:54 yanger :), no problems, thanks for your time
03:56 bacek Austin: I'm usually use straight "cat > file"
03:56 * jrtayloriv takes a 2 minute chocalate/peanut butter/coffee break -- be back in a jiffy!
03:56 Austin :)
03:58 Austin The problem with using 'cat' is that it won't be available when /bin dies.
03:58 bacek Austin: it's built-in in my shell
03:58 Austin ROFL
03:58 Austin And is your shell in /sbin?
04:01 Austin This is why I use andLinux.
04:02 Austin When /usr/bin is gone, /bin is corrupted, and /sbin has been overwritten, I won't care - it's a virtual machine, and *my* editor is running on a different platform.
04:02 bacek My shell is just around my brainz
04:02 Austin :)
04:02 jrtayloriv Austin, jikes -- all that just to bind a name to storage?!?! (upvar)
04:02 diakopter dalek: yo
04:02 Austin All that to bind a name to storage in a different lexical scope
04:03 jrtayloriv Austin, You can only call define from top level though.
04:04 kyle_l5l_ joined #parrot
04:04 Austin Yeah, but define is a function, not a keyword.
04:04 dalek joined #parrot
04:04 yanger i am curious about pugs, why was pugs written? was there some intellectual differences with implementing  perl6 using parrot(rakudo)?
04:05 Austin So when I feed this: 7 (define (define name val) (display name " = " val)) (define X 5)  into your compiler, what will it do?
04:05 Austin yanger: Pugs was written because parrot was unavailable at the time. Pugs is older than rakudo.
04:06 yanger i see, thanks.
04:06 Austin yanger: So Audrey was like "why don't you guys get started?" And @Larry was like "it's not time yet," and Audrey was like "Here."
04:07 Andy joined #parrot
04:07 Austin (note: @Larry != $Larry)
04:07 yanger thanks again, good to get the history
04:08 jrtayloriv Austin, "BORK: reference to undefined identifier: x"
04:08 Austin laugh
04:08 jrtayloriv because it no longer has special-form meaning anymore -- now it is a function with x being passed as an arg.
04:09 Austin Yeah, I got that.
04:09 Austin :)
04:09 yanger that haskell is one terse and powerful language, though wrapping ones head around *pure* functional programming is so not easy
04:09 Austin My point was that while define may only have to operate at the top level, it has to operate somewhere. Once you get into editing the lexpad, it doesn't really matter.
04:11 jrtayloriv Could I declare it as a sub, and take a reference to the sub and store it in a 'register' variable in the top block?
04:11 Austin Yes.
04:12 Austin But then what?
04:12 Austin This is one of those times when the Feynman Problem-solving Algorithm definitely applies.
04:13 jrtayloriv :)
04:14 bacek jrtayloriv: '$P0 = find_sub_not_null "foo"; set_global "blah", $P0'
04:15 Austin One of the reasons why it (upvar) looks scary is because he was keeping his own call stack.
04:15 Austin (Which is a risk you were running with your symbol-hash idea, too.)
04:16 jrtayloriv I was just using the symbol hash to initialize the symbol hash built into PAST::Block, though.
04:17 Austin You need to keep in mind that that PAST symbol hash is only those symbols you have compiled in.
04:17 Austin It's a compile-time thing, not a run-time thing.
04:17 jrtayloriv ok -- i see.
04:17 jrtayloriv bacek, I don't understand what you were trying to tell me btw.
04:18 jrtayloriv Austin, I misunderstood the purpose of the symbol() method, obviously.
04:19 bacek jrtayloriv: ah. Looks like I missed something.
04:19 Austin Gets and stores compiler symbol info.
04:19 jrtayloriv Austin, That's why I kept bringing it up -- because I thought I could dynamically add symbols to it at runtime somehow.
04:19 Austin Nope. At runtime, it's gone.
04:19 Austin Nothing but you, and a lot of PIR ops.
04:20 Austin And your light-bike, if you're a TRON fan...
04:22 jrtayloriv :)
04:24 bacek jrtayloriv: jfyi, there is virtually no "compile-time" in scheme :)
04:28 * jrtayloriv chugs coffee and heads for the Scheme books in the hopes that it will help him grok bacek's last remark
04:29 Austin Here's a suggestion: create a PAST::Block(:blocktype('immediate')). Call that your top level. Add everything to it during parsing.
04:30 Austin Then you should be able to parse a file that is nothing but constants.
04:31 Austin (Because PCT always returns that last result.)
04:33 slxix joined #parrot
04:35 Austin jrtayloriv: One question I should have asked before: Is this for a school project of some kind? If so, are there limits to the amount and nature of the help you are allowed to accept?
04:36 jrtayloriv Austin, Nope -- I'm not in school -- dropped out about 5 years ago.
04:36 Austin Ok.
04:38 mokurai joined #parrot
04:43 Austin So in your TOP rule, make the initial block immediate.
04:46 Austin Next, review the grammar for places where you can turn 'token' into 'rule'.
04:47 jrtayloriv I just did token to allow myself to put off learning how :sigspace works :)
04:47 Austin Don't bother. Just use rule for everything that might ever have a space in it.
04:48 jrtayloriv I don't understand how immediate block helps me. What do you mean by "parse a file that is nothing but constants"?
04:48 Austin It costs you some ops, but not many (see that blog post I linked) and later on you won't get bitten when you try to add something.
04:48 Austin The difference between an immediate block and a declaration block at the top level is that PAST will generate a call to the immediate block.
04:49 Austin "immediate" means "run this, now."
04:49 jrtayloriv right
04:49 Austin "declaration" means "put this in a sub, and I'll get to it later."
04:49 jrtayloriv right
04:49 jrtayloriv But I can already parse, and build PAST for, files consisting of constants. What did you mean by that?
04:49 Austin So, as I understand scheme so far, the outermost level should always get run immediately.
04:50 Austin So if you make the block immediate, then your compiler will produce code that gets run, and you can go "all the way" before you encounter a problem.
04:54 mberends joined #parrot
05:00 JimmyZ_ joined #parrot
05:02 yanger in the try statment of squaak, i read this "## create a new PAST::Stmts node for
05:02 yanger ## the catch block; note that no
05:02 yanger ## PAST::Block is created, as this
05:02 yanger ## currently has problems with the
05:02 yanger ## exception object."
05:02 yanger why so?
05:04 Austin (1) That's old, and may no longer be true. (2) I don't know; I haven't dealt with exceptions yet. (3) Possibly because the current exception  mechanism assumes goto, instead of call, for reaching exceptions.
05:04 Austin (But #3 is a wild-assed guess, not based on any facts.)
05:05 yanger thanks again.
05:18 Andy joined #parrot
05:25 theory joined #parrot
05:29 iblechbot joined #parrot
05:58 dalek parrot: r41512 | pmichaud++ | branches/pct-rx/config/gen/makefiles/root.in:
05:58 dalek parrot: [build] Alter build sequence so that pbc_to_exe is built before nqp.
05:58 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41512/
06:03 mikehh all tests PASS (pre/post-config, smoke (#28156), fulltest) at r41511 - Ubuntu 9.04 amd64
06:12 dalek parrot: r41513 | pmichaud++ | branches/pct-rx/config/gen/makefiles/root.in:
06:12 dalek parrot: [build]:  Revert r41512; create parrot_nqp as part of default build.
06:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41513/
06:22 mikehh rakudo (834929c) builds on parrot r41511 - make test / make spectest_smolder (up to 28436 -> #28158) PASS - Ubuntu 9.04 amd64
06:25 yanger btw, i just downloaded parrot and squaak factorial example doesn't appear to work
06:25 dalek parrot: r41514 | pmichaud++ | trunk (2 files):
06:25 dalek parrot: [build]:  Automatically build parrot_nqp binary (from pct-rx branch).
06:25 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41514/
06:26 yanger because its not converting the type (when passing read value into function)
06:29 yanger given that parrot use cps (continuation p style)in its byte code, why does it have a recursion limit?
06:30 yanger and why the need for tail call optimizations?
06:40 jrtayloriv good night folks
06:40 purl and bots!
06:40 jrtayloriv and bots
06:40 jrtayloriv purl -- here, have a glass of drano
06:45 mikehh partcl r745 builds on parrot r41511 - make test PASS (smolder #28161) - ubuntu 9.04 amd64
07:03 chromatic joined #parrot
07:06 yanger joined #parrot
07:08 bacek chromatic: good morning
07:08 purl Here I am, brain the size of a planet, and all they say is 'Good Morning'
07:11 chromatic Good Sunday, bacek.
07:14 Tene chromatic: I got email about a pull request on rakudo?
07:14 chromatic Yeah, I figured out that I could just push it to Rakudo's repo, as I have commit access.
07:15 Tene Ah, yes, that's what's usually done.  I now see you've already done that.
07:16 * bacek wearing "Better to ask for excuse t-shirt" and firing git svn dcommit
07:17 dalek parrot: r41515 | bacek++ | trunk (7 files):
07:17 dalek parrot: Refactor Hashes slightly:
07:17 dalek parrot: * Move helper functions from src/pmc/hash.pmc into src/hash.c
07:17 dalek parrot: * Implement HashIteratorKey.key and .value methods
07:17 dalek parrot: * Implement PMC (not-stringified) Hash keys.
07:17 dalek parrot:   - Add VTABLE_hashvalue
07:17 dalek parrot:   - Default.hashvalue stringify SELF and calculate hashvalue.
07:17 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41515/
07:18 fperrad joined #parrot
07:20 dalek TT #1053 closed by bacek++: [TODO] Allow Parrot Hashes to have PMC keys
07:21 * bacek departing to make some dinner for kids
07:23 ttbot Parrot trunk/ r41515 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106687.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
07:45 chromatic Hm, the FileHandle PMC's readline_interactive() returns either a STRING or PMCNULL; that seems wrong.
07:48 Austin null meaning there is no readline library?
07:48 chromatic PMCNULL meaning it didn't read anything, I believe.
07:49 Austin Oh. That's bogus. should be ""
07:49 chromatic I think so too.
07:56 dalek close: r159 | Austin++ | trunk/src/parser/ (9 files):
07:56 dalek close: checkpoint
07:56 purl checkpoint is, like, an Integrated Firewall/VPN eSolution for iDiots(tm) designed with sales, not simplicity, in mind or what kind of DUMFUX design a firewall that can only be properly configured from a remote GUI, and not from the command line
07:56 dalek close: review: http://code.google.com/p/close/source/detail?r=159
07:56 dalek close: r160 | Austin++ | trunk/library/ (2 files):
07:56 dalek close: Removed exec bits
07:56 dalek close: review: http://code.google.com/p/close/source/detail?r=160
08:00 Austin And now svn is borked.
08:00 Austin Bad words, bad words, bad words.
08:00 bacek Austin: s/now//
08:01 Austin bacek: Nah. There's a cifs bug. Normally it works okay.
08:01 dalek parrot: r41516 | chromatic++ | trunk/src/pmc/filehandle.pmc:
08:01 dalek parrot: [PMC] Tidied FileHandle PMC's code; no functional changes.
08:01 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41516/
08:01 chromatic Hm, have I mentioned how much I like Git merging?
08:02 chromatic I would have ruined my local repo if I'd been using SVN....
08:05 dalek parrot: r41517 | chromatic++ | trunk/src/pmc/filehandle.pmc:
08:05 dalek parrot: [PMC] Fixed FileHandle PMC's readline_interactive() message to return an empty
08:05 dalek parrot: STRING if it couldn't read anything instead of PMCNULL.  This seems much, much
08:05 dalek parrot: saner, even if there is a potential semi-predicate problem (how do you expect
08:05 dalek parrot: to handle PMCNULL from PIR when you're expecting a STRING, though?).
08:05 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41517/
08:05 chromatic I made those last two commits to a local branch tracking remove_next_for_GC.
08:05 chromatic Then I tried to rebase that branch from SVN.  It's already deleted.
08:05 chromatic No problem; I switched to master, then merged from that branch.
08:05 chromatic Then I rebased and dumped the conflicts and then dcommitted my changes.
08:08 ttbot Parrot trunk/ r41517 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106755.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
08:09 bacek You can cherry-pick them
08:09 chromatic Too lazy.
08:09 bacek chromatic: :)
08:14 bacek chromatic: you probably broke Ctrl-D handling in PCT-based interactive shells
08:15 bacek chromatic: indeed. I recall old conversations about it.
08:20 Austin Is there an installable parrot for windows?
08:23 dalek close: r161 | Austin++ | trunk/ (9 files):
08:23 dalek close: checkpoint
08:24 purl i guess checkpoint is an Integrated Firewall/VPN eSolution for iDiots(tm) designed with sales, not simplicity, in mind or what kind of DUMFUX design a firewall that can only be properly configured from a remote GUI, and not from the command line?!
08:24 dalek close: review: http://code.google.com/p/close/source/detail?r=161
08:24 dalek close: r162 | Austin++ | trunk/lib (2 files):
08:24 dalek close: Moved Test.pm
08:24 dalek close: review: http://code.google.com/p/close/source/detail?r=162
08:24 Austin purl, forget checkpoint
08:24 purl Austin: I forgot checkpoint
08:39 dalek lua: ca3dfd7 | fperrad++ | .gitignore:
08:39 dalek lua: ignore Test/More.*
08:39 dalek lua: review: http://github.com/fperrad/lua/commit/ca​3dfd76e608d1c2803367406b6f9309380350d1
09:04 dalek parrot: r41518 | mikehh++ | trunk/MANIFEST.SKIP:
09:04 dalek parrot: manifest_tests failure - run perl tools/dev/mk_manifest_and_skip.pl
09:04 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41518/
09:08 kjeldahl joined #parrot
09:09 ttbot Parrot trunk/ r41518 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106848.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:11 dalek parrot: r41519 | bacek++ | trunk/src/pmc/filehandle.pmc:
09:11 dalek parrot: Revert "[PMC] Fixed FileHandle PMC's readline_interactive() message to return an empty"
09:11 dalek parrot: Previous commit break handling of Ctrl-D in interactive shell of
09:11 dalek parrot: PCT-based compilers.
09:11 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41519/
09:12 mikehh bacek: ping
09:12 bacek mikehh: pong
09:13 mikehh bacek: loads of codetest (pod) failures on src/hash.c
09:14 bacek mikehh: I'm working on it.
09:15 dalek parrot: r41520 | bacek++ | trunk (2 files):
09:15 dalek parrot: [core] Fix HashIteratorKey.value method. Add tests for expected behaviour
09:15 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41520/
09:18 mikehh bacek: ok - also g++ failures on src/pmc/hash.pmc
09:19 bacek mikehh: nopaste?
09:19 purl nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or https://trac.parrot.org/parrot/br​owser/trunk/tools/dev/nopaste.pl
09:19 ttbot Parrot trunk/ r41520 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106900.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:20 mikehh bacek: ./src/pmc/hash.pmc:156: error: invalid conversion from ‘INTVAL’ to ‘Hash_key_type’
09:20 mikehh bacek: ./src/pmc/hash.pmc:156: error:   initialising argument 3 of ‘Hash* parrot_create_hash(parrot_interp_t*, PARROT_DATA_TYPE, Hash_key_type, int (*)(parrot_interp_t*, const void*, const void*), size_t (*)(parrot_interp_t*, const void*, size_t))’
09:21 mikehh bacek also 163
09:21 dalek parrot: r41521 | bacek++ | trunk/src/hash.c:
09:21 dalek parrot: [cage] Pacify compiler about const casting and default case in switch.
09:22 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41521/
09:28 dalek parrot: r41522 | bacek++ | trunk (3 files):
09:28 dalek parrot: [cage] Fix creating new hash in Hash.set_integer_native. Also implement
09:28 dalek parrot: switching to string keys back.
09:28 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41522/
09:29 bacek mikehh++ # kicking lazy developers
09:31 ttbot Parrot trunk/ r41521 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106958.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:35 dalek parrot: r41523 | bacek++ | trunk (3 files):
09:35 dalek parrot: [cage] Change signature of PMC_compare and hash_key_PMC to avoid casing void*
09:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41523/
09:35 ttbot Parrot trunk/ r41522 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/106982.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:42 ttbot Parrot trunk/ r41523 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107023.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:47 bacek mikehh: ping. Can you smoke latest trunk?
09:47 dalek parrot: r41524 | bacek++ | trunk/src/hash.c:
09:47 dalek parrot: [cage][doc] Add docs for hash key and value casting functions
09:47 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41524/
09:48 bacek mikehh: r41524 speaking precisely
09:51 ttbot Parrot trunk/ r41524 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107073.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
09:54 dalek parrot: r41525 | bacek++ | trunk/src/hash.c:
09:54 dalek parrot: [cage] Use ASSERT_ARG macros in hash helper functions.
09:54 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41525/
09:56 bacek mikehh: even r41525 :)
09:58 mikehh bacek: on it
10:00 ttbot Parrot trunk/ r41525 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107116.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
10:06 bacek seen mk41
10:06 purl I haven't seen 'mk41', bacek
10:06 bacek seen mj41
10:06 purl mj41 was last seen on #parrot 18 days, 18 hours, 45 minutes and 19 seconds ago, saying: this machine is probably special to segfaults ... http://tt.ro.vutbr.cz/report/pr-Parrot/rp-trunk  [Sep  8 15:13:16 2009]
10:07 bacek sigh... tt.ro.vutbr.cz is down
10:08 mikehh I think you all killed it :-}
10:12 bacek I swear it wasn't me!
10:13 mikehh all tests PASS (pre/post-config, smoke (#28170), fulltest) at r41525 - Ubuntu 9.04 amd64 (gcc)
10:13 bacek good to know
10:19 mikehh g++ is still failing - but now at nqp - Unable to open filehandle from path 'parrot_nqp.c'
10:26 bacek mikehh: it's probably pmichaud's commit
10:35 NotFound mikehh: doesn'f fail for mr
10:35 NotFound me
10:38 mikehh bacek: I am not sure why but the permissions are wrong on that file - parrot_nqp.c - checking why (it's fine in my parrot dir but g.parrot which I was using to build with g++ is wrong)
10:39 bacek mikehh: just another svn shenanigans :)
10:45 mikehh bacek: did a sudo chown mhh:mhh parrot_nqp* to change ownership from root and it completed the build and make test
10:46 mikehh I have no idea how it got root ownership and why in one dir but not the other
10:53 joeri joined #parrot
11:05 dalek close: r163 | Austin++ | trunk/ (20 files):
11:05 dalek close: checkpoint: Moving files
11:05 dalek close: review: http://code.google.com/p/close/source/detail?r=163
11:06 Austin joined #parrot
11:12 dalek parrot: r41526 | NotFound++ | trunk/t/pmc/boolean.t:
11:12 dalek parrot: [t] cover Boolean.init_pmc PMCNULL
11:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41526/
11:15 dalek close: r164 | Austin++ | trunk/src/close/Compiler/Type.nqp:
11:15 dalek close: Renamed Types -> Type.nqp
11:15 dalek close: review: http://code.google.com/p/close/source/detail?r=164
11:20 ttbot Parrot trunk/ r41526 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107233.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
11:30 dalek close: r165 | Austin++ | trunk/ (8 files):
11:30 dalek close: Renamed Types -> Type
11:30 dalek close: review: http://code.google.com/p/close/source/detail?r=165
11:32 dalek parrot: r41527 | NotFound++ | trunk/t/pmc/resizablestringarray.t:
11:32 dalek parrot: [t] cover RSA.delete_keyed
11:32 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41527/
11:36 masak joined #parrot
11:39 ttbot Parrot trunk/ r41527 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107287.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
11:39 mikehh all tests PASS (pre/post-config, smoke (#28177), fulltest) at r41526 - Ubuntu 9.04 amd64 (g++)
11:40 mikehh bbiab
11:55 rindolf joined #parrot
11:55 rindolf Hi all.
12:04 bacek hi rindolf
12:04 rindolf bacek: hi.
12:04 rindolf I'm looking for chromatic.
12:05 rindolf It may be too early for him.
12:11 Whiteknight joined #parrot
12:11 bacek clock?
12:11 purl bacek: LAX: Sun 5:11am PDT / CHI: Sun 7:11am CDT / NYC: Sun 8:11am EDT / LON: Sun 1:11pm BST / BER: Sun 2:11pm CEST / IND: Sun 5:41pm IST / TOK: Sun 9:11pm JST / SYD: Sun 10:11pm EST /
12:11 bacek Good evening, Whiteknight :)
12:13 Whiteknight hello bacek
12:14 dalek TT #929 closed by bacek++: Remove redundant old_blocks delcaration in compilers/imcc/pbc.c
12:14 dalek TT #1004 closed by bacek++: t/op/calling.t, t/pmc/sub.t failed at r41244 during 'make testj'
12:14 dalek TT #1008 closed by bacek++: continuation mark function marks non pobj PackFile_ByteCode *seg
12:15 rindolf Hi Whiteknight
12:18 dalek TT #970 closed by bacek++: Remove Parrot_Context structure in favor of ATTRibutes in Context PMC
12:20 Whiteknight hello rindolf
12:20 rindolf What's up?
12:20 purl The Canadian Dollar
12:32 moritz jdv79: does the SMOLDER_SUBMITTER environment variable need to be a in a special format or something?
12:33 moritz jdv79: I set it to 'moritz', but the rakudo smoke reports are still all from "anonymous2
12:33 moritz s/2/"/
12:41 iblechbot joined #parrot
12:41 dalek TT #823 closed by bacek++: packfile pmc tests failing
12:43 dalek rakudo: a61b17f | moritz++ | t/harness:
12:43 dalek rakudo: [t/harness] only provide extra_properties when we use ::Archive
12:43 dalek rakudo: This unbreaks 'make $path_to_one_file.t'
12:43 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/a​61b17f0eeb06ad4370fc08af33b75c4e2fd985f
12:45 dalek TT #758 closed by bacek++: Fix problems on openbsd/hppa
12:48 dalek rakudo: 0331d60 | moritz++ | docs/ChangeLog:
12:48 dalek rakudo: [docs] ChangeLog updates
12:48 dalek rakudo: review: http://github.com/rakudo/rakudo/commit/0​331d6030f8f07e8dc0c31ff54b191f10e21a4aa
12:52 dalek TT #711 closed by bacek++: can't assign class with attributes to undef
12:59 masak I'm getting "Unable to open filehandle from path 'parrot_nqp.c'" during `./pbc_to_exe parrot_nqp.pbc` when trying to make bleeding Parrot. is this known?
13:00 bacek masak: "sudo chown -R masak:masak ."
13:00 moritz masak: it's probably new, due to pmichaud++ adding a parrot_nqp executable to the build
13:01 masak bacek: haven't tried compiling yet, but your hunch seems to be right.
13:01 bacek anyway. $bedtime. I've got enough cheap karma closing ticket for today.
13:01 masak that file was owned by root.
13:01 masak bacek++
13:02 bacek masak: It's not me. It's mikehh++ discovered it
13:02 JimmyZ joined #parrot
13:05 yanger joined #parrot
13:17 yanger given that parrot use cps (continuation p style)in its byte code, why does it have a recursion limit?
13:20 jonathan yanger: It's not a limitation of the VM, just there as a debugging aid. You can tweak the limit if you like.
13:20 cconstantine joined #parrot
13:21 yanger i see, then why the need -Oc (tail call optimization) i thought tco comes for free with cps
13:21 yanger (thanks for the answer)
13:22 * jonathan hasn't seen -Oc for a while...
13:23 jonathan Yes, tailcalls by default are more optimal, anyways.
13:23 jonathan I think -Oc enabled some more aggressive transformation that tried to turn tail calls into iterations in some cases.
13:24 yanger thanks again, actually i totally new to this, this is all very helpful
13:24 jonathan :-)
13:24 jonathan I say "enabled" as I'm sure of the state of that.
13:24 jonathan Certainly parrot -h doesn't seem to list it.
13:25 dalek lua: 57459b0 | fperrad++ | src/grammar51.pir:
13:25 dalek lua: fix long_string lexer (\r)
13:25 dalek lua: review: http://github.com/fperrad/lua/commit/57​459b02d4019f665fb1af797e6af08121d39985
13:25 moritz yanger: not all code in the parrot repo uses CPS - for example the C code itself does not
13:25 jonathan oh, it's still in running.pod...
13:26 jonathan I'm not sure of the status of that code though. It's marked experimentail in the docs.
13:26 yanger yes its in the running.pod and is experimental
13:26 yanger thanks @moritz
13:27 yanger I have some other questions, regarding squaak
13:28 yanger In examples/languages/squaak, i ran Configure.pl, make and then modified factorial.sq
13:28 yanger to this
13:28 yanger (the last few lines) var x=100
13:28 yanger for var i= 1,1000 do
13:28 yanger factorial(x)
13:28 yanger #print(i," factorial of ", x, " is: ", factorial(x))
13:28 yanger end
13:28 fperrad ping pmichaud
13:29 purl I can't find pmichaud in the DNS.
13:29 yanger i.e testing the run time for 1000 iterations
13:29 yanger it was 5 seconds, compared to doing the same code in python which took 0.x seconds
13:30 fperrad seen pmichaud
13:30 yanger so if i understand correctly, parrot uses squaak.pbc to read this script, convert it to PAST
13:30 purl pmichaud was last seen on #parrot 19 hours, 19 minutes and 27 seconds ago, saying: it's just harder to read the generated code to figure out what is going on
13:30 yanger and from PAST to PIR, which it bytecompiles and runs.
13:30 yanger So my question is, how can I make this faster?
13:32 jonathan yanger: You can compile to bytecode first.
13:32 yanger this is how I'm running it
13:33 yanger parrot   squaak.pbc  examples/factorial.sq
13:33 yanger I can get the pir representation, like this  parrot   squaak.pir  --target=pir examples/factorial.sq> fac.pir
13:33 jonathan nod*
13:33 moritz and dthen parrot -oi fac.pbc fac.pir
13:33 Austin parrot squaak.pbc --target=pir --output=foo.pir foo.sq
13:34 moritz erm, -o, without the i
13:34 jonathan Running the PIR will be faster than the whole thing; running the PBC produced as moritz showed should be faster again.
13:35 Austin I don't recall if you can specify --output=pbc. Does that work?
13:35 yanger parrot squaak.pbc --target=pir -o foo.pir examples/factorial.sq Then parrot -o foo.pbc foo.pir  and then
13:35 dalek parrot: r41528 | jkeenan++ | trunk/src/call/context.c:
13:35 dalek parrot: Apply patch submitted by bacek++ for TT #1067.  Fixes death of a test file on Darwin/PPC.
13:35 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41528/
13:35 yanger parrot foo.pbc
13:35 yanger Could not find non-existent sub infix:<=
13:35 yanger current instr.: '_block11' pc 48 (foo.pir:23)
13:37 jonathan oh hmm
13:38 * jonathan wonders if Squaak example language produces code with correct "load_bytecode" directive in...
13:39 Austin :)
13:39 Austin yanger, can you nopaste the pir file that squaak emits?
13:40 Austin nopaste?
13:40 purl nopaste is at http://nopaste.snit.ch/ (ask TonyC for new channels) or http://poundperl.pastebin.com/ or http://paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at http://www.extpaste.com/ or http://paste.scsys.co.uk (for #catalyst, #dbix-class, #moose  and others) or http://gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or https://trac.parrot.org/parrot/br​owser/trunk/tools/dev/nopaste.pl
13:41 ttbot Parrot trunk/ r41528 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107384.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
13:41 yanger yes, one sec
13:41 Whiteknight did the remove-next_for_GC branch get merged?
13:42 Whiteknight nevermind, I found the log message. it did
13:43 nopaste "yanger" at 24.29.231.239 pasted "pir for factorial.sq via squaak" (150 lines) at http://nopaste.snit.ch/18071
13:43 jonathan Whiteknight: You're more active on Parrot stuff than I am - do you know what the status of -Oc is?
13:43 jonathan Whiteknight: You guys are pretty efficeint at ripping out experimental stuff that didn't fly. ;-)
13:44 Whiteknight jonathan: I have no idea to tell you the truth. Could find out though
13:45 jdv79 moritz: no
13:45 Austin It looks like squaak does not emit the necessary .include of it's builtins.
13:46 jdv79 moritz: its the submitter prop.  not the user prop.
13:46 jonathan Austin: Probably load_bytecode, but yes.
13:46 Austin It doesn't emit that, either.
13:46 Austin :)
13:47 jonathan Aye. that's the one it probably should emit to allow compilation to PIR to work.
13:47 yanger okay, is there a way i can manually add it somewhere?
13:47 Austin yanger: Congratulations. You've found a bug.
13:47 yanger :) pleasure to help out
13:47 moritz jdv79: so what should I do to make my name appear on the smolder report?
13:47 Austin Do you have a login at trac.parrot.org?
13:50 jonathan yanger: Fix is something like a load_bytecode "squaak.pbc" or similar instruction.
13:50 jonathan (manual fix)
13:51 jdv79 its there now.  what's the issue?
13:51 jdv79 http://smolder.plusthree.com/app/pu​blic_projects/report_details/28168
13:51 jdv79 i see "moritz":)
13:53 moritz jdv79: I was confused because the "user" on the overview page was always "anonymous"
13:54 moritz jdv79: so I guess it's not an issue after all. Thanks for clarifying
13:54 jdv79 i guess we could set user too... whatever.
13:55 jdv79 i just copied what parrot does to try to stay similar
13:57 yanger slightly confused, why should foo.pir require load_bytecode "squaak.pbc"?, squaak is quite basic, the oly builtin function it provides is a print function (contained in src/builtins/print.pir), otherwise foo.pir ought to be self contained
13:57 yanger and so foo.pir ought to load this pir file
13:58 yanger aha, it ought to load this file
13:59 yanger i.e src/builtins/print.pir which contains 'infix:<='
14:00 jonathan yanger: Yes, though if you load that it has to be compiled from PIR to bytecode first - if you load squaak.pbc then it's just a case of loading some bytecode, which is probably mmap'd anyway.
14:01 yanger i see, thanks again
14:03 kid51 joined #parrot
14:06 dalek lua: 1165a2b | fperrad++ | t/ (15 files):
14:06 dalek lua: these libraries are now tested by t/lua-TestMore/test_lua51/lib
14:06 dalek lua: (pure Lua with Test.More)
14:06 dalek lua: review: http://github.com/fperrad/lua/commit/11​65a2bce60294353dede961e60553bb390c66ae
14:06 particle joined #parrot
14:10 yanger Added this to the end of foo.pir
14:10 yanger .sub 'onload' :anon :load :init
14:10 yanger load_bytecode 'squaak.pbc'
14:10 yanger .end
14:13 yanger Which worked,  time parrot squaak.pbc  examples/factorial.sq (5.932 secs)
14:13 yanger time parrot foo.pbc (4.32 secs)
14:13 yanger I was hoping for pythons 0.x secs
14:23 allison joined #parrot
14:30 jonathan yanger: There's probably a whole bunch of factors there, including whether or not you compiled Parrot with optimization, that the compiler doesn't generate as optimal code as it could for Parrot anyway, and that Parrot is still very much in the process of being made fast.
14:31 yanger yes, i am recompiling now, and trying different runcores (as an aisde, using -R jit just returns, i.e doesn't run at all) and yes, i admit a lot of works is being done on parrot, so eagerly waiting
14:31 NotFound And that no one intends to optimize squaak for speed.
14:33 Patterner joined #parrot
14:34 yanger @notfound, Well, i understand that, but i wonder given the language is so simple(and the code is), i thought the vm would do the optimizations
14:34 JimmyZ joined #parrot
14:35 cconstantine I'm trying to iterate through an a slurpy argument backwords and I get an error when I so 'iter = ..ITERATE_FROM_END
14:35 cconstantine 'iter = .ITERATE_FROM_END'
14:35 cconstantine it's complaining about the .   Does anyone know what I'm doing wrong?
14:35 NotFound cconstantine: Do you include the appropiate file for that macro?
14:36 cconstantine probably not; I'm not including anything
14:36 NotFound cconstantine: .include 'iterator.pasm'
14:37 jonathan yanger: It may well be the compiler toolchain that cna do some of those as much as the VM, but yes, I hpoe more can be provided in the future.
14:37 cconstantine does that need to be in the .sub that uses it, or can it be at the toplevel?
14:37 NotFound cconstantine: at toplevel, better.
14:37 cconstantine awesome
14:38 cconstantine thanks
14:38 cconstantine thats what I get for searching in the docs instead of *reading* the docs :)
14:39 jan joined #parrot
14:41 Andy joined #parrot
14:42 NotFound The current implementation of ASSERT_ARGS looks wrong. It uses && but each individual assertion returns 0.
14:51 cconstantine How do I cause PAST::Var's to create boxed values?
14:52 Austin cconstantine?
14:52 cconstantine yes?
14:52 Austin What do you mean?
14:53 cconstantine ah.  I want all my values to be boxed, so when I have a litteral value in my language I want it to correspond to a boxed value
14:53 Austin Because you should be able to use PAST::Val (note: val-ue, not var-iable) to box up literals
14:53 NotFound Some objection to use operator comma in ASSERT_ARGS, thus avoiding to worrying about short circuits?
14:53 cconstantine right, val not var
14:54 Austin Just create a ::Val object with the appropriate :returns() setting.
14:54 cconstantine Austin: thats what I hoped, but I can't find the word 'box' anywhere in the PAST docs
14:54 Austin PAST::Val.new(:returns('Integer'), :value("1"))
14:55 Austin It's a magic box.
14:55 cconstantine I like magic
15:15 davidfetter joined #parrot
15:16 JimmyZ joined #parrot
15:23 Andy joined #parrot
15:28 ash_ joined #parrot
15:37 theory joined #parrot
15:52 mikehh all tests PASS (pre/post-config, smoke (#28187), fulltest) at r41528 - Ubuntu 9.04 amd64
16:02 dalek close: r166 | Austin++ | trunk/src/ (8 files):
16:02 dalek close: Moved library files to src
16:02 dalek close: review: http://code.google.com/p/close/source/detail?r=166
16:06 NotFound Who has been working recently in hash.c ?
16:07 moritz ask the blame log
16:08 moritz s/blame/praise/
16:09 NotFound hash_value_from_string and hash_value_from_pmc take non NULLOK parameters, but they are called with values unchecked for nullness from several places.
16:10 NotFound And ASSERT_ARGS is not catching the problems because ASSERT_ARGS is wrong.
16:10 mikehh partcl r745 builds on parrot r41528 - make test PASS (smolder #28188) - ubuntu 9.04 amd64
16:11 mikehh NotFound: mostly bacek
16:14 dalek parrot: r41529 | jkeenan++ | branches/library_files/lib/Pa​rrot/Harness/DefaultTests.pm:
16:14 dalek parrot: Simplify assignment to @developing_tests.
16:14 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41529/
16:14 mikehh rakudo (0331d60) builds on parrot r41528 - make test / make spectest_smolder (up to 28442 -> #28189) PASS - Ubuntu 9.04 amd64
16:17 NotFound bacek: ping
16:19 allison joined #parrot
16:21 ash_ can you add new op codes at runtime?
16:25 jrtayloriv joined #parrot
16:25 allison ash_: yes, if you've compiled them as a dynop library
16:28 ash_ how are they added then? because aren't the op's hard coded into an enum?
16:30 Austin Make a saving throw vs. intelligence or go insane.
16:32 ash_ aww man *gets out my Arkham Horror dice*
16:34 dalek parrot: r41530 | NotFound++ | trunk/config/gen/platform (3 files):
16:34 dalek parrot: [cage] fix declarations of Parrot_hires... platform functions for ansi C style
16:34 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41530/
16:36 mikehh NotFound: wow - did svn log src/hash.c - it goes all the way back to r1456
16:36 NotFound A piece of history
16:36 Austin The simplest explanation, ash_, is that yes, the VM knows how many opcodes there are. And therefore, if you request an "extra", it must either be dynamic or a horrible error.
16:36 mikehh lots of it :-}
16:38 dalek parrot: r41531 | NotFound++ | trunk/src/call/context.c:
16:38 dalek parrot: [cage] fix C90 violation
16:38 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41531/
16:39 ttbot Parrot trunk/ r41530 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107481.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
16:41 jrtayloriv I'm getting a build error in r41529 if I do 'make -j5', but not if I do 'make' ... Error from 'make -j5' --> http://pastebin.ca/1581549
16:42 ash_ I am curious because for a llvm based jit system i think it would be best if you could define all the op codes as llvm-ir codes, then load the pasm code as its own function then you can run the llvm-jit optimizations on that and it would give you the best bang for your buck (hopefully without to bad of a startup time, but if it has a bad startup time you can always dump the resulting llvm-ir into a file so you only have to do it once). If
16:42 ash_ each dynop lib has its own op codes too then if you wanted to run it with a jit core you'd need them in llvm-ir form also, which implies you'd need an llvm compiler front-end (clang or llvm-gcc), where as if there was a special op code for external libs you could use that as a substitute, it wouldn't benefit from the same optimizations as the rest of the code would but it would mean you could compile extensions without the added requiremen
16:42 ash_ of an llvm front-end
16:42 * ash_ wall if text crits you for o.0
16:43 jrtayloriv I'm also getting the error in r41531
16:43 Austin Ash, look on trac.parrot.org for "lorito." That's what they're looking at doing.
16:44 allison ash_: for true jit (that is, just in time compilation, that is compilation on the fly at runtime), you will need the llvm frontend available
16:45 ttbot Parrot trunk/ r41531 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107506.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
16:45 allison ash_: you can do a pseudo-jit (all the ops down to machine code at compile-time) and only make llvm a build-time requirement
16:45 allison ash_: but it's substantially less useful than a true jit
16:50 jrtayloriv (oops -- I forget to say "I'm getting a build error for *Parrot* with make -j5 in r41532", not for phemer)
16:51 NotFound jrtayloriv: some missing dependence, most probably
16:52 jrtayloriv NotFound, I haven't installed/removed any software from my system, and Parrot has been building fine previously.
16:53 jrtayloriv Could it be an old installed Parrot causing problems somehow?
16:53 dalek TT #231 reopened by jkeenan++: make -j2 test fails
16:53 NotFound jrtayloriv: some missing dependece in the parrot Makfile, I mean
16:54 jrtayloriv oh, ok
16:54 ash_ i guess that depends on which llvm passes you want to use on your code, if you can get the whole program loaded as a llvm-ir function (which you can either build dynamically, or use the llvm compiler front-ends to build) then you can do some of the more aggressive optimizations like function inlining, but you'd have to have the ir form of code loaded to achieve that, that is a true jit still, its just optimizng the llvm-op code a bit more
16:54 ash_ than a simple jit
16:54 jrtayloriv NotFound, Should I add my error as a comment to that ticket?
16:55 payload joined #parrot
16:55 NotFound jrtayloriv: sure
16:55 jrtayloriv ok
16:59 dalek parrot: r41532 | NotFound++ | trunk (2 files):
16:59 dalek parrot: [hash] add NULLOK decoration to value parameter in hash_value_from_pmc and hash_value_from_string
16:59 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41532/
17:00 rhr joined #parrot
17:02 allison ping bacek
17:02 purl I can't find bacek in the DNS.
17:03 allison Does anyone know the purpose of the pcc_arg_unify_2_0 branch?
17:04 allison It looks similar to what I was planning to work on today, but I'm not sure how similar.
17:04 moritz allison: it's an attempt to apply the diff from the old pcc_arg_unify branch to trunk
17:04 NotFound allison: I think it was an attempt to apply to a recent copy of truk the diff of pcc_arg_unify
17:04 ttbot Parrot trunk/ r41532 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107564.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
17:05 allison exactly what I was going to work on today
17:05 allison but, it looks like some parts have been reverted?
17:05 NotFound allison: they were trying to help you
17:05 cconstantine in piy, how do I test if a parameter is passed in as null/0?
17:05 moritz allison: bacek mentioned that he might have resolved some conflicts wrongly
17:05 allison oh, yes, I'm not complaining
17:05 kid51 jrtayloriv:  Your paste 1581549 doesn't show any 'make' failure that I can see; was it cut off?
17:06 allison it would just be silly for me to do it if it's done already
17:06 jrtayloriv kid51, make: *** [compilers/nqp/nqp.pbc] Error 127
17:07 jrtayloriv kid51, it was in there -- I put the stuff after it as well (I don't understand parallel make well enough to know whether I am removing useful info, so I left it all in there)
17:07 Austin cconstantine: Do you really mean null?
17:07 moritz allison: http://irclog.perlgeek.de/p​arrot/2009-09-24#i_1537533 that's where it started, fvwiw
17:07 Austin Of do you mean undef?
17:07 allison moritz: any thoughts on whether it's easier to clean up merge failures in the 2.0 branch, or to try again?
17:08 cconstantine Austin: a func may return a $P0 that was nulled (null $P0), I want to detect that
17:08 Austin Because there's an if null comparison for null, but undef is another matter.
17:08 Austin Okay.
17:08 moritz allison: no idea really
17:08 Austin if null $P0 goto p0_is_null
17:08 cconstantine awesome, thanks :)
17:08 Austin unless null $P0 goto p0_not_null
17:08 allison moritz: it's bacek I need to talk to, I know
17:08 kid51 jrtayloriv:  Yeah, since I can't do parallel, I don't know parallel, and I always look first at the end of the paste.
17:09 jrtayloriv kid51, I thought that perhaps knowing what other things were happening in parallel with the part that failed might help to diagnose the problem.
17:10 kid51 Perhaps if you built starting with -j2, then -j3, etc., something might become apparent.
17:11 kid51 On my simple boxes, I've never gotten -j to do anything useful.
17:12 jrtayloriv I always use -j5, but I'll try again with -j2, j3, etc, as you suggested
17:12 moritz 'make -j' seems to build nearly nothing here
17:13 kid51 I guess the problem is:  What was 'make' trying to do when it generated this:  make: *** [compilers/nqp/nqp.pbc] Error 127 -- instead of simply waiting for unfinished jobs?
17:13 jrtayloriv moritz, same here. it is trying to do this ---> ./parrot -o compilers/nqp/nqp.pbc compilers/nqp/nqp.pir  <--- way to early
17:14 Austin probably no dependency on parrot
17:14 kid51 moritz:  Apropos of 'make -j', can you glance at reopened https://trac.parrot.org/parrot/ticket/231 ? thanks.
17:15 Austin I'm wrong. There's a dependency on $(PARROT) okay.
17:17 cconstantine so, is the fact that my tail positioned calls are not getting converted from a 'call' to a 'tailcall' a bug, or non-feature?
17:18 moritz kid51: my current comment is that parallel build is even more broken than before
17:19 moritz somehow I suspect it's r41514
17:19 Austin cconstantine: non-feature
17:20 cconstantine Austin: cool, so for my language to automatically do tail cal optimization I'd have to inspect/modify the ast?
17:20 Austin ayup
17:20 moritz but I don't understand that - $(NQP) depends on $(PBC_TO_EXE), which in turn depends on $(PARROT)
17:21 cconstantine fantastic.  manual tail calls it is :)
17:22 kid51 The tinderbot build failure report on MSWin32 is confirmed by the absence of any Smolder reports since r41496 yesterday.
17:22 kid51 Is there anyone on Win32 who could bisect?
17:24 mikehh jrtayloriv: I got this error with nqp a bit earlier - I think you will find that it is a permissions problem with parrot_nqp* in the build directory
17:25 mikehh jrtayloriv: I don't know what went wrong but when I did sudo chown mhh:mhh parrot_nqp* it fixed it and I haven't had the problem since
17:26 jrtayloriv mikehh, permissions and ownership are correct on all of those in my case
17:26 mikehh jrtayloriv: obviously use your id rather than mhh :-}
17:26 moritz that sounds like you did a 'make install' as root once which finished a build that was previously aborted
17:27 moritz btw blizkost has a problem that a file was generated with permissions 000
17:27 mikehh I do a sudo make install-dev to test rakudo and partcl etc
17:28 chromatic joined #parrot
17:30 rindolf Hi chromatic
17:32 kyle_l5l_ joined #parrot
17:33 ash_ joined #parrot
17:33 chromatic hello
17:34 dalek parrot: r41533 | NotFound++ | trunk (134 files):
17:34 dalek parrot: [cage] use operator comma in ASSERT_ARGS to avoid problems with short-circuited operators
17:34 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41533/
17:34 mikehh hi chromatic
17:34 rindolf chromatic: hi. May I PM you?
17:36 chromatic If you like.
17:36 rindolf chromatic: OK.
17:36 rindolf chromatic: what's up?
17:36 purl A direction away from the center of gravity of a celestial object. or the y-axis, unless you're using a strange coordinate system.
17:38 ttbot Parrot trunk/ r41533 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107627.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
17:41 workbench joined #parrot
17:52 mokurai joined #parrot
17:57 NotFound r41533 builds fine for me in win32 with strawberry perl
18:03 Whiteknight joined #parrot
18:04 dalek parrot: r41534 | mikehh++ | trunk/tools/build/headerizer.pl:
18:04 mikehh jrtayloriv: I got the same failure when I tried after config -> make -j test TEST_JOBS=5 - it tries to build nqp using ./parrot which has not yet been built
18:04 dalek parrot: fix codetest failure - hard tabs found
18:04 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41534/
18:08 ttbot Parrot trunk/ r41534 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107682.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
18:08 mikehh jrtayloriv: I could do this before and it looks like pmichaud changed things at r41514
18:09 jrtayloriv mikehh, That's what moritz was saying earlier (that he suspected 41514 might be the issue)
18:10 kid51 I recommend filing a TT and cc-ing pmichaud so that he can look at it.
18:20 Whiteknight ls
18:21 jrtayloriv . .. naughty-photos.jpg loud-music.mp3 passwords-and-pins.txt
18:23 Whiteknight make testls
18:24 mikehh bbiab
18:26 jrtayloriv bacek, When you said last night "jfyi, there is virtually no "compile-time" in scheme :)", what did you mean, in reference to me trying to use PAST::Block symbol() method to initialize builtins as lexicals in the top block?
18:29 jrtayloriv I've got a major block in my head about initializing the builtins as symbols bound to procedures, rather than just writing a "define" function, so that I can do (define define 5) and have it work.
18:29 jrtayloriv It seems like there is some really obvious way to do this, but I've read, and reread the docs for PAST and PCT and can't figure out what I need to do.
18:31 jrtayloriv bacek_at_work, ^^ or you :)
18:37 dalek parrot: r41535 | NotFound++ | trunk/t/pmc/fixedfloatarray.t:
18:37 dalek parrot: [t] cover FFA clone empty and get_bool
18:37 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41535/
18:42 ttbot Parrot trunk/ r41535 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107729.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
18:44 chromatic http://morepypy.blogspot.com/20​09/09/first-results-of-jit.html
18:49 ash_ wonder how that compares to unladen swallow
18:50 ash_ pypy seems rather limited since it only works on x86-32 bit
18:51 masak joined #parrot
18:52 chromatic I don't think Unladen Swallow is trying the metacircular approach that pypy is.  At least I think that's what pypy does.
18:54 Whiteknight that's what I think pypy does, yes
18:56 chromatic http://ftp.squeak.org/docs/OOPSLA.Squeak.html
18:57 chromatic "Smalltalk to C Translation" in specific.
18:58 * Tene hates seeing people talk about parrot as "vaporware"
19:00 chromatic http://www.rowledge.org/tim/squeak/OE-Tour.html
19:05 cotto_working joined #parrot
19:08 allison Unladen Swallow is just modifying CPython to use an LLVM jit
19:09 allison not trying for metacircular approach
19:13 Whiteknight bacek: ping
19:16 dalek parrot: r41536 | whiteknight++ | branches/pcc_arg_unify_2_0 (2 files):
19:16 dalek parrot: [misc] replace old reference to PObj_strstart with newer Buffer_bufstart. Enables build on this platform
19:16 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41536/
19:17 cconstantine I've taken Tene's stene and I'm trying to add tail calls to it (with a special '(^func arg1 arg2)' form).... and I'm having problems.  I have a feeling that I'm building my ast horribly wrong.  Could someone help? http://github.com/cconstantine/Reason
19:26 dalek parrot: r41537 | whiteknight++ | branches/pcc_arg_unify_2_0/src/pmc/cpointer.pmc:
19:26 dalek parrot: [pmc] cpointer should not attempt to mark it's P/S members. I thought this was fixed a long time ago. Fixes at least one test failure (t/pmc/null.t)
19:26 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41537/
19:31 chromatic We fixed that at least twice, a while back.
19:31 Whiteknight at least twice
19:32 Whiteknight t/pmc/stringhandle.t hangs on my system
19:33 cconstantine the tailcall portion of my ast is matched here: http://github.com/cconstantine/Reason​/blob/master/src/pct/grammar.pg#L122  and built here: http://github.com/cconstantine/Reason​/blob/master/src/pct/actions.pm#L218
19:34 chromatic Extending the Squeak Virtual Machine (this is the paper I wanted most to find): http://www.iam.unibe.ch/%7Educasse/Free​Books/CollectiveNBlueBook/greenberg.pdf
19:35 Tene cconstantine: I'll be available tonight for help. maybe 5 hours from now.
19:35 Whiteknight t/perl/Parrot_Test.t hangs too
19:36 cconstantine Tene: thanks.  In the meantime could you let me know how to print values in NQP?
19:37 Tene cconstantine: just invoke your language's printing function.
19:37 Whiteknight a lot of these test failures are segfaults, which is probably good because it's easier to debug methinks
19:37 Tene say("foo")
19:37 cconstantine Tene: i mean so I can print values as the ast is being built... like say in method tcall in actions.pm
19:39 cconstantine fantastic, right
19:43 rhr joined #parrot
19:46 Whiteknight t/pmc/fixedboolean array gets into a PIR-based infinite loop
19:49 Whiteknight it's an infinite exception handler loop
19:52 Whiteknight Ah, it's not handling a :slurpy return
19:53 Whiteknight it's only returning a single element (a String) instead of an RPA
19:55 Whiteknight Any test that uses Test::More.like() calls PGE which relies on P6object, which in turn requires :slurpy return arguments in it's onload function
19:55 Whiteknight I'm sure that accounts for a significant number of test failures (shift not implemented in class "String", etc)
19:58 Whiteknight allison: ping
19:58 allison Whiteknight: pong
19:58 Whiteknight allison: did you get my message yesterday about params/returns?
19:58 allison Whiteknight: email or IRC?
19:58 chromatic The returns code should fill out the slurpy returns appropriately.
19:58 Whiteknight allison: IRC
19:59 allison Whiteknight said: since returns are just invokes on a continuation, shouldn't we be able to unify the arg passing and returns passing functions? It's mentioned in PDD03 somewhere. Is that off the roadmap or is it part of a later refactor?
19:59 Whiteknight at least, I thought I sent an IRC message to you yesterday
19:59 allison that one?
19:59 purl i heard that one was silly to.  It's an impl detail, right?
19:59 Whiteknight yes, that one
19:59 purl that one is silly to.  It's an impl detail, right?
19:59 allison we can't unify them at the moment
19:59 Whiteknight because if we could just duplicate Parrot_pcc_fill_params_from_op into Parrot_pcc_fill_returns_from_op, we would fix a lot of test failures right now
20:00 Whiteknight at least, adding support for :slurpy returns
20:00 allison an earlier revision (pretty sure it's Chip's time) put the call to  get_results *before* the call to invoke
20:00 allison so, it's all backwards
20:01 allison the current system has to set up storage locations for the results before the call, and fill them during the call
20:02 allison so the logic is completely different for fill_params and fill_returns
20:02 allison (unfortunately)
20:02 Whiteknight okay, I see what you are talking about now
20:02 chromatic That doesn't work in the face of NCI invoke, for example.
20:02 chromatic I've worked around that for ages.
20:02 allison yes, we need to change it back to how cps was meant to work
20:03 allison (call and return are the same behavior)
20:03 Whiteknight but that's a separate refactor
20:03 allison but, ... aye
20:04 allison for now, add slurpy handling to fill_returns separately, and we'll collapse later
20:04 Whiteknight ok
20:07 NotFound Parrot_oo_get_namespace is never used in the repo
20:07 allison NotFound: what's used instead?
20:08 NotFound The Class attribute, directly.
20:09 NotFound Parrot_oo_new_object_attrs is also never used
20:11 NotFound His pod says is needed for places like Parrot_oo_clone_object, but Parrot_oo_clone_object doesn't use it
20:25 Whiteknight I may have added Parrot_oo_new_object_attribute at one point when I was trying to fix a bug in Parrot_oo_clone_object
20:25 Whiteknight of course, I seem to remember my "fix" created segfaults, so I'm sure it's all been refactored
20:26 allison NotFound: the idea of Parrot_oo_get_namespace was to hide the class access behind an abstraction layer
20:26 allison NotFound: reducing direct access to attributes
20:27 NotFound allison: I suppose so, but looks like nothing by functions that are already using Class internals needs it.
20:27 NotFound s/by/but
20:27 allison but, the get_class vtable function is sufficient
20:28 allison (there's no get_namespace vtable function)
20:29 allison mmm... not explaining very well
20:29 NotFound The problem is that if no accesible part is using it, it cannot be tested.
20:29 allison NotFound: basically, yes, feel free to mark Parrot_oo_get_namespace as deprecated
20:30 allison NotFound: it can be tested in C
20:31 NotFound allison: I don't think is reasonable to test from C functions that aren't in the extern/embed interface.
20:31 allison NotFound: exactly
20:31 NotFound So, put it in extern, or deprecate.
20:32 allison NotFound: the decision is basically whether C extenders/embedders have access to the feature another way, or don't need access to the feature
20:34 bacek Good morning #parrot
20:34 NotFound I guess it can be useful to add subs to the namespace from C :?
20:34 allison NotFound: or introspect the namespace object for a particular class
20:35 allison but, better as a part of the 'inspect' vtable function, than yet-another-API-function
20:35 NotFound inspect_str provides acces to it
20:36 NotFound inspect also
20:37 allison then the C function is really redundant
20:37 NotFound We can deprecate it, then.
20:37 allison NotFound: agreed
20:38 allison NotFound: I'm inclined the same direction for Parrot_oo_new_object_attrs
20:38 allison bacek: could you fill me in on the pcc_arg_unify_2_0 branch?
20:39 allison bacek: work done so far, problems, etc?
20:39 NotFound allison: I think we can just get rid of that, it uses strcitly internal structrures.
20:39 bacek allison: I've merged recent trunk into pcc_arg_unify_2_0.
20:39 allison NotFound: yes, it really shouldn't be part of any publich API
20:40 NotFound Going to kill it now, then.
20:40 bacek It was a lot of conflicts. I resolved some of them in wrong way.
20:40 allison bacek: merged trunk into branch or branch into trunk?
20:40 allison bacek: (a fresh copy of trunk, I should say)
20:40 cconstantine Is there a language built on parrot that generates tailcalls?
20:41 allison bacek: since I wasn't sure of the status, I started working on a git branch of parrot trunk
20:41 bacek allison: technically - branch into trunk. I created new branch and merged old branch into it
20:41 allison bacek: I can give you a patch that applies cleanly to trunk pretty quickly here
20:42 allison bacek: and yes, there are some conflicts (about a dozen .rej files)
20:42 bacek It will be good.
20:42 allison bacek: did you use svn merge, or reapply a patch?
20:43 bacek allison: I use local git checkout.
20:43 bacek allison: r41453 is my "merge point"
20:43 Whiteknight I'm using pcc_arg_unify_2_0 here, and it's working very well
20:43 allison bacek: okay, but how did you apply the old changes to the git checkout?
20:43 bacek (With list of conflict files)
20:44 Whiteknight a few hiccups, but debugging now
20:44 allison bacek: more out of curiosity, than anything else
20:44 allison Whiteknight: aye, but he had to revert a bunch of changes
20:44 allison Whiteknight: so it's not a full merge
20:44 bacek allison: git checkout -c pcc_2_0_local; git reset --hard remotes/pcc_arg_unify_2_0; git merge pcc_arg_unify_local
20:44 Whiteknight oh, then I won't play there anymore
20:45 bacek allison: so, I just merged 2 local branches.
20:45 allison Whiteknight: play away, just don't commit anything :)
20:45 Whiteknight I already did commit two small fixes to pcc_arg_unify, but I'll chill out on that for now
20:45 allison bacek: got it
20:46 Whiteknight Just let me know where I should go instead, I want to get my hands on this
20:46 allison Whiteknight: well, if you can give me the changes as patches later, then no problem going ahead and committing
20:46 bacek allison: I fixed some merge conflicts in subsequent commits. Not all of them...
20:48 allison bacek: I'm looking through the 2.0 branch as I work through the conlicts
20:48 allison bacek: in this particular case, the patch approach seems to be working more cleanly than the merge approach (a tip I picked up from Greg KH)
20:49 dalek parrot: r41538 | NotFound++ | trunk (2 files):
20:49 dalek parrot: [cage] kill unused and unneeded function Parrot_oo_new_object_attrs
20:49 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41538/
20:50 bacek allison: with git-svn - probably yes. Unfortunately in this case rebase doesn't work properly...
20:53 ttbot Parrot trunk/ r41538 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107813.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
20:53 allison bacek: the linux devs use patches and quilt extensively
20:54 allison bacek: and strongly recommend against using rebase for any published repository
20:54 NotFound Never remember that... If I add the deprecation note now, when is eligible?
20:54 allison (i.e. for any repository that anyone else is likely to be cloning)
20:54 allison NotFound: 2.1
20:55 allison (that is, the functions may not be included in 2.1, though they will be included in 2.0)
20:55 bacek allison: for published - yes. But during initial development it's very helpful.
20:55 chromatic A merge rebase is different from a rebase on a published tree.
20:57 allison I think I might have figured out part of why the git-svn folks are so frustrated, they're pulling the whole svn repo into git, instead of just trunk
20:57 NotFound allison: Type for the deprecation ticket is 'cage' ?
20:59 allison NotFound: aye
21:00 bacek allison: full svn repo allow to work with branches in svn.
21:01 allison bacek: which is exactly the problem, it's trying to use the svn branching model in git, which is painful
21:03 bacek allison: there is my workflow on using svn branches with git in trac. It's not exactly "painful", but "less than awesome" :)
21:04 Whiteknight the pain point isn't using SVN or Git, it's trying to use them together
21:04 Whiteknight either-or is much preferrable to both
21:04 allison Whiteknight: nah, a quick git branch from trunk is easy-peasy, so is developing for trunk
21:04 bacek https://trac.parrot.org/pa​rrot/wiki/git-svn-tutorial #Tracking SVN branches with GIT
21:05 allison a quick git copy of any svn branch is also easy
21:05 allison bacek: yeah, reading that is when I realized the pain was coming from
21:06 allison ... the way people were using git-svn
21:06 chromatic Yep.  SVN branches are painful.
21:07 bacek it's just more natural to git to have a lot of branches.
21:07 bacek And what chromatic said :)
21:07 bacek anyway, $dayduties time
21:08 allison what's the modern way of saying CONTEXT(interp)->current_sig
21:08 bacek allison: feel free to use pcc_arg_unify_2_0 branch for anything. Or just scrap it and create new one
21:08 bacek allison: I've added accessors for it
21:08 cconstantine joined #parrot
21:08 bacek r41454
21:08 allison bacek: which file are they defined in?
21:09 allison (or, which is the right one to use here)
21:09 bacek allison: src/call/context.c
21:09 allison bacek: cool, thanks!
21:09 dalek TT #1069 created by NotFound++: Deprecate Parrot_oo_get_namespace
21:09 Whiteknight I feel like that API needs some tweaking, but that's another issue for another refactor
21:09 bacek ok, see you soon.
21:10 bacek Whiteknight: there is few tickets for Context API already :)
21:10 cconstantine Is the .return() after the .tailcall safe?   http://nopaste.snit.ch/18073
21:11 Whiteknight bacek: I don't agree with your opinon on the Context ATTRs either, but that's also not for me to worry about now
21:11 moritz cconstantine: it's never reached, so it should be no problem
21:11 cconstantine moritz: that's what I thought
21:12 dalek parrot: r41539 | NotFound++ | trunk (2 files):
21:12 dalek parrot: [cage] deprecation notice for Parrot_oo_get_namespace, TT #1069
21:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41539/
21:13 chromatic I almost want to suggest that context registers (passing/returning) need separate storage from local registers.
21:13 chromatic Then I think "Oh right, continuations".
21:14 allison passing/returning doesn't use registers at all anymore
21:14 allison (branch, not trunk)
21:15 * Whiteknight has so many tickets that are going to be closable immediately or shortly thereafter the PCC branch merges
21:16 Whiteknight :invocant will be easy to add, :lookahead, :signature, etc
21:16 allison oh, I forgot, current_sig is a new addition to the interpreter in the branch, so doesn't have an interface yet in trunk
21:16 Whiteknight be able to fix the stupid way that hash keys are passed
21:17 chromatic We've gone afield from one advantage of register machines though: not copying memory contents around.
21:18 ttbot Parrot trunk/ r41539 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107867.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
21:18 allison chromatic: aye, that happened with the change to variable sized local register sets
21:18 chromatic Exactly.
21:19 Whiteknight i don't think there is a sane way to bring that back either
21:19 allison chromatic: but encapsulation is such a huge security/concurrency advantage, it would be tough to go back to a single global register set
21:19 chromatic I'm not sure how we could have helped that though, with the various argument processing mechanisms.
21:21 allison chromatic: at least it's only ints and floats that get copied, strings and pmcs are just a pointer copy
21:23 chromatic Even still, the Dis paper suggested that their biggest benefit was avoiding copies entirely.
21:24 Whiteknight Dis paper?
21:26 allison chromatic: probably true at the time, no one really envisioned register usage like we've got
21:28 allison how do I get the current context PMC?
21:29 allison looks like CURRENT_CONTEXT
21:30 allison (with a comment that it should be replaced by an interface function, but I don't see an appropriate interface function)
21:31 cconstantine moritz: the error I'm getting is that 'String' doesn't have an 'invoke'  shouldn't that func be calling .invoke() on the lexical variable 'func1' not the string object 'func1'?
21:33 moritz cconstantine: no
21:34 moritz cconstantine: you might need a find_lex to look up the variable
21:35 cconstantine ahhh, I see how that's missing now
21:35 NotFound allison: Parrot_cx_get_context ?
21:37 NotFound Uhh... looks like that name is used in a macro, but never declared or defined :?
21:38 NotFound As expected, the macro is never used
21:38 allison maybe Parrot_pcc_get_context
21:39 NotFound allison: there is Parrot_pcc_get_context_struct
21:39 allison (since changing cx to pcc was one of the changes I made)
21:39 bacek Parrot_pcc_get_context. _struct fetches underlying structure.
21:39 allison NotFound: I want the PMC, rather than the struct inside the PMC
21:39 bacek Not sure that I added it.
21:40 darbelo joined #parrot
21:40 allison bacek: I used CURRENT_CONTEXT for now, can update to interface function when there is one
21:41 allison bacek: most of the other interface functions require a PMC argument for the context (which is exactly what they should do)
21:41 bacek It's better to use CURRENT_CONTEXT anyway. We can switch between API func in debug build and direct poking into Interp in optimized.
21:41 bacek Similar to registers
21:42 bacek (PMC) and yes, underlying structure shouldn't be exposed at all
21:43 allison bacek: good to know
21:43 allison bacek: is the stray Parrot_cx_get_context that NotFound found removable?
21:43 NotFound #define PMC_context(pmc) Parrot_cx_get_context(interp, (pmc))
21:44 bacek allison: I think I removed it... If no - it should be removed in favour of _pcc_ version
21:44 bacek Just kill this define
21:51 bacek allison: btw, should we kill Context.current_results and results_signature? Looks like they shouldn't be used anymore
21:52 allison bacek: that and a whole pile of no longer used functions, but I'm holding off on removals until all the tests are passing
21:52 bacek allison: ok
21:57 bacek allison: can you update wiki page with explanations when "caller_sig" and "current_sig" should be filled. And when new Context should be pushed? I'll try to look at it tonight.
21:57 * bacek finally run away to $dayjob
21:57 allison bacek: sure
22:08 ttbot Parrot trunk/ r41540 MSWin32-x86-multi-thread make error http://tt.ro.vutbr.cz/file/cmdout/107925.txt ( http://tt.ro.vutbr.cz//buil​dstatus/pr-Parrot/rp-trunk/ )
22:08 Whiteknight allison: where are you doing the PCC stuff now? svn branch? git branch?
22:10 dalek parrot: r41540 | NotFound++ | trunk/include/parrot/context.h:
22:12 dalek parrot: [cage] delete unused and unimplemented macro PMC_context
22:12 dalek parrot: review: https://trac.parrot.org/parrot/changeset/41540/
22:12 allison Whiteknight: a local git branch
22:12 Whiteknight ok
22:12 allison I have a github account, but don't know how to push a local git branch up to github
22:13 allison Whiteknight: but as soon as I have a clean diff of old changes to new trunk, I'll create an svn branch
22:13 Whiteknight ok
22:13 allison just finished with the last rejected change in the patch
22:14 Whiteknight ok
22:16 chromatic allison, you should be able to add a GH repository as a remote, then push there... but that's just FYI not a suggestion.
22:16 cotto It's nice to see allison playing with git.
22:17 allison chromatic: I have a github account....
22:17 allison chromatic: but, should I be pushing my master, or my git branch of the branch?
22:18 allison chromatic: or, does it really matter?
22:18 purl does it really matter are you planning on staying at the airport?
22:18 allison purl: no, I've had enough of airports
22:18 purl allison: i'm not following you...
22:36 Whiteknight ...and there is so much cleanup to do everywhere!
22:46 cotto How's that raid on pcc_arg_unify going?
22:49 darbelo The castle's sieged and the architect's working on breaching the main wall.
22:49 cotto I was happy to see the new wiki page.
22:49 Whiteknight cotto: no raiding. Still waiting. Allison is creating a new branch
22:51 allison Whiteknight: okay, I've published my git branch in progress http://github.com/allisonrandal/pcc_testing
22:52 allison Whiteknight: got another context fix to make in core.ops
22:52 Whiteknight okay
22:52 preflex joined #parrot
22:54 darbelo /me brings his trebuchet
22:54 allison somehow adding a remote repo for publishing make .gitignore stop working...
22:54 allison s/make/made/
22:56 Whiteknight yeah, the git checkout thing is throwing an error about a remote repo
22:56 mokurai joined #parrot
22:59 allison Whiteknight: what's the error?
22:59 purl allison: Is a directory
22:59 Whiteknight remote HEAD refers to nonexistent ref, unable to checkout.
23:00 allison are you doing git clone git://github.com/allisonrandal/pcc_testing.git foobar
23:01 Whiteknight yes
23:02 allison looks like it's because I pushed from a local branch of a branch, instead of local master
23:02 japhb Tene, around?
23:04 allison Whiteknight: okay, do it now
23:04 allison Whiteknight: (I had to push the master too)
23:05 japhb darbelo, did Tene post a patch for his Plumage fetch code?  I don't see a commit for it in the repo ...
23:06 darbelo japhb: I'm not sure he did. Let me check the backscroll.
23:06 Whiteknight no love
23:07 darbelo Whiteknight: works for me.
23:07 Whiteknight well la-de-dah darbelo.
23:07 Whiteknight :)
23:07 cotto me too
23:07 Whiteknight I'm sure I have something screwed up settings-wise here
23:07 allison Whiteknight: you'll get the master, but looks like the changes on my sub branch
23:07 allison don't go through that way
23:08 Whiteknight okay, what's the command I type then?
23:08 Whiteknight (git newbie here, this is my first git branch)
23:09 cconstantine is there anything I need to include to use sprintf in pir?
23:09 cotto I'm really glad to see some development done on Parrot using git.
23:09 Whiteknight cconstantine: shouldn't be. Have a built-in sprintf op
23:09 cotto even if it doesn't represent a commitment either way
23:10 cconstantine Whiteknight: I'm getting various errors about sprintf* not being found
23:11 Whiteknight cconstantine: what C compiler are you using? sprintf is a builtin C runtime routine. It should be everywhere
23:11 allison git clone   git://github.com/allisonrandal/pcc_testing.git localname
23:11 cconstantine uh, I'm on a mac... created the language by copying stene... it appears to be created with one of the dev/ mk_language scripts
23:11 darbelo cconstantine: if you want your language to write a sprintf builtin you'll have to wrap the opcode, look at builtins.pir for an example.
23:12 allison Whiteknight: but that won't give you what you want just yet
23:12 cconstantine darbelo: I'm trying to use sprintf from within a builtin
23:13 Whiteknight cconstantine: can you nopaste your configure output?
23:13 cconstantine Whiteknight: you mean the makefile?
23:14 Whiteknight cconstantine: no, the console output
23:14 cconstantine so, ignoring my language for now... I wrote a simple test.pir that calls sprintf and I'mg etting the same errors
23:15 cconstantine http://nopaste.snit.ch/18074
23:15 cconstantine oh.. right, parrot's .Configure output
23:16 Whiteknight yeah, Parrot's :)
23:16 cconstantine http://nopaste.snit.ch/18075
23:18 Whiteknight well, that should have everything you need.
23:18 darbelo Whiteknight: he wants to use the opcode sprintf from his HLL. I'm not sure the configure output helps here.
23:18 Whiteknight what was the exact error you were getting about sprintf?
23:18 cconstantine darbelo: right now I'm just trying to use it in a .pir file run as './parrot test.pir'
23:19 cconstantine error:imcc:The opcode 'sprintf_p_sc' (sprintf<2>) was not found. Check the type and number of the argument in file 'test.pir' line 10
23:20 cconstantine that is from '$P0 = sprintf "foo"' in my test.pir
23:20 Whiteknight ah, you can't use a $P0 return value
23:20 darbelo try '$S0  sprintf "foo"'
23:20 zerhash joined #parrot
23:21 cconstantine $S0 = sprintf "fo"
23:21 cconstantine ?
23:21 Whiteknight yessir
23:21 Whiteknight and if you want a String PMC, use $P0 = box $S0
23:21 allison Whiteknight: try this sequence...
23:21 allison git clone git://github.com/allisonrandal/pcc_testing.git foobar
23:21 allison git fetch origin +pcc-reapply:pcc-reapply
23:21 allison git checkout pcc-reapply
23:21 cconstantine "error:imcc:The opcode 'sprintf_s_sc' (sprintf<2>) was not found."
23:21 allison that should set you on a current local branch that's the same as my current local branch
23:22 allison (with a 'cd foobar' between git clone and git fetch
23:22 allison )
23:22 Whiteknight right, got it now. Thakns
23:23 Whiteknight cconstantine: sprintf has two forms, both have three arguments
23:23 Whiteknight so try this sequence:
23:23 Whiteknight $P0 = null
23:23 Whiteknight $S0 = sprintf "foo", $P0
23:24 Whiteknight $P1 = box $S0
23:25 cconstantine hm, that worked
23:25 Whiteknight yay!
23:26 cconstantine still having problems, but now it's the next problem :)
23:28 Whiteknight good, progress
23:29 Tene japhb: oops, looks like I forgot to push
23:29 japhb Tene, ah.
23:29 japhb Easy fix there.  :-)
23:30 Tene japhb: pushed
23:31 Tene cconstantine: ping
23:31 cconstantine Tene: pong
23:32 Tene cconstantine: still trying to print from actions.pm?
23:32 Tene or did you figure that out?
23:32 japhb Tene, Confirmed.  Thanks!
23:32 cconstantine Tene: figured that out
23:33 cconstantine Tene: I've figured out that the problem is when the function to call is a var, it's always thinking the func is a global
23:34 cconstantine 'the problem' being the tail call problem
23:35 kid51 joined #parrot
23:36 darbelo left #parrot
23:37 Tene japhb: available to review patch?
23:37 jrtayloriv I'm having trouble figuring out why the PAST::Op in method TOP can't find 'say' (using the builtins/say.pir that is genereated by mk_language_shell) --> http://pastebin.com/d510a56b8  (I know this shouldn't be there, btw -- I'm just trying to learn how to construct/use Op nodes correctly.)
23:38 japhb Tene, the one you just committed or a new one?  (The one you just committed I will be looking at in a couple minutes, after I finish my journal for last week's work)
23:38 Tene th elatter
23:41 japhb Tene, go ahead and nopaste, I'll look at it in a few minutes.
23:41 Tene erm.. the former
23:41 Tene :P
23:45 cconstantine I'm looking to create an invoke() method for String and having problems.  I've defined a .sub as ".sub invoke :method :vtable" and I'm still getting 'invoke not implemented on class String'
23:45 Tene invoke on string? o.O
23:45 cconstantine oh yes
23:45 cconstantine as a pass through to sprintf
23:45 Tene cconstantine: despite what I think of "invoke on string" :) it's actually not possible in parrot currently.
23:46 cconstantine so I can do ("some num $d" 1)
23:46 Tene You can't override the invoke vtable.
23:46 cconstantine oh poo.  I guess (sprintf "foo: %d" 1) will ahve to do ;)
23:46 Tene This will be possible to fix sometime after the pcc refactors are done.
23:46 cconstantine ok
23:50 japhb Tene: OK, journal not finished, but I'm at a decent stopping point, so in the interest of getting you moving again, reviewing the patch now.
23:50 Tene japhb: I was just preparing to go out for dinner. :)
23:51 Tene Searching on yelp for something good where I'm teaching this week.
23:51 japhb Tene, that's fine, I'll review and you'll have something yummy to read for desert.  :-)
23:51 japhb Where are you teaching?
23:51 Tene Bellevue, WA.
23:51 Tene Just south of Redmond.
23:53 japhb Nodnod
23:53 japhb What are you teaching?
23:53 Tene Intro to Linux
23:53 Tene Shell scripting, VI, fdisk/mkfs, installation, ssh, etc.
23:53 cconstantine fun fun
23:54 Tene Why did I capitalize vi? o.O
23:54 cconstantine no emacs!?!?! (j/k)
23:55 Tene cconstantine: emacs is discussed, but vi is recommended, due to its prevalance as the standard editor.
23:55 Tene ;)
23:55 cconstantine hehe
23:57 patspam joined #parrot
23:59 * Whiteknight disappears into the night
23:59 Whiteknight later

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

Parrot | source cross referenced