Camelia, the Perl 6 bug

IRC log for #parrot, 2011-08-11

Parrot | source cross referenced

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

All times shown according to UTC.

Time Nick Message
00:04 kid51 soh_cah_toa: ping
00:27 whiteknight joined #parrot
00:35 whiteknight good evening, #parrot
00:45 NotFound whiteknight: I've seen the msg. That works with winxed master?
00:45 whiteknight NotFound: no, in a branch in my fork
00:45 whiteknight I'm going to write some tests tonight, and open a pull request
00:45 NotFound Ah, ok.
00:45 whiteknight It's not pretty, I want to come up with a better syntax for it
00:46 whiteknight I *think* I can read the function signatures directly, for basic P S N I types
00:46 whiteknight For more complicated types, like specific classes, we will need to talk about syntax
00:47 NotFound Yes, it will not be easy to provide enough flexibility.
00:48 whiteknight If we allow type names in function signatures, that would work, but then we would probably want to insert isa checks
00:49 whiteknight function foo(Bar.Baz baz, Bar.Fie fie) { }
00:49 whiteknight that is pretty, but it starts making promises that we're going to do type checking
00:49 whiteknight or maybe, we have a new syntax
00:49 whiteknight multi foo(Bar.Baz baz, Bar.Fie fie) { }
00:49 whiteknight And we let the MultiSub do the type checking for us
00:50 NotFound Maybe synthesizing a multi with a more generic signature to catch unwanted cases.
00:50 whiteknight That's possible too
00:51 whiteknight I want to change :multi in Parrot to not be so bad, but that's going to require a lot of work and a lot of deprecations
00:51 NotFound That way the multi dispacth will care, without more runtime costs.
00:52 whiteknight right
00:56 kid51 smolder.parrot.org is down
00:57 whiteknight urg
00:58 dalek winxed/imcc_tag: 37dd080 | Whiteknight++ | t/advanced/10multi_basic.t:
00:58 dalek winxed/imcc_tag: Add a basic test for the improved ModifierList behaviors, in the guise of a test for multidispatch
00:58 dalek winxed/imcc_tag: review: https://github.com/Whiteknig​ht/winxed/commit/37dd080ef9
01:00 whiteknight NotFound: pull request sent
01:01 NotFound whiteknight: I'll look at it tomorrow, now must go,
01:01 NotFound AFK
01:01 whiteknight Okay, take your time. Later
01:12 cotto ~~
01:14 dalek winxed/func_deref: da32bbb | NotFound++ | winxedst1.winxed:
01:14 dalek winxed/func_deref: if something looks like a method call but can't be resolved at compile time
01:14 dalek winxed/func_deref: assume is function in a namespace not declared in the current compilation
01:14 dalek winxed/func_deref: review: https://github.com/Whiteknig​ht/winxed/commit/da32bbb335
01:14 dalek winxed/func_deref: fcb47ca | NotFound++ | examples/Mysql.winxed:
01:14 dalek winxed/func_deref: update example Mysql to use ByteBuffer, StructView and the as_string method
01:14 tcurtis ~~
01:14 dalek winxed/func_deref: review: https://github.com/Whiteknig​ht/winxed/commit/fcb47cafd5
01:14 dalek winxed/func_deref: 23dc6d8 | NotFound++ | winxedst1.winxed:
01:14 dalek winxed/func_deref: new builtin var: cast to var type
01:14 dalek winxed/func_deref: review: https://github.com/Whiteknig​ht/winxed/commit/23dc6d8a4c
01:14 dalek winxed/func_deref: dd7f3f3 | Whiteknight++ | winxedst1.winxed:
01:14 dalek winxed/func_deref: Add prefix-* as a function lookup operator, similar to 'using' but an expression. *Foo.Bar.baz(), etc
01:14 dalek winxed/func_deref: review: https://github.com/Whiteknig​ht/winxed/commit/dd7f3f387e
01:14 dalek winxed/func_deref: 4286f63 | Whiteknight++ | t/advanced/10func_deref.t:
01:14 dalek winxed/func_deref: +some tests for the function dereference operator
01:14 dalek winxed/func_deref: review: https://github.com/Whiteknig​ht/winxed/commit/4286f63622
01:18 whiteknight hello tcurtis
01:18 whiteknight how are you doing tonight?
01:22 tcurtis whiteknight: quite well. I'm working on building parse trees.
01:22 whiteknight awesome, how's it going?
01:25 tcurtis whiteknight: Is it possible to create a function/method named "!make" in Winxed?
01:25 whiteknight tcurtis: I think you can use a string for the name
01:25 whiteknight function "!make"() { }
01:27 tcurtis hmm... perhaps I should try updating winxed.
01:28 whiteknight perhaps
01:28 whiteknight oh, did that syntax not work?
01:29 tcurtis It didn't, but I'm still running a version of Winxed from early in the summer.
01:34 dalek parrot: 0a4ca49 | jkeenan++ | / (5 files):
01:34 dalek parrot: Merge branch 'master' of git@github.com:parrot/parrot
01:34 dalek parrot: review: https://github.com/parrot/parrot/commit/0a4ca49a81
01:34 dalek parrot: 25e6b7a | jkeenan++ | docs/dev/profiling.pod:
01:34 dalek parrot: Grammatical corrections and POD touchups.
01:34 dalek parrot: review: https://github.com/parrot/parrot/commit/25e6b7ab0b
01:38 tcurtis It's not especially high-priority and I can do it from PIR later, so I'm going to stop worrying about it for now.
01:40 jsut joined #parrot
01:41 rdesfo joined #parrot
01:43 whiteknight okay
01:49 woosley joined #parrot
01:50 dalek winxed/lambda_syntax: f2f99f9 | Whiteknight++ | winxedst1.winxed:
01:50 dalek winxed/lambda_syntax: Quick implementation of a streamlined perl6ish lambda syntax for winxed
01:50 dalek winxed/lambda_syntax: review: https://github.com/Whiteknig​ht/winxed/commit/f2f99f96ab
01:50 dalek winxed/lambda_syntax: 8275222 | Whiteknight++ | winxedst1.winxed:
01:50 dalek winxed/lambda_syntax: Enable an even shorter lambda syntax. If curly brackets are ommitted we parse the body as an expression and we implicitly return the result
01:50 dalek winxed/lambda_syntax: review: https://github.com/Whiteknig​ht/winxed/commit/8275222506
01:50 dalek winxed/lambda_syntax: b59c067 | Whiteknight++ | winxedst1.winxed:
01:50 dalek winxed/lambda_syntax: Add in a SimpleReturnStatement which is like ReturnStatement but parses only a simple, single return value. Use this to cleanup the new lambda syntax with implicit return, and make it work more like a normal expression:
01:50 dalek winxed/lambda_syntax: review: https://github.com/Whiteknig​ht/winxed/commit/b59c06752b
01:50 dalek winxed/lambda_syntax: 7284bc1 | Whiteknight++ | t/advanced/10lambda_y_comb.t:
01:50 dalek winxed/lambda_syntax: Add in some tests showing Y combinators written in Winxed and recursive factorial functions. Both parts are written in 'classic' syntax and new syntax
01:50 dalek winxed/lambda_syntax: review: https://github.com/Whiteknig​ht/winxed/commit/7284bc1a09
01:50 dalek TT #2174 created by jkeenan++: Sharpen Support Policy for Windows, Then Implement It!
01:50 dalek TT #2174: http://trac.parrot.org/parrot/ticket/2174
01:52 whiteknight I'm particularly happy with that Y-combinator using the lambdas
01:53 whiteknight I can clean it up with some whitespace, but it's very concise
01:53 Kulag joined #parrot
01:54 whiteknight msg NotFound I opened a second pull request for that * function-lookup syntax. Just to start the discussion. If you want the syntax changed, let me know
01:54 aloha OK. I'll deliver the message.
01:54 whiteknight and with that, I'm out
01:55 mikehh joined #parrot
01:58 daniel-s joined #parrot
01:59 daniel-s joined #parrot
02:02 daniel-s joined #parrot
02:53 theory joined #parrot
03:20 theory joined #parrot
04:51 woosley1 joined #parrot
04:57 rdesfo joined #parrot
05:06 worr joined #parrot
05:23 rdesfo joined #parrot
05:23 rdesfo left #parrot
05:27 theory joined #parrot
06:00 worr are there any tutorials more up to date than the squaak tutorial on wikibooks?
06:03 tadzik oh, there's one on wikibooks?
06:03 tadzik there should be one on docs.parrot.org
06:05 worr thanks tadzik! that seems far more up to date than the one I was using
06:06 mj41 joined #parrot
06:08 dalek winxed: 37dd080 | Whiteknight++ | t/advanced/10multi_basic.t:
06:08 dalek winxed: Add a basic test for the improved ModifierList behaviors, in the guise of a test for multidispatch
06:08 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/37dd080ef9
06:08 dalek winxed: cdd0e9a | NotFound++ | / (2 files):
06:08 dalek winxed: Merge pull request #2 from Whiteknight/imcc_tag
06:08 dalek winxed:
06:08 dalek winxed: Imcc tag
06:08 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/cdd0e9a8c8
06:17 JimmyZ joined #parrot
06:19 dalek winxed: 16ea0c8 | NotFound++ | t/advanced/10multi_basic.t:
06:19 dalek winxed: fix coding standards
06:19 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/16ea0c8f41
06:35 NotFound msg whiteknight merged the :multi psuh request
06:35 aloha OK. I'll deliver the message.
06:37 SHODAN joined #parrot
06:39 fperrad joined #parrot
06:57 theory joined #parrot
07:01 theory joined #parrot
07:40 mj41 joined #parrot
08:11 contingencyplan joined #parrot
08:52 dalek parrot: 404f896 | cotto++ | docs/dev/profiling.pod:
08:52 dalek parrot: clean up intro
08:52 dalek parrot: review: https://github.com/parrot/parrot/commit/404f8964d6
08:52 dalek parrot: f2203bf | cotto++ | docs/dev/profiling.pod:
08:53 dalek parrot: remove formatting for something not intended to be a formatted list
08:53 dalek parrot: review: https://github.com/parrot/parrot/commit/f2203bf6dc
10:50 not_gerd joined #parrot
10:50 not_gerd o/
10:51 not_gerd just finished setting up my github account and sent a pull request for my msys fixes
10:59 nbrown joined #parrot
11:04 Kulag joined #parrot
11:18 mj41 joined #parrot
12:10 Coke joined #parrot
12:11 whiteknight joined #parrot
12:14 whiteknight good morning, #parrot
12:16 Kulag joined #parrot
12:20 Eclesia2 joined #parrot
12:20 Eclesia2 hi
12:20 moritz hello
12:21 moritz where does the default backtrace printing happen?
12:21 moritz nqp: pir::die('foo')
12:21 p6eval nqp: OUTPUT«foo␤current instr.: '_block1000' pc 24 ((file unknown):34) (/tmp/Uf4ylIijBK:1)␤»
12:21 Eclesia2 question : can parrot upload files ? on an ftp for example ?
12:21 moritz the 'current instr.: ...'
12:23 whiteknight moritz: The printing itself currently happens in frontend/parrot/main.c:show_error_and_exit
12:24 whiteknight Creating the backtrace string itself happens somewhere in src/debug.c
12:25 moritz wouldn't it make a lot of sense to have that in the exception PMC?
12:25 whiteknight PDB_get_continuation_backtrace()
12:25 moritz is that accessible from PIR somehow?
12:25 whiteknight exception.backtrace_strings()
12:25 moritz thanks
12:25 whiteknight it returns an array of backtraces, in the case of a rethrow
12:26 moritz fwiw that method is not documented
12:26 moritz I searched only in the docs of exception.pmc
12:26 whiteknight if you open a ticket to remind me, I'll add that tonight
12:26 moritz ok
12:28 whiteknight that method is newish. It might still be experimental
12:29 whiteknight no, it's not listed in api.yaml. It should be documented
12:29 whiteknight and tested, if it isn't already
12:29 moritz ticked opened
12:29 whiteknight moritz++
12:30 dalek winxed: b39b646 | NotFound++ | winxedst1.winxed:
12:30 dalek winxed: add a missing annotation and fix a bug in generated key for CallMemberExpr with non declared symbol
12:30 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/b39b646923
12:32 NotFound whiteknight: I think I've found a parrotish and wixedish way to avoid the need for using in most cases: casting to var.
12:33 whiteknight what do you mean?
12:33 NotFound x = a.b(); /* method call on a */ var (a.b)(); /* function call on a.b */
12:33 whiteknight oh, tricky
12:33 whiteknight that would do a get_global namespace search?
12:34 NotFound Currently doesn't, but I'm ging to change it.
12:34 whiteknight that would be awesome.
12:34 whiteknight so I'll close out that pull request with the * syntax?
12:35 NotFound Also, it will be used to disable using the subid in declared functions.
12:35 NotFound Wich can be helpful for multi
12:35 whiteknight exactly
12:35 whiteknight NotFound++
12:35 NotFound Don't close it yet, wait for this thing to be implemented.
12:35 whiteknight okay
12:37 dalek TT #2175 created by moritz++: method backtrace_strings in PMC Exception not documented
12:37 dalek TT #2175: http://trac.parrot.org/parrot/ticket/2175
12:38 NotFound Also, the part of casting to var already implemented is useful: f(var(1)); /* Calls f with an Integer PMC */
12:55 ambs joined #parrot
12:55 JimmyZ joined #parrot
13:03 Coke .
13:05 Coke windows build warns of lots of unreachable code.
13:06 NotFound Coke: probably the does_not_return decorations are not recognized.
13:07 Coke could be. I mention it in case there is someone like alester on windows.
13:07 Coke (doing a smoke now, for grins.)
13:08 Coke Files=393, Tests=13620, 132 wallclock secs ( 5.07 usr +  1.23 sys =  6.30 CPU)
13:09 Coke smolder 500 error though.
13:09 Coke restarting smolder...
13:16 dalek rakudo/nom: 5d1f4db | moritz++ | src/core/ (3 files):
13:16 dalek rakudo/nom: fix ceiling, add sub form
13:16 dalek rakudo/nom: review: https://github.com/rakudo/rakudo/commit/5d1f4db82e
13:21 Coke restarting not helping.
13:22 whiteknight kid51 mentioned smolder was down yesterday.
13:25 dalek winxed: dcac13a | NotFound++ | winxedst1.winxed:
13:25 dalek winxed: do a namespace lookup in member expr casted to var
13:25 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/dcac13abaa
13:26 Coke where?
13:26 Coke I didn't see a ticket or anything on the list. just here?
13:30 whiteknight Coke: yeah, just here in the channel. I don't think he had time to really document it correctly
13:30 Coke ok. I've started a chat in #osuosl, but no one there is responding.
13:30 Coke I've restarted the service, but it's still showing 500 error.
13:30 whiteknight It's still pretty early on the west coast
13:33 whiteknight NotFound++
13:35 whiteknight NotFound: 6model allows native typed attributes. I worry that new syntax is going to cause a conflict
13:35 whiteknight if self.attr is a string, then I would expect var(self.attr) to return a String PMC
13:35 whiteknight or, with built-in types. Exception.message is a string, so var(e.message) should return a String PMC
13:36 Coke new ticket still get announced here, aye?
13:36 Coke *s
13:37 whiteknight Coke: yes, with delay
13:37 NotFound whiteknight: I don't see the conflict :?
13:38 whiteknight var(e.message), is that going to be parsed to return a String PMC, or is it going to do a namespace lookup for function e.message?
13:38 not_gerd whiteknight: I sent a pull request with my msys fixes
13:38 NotFound If you don't want the namespace lookup, don't cast.
13:38 whiteknight not_gerd: I saw
13:39 not_gerd also, I set up a pseudo-blog on github: http://gerdr.github.com/on-parrot/
13:39 whiteknight not_gerd: We;ll review it and merge if it's all good
13:39 NotFound whiteknight: the idea is that you declare the intention in the code, to avoid runtime checks.
13:40 whiteknight so if e is declared in scope as an identifier, it will do a normal attribute lookup and cast?
13:41 NotFound No, you use the cast if you want to bypass the scope lookup.
13:41 dalek TT #2176 created by coke++: tests incorrectly skipped on windows.
13:41 dalek TT #2176: http://trac.parrot.org/parrot/ticket/2176
13:43 whiteknight I'm going to have to play with it
13:44 NotFound Regarding the native typed attributes, are we going to have corresponding get/set attribute variants?
13:45 whiteknight Oh right, I forgot about the opcodes
13:45 whiteknight We don't have those yet
13:45 whiteknight or vtable accessors for them
13:45 whiteknight okay, forget about that
13:50 Coke #2176 is a simple perl5 task. just need to use Parrot::Config
13:51 jnthn__ 6model has natively typed attr support, but it really doesn't want them to be v-table methods.
13:53 jnthn__ Probably it should drop using the various v-tables there alltogether.
13:53 jnthn__ So make the Parrot 6model integration easier.
13:53 jnthn__ (the ones for attr access I mean)
13:53 jnthn__ s/So/it'll/
13:53 NotFound jnthn__: What's the alternative, then? Runtime checking anything?
13:54 jnthn__ NotFound: Well, our native ones just look along the lines of REPR(obj)->get_attr_int(...) or some such
13:55 jnthn__ It's just an operation of the representation, and your polymorphism comes from representation poly.
13:55 jnthn__ But that's orthogonal to method-y style dispatch, which is where I see v-tables being more relevant.
13:56 jnthn__ The design is such that a smart JIT - if it knows what REPR will be used - could even inline attribute access.
13:57 NotFound jnthn__: I talk about present day.
13:57 jnthn__ NotFound: Yes, I'm talking about Parrot not adding stuff that'll only have to go away again if it integrates 6model. :)
13:57 NotFound jnthn__: we have working stuff right now.
14:01 whiteknight jnthn: so what's the PIR-level interface for that, new opcodes?
14:01 jnthn__ whiteknight: yeah
14:02 whiteknight okay, we can definitely add get_attr__i_p_x and set_attr_p_s_x variants
14:02 whiteknight currently they would do unnecessary boxing/unboxing to fit in with existing vtables
14:02 whiteknight but in 6model land, they could avoid that
14:03 NotFound I've sometimes tought about adding such opcodes, just to make easier code generation in some cases.
14:03 whiteknight er, get_attr_x_p_s
14:03 whiteknight If I add that to Parrot soon, will it help make things in winxed easier?
14:06 NotFound Probably, and make generated code more compact and possibly a bit faster.
14:08 whiteknight the first implementations would not be faster
14:08 whiteknight because get_attr_str and set_attr_str still take PMCs, so we would need to box/unbox
14:08 whiteknight but there is less generated code
14:09 whiteknight NotFound: https://gist.github.com/1139736 This doesn't work
14:10 whiteknight test.winxed:8: Expected identifier near (
14:11 NotFound whiteknight: already fixed, testing it a bit before commit.
14:11 whiteknight okay
14:11 NotFound Is just that the 'var' was assumed to be the start of a var statement.
14:12 whiteknight right
14:14 NotFound I'm thinking about adding a cast to void, it may be needed to cover some corner cases.
14:15 whiteknight cast to void? What corner cases?
14:19 dalek nqp: 051792c | moritz++ | src/HLL/Compiler.pm:
14:19 dalek nqp: put back the ability to add a custom backtrace printer
14:19 dalek nqp:
14:19 dalek nqp: Since it prints the exception too and not only the backtrace,
14:19 dalek nqp: it is now renamed to 'handle-exception', and the command line
14:19 dalek nqp: option for disabling it is called --ll-exception
14:19 dalek nqp: review: https://github.com/perl6/nqp/commit/051792ccfd
14:20 NotFound whiteknight: for example, accessing an attribute just to see if the attempt throws.
14:21 whiteknight ok
14:22 bubaflub Coke: i've got a patch for TT #2176 - could you give it a quick sanity check?  i'll attach it to the ticket here in a sec.
14:35 Eclesia2 left #parrot
14:44 lucian joined #parrot
14:50 dalek winxed: 1ba4ccc | NotFound++ | winxedst1.winxed:
14:50 dalek winxed: allow cast builtins at the start of a statement
14:50 dalek winxed: review: https://github.com/NotFoun​d/winxed/commit/1ba4ccca80
14:54 Coke bubaflub: seems sane. testing on windows.
14:56 Coke bubaflub++ # seems to correctly run those tests now.
14:56 bubaflub Coke: i'm seeing some other uses of Catfile with hardcoded .o stuff in t/tools/dev/headerizer/02_methods.t - does that file need to change as well?
14:57 Coke if it's ever going to work on windows,aye.
14:57 Coke I don't think we have a lot of headerizing going on there, but go ahead and fix that up.
14:57 Coke (for that, just make sure it still works on *nix)
15:02 bubaflub Coke: second patch attached to the ticket
15:30 darbelo joined #parrot
15:37 whiteknight the more I look at things like Subs, MultiSubs, and Closures, the more aggravated I get
15:40 whiteknight Sub PMC does *way* too much work. It tries to be everything to everybody. It shouldn't be
15:41 whiteknight There's no reason why Sub should be the type for all subroutines, methods and closures
15:43 whiteknight There is also no reason why the Sub should have to care about where it gets stored. sub->HLL_id, ->namespace_name, ->namespace_stash, ->method_name, ->ns_entry_name, and ->multi_signature should all *not* appear on Sub
15:43 daniel-s joined #parrot
15:44 whiteknight What if we have a single Sub that is stored in more than one namespace? Or, what if we have a single sub stored in a class under two different method names, or in multiple classes under multiple names?
15:44 whiteknight What if a single sub has :slurpy parameters, and can accept several different types of :multi invocation?
15:45 whiteknight Why should a Sub be restricted to a single vtable slot number, when it could potentially fill in several of them?
15:45 JimmyZ rakudo doesn't use parrot's them ?
15:45 whiteknight especially when we consider the sheer proliferation of vtable slots, the fact that PCC auto-coerces arguments, etc
15:45 JimmyZ rakudo doesn't use  them ?
15:45 whiteknight JimmyZ: Rakudo does use them, but they are wrapped
15:46 JimmyZ and so nom?
15:46 JimmyZ nom branch
15:46 whiteknight yeah, I think it has to
15:46 whiteknight Sub is primitive. Everybody uses it and everybody MUST use it in some way
15:47 jnthn__ We use Sub but not those various views
15:47 jnthn__ s/views/fields/
15:47 jnthn__ (We don't use Parrot namespaces nor classes, so...)
15:47 jnthn__ Oh
15:47 jnthn__ I abuse multi_signature
15:47 whiteknight jnthn__: IMCC would fill in those fields anyway
15:47 jnthn__ I use it to attach the Perl 6 code object.
15:48 jnthn__ Since we never use Parrot's multi-dispatch and it's way cheaper than using the property hash. :)
15:48 whiteknight it bugs the hell out of me that a Sub has to hold its own multi_signature. That's not the business of the Sub, that's record-keeping details for the MultiSub
15:48 jnthn__ (Yes, I know. I'm evil.)
15:49 * JimmyZ would like to see PCC refactor which will make nom faster too
15:49 jnthn__ Well, MultiSub actually holds many Subs.
15:49 whiteknight Sub should be a low-level type that basically provides a wrapper over a segment of bytecode ->seg, ->start_offs, ->end_offs, and ->eval_pmc (which needs to be renamed)
15:49 whiteknight Everything else should be subclassed
15:50 jnthn__ ->namespace_name, ->method_name and ->ns_entry_name I'd imagine are easy to cull today
15:50 jnthn__ Well, I maybe :)
15:51 knewt joined #parrot
15:51 whiteknight The biggest problem, and you know this without me needing to say it, is the magical PIR syntax crap in IMCC
15:51 whiteknight :multi flags should disappear. You can create your own multisubs and populate them with method and vtable calls
15:52 whiteknight .namespace directives too. Kill them. We can create NameSpace objects if we want them, and populate them with method calls and keyed vtable calls
15:52 whiteknight It's just like 6model ignoring :method flags: Create your own damn metaobject and put things in it your damn self
15:52 whiteknight and leave IMCC out of it
15:57 whiteknight I'm also not sure that ->sub_id is needed. I mean, that's a compile-time detail right? You shouldn't need that information after compilation.
15:57 whiteknight .const 'Sub' directives should be replaced with hard-coded integer indices for subs in the constants table
16:01 whiteknight When I invoke a MultiSub, and the multi redispatches to the proper candidate, the interp->current_sub is *still* a reference to the MultiSub
16:02 preflex joined #parrot
16:02 whiteknight so when we make a closure, we have to get the reference to the current sub (the MultiSub) then *re-sort the candidates list* to find the sub currently executing (lol sorry if that changed!) and close over it
16:03 whiteknight instead of, say, Parrot_sub_new_closure just taking two arguments, one for the parent and one for the child
16:03 whiteknight or instead of MultiSub.invoke updating interp->current_sub with a reference to the sub which is actually executing
16:03 theory joined #parrot
16:03 whiteknight or, having the child look up the parent sub in the outer_ctx
16:03 whiteknight or anything that doesn't royally suck
16:18 Eclesia joined #parrot
16:19 Eclesia hi
16:19 benabik Huh.  Converted another function to NQP to try and muck with it and get it to work with newPOST…  Turns out just using ResizablePMCArray instead of ResizableStringArray is all I needed.
16:19 whiteknight hello eclesia
16:19 dalek parrot/nqp_pct: f2487b6 | benabik++ | compilers/pct/src/PAST/Compiler.p (2 files):
16:19 dalek parrot/nqp_pct: War on Q:PIR - PAST::Compiler.post_children
16:19 dalek parrot/nqp_pct:
16:19 dalek parrot/nqp_pct: I was going to leave this, but it doesn't behave properly for newPOST.
16:19 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/f2487b6179
16:19 dalek parrot/nqp_pct: 74006ad | benabik++ | t/compilers/pct/newp (2 files):
16:19 dalek parrot/nqp_pct: newpast/newpost.t - add plan
16:19 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/74006adf84
16:21 JimmyZ whiteknight: speak of pmc,  I think defaut.pmc and object.pmc is reduplicate
16:21 benabik My test segfaults instead of not working!  Is that progress?
16:22 whiteknight JimmyZ: Not yet. They will be after 6model
16:22 whiteknight benabik: it gives you a new method of attack. Fire up GDB and figure out where it's segfaulting
16:23 JimmyZ whiteknight: oh, then s/is/ will be/
16:25 JimmyZ firefox doesn't like f2487b6
16:25 whiteknight benabik: without knowing anything about anything, I'm going to guess it's segfaulting in the fast_core
16:26 benabik whiteknight: Parrot doesn't seem to handle invalid bytecode well.  I'm guessing I'm generating something poorly.
16:28 benabik Is there a way to switch to the slow run core?
16:29 whiteknight --runcore=slow
16:35 benabik in clone_key_arg, could not access memory at address 0x000000
16:38 whiteknight hmmm...weird
16:38 whiteknight you have a null in a key somewhere
16:38 benabik I didn't think I was generating any keys.
16:41 whiteknight something sure thinks you are
16:41 whiteknight nopaste the whole backtrace?
16:41 benabik It's somewhere inside PCC.
16:42 nopaste "benabik" at 192.168.1.3 pasted "newPOST segfault" (31 lines) at http://nopaste.snit.ch/69483
16:43 * JimmyZ wonders how much improvement will be after PCC refactor.
16:44 whiteknight benabik: weird
16:45 benabik Ohhhhhh.....
16:45 whiteknight ...?
16:45 benabik It's not getting wrapped in a sub.
16:45 whiteknight what isn't?
16:46 benabik It's trying to do codegen from a tree that looks like File -> Ops instead of File -> Sub -> Ops.
16:46 benabik It never generates a sub.
16:46 whiteknight oh fun.
16:46 benabik Invalid bytecode.
16:51 * moritz hopes that soh_cah_toa++ isn't too frustrated
16:59 bubaflub joined #parrot
17:06 whiteknight talk about frustration, let me talk about how all this sub code uses the interp as a global data store instead of passing parameters to functions
17:06 atrodo whiteknight> That's all the rage these days
17:06 whiteknight forget about reentrancy, maintainability, encapsulation, or optimizability
17:08 whiteknight And then we have all these API functions that you can't use from anywhere, because they are completely dependent on global state
17:08 atrodo Real men know that their code does not violate any of that, at all times
17:08 whiteknight and not just global state, the funny corner cases of global state
17:32 Eclesia :) perfect build steps for eria : ftp://ftp-developpez.com/jsorel/temp2/packs.png
17:34 cotto_work ~~
17:34 * Eclesia think those colored square would look nice in the parrot build, for each module
17:36 benabik Eclesia: I've brought up using a less verbose Makefile before (not pretty squares, but the same method git uses) and the general consensus was they liked it as is.
17:36 dmalcolm joined #parrot
17:37 Eclesia everyone has it's preferences, I'm a manic of nice ouputs ^^
17:38 whiteknight Eclesia++
17:41 benabik I really like git's Makefile output.  Makes it clear what it's doing and makes errors and warnings stand out.
17:44 bubaflub joined #parrot
17:47 JimmyZ what's eria? eria.org?
17:49 Eclesia eria is my project. a mutli-syntaxique model. not on the web,only on my machine. but I can upload a zip with the project if needed
17:49 JimmyZ ftp://ftp-developpez.com/jsorel/temp/eria-pvm.zip ?
17:49 Eclesia that's an old one
17:50 Eclesia 1min, I upload a new one
17:52 Eclesia JimmyZ: it's uploaded. same file
17:53 Eclesia don't hope to much :D it's only ~2month old
17:54 Eclesia to compile : winxed lib-0/Compiler0.wx
17:54 Eclesia to run : ./eria.sh test/HelloWorld.ec
17:54 Eclesia (linux only)
17:56 JimmyZ pushing to github, writing a README will be appreciated :)
17:56 Eclesia readme is already there
17:57 JimmyZ that's a REQUIEREMENT
17:57 bubaflub joined #parrot
17:57 Eclesia and mercurial is already set up too ;) but only for my local network
17:59 * JimmyZ sleeps
17:59 Eclesia JimmyZ: works for you ?
18:01 Eclesia whiteknight: it's still not possible to get some system properties ? like temp directory, system file separator or user home and name ?
18:01 JimmyZ Eclesia: I din't try it, just looking the codes, trying to look for the goal
18:01 Eclesia the goal ?
18:01 JimmyZ the project's goal
18:02 Eclesia a cross vm model i guess is the main goal
18:03 Coke smolder is back.
18:03 Coke bubaflub: you have commit rights?
18:03 bubaflub Coke: i do.  just no Windows to test on.
18:03 bubaflub i suppose i could hijack my wife's machine...
18:03 Coke I tested the first patch, it's fine.
18:03 Coke just commit them, and I'll test them, and we can roll the back if there's an issue. they look good to me.
18:04 bubaflub Coke: woot.  should i close the ticket as well?
18:05 * Eclesia think Eria kiled JimmyZ
18:06 Coke bubaflub: sure. I can reopen it if needs be.
18:06 Coke bubaflub++
18:08 dalek parrot: 22b8e86 | bubaflub++ | t/ (11 files):
18:08 dalek parrot: [TT #2176] use Parrot's Config to determine what extension an object file should
18:08 dalek parrot: have
18:08 dalek parrot: review: https://github.com/parrot/parrot/commit/22b8e8644e
18:10 Coke bubaflub: doing a clean/rebuild/test/smoke now.
18:10 dalek TT #2176 closed by bubaflub++: tests incorrectly skipped on windows.
18:10 dalek TT #2176: http://trac.parrot.org/parrot/ticket/2176
18:11 bubaflub Coke: thanks.  i might hijack my wife's old laptop to do builds on Windows - but there are just so many combinations of compilers / environments i think it would take quite a while to setup.
18:11 Coke ... this windows laptop must be more powerful than my previous windows build machine.
18:12 Coke bubaflub: no worries. I use windows every day at work, and (now) have everything I need for testing.
18:13 bubaflub Coke: yeah.  i'd like to have it setup so we can meet our development goal of sucking less on Windows.  i'll try and setup it after i'm done with GSoC and hopefully document the procedure for all the different combos I can get.
18:13 dalek parrot/nqp_pct: d645956 | benabik++ | / (3 files):
18:13 dalek parrot/nqp_pct: PAST::NewCompiler - compile Val nodes
18:13 dalek parrot/nqp_pct:
18:13 dalek parrot/nqp_pct: This compiles Float, Integer, and String constants to POST::Constants.
18:13 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/d645956522
18:13 dalek parrot/nqp_pct: 3f6df9e | benabik++ | compilers/pct/src/POST/PBCCompiler.pm:
18:13 dalek parrot/nqp_pct: POST::PBCCompiler - reindent
18:13 dalek parrot/nqp_pct:
18:13 dalek parrot/nqp_pct: The file mostly used four space indents, but there were random lines
18:13 dalek parrot/nqp_pct: with tabs.
18:13 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/3f6df9e1a6
18:13 dalek parrot/nqp_pct: 1a56de8 | benabik++ | compilers/pct/src/POST/PBCCompiler.p (2 files):
18:13 dalek parrot/nqp_pct: POST::PBCCompiler - fix compiler setup
18:13 dalek parrot/nqp_pct:
18:13 dalek parrot/nqp_pct: It should use stages, not a second language declaration.  Also, the
18:13 dalek parrot/nqp_pct: stages were wrong.
18:13 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/1a56de86ba
18:13 dalek parrot/nqp_pct: 6589785 | benabik++ | compilers/pct/src/PAST/NewCompiler.p (2 files):
18:13 dalek parrot/nqp_pct: PAST::NewCompiler - wrap tree in Sub if needed
18:13 dalek parrot/nqp_pct:
18:13 dalek parrot/nqp_pct: POST::Compiler wraps non POST::Subs in an anonymous sub, but it's to
18:13 dalek parrot/nqp_pct: do it earlier for newPOST.
18:13 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/6589785e53
18:13 dalek parrot/nqp_pct: 5f4734d | benabik++ | t/compilers/pct/complete_workflow.t:
18:13 dalek parrot/nqp_pct: t/compiler/pct/complete_workflow - use newPOST
18:13 dalek parrot/nqp_pct:
18:13 dalek parrot/nqp_pct: This makes it so all complete workflow tests use both the PIR and the
18:13 dalek parrot/nqp_pct: newPOST compilation methods.
18:13 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/5f4734d8e1
18:13 dalek parrot/nqp_pct: 559ced1 | benabik++ | compilers/pct/src/PAST/ (2 files):
18:13 dalek parrot/nqp_pct: [PCT] Fix codetest complaints
18:14 dalek parrot/nqp_pct: review: https://github.com/parrot/parrot/commit/559ced191b
18:15 whiteknight benabik++
18:16 worr joined #parrot
18:16 benabik It actually seems to be close to usable for simple usage.
18:16 whiteknight how "simple"?
18:17 benabik No inline PIR, haven't tried exceptions yet.
18:18 benabik I bet exceptions will fail because most of them use the PIR constants which POST used to just import via IMCC.
18:20 benabik I'm trying squaak right now.
18:20 whiteknight so included PASM constants don't work?
18:21 benabik No.  I'd have to add something to load the file and parse it.
18:21 benabik I'll work on that if I get the basics running.
18:23 Coke Eclesia: we already have half of the items you're asking for in 2177.
18:23 Coke more if you could environment variables.
18:24 Eclesia Coke: ho sorry, I didn't find anything so I guess it wasn't available. so where can I get those ?
18:25 Coke look in the config hash.
18:25 Coke moment.
18:26 Coke https://github.com/partcl/partcl/b​lob/master/runtime/tcllib.pir#L131
18:26 Coke there's code there that pulls out "slash", for example.
18:26 Coke you can use "parrot_config --dump" to see all the other values you can pull from there.
18:26 dalek TT #2177 created by Eclesia++: Access system properties
18:26 dalek TT #2177: http://trac.parrot.org/parrot/ticket/2177
18:29 Coke https://github.com/partcl/partcl/b​lob/master/runtime/tcllib.pir#L104 converts environment variables in to tcl's ENV array - so you could, e.g. get the timezone from there.
18:31 Eclesia Coke:  I can't say it's easy to grab those values ...
18:32 Eclesia Coke : thanks, I'll try to make those 'user friendly' in a utility class
18:34 smash joined #parrot
18:34 smash hello everyone
18:39 Coke easy to grab which values?
18:40 Coke the values from the config hash? Where else would you put them?
18:41 Eclesia Coke : it's the way to obtain this hash. I was hoping for a convinient function somewhere wish would return it. SystemProperties.getProperties();  something like that
18:42 Coke Yup, that might've been nice.
18:43 Coke bubaflub: Files=393, Tests=13822, 176 wallclock secs ( 4.85 usr +  1.39 sys =  6.24 CPU)
18:43 Coke Result: PASS
18:44 Coke bubaflub: that's another 202 tests.
18:44 bubaflub Coke: hooray.
18:44 Coke (all of which pass)
18:44 bubaflub Eclesia: I have an example in Winxed of getting values from that hash: https://github.com/bubaflub/parrot​-gmp/blob/master/setup.winxed#L186
18:45 Coke make headerizer files, but lists all the .obj files before doing so.
18:46 Eclesia bubaflub++ awesome  that makes me win an hour of work :D
18:46 bubaflub Eclesia: glad i could help.  that setup.winxed might have other useful things as well.  in there i have to compile a small C program to check some library values; don't know if that is useful for ya.
18:49 whiteknight Eclesia: If you want a nicer place to put the config hash, ask. Suggestions and patches are always appreciated
18:52 Eclesia whiteknight: for now I don't have much utilities : Files, Reflexion, Strings, SystemProperties, Trees, X364 . they are in the eria zip. if anything is useful you can copy it, but I would appreciate if the license is preserved.
18:52 whiteknight Eclesia: I will look. I have most of that stuff in Rosella already.
18:53 Eclesia whiteknight: you added the x364 ?
19:02 whiteknight Eclesia: no, I haven't added that
19:03 jsut_ joined #parrot
19:14 particle joined #parrot
19:26 Eclesia in winxed : I have this error : Parent of "'model_parser;ParserEria0' is null" when I try to load the parserEria0.pbc before parserEria.pbc .
19:26 Eclesia is it possible to avoid this error (without inverting load order) ?
19:27 whiteknight Classes are defined and built at runtime
19:27 whiteknight so you have to build the parents before you build the children
19:28 NotFound You can avoid to invert the load order by using the correct order from start ;)
19:28 Eclesia whiteknight: is it possible to load several pbc at the same time ?
19:29 Eclesia NotFound: I'm extracting .pbc from an unknowned zip. so I don't know the order
19:31 NotFound Eclesia: you should load anyhting required by a module in the module itself.
19:32 Eclesia NotFound: the module does not know where the files are extracted. so he can't load them properly
19:33 Eclesia hm ... maybe I can solve that...
19:33 NotFound Eclesia: If a module defines a class that inherits from some other, it must do.
19:36 Eclesia or contain a metadata file with the proper order
19:37 Felipe joined #parrot
20:06 pjcj joined #parrot
20:17 contingencyplan joined #parrot
20:43 soh_cah_toa joined #parrot
20:53 Eclesia how can I execute two command in one spawnw ?
20:54 Eclesia spawnw(["cd",string(file.path),"\n",
20:54 Eclesia "zip","-r", "../../"+BASE_PEM+"/"+name,"*"]);
20:54 Eclesia I want to move in a folder before calling a zip
20:57 Tene_ Hey, where does the P5 M0 prototype live?
20:58 cotto_work Tene_: m0-prototype in src/m0/perl5/m0_interpreter.pl
20:58 cotto_work m0-prototype branch
20:58 Tene_ Great; thanks.
20:58 cotto_work Tene_: what's your interest?
20:58 Tene_ cotto_work: dunno yet
20:58 cotto_work Tene_: wfm
20:59 Eclesia wfm?
21:00 cotto_work aloha: wfm?
21:00 aloha cotto_work: Sorry, I don't know.
21:00 cotto_work aloha: wfm is works for me
21:00 aloha cotto_work: Okay.
21:37 sjn joined #parrot
21:44 Psyche^ joined #parrot
22:01 theory joined #parrot
22:09 Eclesia Victory!  Module manager working :D no more hundreds of load_bytecode *.pbc . only a few *.em
22:13 Eclesia ++
22:13 Eclesia left #parrot

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

Parrot | source cross referenced