|
Parrot 2.1.1 Released! | parrot.org/ | Tasks: PCC deprecations branch, HLL subclassing and MMD branch Set by moderator on 19 February 2010. |
|||
|
00:03
tetragon joined
|
|||
| Whiteknight | doing that kind of stuff from NQP is key. | 00:03 | |
| especially if we want to have any hope of supplanting PIR one day | 00:04 | ||
| darbelo | You, PIR hater, you. | 00:06 | |
| Austin | Hmm...Parrot_range_rand needs fixing. | 00:07 | |
| Whiteknight | pmichaud: i would like to start building a PBC compilation library, with the ultimate goal of using it as a backend to PCT one day. would like your ideas on interface and design to reach that goal | ||
| Austin: no,your application needs to lower its expectations | 00:08 | ||
| Austin | Well, I was kind of expecting it to behave as documented. | ||
| Apparently, I forgot where I was for a moment... | |||
| Whiteknight | foolish | ||
| Austin slaps himself.. | |||
| Whiteknight | whats the problem? | 00:09 | |
| purl | well, the problem is that WikiDoc doesn't use Pod formatting codes, and I don't like to have two sets of formatting codes. | ||
| cotto_work | a pbc compilation library could help with direct past to pbc generation | ||
| s/could/would/ | |||
| Whiteknight | cotto_work, thats the idea | ||
| dalek | TT #1479 created by Austin_Hastings++: Improve random-ness of Parrot_range_rand | 00:19 | |
| Austin | Should it be Array.uniq or Array.unique ? | 00:20 | |
| (Or uniquify, I guess.) | |||
|
00:23
kid51 joined
00:25
lucian_ joined
|
|||
| Whiteknight | unique | 00:28 | |
| Austin | I went with distinct | 00:29 | |
| The SQL got me. | |||
| Whiteknight | no pain in spelling it out | ||
| ok | |||
| darbelo | Coke: ping | 00:31 | |
| dukeleto | Whiteknight: i like your 2nd reply to Jon Gentle, he has some interesting ideas | 00:34 | |
| Whiteknight | I support good ideas, and lambast bad ones on my blog :) | 00:36 | |
| dukeleto | Whiteknight: duly noted ;) | 00:40 | |
| davidfetter | or in my case, dully ;) | 00:41 | |
| dukeleto | davidfetter: there you go, always causing trouble :) | 00:43 | |
| davidfetter | heh | ||
| darbelo | purl: msg Coke See nopaste.snit.ch/19772 for the last build problem with Sun cc on rm_cflags. | 00:44 | |
| purl | Message for coke stored. | ||
| darbelo | purl: msg Coke Once that's solved feel free to merge back to trunk, you won't break any builds. | 00:49 | |
| purl | Message for coke stored. | ||
| dalek | kudo/master: 5d38786 | jonathan++ | src/core/Mu.pm: Add back default .perl. |
00:53 | |
| kudo/master: 88f57f6 | jonathan++ | t/spectest.data: We pass three more spectests now (deferal related stuff). |
|||
| kudo/master: 1cdb0d8 | jonathan++ | src/ (4 files): Get deferal stuff back in place, to the degree we had it in alpha. |
|||
|
00:53
bacek joined
01:16
cotto joined
|
|||
| Whiteknight | Austin: have a suggestion to improve Parrot_range_rand? | 01:21 | |
| Whiteknight has to find it in the codebase | |||
| Austin | It's in dyn*/math | 01:22 | |
| Add one, then limit? | |||
| random * (max - min + 1) ; if result > max { result--; } | 01:23 | ||
| But check the definition of the drand code- it may be possible to change the range to 0.9999 | 01:24 | ||
| Whiteknight | we could just change the documentation of Parrot_range_rand to say it goes from [x to y) | ||
| Austin | Except for when it occasionally doesn't? | 01:25 | |
| Whiteknight | when that happens, we open a ticket, try it out a few times, and inevitably close it as WORKSFORME | ||
| :) | |||
| Austin | :) | ||
| whiteknight-- | |||
| You have a future in tech support. | 01:26 | ||
| Whiteknight | Parrot_range_rand has this documentation: "Returns a C<FLOATVAL> in the interval C<[0.0, 1.0)>." | 01:27 | |
| so it seems that it should never reach 1.0, if the docs are to be believed | |||
| Austin | Okay. | 01:28 | |
| You mean some other function than range_rand. Fload_rand maybe? | |||
| *Float | |||
| range_rand says [from, to] | |||
| Whiteknight | yeah, I see that | 01:29 | |
| Austin | So if float_rand is [0, 1) | ||
| then no problem. | |||
| Just make sure the range is inclusive. | |||
| Whiteknight | no, the _drand48 docs say it's [0.0, 1.0) | ||
| Austin | 1 + (max - min) | ||
| Add one. | |||
| Because 0.9999 in C is 0. | 01:30 | ||
| Whiteknight | that would create a small bias towards (max - 1) | ||
| small, but so long as we're fixing it, we should do it right | |||
| Austin | So range_rand(0,1) would return 0 + (double)(1 - 0) * rand = 0 + 1.0*random = 0 + 0.999 = 0 always | 01:31 | |
| No bias. It's a fencepost error. | |||
| The drand48/float_rand function returns a range excluding the max. | |||
| Whiteknight | www.opengroup.org/onlinepubs/007908...and48.html | 01:32 | |
| that page says it's inclusive of max | |||
| are you seeing documentation that disagrees? | 01:33 | ||
| Austin | Nope. I was trusting the your earlier remark. | 01:34 | |
| Whiteknight | okay, this is what I am following then | 01:35 | |
| While I'm looking at it, I think we could improve Parrot_uint_rand to output a 64-bit integer on 64-bit systems | 01:37 | ||
| ...but that's another issue for another time | |||
| this whole file smells of "quickly implemented" | |||
| Austin | Heh. | ||
| Looking at the _erand48 code in utils.c, I tend to agree with 1.0) | |||
| The max value for a short is 65535, and they are dividing by 65536.0 | 01:38 | ||
| So it's going to be 0.999 all the way. | |||
| My suggestion then is to add 1 to the (max-min) range computed in Parrot_range_rand, before multiplying by float_rand. | 01:40 | ||
| Whiteknight | fixed | 01:41 | |
| Austin | Thus a range request of [2,4] would produce 2 + (1 + 4-2)*rand, or 2 + 3*rand, or 2 + [0, 3), aka [2, 4] | ||
| Whiteknight | r44467 | 01:42 | |
| Austin | w00t | ||
| Whiteknight | w00t indeed | ||
| Austin | FWIW, this isn't tested exhaustively in the unsort testcase. :) | ||
| Whiteknight | Austin: improved tests always appreciated :) | 01:44 | |
| you have a commit bit now, right? | |||
| Austin | yeah | ||
| Whiteknight | rock that sucker | ||
| Austin | It's a kakapo thing. | ||
| ttbot | Parrot trunk/ r44467 i386-linux-thread-multi make error tt.ro.vutbr.cz/file/cmdout/215159.txt ( tt.ro.vutbr.cz//buildstatus/pr-Parrot/rp-trunk/ ) | ||
| Whiteknight | what test harness does distutils use? Does it use Tapir? | 01:46 | |
| Austin | IDK | 01:49 | |
| No, distutils just assumes you have a t/ dir with a harness executable, etc. | |||
| Whiteknight | without a t/harness, it looks like it searches for tapir, and then it falls back to using prove in some capacity | 01:50 | |
| dukeleto: ping | 01:51 | ||
| looks like I have to isntall tapir, and distutils will use it | |||
| Coke | darbelo: pong | 01:52 | |
| austin: tcl has been using dynops for years. | 01:53 | ||
| Austin | coke: how do you make it work? | 01:54 | |
| dalek | rrot: r44467 | whiteknight++ | trunk/src/utils.c: fix Parrot_range_rand to alleviate the bias on the upper limit. Austin++ for the catch. Also, a few small doc updates |
||
| Whiteknight | purl msg dukeleto: I think Tapir needs some love. It doesn't run tests for me on my system (can't find GetOpt::Obj), when it's installed it isn't chmod +x, and when I run the installed version it can't find lib/Tapir/parser.pbc | 01:55 | |
| purl | Message for dukeleto stored. | ||
| Coke | .loadlib 'tcl_ops' | 01:56 | |
| You could probably do it with the loadlib opcode if you put it into an :immediate block. | |||
| Austin | So you're not doing it *from* tcl? | ||
| Coke | no. | 01:57 | |
| partcl is written in pir. | |||
| Austin | Right. I was trying to get it working from nqp. | ||
| Coke | welp, partcl is broken today, but the .sub '' :anon :immediate; loadlib 'tcl_ops' ; .end might work. | 02:01 | |
| then you can put it in a sub of some kind. | 02:02 | ||
| Austin | :) | ||
| Thanks. | |||
| I got it working with dlfunc. | |||
| Whiteknight | what does the NQP error "rtype not set" mean? | 02:14 | |
| It's on this line: "if $len >= $max_length" | |||
| actually, maybe it's this line: "my $len := pir::length__i_s($_);" | 02:16 | ||
| Austin | Really? | 02:18 | |
| Usually I get it when I'm assigning instead of calling. | |||
| Whiteknight | no, nevermind, I don't think the line number reported is happening in my code | ||
| Austin | laugh | ||
| I find that doing $foo.method := 1 instead of $foo.method(1) gives me the rtype error. | 02:19 | ||
| (I had to blog it so I could remember it.) | |||
| Austin sings, "Sometimes I live in the country. Sometimes I live in town. Sometime I take a fool notion .. to jump in the river and drown!" | 02:24 | ||
| Whiteknight | okay, in NQP, I write "$i = pir::length__i_s($filename)" | 02:25 | |
| Austin | := | ||
| Whiteknight | and the error I get is "The opcode 'length_i_p' (length<2>) was not found." | 02:26 | |
| Austin | pir::length__IS | ||
| Whiteknight | I meant := | ||
| Austin | Tho I think you can use lowercase, if you want. | ||
| Whiteknight | this line gives me the "rtype not set" error: "pir::exit__I(1);" | 02:30 | |
| so why is that? | |||
| Austin | I disbelieve. | ||
| Whiteknight | I comment out that line, error goes away | 02:31 | |
| Austin | Okay. I believe. | ||
| You declared a return type. | |||
| Just do pir::exit(1) | |||
| Whiteknight | no other way to tell, since the super-helpful error message doesn't have a line number | ||
| Austin | or maybe pir::exit__vI(1) | ||
| What are you doing in nqp, if I may ask? | |||
| dalek | kapo: 9604856 | austin++ | (3 files): Converted all of the array code (but 'new') to methods. |
02:32 | |
| Whiteknight | Austin: I'm trying to update the test harness for Parrot-Data-Structures | 02:56 | |
| it has been long-neglected | 02:57 | ||
| Austin | ahh | ||
| Whiteknight | I'm also just trying to get my feet wet with NQP, I haven't used it nearly as much as I should have | ||
| I want to rewrite much of the test suite in it | |||
| chromatic | Meh. | ||
| Whiteknight | right now I fake it with a shit-ton of Q:PIR{} blocks | ||
| Meh? | |||
| purl | well, Meh is 'unexciting or unappealing' or www.youtube.com/watch?v=zSDj7bjAv2s | ||
| chromatic | Oh, the PDS test suite. Un-meh. | 02:58 | |
| Whiteknight | chromatic: yeah, I wouldn't dare with the Parrot suite | ||
| but PDS is safe | 02:59 | ||
| Coke | I == Integer, not integer, no? | ||
| seems like vi would be better. | |||
| Whiteknight | I use PIR for benchmarks to keep a little bit more control, but for tests NQP is fine | ||
| vi is never better | |||
| Coke | ah, no, I is int register, but i can also be an int constant. | 03:00 | |
| Whiteknight | ...and on that note I'm off to bed. Goodnight | 03:02 | |
| dalek | rrot-data-structures: eceb4bf | Whiteknight++ | t/harness: some aesthetic improvements to the output of the test harness. FPQ still fails a does test that I can't quite explain. FPQ2 and FPQ3 are still aborting early with a floating point exception. |
03:04 | |
| kid51 | me has bedtime reading: Whiteknight's recent blog posts | 03:06 | |
| Since they're all over my head, I expect to get to sleep really quickly ;-) | |||
|
03:10
theory joined,
cotto joined
|
|||
| dalek | kapo: 7104cf8 | austin++ | src/ (12 files): More Array functions! Plus got rid of ::empty. |
03:38 | |
|
04:00
janus joined
|
|||
| dalek | rrot: r44468 | mikehh++ | trunk/src/utils.c: can not modify a const |
04:07 | |
| rrot: r44469 | tene++ | branches/exceptions_refactor/src/ops/core.ops: Allow subclasses of Exception to be thrown |
04:24 | ||
|
04:59
AndChat| joined
05:25
desertm4x_ joined
|
|||
| dalek | rrot: r44470 | mikehh++ | trunk/src/utils.c: range needs to be [from .. (to - 1)] not [0 .. (to - from + 1)] |
05:29 | |
|
05:39
cotto joined
06:45
JimmyZ joined
|
|||
| dalek | kudo/master: e79112d | duff++ | t/spectest.data: Add S06-multi/unpackability.t to spectest.data |
07:09 | |
|
07:22
bacek joined
|
|||
| mikehh | All tests PASS (pre/post-config, make corevm/make coretest, smoke (#32386), fulltest) at r44470 - Ubuntu 9.10 amd64 (gcc with --optimize) | 07:34 | |
| dalek | rrot: r44471 | mikehh++ | trunk/src/utils.c: the range must be [from .. to] inclusive - the removed test would double up on (to - 1) |
07:40 | |
| rrot: r44472 | mikehh++ | trunk (2 files): change some of the tests so that [from..to] does not overlap [0..((to - from) + 1)] and update copyright on previous commit |
07:56 | ||
| purl | dalek: that doesn't look right | ||
|
08:05
fperrad joined
08:10
iblechbot joined
08:36
eternaleye joined
|
|||
| fperrad | msg darbelo have you seen r44453 ? | 08:40 | |
| purl | Message for darbelo stored. | ||
|
09:13
bacek joined
|
|||
| mj41 | msg NotFound pbc_disassemble.exe hanging on some taptinder windows clients at nopaste.snit.ch/19753 | 09:23 | |
| purl | Message for notfound stored. | ||
|
09:28
barney joined
09:30
AndyA joined,
yoyo joined
09:38
pdcawley joined
09:59
uniejo joined
10:00
wagle joined
10:02
cosimo joined
|
|||
| uniejo | $ echo ".HLL 'test1'" | ./parrot -E - # Revision 44472 | 10:17 | |
| Segmentation fault | |||
| purl | (Core dumped) | ||
|
10:18
jhelwig joined
|
|||
| moritz | uniejo: open a track ticket | 10:18 | |
| uniejo | moritz: Do you have a link | 10:19 | |
| moritz | uniejo: trac.parrot.org/parrot/newticket (you might need to create an account first) | ||
|
10:30
gaz joined
10:41
lucian joined
|
|||
| dalek | TT #1480 created by uniejo++: Preprocessing using parrot -E fails | 10:46 | |
|
11:23
payload joined
12:16
bluescreen joined
12:37
payload joined
12:55
whiteknight joined
|
|||
| whiteknight | good morning #parrot | 12:57 | |
|
13:15
Austin joined,
wknight8111 joined,
payload joined
13:16
ruoso joined
|
|||
| Austin | Good morning, Whiteknight. Are you done bouncing? | 13:17 | |
| whiteknight | Austin: yeah, done. | 13:19 | |
| I brought my personal computer in to work today, so I switched over to that | |||
| if I can't get home because of the weather, I'm staying the night at my parent's hous | 13:20 | ||
| Austin | Man, you're hardcore. | ||
| I left the baby at home, but I'm taking my laptop to shelter... | |||
| whiteknight | my wife took the baby with her, and will likewise be staying with her 'rents if she can't get home | 13:21 | |
| Austin | Ahhh | ||
| whiteknight | it's a weird situation where we both work very close to where our Parents live, and very far away from where we live | ||
| Austin | Hmm. I think I've found another nqp bug | 13:22 | |
| whiteknight | "undocumented feature" | ||
| did those improvements to Parrot_range_rand that I made yesterday actually fix the issue? | 13:24 | ||
| nopaste | "Austin" at 68.37.46.53 pasted "Potential nqp-rx parse error" (13 lines) at nopaste.snit.ch/19775 | ||
| Austin | I don't know. I saw some commits from mikehh that seemed to indicate there were testing problems. | 13:25 | |
| whiteknight | well, let me run some tests now, see what I get | ||
| mikehh | I first had a problem building and then after I fixed that I found I was getting intermittent failures with the math.t test | 13:29 | |
| whiteknight | damnit. Let me look | 13:30 | |
| mikehh | then I found it was returning 0..20 or something rather than 5..25, fixed that and then modified the test so that it wouldn't hapopen again | ||
| s/hapopen/happen/ | 13:31 | ||
| Austin | zounds! | ||
| whiteknight | all coretests successful here | ||
| mikehh | they should be now | 13:32 | |
| whiteknight | mikehh++ | ||
| Austin | FYI: The is.. opcode (forexample: islt) will store a condition into an integer. | 13:33 | |
| whiteknight | I positively hate all the comparison opcodes we have | 13:34 | |
| of course, I positively hate many of our opcodes | |||
| Austin | :) | ||
| Did you get a chance to read my idea from yesterday morning, or were you part of the irc droppage? | 13:35 | ||
| whiteknight | Austin: a refresher might be appreciated :) | ||
| Austin | Unify vtable and methods. | ||
| whiteknight | how so? | ||
| Austin | Put them all in one big table. | 13:36 | |
| whiteknight | a table with variable length? | ||
| Austin | Nope. | ||
| Create an interned string type (what I think you've referred to a constant strings) | |||
| Assign a sequential number to all method names. | 13:37 | ||
| Every method call is either (1) a vtable call; (2) a call to a method with a name known at load-time, in which case it can be num-ified; (3) a name known only at run time, which has to be looked up in the enumerator or, if not found, dispatched to the _AUTOLOAD or whatever mechanism. | 13:38 | ||
| The "vtable" is simply the low NNN methods. We can manage that based on frequency of use or necessity. | |||
| whiteknight | I'm not sure how that improves on anything we currently have | 13:39 | |
| Austin | It means that vtable calls and method calls with fixed names take the same time. | ||
| (Modulo argument packaging) | |||
| whiteknight | but it sounds like VTABLE management becomes sigificantly more expensive | 13:40 | |
| Austin | No, why would it? | ||
| $object -> vtable [ x ] | |||
| whiteknight | at the moment, VTABLEs are a fixed-length structure, and we store all the VTABLEs in a large array, which we index by type number | ||
| Austin | Right. | 13:41 | |
| whiteknight | so making VTABLEs different lengths with numbers of methods in it makes that all harder | ||
| Austin | I'd replace that with a pointer to the table. | ||
| And the vtables would be the same length. | |||
| whiteknight | so then how do you re-implement Parrot_pmc_new, which takes a type number? | ||
| we keep another mapping around? | |||
| Austin | $interp -> new( type_number ) | ||
| whiteknight | right. internally, how do we go from type_number to VTABLE*? | 13:42 | |
| Austin | Why would you want to? Call the class, let it set the vtable. | ||
| whiteknight | I'm missing some important details in my mind | 13:43 | |
| Austin | I think part of it may be too much internals knowledge. | ||
| whiteknight | yeah, I'm damaged goods like that | 13:44 | |
| Austin | The way to create a new object is to ask the class for one. | ||
| So you need to lookup the class, then ask it. | |||
| whiteknight | Austin: okay, so how do we look up the class? | ||
| Austin | I'm glad you asked. :) | ||
| whiteknight | I'm becoming less and less so | ||
| :) | |||
| Austin | Pretend you're in pir or nqp: you go to the namespace and ask it for the class. | 13:45 | |
| You use the name to get the namespace, natch. | |||
| If you want some subsystem to cache that info, then the caching is an internal problem - let the subsystem deal with it. | |||
| So, the pcc system will probably hold on to the RPA and Hash class pointers. | 13:46 | ||
| etc. | |||
| whiteknight | So to create a new PMC, I have to lookup the NameSpace in some global cache, ask that for the Class, and ask the Class for a new object? | ||
| Austin | Isn't that what you do now? | 13:47 | |
| whiteknight | We can't cache class pointers, because HLLs can override default types at runtime | ||
| Austin: internally, no. We use type numbers | |||
| Parrot_pmc_new(interp, enum_class_ResizablePMCArray) | |||
| Austin | And what do you do with them? | ||
| Sounds like someone is holding a cache ... | 13:48 | ||
| whiteknight | and then we lookup the vtable as interp->vtables[x] | ||
| Austin | That would change. | ||
| whiteknight | each type has an idx number which is put into an enum list at compile time | ||
| Austin: internally it's a huge performance win to do it that way | |||
| the idea of assinging built-in methods an integer index and using that index for fast lookups of staticly-given names is an interesting one | 13:49 | ||
| ...assuming we can get around the problems of ducktyping and other introspective nonsense | 13:50 | ||
| Austin | That's not a problem. | ||
| whiteknight | foo."bar"() may not always point to the same method for the same class | ||
| Austin | Right. | ||
| It will always point to the same method for the same class. It may get replaced if an object does a local override. | |||
| Each class needs a different table, just like now. | 13:51 | ||
| Dog.bark() and Tree.bark() would be in the "bark" slot, but different tables. DogTree.bark() would get set up my the MRO to point to one or the other. | 13:52 | ||
| *by the | |||
| *ever* class would have a "bark" slot, but most of them would point to the default "try-to-AUTOLOAD-this-or-throw-a-method-not-found-exception" method. | 13:53 | ||
| The win here is replacing code with data. | |||
| whiteknight | So we're paying a cost in a huge amount of extra storage for every class, because every class has a slot for every method, but defaults on most of them? | 13:54 | |
| Austin | Build a method that throws the appropriate error, fill in all the slots with it, and eliminate a bunch of conditional logic. | ||
| Right. | |||
| whiteknight | that sounds like a huge memory expenditure | ||
| Austin | Per class? | ||
| purl | Per class is "with 'Role::Foo'" | ||
| whiteknight | yeah, how many classes do you think an average program running in an HLL on top of Parrot needs to be aware of? | 13:55 | |
| Austin | Maybe 1000 ? | ||
| whiteknight | VTABLEs are already 2k | ||
| Austin | I bet we could reduce that. | 13:56 | |
| whiteknight | I've been trying like hell | ||
| Austin | So double it. | ||
| 4k methods @ 8 bytes per pointer = ... 32k per table. | |||
| * 1k classes = 32m | |||
| whiteknight | A better idea, I think, would be to let the class object do that caching itself. Store it in an array in the class, not in the vtable | ||
| we're asking the class anyway, it can look things up, cache them, and update caches when ducktyped | 13:57 | ||
| Austin | My point is not to ask the class. | ||
| Just *pointer()! | |||
| Actually: (*pointer)() | |||
| whiteknight | We're also looking into adding callsite caching with PIC. Method pointers for each callsite only need to be looked up once per class, and the class can cache to support multiple callsites | 13:58 | |
| Austin | I think we could shrink that 32m number with some smart opcodes (call-method-below-1k, call-method-below-2k, etc.) | ||
| This would eliminate that. | |||
| whiteknight | It's definitely an interesting idea, but I'm not sure that there's a performance win to be had at all, much less one commeasurate with the development effort expenditure | 13:59 | |
| Austin | I'm pretty sure that $object -> methods [ x ] is a performance win over callmethodcc. | 14:01 | |
| My approach lets us make the caching standard, and puts it in the class (which will probably leave it set to the default). | 14:02 | ||
| But yeah, it'd take a lot of work to implement. | 14:03 | ||
| :) | |||
| whiteknight | Austin: it's a performance win over callmethodcc as it exists now. | 14:05 | |
| add in some aggressive caching, both call-site and class-side caching, and I don't think there's a win anymore | |||
| Austin | ok | 14:06 | |
| whiteknight | imagine a callmethodcc call that takes an extra parameter, which is a cache object. We can create the cache object at compile time and store it in the constants table. | ||
| callmethodcc, if it has the cache object, looks up the method in there. | 14:07 | ||
| I say"if it has a cache object" because for places where the optimizer is guaranteed to know the type in advance, we can forget all this nonsense and inline a direct call | 14:08 | ||
| Austin | So callmethodcc looks in the cache and sees if the invocant object has dispatched the particular method before. And if so it calls the subref it has. And if not is does the lookup? | 14:09 | |
| *not it does | |||
| whiteknight | Austin: basically, yes. But it can be cheap because we can lookup based on object type number (for a constant method name) | ||
| if the method name is variable, bets are off anyway | 14:10 | ||
| so something like find_method_p_sc would do aggressive cachin, find_method_p_s wouldn't | 14:11 | ||
|
14:13
iblechbot joined
|
|||
| Austin | Well, this is gonna hurt. | 14:21 | |
| whiteknight | ? | ||
| Austin | Replacing all the squillions of references to @array.elements with .elems | ||
| No chances for error there... | 14:22 | ||
| whiteknight | add an elements method to array that outputs a backtrace to stderr | 14:24 | |
| then run the program | |||
| Austin | Heh | ||
| Nah, I'm perling out all the .elements -> .elems | |||
| It's the case where that WASN'T a method call I'm worried about. | |||
| whiteknight | that's cool too | ||
| why "elems" as opposed to "elements"? a little verbosity is rarely a bad hing | 14:25 | ||
| thing* | |||
| Austin | P6 | 14:27 | |
| S32::Containers | |||
| "elems" | |||
| our Int method elems (@array: ) is export | 14:28 | ||
| Like 'exists'. | 14:29 | ||
| Except that 'exists' bothers me more. | |||
| %hash.exists('foo') | |||
| No! | |||
| %hash.contains('foo') | |||
| Coke | I was going to ask why you were going all P6-y here, but this is to make parrot objects looks slightly more p6-like for nqp, yes? | 14:32 | |
| Austin | If only I could add methods to the null pmc | ||
| Coke: yeah. Kakapo | |||
| Coke | Austin: you can't just shove methods into the null namespace? | ||
|
14:32
bacek joined
|
|||
| Coke | (I mean, it would freak me out, but It might work.) | 14:32 | |
| Austin | No. Stupid parrot checks for null access. | ||
| :) | 14:33 | ||
| I wonder if there's a way to hllmap the nullpmc? | |||
| Tene | *blink* *shudder* | ||
| Austin | Oooh. Only 5 failures... | ||
| Tene | That's kinda creepy. | ||
| Austin | What? | ||
| PerlJam | Austin: if you have a commit bit to the pugs repo, you can always adjust the spec to your liking ;) | 14:34 | |
| Tene | hllmap nullpmc | ||
| Austin | Weren't you one of the guys telling me how we had to have nullpmc different from undef so people could differentiate between exists-but-not-set and not-exists? | ||
| PerlJam: ;) | |||
| Coke | Austin: I imagine hll mapping null is going to fail. | 14:35 | |
| Austin | Yeah. Discrimination, patently. | ||
| Coke | I suspect things like isnull are checking for the PMCNULL singleton. | ||
| rather than "isa 'null'" | |||
| Austin | Lazy coding | 14:36 | |
| Hey, I wouldn't mind if the hllmap was to another singleton. | |||
| I just want to put methods on it. | |||
| method exists() { 0; } | |||
| unless %hash<key>.exists { say("No such key"); } | 14:37 | ||
| git-- | 14:42 | ||
| I'm the only person working on my private branch. I'm only using one computer. So how can I get push rejected, not fast-forward? | 14:43 | ||
| purl, tapir? | |||
| purl | tapir is being written to be testable from the ground up, unlike nqpTAP or github.com/leto/tapir or a TAP Harness written in PIR | ||
| dalek | kapo: 323b693 | austin++ | (2 files): More Array functions! Plus got rid of ::empty. |
14:44 | |
| kapo: e96df4c | austin++ | (10 files): Added more methods. Yay. Also, test cases. Yaaaay. Now with less bugs! |
|||
| kapo: 85fc81b | austin++ | (16 files): Replaced .elements with .elems in Array, Hash. |
|||
| Austin | Does anyone have mod_parrot running publicly | 14:46 | |
| ? | |||
|
14:57
kurahaupo joined
15:04
parthm joined
15:08
parthm left
|
|||
| dalek | kapo: c1d92a2 | austin++ | (3 files): Added class name support to Mock |
15:11 | |
| kapo: 90201f8 | austin++ | : review: gitorious.org/kakapo/kakapo/commit/...adf3e2915c |
|||
|
15:15
theory joined
15:21
Ryan52 joined
|
|||
| Coke | a yahoo address! how quaint! =-) | 15:22 | |
| whiteknight | yahoo email? what's that? Let me look it up on Alta Vista | 15:27 | |
| NotFound | Austin: pmcnull is basically a replacement for NULL that throw in a controlated way when used instead of segfaulting the VM. | 15:41 | |
|
15:44
lucian joined
|
|||
| szbalint | it could be worse, it could be @aol.com | 15:44 | |
| whiteknight | or @earthlink.com | 15:46 | |
|
15:47
Psyche^ joined
|
|||
| wagle | @me.com | 15:51 | |
| (@narcissist.com)? | 15:52 | ||
| NotFound | What is supposed to do the -E option? Generating pasm? | 15:54 | |
| Austin | You guys are just jealous because I change jobs more often than I change ISPs. | 16:00 | |
| Speaking of jobs, I hope there's some work this year. | 16:01 | ||
| NotFound | Jobs, steve? | ||
| Austin_away | It's one o'clock and time for lunch ... dum de dum de dum | 16:03 | |
| whiteknight | one o'clock? it's 11 here | 16:05 | |
| and you're deinitely not two time-zones away | |||
|
16:06
patspam joined
|
|||
| dukeleto | 'ello | 16:18 | |
| msg whiteknight i will check into those tapir issues. thanks for the notification | 16:20 | ||
| purl | Message for whiteknight stored. | ||
| dalek | kudo/master: 37e2865 | pmichaud++ | docs/ROADMAP: Refactor ROADMAP with recent accomplishments and task estimates. |
16:25 | |
|
16:26
Myhrlin joined
|
|||
| whiteknight | dukeleto: no problem. I was trying to pretty-up the test output for PDA. I ended up making modifications to the built-in harness, but I would much rather use Tapir if possible | 16:27 | |
| dalek | kudo/master: 1926c29 | pmichaud++ | docs/ROADMAP: Update difficulty estimate for lexical classes and roles (jnthn++). |
16:31 | |
| kudo/master: a21f056 | pmichaud++ | docs/ROADMAP: More difficulty estimate updates from jnthn++ . |
16:36 | ||
| kudo/master: b06dfe5 | pmichaud++ | docs/ROADMAP: More ROADMAP tweaks. |
|||
| kudo/master: 1d4a471 | (Solomon Foster)++ | src/core/Array.pm: Simple port of Array.delete from alpha. |
|||
| kudo/master: 2c553a5 | (Solomon Foster)++ | src/core/operators.pm: Change the signature of undefine to accept Mu too -- otherwise you cannot undefine something twice at the moment. |
|||
| purl | dalek: that doesn't look right | ||
| dukeleto | whiteknight: that GetOpt::Obj error is odd. did namespaces change format again? | 16:40 | |
| whiteknight | not that I am aware of | ||
| dukeleto | whiteknight: do you have a link for the changes that you had to make? | ||
| whiteknight | Are you seeing it too? | ||
| dukeleto: it was all just aesthetic stuff | |||
| github.com/Whiteknight/parrot-data-...11c32eedd5 | 16:41 | ||
| dukeleto | whiteknight: oh. i thought you said tapir was broken? don't you have a commitbit on tapir? | ||
| whiteknight | I do have a commit bit, but I don't have a lot of time to fix it and I wanted to make sure you were aware | ||
| dukeleto | whiteknight: gotcha. so did you only make aesthetic changes to the output? or are there bugs ? custom output formats are definitely on my TODO list | 16:42 | |
| Coke | question. we now have .mak files scattered throughout the repo. | 16:43 | |
| dukeleto | whiteknight: also, you are always free to push to a branch in the tapir repo if you want me to take a look at something | ||
| Coke | if I need to make one of these a template that is transformed by the config process (like root.in), then is it preferred to put the .in with the root.in, or keep it in the same directory as the generated .mak? | ||
| (I lean towards the latter, but can be convinced of the former.) | 16:44 | ||
| whiteknight | dukeleto: I only made changes to the test harness for PDS. I didn't touch Tapir | ||
| dukeleto | whiteknight: gotcha. i will look into providing an easy way to customize the output format, or just make the default format not so ugly :) | 16:49 | |
| whiteknight | I think the Tapir output format is decent. I know because I made some changes there earlier :) | 16:50 | |
| The harness in PDS was based on a very very old version of Tapir and was showing it's age | |||
| dalek | kudo/master: c9e1981 | pmichaud++ | docs/ROADMAP: Update s/// roadmap items based on comments from PerlJam++ . |
16:59 | |
| kudo/master: a725daa | pmichaud++ | src/core/ (2 files): Merge branch 'master' of git@github.com:rakudo/rakudo |
|||
|
17:01
gaz joined
17:11
davidfetter joined
17:12
cosimo joined
17:19
parthm joined
17:43
parthm left
|
|||
| dalek | m-dynpmcs: af0834f | darbelo++ | (2 files): Pull in changes from trunk. |
17:52 | |
|
18:07
payload joined
|
|||
| darbelo | Coke: reping. | 18:15 | |
| kthakore | hi folks | 18:17 | |
| cotto_work | hi kthakore | 18:20 | |
|
18:24
Whiteknight joined
18:50
kurahaupo joined
|
|||
| dukeleto | kthakore: how is SDL coming along? | 18:51 | |
|
18:51
kurahaupo joined
|
|||
| kthakore | dukeleto: coming | 18:55 | |
| cotto_work: hi | |||
| purl | privet, kthakore. | ||
| Coke | darbelo: repong. | 18:56 | |
| kthakore | dukeleto: chromatic told me to go ahead with the redesign | ||
| dukeleto: so I am scheduling in a hack schedule for it | |||
| dukeleto: need to learn some pir then I am going to start laying out the ground work | 18:57 | ||
| darbelo | Coke: Dis you see my purl-msgs? rm_cflags looks pretty much done from a non-gcc standpoint. | ||
| kthakore | dukeleto: today went away to squashing bugs in perl5 SDL and a new game for CEbiT | ||
| Coke | did see that, yes. two bits left: 1) get it warnigns clean on gcc. | ||
| kthakore | dukeleto: so that is how it is going | 18:58 | |
| :) | |||
| dukeleto | kthakore: ok, let me know if you need PIR help | ||
| Coke | 2) put back the optimize hackery (to disable optimization on certain files in certain cases.) | ||
| kthakore | dukeleto: will do | ||
| dukeleto: HELP! | |||
| darbelo | Well, warning cleanup can be achieved in trunk. | ||
| dukeleto | does anybody know if anybody has tried making a GTK binding for parrot? | 18:59 | |
|
18:59
payload joined
|
|||
| kthakore | dukeleto: I saw some on the google | 18:59 | |
| dukeleto: I was looking for ways to do callbacks | |||
| dukeleto: gtk popuped up | 19:00 | ||
| dukeleto | kthakore: have you looked at examples/tutorial ? it give nice and simple PIR examples | ||
| kthakore | will do | 19:01 | |
| dukeleto: frankly this week was super busy | |||
| so I just hacked PIR with out reading | |||
| Austin helped me a lot in it | |||
|
19:02
davidfetter joined,
chromatic joined
|
|||
| kthakore | hi chromatic | 19:02 | |
|
19:03
bacek joined
|
|||
| dukeleto | kthakore: learning by fire, nothing wrong with that | 19:03 | |
| kthakore | dukeleto: hey! that is how I learned perl | 19:04 | |
| ;) | |||
| dukeleto: I find it faster to get started | |||
| dalek | kudo/master: 0bcb821 | pmichaud++ | docs/spectest-progress.csv: spectest-progress.csv update: 204 files, 24339 (68.2% of 35695) pass, 0 fail |
19:06 | |
| Coke | darbelo: it can, but i'm trying to make sure when I merge back that it's as good as it was before I started. | ||
| darbelo | Cool. So, what's your plan for the optimize hackery? | 19:07 | |
| Coke | basically the same thing I did for the warnings. | 19:08 | |
| break out the optimize flags into CC_OPT, have a @optimize::path/to/file.c@ setup explicitly for the few files that need it. | |||
| dalek | kudo/master: 64305d7 | (Solomon Foster)++ | src/core/Any-list.pm: Add Any.kv to provide .kv for Positionals and scalars, as well as a proto sub for kv. |
19:12 | |
| kudo/master: 9f11da6 | (Solomon Foster)++ | src/core/Enum.pm: Enum.kv should return a Parcel, not a list. |
|||
|
19:15
preflex joined
19:18
clinton joined
|
|||
| Coke | who owns src/nci_extra_thunks ? | 19:19 | |
|
19:19
AndyA joined
19:20
AndyA joined
|
|||
| Coke | AndyA: how's the back? | 19:21 | |
| dukeleto | Coke: sounds like something plobsing or japhb would know about | ||
| AndyA | Back's fine, thanks :) | ||
| Coke | dukeleto: eh. I'll just silence the warnings. they can fix them later. | 19:25 | |
| uh... why do we have src/extra_nci_thunks.c and src/nci/extra_thunks.c ? | 19:28 | ||
| which are nearly identical? | |||
| japhb | Coke, dunno, that's all plobsing's work | 19:34 | |
| Coke | gcc warning questions: what flags control: | 19:44 | |
| warning: assignment discards qualifiers from pointer target type | |||
| DOH. nevermind. | 19:45 | ||
| no, mind. I though it'd be -cast-qual, but that's not covering it. | 19:46 | ||
| darbelo | Coke: Sprinkle 'const' on your variable declarations. | ||
| Coke | can't. | ||
| this is generated code. | |||
| darbelo | Ouch. | 19:47 | |
| dukeleto sprinkles 'const' on his yogurt | 19:48 | ||
| NotFound | Coke: silent the warnings isn't a solution, most times it'll fail in c++ build. | 19:49 | |
| Coke | NotFound: this is in IMCC's generated code. it would have broken teh build already. | ||
| (like 4 years ago) | 19:50 | ||
| also would like to silence logical '&&' with non-zero constant wi | 19:51 | ||
| ll always evaluate as true | |||
| NotFound | Ah, yes, no problem. Flex and bison developers takes care in that case. | 19:53 | |
| chromatic | They take *some* care. | 19:55 | |
| Coke | chromatic: any idea how I can kill these last warnings? | 19:57 | |
| nopaste | "coke" at 65.91.151.194 pasted "few remaining build warnings." (13 lines) at nopaste.snit.ch/19777 | 19:58 | |
| Coke | I mean, I guess we could just with NO warnings on imcparser.c and imclexer.c | 19:59 | |
| (but that seems like overkill) | |||
| NotFound | The isSOUBROUTINE problem is easy. Just kill the warn unused result qualifier. | ||
| Coke | if you do that in trunk, I can just merge that in. =-) | ||
| ;) | |||
| NotFound | That qualifier is used when you never must ignore the result, which obviously isn't the case. | 20:00 | |
| Coke: ok | |||
| chromatic | Coke, I've tried to remove those. I think it's "File a bug with flex/bison." | ||
| nopaste | "coke" at 65.91.151.194 pasted "all remaining build warnings in rm_cflags branch (gcc)" (13 lines) at nopaste.snit.ch/19778 | ||
| Coke | chromatic: i'm not trying to clean the file, just get gcc to not warn on them. | 20:01 | |
| chromatic | Can you disable specific flags on specific files for a -DNDEBUG build? | 20:02 | |
| Coke | looks like compilers/imcc/symreg.c:1007 doesn't need ANY cast. | ||
| chromatic: assume that's set by some kind of Configure.pl option, yes. | |||
| bacek | morning | ||
| Coke | *assuming | ||
| cotto_work | hi bacek | 20:03 | |
| bacek | cotto_work, aloha. What happened to ops_pct? | ||
| cotto_work | still waiting for tuits, either mine or pmichaud's | 20:04 | |
| it builds but doesn't pass any tests due to pct changesw | |||
| pmichaud | I did look at ops_pct | ||
| cotto_work | any findings? | ||
| pmichaud | my suggestion would be to rewrite it in terms of the new nqp :) | ||
| I don't know of anything that changed in pct that would cause it to stop working, though. | 20:05 | ||
| bacek | pmichaud, good suggestion :) | ||
| pmichaud | cotto_work: did you want me to see if I could get it to compile+run again, or ... ? | ||
| bacek | compilers/opsc/t/01-parse.t .. Method '!cursor_start' not found for invocant of class 'String' | ||
| Coke | chromatic: emit_open() takes a (void *), but is only ever called with a NULL or a (void*) of a const char * const ... why not just make emit_open take the right type? | ||
| chromatic | Coke, reading the code. | 20:06 | |
| bacek | it's in generated code | ||
| Coke | s/chromatic/any c hackers really/ | ||
| cotto_work | I was thinking along the lines of "make it work again", but if you think a rewrite's best we could go with that. | ||
| pmichaud | bacek: the ops_pct is using the old API for parsing | ||
| the invocation semantics for rules in the new system are different from the old | |||
| bacek | pmichaud, any links to new API description? | ||
| cotto_work | I imagine that the usable code could be ported over once there's a skeleton working. | 20:07 | |
| pmichaud | bacek: normally one parses by calling the .parse method on a grammar object, now. | ||
| Coke | reg_sort_f is another function that is defined as taking void but only ever takes a specific type. | ||
| chromatic | Coke, is this on your rm_cflags branch? | ||
| Coke | chromatic: yes, but fixing on trunk is fine, I can always merge up. | ||
| pmichaud | the previous api would invoke a rule sub passing the string to be parsed. | ||
| chromatic | Coke, I don't see the warning on trunk. I'm trying the branch. | 20:08 | |
| pmichaud | I can probably get a skeleton parse working again fairly quickly. | ||
| Coke | I'm just trying to get it warnings clean (preferentially by fixing things being warned on) | ||
| chromatic: trunk is sweeping a lot of imcc crap under the covers. | |||
| (rather than just the generated files, it ignored cast-qual on compilers/imcc/* | 20:09 | ||
| cotto_work | pmichaud, you mean an nqp-based one? | ||
| Coke | nqp-rx? | ||
| purl | nqp-rx is github.com/perl6/nqp-rx | ||
| cotto_work | that's what I meant | ||
| chromatic | Coke, fixed one. | ||
| pmichaud | yes, an nqp-rx based parser. parsers are easy :-) | 20:10 | |
| cotto_work | Cool. Just call it opsc-nqp so that old code can be copied easily from the current opsc if necessary. | 20:11 | |
| pmichaud | will do. can I do the work in trunk, or make a fresh branch, or ... ? | ||
| cotto_work | Trunk would be nice to avoid frequent syncs, but the compiler shouldn't ship until it starts to resemble usefulness. | 20:12 | |
| a new branch would be best | |||
| Coke | (merge in the new svn is acceptable, usually) | 20:13 | |
| pmichaud | I'll make a fresh branch from current trunk, then. | ||
| cotto_work | Thanks. | ||
| I'll look forward to hacking on it. | 20:14 | ||
| bacek++ for getting that started | |||
| pmichaud++ for the branch and skeleton | |||
| bacek | cotto++ # just for fun :) | 20:15 | |
| cotto_work | -Ofun++ | ||
| karma -Ofun | |||
| purl | -ofun has neutral karma | ||
| cotto_work | karma Ofun | ||
| purl | ofun has karma of 3 | ||
| cotto_work | (-Ofun)++ | ||
| karma -Ofun | |||
| purl | -ofun has karma of 1 | ||
| dalek | kudo/master: 2df2463 | (Solomon Foster)++ | t/spectest.data: Turn on S32-array/kv.t. |
20:17 | |
| chromatic | Two warnings fixed, Coke. | 20:21 | |
| NotFound | parrot_nci_thunk_gen keeps failing for me in linux i386 | ||
| Doesn't break the build, but fails. | |||
| cotto_work | pmichaud, what's a good nqp-rx-based compiler that I can steal code and techniques from, ideally less complex than rakudo? | 20:22 | |
| NotFound | cotto_work: nqp-rx itself? | 20:23 | |
| pmichaud | I'm likely to write one in the next day or so | 20:24 | |
| I want to get started on an nqp book | |||
| I was thinking of doing a lolcode compiler again, just because it's fun and demos most of the features | |||
| I could also do abc again | 20:25 | ||
| NotFound | pmichaud: some people are telling that the squak tutorials are outdated. | ||
| pmichaud | yes, they are. | ||
| somehow I've never been able to get enthused about sqaak as a language, though. | 20:26 | ||
| NotFound | That discourages newcomers. | ||
| Coke | so lets replace them with an lolcode tutorial. =-) | ||
| NotFound | +1 | ||
| purl | 1 | ||
| Coke | as long as there is /a/ tutorial, that's fine. | ||
| pmichaud | well, I was hoping for something a little less glib than lolcode, I think | ||
| NotFound | As Coke said | ||
| Coke | ok. tcl. =-) | ||
| pmichaud | but on the plus side, lolcode would be fun (for me), so it's -Ofun | 20:27 | |
| whereas I don't find squaak to be particularly -Ofun. That's not anything against squaak, for some reason it just never grabbed me. | |||
| Coke | i will assume notfound was responding to something other than "tcl' on that. | ||
| darbelo | <@Coke> as long as there is /a/ tutorial, that's fine. | ||
| NotFound | Well, you can try a minimalistic tcl of sorts ;) | 20:28 | |
| pmichaud | tcl is somewhat weird, though. it's not along the same lines as a python, perl, or php | ||
| NotFound | BTW, the ecmascript in languages need some love... or a big axe. | 20:29 | |
|
20:29
bluescreen joined
|
|||
| dalek | rrot: r44473 | NotFound++ | trunk/compilers/imcc (3 files): switch iSUBROUTINE static function declaration from WARN_UNUSED to IGNORABLE_RESULT because is used that way |
20:30 | |
| rrot: r44474 | chromatic++ | branches/rm_cflags/compilers/imcc/symreg.c: [IMCC] Removed a spurious cast from _mk_address() to avoid a compiler warning. |
|||
| rrot: r44475 | chromatic++ | branches/rm_cflags/compilers/imcc (3 files): [IMCC] Changed emit_open() and open emitter signature to take a C string, not a |
|||
| rrot: r44476 | bacek++ | trunk/compilers/imcc (4 files): Constify some bison/flex strings |
|||
| rrot: r44477 | darbelo++ | branches/rm_cflags (2 files): Make codetest happy. |
|||
| PerlJam | pmichaud: tcl is a specialist language like lisp, just with a different speciality. Python, Perl and PHP are almost the exact opposite. (IMHO) | 20:31 | |
| pmichaud | anyway, a new nqp-based language tutorial is very high on my todo list | ||
| cotto_work | pmichaud, I'd love to see that. | ||
| bacek | cotto_work, pmichaud, r44478 :) | 20:32 | |
| PmTcl is very good tutorial :) | |||
| tewk | Is it possible to print the address of a PMC from PIR? | 20:35 | |
| bacek | tewk, get_addr $P0 | 20:36 | |
| cotto_work | assuming that the PMC doesn't override get_addr | 20:37 | |
| bacek | (not 100% true, but...) | ||
| cotto_work | s/addr/pointer/ | ||
| several do | 20:38 | ||
|
20:39
mj41_ joined
|
|||
| dalek | kudo/master: 9a1d71b | (Martin Berends)++ | src/glue/run.pir: [glue/run.pir] when running as a main program, create $*PROGRAM_NAME and @*ARGS |
20:41 | |
|
20:42
kurahaupo1 joined
|
|||
| kthakore | what is the file cloneflags.pasm? | 20:43 | |
| yay! | 20:44 | ||
| one more demo works | |||
| :) | |||
| dalek | rrot: r44478 | bacek++ | branches/ops_pct/compilers/opsc (5 files): Resurrect OPSC |
20:46 | |
|
20:47
AndyA joined
|
|||
| chromatic | Coke, here are more IMCC warnings squashed. | 20:49 | |
| Coke | chromatic++ | ||
| kthakore | what do I need to do print in parrot? | 20:51 | |
| chromatic | First, you must invent the universe. | 20:52 | |
| Wait, that's "How do I make an apple pie in Parrot?" | |||
| kthakore | oh | ||
| ... | |||
| chromatic | There's a print opcode and a say opcode. Do you need something more complex? | ||
| kthakore | chromatic: nope | ||
| just want to print out a stderr saying file not found | 20:53 | ||
| chromatic | Then you need printerr "File not found" | ||
| darbelo | you want the printerr opcode. | ||
| kthakore | ah ok | 20:54 | |
| how do I die? | |||
| just die? | |||
| purl | hmmm... just die is fine | ||
| japhb | kthakore, there's a die opcode too | ||
| cotto_work | what the bot said | ||
| NotFound | chromatic: I want a cry opcode. | ||
| kthakore | wow | ||
| hehe | |||
| NotFound | Like say, but to stderr | ||
| japhb | kthakore, yep, target^Wopcode heavy environment | ||
| kthakore | the opcode die<0> was not found | 20:55 | |
| Tene | kthakore: it expects a string argument | ||
| kthakore | ahhh | ||
| cotto_work | yeah. Whiteknight would like that opcode's days to be numbered, if I read his blog correctly | ||
| Tene | I'm planning on experimenting with removing the die opcode in my branch. | ||
| Isn't "say" not a real opcode anymore, or something? | |||
| some kind of magic fake opcode? | 20:56 | ||
| chromatic | It's a real wooden boy now. | ||
| kthakore | what am I miising? die filename.' not found' | 20:57 | |
| Tene | kthakore: are you hoping that . is a concat there? | ||
| PIR doesn't handle nesting ops like that. | |||
| chromatic | die takes a string, not an expression that evaluates to a string | ||
| Tene | $S0 = concat filename, ' not found' | ||
| die $S0 | |||
| NotFound | kthakore: remember, pir is a glorifier assembler, it doesn't evaluate expressions. | ||
| kthakore | it says contcat expect \\n | 20:58 | |
| ok | |||
| I see | |||
| dalek | kudo/master: 795e94c | (Solomon Foster)++ | t/spectest.data: Turn on S32-array/keys_values.t. |
||
| kudo/master: 72a95fc | (Solomon Foster)++ | src/core/Any-list.pm: Quick lazy implementations of Any.keys and Any.values, plus matching protos. |
|||
| NotFound | Sometimes it can evaluate something, but when only constant values are involved. | ||
| kthakore | Tene: unexpected COMMA, expecting '\\n' | 21:00 | |
| ??? | |||
| dukeleto just starting using ack.vim, booya | |||
| cotto_work | I don't know what that is, but I want it. | ||
| dukeleto | cotto_work: ack integration in vim. it is sweet | ||
| Tene | kthakore: is 'filename' a P register, or S? | 21:01 | |
| Coke | ack.vim is github.com/mileszs/ack.vim | ||
| dukeleto | Coke++ | ||
| kthakore | .param string filenam | ||
| .. | |||
| Coke | google++ | ||
| kthakore | Tene: String? | ||
| Coke | skynet=+ | ||
| Tene | kthakore: yeah | ||
| kthakore: dunno | |||
| kthakore | s ok | 21:02 | |
| Tene: let me pus hit | |||
| dukeleto | Coke: i was ++'ing you because I was too lazy to give a link ;) | ||
| Tene | I was sure I remembered something about 'say' being translated into a pair of 'print' ops, or something... | ||
| was that just imaginary? | 21:03 | ||
| NotFound | Give a little link of your web to me... | ||
| Tene | src/ops/io.ops still has 'op say', so I must have made that up. | ||
| dukeleto | Tene: i think there is a say opcode now, last i remembered, but i could be wrong and/or crazy | ||
| NotFound | There is | ||
| Coke | I made 'say' a real opcode some time ago. | ||
| it used to be imcc magic. | 21:04 | ||
| dalek | rrot: r44479 | chromatic++ | branches/rm_cflags/compilers/imcc (3 files): [IMCC] Added empty do/while loop to definition of YYFREE to silence useless |
||
| Tene | ah | ||
| NotFound | I've been using it with my code generation tests. | ||
| Tene | why was it changed? | ||
| because imcc is evil? | |||
| cotto_work | We've got too much imcc magic. coke++ | ||
| NotFound | So I'm pretty sure. | ||
| Tene | I was considering making die, exit, throw, etc. into imcc magic for a single super-exception-op | 21:05 | |
| Coke | chromatic: That just leaves the && error. danke. | ||
| s/error/warning/ | |||
| Tene | but if we hate that, nevermind | ||
| kthakore | Tene: bit.ly/9DimYF | ||
| chromatic | Let's save that magic for Lorito. | ||
| Coke | rather than have things that look like opcodes, I would just add .hll_macros or imcc .directives | 21:06 | |
| NotFound | Too much imcc magic is evil specially if/when we're going towards replacing imcc. Forces to duplicate the magic in any candidate. | ||
| nopaste | "tene" at 76.27.121.193 pasted "like this, kthakore" (6 lines) at nopaste.snit.ch/19779 | 21:07 | |
| Tene | Ah, I can do that. | ||
| kthakore | Tene: yeah ... doesn't work in my context | 21:08 | |
| oh wait | |||
| concat! | |||
| purl | it has been said that concat is "." | ||
| kthakore | kok | ||
| Tene | kthakore: isn't that what I said the first time? | ||
| 13:57 <@Tene> $S0 = concat filename, ' not found' | |||
| 13:57 <@Tene> die $S0 | |||
| kthakore | yeah I am stupid | 21:09 | |
| NotFound | BTW you can also use sprintf | ||
| kthakore | NotFound: I need a cry opcode now | 21:10 | |
| NotFound: you guys are evil :P | |||
| NotFound | kthakore: I said you that maybe it will be better to prototype in some hll, remember? ;) | 21:11 | |
| kthakore | NotFound: lies! | ||
| all lies! | |||
| purl | they can't ALL be lies!!! | ||
| kthakore | purl: yes they can be ALL lies!!! | ||
| purl | kthakore: sorry... | ||
| NotFound | Isn't great to have a defensive bot? | 21:12 | |
| Tene | NotFound: he's trying to throw an exception, not just print, I think. | ||
| kthakore | Tene: yes | ||
| if_null image, image_error | |||
| the crptic messages of parrot are no fun | |||
| no offense | |||
| NotFound | Tene: yes, but sprintf may be useful to format more elaborate error messages before dying. | ||
| kthakore | NotFound: I only need a simple fix now | 21:13 | |
| Tene | ahh, I just can't read. :) | ||
| NotFound | kthakore: you can wait some months until some of the alternative pir compiler is ready and have better diagnostics ;) | 21:14 | |
| kthakore | NotFound: nah | ||
| NotFound: I am just playing around now | 21:15 | ||
| NotFound: not serios | |||
| yet | |||
|
21:21
joeri joined
|
|||
| dalek | kudo/master: 46bc261 | jonathan++ | t/spectest.data: Turn on S02-magicals/progname.t, thanks to patch from mberends++. |
21:22 | |
| kudo/master: 6373c3b | jonathan++ | t/spectest.data: Another test file we can run again. |
21:28 | ||
| nopaste | "tewk" at 155.98.68.48 pasted "closures, what am I doing wrong?" (45 lines) at nopaste.snit.ch/19780 | 21:29 | |
| Austin_away | does newclosure supercede the capture_lex thing? | 21:33 | |
| tewk | Austin, I looked newclosure clones the sub and calls capture_lex on the clone. | 21:40 | |
| Austin | Okay, then the other obvious thing is that the vars are in the same register. Is it capturing the register, or its contents? | 21:42 | |
| tewk | The register shouldn't matter, I'm boxing the value and .lex only works with pmcs. | 21:44 | |
| pmichaud, ping could you take a quick look at nopaste.snit.ch/19780, am I doing something stupid? | |||
| Austin | Sure. But the capture_lex code points the cloned sub's outer_ctx as the current context, and you're changing that. | 21:45 | |
| pmichaud | tewk: what are you expecting to happen? | 21:46 | |
| Austin | 10, 20 | ||
| pmichaud | at the time you call each closure, pip is set to 20 | ||
| tewk | what austin said | ||
| pmichaud | a closure doesn't snapshot values, it snapshots variables. | ||
| both closures are referring to the same variable. | 21:47 | ||
| in Perl, it'd be like: | |||
| my $pip = 20; | |||
| my $a = sub { print($pip); } | |||
| $pip = 30; | |||
| my $b = sub { print($pip); } | 21:48 | ||
| $a(); $b(); | |||
| chromatic | 30, 30 | ||
| pmichaud | both subs are referring to the same $pip | ||
| Austin | If you leave the kone sub, then re-enter it, do you get a new $pip? | ||
| pmichaud | yes | 21:49 | |
| Austin | *new = different | ||
| pmichaud | actually, you get a new $pip whenever you enter | ||
| but the closures you created will refer to whatever $pip was in place at the time of the newclosure/capture_lex | |||
| Austin | Is that lexical, or dynamic? | 21:50 | |
| NotFound | It captures the contexts chain, like a continuation, isn't it? | 21:51 | |
| Austin | If I take a closure, will that capture find_dynamic_lex stuff? | ||
| pmichaud | find_dynamic_lex is strictly dynamic | ||
| there's no outer scoping involved | |||
| Austin | Right. | ||
| And newclosure is ... ? | |||
| pmichaud | newclosure performs a capture_lex and creates a clone | ||
| newclosure $P0, $P1 is the same as capture_lex $P1; $P0 = clone $P1 | 21:52 | ||
| (or I might have those backwards) | |||
| tewk | Ok I think I got it. | ||
| Austin | So capture_lex is strictly lexical, not dynamic? | 21:53 | |
| pmichaud | it updates the target's outer_ctx to the current context of its outer_sub | 21:54 | |
| I don't know what "strictly lexical" would mean here. | |||
| Austin | Capturing nothing but the :outer lexicals | ||
| pmichaud | all it does is set the target's outer_ctx | ||
| in that sense it "captures", yes. | 21:55 | ||
| Austin | Okay, but what's an outer_ctx? | ||
| pmichaud | an outer_ctx is the outer scope | ||
| i.e., it's the outer context for a sub | |||
| let's see if I can explain it this way.... | 21:56 | ||
| a context is an activation record, it contains the lexicals for a specific invocation of a sub | |||
| each context also has an outer context and a caller context | 21:57 | ||
| the caller context is the context of its immediate caller | |||
| the outer context is the context of the outer scope that was in effect at the time the inner context was created | |||
| Austin | okay | 21:58 | |
| pmichaud | when we invoke a sub, we create a context and set its outer and caller contexts appropriately | ||
| capture_lex tells a sub which outer context to use whenever it's invoked | |||
| (it basically tells the sub to grab the current context of its outer sub) | |||
| if we clone a sub and capture_lex the clone, then invoking that clone will always use the outer context that was in effect at the time the clone was created, even if subsequent invocations end up capture_lex on the original sub | 21:59 | ||
| (because each capture_lex "resets" the sub to a new outer context) | 22:00 | ||
| Austin | But we're only going to see the "different counters running in parallel" type behavior if the outer context changes in between captures, because that's what the captured subs are being pointed at. | 22:01 | |
| pmichaud | I don't follow "different counters running in parallel", but yes, it's if the outer context changes between captures. | 22:02 | |
| Here's an example: | |||
| Austin | $pip = 10, $pip= 20 | ||
| pmichaud | those are the same variable | ||
| here's an example... | |||
| Austin | Because they're part of the outer context which hasn't changed, right? | 22:03 | |
| pmichaud | right | ||
| Austin | (The "different counters" thing is the classic "Look, ma, perl5 closures!" example.) | ||
| pmichaud | sub kone() { my $pip = 10; return sub { $pip } }; | ||
| my $a = kone(); | |||
| my $b = kone(); | |||
| $a and $b end up referring to different $pip's | 22:04 | ||
| because each invocation of kone() creates a different $pip | |||
| Austin | Because kone() exited between captures. | ||
| pmichaud | not because it exited, because it was re-entered. | ||
| (recursion can also create new outer contexts.) | |||
| Austin | Would it have been the same if kone() had yielded? | ||
| pmichaud | *entering* a sub is what creates a new context, and a new lexpad. | 22:05 | |
| Austin | okay. | ||
| nopaste | "tewk" at 155.98.68.48 pasted "binding verses assignment bites me again, I wish we made a clear distinction in parrot" (30 lines) at nopaste.snit.ch/19783 | 22:07 | |
| tewk | pmichaud, thanks, I think this is the second or third time I've gotten confused on this same issue, when I see scheme code its clear, when I see PIR, I don't think clearly. | 22:08 | |
| Tene | tewk: so write a scheme compiler, like I did. ;) | ||
| pmichaud | afk for a bit | ||
| plobsing_ | can someone who knows a bit about PCC take a look at TT 1477? | 22:11 | |
| I would like advice regarding which kind of aggregate would work best | 22:12 | ||
| chromatic | In theory, you could build your own CallSignature (or is it CallContext now?) PMC. | 22:13 | |
| Coke | plobsing_: are you the nci thunks guy? | 22:14 | |
| plobsing_ | Coke: yes. what do you need to know | ||
| Coke | why do we have src/nci/extra_thunks.c and src/extra_nci_thunks.c ? | ||
| plobsing_ | chromatic: it seems like a perfect fit functionality-wise, but I'm wary of how volatile that code seems to be | ||
| Austin | I'm with chromatic. If you're going to build a c data structure, build the one we want. | ||
| plobsing_ | Coke: One is for a dynext library and one is for static inclusion. | ||
| Whiteknight | plobsing_ (Re #1477): Yeah, best bet is probably to build a CallContext PMC | 22:15 | |
| plobsing_ | Coke: my intent is to be able to disable inclusion of all those thunks when you don't need them | ||
| chromatic | One large flaw in the old PCC code was several different paths into PCC from C. | ||
| NotFound | plobsing_: parrot_nci_thunk_gen fails foe me in i386 | ||
| Whiteknight | we might want a Parrot_ext_call_signature() function to make the call with the given signature | ||
| plobsing_ | NotFound: nopaste? | ||
| purl | nopaste is at nopaste.snit.ch/ (ask TonyC for new channels) or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/ or paste.scsys.co.uk (for #catalyst, #dbix-class, #moose and others) or gist.github.com/ or paste or gtfo or tools/dev/nopaste.pl or trac.parrot.org/parrot/browser/tru...nopaste.pl | ||
| chromatic | Whiteknight, I think we already have that function (with a different name). | ||
| Whiteknight | chromatic: I'm not so sure. At least, not in a way that isn't deprecated | 22:16 | |
| almost all our calling functions that are externally-visible were deprecated | |||
| we do have Parrot_pcc_invoke_from_sig_object | |||
| but that's not an API function that I am aware of | |||
| er, not an extending interface API function | |||
| nopaste | "NotFound" at 213.96.228.50 pasted "parrot_nci_thunk_gen fails" (5 lines) at nopaste.snit.ch/19784 | ||
| NotFound | Ugh, ugly formatting | 22:17 | |
| Coke | plobsing_: ok. in the mean time we have two super huge generated files that are nearly identical. that might warrant some docs. =-) | ||
| I am also getting those data_json issues in my build. | 22:18 | ||
| purl | okay, Coke. | ||
| plobsing_ | NotFound: hmmm...that looks like some of the bugs I dealt with on the tt362 branch | ||
| Coke | purl, botdeath. | ||
| purl | Coke: excuse me? | ||
| NotFound | I think that it also happens in windows builds. | ||
| Coke | plobsing_: that generated code is also not warnings-clean, btw. | ||
| (I'm disabling whatever warning that is in the rm_cflags branch for now.) | 22:19 | ||
| plobsing_ | Coke: I can try to clean it if you give me the warnings, but I'm not sure what the priority on that should be | ||
| NotFound | It fails the same way if calling the pbc instead of the fakecutable | ||
| dalek | kudo/master: 2ab6b38 | jonathan++ | src/pmc/perl6multisub.pmc: Fix .clone on multis. |
22:20 | |
| kudo/master: abd99af | jonathan++ | src/core/Any-str.pm: Add back sprintf. |
|||
| plobsing_ | NotFound: yeah, I think the pbc has bad counts because somehow ImageIOSize is giving bogus results. | ||
| kudo/master: d798874 | jonathan++ | t/spectest.data: We now pass S32-str/sprintf.t again. |
|||
| plobsing_ | the bug is elsewhere, but the fault is still mine :-) | 22:23 | |
| NotFound | plobsing_: the problem is that the build doesn't break, so is easy to not see the fail. | 22:25 | |
| Coke | plobsing_: the build should not have any warnings. | 22:37 | |
| plobsing_ | Coke: I am willing to write docs (there's actually a whole stack I should write about freeze/thaw). Please suggest where I should mention this. | ||
| Coke | plobsing_: I don't know. I only noticed they were identical because they both generated the exact same compiler warnings. | ||
| plobsing_ | Coke: nopaste the warnings and I'll try to fix 'em | 22:38 | |
| Coke | plobsing_: will try to later. in branch they're squashed. (you should be seeing them on trunk) | 22:40 | |
|
22:52
AndyA joined
|
|||
| dalek | kudo/master: 740ce02 | (Solomon Foster)++ | t/spectest.data: Turn on S32-array/delete.t. |
23:00 | |
| kudo/master: 6ffe11a | jonathan++ | src/metamodel/RoleToClassApplier.nqp: Just rely on code thingies stringifying sanely; means Parrot subs just work in the role composer too. |
23:12 | ||
| kudo/master: 7ce3765 | jonathan++ | src/glue/dispatch.pir: Fix up .+ and .* with multis. |
|||
| kudo/master: 3be16bb | jonathan++ | t/spectest.data: We now pass S12-methods/calling_sets.t again. |
|||
| kudo/master: cf150fc | pmichaud++ | src/Perl6/Actions.pm: Quoted lists should act like ('1', '2', '3') instead of '1', '2', '3' |
23:18 | ||
| kudo/master: b3fcd6c | pmichaud++ | (5 files): Merge branch 'master' of git@github.com:rakudo/rakudo |
|||
| kudo/master: a215ee5 | pmichaud++ | (3 files): Merge branch 'master' of git@github.com:rakudo/rakudo |
|||
| Coke | plobsing_: you still around? | 23:38 | |
| plobsing_ | yes | 23:39 | |
| Coke | k. generating warnings. | ||
| plobsing_: feather.perl6.nl/~coke/er | 23:43 | ||
| dalek | tracwiki: v4 | cotto++ | LoritoPrimitives | 23:44 | |
| tracwiki: add some of the simpler smalltalk operations | |||
| tracwiki: trac.parrot.org/parrot/wiki/LoritoP...ction=diff | |||
| plobsing_ | Coke: if I understand correctly it wants 'char *(* func_t)()' to be 'char *(* func_t)(void)' right? | 23:49 | |
| dalek | rrot: r44480 | coke++ | branches/rm_cflags/lib/Parrot/Configure/Compiler.pm: Treat .mak files like makefiles for the purpose of genfile |
||
| rrot: r44481 | coke++ | branches/rm_cflags/config/auto/pmc.pm: Don't tack on gcc-specific warning flags here... |
|||
| Whiteknight | plobsing_: the two *should* be equivalent. What compiler are we talking about? | ||
| plobsing_ | Whiteknight: ask Coke | 23:50 | |
| Whiteknight | Coke? | ||
| purl | hmmm... Coke is Will Coleda <mailto:will@coleda.com> or perpetually annoyed. or magical ticket robot or (if Diet), something that turns into formaldehyde in my blood. or getting those data_json issues in Coke's build. | ||
| Whiteknight | well, Coke IS perpetually annoyed... | ||
| I think he was playing around with suncc | 23:51 | ||
| plobsing_ | sun eh? do they make anything that doesn't hate me? | 23:52 | |
| chromatic | Do they make anything anymore? | 23:53 | |
|
23:54
kid51 joined
|
|||
| Whiteknight | ZING! | 23:56 | |
| If Oracle drops support for OpenSolaris, I propose we drop support for it too | |||
| because: screw OpenSolaris | 23:57 | ||
| darbelo | I doubt they will, and even then. There's still (unopened) Solaris to think about. | ||
| Whiteknight | damn fart crap. | 23:58 | |
| darbelo | And, it's Sun CC that you probably hate and not the OS. | ||
| Whiteknight | no , I'm particularly unfond of the OS as well | 23:59 | |
| dalek | kudo/master: 852213b | (Solomon Foster)++ | t/spectest.data: Turn on S32-hash/pairs.t and S32-list/grep.t. |
||