Parrot | source cross referenced
← Previous day | Index | Channel Index | Today | Next day → | Search | Google Search | Plain-Text
All times shown according to UTC.
| Time | Nick | Message |
|---|---|---|
| 00:01 | Coke | pmichaud: you bout? |
| 00:05 | tetragon joined #parrot | |
| 00:06 | dalek | parrot: r42585 | jkeenan++ | trunk/config/gen/parrot_include.pm: |
| 00:06 | parrot: Re-order subs to be more consistent with other config step classes. | |
| 00:06 | parrot: review: https://trac.parrot.org/parrot/changeset/42585/ | |
| 00:06 | lucian joined #parrot | |
| 00:08 | ttbot | Parrot trunk/ r42585 i386-linux-thread-multi make error http://tt.ro.vutbr.cz/file/cmdout/148297.txt ( http://tt.ro.vutbr.cz//buildst[…]-Parrot/rp-trunk/ ) |
| 00:13 | bluescreen joined #parrot | |
| 00:14 | plobsing joined #parrot | |
| 00:14 | darbelo | That's a rather odd error... |
| 00:16 | dalek | parrot: r42586 | jkeenan++ | trunk/config/gen/config_h.pm: |
| 00:16 | parrot: Why do a sort 3 times when you only need to do it once? | |
| 00:16 | parrot: review: https://trac.parrot.org/parrot/changeset/42586/ | |
| 00:16 | bluescreen | Hi, do you have any good example on how to define class's methods using PIR |
| 00:17 | I can't make it work I always get the Method 'blah...' not found for invocant of class '.....' | |
| 00:17 | darbelo | bluescreen: nopaste of the failing code? |
| 00:18 | bluescreen | hold on |
| 00:19 | ttbot | Parrot trunk/ r42586 i386-linux-thread-multi make error http://tt.ro.vutbr.cz/file/cmdout/148340.txt ( http://tt.ro.vutbr.cz//buildst[…]-Parrot/rp-trunk/ ) |
| 00:19 | bluescreen | http://pastebin.com/m44af8949 |
| 00:21 | by the way I'm using parrot 1.7 | |
| 00:22 | Coke | bluescreen: I would recommend not using "Object", as that probably conflicts with src/pmc/object.pmc |
| 00:22 | moment. | |
| 00:22 | darbelo | That paste gives me a syntax error, also. |
| 00:22 | bluescreen | I've replaced with another name and same problem |
| 00:23 | used Objecta | |
| 00:23 | no mather what name I use, it gives me same error | |
| 00:24 | nopaste | "coke" at 72.228.52.192 pasted "try this." (12 lines) at http://nopaste.snit.ch/18780 |
| 00:24 | Coke | bluescreen: that's for you. |
| 00:26 | bluescreen | but i want to define class methods, not instance methods |
| 00:26 | Coke | I don't think parrot distinguishes. |
| 00:26 | moment. | |
| 00:26 | bluescreen | like static in Java |
| 00:27 | pmichaud | Coke: here for a bit |
| 00:27 | Coke | I am fairly certain that you have to call it as an instance method. ISTR parrot supported it at one point, but I recall having to change partcl to avoid it. |
| 00:27 | (probably about 2 years ago) | |
| 00:27 | chromatic | Class methods are instance methods on an instance of a class. |
| 00:27 | There are no class methods. | |
| 00:28 | Coke | chromatic: which seems to me like a deficiency. But thankfully, tcl doesn't have objects so I don't care too much. |
| 00:28 | bluescreen | so, are you planing to have those in the future? |
| 00:29 | Its too memory consuming having to instance an void object if you will, to call an static method. | |
| 00:29 | Coke | wait, on an instance of a class or an instance of a 'Class' ? |
| 00:29 | bluescreen | so Class is the meta class? |
| 00:30 | I come from smalltalk world | |
| 00:30 | pmichaud | bluescreen: what do you see as being the difference between a class method and a normal subroutine? |
| 00:30 | mokurai joined #parrot | |
| 00:30 | bluescreen | you mean a global subroutine? |
| 00:31 | pmichaud | or one within the class' namespace, perhaps |
| 00:31 | bluescreen | constructor is a perfect example |
| 00:31 | lets say I want to have different constructors | |
| 00:32 | pmichaud | then you could simply have a subroutine named 'new' in the various namespaces for each class |
| 00:32 | (or however you'd like your constructor to be designated) | |
| 00:33 | Coke | (or abuse the init_pmc vtable which is invoked by the parrot opcode new.) |
| 00:33 | (but a vtable isn't a user visible method.) | |
| 00:33 | pmichaud | you can also define a method 'new' for the class, and then get to it by using classobject.'find_method'('new') |
| 00:33 | Coke | pmichaud: (undefined identifier 'lexpad' |
| 00:34 | ... from parrot;PCT;HLLCompiler;evalpmc) | |
| 00:34 | darbelo | bluescreen: I think you are mixing vm-features and hll-features. |
| 00:34 | bluescreen | I think so darbelo |
| 00:34 | pmichaud | Coke: have an example bit of code? |
| 00:35 | Coke | bah. I think I have something stale, cleaning... |
| 00:35 | bluescreen | I want to use as much as I can from the VM features |
| 00:35 | pmichaud | bluescreen: for the code you pastebin'd, there are two ways to get to the 'hello' method |
| 00:35 | one is to have an instance of the class | |
| 00:35 | the other is to look it up by asking the class object | |
| 00:35 | e.g. | |
| 00:35 | $P0 = get_class ['Object'] | |
| 00:36 | $P1 = $P0.'find_method'('hello') | |
| 00:36 | $P0.$P1() # invoke $P1 with the class object as invocant | |
| 00:36 | Coke | pmichaud: yah, nevermind. it was a half-attempt at parsing {*} that i've since removed, nevermind. |
| 00:37 | pmichaud | Coke: okay, good. I still need to wrap my head around {*} a bit. It's not entirely clear to me when substitutions occur or don't occur. |
| 00:37 | Coke | pmichaud: well, we have it already in PGE/TGE variant, if that helps. |
| 00:37 | pmichaud | I'd probably have trouble following the TGE version at this point. |
| 00:38 | it's been 2+ years since I've done anything with TGE... and I wasn't much of a fan of it then. | |
| 00:38 | bluescreen | that did it pmichaud |
| 00:39 | pmichaud | bluescreen: yeah.... Parrot doesn't really have "class methods" in the java sense, but we haven't really needed them much for our target languages either. |
| 00:39 | bluescreen | are you implementing P6? |
| 00:39 | pmichaud | yes. |
| 00:39 | bluescreen | is larry W ever around here? |
| 00:39 | Coke | seen TimToady? |
| 00:39 | purl | TimToady was last seen on #parrot 1 days, 4 hours, 39 minutes and 28 seconds ago, saying: phone [Nov 18 19:59:29 2009] |
| 00:39 | pmichaud | he tends to hang out on freenode/#perl6 |
| 00:39 | but he's also here from time to time | |
| 00:41 | bluescreen | I've watched his video of Google tech talk, I don't think anybody got the parts where he showed the lexer |
| 00:42 | pmichaud | oh, I understood it. :) |
| 00:42 | of course, I have a unique position in that respect. :) | |
| 00:42 | time for me to feed kids -- bbl | |
| 00:42 | bluescreen | lol.. you should :D |
| 00:43 | kid51 | I'm going to have to revert r42585 |
| 00:43 | Coke | why? |
| 00:44 | kid51 | I rearranged the order in which its subs were declared to match other config steps ... |
| 00:44 | That shouldn't have made a difference, but boy did it. | |
| 00:44 | So I have to investigate why. | |
| 00:44 | Coke | oh, as long as you're here; |
| 00:44 | darbelo | kid51: It works here FWIW. |
| 00:45 | Coke | I'm going to create config/make and use it to hold partial (generated and potentially static) makefile portions. |
| 00:45 | dalek | parrot: r42587 | jkeenan++ | trunk/config/gen/parrot_include.pm: |
| 00:45 | parrot: Revert r42585. Changing order of subs within module broke something. | |
| 00:45 | parrot: review: https://trac.parrot.org/parrot/changeset/42587/ | |
| 00:46 | kid51 | darbelo: It broke perl Configure.pl --test all over the place |
| 00:46 | Coke | pmichaud: btw, mdiep is interested but is (like me) having trouble understanding NQP. |
| 00:46 | kid51 | Coke: What do you mean? config/make |
| 00:47 | Coke | "mkdir config/make" |
| 00:47 | cotto_work | Coke++ |
| 00:47 | Apply more pressure. | |
| 00:48 | Coke | (see my parrot-dev mail of a few days ago about splitting up the big makefile into includable chunks. that's the dir where I plan to put the chunks) |
| 00:48 | darbelo | kid51: Agh, sorry. I was building from a stale checkout. |
| 00:48 | kid51 | Coke: okay, off top of head I don't see that that would pose any problems to what I do |
| 00:48 | Coke | kid51: excellent. |
| 00:49 | kid51 | Coke: So that would imply a lot of changes in config/gen/makefiles/root.in -- correct? |
| 00:50 | Coke | kid51: mostly a carving up into smaller pieces, yes. |
| 00:51 | e.g the bit that generates the makefile deps for PMCs will probably just dump it to a separate .mak that is then included in the main make. | |
| 00:51 | if I touch another config step, I'll try to remember to run config -test | |
| 00:51 | s/another/ | |
| 00:52 | dalek | parrot: r42588 | jkeenan++ | trunk (2 files): |
| 00:52 | parrot: Do a little refactoring in Linux hints file and add a steps test file for that. | |
| 00:52 | parrot: review: https://trac.parrot.org/parrot/changeset/42588/ | |
| 00:54 | * kid51 | looks at t/steps/gen/makefiles-01.t ... and is surprised to see that allison and chromatic have added substantial amounts of code to this test since he first wrote it! |
| 00:56 | abqar joined #parrot | |
| 00:58 | chromatic | kid51, your rearranging problem is because of the barewords parse_file and perform_directive in runstep(). |
| 01:00 | kid51 | Thanks, c, I'll take a look at it after dinner. |
| 01:20 | cognominal_ joined #parrot | |
| 01:21 | davidfetter joined #parrot | |
| 01:47 | theory joined #parrot | |
| 01:51 | davidfetter joined #parrot | |
| 02:07 | pmichaud | Coke: (mdiep) I'm happy to answer questions :) |
| 02:15 | if you're having trouble even figuring out what to ask, I can start from there also :) | |
| 02:19 | Tene | pmichaud: Ooo! Pick me! I don't know any questions to ask right now! |
| 02:21 | dalek | parrot: r42589 | jkeenan++ | trunk/config/inter/progs.pm: |
| 02:21 | parrot: Change RT # to TT # in two locations. | |
| 02:21 | parrot: review: https://trac.parrot.org/parrot/changeset/42589/ | |
| 02:21 | purl | dalek: that doesn't look right |
| 02:21 | dalek | parrot: r42590 | chromatic++ | trunk/src/library.c: |
| 02:21 | parrot: [library] Removed build directory from PBC/PIR search paths in installable | |
| 02:21 | parrot: libparrot. This should resolve TT #1279 , reported by Patrick Michaud. | |
| 02:21 | parrot: review: https://trac.parrot.org/parrot/changeset/42590/ | |
| 02:23 | TT #1279 closed by chromatic++: Parrot prefers libraries in build tree to installed tree or current ... | |
| 02:25 | chromatic | pmichaud, I get an error message using this Callgrind invocation: |
| 02:26 | cg ./parrot ext/nqp-rx/nqp-rx.pbc --target=pir ext/nqp-rx/src/stage0/NQP-s0.pir | |
| 02:26 | Obsolete pod format, please use =begin/=end instead at line 3, near "head1 NAME" | |
| 02:26 | current instr.: 'parrot;HLL;Grammar;panic' pc 578 (src/stage0/HLL-s0.pir:360).... | |
| 02:27 | Should I benchmark something else? | |
| 02:28 | pmichaud | ...that would be trying to compile a .pir file using nqp |
| 02:28 | oh, yes | |
| 02:28 | the files to test against aren't (yet) in the parrot repo | |
| 02:28 | just a second | |
| 02:29 | http://github.com/perl6/nqp-rx[…]rc/NQP/Actions.pm | |
| 02:29 | http://github.com/perl6/nqp-rx[…]rc/NQP/Grammar.pm | |
| 02:29 | the first one would be the most "interesting" | |
| 02:29 | you can also do benchmarks against any of the files in ext/nqp-rx/t/nqp/*.t, although they're quite a bit smaller | |
| 02:29 | Actions.pm is probably the most representative at this time | |
| 02:30 | chromatic | I'll try Actions.pm. |
| 02:33 | 2.5 minutes so far. It's definitely going to give some data. | |
| 02:34 | dalek | parrot: r42591 | jkeenan++ | trunk/config/gen/parrot_include.pm: |
| 02:34 | parrot: Correct two cases where subroutine calls could be interpreted incorrectly (chromatic++). Put subs in order more consistent with other config step classes. | |
| 02:34 | parrot: review: https://trac.parrot.org/parrot/changeset/42591/ | |
| 02:37 | parrot: r42592 | jkeenan++ | trunk (4 files): | |
| 02:37 | parrot: Eliminate an unnecessary internal sub in inter::progs. Touch up its verbose output. Adjust steps tests accordingly. | |
| 02:37 | pmichaud | by way of comparison, compiling that file in the standard runcore on my system is 16.020s (wall clock) |
| 02:37 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42592/ |
| 02:38 | chromatic | 88.81% of the execution time is *marking* Capture. |
| 02:38 | ... and whatever it calls. | |
| 02:38 | pmichaud | well, a lot of Capture objects get created, yes. |
| 02:39 | basically every node in the parse tree and in the ast is a Capture object of some sort | |
| 02:39 | chromatic | 4,686,462 PMCs created in this run. |
| 02:40 | Sorry, that's off. | |
| 02:40 | 4,844,027. | |
| 02:40 | pmichaud | so, let me see if I understand what you said above. 88.81% of the total execution time is spent doing GC mark ? |
| 02:40 | chromatic | 832,068 Subs invoked. |
| 02:41 | dalek | parrot: r42593 | jkeenan++ | trunk/t/configure/033-step.t: |
| 02:41 | parrot: Eliminate reference to long-resolved RT ticket. | |
| 02:41 | parrot: review: https://trac.parrot.org/parrot/changeset/42593/ | |
| 02:41 | chromatic | That's what KCachegrind says. There's a cycle here that's changing things, but GC pressure is by far the biggest expense. |
| 02:42 | pmichaud | that's.... interesting. Especially since the new regex engine should be creating a lot fewer Capture PMCs than the old one did. |
| 02:42 | chromatic | 23,994 Capture PMCs created. |
| 02:43 | pmichaud | that seems right-ish. |
| 02:43 | the number doesn't surprise me, at any rate. | |
| 02:43 | chromatic | 892,659 Contexts |
| 02:44 | 865,945 CallSigs | |
| 02:44 | 855,060 RetConts | |
| 02:44 | 826,628 CallSigRets | |
| 02:44 | dalek | parrot: r42594 | jkeenan++ | trunk/t/steps/inter (4 files): |
| 02:44 | parrot: Change RT references to TT references. | |
| 02:44 | purl | dalek: that doesn't look right |
| 02:44 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42594/ |
| 02:46 | chromatic | 75% of the PMCs created manage PCC. |
| 02:46 | JimmyZ joined #parrot | |
| 02:47 | chromatic | bacek_at_work, we're getting to the point we need to merge the "merge Context and CallSig" branch. |
| 02:47 | pmichaud | Ouchie. But most of those are relatively short-lived, I'd guess? |
| 02:47 | as opposed to the Capture PMCs, which are relatively long-lived | |
| 02:48 | chromatic | 27,086 marks of Context PMCs. |
| 02:48 | 3,619 marks of CallSig PMCs. | |
| 02:48 | 500,690 marks of Capture PMCs. | |
| 02:49 | pmichaud | right |
| 02:49 | so Capture PMCs are a small number of PMCs created but reponsible for a lot of marking | |
| 02:49 | (relatively speaking) | |
| 02:49 | chromatic | It's not so much that they're responsible for a lot of marking, but that they live a lot longer than most other things. |
| 02:50 | Maybe the best way to say that is that they root near the rootiest root in the system. | |
| 02:50 | 92 GC runs. | |
| 02:50 | pmichaud | well, since the whole point of nqp.pbc is to build a parse tree and ast.... yes, they tend to stick around until the program is done :) |
| 02:50 | chromatic | 18.64% of execution time spent in the GC. |
| 02:51 | dalek | parrot: r42595 | jkeenan++ | trunk/config (4 files): |
| 02:51 | parrot: Change RT # to TT # where the RT was still open; otherwise, eliminate reference to closed RT ticket. | |
| 02:51 | purl | dalek: that doesn't look right |
| 02:51 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42595/ |
| 02:52 | pmichaud | anyway, that profile is likely to be very representative for all of the nqp/pge/past/pct-based compilers, including (especially) rakudo |
| 02:52 | chromatic | 11.22% of execution time in Hash's get_pmc_keyed_str(), with 8,018,416 calls. |
| 02:56 | I can get some speed back there. | |
| 02:56 | pmichaud | in get_pmc_keyed_str ? |
| 02:57 | chromatic | Yes. |
| 02:57 | pmichaud | that would be a good place for some optimizing. method calls go through that, I think. |
| 02:57 | and there are definitely a ton of method calls here. | |
| 02:59 | src/pmc/object.pmc:336 : /* Walk and search. One day, we'll use the cache first. */ | |
| 02:59 | interesting comment :) | |
| 03:00 | is there a way to find out how many invocations of find_method occurred? | |
| 03:01 | in particular, Object.find_method ? | |
| 03:01 | chromatic | The VTABLE entry? |
| 03:01 | purl | i think the vtable entry is get_iter iirc |
| 03:01 | pmichaud | yes |
| 03:02 | chromatic | 797,861 |
| 03:02 | 9.16% of execution time. | |
| 03:02 | pmichaud | that would seem like a huge potential for optimization |
| 03:02 | currently every method call is walking the mro list | |
| 03:03 | chromatic | It shouldn't be. At least, I thought I fixed that at one point. |
| 03:03 | pmichaud | perhaps something else does the caching, then. |
| 03:03 | but clearly of the ~900K subroutine calls made, about ~800K of them were method calls | |
| 03:03 | chromatic | 4% of execution time is in Parrot_oo_find_vtable_override_for_class. |
| 03:03 | We need to *fix* that. | |
| 03:04 | pmichaud | oh, it's an even greater percentage than that, I guess |
| 03:04 | 02:40 <chromatic> 832,068 Subs invoked. | |
| 03:04 | 03:02 <chromatic> 797,861 | |
| 03:04 | (last is find_method vtable invocations) | |
| 03:04 | looks like about 95% of our sub calls were method invocations | |
| 03:05 | (which is consistent with the way nqp and the tools work) | |
| 03:05 | chromatic | I might be able to get you a 3% improvement here in a moment. |
| 03:06 | cognominal_ joined #parrot | |
| 03:06 | chromatic | Not huge, but starting to be measurable, for a small investment of time and profiling. |
| 03:06 | pmichaud | where are method lookups being cached, per your recollection? |
| 03:07 | chromatic | The default PMC's find_method calls Parrot_find_method_with_cache. |
| 03:07 | Object's find_method doesn't. | |
| 03:07 | pmichaud | oh. |
| 03:07 | then yes, we're not getting any caching here I don't think. | |
| 03:07 | chromatic | I don't know if Parrot_find_method_with_cache works, but it's worth considering. |
| 03:08 | pmichaud | well, since those 797,861 invocations of find_method result in some greater number of calls to get_pmc_keyed_str, yes :) |
| 03:08 | chromatic | 3.844% improvement here. |
| 03:10 | pmichaud | I guess we still end up with a keyed lookup into a cache.... but right now if the method's we're invoking are inherited, then we're looking through multiple classes to get to them |
| 03:10 | *methods | |
| 03:10 | chromatic | Yes, and that's way too much overhead. |
| 03:11 | dalek | parrot: r42596 | chromatic++ | trunk/src/pmc/hash.pmc: |
| 03:11 | parrot: [PMC] Added checks for the most likely key and value types in Hash's | |
| 03:11 | parrot: get_pmc_keyed_str() VTABLE, in the theory that avoiding the overhead of | |
| 03:11 | parrot: function calls for hot paths will be significant. This speeds up NQP-rx's | |
| 03:11 | parrot: Actions.pm benchmark by 3.844%. | |
| 03:11 | parrot: review: https://trac.parrot.org/parrot/changeset/42596/ | |
| 03:12 | pmichaud | yes, r42596 is a quick improvement |
| 03:12 | chromatic++ | |
| 03:13 | are hash_key_from_string and hash_value_to_pmc that expensive? | |
| 03:13 | chromatic | If you call them 800,000 times they are. |
| 03:13 | pmichaud | that's... interesting |
| 03:14 | yes, but we're calling a lot of stuff 800,000 times :) | |
| 03:14 | so relatively speaking, those two accounted for nearly 4% of execution? | |
| 03:14 | chromatic | Yes. |
| 03:14 | pmichaud | wow. |
| 03:14 | I'm.... shocked. | |
| 03:14 | chromatic | That and get_pointer. |
| 03:14 | Whole program optimization is a lovely feature of C compilers. | |
| 03:14 | Same as aggressive whole program inlining. | |
| 03:14 | Sadly.... | |
| 03:14 | purl | sadly is the only way to do it currently |
| 03:20 | bacek_at_work | chromatic, check context_union branch. It's failing badly. Because "Context" allocated in build_sigobjects, registers for Context should be allocated in Sub.invoke, parameters fetching should check different depth of stack. "Returns" should build returns in different Context. And so on... |
| 03:20 | It's freaking big task... | |
| 03:22 | chromatic | Sounds like we need to extract and unify context creation. |
| 03:22 | Can we do that reliably at the point of call? | |
| 03:22 | mokurai joined #parrot | |
| 03:24 | bacek_at_work | chromatic, nope. At least I couldn't find easy way to do it. |
| 03:25 | chromatic | What do we need next then? |
| 03:26 | bacek_at_work | I need few free days to figure out exact way to merging context and allocating registers. |
| 03:26 | Unfortunately I'll not have them anytime soon | |
| 03:27 | chromatic | Do you have any notes? |
| 03:33 | I think I have another 4%. | |
| 03:35 | janus joined #parrot | |
| 03:39 | chromatic | Hm, nope. Unfortunate. |
| 03:42 | theory joined #parrot | |
| 03:52 | bacek_at_work | chromatic, you can think about merging CallSig with CallSigReturns. It doesn't squeeze into VTABLE interface. So just move guts of CSReturns into src/call/args.c and call this functions. |
| 03:53 | chromatic | Sounds easy enough. |
| 03:54 | theory_ joined #parrot | |
| 04:06 | theory_ joined #parrot | |
| 04:06 | benabik joined #parrot | |
| 04:24 | davidfetter joined #parrot | |
| 05:48 | * chromatic | needs a volunteer to clean up src/hash.c |
| 06:04 | TiMBuS joined #parrot | |
| 06:06 | davidfetter_ joined #parrot | |
| 06:10 | davidfetter joined #parrot | |
| 06:15 | JimmyZ_ joined #parrot | |
| 06:46 | iblechbot joined #parrot | |
| 06:49 | davidfetter joined #parrot | |
| 07:05 | mokurai joined #parrot | |
| 07:06 | uniejo joined #parrot | |
| 07:15 | particle1 joined #parrot | |
| 07:40 | mokurai joined #parrot | |
| 07:48 | theory joined #parrot | |
| 07:56 | barney joined #parrot | |
| 08:03 | fperrad joined #parrot | |
| 08:15 | fperrad_ joined #parrot | |
| 08:23 | JimmyZ_ joined #parrot | |
| 08:27 | mikehh joined #parrot | |
| 08:36 | KatrinaTheLamia joined #parrot | |
| 08:43 | dalek | parrot: r42597 | chromatic++ | trunk/src/call/args.c: |
| 08:43 | parrot: [PCC] Replaced repeated VTABLE accessor calls with macro access in | |
| 08:43 | parrot: fill_params(), for a minor performance improvement. | |
| 08:43 | parrot: review: https://trac.parrot.org/parrot/changeset/42597/ | |
| 08:43 | parrot: r42598 | chromatic++ | trunk/src/pmc (2 files): | |
| 08:43 | parrot: [oo] Added a naive method cache to Class PMC and used it from Object's | |
| 08:43 | parrot: find_method(). This improves NQP-rx's Actions.pm benchmark performance by some | |
| 08:43 | parrot: 7%. | |
| 08:43 | parrot: review: https://trac.parrot.org/parrot/changeset/42598/ | |
| 08:43 | parrot: r42599 | chromatic++ | trunk/src/gc/api.c: | |
| 08:43 | parrot: [GC] Removed an unnecessary memset() from get_free_buffer(), as the underlying | |
| 08:43 | parrot: allocator has already cleared the memory. | |
| 08:43 | parrot: review: https://trac.parrot.org/parrot/changeset/42599/ | |
| 09:01 | eternaleye joined #parrot | |
| 09:02 | estrabd_ joined #parrot | |
| 09:22 | abqar_ joined #parrot | |
| 09:48 | mikehh | All tests PASS (pre/post-config, smoke (#30060), fulltest) at r42599 - Ubuntu 9.10 amd64 (g++ with --optimize) |
| 09:57 | eternaleye joined #parrot | |
| 10:24 | lucian joined #parrot | |
| 11:03 | particle joined #parrot | |
| 11:04 | cghene joined #parrot | |
| 11:12 | theory joined #parrot | |
| 11:20 | cognominal joined #parrot | |
| 11:57 | cconstantine joined #parrot | |
| 12:10 | kid51 joined #parrot | |
| 12:17 | payload joined #parrot | |
| 12:24 | mariano__ joined #parrot | |
| 12:53 | mariano__ joined #parrot | |
| 13:16 | nopaste | "coke" at 72.228.52.192 pasted "for pmichaud: NQP -> PIR has unreachable rethrow." (5 lines) at http://nopaste.snit.ch/18786 |
| 13:18 | whiteknight joined #parrot | |
| 13:18 | iblechbot joined #parrot | |
| 13:23 | Coke | pmichaud: suggestion on where to put issues as I find them? issue tracker on github? |
| 13:23 | (there are a few, and hopefully we can drag in more people. =) | |
| 13:28 | (putting them in a todo for now.) | |
| 13:37 | pmichaud: the "undefined identifier 'lexpad'" is coming from "if". | |
| 13:48 | ruoso joined #parrot | |
| 13:53 | pmichaud | issues in github are fine for now -- whatever will work best for you in the long run :) |
| 13:53 | zak_ joined #parrot | |
| 13:53 | pmichaud | what code generated the unreachable rethow? |
| 13:54 | *rethrow | |
| 14:05 | Coke | pmichaud: it's in src/gen |
| 14:06 | added a TODO. | |
| 14:08 | e.g. src/gen/pmtcl-actions.pir:224 | |
| 14:09 | looks like that one might be the implicit return at the end of concat_atoms | |
| 14:22 | patspam joined #parrot | |
| 14:26 | pmichaud | looks like the spurious rethrow is a fossil from an incomplete refactor |
| 14:27 | (bisecting to find out where/why) | |
| 14:29 | yes, that's what it is. | |
| 14:29 | Coke++ | |
| 14:34 | Coke | I have not been able to find what variant of [if] is causing the 'lexpad' error yet. |
| 14:38 | pmichaud | I'm guessing it may have something to do with expr |
| 14:48 | dalek | parrot: r42600 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir: |
| 14:48 | parrot: [past]: Remove unreachable rethrow instruction in routines (Coke++). | |
| 14:48 | parrot: review: https://trac.parrot.org/parrot/changeset/42600/ | |
| 14:52 | lucian joined #parrot | |
| 15:10 | Psyche^ joined #parrot | |
| 15:12 | PacoLinux joined #parrot | |
| 15:13 | payload joined #parrot | |
| 15:16 | nopaste | "pmichaud" at 72.181.176.220 pasted "r42598 -- methodcache may need invalidating with add_method (for chromatic)" (39 lines) at http://nopaste.snit.ch/18788 |
| 15:18 | pmichaud | purl msg chromatic r42598 -- we probably need some way to clear method caches when new methods are added to classes (see http://nopaste.snit.ch/18788) |
| 15:18 | purl | Message for chromatic stored. |
| 15:18 | cognominal joined #parrot | |
| 15:25 | cognominal joined #parrot | |
| 15:30 | bubaflub joined #parrot | |
| 15:34 | Andy_ joined #parrot | |
| 15:44 | dalek | rakudo: 6bf0179 | masak++ | src/setting/Any-list.pm: |
| 15:44 | rakudo: [Any-list.pm] removed Int constraint on $num in .pick | |
| 15:44 | rakudo: review: http://github.com/rakudo/rakud[…]dce7c93bf5ff7f857 | |
| 15:56 | lua: 378a9d6 | fperrad++ | (49 files): | |
| 15:56 | lua: convert tests to PIR (from Perl) | |
| 15:56 | purl | I don't know how to convert tests to PIR (from Perl). |
| 15:56 | dalek | lua: review: http://github.com/fperrad/lua/[…]255c19b58f11c5901 |
| 16:08 | darbelo joined #parrot | |
| 16:08 | darbelo | ls |
| 16:08 | Ouch. Wrong window. | |
| 16:08 | cotto_work | good morning |
| 16:08 | darbelo | good localtime() |
| 16:09 | clock? | |
| 16:09 | purl | darbelo: LAX: Fri 8:09am PST / CHI: Fri 10:09am CST / NYC: Fri 11:09am EST / LON: Fri 4:09pm GMT / BER: Fri 5:09pm CET / IND: Fri 9:39pm IST / TOK: Sat 1:09am JST / SYD: Sat 3:09am EST / |
| 16:10 | dalek | parrot: r42601 | jkeenan++ | trunk/docs/configuration.pod: |
| 16:10 | parrot: Make explicit that new configuration steps should be proposed via Trac ticket. | |
| 16:10 | parrot: review: https://trac.parrot.org/parrot/changeset/42601/ | |
| 16:14 | TT #1189 closed by jkeenan++: t/steps/*/*.t: Replace reliance on init::defaults | |
| 16:15 | bubaflub | hey ya'll, i'm converting t/library/md5.t to PIR. any objections? |
| 16:16 | (more of a "anyone else working on this?") | |
| 16:17 | darbelo | bubaflub: Break first, apologize later ;) |
| 16:17 | bubaflub | roger that |
| 16:18 | darbelo | That's my MO, at least. |
| 16:23 | mikehh | All tests PASS (pre/post-config, smoke (#30076), fulltest) at r42600 - Ubuntu 9.10 amd64 (gcc with --optimize) |
| 16:29 | dalek | lua: a7d205a | fperrad++ | t/ (39 files): |
| 16:29 | lua: chmod +x t/*.t | |
| 16:29 | lua: review: http://github.com/fperrad/lua/[…]699f613f2bc4a889c | |
| 16:29 | lua: 7574cbd | fperrad++ | t/pmc/ (16 files): | |
| 16:29 | lua: chmod +x t/pmc/*.t | |
| 16:29 | lua: review: http://github.com/fperrad/lua/[…]1b292e91e0a4ec874 | |
| 16:29 | lua: b9ccf38 | fperrad++ | setup.pir: | |
| 16:29 | lua: build LUA_INIT from the config | |
| 16:29 | lua: review: http://github.com/fperrad/lua/[…]5fc1aef7d8b2311ac | |
| 16:29 | lua: e97ab92 | fperrad++ | plumage/lua.json: | |
| 16:29 | lua: add Plumage description | |
| 16:29 | lua: review: http://github.com/fperrad/lua/[…]12431bf8b8f1b1cb0 | |
| 16:29 | lua: 256ef88 | fperrad++ | .gitignore: | |
| 16:30 | lua: update .gitignore | |
| 16:30 | lua: review: http://github.com/fperrad/lua/[…]98bad6e2bf499ef89 | |
| 16:33 | zak_ joined #parrot | |
| 16:46 | dalek | lua: 26be3f8 | fperrad++ | lua/lib/luapackage.pir: |
| 16:46 | lua: fix LUA_PBCPATH (for batteries) | |
| 16:46 | lua: review: http://github.com/fperrad/lua/[…]3b26d67f13adaa70f | |
| 16:50 | mikehh | All tests PASS (pre/post-config, smoke (#30077), fulltest) at r42601 - Ubuntu 9.10 amd64 (g++ no --optimize) |
| 16:50 | Coke | is "num .= floor" in p6 "num = num.floor()" ? |
| 16:52 | payload joined #parrot | |
| 16:53 | Tene | Yes. |
| 16:56 | bubaflub | is there any array syntax so i can set multiple items at once |
| 16:57 | cotto_work | bubaflub, not in pir |
| 16:57 | bubaflub | bummer. |
| 16:57 | this test is going to be ugly | |
| 16:57 | fun, but ugly | |
| 16:57 | haha | |
| 16:58 | Coke | you can use json. |
| 16:59 | or split. | |
| 16:59 | $P0 = split 'a b c d e' is a quicky. | |
| 16:59 | (you can even do it inside a .const sub so it happens at compile time.) | |
| 16:59 | bubaflub | ah, very nice Coke++ |
| 16:59 | * Coke | pokes. |
| 17:00 | Coke | http://github.com/partcl/partc[…]tin/string.pir#L4 |
| 17:01 | (prolly overkill for a test, but good for something you'd otherwise have to split multiple times at runtime.) | |
| 17:01 | bubaflub | true |
| 17:03 | cotto_work | bubaflub, note that you'll always get a ResizableStringArray with split. |
| 17:04 | bubaflub | ok |
| 17:04 | nopaste | "coke" at 72.228.52.192 pasted "for pmichaud stacktrace question..." (18 lines) at http://nopaste.snit.ch/18789 |
| 17:04 | cotto_work | (probably not an issue, but good to know) |
| 17:04 | Coke | cotto_work: s/RSA/RSA or the HLL equivalent/ |
| 17:04 | (which you can abuse to force it to return any other core type you like.) | |
| 17:05 | PerlJam | Coke: how well-versed are you in how partcl-nqp works? |
| 17:05 | Coke | PerlJam: who the what now? |
| 17:05 | PerlJam | What connects the subs in Commands.pm to the stuff in Actions.pm? |
| 17:05 | maybe there's some PASTism that I'm missing. | |
| 17:05 | Coke | PerlJam: I know where the PIR entry point is. I know there is HLLCompiler glue holding it together. I know where to poke the grammar, the actions, and the runtime. |
| 17:06 | ah. moment. | |
| 17:09 | ... yah, i have no idea. | |
| 17:09 | You'd think that method command() would be it (in Actions.pm) | |
| 17:10 | oh. it is. | |
| 17:10 | It's pulling the name of the command, creating an op invocation, and then parsing the ast that's left into the args. | |
| 17:10 | so that turns "set a 3" into "set"("a","3") | |
| 17:11 | make sense to you? | |
| 17:11 | PerlJam | Sure. |
| 17:11 | Coke | whee! |
| 17:11 | now can I get you to supply a patch? =-) | |
| 17:12 | PerlJam | But by making the Op :name('set') (in your example, that's what happens), does that mean "call the sub named "set" ? |
| 17:12 | And why are all of the subs "our"? | |
| 17:13 | oh, that might be becaue of tcl scoping I guess | |
| 17:13 | Coke: what do you need patched? | |
| 17:15 | pmichaud | there's nothing that connects Commands.pm to Actions.pm |
| 17:16 | but yes, PAST::Op.new( :name('set') ) creates a node that will call the subroutine named 'set' | |
| 17:16 | bbi10 | |
| 17:18 | Coke | PerlJam: just updated the TODO. (could use more basic versions of those tcl builtins) |
| 17:18 | "incr" is probably an easy one. | |
| 17:18 | er, /just/ updated. | |
| 17:18 | (no changes to grammar required as yet for builtins, just add something to Commands.pm) | |
| 17:18 | (happy to give you commit bits.) | |
| 17:20 | * Coke | wonders how to match a regular expression in NQP. |
| 17:28 | Coke | where in rakudo-ng is the grammar? |
| 17:29 | dalek | parrot: r42602 | mikehh++ | trunk/t/pmc/eval.t: |
| 17:29 | parrot: remove TODO for passing test - TT #1142 | |
| 17:29 | parrot: review: https://trac.parrot.org/parrot/changeset/42602/ | |
| 17:29 | Coke | found it. |
| 17:30 | allison joined #parrot | |
| 17:32 | pmichaud | Coke: src/Perl6/Grammar.pg |
| 17:32 | er, .pm | |
| 17:32 | * PerlJam | looks at partcl-nqp's TODO |
| 17:32 | pmichaud | http://github.com/rakudo/rakud[…]/Perl6/Grammar.pm |
| 17:32 | NQP doesn't have full regex support yet -- I should probably add that soonish. | |
| 17:33 | Coke | token infix:sym<==> { <sym> <O('%compare_numeric, :pirop<eq>')> } |
| 17:33 | pmichaud | adding eq and == should be pretty straightforward |
| 17:33 | Coke | eq_p_p dies; how can I coerce my args? |
| 17:33 | pmichaud | you don't want :pirop<eq> |
| 17:33 | you want iseq | |
| 17:34 | or cmp_num | |
| 17:34 | Coke | The opcode 'iseq_p_p' (iseq<2>) was not found. Check the type and number of the arguments |
| 17:34 | pmichaud | the better grammar to follow is NQP's |
| 17:34 | Coke | pmichaud: as opposed to nqp rx's? |
| 17:35 | pmichaud | no, nqp-rx's |
| 17:35 | http://github.com/perl6/nqp-rx[…]rc/NQP/Grammar.pm | |
| 17:35 | Coke | pmichaud: all i did was copy what was already in partcl-nqp's grammar. |
| 17:35 | pmichaud | token infix:sym«==» { <sym> <O('%relational, :pirop<iseq INn>')> } |
| 17:35 | the "INn" part is what coerces the arguments | |
| 17:35 | Coke | does the %foo matter? |
| 17:36 | pmichaud | the %foo is pulling in the precedence |
| 17:36 | here, let's back up | |
| 17:36 | PerlJam | Coke: gimme a commit bit then (perlpilot on github) |
| 17:36 | Coke | right, but do the names matter? |
| 17:36 | pmichaud | you can name them whatever you want |
| 17:36 | Coke | or can I pick whatever I want for them? |
| 17:36 | pmichaud | so |
| 17:36 | (but they have to look like Perl hashes) | |
| 17:36 | NQP::Grammar.O(':prec<t=>, :assoc<left>', '%additive'); | |
| 17:36 | defines %additive as having prec => 't=' and assoc => 'left' | |
| 17:37 | Coke | PerlJam: done. |
| 17:37 | pmichaud | then later |
| 17:37 | token infix:sym<+> { <sym> <O('%additive, :pirop<add>')> } | |
| 17:37 | says that an infix + token should have the attributes defined by %additive, as well as pirop => 'add' | |
| 17:38 | the string '%additive, :pirop<add>' becomes the same as writing ':prec<t=>, :assoc<left>, :pirop<add>' | |
| 17:38 | Coke | do the capitalizations on INn matter? |
| 17:38 | pmichaud | yes |
| 17:38 | I = int register | |
| 17:38 | N = num register | |
| 17:38 | n = num register or numeric constant | |
| 17:38 | i = int register or integer constant | |
| 17:38 | S = string register | |
| 17:39 | s = string register or string constant | |
| 17:39 | P = pmc register | |
| 17:39 | Coke | I get the idea. =-) |
| 17:39 | pmichaud | there is also |
| 17:39 | * = anything | |
| 17:39 | ~ = string register, string constant, or PMC | |
| 17:39 | + = anything numeric | |
| 17:39 | v = void | |
| 17:40 | * diakopter | learns |
| 17:40 | pmichaud | so, iseq INn forces the opcode to look something like $Ixx = iseq $Nxx, ## |
| 17:40 | * PerlJam | builds a better parrot |
| 17:40 | pmichaud | where ## will be a numeric constant if the argument is already numeric, otherwise it's cast into a $Nyy register |
| 17:41 | I'm thinking of modifying the :pirop syntax to be iseq__INn (using double underscore instead of space), so that it more closely matches the pir::iseq__INn syntax in NQP | |
| 17:41 | (the old space separate form will continue to work through 2.0, of course :) | |
| 17:42 | time for lunch here -- bbiah | |
| 17:42 | (wife is treating me to lunch :) | |
| 17:46 | btw, is there somewhere that has a better description of what {*} does exactly? | |
| 17:46 | it seems to me that it's just a form of :flat | |
| 17:46 | PerlJam | Coke: okay, teach me a little tcl syntax: How do I set a variable and then output its value? I tried "set x 3 ;puts [expr x]" |
| 17:47 | pmichaud | PerlJam: set x 3; puts $x |
| 17:47 | $x is the rvalue form | |
| 17:47 | (waiting on wife to be ready to go) | |
| 17:48 | Coke | also, [set x] |
| 17:48 | (though that fails atm.) | |
| 17:49 | PerlJam | How do I make an array? |
| 17:50 | (llength looks easy enough too if only I knew more tcl :) | |
| 17:50 | Coke | llength == list, not array. |
| 17:50 | PerlJam | sorry, list then |
| 17:50 | Coke | array in tcl means associative array. |
| 17:50 | well, in a real tcl, you could do [list a b c] | |
| 17:51 | but if you stringify that, you get "a b c"... which conveniently listifies if you try to call llength or something listy on it. | |
| 17:51 | (so just use space separated strings for now.) | |
| 17:51 | PerlJam | so, "set x [list a b c]" ? |
| 17:51 | Coke | yes. |
| 17:52 | pmichaud | is that substantially different from set x {a b c} , ooc? |
| 17:52 | Coke | pmichaud: in one, you end up with a list object internally. in the other, you end up with a string. |
| 17:52 | but if you treat the string like a list, it morphs to one. | |
| 17:52 | pmichaud | and same for treating list like a string? |
| 17:52 | Coke | yes. |
| 17:52 | pmichaud | okay, that's what I thought. I didn't write the custom list or string types needed to do that. |
| 17:52 | * PerlJam | wonders if pmichaud is making the other pmichaud wait or if it's the other way around. |
| 17:53 | Coke | pmichaud: I obviously already have most of that in PIR. |
| 17:53 | pmichaud | Coke: right -- thus I figured I didn't need to worry about it :) |
| 17:57 | PerlJam | Is it just me or is github being a little slow? |
| 17:57 | lucian | PerlJam: i think it's just you |
| 17:58 | bubaflub | github website or github push/pull? |
| 17:58 | PerlJam | push/pull |
| 17:58 | purl | well, push/pull is a pain because you can't change default push to not match pull |
| 17:59 | pmichaud | Coke: uplevel is uplevel 3 {code} which runs code in a context three levels up? |
| 18:01 | Coke | yes, where 3 could also be of the style #N where it's then N levels down from the topmost context. |
| 18:01 | so, uplevel #0 {code} runs code in the global context. | |
| 18:01 | pmichaud | oh. I think that's pretty easy to implement in the nqp version |
| 18:01 | does that mean that eval {code} is essentially the same as uplevel 0 {code} ? | |
| 18:02 | yay, we finally can go to lunch now | |
| 18:02 | bbiaw | |
| 18:03 | nopaste | "coke" at 72.228.52.192 pasted "3 examples for pmichaud" (13 lines) at http://nopaste.snit.ch/18791 |
| 18:03 | Coke | (I think eval does a little more processing on the input) |
| 18:03 | enjoy l unch. | |
| 18:04 | I hope to hear "easy in nqp" very often, btw. =-) | |
| 18:05 | PerlJam++ #that was quick. | |
| 18:07 | PerlJam | I'll happily implement LHF if you point me at it :) |
| 18:08 | (though I'm still not sure how to think about lists in tcl) | |
| 18:08 | Coke | LHF? |
| 18:08 | purl | somebody said LHF was Low Hanging Fruit |
| 18:08 | Coke | ah. |
| 18:09 | PerlJam: lists are kind of like scalars in tcl. | |
| 18:09 | chromatic joined #parrot | |
| 18:09 | Coke | They're one of the types that stringifies and back. (as opposed to arrays, which are the only real "container" type.) |
| 18:09 | dalek | parrot: r42603 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: |
| 18:09 | parrot: [distutils] add a target 'win32-inno-installer' | |
| 18:09 | parrot: review: https://trac.parrot.org/parrot/changeset/42603/ | |
| 18:10 | Coke | PerlJam: feel free to strike incr from the todo list. |
| 18:10 | er, the TODO list. | |
| 18:10 | PerlJam | oh, yeah, I forgot about that |
| 18:10 | Coke | puts stderr/stdout (with just literals for those channel ids) would probably be pretty easy. |
| 18:11 | http://www.tcl.tk/man/tcl8.5/TclCmd/puts.htm | |
| 18:17 | dalek | TT #1142 closed by mikehh++: test 12 of t/pmc/eval.t fails in testr (passes in other runcores) |
| 18:20 | eiro joined #parrot | |
| 18:20 | dalek | TT #1310 created by bubaflub++: [PATCH] convert t/library/md5.t to PIR |
| 18:22 | PerlJam | how do you even write to stderr in parrot? Is there a say-equivalent for stderr (that doesn't die :) |
| 18:23 | Tene | PerlJam: I think there's a way to get the stderr object, and then you write to it. |
| 18:24 | cotto_work | PerlJam, use the getstderr op and pass that as the first argument to say |
| 18:24 | jan joined #parrot | |
| 18:24 | cotto_work | wait, scratch that |
| 18:25 | you have to use print | |
| 18:30 | mikehh | bubaflub: I like that patch - will test it in a bit and apply it if it is ok |
| 18:30 | bubaflub | mikehh: okey dokey. |
| 18:34 | PerlJam | Coke: what are your plans for partcl's test suite? |
| 18:34 | Coke: (I feel a little weird adding some functionality with no tests) | |
| 18:34 | Coke | PerlJam: I was trying to get it to the point where I could just run partcl's test suite. |
| 18:34 | (and fail most of it miserably.) | |
| 18:35 | perhaps a "sanity" test file for "things we need to get to get test_more working." | |
| 18:35 | PerlJam | Coke: well, checkout what I just pushed and tell me if I did anything very wrong :) |
| 18:35 | Coke | (just a single .t for now) |
| 18:36 | I am almost willing to admit that NQP looks nicer than .hllmacros. =-) | |
| 18:37 | PerlJam++ #nice. | |
| 18:37 | PerlJam | almost? |
| 18:38 | Coke | PerlJam: (you can remove puts from the todo. =-) |
| 18:38 | PerlJam | ack! I forget again. |
| 18:39 | Coke | I don't know how I'd write an NQP based .t |
| 18:39 | (that runs tcl) | |
| 18:40 | I wonder how return would work. it throws a control exception (of type return), but wouldn't that interfer with the NQP that the command is now written in? | |
| 18:41 | (test) guess I could just do it the hard way. | |
| 18:42 | joeri joined #parrot | |
| 18:44 | chromatic | Do I remember that someone wrote a test for using the wrong type of register with :opt_flag? |
| 18:44 | mikehh | All tests PASS (pre/post-config, smoke (#30080), fulltest) at r42603 - Ubuntu 9.10 amd64 (g++ with --optimize) |
| 18:45 | cotto_work | chromatic, I recall seeing something like that fly by. |
| 18:46 | Coke | chromatic: me, yes. |
| 18:47 | regressions.t | |
| 18:47 | chromatic | Lovely, thanks |
| 18:49 | bubaflub | hey ya'll, after running `make realclean` `git status` shows some files that are still untracked |
| 18:49 | shouldn't realclean nuke everything that isn't tracked? | |
| 18:49 | cotto_work | bubaflub, parrot's vcs is svn |
| 18:49 | ;) | |
| 18:49 | bubaflub | yeah, i'm using git svn |
| 18:49 | cotto_work | ah |
| 18:50 | bubaflub | it looks like some stuff in runtime/parrot/library/*.pbc |
| 18:50 | HLL.pbc, P6Regex.pbc, Regex.pbc, and nqp-rx.pbc in there | |
| 18:50 | and then parrot-npq stuff as well | |
| 18:50 | payload joined #parrot | |
| 18:52 | Coke | PerlJam: there, sanity test. |
| 18:53 | bubaflub: yes. | |
| 18:55 | bubaflub | should some of those files be added to the makefile? |
| 18:57 | darbelo joined #parrot | |
| 19:04 | pmichaud | back from lunch |
| 19:06 | dalek | parrot: r42604 | chromatic++ | trunk (4 files): |
| 19:06 | parrot: [IMCC] Made IMCC throw a syntax error when using :opt_flag on a register that's | |
| 19:06 | parrot: not of the int type; this would have caught TT #744 (reported by Stephen | |
| 19:06 | parrot: Weeks). This passes and unTODOs the three tests added in r42569. | |
| 19:06 | pmichaud | Coke: yes, throwing return from a NQP "return" sub would likely get caught. |
| 19:06 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42604/ |
| 19:06 | pmichaud | maybe the answer is to have "return" written as a bare block instead of a routine |
| 19:07 | Coke | well, we do have to dispatch to it. not sure how bare block would handle that. |
| 19:07 | pmichaud | I'm thinking GLOBAL::return := { ... }; |
| 19:07 | or, since you'll want args | |
| 19:07 | GLOBAL::return := -> *@args { ... }; | |
| 19:08 | Coke | just slap that into Commands.pm ? |
| 19:08 | pmichaud | probably needs to be in an INIT block in order to run |
| 19:08 | and we need the code in the ... to create and throw the return exception | |
| 19:09 | although... | |
| 19:09 | 'return' already does that | |
| 19:09 | hmmm | |
| 19:09 | dalek | winxed: r183 | julian.notfound++ | trunk/examples/parser.winxed: |
| 19:09 | winxed: parser example: temporary registers are now temporary | |
| 19:09 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=183 | |
| 19:09 | pmichaud | simple form of return only takes a single argument? |
| 19:09 | so I'd guess | |
| 19:09 | INIT { GLOBAL::return := -> $result = '' { return $result; } | |
| 19:10 | } | |
| 19:10 | then we need to get proc-defined blocks to catch return exceptions | |
| 19:11 | which, iirc, is just $block.control('return_pir'); | |
| 19:11 | Coke | pmichaud: looks like it works without changing proc. |
| 19:11 | particle joined #parrot | |
| 19:11 | Coke | is proc already of a type that understands what a return exception means? |
| 19:11 | pmichaud | no |
| 19:12 | it's just a Block, iirc | |
| 19:12 | normally it wants to have a .control() | |
| 19:12 | Coke | (works) tclsh8.5 != pmtcl. :) |
| 19:12 | Could not find non-existent sub return | |
| 19:13 | pmichaud | hmmm. |
| 19:14 | dukeleto | 'ello |
| 19:14 | pmichaud | oh, fwiw, I was generally keeping the commands in Commands.pm in alphabetical order (noticing 'incr' at the bottom) |
| 19:14 | puts was the exception, because we needed it before being able to do anything else :) | |
| 19:15 | omg, we have -nonewline?! | |
| 19:15 | cooooool | |
| 19:15 | KatrinaTheLamia joined #parrot | |
| 19:16 | Coke | PerlJam++ was busy. |
| 19:19 | pmichaud | Could not find non-existent sub return |
| 19:19 | ....weird. | |
| 19:19 | I can see in the trace where it's indeed being set. | |
| 19:19 | Coke | is that tcl or nqp complaining, I wonder? =-) |
| 19:19 | pmichaud | It's parrot. |
| 19:19 | pmichaud orange:~/partcl-nqp$ ./pmtcl 12248 set P0, PC810 P0=PMCNULL PC810=Sub=PMC(0x8320d60 pc:12262) 12251 capture_lex P0 P0=Sub=PMC(0x8320d60 pc:12262) 12253 set_hll_global PC799, "return", P0PC799=Key=PMC(0x834336c) P0=Sub=PMC(0x8320d60 pc:12262) 12257 trace 0 |
|
| 19:19 | ugh | |
| 19:19 | irssi paste fail | |
| 19:20 | Coke | right, but it is complaining about tcl's return sub that we efined with INIT... or is it complaining about that sub's use of nqp's return? |
| 19:20 | pmichaud | (nopasting) |
| 19:20 | nqp's return doesn't result in a subroutine call | |
| 19:20 | so, it's the former. | |
| 19:21 | Coke | ok. INIT (GLOBAL::) is very magical to me, so I don't know where to start, there. |
| 19:21 | (how does that differ from "our sub") ? | |
| 19:21 | pmichaud | INIT { ... } simply defines things to be run when the code is loaded |
| 19:21 | GLOBAL:: refers to the global hll namespace | |
| 19:22 | the difference is that "our sub" places a return handler in the block | |
| 19:25 | bubaflub | i'm having trouble converting a regex to something usable in PIR ... where is the doc for the syntax for new style regexes? |
| 19:25 | chromatic | Hm, I can parse 127.1 lines of Actions.pm per second. |
| 19:26 | pmichaud | chromatic: is that after your changes of last night? I was going from the timings as of yesterday. |
| 19:26 | chromatic | Yes, this is after my changes. |
| 19:27 | Coke | bubaflub: the p6 regexes are described in synopsis 5. |
| 19:27 | bubaflub | coke, thanks |
| 19:27 | pmichaud | (i.e., when it took 16sec for me to compile a 685 line Actions.pm . |
| 19:27 | Coke | http://perlcabal.org/syn/S05.html |
| 19:27 | chromatic | It takes me 5.4. |
| 19:27 | pmichaud | I'll try it again. |
| 19:27 | chromatic | Are you using an optimized build? |
| 19:28 | pmichaud | oh, probably not. |
| 19:28 | Coke | insert rant about not being able to build optimized on os x. :| |
| 19:28 | pmichaud | I can try with optimize. |
| 19:28 | chromatic | Here's a nickel, kid. Go buy yourself a Unix written sometime this millennium. |
| 19:28 | pmichaud | "And bring back my nickel when you're done." |
| 19:29 | Coke: aha. Looks like the nqp-rx in parrot is a bit out of date. | |
| 19:29 | it's not the version that understands GLOBAL:: | |
| 19:30 | * Coke | waits for the inevitable update! |
| 19:30 | pmichaud | double-checking that it indeed works in nqp-rx master, first. |
| 19:31 | it doesn't. | |
| 19:31 | bug bug bug | |
| 19:31 | ohhhhhhh | |
| 19:31 | no. | |
| 19:31 | hrm. | |
| 19:31 | ohhhhhh | |
| 19:31 | fixing. | |
| 19:32 | Coke | "aaaaaah ooooooh whatcha gonna dooooo?" |
| 19:33 | PerlJam | "bad bugs, bad bugs, ... " ? |
| 19:35 | * Coke | was referring to the fu schnickens, but points for pop culture reference. |
| 19:39 | bubaflub | arg, these new fangled perl 6 regex are killing me softly |
| 19:39 | dukeleto | bubaflub: why so? |
| 19:39 | bubaflub | dukeleto: i'm so use to "regular" regular expressions, i.e. Perl 5 style |
| 19:40 | pmichaud | ugh, I need to run to store for a bit. Will fix GLOBAL:: when I get back |
| 19:40 | bubaflub | and all their convoluted nonsense |
| 19:40 | pmichaud | in meantime, can do |
| 19:40 | bubaflub | that the simpler stuff is actually taking some getting use to |
| 19:40 | PerlJam | bubaflub: once you do get used to it, you'll never want to go back. |
| 19:40 | pmichaud | INIT { pir::set_hll_global__sP('return', -> $result = '' { return $result; } ); } # I think |
| 19:41 | bubaflub | PerlJam: last time i heard that, it was about switching to git from svn and they were totally right |
| 19:41 | PerlJam | heh. |
| 19:41 | * PerlJam | wonders if he was the one who said that about svn->git too |
| 19:41 | PerlJam | (I would have said something like that anyway) |
| 19:42 | bubaflub | PerlJam: well, i had to start learning last year for work |
| 19:42 | long before i was hacking parrot | |
| 19:42 | but no doubt it is the case | |
| 19:42 | that you also said that | |
| 19:47 | chromatic | Hah, STRINGNULL is a performance improvement. |
| 19:49 | Coke | chromatic: vindicated much? |
| 19:51 | chromatic | I like when correctness AND performance improve together. |
| 19:51 | Oh yes, and the resulting code is *shorter*. | |
| 19:52 | Coke | pmichaud: I cannot make that work; complains that set_hll_global is getting /3/ args instead of 2. |
| 19:52 | dropping the __sP, it then complains that the types are wrong. | |
| 19:53 | chromatic: how much of a performance improvement? | |
| 19:54 | dalek | TT #1311 created by bubaflub++: [PATCH] convert t/library/uuid.t to PIR |
| 19:54 | * Coke | ponders running another spectest run on partcl0 |
| 19:54 | Tene | chromatic++ |
| 19:55 | dalek | parrot: r42605 | chromatic++ | trunk/src/pmc/string.pmc: |
| 19:55 | parrot: [PMC] Used STRINGNULL in String PMC's init() instead of a new empty STRING, | |
| 19:55 | parrot: which improves performance on the NQP-rx Actions.pm benchmark by 1.45%. | |
| 19:55 | parrot: review: https://trac.parrot.org/parrot/changeset/42605/ | |
| 20:02 | mikehh | bubaflub: commited your patch at r42606 |
| 20:02 | dalek | parrot: r42606 | mikehh++ | trunk/t/library/md5.t: |
| 20:02 | parrot: convert test to pir - patch from bubaflub++ (TT #1310 ) | |
| 20:02 | purl | I don't know how to convert test to pir - patch from bubaflub++ (TT #1310 ). |
| 20:02 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42606/ |
| 20:02 | bubaflub | cool |
| 20:06 | pmichaud | Coke: working on return now |
| 20:06 | (updating nqp-rx first) | |
| 20:08 | dalek | winxed: r184 | julian.notfound++ | trunk/examples/parser.winxed: |
| 20:08 | winxed: labels and goto in example parser | |
| 20:08 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=184 | |
| 20:10 | dukeleto | chromatic++ # stringy nulls! |
| 20:10 | Essobi | Is it save to blackrain |
| 20:10 | woops.. wrong window. Heh | |
| 20:10 | Coke | next up? stringy squirrel. |
| 20:12 | dalek | parrot: r42607 | fperrad++ | trunk/runtime/parrot/library/distutils.pir: |
| 20:12 | parrot: [distutils] add a target 'smoke' | |
| 20:12 | * dukeleto | prefers meaty squirrels |
| 20:12 | dalek | parrot: review: https://trac.parrot.org/parrot/changeset/42607/ |
| 20:12 | Coke | pmichaud: (return) thanks. |
| 20:13 | (as long as you're in there, basic versions of continue/error/break would also be similar. =-) | |
| 20:13 | japhb | dukeleto, somewhere around here I still have an old copy of the Joy of Cooking which has a whole section on preparing squirrels and other similar small mammals for ... well, one presumes "eating", but perhaps just to scare the neighbors. |
| 20:14 | Newer versions seem to skip that section .... | |
| 20:14 | dukeleto | japhb: nice. is that the backwoods edition? |
| 20:14 | Coke | *thbbthp* |
| 20:16 | japhb | Older JoC's were ... folksier. |
| 20:16 | I remember back a decade or two buying the "now with (some) vaguely healthy food" edition. | |
| 20:17 | dalek | lua: 05607fb | fperrad++ | setup.pir: |
| 20:17 | lua: use target 'smoke' | |
| 20:17 | lua: review: http://github.com/fperrad/lua/[…]f51a1868aea0e4be2 | |
| 20:17 | nqp-rx: b387ccf | pmichaud++ | (2 files): | |
| 20:17 | nqp-rx: Allow bareword GLOBAL:: package identifier. | |
| 20:17 | nqp-rx: review: http://github.com/perl6/nqp-rx[…]aa4a6feb41ee17292 | |
| 20:17 | nqp-rx: 2443dcc | pmichaud++ | src/stage0/ (3 files): | |
| 20:17 | nqp-rx: Update bootstraps. | |
| 20:17 | nqp-rx: review: http://github.com/perl6/nqp-rx[…]9d630240d94268550 | |
| 20:20 | TT #1312 created by bubaflub++: [PATCH] convert t/library/protoobject.t to PIR | |
| 20:20 | bubaflub | i'm out for now, everyone have a great weekend |
| 20:22 | dalek | winxed: r185 | julian.notfound++ | trunk/examples/parser.winxed: |
| 20:22 | winxed: minor fixes | |
| 20:22 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=185 | |
| 20:23 | cognominal joined #parrot | |
| 20:26 | * Coke | wonders how S| in p6 is different from || |
| 20:26 | dalek | parrot: r42608 | pmichaud++ | failed to fetch changeset: |
| 20:26 | parrot: [nqp]: Update to allow bare GLOBAL::symbol handling. | |
| 20:26 | parrot: review: https://trac.parrot.org/parrot/changeset/42608/ | |
| 20:28 | pmichaud | pushed update for return |
| 20:28 | so, anywhere that I can find a better explanation of {*} in tcl ? | |
| 20:29 | dalek | lua: 010a358 | fperrad++ | (5 files): |
| 20:29 | lua: remove testclean, | |
| 20:29 | Coke | the "list of twelve" there doesn't help? checking the tclers wiki... |
| 20:29 | dalek | lua: clean up is done in each test |
| 20:29 | lua: review: http://github.com/fperrad/lua/[…]6c649f31fd046a69f | |
| 20:30 | Coke | (list of twelve is the "Dodekalogue", btw.) |
| 20:30 | pmichaud | {*} is described there, but not clearly enough that it matches what I see from tclsh |
| 20:31 | I think I'm missing something. | |
| 20:31 | Coke | here's the original TIP (like an RFC): |
| 20:31 | http://www.tcl.tk/cgi-bin/tct/tip/157 | |
| 20:31 | (where * was spelled expand) | |
| 20:32 | pmichaud: verified, that makes 'return' work. | |
| 20:32 | dalek | parrot: r42609 | chromatic++ | trunk/src/pmc/resizableintegerarray.pmc: |
| 20:33 | parrot: [PMC] Modified ResizableIntegerArray PMC to use accessor macros instead of | |
| 20:33 | parrot: VTABLE calls in hot paths; this gives about a 0.5% performance improvement on | |
| 20:33 | parrot: the NQP-rx Actions.pm benchmark. | |
| 20:33 | parrot: review: https://trac.parrot.org/parrot/changeset/42609/ | |
| 20:33 | parrot: r42610 | NotFound++ | trunk/src/ops/cmp.ops: | |
| 20:33 | parrot: use STRING_IS_NULL in if_null and unless_null ops | |
| 20:33 | parrot: review: https://trac.parrot.org/parrot/changeset/42610/ | |
| 20:33 | Coke | (I'd write a test, but sanity.t is dying. =-) |
| 20:33 | actually, I'll write a test anyone, one more thing to pass... | |
| 20:33 | pmichaud | so, it looks to me like {*} means "perform substitutions, split into words, pass as flattened arguments" |
| 20:35 | ...except that it does do backslash and brace handling... or, something. | |
| 20:37 | Coke | backslash is part of perform substitutions. |
| 20:38 | (note that real tcl provides [subst] to do these substitutions at run time as well, as an aside.) | |
| 20:39 | so, yes, as I understand it, {*}<WORD> will replace that with [subst <WORD>] - and then replace that one word in the AST with all the words that result after the subst. | |
| 20:39 | so... yes, pretty much what you said. | |
| 20:44 | so, I would make a {*}<WORD> a special kind of word that you can use in a command (at any point, even as the command itself), and then have the ast there do a pass of substitutions (can we just do something like eval there and have it return the ast?) and wedge the ast from that into the ast of the command. Yes? | |
| 20:50 | chromatic | Hm, get_bool is 5.66% of execution time. |
| 20:52 | Coke | r42609 breaks encapsulation, yes? |
| 20:52 | (or no, because it's SELF?) | |
| 20:52 | (is it all SELF?) | |
| 20:52 | japhb | chromatic, did you fix pmichaud's issue about needing to invalidate the method cache on add_method? I've gotten lost in the flow of commits .... |
| 20:52 | chromatic | I haven't yet. |
| 20:52 | japhb | k |
| 20:52 | Thought I just didn't notice it go by. | |
| 20:52 | chromatic | I have most of an algorithm in my head, but haven't had the brainpower to make it work. |
| 20:53 | Coke | (would GET_ATTR_foo even work on another type?) |
| 20:53 | chromatic | If it's a subclass. |
| 20:54 | Coke | k. so i won't worry about it. =-) |
| 20:58 | pmichaud | chromatic: my suggestion is have a global counter or marker somewhere that gets cleared whenever a new method is added (to any class) |
| 20:59 | protoregexes have to deal with something of the same issue-- they have to recalculate tables whenever a new regex is added | |
| 21:00 | each cache keeps track of the marker that was in place when the cache was created; if the marker changes, then the cache invalidates itself and starts anew | |
| 21:01 | more sophisticated mechanisms are possible, but this one is fairly simple and works okay when adding methods occurs infrequently (and in batches, such as with load_bytecode) | |
| 21:02 | japhb | dukeleto, ping |
| 21:03 | pmichaud | Coke: surely the substitutions take place at runtime, not at compile time though? |
| 21:03 | I don't think {*} is like an eval. | |
| 21:03 | Coke | the trick is that compile time doesn't happen until that command. =-) |
| 21:03 | pmichaud | I think it's like a "take the result of normal substitutions to the following word and interpolate them here" |
| 21:04 | so cmd {*}"a b c" is the same as cmd a b c | |
| 21:04 | Coke | as long as it happens before the command getting invoked sees it, we're fine. |
| 21:04 | pmichaud | right, that's definitely the case |
| 21:04 | but with something like | |
| 21:05 | {*}{abc [expr 3+5] def} | |
| 21:05 | ...what happens there? | |
| 21:05 | Coke | that invokes the command "abc" with the arglist "8 def", I believe. |
| 21:05 | pmichaud | well, something like puts {*}{abc [expr 3+5] def} then |
| 21:06 | theory joined #parrot | |
| 21:06 | pmichaud | % puts {*}{abc[expr 3+5]def} |
| 21:06 | can not find channel named "abc[expr" | |
| 21:06 | Coke | puts("abc",8,"def") ? |
| 21:06 | moment. | |
| 21:06 | pmichaud | in this case, the "substitution" is a brace substitution, no further substitutions occur, so the result is puts("abc[expr", "3+5]def") |
| 21:07 | (which is an error, because the first argument isn't a channel) | |
| 21:07 | but with | |
| 21:07 | % puts {*}{abc\ndef} | |
| 21:07 | abc | |
| 21:07 | def | |
| 21:07 | the \n substitution gets performed. | |
| 21:08 | Coke | yah, that's not what I was expecting, apologies. (verified with tclsh8.5) |
| 21:09 | checking the docs again... | |
| 21:09 | pmichaud | [5] says |
| 21:09 | "After substitution, the word is parsed again without substitutions, and its words are added to the command being substituted." | |
| 21:09 | Coke | right, but for me "substitutions" is all 3 kinds. |
| 21:09 | (so the docs are a little misleading there.) | |
| 21:09 | pmichaud | sure |
| 21:09 | Coke | seeing if there's a spectest. |
| 21:10 | pmichaud | substitutions is all three kinds, but that would be |
| 21:10 | hmmm, nm. | |
| 21:11 | Coke | basic.test has a lot of tests, one of which is: |
| 21:11 | catch {namespace delete {*}[namespace children :: test_ns_*]} | |
| 21:12 | OH. | |
| 21:12 | puts {*}{abc [expr 3+5] def} NEQ | |
| 21:12 | puts {*}"abc [expr 3+5] def" | |
| 21:12 | TimToady | S| returns a junction, not the first true value |
| 21:12 | Coke | TimToady: ah, thanks. |
| 21:12 | purl | ah, thanks. is it fast enough? |
| 21:12 | Coke | no, thanks is <reply> |
| 21:12 | pmichaud | Coke: right, I understand the difference between the quoted version and the brace version |
| 21:13 | in the quoted version, the substitution takes place before the split | |
| 21:14 | in the brace version, I would expect no substitutions to occur... but backslash substitutions do. | |
| 21:14 | % proc xyz {} {return 8} | |
| 21:14 | % puts {*}"abc[xyz]def" | |
| 21:14 | abc8def | |
| 21:14 | % puts {*}{abc[xyz]def} | |
| 21:14 | abc[xyz]def | |
| 21:15 | % puts {*}{abc\ndef} | |
| 21:15 | abc | |
| 21:15 | def | |
| 21:15 | it's just weird that backslash substitutions are included. | |
| 21:15 | when other "substitutions" are not. | |
| 21:16 | Coke | Yup. I agree, that is wierd. (checking to see if partcl can deal with any of these properly...) |
| 21:16 | sorry I misunderstood the problem you were pointing at. | |
| 21:16 | pmichaud | the TIP mentioned Tcl_SplitList -- is there a command that corresponds to that? |
| 21:17 | Coke | that's the raw C function in the Tcl API. |
| 21:17 | pmichaud | right |
| 21:17 | Coke | (which we're not using.) I'd have to skim tcl source to see what calls it. |
| 21:17 | pmichaud | okay. |
| 21:18 | Coke | partcl does handle those 3 cases properly. =-) |
| 21:18 | I think mdiep did the original version of that. | |
| 21:19 | pmichaud | While extracting the arguments, Tcl_SplitList obeys the usual rules for backslash substitutions and braces. |
| 21:21 | dcolish | will following trunk on launchpad be essentailly the same as following svn TRUNK? |
| 21:21 | Coke | note that if we can just get a {*} that only passes 2 of those 3 samples, that's might get us through test_more.tcl |
| 21:21 | (but doing it right the first time++, of course.) | |
| 21:21 | pmichaud: pinging #tcl... | |
| 21:23 | dcolish: I'm not sure if that's automatically synced. I am not sure launchpad is used for anything at this point, though. | |
| 21:24 | (huh. seems to be nearly up to date with annoyncements, at least.) | |
| 21:24 | dcolish | looks like it gets imported every 2 hours, but yeah i was sort of asking if it get used or not |
| 21:25 | Coke | it was allison's push to get us on there. I think she was the only one that actively used it. |
| 21:25 | pmichaud | Coke: okay, I think I have it figured out now from tclsh. It's not the same as any of the existing substitutions -- it is its own beastie. |
| 21:25 | dukeleto | dcolish: hola |
| 21:25 | dcolish | dukeleto: hey ! |
| 21:25 | dukeleto | dcolish: i wanted to come to the pdxpug meeting last night, but IRL got in the way |
| 21:25 | Coke | pmichaud: [::facepalm::] |
| 21:25 | chromatic | Perl 5 has a similar marker. I think it's possible to walk MRO backwards and touch only the affected classes, but we'll see. |
| 21:26 | dukeleto | who wants to be a @parrotvm social media ninja? |
| 21:26 | dcolish | dukeleto: not a problem, i'll be doing a phase 2 talk at one point |
| 21:26 | pmichaud | chromatic: ...but how to walk mro forwards? |
| 21:26 | dcolish | you did miss cupcakes although |
| 21:26 | chromatic | We do have a GC which knows how to walk classes. |
| 21:26 | pmichaud | chromatic: i.e., if I add a method to a parent class, how does all of its subclasses learn of it? |
| 21:27 | okay, I could see how the gc could help a bit. | |
| 21:27 | just seems... weird. | |
| 21:27 | Coke | pmichaud: this may be instructive: |
| 21:27 | lindex [list {*}{abc\ndef}] 0 | |
| 21:27 | mikehh joined #parrot | |
| 21:28 | chromatic | Mostly I mean that all classes have a single root. |
| 21:28 | Coke | this may be covered by partcl's list/string shimmering |
| 21:28 | (which would explain why it jfw for us.) | |
| 21:28 | pmichaud | Coke: this one surprised me a bit: |
| 21:28 | % puts {*}{abc\n{def\nghi}} | |
| 21:28 | abc | |
| 21:28 | {def | |
| 21:28 | ghi} | |
| 21:28 | chromatic | Though walking all classes and filtering by presence in MRO may be more expensive than the naive "increment a generation number" approach. |
| 21:29 | allison | Coke: I really only use launchpad for Ubuntu package testing (it is good for that) |
| 21:30 | particle | dukeleto: http://www.king5.com/news/loca[…]nce-70291187.html |
| 21:30 | pmichaud | afk, kid pickup |
| 21:31 | Coke | pmichaud: I think the string -> list conversion there is what is surprising us. (and then it has to be converted back to a string for display) |
| 21:33 | dcolish | is the http://docs.parrot.org/parrot/[…]ch05_nqp.pod.html page still valid for nqp-rx? |
| 21:34 | Coke | pmichaud: "parsed again /as a list/ without substitutions" is probably slightly more accurate. |
| 21:34 | there is an objection that this makes Tcl.n non-self-contained, but I argue that the code isn't, so neither should be the man page. | |
| 21:35 | (opening a tcl tracker...) | |
| 21:36 | payload joined #parrot | |
| 21:37 | dalek | TT #1310 closed by mikehh++: [PATCH] convert t/library/md5.t to PIR |
| 21:43 | pmichaud | oh, I get it a bit |
| 21:44 | in the last case, the braces aren't normal braces. | |
| 21:44 | but they still count for bracketing equality... which is kinda weird. | |
| 21:46 | ah, I see why they count for bracketing equality. | |
| 21:46 | very interesting :-) | |
| 21:47 | okay, I think I've got it. | |
| 21:47 | let's see if I can get a reasonable attempt for {*} | |
| 21:47 | Coke | +10 |
| 21:47 | purl | 10 |
| 21:47 | pmichaud | another errand, bbiab |
| 21:49 | Coke | well, then only +8! |
| 21:49 | diakopter | +16! |
| 21:50 | Coke | pmichaud: https://sourceforge.net/tracke[…]10894&atid=110894 (doc bug reported on {*}) |
| 21:56 | nopaste | "NotFound" at 213.96.228.50 pasted "Fix for examples/benchmarks/primes.pasm" (26 lines) at http://nopaste.snit.ch/18797 |
| 21:56 | NotFound | Is this fix correct? |
| 22:00 | chromatic | Seems reasonable to me. |
| 22:04 | dalek | TT #1313 created by bubaflub++: [PATCH] convert t/library/parrotlib.t to PIR |
| 22:05 | parrot: r42611 | NotFound++ | trunk/examples/benchmarks/primes.pasm: | |
| 22:05 | parrot: [examples] fix primes.pasm to show the same "last is" as the other versions | |
| 22:05 | parrot: review: https://trac.parrot.org/parrot/changeset/42611/ | |
| 22:05 | NotFound | Forgot to add: PacoLinux++ |
| 22:11 | mikehh | All tests PASS (pre/post-config, smoke (#30083), fulltest) at r42610 - Ubuntu 9.10 amd64 (gcc with --optimize) |
| 22:11 | bubaflub: will check out your new patch after a bit of a break | |
| 22:16 | dalek | winxed: r186 | julian.notfound++ | trunk/winxed.cpp: |
| 22:16 | winxed: relax restrictions on ++ and -- operators | |
| 22:16 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=186 | |
| 22:26 | winxed: r187 | julian.notfound++ | trunk/winxed.cpp: | |
| 22:26 | winxed: allow usage of <, <=, > amd >= with var | |
| 22:26 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=187 | |
| 22:27 | * chromatic | tries describing a small, short-term project on the wiki |
| 22:29 | dalek | tracwiki: v1 | chromatic++ | ClassVtableOverrides |
| 22:29 | tracwiki: a plan and a plea for volunteers | |
| 22:29 | tracwiki: https://trac.parrot.org/parrot[…]ion=1&action=diff | |
| 22:29 | tracwiki: v2 | chromatic++ | ClassVtableOverrides | |
| 22:29 | tracwiki: formatting improvements | |
| 22:29 | tracwiki: https://trac.parrot.org/parrot[…]ion=2&action=diff | |
| 22:31 | chromatic | That should be an afternoon's worth of work for an Infinoid, a NotFound, a Tene, a Whiteknight, a cotto, or a bacek. |
| 22:31 | Tene | What am I doing this weekend? |
| 22:32 | oh, it's a wiki! Hello, wiki! | |
| 22:34 | NotFound | chromatic: I've been thinking about that sveral times, but never materialized. |
| 22:35 | chromatic | Object's get_bool() is 5% of the NQP-rx benchmark I've been using, all thanks to checking for vanishingly few VTABLE overrides. |
| 22:38 | NotFound | Interesting. |
| 22:38 | pmichaud | note that vtable overrides are quite common in Rakudo, though. |
| 22:39 | chromatic | If the suggested approach works, we don't pay the penalty for checking for them. |
| 22:39 | pmichaud | that's fine |
| 22:39 | just making sure that nqp-rx isn't taken as HLL representative in that respect | |
| 22:39 | (because nqp-rx is explicitly designed to work with native Parrot PMCs and not custom types, unlike HLLs which will tend to do a lot more overriding) | |
| 22:40 | NotFound | Another improvement might be to avoid entering a runloop in opcodes that does only a vable call, but I fail to imagine a plan for that. |
| 22:41 | chromatic | I've had the same idea, NotFound, but I don't have a good plan either. |
| 22:43 | lucian joined #parrot | |
| 22:53 | Coke | chromatic: +1 on that mini project. will save a bunch of (#&*$ annoying code. |
| 23:10 | ilbot2 joined #parrot | |
| 23:10 | Topic for #parrotis now Parrot 1.8.0 Zygodactyly released | Latest modified TT's: http://icanhaz.com/parrotbugs | Parrot Languages: http://icanhaz.com/parrotlang | |
| 23:10 | nopaste | "pmichaud" at 72.181.176.220 pasted "{*} expansion in pmtcl -- for Coke" (16 lines) at http://nopaste.snit.ch/18798 |
| 23:11 | particle joined #parrot | |
| 23:11 | Coke | sweet! |
| 23:11 | did you roll your own list->string->list conversion? | |
| 23:11 | pmichaud | string->list conversion, yes. |
| 23:11 | It's handled by the 'list' rule in the grammar. | |
| 23:12 | it parses a string into a list, performing brace and backslash handling in the process | |
| 23:13 | http://github.com/partcl/partc[…]cl/Grammar.pm#L60 | |
| 23:13 | dalek | parrot-plumage: e03130c | japhb++ | : |
| 23:13 | parrot-plumage: Beginnings of speculative changeover to contextual globals; blocked on u... | |
| 23:13 | parrot-plumage: review: http://gitorious.org/parrot-pl[…]d6258891e28f13d99 | |
| 23:13 | parrot-plumage: 83bef3a | japhb++ | : | |
| 23:13 | parrot-plumage: [CORE] Glue.pir: Use less painful way to set dynamic lexicals that may n... | |
| 23:13 | parrot-plumage: review: http://gitorious.org/parrot-pl[…]13fe8d9db6a5b444e | |
| 23:13 | parrot-plumage: 3968bb3 | japhb++ | : | |
| 23:13 | parrot-plumage: More contextuals edits; CAN HAZ WURKNG NOW | |
| 23:13 | parrot-plumage: review: http://gitorious.org/parrot-pl[…]9d096923292be366b | |
| 23:13 | baest_ joined #parrot | |
| 23:13 | sri joined #parrot | |
| 23:14 | mj41 joined #parrot | |
| 23:15 | pmichaud | btw, there's definitely a problem with |
| 23:15 | PmTcl::Grammar.O(':prec<13>', '%multiplicative'); | |
| 23:15 | PmTcl::Grammar.O(':prec<12>', '%additive'); | |
| 23:15 | PmTcl::Grammar.O(':prec<9>', '%compare_numeric'); | |
| 23:15 | PmTcl::Grammar.O(':prec<8>', '%compare_string'); | |
| 23:15 | precedence comparisons are string compares | |
| 23:15 | so you probably want "09" and "08" | |
| 23:16 | Coke | k |
| 23:17 | particle joined #parrot | |
| 23:21 | Coke | fixed. |
| 23:25 | particle1 joined #parrot | |
| 23:25 | dalek | winxed: r188 | julian.notfound++ | trunk/winxed.cpp: |
| 23:25 | winxed: relax type restrictions o *, /, % and %% operators, unfinished | |
| 23:25 | winxed: review: http://code.google.com/p/winxe[…]urce/detail?r=188 | |
| 23:29 | Coke | pmichaud: any clues on the lexpad issue? |
| 23:29 | * Coke | <- needy. |
| 23:33 | payload joined #parrot | |
| 23:35 | Coke | I wonder if <script> needs the same lexpad init as <body> |
| 23:40 | payload joined #parrot | |
| 23:43 | japhb | Is there a PIR way to determine whether a code PMC is a sub or a method? |
| 23:45 | chromatic | $S0 = typeof $P0 ? |
| 23:46 | japhb | chromatic, should I expect 'Sub' and 'Method' back from that? |
| 23:47 | Somehow I expected it to be more contorted than that, given that the only difference is a flag on the .sub declaration ... | |
| 23:47 | Hunger joined #parrot | |
| 23:48 | chromatic | Hm, good point. |
| 23:48 | pmichaud | afaik, Parrot doesn't make a type distinction between subs and methods |
| 23:48 | japhb | pmichaud, I'm having problems with setting object attributes from within inner blocks. Like within a for loop inside a method. |
| 23:49 | (in nqp-rx) | |
| 23:49 | pmichaud | have a short code example? |
| 23:49 | japhb | Since the inner block is a separate pir sub, no 'self' exists. |
| 23:49 | pmichaud | it's supposed to be lexical 'self' anyway |
| 23:49 | japhb | give me a sec, and I'll try to get it minimal |
| 23:50 | mariano__ joined #parrot | |
| 23:51 | japhb | parrot-nqp -e 'class Foo; has $!foo; sub foo () { for 1,2,3 -> $a { $!foo := $a } };' |
| 23:51 | The opcode 'setattribute_ic_sc_p' (setattribute<3>) was not found. Check the type and number of the arguments | |
| 23:52 | And with --target=pir, you can see why ... the for loop block isn't a method, and has no way of finding self, but that's what the generated setattribute code uses. | |
| 23:52 | urg | |
| 23:53 | Same error if I correctly use method instead of sub above, sorry. | |
| 23:56 | kid51 joined #parrot | |
| 23:58 | pmichaud | ....doesn't need to find 'self' as a register, because 'self' is lexical. |
| 23:59 | it can't be a method. | |
| 23:59 | just a sec, it's obviously a bug. | |
| 23:59 | particle1 joined #parrot |
← Previous day | Index | Channel Index | Today | Next day → | Search | Google Search | Plain-Text