|
Parrot 2.0.0 "Inevitable" released! | parrot.org | Priorities: merge tt_389_fix and one_make branches | Roadmap: icanhaz.com/parrotroadmap | Latest modified TT's: icanhaz.com/parrotbugs Set by moderator on 23 January 2010. |
|||
|
00:10
payload joined
00:39
cognominal joined
|
|||
| kid51_at_dinner | msg Coke Please see r43577: realclean;configure;make;clean;make works for me | 00:42 | |
| purl | Message for coke stored. | ||
| kid51 | Smolder, at least intermittently, is giving proper feedback and not timing out. | 00:45 | |
| cconstantine | How would I go about creating a non-anonymous function declaration in PAST? I set the subid, but it still has a :anon in the generated PIR | 00:46 | |
| dalek | rrot: r43577 | jkeenan++ | branches/one_make/config/gen/makefiles/root.in: 'clean' target has been deleting files which are still being created during re-enables successful 'make' after 'make clean'. This is valid on assumption that gen::opengl will continue to create those files. |
00:48 | |
| Tene | cconstantine: :name('foo') | 00:53 | |
|
00:59
PacoLinux joined
|
|||
| dalek | rrot: r43578 | coke++ | branches/one_make/tools/dev/checkdepend.pl: Re-add XXX removed in 43575 ; this is a todo in a branch; it'll get a ticket |
01:04 | |
| Coke | cotto_w0rk: tools/dev/checkdepend.pl is barfing. | 01:07 | |
| ok 153 - compilers/tge/TGE/Rule.pir has correct dependencies (. | |||
| Use of uninitialized value $rule_deps in split at tools/dev/checkdepend.pl line 261. | |||
| dalek | TT #1413 created by jkeenan++: Convert planet.parrotcode.org to planet.parrot.org | ||
|
01:14
LaVolta joined
|
|||
| cconstantine | Tene: I forgot! that worked, thanks! :) | 01:46 | |
|
01:56
cognominal joined
02:02
cotto joined
02:17
eternaleye joined
|
|||
| nopaste | "kid51" at 70.85.31.226 pasted "checkdepend.pl: This patch makes uninitialized value warning go away -- but is it what we want?" (158 lines) at nopaste.snit.ch/19340 | 02:21 | |
| kid51 | sorry, wrong paste | 02:22 | |
| nopaste | "kid51" at 70.85.31.226 pasted "checkdepend.pl: This patch makes uninitialized value warning go away -- but is it what we want?" (19 lines) at nopaste.snit.ch/19341 | ||
| kid51 | that's more like it | 02:23 | |
| cotto | that's fine | 02:24 | |
| I'll apply that. | 02:28 | ||
| actually, you can. I have some other stuff going on in that file and we haven't switched to git yet. | 02:29 | ||
| kid51 grows old waiting for 'svn diff' to complete on orderedhash_revamp branch ;-) | 02:34 | ||
| cotto | If you don't feel like committing, the change will go in next time I commit. | 02:36 | |
| kid51 | It's on its way | 02:39 | |
| dalek | rrot: r43579 | jkeenan++ | branches/one_make/tools/dev/checkdepend.pl: Check for truth (non-empty string) on rule dependencies, rather than definedness. |
02:41 | |
| cotto | good use of apostrophe | 02:53 | |
| anyone up for a makefile question? | 02:58 | ||
| nopaste | "cotto" at 96.26.227.153 pasted "is this a valid rule?" (10 lines) at nopaste.snit.ch/19343 | ||
| cotto | make doesn't seem to choke on it, fwiw | 03:00 | |
| Bah. The tool is already approaching a reimplementation of make and it's still not catching some stuff. I'm wondering if this is the right approach. | 03:03 | ||
|
03:11
plobsing joined
|
|||
| kid51 | By 'the tool', do you mean checkdepend.pl? | 03:12 | |
| cotto | yes | ||
| Coke | what does r43579 buy us? | ||
| kid51 | It eliminates the uninitialized value warning you were getting. | ||
| Nothing else. | |||
| purl | nothing else is probably counting how many hours scrottie's computer has been on! SMART rules! | ||
| Coke | that works. | 03:13 | |
| cotto_w0rk: why would that not be a valid rule? | |||
| cotto | I'm not especially familiar with makefile syntax | 03:14 | |
| It looked valid from what I could find but I wanted to verify. | |||
| Coke | A : B is pretty basic. | 03:17 | |
| (you can always just do a make clean, make <target> to see.) | 03:18 | ||
|
05:25
chromatic joined
|
|||
| cconstantine | anyone left in here? | 06:09 | |
| I'm attempting to invoke a compiler directly and run the resulting code.... I know I'm getting back a block (defining a sub). How do I go about executing it? | 06:10 | ||
| github.com/cconstantine/Reason/blob...ns.pm#L204 | 06:12 | ||
| replcaing 'magic goes here' with a call to the generated function | |||
| cotto | does $code() not work? | 06:14 | |
| cconstantine | it does not | 06:16 | |
| well... I'm defining a func with 1 arg | 06:17 | ||
| $code() gives me a 'not enough args' error | 06:18 | ||
| $code(1) gives me a 'Null PMC access in invoke() | |||
| got it! | 06:27 | ||
| i wasn't setting the HLL for the block | |||
| cotto | happy | 06:36 | |
|
06:39
cognominal joined
|
|||
| dalek | rrot: r43580 | cotto++ | branches/one_make/tools/dev/checkdepend.pl: [checkdepends] add line and file info to output |
07:48 | |
|
07:53
fperrad joined
08:25
joeri joined
09:06
chromatic joined
10:10
AndyA joined
12:16
muixirt joined
|
|||
| muixirt | hi | 12:16 | |
| purl | bonjour, muixirt. | ||
| muixirt | what version of prove does setup.pir need? | ||
|
12:39
kid51 joined
12:42
Whiteknight joined
12:56
LaVolta joined
|
|||
| muixirt | hi Whiteknight | 13:28 | |
| Whiteknight | hello muixirt | 13:30 | |
| muixirt | sorry for my comments :-) | 13:31 | |
| Whiteknight | it's okay. Parrot needs criticism | ||
| it's healthy | |||
| things have been moving relatively slow lately, I have noticed that | |||
|
13:48
Austin joined
|
|||
| Austin | moo | 13:48 | |
| muixirt | hi Austin | 13:49 | |
| Austin | Hi muixirt. | ||
| muixirt | is 'Close' active? | ||
| Austin | I think that the FPA .sort() method should return self. | ||
| mux: not at present. I'm working on kakapo so I can (eventually) get back to close. | |||
| muixirt | kakapo? | 13:50 | |
| purl | kakapo is a program framework, runtime library, and collection of useful functions for NQP programs. | ||
| Austin | In particular, I would like to be able to do this: 7 for %hash.keys.sort { say($_); } 0 | ||
| Right now, RPA inherits FPA.sort, which returns nothing. | 13:51 | ||
| muixirt: kakapo is a RTL for NQP programs. I extracted a lot of utils from the close compiler | 13:52 | ||
| TT#1414 | 13:57 | ||
| Okay, this is weird. Why doesn't a parent class show up in the list? | 14:05 | ||
| kid51 | Whiteknight: Can you look at trac.parrot.org/parrot/ticket/850 ? Should we just close it? | 14:07 | |
| dalek | TT #1414 created by Austin_Hastings++: Change ??A .sort() methods to return self | 14:08 | |
| kid51 | Austin: Re 1414: what do RPA and FPA mean? | ||
| Austin | Resizable/Fixed Pmc Array | ||
| kid51 | Given that I had to ask that, you might want to clarify that in ticket. | ||
| Austin | I added a note | 14:10 | |
| kid51 | thanks | 14:11 | |
| Is this issue related at all to that in trac.parrot.org/parrot/ticket/218 ? | 14:12 | ||
| Whiteknight | kid51: looking | ||
| Austin | kid51: No. #218 was a problem related to "internal" (C-level) objects versus "external" (pir-level) objects. 1414 is simply a request that whatever the object type, the invocant should be returned after the sort. Currently, nothing is returned after the sort. | 14:15 | |
| While there *are* some sort-related TTs already, none of them that I saw (search: sort array) pertained to the return value. | 14:17 | ||
| Whiteknight | it seems we need a bigger policy about the return values of mutator methods that modify a PMC in place | 14:26 | |
| sort is just one example | 14:27 | ||
| Austin | Good morning, Andrew. | ||
| Q{ This compiler is built with the Parrot Compiler Toolkit, parrot revision 0. } | 14:28 | ||
| Possibly a useless message. But at least it says parrot. | |||
| I'd think that in-place modification should always return self. I'm thinking now about how to get self back from things like shift. | 14:29 | ||
| Here's a question: If I find what I think is a bug in nqp (parrot-nqp), how do I know if it's a -rx bug, or an nqp bug? | 14:31 | ||
|
14:32
cognominal joined
14:34
payload joined
|
|||
| kid51 | Whiteknight: trac.parrot.org/parrot/ticket/993 Can you respond to dukeleto? Thanks. | 14:39 | |
|
14:41
cghene joined
14:52
fperrad joined
|
|||
| Whiteknight | kid51, sure | 14:52 | |
| dalek | TT #643 closed by jkeenan++: Segfault while compiling fperrad's lua | 14:56 | |
| cconstantine | I'm trying to write a function that gets a PAST object as an argument and returns a PAST node who's value is the given PAST object... If I pass in the PAST object to a new PAST::Val as it's :value I get an "undefined identifier 'Capture'" error. Is it possible to have a PAST Node who's runtime value is another PAST node? | 15:06 | |
| github.com/cconstantine/Reason/blob...ns.pm#L198 | 15:08 | ||
| I think I'm getting the PAST tree I want | 15:11 | ||
| parrot.pastebin.com/d4951469b | 15:12 | ||
| Austin | cconstantine: you can't do that. | ||
| cconstantine | *pout* | 15:13 | |
| dalek | TT #681 closed by whiteknight++: Cannot use a PIR object for IO | ||
| cconstantine | but I wanna? | ||
| Austin | The Past::Value class expects something that it can store in a string and pass literally to pir | ||
| cconstantine | hmmm | ||
| Austin | So the :value has to be literal-compatible | ||
| cconstantine | right | ||
| Austin | (0x01, 1, "hello, world", etc.) | ||
| cconstantine | which another PAST::Node isn't | ||
| so mabe I want a PAST::Var ? | 15:14 | ||
| Austin | Looks like you want an expression, no? | ||
| But why the indirection? | |||
| cconstantine | it's for the (quote <foo>) lisp form | 15:15 | |
| Austin | Okay. What's that? | ||
| purl | that is the case, but I don't know | ||
| cconstantine | a lisp macro is a function that returns a list that can be compiled | ||
| so, a list like (PAST::Symbol .... ) | |||
| would compile to an invoke call on the PAST::Symbol | 15:16 | ||
| Austin | Okay. | ||
| So should you just store the string, and do an "eval" on it later? | |||
| cconstantine | to write macros I need to be able to say: (list (quote say) (quote 1)) so that I get back a list of PAST nodes instead of they're values | ||
| no, that would be the C way of doing macros (aka, "The Bad Way") | 15:17 | ||
| Austin | Are you compiling this, or interpreting the AST? | 15:18 | |
| cconstantine | Aren't those kind of the same thing? | ||
| Austin | Clearly not. | ||
| Else I would not have asked. | |||
| cconstantine | oh, not 'interpreting' like QBasic is interpreted | ||
| I am compiling it | 15:19 | ||
| Austin | Using the PAST/POST/PIR cycle? | ||
| cconstantine | yup | ||
| Austin | So how do you imagine the macros are going to work? | ||
| cconstantine | when a programmer does a (defmacro foo (x) (list (quote say) x)) a macro named 'foo' is created | 15:20 | |
| the macro 'foo' is really just a function that is registered and available to execute at runtime | |||
| I have that part working | |||
| see the compile_defmacro form | |||
| in the foo example the function returns a list whose first value is a symbol 'say' | 15:21 | ||
| so when I call 'foo' later, the call to it is compiled and executed. the returned value is a list and I continue compiling that list | 15:22 | ||
| oh, I'm missusing 'compile' there | |||
| I take that list to a PAST tree | |||
| and I return that isntead of a call to foo | |||
| Austin | But you don't really return a past tree, because what would anyone do with it? You need to return a sexp that will compile the list and return its result, no? | 15:23 | |
| cconstantine | right, the macro returns an sexp | ||
| the call to 'to_past' takes that sexp and converts it to a PAST tree github.com/cconstantine/Reason/blob...ns.pm#L271 | 15:24 | ||
| Austin | So I think you want to built a call to a function that does an eval, or a "compile the rest of this past tree" if you like. | ||
| cconstantine | I have that | ||
| Austin | So use that instead of your Past::Value node. | 15:25 | |
| cconstantine | the $code object created/stored in %?MACROS is invoke-able, so I just call exec_macro on it | ||
| Austin | FYI, looking at compile_node, it is possible to store subs in a hash table. | 15:26 | |
| cconstantine | yeah, I tried that for about 2 seconds and it didn't work | ||
| I'll probably convert to that at some point | |||
| I know the big if/else block is ugly | 15:27 | ||
| nopaste | "Austin" at 68.37.46.53 pasted "subs in hash" (15 lines) at nopaste.snit.ch/19345 | 15:28 | |
|
15:28
jan joined
|
|||
| cconstantine | thanks :) | 15:28 | |
| dalek | TT #1415 created by coke++: parrot macport for 2.0.0 | 15:29 | |
|
15:29
bacek joined
|
|||
| Austin | So it seems like you've got this working. | 15:30 | |
| What's the problem? | |||
| purl | well, the problem is that WikiDoc doesn't use Pod formatting codes, and I don't like to have two sets of formatting codes. | ||
| cconstantine | hehe | ||
| the only thing that isn't working is the 'quote' form | |||
| Austin | The relationship between quote and defmacro is? | 15:31 | |
| Because it seems like quote might be a noop here. | 15:32 | ||
| cconstantine | for me to be able to compile the sexpr returned by the macro I need to be able to quote symbols so i don't get back the value of the symbol (like the sub 'say' instead of the PAST::Var who's name is 'say') | ||
| Austin | Ah, but in other cases you want the value, right? | ||
| cconstantine | right | ||
| sometimes I want the value... actually most of the time I want the value | |||
| Austin | (defmacro foo (x) (quote say) x) | ||
| cconstantine | something like that :) | 15:33 | |
| (defmacro foo (x) (list (quote say) x)) | |||
| Austin | So then quote has to defer ... | ||
| Which means putting "say" into a PAST::Val | |||
| cconstantine | to which (foo 'bar') would be rendered as a (Symbol<say> Val<'ba'>) | 15:34 | |
| Austin | But the result of "quote" can't be a value. It has to be a sexp that expands its first arg. | ||
| cconstantine | the value of quote can be a PAST::Node type | ||
| but that node's rvalue needs to be another PAST::Node | |||
| or a PMC | |||
| Austin | So you need an identity function? | ||
| (quote x) => x | 15:35 | ||
| cconstantine | not exactly | ||
| (quote x) => Symbol(x) | |||
| so it looks liek I need to create a block, and have the value of the block be the symbol | 15:36 | ||
| (quote (a b c) ) => (a b c) too... this isn't just about symbols | |||
| Austin | what does exec_macro do? | 15:38 | |
| cconstantine | it's just the only way I know how to get a :flat | ||
| I need to flatten the arguments out from a list (or array) into an argument list | |||
| so it's a PIR sub in compiler.pir | 15:39 | ||
| Austin | okay. | ||
| (I've got "call_sub" and "call_method" that do similar things. :) | |||
| cconstantine | github.com/cconstantine/Reason/blob...er.pir#L47 | ||
| hehe | |||
| Austin | Then what does to_past do? | 15:40 | |
| found it | 15:41 | ||
| cconstantine | cons -> PAST | 15:42 | |
| ties into the compile_* methods | |||
|
15:43
Psyche^ joined
|
|||
| Austin | So if I type: (say 'hello') it translates into [call:say [val:'hello']] right? | 15:43 | |
| cconstantine | hmm, I could probably create a 'register' Var and assign it the type | ||
| [ call:[var:'say'] [val:'hello']] | 15:44 | ||
| the [var:'say'] has a scope of 'package', and the sub say is defined | 15:45 | ||
| so it effectivly turns into PIR like 'say' | |||
| bah | |||
| like 'say'('hello') | |||
|
15:45
Austin_Hastings joined
|
|||
| Austin_Hastings | But if I do: (foo 'hello') what should it produce? | 15:45 | |
| Ugh. I don't know what that was. | |||
| cconstantine, are you still here? | |||
| cconstantine | yeah | ||
| did you see my responses to your translation of (say 'hello') ? | 15:46 | ||
| Austin_Hastings | Yeah, in the logs | ||
| cconstantine | ok | ||
| Austin_Hastings | What would (foo 'hello') do? | ||
| Assuming (defmacro foo (x) (list (quote say) x)) | 15:47 | ||
| cconstantine | given (defmacro foo (x) (list (quote say) (quote 'foo') x)) | ||
| ok that | |||
| at compile time the function 'foo' defined in the defmacro is called | |||
| that function returns a list (symbol:say val:'foo' val:'hello') | |||
| that list is given to to_past which returns a PAST tree of a call to the package var say with 2 arguments | 15:48 | ||
| Austin_Hastings | So exec_macro calls the macro function right now, and the result is expected to be a ... ? | 15:49 | |
| cconstantine | an object that can be to_past()ed | ||
| Austin_Hastings | :) | ||
| cconstantine | so either a PAST::Node or an sexpr | ||
| Austin_Hastings | clearly. | ||
| cconstantine detects a hint of sarcasm :) | 15:50 | ||
| dalek | rrot: r43581 | jkeenan++ | trunk/runtime/parrot/library/Getopt/Obj.pir: Applying modified version of patch originally submitted by tene++ in ļæ½trac.parrot.org/parrot/ticket/1372: Change usages of 'Getopt::Obj' to ['Getopt';'Obj']. |
15:53 | |
| cconstantine | Austin_Hastings: did I lose you? | 15:54 | |
|
15:55
Austin joined
|
|||
| Austin | It seems pretty clear that the internet godz don't like me talking about Reason. | 15:57 | |
| cconstantine | hehe | 15:58 | |
| that seems pretty unreasonable | |||
| Ha! reason, unREASONable... ahem, sorry :) | |||
| so the problem with quote is that the PAST compiler wants to be able to render everything involved into PIR | 15:59 | ||
| if the value can't be written as a PIR value it can't | |||
| whereas i want it to generate code that references and already existing object in memory | 16:00 | ||
| Austin | Yepper. | ||
| So (quote say) will work, since 'say' is a valid string. | |||
| But (quote (a b c)) not so much | |||
| cconstantine | well.. neither will work right | 16:01 | |
| kinda | |||
| when I say (quote say) I get back the literal sub named 'say' | |||
| Austin | Which is what you want, right? | ||
| cconstantine | where i want it to be a PAST::Val/Var who's value is the sub named 'say' | 16:02 | |
| Austin | Get the sub, then call it. | ||
| Ah. | |||
| cconstantine | I can't compile the literal sub named say | ||
| Austin | But quote doesn't compile things. | 16:03 | |
| If I run (say 'foo') I get foo as output. | 16:04 | ||
| cconstantine | right | ||
| Austin | What do I get if I run (say (quote 'foo')) ? | ||
| cconstantine | you should get something like 'Capture[0x125da10]' | 16:05 | |
| Austin | I should? | ||
| cconstantine | yeah | ||
| Austin | Why? | ||
| cconstantine | because 'Capture [...]' is how PAST nodes are output from 'say' | ||
| Austin | Is Capture even a part of the Reason type model? | ||
| cconstantine | it's part of the compiler | 16:06 | |
| the whole point of macros is to execute code in the compiler | |||
| or part of the point at least | |||
| Austin | Right, but this isn't a macro. | ||
| It's just quote. | |||
| cconstantine | compiler and runtime of lisps are kinda indistinguishable | 16:07 | |
| Austin | Sure. | ||
| But is quote a compile-time function? | |||
| Or a run-time function | 16:08 | ||
| cconstantine | so if you did a (quote (list 1 2 3)) you'd get back the list created at compile time that has a symbole:'list' etc | ||
| compile-time | |||
| well.. it's a special form | |||
| Austin | According to google, quote returns its single argument "unchanged". | 16:11 | |
| So I would expect (say (quote 'foo')) would be the same thing as (say 'foo') | 16:12 | ||
| cconstantine | that's not very useful | ||
|
16:12
fperrad_ joined
|
|||
| Austin | :) | 16:12 | |
| no comment | |||
| purl | hmmm... no comment is assent :-) or dissent :-( | ||
| cconstantine | :P | ||
| Austin | And (say (quote (1 2 3))) would be the same as (say (1 2 3)) - which I have no idea what that produces. | 16:13 | |
| cconstantine | clojure.org/special_forms#toc5 | 16:14 | |
| Austin | So (say (1 2 3)) produces what? 123 | 16:15 | |
| Or would that be (say 1 2 3)? | |||
| cconstantine | that would be (say 1 2 3) | 16:16 | |
| (say (1 2 3)) produces an error because '1' isn't a function | |||
| Austin | okay | 16:17 | |
| cconstantine | '(1 2 3) is a reader macro for (list 1 2 3) | ||
| in clojure | |||
| so you probably meant (say (list 1 2 3)) | |||
| which would produce '(1 2 3)' | |||
| and (say (quote (1 2 3))) should produce the same thing | 16:18 | ||
| the difference being that (say (list 1 2 3)) prints the list generated at runtime via a call to the func 'list' whereas (say (quote (1 2 3))) prints the list generated at compile-time | |||
| Austin | Right. | ||
| So there's a quote-parsing mode, since (say (1 2 3)) and (quote (1 2 3)) are different, yes? | 16:19 | ||
| cconstantine | as an asside, I plan on having reader macros like '(1 2 3) supported at some point | ||
| 'quote-parsing mode' and compile time are the same thing | 16:20 | ||
| Austin | Or maybe not, since you're compiling lists. | ||
| Okay. | |||
| cconstantine | compiling the special form (quote ...) .... hmm, maybe this is something I'm not as familiar with as I thought | ||
| ok | 16:21 | ||
| so, if we have (foo bar baz) in the source that string turns into a cons tree | |||
| Austin | So when I say (quote (1 2 3)) the parser produces a (1 2 3) sexp/cons tree. | ||
| cconstantine | yeah | 16:22 | |
| but what I'm not sure of anymore is *when* that happens | |||
| Austin | And quote sticks it in a temporary variable and returns a variable reference. | ||
| Right at compile time. | |||
| cconstantine | right, idealy it returns a PAST node that is a var who's value is the thing it's given at compile-time | 16:23 | |
| so I could probably do this with globals (have a global array of values and generate PAST nodes that generate lookups into the array) | 16:24 | ||
| Austin | Is quote commutative? (Is commutative the right word?) | ||
| cconstantine | but taht seems really ugly | ||
| does it go into a list? not sure yet :) | 16:25 | ||
| Austin | If I say (quote (1 a 2)) what is the result? | ||
| Is 'a' a literal char, or a symbol reference? | |||
| cconstantine | it wouldn't be a literal char | ||
| Austin | Okay. | 16:26 | |
| cconstantine | it's wether it is a symbol reference or the value of that symbol | ||
| for now lets say it's the symbol reference | |||
| Austin | But '(1 a 2) is not ('1 'a '2) | ||
| cconstantine | correct | ||
| ('1 'a '2) would cause the compiler to attempt to generate a function call to '1 | 16:27 | ||
| '(1 2 3) has a runtime value of a list | |||
| ok, how would i build a PAST that references a 'package' array variable's index? | 16:28 | ||
| Austin | So try this: Create a @QUOTES variable, make the compiler push when it sees (quote x) and replace the (quote) with a reference to @QUOTES[counter++] | ||
| cconstantine | yeah | ||
| is there an example of how to generate array indexing code? | 16:29 | ||
| Austin | PAST::Var.new(:scope('index'), PAST::Var.new(:scope('package'), :name('@Q')), PAST::Val.new(:value(1))) | ||
| Or maybe it's backwards. | |||
| I've got it here someplace. | 16:30 | ||
| cconstantine | hehe | ||
| Austin | keyed. | 16:32 | |
| cconstantine | ah | ||
| I see it in the docs now | |||
| Austin | It's [keyed [var] [index]] | 16:34 | |
| So [PAST::Var :scope(keyed) [PAST::Var :scope(package), :name('@QUOTES')] [PAST::Val :value(8675309)] ] | 16:35 | ||
| cconstantine | so how would I get the length of the array in nqp? | 16:36 | |
| Austin | In Close, I have to screw around because I need to unshift the array into the postfix index PAST. | ||
| +@array | |||
| -1 | |||
| purl | -1 | ||
| cconstantine | obviously | 16:37 | |
| Austin | Or not. | ||
| You could compute and then push. | |||
| cconstantine | I've got a global @?QUOTES | ||
| Austin | $index := +@array; @array.push(temp) | ||
| cconstantine | I .push($node) | ||
| Austin | $node? | ||
| cconstantine | PAST node i want to preserve | ||
| Austin | Yeah, I see it. | 16:38 | |
| cconstantine | well, really first($node) | ||
| Austin | Is first($node) just $node[0] ? | ||
| cconstantine | not exactly | ||
| $node isn't an array | |||
| or an indexable | |||
| it's a 'cons' PMC | |||
| and first is a multimethod | |||
| Austin | Ah. | ||
| Why not call it $cons then? :) | 16:39 | ||
| I was assuming that it was a PAST node. | |||
| cconstantine | it's a node, and dynamic typing is awesome right? | ||
| Austin | Yeah. | ||
| cconstantine | it's a cons node instead of a PAST node | ||
| Austin | I love the shit out of dynamic typing... | ||
| cconstantine | hehe | 16:40 | |
| Austin | One reason I'm still paying my taxes... | ||
| cconstantine | +@?QUOTES - 1 is yielding -1 for me | 16:41 | |
| after the push | |||
| Austin | Heh | 16:43 | |
| cconstantine | which is bad | ||
| Austin | Did you initialize it correctly? | 16:44 | |
| cconstantine | I think? | ||
| Austin | Store a new array into @QUOTES somewhere? | ||
| The auto-viv of arrays (used to - it may have changed) doesn't store the new array. | 16:45 | ||
| That is: my @x; @x.push(1); | |||
| The @x.push detects an undef, creates a temp array, pushes 1 into the temp array, and then stops - never storing the temp. | |||
| cconstantine | my current attempt is on github | 16:46 | |
| Austin | I lost the url on the reboot. | ||
| actions.pm? | |||
| purl | i guess actions.pm is getting kinda...big. What would you think to trying to refactor some of the larger actions a bit to use various subs, and putting those into a separate .pm file or files? It's just that it takes a little while to compile. | ||
| cconstantine | github.com/cconstantine/Reason/blob...ns.pm#L198 | ||
| now does purl know I'm throwing everything in a single .pm? | 16:47 | ||
| creepy | |||
| Austin | I think that's a comment that every single HLL developer has made at some point. | 16:48 | |
| cconstantine | hehe | ||
| so, I probably need to give a namespace | |||
| Austin | Yeah, @?QUOTES isn't initialized. | ||
| cconstantine | it is in reason.pir | ||
| Austin | Is it? okay. | 16:49 | |
| cconstantine | but I think I'm grabbing ::@?QUOTES instead of ::Reason::Grammar::Actions::@?QUOTES (to use C++'s namespacing syntax) | ||
| Austin | Okay. | ||
| So Var.new(:scope('package'), :namespace( ('Reason', 'Grammar', 'Actions') ), :name('@?QUOTES')) | 16:50 | ||
|
16:53
theory joined
|
|||
| cconstantine | that appears to have done it | 16:55 | |
| Austin | Yeah? | 16:56 | |
| cconstantine | my only reservation with this solution is that the array and items in it won't get GCed | ||
| but yeah, I appear to be limping allong to the next problem :) | |||
| Austin | Maybe you should create temporary variables - $quote_123 - instead of an array. | ||
| cconstantine | that would be awesome | 16:57 | |
| working quote form is up | |||
| is it possible to create named temporary variables like that? | 16:58 | ||
| Austin | At the nqp level it's just string catenation, right: PAST::Var(:name( '$quote_' ~ $index++)) | ||
| Of course, you have to remember them somehow... | |||
| But that's what the rest of the PAST tree is about. | |||
| cconstantine | how do I create the variable so I can do $quote_N := first($node); | 16:59 | |
| Austin | You should probably create a new namespace (Reason::_quote) to stuff them in.. | ||
| cconstantine | probably | 17:01 | |
| ok, I think I can use PIR to create the var | 17:04 | ||
| nopaste | "Austin" at 68.37.46.53 pasted "Create temp vars" (26 lines) at nopaste.snit.ch/19346 | 17:07 | |
| Austin | Frankly, I'm not sure about that "first(rest($node))" thing. | 17:08 | |
| Should it just be "rest($node)" ? | |||
| cconstantine | possibly? | 17:09 | |
| I'm not sure about it either | |||
| Austin | In the case where you say (quote (1 2 3)) it seems like you would get "1" | 17:10 | |
| cconstantine | well, $node is the list starting with symbol:quote | 17:11 | |
| Austin | But maybe you start with [ 'quote' [ [1] [2] [3] ] ] | ||
|
17:11
tetragon joined
|
|||
| cconstantine | so rest($node) is the list starting at (1 2 3) | 17:11 | |
| Austin | And so rest($node) is [ [ [1] [2] [3] ] ] | ||
| Try it like it is, and see. | |||
| cconstantine | ok | 17:20 | |
| I got it | |||
| it was correct to begin with, but the list was missing it's $/ object | |||
| Austin | woot | 17:21 | |
| cconstantine | w00t indeed | 17:26 | |
| *working macros are up | |||
| *may not really be working | |||
| Austin | :) | 17:27 | |
| cconstantine | I'm always setting the 'node' attribute to the $/ object on the thing returned from executing the macro | ||
| if the result is a simple PAST::Node that won't work | |||
| Austin | Why not? | 17:28 | |
| cconstantine | will it? | ||
| purl | will it is it being written to use djb's string functions and such? | ||
| Austin | The :node attribute points to the source location. | ||
| cconstantine | oh, PAST::Node has a node method... | ||
| oh, it's an attribute | |||
| well then, see I knew what i was doing *shifty eyes* | |||
| Austin | :) | 17:29 | |
| Make sure it does what you think it does. | |||
| cconstantine | yeah no | 17:30 | |
| dalek | rrot: r43582 | jkeenan++ | branches/one_make (2 files): Extract subroutines from h2inc.pl and place them in lib/Parrot/H2inc.pm. This makes them potentially reusable and/or testable. |
||
| cconstantine | thanks so much for the help Austin | 17:32 | |
| Austin | no problem. I'm glad you got it working. | ||
| cconstantine | I think I'll tackle this problem later, and I have a plan (multi-method so I only attach the $/ to 'node' if the result of the macro is a cons object) | 17:33 | |
| I have a weekend's worth of work to do in 3 hours | |||
| Austin | :) | ||
|
17:34
payload joined
|
|||
| moritz | Coke: re timtowtdi, use aptitude for installing packages | 17:38 | |
|
18:20
cognominal joined
18:27
chromatic joined
|
|||
| dukeleto | 'ello | 19:00 | |
| dukeleto just got out of order test detection working in Tapir | 19:01 | ||
| davidfetter | dukeleto++ :) | 19:02 | |
| dalek | pir: 00cc34d | dukeleto++ | Makefile: Make the compile target required for the test target in the Makefile |
19:13 | |
| pir: 959dbdf | dukeleto++ | lib/Tapir/Parser.pir: Almost-working out of order test detection |
|||
| pir: 7b1962d | dukeleto++ | t/03-parse_tapstream_error.t: Add some tests for parsing out of order tests, mostly passing. so test files with out of order tests do not pass, but this is currently dumb luck. The parse_tapstream method needs to be modified to detect out of order tests and still count which pass and fail. |
|||
| pir: fb239bd | dukeleto++ | (2 files): Improve the is_tap method in Tapir::Parser and add some tests |
|||
| pir: eda3b9e | dukeleto++ | t/03-parse_tapstream_error.t: Add tests for bail_if_necessary to Tapir::Parser |
|||
| pir: 8c4680b | dukeleto++ | lib/Tapir/Parser.pir: Refactor is_tap to use a natural control flow |
|||
| pir: ff8b843 | dukeleto++ | lib/Tapir/Parser.pir: Refactor parse_tapstream |
|||
| pir: 42a74c6 | dukeleto++ | lib/Tapir/ (2 files): Out of order tests are now detected Better diagnostics, such as: Out of order tests detected, saw test 42 but expected test 5 would be nice. |
|||
|
19:20
iblechbot joined
19:29
AndyA joined
19:37
kid51 joined
19:38
lucian joined
19:57
hercynium joined
|
|||
| dalek | rrot: r43583 | jkeenan++ | branches/one_make/t/tools/pmc2cutils (2 files): Update README to explain purpose of tests. Fix one TODO-ed test. |
20:28 | |
|
20:32
bacek joined
20:49
preflex joined
20:50
fperrad joined
20:59
plobsing joined
|
|||
| dukeleto | make fulltest PASS on orderedhash_revamp (darwin x86) | 21:08 | |
| Coke grumbles. | 21:35 | ||
| dukeleto | PackFile_unpack: This Parrot cannot read bytecode files with version 5.4. | 21:38 | |
| i am sure i am ding something wrong, but that error messages doesn't tell me what | |||
|
21:39
chromatic joined
|
|||
| dalek | rrot-plumage: ee53364 | leto++ | t/03-util.t: Add tests for %hash.values |
21:57 | |
| rrot-plumage: cdd56bd | leto++ | (3 files): Update Tapir |
22:03 | ||
| mikehh | one_make branch at r43583 - codetest FAIL (perlcritic.t - 2 failures) | 22:08 | |
| all other tests PASS - pre/post-config, corevm/coretest, smoke (#31876), fulltest - Ubuntu 9.10 amd64 (g++ with --optimize) | |||
| Coke's XXX and missing use warnings in lib/Parrot/H2inc.pm | 22:10 | ||
|
22:33
hercynium joined
22:40
patspam joined
|
|||
| Coke | ... so, it's a good thing to hide all that stuff for a one shot script into .pm's? | 23:17 | |
| to me, it'slike premature obfuscation. | 23:18 | ||
| ->zzz | |||
| japhb | seen whiteknight | 23:21 | |
| purl | whiteknight was last seen on #parrot 8 hours, 28 minutes and 1 seconds ago, saying: kid51, sure | ||
| japhb | *sigh* | ||
| msg whiteknight I need a PMC that can represent WebGLArray and WebGLArrayBuffer as seen in the WebGL draft spec: cvs.khronos.org/svn/repos/registry...-spec.html -- can parrot-linear-algebra's packed arrays do this? In particular, can you share a single buffer amongst multiple array "views"? | 23:23 | ||
| purl | Message for whiteknight stored. | ||
|
23:23
Whiteknight joined
|
|||
| chromatic | That was useful. | 23:24 | |
| japhb | well, that was convenient | ||
| Whiteknight, see your messages. :-) | |||
| Whiteknight | messages | ||
| japhb: Looks feasible | 23:28 | ||
| I would want to do it in a way that wasn't opengl-specific | 23:29 | ||
| Coke | chromatic: what was useful? | ||
| chromatic | japhb complaining that Whiteknight wasn't here. | 23:30 | |
| Whiteknight | if people complain when I'm not here, there must be a lot of complaining recently | 23:32 | |
|
23:32
LaVolta joined
|
|||
| Coke | rant: everything in DEPRECATED.pod should have a ticket. | 23:41 | |
| japhb | Whiteknight, excellent. I hadn't wanted it opengl-specific, merely that it could be bent to that task. :-) | ||
| Whiteknight, what currently works in p-l-a? The README and ROADMAP appear to only contain future plans ... | 23:44 | ||
| Whiteknight | japhb: the test suite is a decent example of the capabilities | 23:45 | |
| it's missing stuff for some | |||
| p | |||
| PMCs | |||
| japhb | Whiteknight, ah, OK | ||
| Whiteknight | i'll give you a commit bit if you want | 23:47 | |
| japhb | Whiteknight, sure, thank you | ||
| Whiteknight | done | 23:49 | |
| japhb | Merci. | 23:52 | |
| Coke | ah, chromatic, 'twas you. - can you create a ticket for the :: issue you added to the D.pod? | ||
| (and link back to it from DEP.pod?) | |||
| chromatic | The double-colon namespace pseudo-separator? I thought we had many tickets for that. | ||
|
23:53
BooK joined
|
|||
| Coke | ok. can you list them in the pod? =-) | 23:57 | |
| chromatic | I will put that on my task list. | 23:58 | |
| Coke | it's a good task for minions. | ||
| Whiteknight | muah hah hah!! | 23:59 | |