|
Parrot 1.7.0 "African Grey" is out! | Fix issues caused by the pcc_reapply and context_auto_attrs merges | find out what's up with the slice opcode | Latest modified TT's: icanhaz.com/parrotbugs Set by moderator on 1 November 2009. |
|||
| dalek | TT #1104 closed by jkeenan++: Correct erroneous reference in docs to Number PMC | 00:08 | |
|
00:09
mikehh joined
|
|||
| darbelo realizes that performing a 'net install' was a bad idea. | 00:10 | ||
| Debian mirror slooooooooow. | |||
|
00:21
Whiteknight joined
|
|||
| dukeleto | parrot github mirror is synced again! | 00:21 | |
| darbelo | dukeleto: You should document the procedure and add backup commiters there. Give it a higher bus number. | 00:22 | |
| dukeleto | darbelo: it is a script :) the machine it was running on died | 00:23 | |
| darbelo: i have the script in my github util repo | |||
| darbelo: github.com/leto/Util/blob/master/bi...ate_parrot | 00:24 | ||
| darbelo | Ok, as long as the bus doesn't hit both you and github we're safe. | ||
| ;) | |||
| dukeleto | darbelo: don't worry, i back up to my gitweb as well :) | ||
| darbelo | Good enough for me. | 00:25 | |
| kesselhaus | couldn't parrot and all the languages look for parrot-executable in ['.',PATH] + argv[0], and then if it's bindir is found use the bin + '../' as base to look for the rest ofthe rumtime stuff? | 00:41 | |
| chromatic | Wouldn't the +argv[0] open a world of symlink attacks? | 00:44 | |
| NotFound | kesselhaus: we don't expect that most users have lots of parrot instalations. | 00:48 | |
| kesselhaus | the thing is, i can't execute parrot installed on C:\\parrot-1.7.0, when i am in an directory on drive d: | 00:49 | |
| NotFound | kesselhaus: Do you have the parrot bin dir in your PATH ? | 00:50 | |
| kesselhaus | D:\\temp>C:\\parrot-1.7.0\\bin\\perl6 --help | 00:51 | |
| == SORRY! == | |||
| Unable to find Perl 6 dynops and dynpmcs library. | |||
| If you want to run Rakudo outside of the build directory, please make install. | |||
| D:\\temp>parrot_nqp --help | 00:52 | ||
| "load_bytecode" couldn't find file 'PGE.pbc' | |||
| current instr.: 'parrot;NQP;Compiler;__onload' pc -1 ((unknown file):-1) | |||
| called from Sub 'parrot;NQP;Compiler;main' pc 44 (nqp.pir:19) | |||
| so neither way works... it just doesn't find the base dir C:\\parrot-1.7.0 .. how would i set that? | 00:53 | ||
| C:\\Users\\kesselhaus>perl6 --help | 00:54 | ||
| perl6 ... Usage: perl6 [switches] [--] [programfile] [arguments] | |||
| see? being on drive C: --> no problem, being on drive D: --> major problem | 00:55 | ||
| that's why i suggested, that parrot and the languages should somehow bring the base dir into the environment, which can be somehow picked up by all parrot tools, e.g. check envvar PARROT_HOME, if not exist, try find parrot in PATH, if exist, set PARROT_HOME internally to one dir up, if not in path, use argv[0], maybe there is a whole path... | 00:57 | ||
| japhb | pmichaud, what am I doing wrong here: $ nqp -e 'pir::load_bytecode("P6Regex.pbc"); my $p6regex := Q:PIR { %r = compreg "Regex::P6Regex" }; my $regex := $p6regex.compile("a*"); my $cursor := Regex::Cursor.new; my $match := $cursor.parse("dbcaaaa", $regex); say($match.dump_str("mob", " ", ""));' | 00:59 | |
| mob: < @ 0> 0 | |||
| If I change the target string to just "aaaa", it matches. | |||
| NotFound | kesselhaus: unfortunately we have very few developpers working habitually on windows, so that type of things are poorly tested. | 01:00 | |
| japhb | pmichaud, it's like there's an implicit '^' at the start of the regex | ||
| kid51 | mikehh ping | 01:02 | |
| japhb | pmichaud, sorry, the above should have had a regex of "a+" ... too many different attempts, sigh | 01:09 | |
|
01:10
hercynium joined
|
|||
| japhb | pmichaud, AH! Nevermind, I found the proper incantation. | 01:13 | |
.oO( One monkey, hitting keys randomly ....) |
|||
| dukeleto | thank $deity for beer and fridays | 01:22 | |
| Tene | japhb: am I correct in remembering that plumage can install rakudo? | ||
| dukeleto | Tene: yes | ||
| japhb | Tene: yes, in fact that's how I always install rakudo. :-) | 01:27 | |
| pmichaud | back again | 01:38 | |
| Coke yawns | |||
| japhb | pmichaud, halp! I can't figure out how to get the next match from a cursor. (I can get the first match fine, but I can't figure out the incantation to get the *next* one in the same string.) | 01:46 | |
| in NQP-rx, of course | |||
| pmichaud | well, you normally don't have a cursor, you have a match. | ||
| there might not be a way to get "next match" yet. | 01:47 | ||
| japhb | Oh. ow. | ||
| pmichaud | put it on the list, I can add it soon | ||
| (as in the next 24 hrs) | |||
| japhb | adding ... | ||
| dukeleto | pmichaud: ping! | ||
| pmichaud | dukeleto: pong | ||
| japhb now has a permanent browser tab open on the Plumage Requests wiki page | |||
| dukeleto | pmichaud: have you had a chance to make something like tools/dev/mk_language_shell.pl for nqp-rx ? | 01:48 | |
| japhb | Also, I've taken to using the NQP-rx test suite to figure out what is implemented and what isn't. I didn't see tests for attribute declaration in there .... | ||
| dukeleto | pmichaud: also, i was having trouble compiling nqp-rx recently | ||
| pmichaud | dukeleto: you had to have had some old sources lying around somewhere | 01:49 | |
| dukeleto | pmichaud: do you have a recommended commit for plumage/HLL authors? | ||
| pmichaud | dukeleto: master is working for me, latest commit. If it's not working for you, let me know. | ||
| (and I checked it from a fresh clone) | |||
| japhb: yes, attribute declaration is implemented and (I think) tested. checking | |||
| dukeleto | pmichaud: i have the examples you gave me, is that what you are asking about? | 01:50 | |
| japhb | dukeleto, I've been reinstalling nqp-rx regularly using Plumage, which implicitly pulls from master, so I ride the blead. | ||
| dukeleto | pmichaud: i am going to try the latest nqp-rx master now | ||
| pmichaud | japhb: you're correct, no tests for attributes yet | ||
| but attributes are implemented | |||
| dukeleto | japhb: which os/platform and parrot configure flags? | ||
| japhb | Ha! I'm not as blind as I appear! | ||
| pmichaud | class XYZ { has $!abc; } # should work | 01:51 | |
| japhb | Debian/x86, --optimize --jitcapable=0 --prefix=/usr/local/parrot | ||
| pmichaud, excellent, thank you | |||
| dukeleto | japhb: are you using an installed parrot with nqp-rx or using --gen-parrot ? | ||
| japhb: or do you hate -gen-parrot ;) ? | 01:52 | ||
| japhb | I never use --gen-parrot any more. It is the anti-Plumage. It must die. | ||
| :-) | |||
| dukeleto | japhb: is it supported? are people going to use it? | ||
| pmichaud | fwiw, last I chatted with allison we're likely to include nqp as part of the parrot core | ||
| japhb | I consider --gen-parrot FAIL to be a *feature*. ;-) | ||
| dukeleto | we need to either kill gen-parrot, or make it work | ||
| japhb | pmichaud, I saw that. I'm VERY happy to see sanity prevailed. | ||
| I vote kill. We don't need it. | |||
| OK, maybe I'm being a bit harsh | 01:53 | ||
| pmichaud | plumage probably doesn't need --gen-parrot. But other environments need it. | ||
| dukeleto | pmichaud: 'make test' gives me: $ make test | ||
| prove -r --exec ./nqp t/nqp | |||
| Unknown option: exec | |||
| pmichaud | it depends on what you expect the users' installation model to be | ||
| japhb | I can see the use for people to keep their playground in one place. But I'd like to just incorporate that little bit of magic into Plumage. | 01:54 | |
| pmichaud | dukeleto: I'm guessing you have an older version of 'prove' | ||
| dukeleto | pmichaud: prove v2.64, using Test::Harness v3.16 and Perl v5.10.0 | ||
| pmichaud | Any profiling gurus around? | ||
| pmichaud.com/sandbox/snapshot4.png | |||
| dukeleto | pmichaud: what is the min version required? shouldn't that be checked at configure-time ? | ||
| japhb | All kidding aside, I'd really like to see all other installation methods for Parrot projects go away, and Plumage be considered canonical. Only then can we get people eating dog food enough to really work out all the problems. | ||
| pmichaud | japhb: that doesn't always work, though. Will plumage be able to follow Parrot head constantly? | 01:55 | |
| japhb | The only reason I haven't marched down the field with that flag yet is that I spent a while being sick, and couldn't respond to people needing help with Plumage. | ||
| pmichaud | if Plumage only targets monthly releases, that absolutely won't work for developers | ||
| japhb | pmichaud, I'm not sure I understand your question. | ||
| For now, Plumage is making use of the newest stuff nqp-rx is adding, so I have to ride HEAD on both. | 01:56 | ||
| pmichaud | you're suggesting that, say, Rakudo go through plumage in order to obtain Parrot, yes? | ||
| japhb | pmichaud, no. I'm saying people should install Parrot, then Plumage, then use that to build and install Rakudo. Only thing missing there is | 01:57 | |
| pmichaud | japhb: that's not the sequence I want people to use | ||
| how will people know what version of Parrot to install? | |||
| japhb | the 'this' pronoun to build and install the user's working directory, rather than in the temp space. | ||
| Tene | why don't we just make a tarball of all released versions of Parrot? | 01:58 | |
| and install them side-by-side? | |||
| pmichaud | rakudo development doesn't target released parrots | ||
| japhb | I've designed (but been too sick to implement yet -- soon though) the ability to say 'plumage upgrade all' and have it pull down the projects, find the minimal parrot version that works, rebuild and reinstall parrot, and then reinstall all projects on top of it. | 01:59 | |
| pmichaud | the longest that rakudo has ever been able to use a released parrot is 5 days | ||
| Tene | Yes, and that's the only thing wrong with my idea. ;) | ||
| pmichaud | japhb: what if the minimal version of parrot is too new for the current version of parrot? | ||
| japhb | pmichaud, I know that. :-) | ||
| pmichaud | sorry, for the current version of rakudo? | ||
| japhb | pmichaud, you're asking if for example partcl needs a newer version of parrot than Rakudo can handle? | 02:00 | |
| pmichaud | japhb: yes | ||
| but beyond that | |||
| purl | rumour has it beyond that is just groovy :) | ||
| japhb | pmichaud, that is a valid point. let me think for a minute on it. | ||
| pmichaud | I don't want to tell people that in order to develop for rakudo they have to first go grab parrot, install it, grab plumage, install it, and then start with rakudo | ||
| I'd much prefer to say "grab rakudo, run Configure.pl with the --gen-parrot (or --gen-plumage) option, and go." | 02:01 | ||
| dukeleto | pmichaud++ # i like --gen-plumage | ||
| pmichaud | now then, for an end-user installation, plumage is probably the way to go | ||
| japhb | Plumage will be snapshotted into Parrot in the same way as nqp-rx is. | ||
| Tene | for an end-user installation, distro packages are even nicer. | ||
| japhb | So only "install Parrot, plumage install rakudo" | ||
| pmichaud | personally I think that "plumage install rakudo" should be targeting released versions of Rakudo, not head | 02:02 | |
| japhb | Tene: yes, and several people have demanded that Plumage be able to help distro packagers make binary packages. So it will, eventually. :-) | ||
| pmichaud | japhb: anyway, if the tools get sophisticated enough then eventually we might recommend the plumage approach. but for rakudo development, --gen-parrot is currently far better. | 02:03 | |
| japhb | pmichaud, I've been thinking about that, actually. I want people to be able to (in fact, I think according to the design of Perl 6, we *have to*) be able to install multiple versions of any Parrot project. And I'm running up against the problem that parrot's library handling structure really doesn't like to do that, especially for HLLs. | 02:04 | |
| pmichaud | japhb: I agree, it's a big problem. :) | ||
| japhb | pmichaud, I totally understand that the short term reality is not representative of the long term goal. :-) | ||
| pmichaud | anyway | ||
| japhb | In all that, Plumage Requests was updated with one new item. :-) | 02:06 | |
| pmichaud | okay | ||
| japhb | And thanks for making attribute declarations work, I hopefully can start doing an OO refactor of Plumage soon. | ||
|
02:06
joeri left
|
|||
| pmichaud | they were already working earlier in the week :) | 02:06 | |
| actually, last week, come to think of it | |||
| but we definitely need a test | |||
| japhb stashes his attempts at switching to P6Regex into a branch, and tries starting the OO work instead. | 02:17 | ||
| dalek | TT #1170 closed by jkeenan++: /docs/book/pir/ch04_variables.pod: Iterator does not work as documented | 02:18 | |
|
02:19
eiro joined
|
|||
| japhb | pmichaud, does nqp-rx have file-scoped class declarations? | 02:30 | |
| pmichaud | depends on what you mean by "file-scoped" | ||
| japhb | class Foo; as opposed to class Foo { } | 02:35 | |
| pmichaud | I don't know if it has that yet | ||
| checking | |||
| looks like "yes" | |||
| japhb | Yay | 02:36 | |
| pmichaud++ # yet again | |||
| pmichaud | afk for a bit | ||
| japhb keeps writing 'had $!foo;' instead of 'has $!foo;' | 02:37 | ||
| My classes are prone to losing themselves. | |||
|
02:40
eternaleye joined
02:53
elmex joined
|
|||
| japhb | pmichaud, Am I correct in assuming that only private attributes exist in NQP ('has $!foo;' only)? | 03:14 | |
| er nqp-rx | |||
|
03:21
kthakore joined
03:35
janus joined
|
|||
| pmichaud | correct, only private attributes | 03:42 | |
| I'm not sure how to handle public ones, since what makes an attribute public in p6 is that there's an accessor method generated | |||
| We could generate accessor methods for readonly public attributes, though | 03:47 | ||
| that's probably worthwhile | |||
| I have no good idea how to make "has $.foo is rw" work though | |||
| (because there's no way to lvalue an attribute) | |||
| japhb | nod | 03:48 | |
| pmichaud | but having $.foo automatically generate a 'foo' method is probably worthwhile | ||
| eternaleye | pmichaud: my $ret := $!var; return( $ret ); ? | ||
| pmichaud | eternaleye: that gets you read only access, yes | ||
| eternaleye | pmichaud: I would have thought the := would bind as 'is ref', allowing writes? | 03:49 | |
| pmichaud | yes, but what is a "write" ? | ||
| eternaleye | read/write | ||
| pmichaud | right | ||
| eternaleye | left! | ||
| pmichaud | so, suppose you have $ret. How do you write to it such that it changes $!var ? | ||
| japhb | On a separate note ... according to the P6protoobject docs, it's possible to override the proto object's .new() by just declaring a method new in the class itself. But what do I need to put in that method to instantiate the object? | ||
| pmichaud | (nqp code, please) | ||
| japhb: I need to come up with a good way to do that, yes. | |||
| japhb: I'm thinking it will be worthwhile to have a CREATE method to do that | 03:50 | ||
| or... something | |||
| eternaleye | Well, they're bound to the same container, so $obj.var = "foo"; since that ends up as '$ret := $!var; $ret = "foo"' | ||
| pmichaud | eternaleye: nqp doesn't have assignment, or containers | ||
| (because parrot doesn't have them) | 03:51 | ||
| eternaleye | Ah, thinko on my part | ||
| japhb | pmichaud, I'd be willing to make the first half of my new method be inline PIR at this point. I just don't know what PIR to use ... because the only example I have is the proto object new method, and that's written from the perspective of a completely different point in the meta space. | 03:52 | |
| eternaleye | In that case, the only way I can think of would be to introduce a layer of abstraction. Have all 'names' be links to a 'supername', and do something like $ret.ROOTOBJ := "foo" | 03:53 | |
| pmichaud | eternaleye: the point is that there's no real concept of a "supername" in Parrot either | ||
| eternaleye | and since $ret and $!var both point to the smae 'supername', both now point to "foo" | ||
| pmichaud | NQP simply layers a Perl 6 syntax on Parrot semantics | ||
| if Parrot doesn't have it, then NQP either generates code to do it, or does without | |||
| and NQP isn't fond of creating its own custom data types | 03:54 | ||
| eternaleye | Hm | ||
| pmichaud | In rakudo we're able to solve the problem by creating container types | 03:55 | |
| but that gets kind of ugly. In particular, arrays often end up being arrays of container PMCs, which then have to point to the value PMC | |||
| so we end up with two PMCs for every element | 03:56 | ||
| eternaleye | pmichaud: In that case, make a slight syntax difference: $obj.var => returns $!var; $obj.var($val) => sets $!var to $val and returns $val | ||
| pmichaud | (we get around this by using references) | ||
| well, in nqp private attributes will probably not be truly private | 03:57 | ||
| eternaleye | There are already several syntax differences (say(...) vs say ...), so this wouldn't be a big deal | ||
| pmichaud | there's a bit difference there | ||
| say(...) is valid p6 syntax | |||
| eternaleye | Mmm, true | ||
| pmichaud | nqp uses a subset of p6 syntax. It tries not to introduce things that fall outside of p6 syntax. | 03:58 | |
|
03:58
plobsing joined
|
|||
| pmichaud | the reason I'm (as yet) able to get say ... to work is that there's not a good way to distinguish bareword type names from bareword listops | 03:58 | |
| we might introduce the notion that barewords beginning with uppercase are types, while barewords beginning with lowercase are listops.... but I'm not sure that works out well in the long run. | 03:59 | ||
| eternaleye | pmichaud: Going slightly off topic (back to your comment about 2 PMCs per object), would there be any way to default to not having them, and then 'promote' (similar to autoboxing) when a request that requires them is made? | 04:00 | |
| pmichaud | eternaleye: we pretty much do this in rakudo already | ||
| eternaleye | Okay | ||
| pmichaud | but sometimes it can't be helped | ||
| for the basic value types (Int, Str, Num) we're able to avoid the extra PMC reference | |||
| but for everything else we basically end up with a reference PMC | 04:01 | ||
| eternaleye | pmichaud++ # teaching me neat stuff | ||
| japhb raises his hand and looks anxious to be called on | 04:02 | ||
| pmichaud | japhb: ...yes? ;-) | 04:03 | |
| japhb | I could really use even some example inline PIR of how to create an object from within an NQP class's new() method. I want my new() to be able to take an argument, and I can't do that with the default protoobject new | 04:04 | |
| pmichaud | oh, sorry, thought I answered that | 04:05 | |
| I'd suggest | |||
| pir::new(<Some Class>) # create an instance of Some::Class | |||
| or you can do it with | |||
| Q:PIR{ %r = new ['Some';'Class'] } | |||
| japhb | Wait, that's all? I don't have to do anything to hook it up to the metamodel? | 04:06 | |
| pmichaud | p6object takes care of that automatically | ||
| the hooks into the p6object metamodel are based on an object's (parrot) class | |||
| japhb | Oh, cool. I was thinking I had to do a whole bunch of magic in new(), and I was at a loss as to what to do. | ||
| pmichaud | as long as the class itself was created by or registered with P6object (and all NQP-created classes are), then P6object gets the rest | 04:07 | |
| japhb | Oh, what a relief. | ||
| purl | D-E-A-T-H | ||
| japhb goes to actually try it | |||
| pmichaud | here's the default .new method, fwiw | ||
| .sub 'new' :method .local pmc parrotclass $P0 = self.'HOW'() ## for speed we access the 'parrotclass' attribute directly here parrotclass = getattribute $P0, 'parrotclass' $P1 = new parrotclass .return ($P1) | 04:08 | ||
| .end | |||
| pasto | |||
| oops | |||
| (nopasting) | |||
| nopaste | "pmichaud" at 72.181.176.220 pasted "P6object's default .new method" (8 lines) at nopaste.snit.ch/18594 | ||
| pmichaud | it just gets the parrotclass of the invocant and then creates a new object of the same type | 04:09 | |
| japhb | Can 'self' be assigned to? | 04:10 | |
| pmichaud | ...assigned? | ||
| japhb | bound, Mr. Pedantic Boy | ||
| ;-) | |||
| pmichaud | sure, it's just a lexical | ||
| of course, inside of .new it starts out as the invocant | |||
| but you can rebind it to a different object | |||
| I'm not sure that's valid Perl 6, but... :) | 04:11 | ||
| while we try hard to always be valid Perl 6, we do sometimes come up short. | |||
| japhb | OK, so in NQP, I can do: method new($name) { my $how := self.HOW; my $class = pir::getattribute($how, 'parrotclass'); self := $class.new; $!name = $name; } | 04:12 | |
| er, last = should be := of course | |||
| pmichaud | I don't think you can do self := $class.new though | ||
| japhb | er, and the first as well | ||
| pmichaud | I don't think parrot classes have a 'new' method | ||
| japhb | bah | ||
| pmichaud | you could do pir::new($class) though | 04:13 | |
| japhb | self := pir::new($class) then? | ||
| pmichaud | yeah | ||
| japhb | Ok, lemme try that | ||
| pmichaud | I'd even shorten it to | ||
| pir::getattribute(self.HOW, 'parrotclass') | |||
| or for real fun | |||
| pir:new( pir::getattribute( self.HOW, 'parrotclass' ) ) | |||
| which avoids binding the lexicals | 04:14 | ||
| ...but I think it's probably worthwhile for me to just add a BUILD method to p6object | |||
| then it can just be self = self.BUILD; $!name := $name | 04:15 | ||
| or something like that | |||
| nopaste | "japhb" at 76.191.190.8 pasted "Hmmm, new() fails" (7 lines) at nopaste.snit.ch/18595 | ||
| pmichaud | huh | 04:16 | |
| getattribute_PPs then | |||
| er | |||
| getattribute__PPs | |||
| japhb | Do I have to do the type specifier thing on the pir::getattribute? | ||
| ah, right | |||
| pmichaud | shouldn't have to, but apparently do | ||
| checking | |||
| looks like yes, needs the signature | |||
| I'll add it to PAST so that a plain getattribute works in the future | 04:17 | ||
| (after I get through figuring out why POST -> PIR generation is now taking an incredibly huge amount of time.... it didn't used to) | |||
| ....did the pcc refactor significantly slow down pccmethod calls? | |||
| as in, by at least an order of magnitude or more? | 04:18 | ||
| japhb | Hmmm, I got the same error with pir::new now, so I tried pir::new__Ps and pir::new__PP, and neither one worked (both get Null PMC access in find_method() ) | ||
| pmichaud | it would be __PP | ||
| japhb | yeah, I tried both just in case my logic was wrong. :-) | 04:19 | |
| afk for a sec | |||
| pmichaud | oh, I'm missing a colon in the version I gave above | ||
| pir::new instead of pir:new | |||
| maybe that's it. | |||
| japhb | nope, I had it right in my code | 04:20 | |
| pmichaud | hmmm | ||
| I'll have to look at it a bit later | |||
| I suggest the Q:PIR for now | |||
| (I _know_ that works :-) | |||
| japhb really wishes the 'Null PMC access in find_method()' error actually said which method it was trying to find .... | 04:21 | ||
| pmichaud | yeah, me too | ||
| that might be fixable | |||
| although I suspect if it was fixable, we would've already fixed it | 04:22 | ||
| japhb | nod | ||
| dukeleto | 'ello | ||
| dukeleto attempts to start backlogging | |||
| japhb | o/ | 04:23 | |
| pmichaud | oh, I think it can be fixed | 04:24 | |
| pcc refactor landed after the oct release, yes? | 04:26 | ||
| japhb | yes | 04:27 | |
| pmichaud | okay | 04:28 | |
| pmichaud benchmarks the october release | |||
| japhb | Is there a way to put a newline into Q:PIR{} strings? \\n doesn't seem to work. Without it, oneliners are kinda painful? | 04:29 | |
| pmichaud | ...one liners? | ||
| (short answer, no) | |||
| japhb | sigh | ||
| japhb is a big fan of -e | |||
| OK, time to put this in a probe script | 04:30 | ||
| pmichaud | if Q:PIR{...} honored \\n as a newline, then Q:PIR{ print "foo\\nbar" }; would dtwt | ||
| japhb | Not if it also handled \\\\ | ||
| which I guess with shell quoting would become \\\\\\\\, sigh | 04:31 | ||
| plobsing | what about QQ:PIR? | ||
| pmichaud | no, it would want to be qq:PIR { ... } | ||
| but then $'s would get interpolated | |||
| so really what you want is qb:PIR { ... } | |||
| or q:b:PIR { ... } | 04:32 | ||
| plobsing | do you plan on adding such a construct? | 04:34 | |
| pmichaud | hadn't planned on it, but could be talked into it :) | 04:35 | |
| hmmm. my slowdown doesn't appear to be due to PCCMETHOD | 04:37 | ||
| dukeleto | pmichaud: do you know the min version of prove that nqp-rx's test suite requires? | 04:45 | |
| pmichaud | dukeleto: no | 04:52 | |
| dukeleto | pmichaud: it is > -test] Error 1 | 04:56 | |
| (kadath)(~/git/nqp-rx master )$ prove --version | |||
| prove oops | |||
| sorry about the paste bomb | 04:57 | ||
| i meant to say "it is > v2.64" | |||
| nopaste | "japhb" at 76.191.190.8 pasted "Works! But how to simplify ...?" (24 lines) at nopaste.snit.ch/18596 | ||
| pmichaud | dukeleto: looks like you need something after 2.64 though | 04:58 | |
| dukeleto | japhb: that looks pretty tricked out | ||
| pmichaud | dukeleto: prove 2.64 appears to have come out in Oct 2006. The --exec option was added in August 2007. | 04:59 | |
| japhb | pmichaud, can you see a way to improve that method new()? And why do I need to restate '$!name;' at the end of method name()? It appears as if the binding statement cannot work with implict return | ||
| dukeleto, :-) | |||
| dukeleto | pmichaud: wow, i am behind the times | 05:00 | |
| pmichaud | japhb: I'm not sure why the need for the extra $!name | 05:04 | |
| I suppose that binding might not be returning the lvalue side | |||
| (but it should...) | |||
| japhb | Is that likely to be a difficult fix? | 05:05 | |
| pmichaud | only if it ends up requiring a deprecation | ||
| otherwise, no | |||
| pmichaud checks | |||
| yeah, looks like setattribute isn't returning a value | 05:06 | ||
| looking further... | |||
| hmmmmm | 05:07 | ||
| given setattribute $P0, 'attr', $P1 | 05:08 | ||
| what should be the "value" of that bind? | |||
| $P0, or $P1 ? | 05:09 | ||
| I can argue it both ways. | |||
| eternaleye | pmichaud: What's the argument ordering for a simple binding? I'd say they should be consistent. | 05:10 | |
| pmichaud | in this case, it's | ||
| japhb | Well, the high level versions would be 'return($!foo := $bar)' and '$!foo := $bar; return(self)', so I argue $P1 | ||
| pmichaud | yeah, in this case it's pretty clear it should be $P1 | ||
| we might have a deprecation issue here, then. | 05:11 | ||
| japhb | :-( | 05:12 | |
| pmichaud | for some reason setattribute in PAST::Compiler is set to return $P0 | ||
| may have been to make it easy to set multiple attributes on an object | |||
| setprop does the same | |||
| japhb | chaining | ||
| purl | i heard chaining was Catalyst::DispatchType::Chained or www.catalystframework.org/calendar/2006/10 or the bizomb | ||
| pmichaud | yeah | 05:13 | |
| but that's a :pirop, not bind, so.... | |||
| checking | |||
| japhb | Yeah, I can see how that might have been useful for some HLLs. | ||
| Come to think of it, the JavaScript library jQuery is really, REALLY into chaining. If it even vaguely makes sense to do so, it's chainable. Even when it's a bit of a stretch. | 05:18 | ||
| In any case, NQP != jQuery. :-) | |||
| pmichaud | japhb: aha, looks like a pct bug | ||
| japhb: which means it can be fixed :) | |||
| japhb | yay! | 05:19 | |
| pmichaud | I'll do that now. | ||
| japhb | Excellent, thank you. | ||
| pmichaud | testing now | 05:20 | |
| japhb | pmichaud, any luck? | 05:39 | |
| ENOPMICHAUD | 05:43 | ||
| Ah well, I think I'll go eat some ice cream then. :-) | |||
| pmichaud | r42317 | 05:45 | |
| dukeleto | where would a good place be in the parrot repo to put notes about the RTEMS port? | 05:46 | |
| the wiki is pissing me off | |||
| dalek | rrot: r42317 | pmichaud++ | trunk/compilers/pct/src/PAST/Compiler.pir: [pct]: binding an attribute node should return the bound value (japhb++) |
05:47 | |
| japhb | OK, while my parrot rebuilds ... any thoughts on improving that method new() in my test program? | 05:54 | |
| pmichaud | looked fine to me | ||
| japhb | Just felt a little over-heavy ... ah well. | 05:58 | |
| r42137 confirmed working for me, thanks! | 06:05 | ||
| pmichaud++ | |||
|
07:00
workbench joined
|
|||
| dalek | rrot-plumage: 0e62a77 | japhb++ | : [PROBES] Add class.nqp, testing accessor and custom new() creation |
07:08 | |
| japhb | pmichaud, CREATE added to Classes section of wiki.github.com/perl6/nqp-rx/plumage-requests | 07:11 | |
| nopaste | "NotFound" at 213.96.228.50 pasted "Do you want to find a method?" (7 lines) at nopaste.snit.ch/18597 | ||
| NotFound | Is this that you were talking about? | ||
| Just five lines of code :) | 07:12 | ||
| japhb | NotFound, who are you talking to? | 07:13 | |
| NotFound | [05:21] * japhb really wishes the 'Null PMC access in find_method()' error actually said which method it was trying to find .... | ||
| japhb | Oh, yes, actually! | 07:14 | |
| Thank you! | |||
| is that committed? | |||
| NotFound | I'm testing it | ||
| Pass tests, going to commit. | 07:15 | ||
| japhb | NotFound++ | 07:16 | |
| NotFound | r42318 | 07:18 | |
| dalek | rrot: r42318 | NotFound++ | trunk/src/pmc/null.pmc: show the method name in 'Null PMC access in find_method' messages |
07:19 | |
|
08:16
iblechbot joined
08:34
fperrad joined
09:00
bacek joined
|
|||
| bacek | o hai | 09:00 | |
| seen pmichaud | 09:01 | ||
| purl | pmichaud was last seen on #parrot 3 hours, 6 minutes and 41 seconds ago, saying: looked fine to me | ||
| NotFound | Can someone give me review of this page? code.google.com/p/winxed/wiki/HowToInstall | 09:03 | |
|
09:20
chromatic joined
|
|||
| dalek | rrot: r42319 | bacek++ | branches/pmc_headers_move: Branch for moving generated pmc_foo.h headers in include/pmc |
09:23 | |
| rrot: r42320 | bacek++ | branches/pmc_headers_move (55 files): Generate pmc_foo.h files inside include/pmc instead of src. pmc_foo.h files for core and dynpmc. 2. Change all #include "../src/pmc/pmc_foo.h" to just #include "pmc/pmc_foo.h" 3. Change dependencies in root.in and dynpmc.in This bring build-tree closer to installed parrot and allows to use consistent #include "pmc/pmc_foo.h" across codebase. |
09:27 | ||
| rrot: r42321 | bacek++ | branches/pmc_headers_move/include/pmc (2 files): Add dummy file inside include/pmc to keep directory from being removed. |
|||
| lscript: b92879a | fperrad++ | src/pmc/wmls (4 files): modernize API |
|||
| lscript: 85f1ad5 | fperrad++ | (8 files): convert Configure to PIR (from Perl) |
|||
| purl | I don't know how to convert Configure to PIR (from Perl). | ||
| bacek | msg pmichaud LexPad.get_iter is (partially) implemented. DynLaxPad is little bit more tricky. | 10:01 | |
| purl | Message for pmichaud stored. | ||
| dalek | rrot: r42322 | bacek++ | trunk (2 files): [pmc] Implement LexPad.get_iter |
||
| lscript: 2000d2c | fperrad++ | (41 files): reorg tree |
10:03 | ||
| lscript: db3475e | fperrad++ | (2 files): chmod +x |
10:09 | ||
| lscript: 43328b9 | fperrad++ | (6 files): update PMC tests, .const 'WmlsType' K = 'from string' |
11:20 | ||
| lscript: f8c4443 | fperrad++ | Makefile.in: remove PROVE |
|||
| lscript: 4d8d4d8 | fperrad++ | dynext/pmc/wmls (4 files): [codingstd] fix line length |
|||
| lscript: 3b24ba6 | fperrad++ | doc/ (2 files): update doc : various paths |
|||
| lscript: db914b9 | fperrad++ | Makefile.in: clean up |
|||
| purl | clean up is a breeze | ||
|
11:32
joeri joined
12:09
payload joined
|
|||
| dalek | TT #1217 created by bubaflub++: [PATCH] t/dynpmc/foo.t converted to PIR | 12:44 | |
| TT #1218 created by bubaflub++: [PATCH] t/dynpmc/foo2.t converted to PIR | 12:48 | ||
|
12:49
Whiteknight joined
12:54
mokurai left
13:23
kj joined
|
|||
| kj | Coke: ping | 13:39 | |
| dalek | TT #1219 created by kjs++: Parrot's default namespaces should be fully typed | 13:51 | |
| a: 00bc9aa | fperrad++ | (13 files): Since r42279, VTABLE instantiate_str is gone. .const 'LuaType' K = 'init_from_string' |
13:52 | ||
| Whiteknight | purl msg desertm4x there are a few parrot-linear-algebra test failures after your last commit. I'll try to do some debugging to see what I can find. Most of your changes look very nice | 13:54 | |
| purl | Message for desertm4x stored. | ||
| dalek | rrot: r42323 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
13:57 | |
| rrot: r42324 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
14:00 | ||
| TT #1220 created by kjs++: Stop depending upon typed namespaces in internal_ns_keyed() | 14:01 | ||
| TT #1221 created by kjs++: Match HLL of enclosing namespace in internal_ns_keyed()? | |||
| rrot: r42325 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
14:04 | ||
| TT #1222 created by kjs++: Use the untyped interface in Parrot_find_global_n() | |||
| rrot: r42326 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
14:07 | ||
| rrot: r42327 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
|||
| rrot: r42328 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr. |
14:11 | ||
| TT #1223 created by kjs++: Parrot_find_name_op() should walk up the scopes | |||
| TT #1224 created by kjs++: Fix temporary hack for cache invalidation; should be a namespace function; ... | 14:15 | ||
| TT #1225 created by kjs++: Method cache invalidation should be a namespace function | 14:18 | ||
| rrot: r42329 | kjs++ | trunk/src/global.c: [src] update reference from RT ticket to TT ticket nr + add a ticket reference for a TEMPORARY HACK note. |
14:21 | ||
| rrot: r42330 | kjs++ | trunk/t/compilers/json/to_parrot.t: [t] update RT ticket no. to TT ticket no. |
14:25 | ||
| TT #1226 created by kjs++: Increase code coverage of json | |||
| Whiteknight | purl msg desertm4x nevermind, I figured it out. Small typo in the INDEX_XY_ROWMAJOR macro. Resolved now. Everything is working normally | 14:41 | |
| purl | Message for desertm4x stored. | ||
| dalek | rrot-linear-algebra: ddc652b | Whiteknight++ | src/pmc/pla_matrix_types.h: fix a small typo that was breaking some tests |
14:46 | |
| rrot: r42331 | mikehh++ | trunk/src/global.c: fix codetest failure - trailing space |
14:47 | ||
| a: 171cc98 | fperrad++ | (43 files): reorg tree (non core libraries) |
14:58 | ||
| a: a28bbc6 | fperrad++ | (30 files): reorg tree (PMC) |
|||
|
15:05
payload joined
15:06
nbrown joined
15:17
nbrown joined
15:21
masak joined
15:24
Psyche^ joined
|
|||
| dalek | a: 53bff84 | fperrad++ | (50 files): reorg tree |
15:49 | |
|
15:54
Hunger joined
|
|||
| dalek | a: 597612d | fperrad++ | lua/library/Makefile.in: fix after reorg |
16:00 | |
| lscript: 98c7001 | fperrad++ | dynext/ (2 files): fix after reorg |
16:04 | ||
| lscript: 029ea8f | fperrad++ | dynext/ (2 files): fix after reorg |
|||
| a: 0eae52a | fperrad++ | dynext/pmc/Makefile.in: fix after reorg |
16:17 | ||
| a: 7bab379 | fperrad++ | doc/ (2 files): update doc |
|||
|
16:22
theory joined
|
|||
| dalek | a: 4ed6f1d | fperrad++ | Configure.pir: chmod +x |
16:23 | |
| a: 3245743 | fperrad++ | dynext/pmc/Makefile.in: fix after reorg |
16:29 | ||
| a: baef520 | fperrad++ | (2 files): fix after reorg |
|||
|
16:44
davidfetter joined
|
|||
| dalek | a: 4c22900 | fperrad++ | (2 files): fix after reorg |
16:57 | |
|
16:58
iblechbot joined
17:08
DrForr_ joined
17:32
Zak joined
17:34
whoppix joined
18:03
kid51 joined
|
|||
| Coke | ~._ | 18:57 | |
| diakopter | \\__/ | 18:58 | |
| dalek | rrot: r42332 | coke++ | trunk (7 files): Fix codingstd outdent test, courtesy plobsing++ (but passed the old test.) Resolves issue #1137. |
18:59 | |
| TT #1137 closed by coke++: [PATCH] fix codingstd/c_indent.t wrt switch/case labels | 19:01 | ||
|
19:03
eternaleye joined
|
|||
| Coke | yay, RT down to 61. | 19:04 | |
| (and I didn't even do those 8.) | |||
| diakopter | is the goal to move all the RT ones to trac? | 19:06 | |
|
19:12
mikehh joined
|
|||
| dalek | TT #759 closed by coke++: Reconsider one-test-file-per-PMC policy | 19:14 | |
| rrot: r42333 | coke++ | trunk (2 files): Remove test file that checks for test files. Resolves Issue #759 |
19:16 | ||
| Coke | msg kid51 fyi, hll_interop is not appropriate for /every/ HLL-related ticket, only for those where two HLL's are trying to talk to each other. | 19:20 | |
| purl | Message for kid51 stored. | ||
| dalek | TT #376 closed by coke++: support policy refers to x.5 releases | 19:21 | |
|
19:22
bacek joined
|
|||
| Coke | is trac this slow for anyone else, or is it just me? | 19:23 | |
| NotFound | Coke: an hour or so ago it worked well. | 19:25 | |
| Coke | If I want the trac wiki page for languages, is there somethign I can enter in the seach to force it? | 19:28 | |
| NotFound | google ;) | 19:30 | |
| dalek | TT #252 closed by coke++: xlst out of date | 19:31 | |
| NotFound | Coke: uh... There is a trac wiki page for languages? I only know the one in www.parrot.org | 19:33 | |
| dalek | TT #915 closed by coke++: email2trac test | 19:34 | |
| Coke | I have no idea why that effort was duplicated on parrot.org | 19:36 | |
| the one on trac was the "real" one, I thought. | |||
| msg mikehh hey, when you untodo a test that has a TT number... you might want to resolve the ticket. =-) | 19:38 | ||
| purl | Message for mikehh stored. | ||
| NotFound | Coke: The one that that feeds dalek? | ||
| dalek | TT #1027 closed by coke++: PIR-only segfault | 19:41 | |
| NotFound | Coke: the search works reasonably fast for me now. | 19:43 | |
| dalek | TT #897 closed by coke++: Review test coverage and add more tests or deprecate unused functionality. | 19:44 | |
| Coke | pmichaud: ping | 19:48 | |
| Can we reject #590 (presuming these are only going to be in nqp-rx, not PGE) | |||
| pmichaud | pong | ||
| yes | 19:49 | ||
| or we can mark it as being done in nqp-rx instead | |||
| dalek | TT #590 closed by coke++: PGE proto regex | 19:51 | |
| tracwiki: v106 | NotFound++ | Languages | 19:52 | ||
| tracwiki: trac.parrot.org/parrot/wiki/Langua...ction=diff | |||
|
19:58
payload joined
|
|||
| Coke | I wonder which page dalek is using. | 19:58 | |
| NotFound | pmichaud: Have you seen my patch in TT #1078 ? | 19:59 | |
| pmichaud | NotFound: no, hadn't seen it -- looking | 20:01 | |
| the original source is incorrect -- it forgets to pop the handler after catching the exception | |||
| i.e., I don't think a patch is needed, because the original test case is flawed | 20:02 | ||
| NotFound | pmichaud: dying with exahusted stack for a pitfall like that is very wrong, IMO. | 20:03 | |
| And from time to time people create new tickets like that, wich doesn't help anything. | 20:04 | ||
| pmichaud | NotFound: I'd be fine with (re)using the recursion limit as a limit for exception handler triggering | ||
| since they're effectively the same thing. does your patch do that? | |||
| Coke | I'm kind of surprised the recursion limit doesn't already trigger that. | ||
| NotFound | pmichaud: no, just tested with an arbitrary value. | ||
| pmichaud | I'd suggest recursion limit. | ||
| and throw the same sort of exception as a recursion limit | |||
| NotFound | pmichaud: but my main question is that I'm doing the right thing to avoid interfere with control exceptions. | 20:05 | |
| Coke | I don't think that limiting the # of times a handler can fire is the right approach. | ||
| (and if we do, the limit should be 1.) | |||
| NotFound | Coke: segfaulting sure is not. | ||
| pmichaud | I agree, limiting the number of times a handler can fire is wrong. | 20:06 | |
| NotFound | Coke: I agreed, but last time I asked the answer was a big NO. | ||
| Coke | right. | ||
| NotFound | Is wrong, but segfaulting is hardly better. | 20:07 | |
| pmichaud | putting in an incorrect behavior is equally bad, though. | ||
| worse, because people might come to depend on it | 20:08 | ||
| (I admit, not likely in this case) | |||
| NotFound | What is the correct behavior, then? | ||
| pmichaud | use the same logic that gets used for recursion limits, I suspect | ||
| NotFound | The logic is setting a limit and throw. That's what I'm doing.Ƨ | 20:09 | |
| pmichaud | right, but the question is where the limit gets counted | ||
| it shouldn't be counted in the exception handler itself | |||
| NotFound | Ah, that is a secondary question for me. | ||
| Coke | I imagine we'd get this for free if we used sub-based handlers. | ||
| pmichaud | because it's very likely that one handler might be asked to handle thousands or tens of thousands of exceptions that aren't recursive | ||
| Coke: I'm in general disagreement that sub-based handlers solve any of the problems they're intended to solve (inferior runloop, e.g.), although I admit it might help with this case | 20:10 | ||
| NotFound | pmichaud: given that we don't have a way to know when the handler has finished, I can't imagine other place. | 20:12 | |
| pmichaud | I'd prefer to segfault on incorrect code than to have incorrect behavior on correct code, though. | 20:13 | |
| segfaults are bad, yes, but fixing them shouldn't cause correct code to fail | 20:14 | ||
| NotFound | pmichaud: I'm tired of losing time tracking that type of bugs. | ||
| pmichaud | then we should fix the issues with exception handlers at some point | 20:15 | |
| I'll add my comments to the ticket, and then others can decide the best approach. | |||
| Added. | 20:18 | ||
| dalek | TT #1227 created by bubaflub++: [PATCH] config/gen/crypto/digest_t.in for generated tests in t/dynpmc | ||
| NotFound | I suppose that best approach will be the same as in previous cases: do nothing. | 20:20 | |
| pmichaud | s/best/best currently available/ | ||
| I fully agree with you that it should not segfault. I do not have a superior answer at the moment, though. | |||
| NotFound | I wonder why we check array out of bounds access. After all, is an error in the user code, same as this. | 20:21 | |
| </rant> ;) | |||
| pmichaud | because adding that check doesn't impose an incorrect semantic on correct code. | ||
| adding a limit to the number of times a handler may be triggered would be like adding a limit to the number of times a subroutine can be invoked | 20:23 | ||
|
20:23
chromatic joined
|
|||
| mikehh | Coke: which ticket? | 20:27 | |
| purl | which ticket is, like, this now | ||
| diakopter | purl, forget which ticket | 20:28 | |
| purl | diakopter: I forgot which ticket | ||
| diakopter | purl, forget yourself | ||
| purl | diakopter, I didn't have anything matching yourself | ||
|
20:31
Zak joined
20:34
mokurai joined
|
|||
| dalek | rrot: r42334 | pmichaud++ | trunk/compilers/pct/src/POST/Compiler.pir: [pct/post]: Remove spurious tailcall of void result in void context. |
20:39 | |
| pmichaud | Coke: since you'll be away for the week, I'll plan that we'll do partcl stuff soon after you get back | 20:40 | |
| hopefully I'll have a lot of the other rakudo and nqp stuff out of the way by then | 20:41 | ||
|
20:41
eternaleye joined
21:10
mokurai joined
|
|||
| mikehh | I am getting a failure with t/op/comp.t with g++ and --optimize on Ubuntu 9.10 i386 - it does not fail with gcc and without --optimize | 21:11 | |
| nopaste | "mikehh" at 81.149.189.7 pasted "failure with t/op/comp.t with g++ and --optimize on Ubuntu 9.10 i396" (31 lines) at nopaste.snit.ch/18601 | 21:17 | |
| kid51 | mikehh: Have you tested with that platform/compiler/options combination before? | 21:19 | |
| mikehh | bah i386 | ||
| kid51 | i.e., is this a new failure ... or something newly exposed by different, say, compiler? | ||
| mikehh | kid51: we have only recently got g++ 4.4.1 to work on Ubuntu 9.10 (NotFound++) and it the first time I tested (yesterday I think) on Ubuntu 9.10 i386 | 21:22 | |
| I Haven't got any other i386 installations at the moment - I updated my 9.04 i386 and it was ok last time I tested there | 21:23 | ||
| kid51 | Sounds like it's mostly the new version of g++ | ||
| mikehh | possibly - it does pass without optimize and passes on amd64 | ||
| NotFound | mikehh: going to try now on my laptop | 21:24 | |
| kid51 | But it sounds more like our code being exposed to a new environment, rather than a long-standing (known) defect in our code. | ||
| i.e., it doesn't sound like it's due to a recent commit. | 21:25 | ||
| ... so bisecting probably wouldn't say very much. | |||
| NotFound | Thanks to new platform, otherwise I'm unable to convince some people to fix 'features' }:) | 21:27 | |
| kid51 | mikehh: Sorry I wasted your time on that test for TT #1194 | 21:28 | |
| mikehh | kid51: np | 21:29 | |
| kid51 | Would you be able to give that another try on your amd64? | ||
| NotFound | mikehh: fails also for me | 21:30 | |
| mikehh | the last test I did on Ubuntu 9.04 i386 was at r42132 - that passed (with g++ and --optimize) | ||
| NotFound | Don't worry too much, I had an old gcc where 0.0 > 0.0 failed sometimes X-) | 21:31 | |
| mikehh | I can't go back to that revision with g++ 4.4.1 because it won't build | 21:32 | |
| kid51 tries compiling for first time with mikehh's combination of command-line options | 21:33 | ||
| mikehh | kid51: I am headed back to amd64 shortly - I just want to look at that test in more detail | 21:36 | |
| kid51 | Thanks! | 21:38 | |
| Util | Does Parrot provide any way to undo a `loadlib` op in a running PIR program? | 21:43 | |
| NotFound | The numbers looks equal in the Float vtable function using an fprintf with lot of precission | 21:44 | |
|
21:51
NotFound left,
NotFound joined
|
|||
| NotFound | FLOATVAL n1= SELF.get_number(); | 21:53 | |
| FLOATVAL n2= VTABLE_get_number(INTERP, value); | |||
| (n1 == n2) and (SELF.get_number() == VTABLE_get_number(INTERP, value)) give different values | |||
| dalek | rrot: r42335 | jkeenan++ | trunk/src/pmc/integer.pmc: Add 'TODO' notation. |
21:55 | |
| Coke buys disney tickets for 9 people for 3 days and nearly faints. | 21:57 | ||
| Util: I don't think so. | 21:58 | ||
| dalek | TT #1228 created by jkeenan++: src/pmc/integer.c: Implement Complex and BigInt RHS values for the pow() ... | ||
| Coke | it's basically a dynamic load, yes? (is there a way to do that unload from C?) | ||
| kid51++: thanks for doing ticket cleanup. | |||
| also kj++ and fperrad++ | |||
| dalek | rrot: r42336 | jkeenan++ | trunk/src/pmc/integer.pmc: Change RT # to TT #. |
22:01 | |
| purl | dalek: that doesn't look right | ||
| TT #1229 created by jkeenan++: src/pmc/fixedpmcarray.pmc: get_repr() should use freeze/thaw | 22:08 | ||
| rrot: r42337 | jkeenan++ | trunk/src/pmc/fixedpmcarray.pmc: Change RT # to TT #. |
22:12 | ||
| purl | dalek: that doesn't look right | ||
| NotFound | SELF.get_number() - VTABLE_get_number(INTERP, value) gives 4.445229e-17 | 22:17 | |
| No wonder that == gives false | 22:18 | ||
| dalek | TT #1230 created by jkeenan++: src/pmc/eval.pmc: Walk the fixups, locate globals and nullify the Sub PMC | ||
| rrot: r42338 | jkeenan++ | trunk/src/pmc/eval.pmc: Change RT # to TT #. |
|||
| purl | dalek: that doesn't look right | ||
| Util | Coke: Ah, I see. I had not thought it through to the dyld/dlopen calls. | 22:20 | |
| So, anything that tests different ways of loading a lib (like t/dynpmc/foo.t does) will need a fresh Parrot instance for each `loadlib`. | |||
| bubaflub++ did nice work in TT #1217 converting foo.t from Perl to PIR. However, it is now full of false negatives, since the first successful `loadlib` masks any later failures. | |||
| NotFound | I don't know if we must fix this by storing the values in a FLOATVAL variable before comparing, or fix the test because is wrong to compare for exact equality two floating values calculated in different ways. | ||
| Coke | it's always wrong to test floats for equality. no? | 22:21 | |
| NotFound | Coke: in the vast majority of cases, yes. | 22:22 | |
| I'm not sure if the optimizer is doing the right thing is this case, though. | 22:24 | ||
| mikehh | the problem being is that it passes the test in most cases but not with optimized g++ on i386 | ||
| dalek | TT #1231 created by jkeenan++: src/pmc/hash.pmc: Use freeze in get_repr() (for hashes) | 22:25 | |
| NotFound | mikehh: if the test is wrong, I don't care that it passes. | ||
| dalek | rrot: r42339 | jkeenan++ | trunk/src/pmc/hash.pmc: Change RT # to TT #. |
||
| purl | dalek: that doesn't look right | ||
| NotFound | I don't want tests that fails when optimizing if they are not testing the absolutely right thing. | 22:26 | |
| mikehh | NotFound: oh I agree, but just curious why it fails in that case | ||
| NotFound | mikehh: I'm not sure, nut maybe just because the compiler is doing a better optimization. | ||
| I think that the standard allows to optimize any temporary result until is assigned to a variable, and for floats this mean he can use the higher precision available. | 22:28 | ||
| mikehh | fp values should never be tested for equality | ||
| Tene | should we make that an error, then? | 22:29 | |
| NotFound | mikehh: not always. For example, in a compiler deciding if he must use the absolute zero format for printing. | ||
| Coke | "almost never" | ||
| Tene | can the cases where it's appropriate be completely enumerated, so we can fail the rest of the time? | 22:30 | |
| NotFound | Did we have a mathematician in the room? ;) | 22:31 | |
| mikehh | if (abs(value1 - value2) < epsilon) | ||
| Tene | mikehh: that's not equality. | 22:32 | |
| NotFound | But perfect equality is not what that test must be doing. | 22:33 | |
| mikehh | it's a valid test for approximate values - i.e. floating point | ||
| Tene | Right. | ||
| NotFound | In fact, I'm not sure if having that opcode makes sense. | 22:34 | |
| Tene | So, could it ever make sense to change the is_equal vtable in float.pmc to throw an exception? | ||
| NotFound | Compare for exact equality floating point values stored or obtained in different ways, which is what that opcode do, is wrong. | 22:35 | |
|
22:36
Essobi joined
|
|||
| NotFound | Tene: is not the is_equal vtable, is the is_equal_num | 22:36 | |
| But I think the is_equal multi has the same problem when comparing PMC of different types. | 22:39 | ||
| dalek | TT #1232 created by jkeenan++: t/src/warnings.t: Test fails when Parrot built with g++ and --optimize | 22:41 | |
| NotFound | The problem is that in an op with an integer result we can't test the result is 'almost true' X-) | ||
| Mmmmm... I've found the simplest fix: add a lot of zeros to the values used in the test | 22:49 | ||
| set P0, -1.200000000000000 ... set P1, "-1.200000000000000" | |||
| dalek | TT #1233 created by jkeenan++: t/pmc/exporter.t: Refactor namespace getting code once make_namespace() ... | 22:54 | |
| rrot: r42340 | jkeenan++ | trunk/t/pmc/exporter.t: Change RT # to TT #. |
22:55 | ||
| purl | dalek: that doesn't look right | ||
| NotFound | TT #1176 migth be the cause of that failure: | 22:56 | |
| "I have redefined POW to be pow() unconditionally in r42217, and put a note referencing this TT" | |||
| Yes, defining POW as powl the test pass. | 22:57 | ||
| At least we know why it don't failed before :) | 22:58 | ||
|
23:05
Zak joined
|
|||
| mikehh | NotFound: you only need to add zeros to the string not the number | 23:14 | |
| and minimum is "-1.2000000000" | |||
| any fewer fails | 23:15 | ||
| zeros that is | |||
| NotFound | mikehh: yes, but maybe that way is worsen things, it may fool the precision in the Parrot_str_to_num calculations. | 23:16 | |
| Why we just doesn't use scanf? | 23:17 | ||
| sscanf | |||
| dalek | tracwiki: v107 | NotFound++ | Languages | 23:40 | |
| tracwiki: Restore alphabetic order | |||
| tracwiki: trac.parrot.org/parrot/wiki/Langua...ction=diff | |||
| mikehh | NotFound: I'll create a ticket for this in a bit - I want to check on some issues | 23:46 | |
| mikehh needs a break - bbl | |||
| dalek | rrot: r42341 | jkeenan++ | trunk (77 files): Merge convert_OSNAME into trunk. In config steps after auto::arch, we know 'osname', so use '->data->get('osname')' instead of '->data->get_p5('OSNAME')'. Cf.: trac.parrot.org/parrot/ticket/1194. |
23:51 | |
| NotFound | mikehh: I've put a comment in TT #1176 | 23:52 | |
| dalek | rrot: r42342 | jkeenan++ | branches/convert_OSNAME: Branch has been merged into trunk and is no longer needed at HEAD. |
23:54 | |
| purl | i already had it that way, dalek. | ||