% barney has joined #parrot % masak has joined #parrot % verve has left verve!a5847f73@67.207.141.120 % leo has left leo!lt@feather.perl6.nl % leo has joined #parrot r29839 | bernhard++ | trunk: : [codingstd] Fix POD. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29839 % bacek has left bacek!~bacek@mcas-151.usr.optusnet.com.au % donaldh has joined #parrot morning all afternoon, jonathan Rakudo day! :-) YaY Just gotta re-bandage my leg, then I'll get down to work. :-) rakudo approaches the 2000 passing test mark morning jonathan, keep fighting there. and with working IO we might hit the 2000 today if Auzon++ manages to get the regex tests running ;) oooh, working IO jonathan++ # rakudo day! (hitting 2000)++ % Ademan has joined #parrot % kj has joined #parrot Hmm. Fixing IO iterator is trickier than it first appears. :-| jonathan: it would already help to have $handle.eof working moritz: That can be done. It's not that I can't make for =$fh { ... } work, it's that I can't do it without breaking one other spec-test. % barney has left barney!~bernhard@p549A3839.dip0.t-ipconnect.de % ruoso has left ruoso!~ruoso@201009046064.user.veloxzone.com.br moritz: my $fh = open "README"; while !$fh.eof { say =$fh }; $fh.close(); # now works If the changes for that haven't broken any tests (shouldn't have), I'll ci. jonathan++ moritz: I'm thinking if you have two file handles $fh1 and $fh2, you should be able to write things like for =$fh1, =$fh2 -> $x { say $x } To iterate through both of them. Does that fit with your understanding? yes =$fh2 returns a lazy list in list context so you're just iterating over lists Yeah We don't really have lazy lists at the moment, though. the iterator cludge is just a premature optimization in the absence of lazy lists The other thing is that, at the moment, for =$fh { } doesn't actually put the iterator prefix:= returns into list context, but instead calls 'list'(...) to make the list. However, we can't change that to actually call .list to do list context Because then for [1,2,3] { } does the wrong thing. Essentially, we need our own iterator, I think, that iterates any iterators contained immediately in the list we're iterating over. But in some senses, I guess that'd make for a big chunk of lazy lists. :-) why not just let =$fh return a list of all items, and do the optimizations once we have lazy lists? The problem is that =$fh is context sensitive and we have no contexts yet If I make it return a list of all items, then I break =$fh We do. r29840 | jonathan++ | trunk: : [rakudo] Implement .eof on file handles, and make IOIterator do something closer to the write thing in item/string contexts. do we? can a sub determine its context? how? diff: http://www.parrotvm.org/svn/parrot/revision?rev=29840 OK, we don't have *this* piece, but we do have .item, .list and .hash. And $(...), @(...)... but as long as a sub can't determine its context it feels a bit like fake ;-) % Whiteknight has joined #parrot % TiMBuS has left TiMBuS!~Hurf@123-243-167-27.static.tpgi.com.au % tuxdna has left tuxdna!~tuxdna@122.163.239.166 % lurker has joined #parrot % Ademan has left Ademan!~dan@h-67-101-42-129.snfccasy.dynamic.covad.net "moritz" at 89.13.199.231 pasted "IO.eof - wtf?" (19 lines) at http://nopaste.snit.ch/13684 jonathan: is that "works as designed"? moritz: Works as Parrot is designed, perhaps... ;-) I'd have expected it to not have the final line either. r29841 | jonathan++ | trunk: : [rakudo] Make self work in nested lexical scopes in a method. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29841 % ruoso has joined #parrot % lurker has left lurker!~chatzilla@clq70.neoplus.adsl.tpnet.pl % timbunce has joined #parrot % timbunce has left timbunce!~timbo@86-41-197-131.b-ras1.lmk.limerick.eircom.net OK, time for me to have some lunch, and then I have Slovak class, then I'm back for the rest of the day/evening hacking on Rakudo. % pancake has joined #parrot io i have generated a callgrind graph of parrot running a perl6 hello world this can maybe help to find the bottlenecks http://news.nopcode.org/callgrind.out.7299.gz gunzip + kcachegrind pancake: ERROR 403: Forbidden. ^R works now % donaldh_ has joined #parrot % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com % donaldh_ is now known as donaldh % rurban_ has joined #parrot % rurban has left rurban!~chatzilla@212-183-48-157.adsl.highway.telekom.at % rurban_ is now known as rurban r29842 | coke++ | trunk: : [tcl] revert patch, use 'String' as our object's base class once more to avoid problems. Leave a note. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29842 r29843 | coke++ | trunk: : [tcl] use our list PMC preferentially, even internally. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29843 % iblechbot has left iblechbot!~iblechbot@94.17-dial.augustakom.net % gryphon__ has joined #parrot r29844 | coke++ | trunk: : [tcl] Convert internal usage of String, Integer to tcl PMC variants. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29844 % paco has joined #parrot * jonathan returns pmichaud: Awake/around yet? % iblechbot has joined #parrot % uniejo has left uniejo!~uniejo@193.88.64.250 are heredocs in STD.pm? % AndyAway has left AndyAway!~AndyL@host3130.follett.com masak: yes, think so ok token ws { ... | <.vws> <.heredoc> } the need for them in rakudo isn't pressing (since multiline strings work fine) but would be a nice addition so heredocs are parsed as whitespace? I think it's best to wait for the Big Grammar Refactor % gmansi has left gmansi!~gmansi@190.55.38.59 % Andy has joined #parrot % iblechbot has left iblechbot!~iblechbot@ppp-62-216-207-49.dynamic.mnet-online.de % gmansi has joined #parrot moritz: so, tell me more about this Big Grammar Refactor? :) does it hurt? % gmansi has left gmansi!~gmansi@190.55.38.59 yes ;-) masak: the following is 80% speculation... masak: TimToady refactored STD.pm to handle DSLs by copying the grammar, and modifying the copy masak: and since rakudo's grammar follows STD, it might do the same thing aha masak: also, STD.pm is based on proto regexes, rakudo on simple alternation pmichaud already announce that he *will* change that I've heard the term "proto regexes" before, but I don't know what they are % gmansi has joined #parrot it's a bunch of regexes with the same name, but parameterized by a symbol and they match as an alternation so multi foo:sym { }; multi foo:sym { }; makes '' match a|b with the small difference that you can add alternatives simply by subclassing, and adding more methods /tokens / whatever r29845 | jonathan++ | trunk: : [rakudo] Implement get_bool vtable method in Object, such that it tests definedness. This means things like 'ok Foo.new' used in some spectests can work. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29845 s/multi/multi token/ actually and it means that you can modify a symbol without altering the parse tree, for example you can say multi:sym { 'c' } # it looks the same in the parse tree, because foo:sym matched, but it actually matched c and not a pong pmichaud: hi! :-) pmichaud: I'm ready to discuss/work on refactoring variable declaration or type registry, if you're free to discuss that first. 76/142 0.535211267605634 pmichaud: Also, got a couple of smaller questions/issues. wow. parallel branch runs configure tests in half the time particle: On Win32? ayep Nice! schweet. i'm formulating a mail for the list smaller questions/issues might be better first OK First, just trying to get some of the delegation tests (for handles) to pass. Already handles is implemented, so we can cover some of the cases, but running into a couple of other things the test exercises. The first one is that if you do "ok !try{ something that dies }", if what's in try dies then you get a null PMC exception. Because the block never returns a value. I'm not seeing an especially neat way to deal with this. % cjfields has joined #parrot try needs refactoring anyway I'm kinda waiting for the new exceptions stuff before going too far with that. But we might be able to fix it earlier. but actually { something that dies } should probably return a Failure object Well, it never gets chance, is the real issue. -or- % jhorwitz has joined #parrot try should detect that it didn't get something back from the block, and generate a failure object "donaldh" at 144.254.89.228 pasted "patch for t/doc/pod.t on Cygwin" (23 lines) at http://nopaste.snit.ch/13689 Does anyone want to give ^ a try on another platform? pmichaud: I'm trying the second of those...and failing to find the correct incantation. :-Z The test was complaining on Cygwin because -e pbc_to_exe returns true when pbc_to_exe.exe exists jonathan: where does the null PMC arise, exactly? The argument to prefix:! ? Yes Ah donaldh: trying on linux/amd64 well, if an exception occurs, then we know we get into the catch portion of the 'try' PAST node Infinoid++ * moritz tries on linux/i368 (32 bit) try should then wrap the exception into a Failure object and return it. but the byte lenght shouldn'T make a difference Yes, but assigning something back to the register that the result of the block woulda been assigned to, is the tricky bit. ....? dot dot dot *yawn* dot you lost me there Infinoid: I have simplified the test to use -T instead of -e & -B & an additional check for $file . $PConfig{exe} $P23 = "_block16"() We have no way, that I can see, to refer to $P23 inside the catch PIR. donaldh: doesn't seem to break the test here oh, I think you're just saying that PAST's 'try' block needs better return value handling passes without the patch, passes with the patch. which is entirely possible. That would probably be the easiest solution. Infinoid: I'd expect that ;-) donaldh: second test fails with 568 files without DESCRIPTION - is that intended? Always did I think. I wasn't dealing with try blocks as rvalues when I wrote the original 'try' code, I don't think. Aha, OK. I'm not really up for posting a patch to 568 files ;-) but the entire fail/try/exception system needs a bit of a rework uhm, why not? ;-) s/posting/pasting/ if you can't paste, post :) Would you rather we just leave this until the re-work post-pdd25cx? I might be able to get that later today OK. it's not a hard fix donaldh: ah, it's marked as TODO, I haven't seen that phew. OK, sounds good. I also tried to get file I/O in better shape. When various refactors were done, for =$fh { ... } got broken. Notably, because for now calls list(...) Which is probably right, but doesn't play out too well, since we get a list with one element, which is an iterator. how far off are lazy lists? I tried switching it to call .list, so we get a value there in list context. Then the IO iterator could just return itself in .list. no, .list would be wrong. But then for [1,2,3] { } fails. Yes. I found that out. :-) short-term fix would be to update flatten to recognize IOIterator, the way it currently does Ranges (which are also lazy) Would that not mean we flatten the entire iterator? (Works for reading from files, not so well from $*IN) (flatten the entire iterator = read from it...) (read everything from it) checking. no. Currently the flatten code calls .list on Range objects I don't think it actually flattens the Range object. (The .list method on Range might do that, but the flatten code doesn't do it) so, if flatten encountered an IOIterator, then it would call .list on it The .list method on Range does. we just need freakin' lazy lists for it, and we need the pdd25cx branch for that (does flatten it) So we'd boil down to the same thing - it'd work for files (though we'd end up reading the lot before we started looping), but would hang for $*IN. OTOH, it doesn't work at all at the moment... PLEASE TEST THE PDD25CX BRANCH. submit results to the ticket allison posted. ..."hang for $*IN" ? pmichaud: for =$*IN { .say } also test hlls with that branch. it'll help it get merged faster. oh, I see. okay. r29846 | infinoid++ | trunk: : [t] Apply patch from donaldh++ to fix a test on cygwin. : (-e pbc_to_exe is true for pbc_to_exe.exe on cygwin, which confuses the test) diff: http://www.parrotvm.org/svn/parrot/revision?rev=29846 If you are calling .list, this will try and get all values from the iterator...but it never gets to eof. The other thing that occured to me, is we could just implement our own iterator, which I guess we'll need to do anyway as part of the lazy lists work, that can iterate over an iterators it immediately finds occuring in the list. donaldh++ s/an/any/ jonathan: I think that's just a lazy list. :-) What's on the pdd25cx branch? pmichaud: Yeah, we'd have done a good part of lazy lists by then, I guess. ;-) does lazy lists require pdd25cx ? Though of course, not for indexing into them. I didn't know of any lazy list dependency on pdd25cx. me either. gather/take may require pdd25cx donaldh: reworked dependency branch yes, gather/take requires pdd25cx But lazy lists more generally don't. Hmm. I'm tempted to JFII. so lazy implementations of some functions will require gather/take then I was wrong - if I had to implement lazy lists, I'd do most if it with gather /take OK, but to get file handles and ranges lazy on iteration, is a smaller and easier step. Well, ranges needn't change for now - file handles are what really needs this. r29847 | moritz++ | trunk: : [rakudo] add more IO tests to spectest_regression : most of them are TODO right now diff: http://www.parrotvm.org/svn/parrot/revision?rev=29847 Ooh, moritz++ moritz: S16-io/basic-open. Missing a t? jonathan: yes, will fix r29848 | moritz++ | trunk: : [rakudo] fixed typo in spectest_regression.data, moritz--, jonathan++ diff: http://www.parrotvm.org/svn/parrot/revision?rev=29848 I'm thinking about how lazy lists will end up working with ResizablePMCArray In the sense of, is it an "isa" or a "has a"? in the sense of -- how do we make sure everything works correctly when Parrot hands us an RPA instead of a List (e.g., :slurpy) Could we have a case where that happens and we have an iterator in the list that we should be iterating? pmichaud: how is that lazy? RPAs aren't lazy, i mean If not, get_iter on ResizablePMCArray can just return its iterator, we iterate it, and it works out, I think. particle: RPAs aren't lazy, correct. That's why it's a problem. if we get an RPA with lazy elements, we can't just return those elements True - will that conceivably happen? oh, yeah, you'll probably have to override get_iter jonathan: sure, anytime we use :slurpy mixin a role for that % davidfetter has left davidfetter!~davidfett@start.fetter.org Ah, like we get something like sub foo (*@foo) { ... }; foo(1..10, 20..Inf) I've been wanting to get .HLL type mapping working, so that Parrot would at least give us a List instead of an PRA *RPA Yes, but that's blocking on various things, IIRC. other possibility might be to generate code to recast all slurpy params into Lists explicitly. But I'm not sure that will be very robust -- quite a few might slip through the cracks. oh, it might work out if we just implement a separate .list and/or .iterator method for RPA that returns what we want. .sub 'iterator' :vtable('get_iter') That'd probably work. we have to be *very* careful about trying to override get_iter in RPA % sjansen has joined #parrot because we'd be doing that for all of Parrot, not just Rakudo. Ah, yes. :-| http://rt.perl.org/rt3/Ticket/Display.html?id=49812 only has http://rt.perl.org/rt3/Ticket/Display.html?id=56650 as a dependency. it's the same problem we have with overriding get_string in Object Does that mean that the second of those is the only blocker to being able to use .HLL? no p6object still needs its refactor. OK, but I meant Parrot guts issue. I'm not sure if HLL type mapping is working yet for :slurpy Coke had a ticket about that recently. HLL map of :slurpy's ResizablePMCArrayresolved It's marked resolved as of 13 days ago. ticket number? 56958 looks like there might be other issues with non-PMC classes, but that's a different test and a different RT. (quote from ticket) Ugh. If we can't use non-PMC classes in the HLL_map, it's a tad useless to us. so, we could at least use a test for that for now. :-) just a sec, I'm distracted going over itinerary details for tomorrow's travels ok jonathan: we don't need to do much to get a semantic analysis phase in rakudo (re: 57336) heck, we're doing some semantic analysis inside the parse->past code now % rdice has joined #parrot parse->past is the semantic analysis, isn't it? ;-) hi ho richard! how's life with baby? I suspect it'd be useful, to have a second "CHECK" phase, rather than tyring to clump it all into one. :-) yeah very easy to do TGE for PAST-nodes? we can use nqp OK, great. see perl6.pir:44 wait, I'm confused. okay, I de-confused myself. I'm not convinced I like the second "CHECK" phase, though. but I haven't thought about it that much yet. but "second CHECK phase" sounds wrong to me. i want a phase for tree-ssa, but that might be after past ...tree-ssa? tree based static single assignment gcc does it ...what is that? their tree language is called 'gimple' i think ssa tracks assignments of variables it's an optimization strategy lemme get you a link does it work in a dynamic language? pmichaud: SSA is a form where you re-arrange code into a format where a variable/register is only ever assigned to once, which makes certain types of analysis (that can in turn lead to optimization) easier. http://gcc.releasenotes.org/summit/2003/Tree%20SSA%20-%20A%20New%20optimization%20infrastructure.pdf yes, it's good for dynamic languages That is, you don't actually emit the code like that, but you get a tree representing it in such a form so you can do such analysis. why does this sound premature to me? ;-) i want to add it as an optimization step to pct particle: this week, this month, this year, ...? before 1.0 it's not blocking on anything it can happen anytime no, but spending tuits on it causes other things to block so anybody with tuits can help, if they're not working on anything else if we have spare tuits around, then yes, great. and yes, it belongs in pct. And that can go in as a separate phase for pct, no problem. I thought you were referring to rakudo specifically. no * particle has his parrot hat on pmichaud: Got a fix for 56650 Smoking it now to make sure, there's no collateral damage. okay, great. We were going to fix it by fixing class creation. (that is, don't get exicted yet) I fixed it in init_pmc insdie the class PMC. the way that classes get stored in the name registry was messed up. it would include the HLL name as part of the class name Yeah I fixed that. should it always include the hll name, including 'parrot' ? for now it should never include the hll name otherwise we have a lot of stuff to deprecate and repair so how do you tell rakudo's Integer from parrot's Integer? there's not currently a way to do that. That's a different bug (looking up ticket number) maybe we should have a special marker to signify that namespace keys should be relative to current hll rather than root #43419 I think that what is more likely to happen is (1) always use namespaces to refer to classes (no ambiguity) (2) use protoobject-based items, and make all HLL classes anonymous although #2 is problematic because it's hard to stick methods into an anonymous class so what we really end up doing is using mangled names for the HLL-specific classes such as Perl6Object, Perl6String, etc. pmichaud: It passed all tests. but at least as PCT/rakudo are currently designed, the HLL never really sees a Parrot class name. (sorry, phone) jonathan++ * jonathan finally does something successful today. yay! So far I've failed to fix try and failed to fix for =$fh { ... } Did implement .eof on file handles, though. well, let's at least make tickets for those that explain the blockers. r29849 | jonathan++ | trunk: : [core] Fix RT #56650 (class created from namespace fails MMD). diff: http://www.parrotvm.org/svn/parrot/revision?rev=29849 or add the blocker information to the tickets. or make tickets for the blockers, and then link the tickets. % iblechbot has joined #parrot % donaldh has left donaldh!~chatzilla@proxy-sjc-2.cisco.com Do you want me to try and get some custom iterator set up for lists, to try and handle file handles better? I think I'd rather just implement lazy lists. will 'multi' in a grammar mean 'multi regex' or something, eventually? OK, I kinda saw doing that as a step towards lazy lists. I don't think lazy lists need custom iterators They need some kind of iterator. a list can just clone itself. OK, in that case the list just is the iterator. correct. * jonathan senses this will be a big refactor. we might be able to do a specialized iterator as an optimization, but I see that coming later. I think it's not so bad, except for the RPA stuff % masak has left masak!~user@130.238.45.242 Now the MMD bug is fixed, how far do you think .HLL is? not far. I'll have to re-try my p6object conversion OK. So best to wait on lazy lists until .HLL is done, and we're not getting RPAs? I think we'll still get RPAs, so .HLL probably shouldn't be a dependency. Instead we need to figure out how to handle RPAs when we get them. Hmm. When we can't reply on an RPA being fully evaluated, that's really tricky. *rely I think the answer is to convert RPAs to Lists when we find them, or at least keep track of when they occur *nod* I guess we can only see how well that will work out by giving it a go. At least once .HLL is in place, we eliminate the primary source of RPAs (from :slurpy) the other source of RPAs will be arrays from matches although those probably won't be lazy for a while yet we need to update the roadmap, and make it a little more detailed and identify some of these dependencies Yes, and probably break down some of the big items too. * class, role, objects * regex, token, rule, grammar Those two are pretty wide-ranging. We have progress on all of them. a good thing to do would be to place most of the skip/todo items from spectest regression into the roadmap or, at least the major ones As in, work out why they skip and list the features we need to get them to pass? well, most of the skips already have reasonable messages (and I've been changing them to reasonable messages when they're incorrect or imprecise) but yes, list the features we need to get them to pass. Perhaps create tickets for them or for the features. % Andy has left Andy!~AndyL@host3130.follett.com Hmm. Did we get rid of #pure? Schwern submitted a patch that eliminated #pure, yes. We couldn't find the reason for it. that slows down autounfudge a bit :/ There goes my easy way of looking through, in one file, which spectests have skips. ;-) schwern was arguing for rgrep instead of manually maintaining #pure even 'ack' ought to be able to do it. it's okay to create a tool and/or make target for that but a good first approximation is ack '/\#\?rakudo/' t/spec or for just a list of files, ack -l ... and, of course, the way I find skipped tests is to run tools/test_summary.pl That's rather useful. :-) but it takes quite some time jonathan: your fix to #56650 isn't the approach I was planning to take. % Andy has joined #parrot pmichaud: In a, "re-do it another way" kidna way? I'm just looking to see if I see any difficulties OK What were you planning? to fix lines 191-212 which is where the bug _really_ is. Hmm That would work to, I think. the problem is when init_class_from_hash gets called with a namespace argumnent Yes, I see... OK, done, smoking #parrotsketch in 98? 'twas a vintage year. pmichaud: Working on making list of features used in spectests to go in the roadmap. excellent. I'm going to have to run errands in a bit. OK I noticed STD.pm has some type registry stuff in it. and there is so much background noise in the house at the moment that I'm having trouble concentrating :-( (housekeepers, two kids, wife, and dog) I figure doing something very similar is a good approach. Plenty of noise-emitters! STD.pm has type lookups, does it have anything else? Two weeks until pre-YAPC hacking. We can find somewhere quiet for that. It has a sub for putting stuff into the type registry * particle is back Which is called from a few places. I hadn't noticed that. what sub? add_type i'm disappointed to see #pure go away without discussion that involved me (or moritz) Oh, actually it's a method. Though it never touches the invocant, or any attributes, so it may as well have been a sub. particle: it's an easy revert. I didn't feel like arguing the point much with schwern. especially since I wasn't sure why they were needed either well, for example, to run a test as pure even though it has #?rakudo markers in it as part of spectest_regression? sure, or localtest I can't imagine ever wanting to do that in spectest_regression afaik we didn't take out the capability to have #pure in localtest ok, i haven't reviewed the patch, so i don't know the extent of the changes or whether they're right or wrong the main point of the patch was to enable "make t/spec/S29-num/foo.t" which runs a single test (fudging as needed) what does that have to do with #pure? why do we need #pure in the first place? the idea: r29850 | jonathan++ | trunk: : [rakudo] A different fix for the class created from namespace and MMD bug. tests may optionally be marked as #fudge or #pure... diff: http://www.parrotvm.org/svn/parrot/revision?rev=29850 the default (for now) is #fudge... jonathan: all of the calls to add_sub are doing so on the cursor object, which would seem to be a different method from the add_sub that is in STD.pm jonathan: we might need to ask TimToady about that but the user can override the behavior of fudge by specifying #fudge or #pure in the .data file. particle: how many times have we needed to override the behavior? (in spectest_regression.data) in localtest.data, I can understand it and fully support it, yes. if it's in one data file, why not all? pmichaud: You mean add_type? i'd like to be very specific in spectest_regression. once they're all pure, we don't need fudge because in spectest_regression it means we're having to maintain a flag that can be automatically determined particle: but isn't that "make spectest"? we don't *need* no specify the flag in spectest_regression jonathan: yes, add_type oh, wait. did the patch simply remove the flags from the data file? particle: I don't know -- I didn't check that far. I know it at least removed the flags from the data file. I don't know that it removed the flag handling code. I don't mind if the flag handling code returns, if that's the case -- as long as we don't break the other testing changes. easier still might be to not use flags at all fudge is a preprocessor. i don't trust it. i want the ability to override I don't think we need the ability to override in spectest_regression fine with me especially if "fudge" is the default in localtest.data, I think overriding makes sense well, that can be easily changed (fudge as default) I don't think we'll ever switch spectest_regression from having fudge as its default % kj has left kj!~IceChat7@193.1.100.105 if the list of files were known and static, perhaps we might do that, but since we're constantly adding (fudged) test files to _regression, we'll likely keep fudge as the default eventually we'll get to the point that either (1) we're no longer adding files to spectest_regression, in which case it's just 'spectest', or (2) we're running things unfudged, in which case it's just 'spectest'. depends on the percentage of files that run pure in spectest_regression, i think if more run pure, that should be default % cjfields_ has joined #parrot % cjfields_ has left cjfields_!~cjfields@cjfields.igb.uiuc.edu % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu but fudge already leaves files as 'pure' if there isn't any fudging taking place I liked the pure marking, but I can live without them if there aren't any '#?rakudo' markers, it leaves it as pure, yes no matter. spectest_regression can live without the markers. % DietCoke has joined #parrot % DietCoke is now known as DietCoke_afk then we might just as well delete tools/fudge_purity_inspector.pl unless we use it for other localtest % cjfields has joined #parrot s/other// svn diff -c 29782 we could certainly modify test_summary.pl to report the fudged/pure tests it does remove #fudge/pure mark detection entirely feel free to add it back in... but I do like schwern's overall option handling better the decision to have global fudge/pure should come from the --fudge option if --fudge, then default all tests to being fudged if no --fudge, then default all tests to being pure there's no way to run a single test without fudge, as schwern has it ../../parrot perl6.pbc path/to/test.t # ;-/ as I said, feel free to add #pure option back in. I just don't think we need to maintain the markers in spectest_regression and I'd like to avoid adding more options to t/harness my suggestion would be to refactor the lines if ($do_fudge) { @tfiles = fudge(@tfiles); } % chromatic has joined #parrot pmichaud: I'm thinking this test is not right: my $h; sub some_sub_2 ($arg) { $h = $h ~ $arg; }; for (0 .. 5) { .some_sub_2 }; (we never fall back to a sub any more?) correct, method fallback to sub is gone (per TimToady at OSCON) yep actually, it was pre-OSCON, because I even committed a Synopsis patch to eliminate it. OK Will eliminate the test. there are a lot of those. okay, lunchtime for me. bb in 56 for #ps kk ocrap #ps. QUICK I NEED SOME COMMITS svn rm languages/tcl lol you can misspell something and then fix it that'd give you two it would "solve" some of the pdd25cx problems (svn rm languages/tcl) * DietCoke_afk wonder why everyone always hates on tcl. % DietCoke_afk is now known as DietCoke It was a slow Lisp with weirder syntax for a long time. ... fine, "partcl" DietCoke: I wasn't picking on tcl, I was picking on you. as penance, where's my patch? Um... hey, look, cardinal has a failing test! I should go fix that! * particle thinks tene owes dietcoke a dinner Well, I will be in NYC in a couple of weeks. * Infinoid gives DietCoke a free patch r29851 | infinoid++ | trunk: : [tcl] Fix trailing whitespace. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29851 NYC is a bit of a haul for dinner. =-) r29852 | tene++ | trunk: : [cardinal] : * Track a change in P6Object for calling methods on the metaclass. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29852 DietCoke: but it would be *free* dinner! You probably don't have anything I can eat. :| Infinoid++ purl, 236.5-205 31.5 purl, 31.5/77 0.409090909090909 pmichaud, jonathan, particle: anybody motivated to review RT #56700 ? We really need to persuade one of the bots to provide links for ticket numbers. I could write a dalek script for that someone did that and it was booted as being too spammy, as I recall. moritz: I think that one has been discussed some, and some PCT changes for namespaces are forthcoming to make this possible. (perhaps because it failed spammily) was that Whiteknight's bot? jonathan: ok, thanks I thought it was booted for being too spammy for other output another one I'm looking at: RT #57068 it seems to duplicate effort, and use '!EXPORT' instead "Infinoid" at 96.238.213.50 pasted "[PATCH] silence some "switch missing default case" warnings" (88 lines) at http://nopaste.snit.ch/13690 DietCoke: any objection to that nopaste? I doubt it adds any value, but it silences some warnings. the ticket links exist on the irc log moritz runs, right moritz? particle: yes moritz: I'm not sure export quite cuts it here, because we want a version that doesn't take a file handle. But it should probably just look up $*IN and invoke the printf method on that. DietCoke: hmm, and causes some test failures. Guess you're relying on silent passthrough for those switch statements % pancake has left pancake!~pancake@core.fluendo.com Infinoid: where are the failures, t/cmd_binary ? lots of places. far more failures than there were without the patch jonathan: should I just commit the method form, and ask for a re-worked form of the function? * Infinoid is making a gentler version of the patch :) r29853 | jonathan++ | trunk: : [rakudo] Updates to the ROADMAP, including a list of many smaller tasks that are needed to allow us to skip less tests in spectest_regression. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29853 ah, many places. (gentler) hokay. moritz: Yes, or just write it to do get_hll_global '$OUT' and call .printf on the return value. moritz: Should be less characters to type to change that, than to type them asking for a new patch. ;-) anyone looking to play with PCT, a tcl conversion would not be unwelcome. =-) (well, a patch. I don't want to lose .HLL yet.) bah. nevermind. if you're bored, check the the TODO file. ^_- there are a few failing tests here in partcl, even without my patches. are those known failures? or is everything expected to work? everything is expected to work. What's failing for you? r29854 | coke++ | trunk: : [tcl] use more truth. I'll paste that in a moment diff: http://www.parrotvm.org/svn/parrot/revision?rev=29854 "Infinoid" at 96.238.213.50 pasted "[PATCH] silence some "switch missing default case" warnings (gentle version)" (82 lines) at http://nopaste.snit.ch/13691 jonathan: has method fallback been oficially removed yet? "Infinoid" at 96.238.213.50 pasted "partcl test results (3 failed scripts)" (103 lines) at http://nopaste.snit.ch/13692 ok. note that the lsort failure is a non-failure. the other two, looks like runtime/builtins/join is not compiling for some reason. I am doing a fresh build after svn update moritz: Yes. 19:32 <@pmichaud> correct, method fallback to sub is gone 19:32 <@pmichaud> (per TimToady at OSCON) Ah. I think I see the problem, and it would depend on a hash ordering, so I can see why it hasn't hit me. moment. so not in the specs yet :/ 19:32 <@pmichaud> actually, it was pre-OSCON, because I even committed a Synopsis patch to eliminate it. So if there is any remaining references in the synopses, they should be reported. jonathan: I get a test failure in S02-builtin_data_types/range :( Infinoid: try now. r29855 | coke++ | trunk: : [tcl] add in missing namespace/HLL directives ; depending on how runtime/builtins.pir gets generated, these could have broken the runtime. (infinoid++) diff: http://www.parrotvm.org/svn/parrot/revision?rev=29855 r29856 | coke++ | trunk: : [tcl] don't bother saving the return value if we're never going to look at it. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29856 I commited it wihtout change because the duplicate code isn'T really much r29857 | moritz++ | trunk: : [rakudo] implement sprintf. Patch courtesy of Carl Mäsak : masak++ diff: http://www.parrotvm.org/svn/parrot/revision?rev=29857 moritz: Oh? That's odd... C:\Consulting\parrot\trunk\languages\perl6>perl t\harness t\spec\S02-builtin_dat a_types\range.rakudo t\spec\S02-builtin_data_types\range....ok #ps in 3 t/spec/S02-builtin_data_types/range......................Missing '}' at line 168, near "" current instr.: 'parrot;PGE::Util;die' pc 120 (runtime/parrot/library/PGE/Util.pir:82) Hmm let me try again moritz: perhaps remove t/spec and regen? DietCoke: looks like cmd_join.t worked, waiting for the rest of it... moritz: Even doing a clean run of spectest_regression, t\spec\S02-builtin_data_types\range...............ok now cleaning and trying again And no local patches. perhaps it was a local fuckup OMFG SWEARING ;-) back pmichaud: Checked in a bunch of stuff to ROADMAP. OY?G DietCoke: all passed, except for the cmd_lsort continuation weirdness. ok. that is expected. #ps time (and sadly, not fixed by pdd25cx) #56700: the patch doesn't really follow STD.pm assuming they don't break anything, any objection to the (gentler) default cases patch? Infinoid: no, removing warnings good. great, retesting now. I thought we already had sprintf in Rakudo? (r29857) seems that make spectest_regression stopped to work (at least for me) En la revisión 21616. /usr/bin/perl t/harness --fudge --keep-exit-code --tests-from-file=t/spectest_regression.data <--- sleeps here .. r29858 | infinoid++ | trunk: : [tcl] Fix some "switch missing default case" warnings. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29858 "enlightening conversation" means "why version numbers are stupid" lol % cjfields_ has joined #parrot * DietCoke sees that particle has already taken over. * DietCoke wanders away, then. % purl has left purl!~purl@florence.kuiki.net NotFound: #ps % cjfields has left cjfields!~cjfields@newrad.igb.uiuc.edu % purl has joined #parrot % rurban has left rurban!~chatzilla@212-183-53-112.adsl.highway.telekom.at paco: #parrotsketch % purl has left purl!~purl@florence.kuiki.net % Ivatar has joined #parrot % confound has left confound!hdp@floe.aq % confound has joined #parrot % gryphon__ has left gryphon__!~gryphon@dsl-209-221-185-54.zipcon.net % purl has joined #parrot patch monster? reviewer and committer of other people's patches I think that #44471 can be rejected. I think the only reason to use :anon with a :vtable was so you could also use :method, neh? (and now that you don't need to do that, I don't see a point to :vtable :anon) Right. I think the original post was expecting to use the sub name % ruoso has left ruoso!~ruoso@201.45.49.162 with the changes discussed on saturday, though, it'll be a non issue (because :vtable implies :anon) ... there were changes discussed ? yes. they'll be in allison's coming commit of pdd19 I thought it was already committed I know I reviewed something. maybe it was just a m/l message * DietCoke makes a snarky comment about discussion on list. =-) more likely a private mail message. last things I have from allison are yapc:eu 2008 yesterday, and then hackathaon space on 7/26 RT #53302 * jonathan afk for 15 mins or so - dinner anyway, I suspect the current way to create an anonymous vtable entry is .sub "" :anon :vtable('get_integer') shall I just stick these comments as replies to the tickets? I guess I'll do that. to avoid snarky comments about discussion on list. =-) usr/bin/perl t/harness --fudge --keep-exit-code --tests-from-file=t/spectest_regression.data # this line hangs for me from time to time it seems to expect input from STDIN as in "stops running?" it doesn't process any tests? as in "last output that I see untild I press Ctrl+D" this is from the 'make spectest_regression' target? yes but it happens only sometimes? odd. it happens the first time after a clean checkout or other serious changes when I hit Ctrl+D once, it runs fine on the next invocation sounds like it's missing a file or directory or something yes, but they all exist try 'rm t/spec/S02-builtin_data_types/range.rakudo; make spectest_regression' - does that work for you? I'm not at a point where I can easily test :-( :/ I can get there in about 15 mins though I'll test a few more things here locally moritz: Trying deleting that file, and giving it another run Will let you know what I see when I delete the line with S02-builtin_data_types/range.t from spectest_regression.data all works fine when I don't, and rm -rf t/spec && make spectest_regression it hangs maybe fudge tries to read from <> somewhere? t\spec\S02-builtin_data_types\range...............ok 22/79 skipped: various reasons Hmm I need to grab something quickly from the supermarket before it closes - back soon... r29859 | allison++ | trunk: : [pdd] Architectural review of PIR PDD. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29859 someone please open a ticket for this new deprecation note: {{DEPRECATION NOTE: PIR will no longer support the old PASM-style syntax for registers without dollar signs: C, C, C, C.}} (and add the ticket # back into the PDD) r29860 | allison++ | trunk: : [pdd] Resolving a few more TODOs in the PIR PDD. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29860 and this: =item .HLL , [deprecated] An old form of the .HLL directive that also loaded a shared lib for the HLL. Use C<.loadlib> instead. (also, the PDD uses that second deprecated syntax shortly after the warning.) r29861 | allison++ | trunk: : [pdd] Launching the PIR PDD out of draft. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29861 * DietCoke does wonder how it can be out of draft when there are so many {{NOTES}} in it. and outstanding questions. take a look at the io pdd ... doesn't mean we should -keep- doing that. =-) % DietCoke has left DietCoke!coke@feather.perl6.nl Some questions we can't answer until we have some implementation. moritz: I get the hang on spectest_regression also (on fresh checkout) back Do you know where it's hanging? at the do_fudge step in the harness (still probing) OK I'd help, but I can't reproduce it here. it's hanging in fudgeall oh wait it might not even be getting there okay, it's getting there, and hanging when fudging range.t if only we could skip it with #pure or something ;) see what make t/.../range.t does just calling ./fudge rakudo S02-builtin_data_types/range.t doesn't hang, though % paco has left paco!~chatzilla@139.Red-80-36-122.staticIP.rima-tde.net it's actually calling fudge --keep-exit-code rakudo t/spec/.../range.t Hmm. I did change that file, intending to un-todo a few tests that Rakudo could pass. #?rakudo 5 skip 'range reverse not in spec' Valid directive? jonathan: but whatever you did to that poor file, why on earth should fudge start to hang? % paco has joined #parrot valid directive, but not true fudge _does_ do while (<>) it *is* in the spec, and defined to be the empty range moritz: the line below: ### pmichaud, 2008-07-04: XXX no spec for .reverse If it is spec'd now, we should change this/check the tests. jonathan: oh, I thought you meant 4..1 No, it means .reverse method My comment maybe shoulda had a "." in there to make things clearer. I've been trying to use "Range.reverse" I see that TimToady used quite some <> magic :/ moritz: Where? Oh, in fudge? jonathan: in fudge @ARGV = ($IN); so all should be well if $IN is what we think it is for some reason the while (<>) isn't seeing @ARGV if I print @ARGV just before the while (<>) ... it's correct. I don't even get to the first debugging print statement I made :( moritz: are you printing to STDERR ? no, that's the problem right... fudgeall and fudge are called from backticks, so their STDOUT is captured it does start processing range.t, up to the first test after the #?rakudo skip line that jonathan added uhm, should reading from <> empty @ARGV? @ARGV isn't empty, when I run it. i.e., I'm actually getting lines from range.t I added a few 'warn Dumper \@ARGV' lines, and it's empty sometimes This isn't because you #? has to be in the leftmost column? *the % AndyA has left AndyA!~andy@ca93nt.hexten.net it shouldn't matter I thought not. but there's something about the #?rakudo skip lines that fudge doesn't like commenting out the first causes me to hang on the second is $ARGS tied to @ARGV somehow? no, that was $ARG it's something to do with the skip lines jonathan added. if I take them out, processing works fine. I removed one and added one, I believe. # #?rakudo 2 skip '.reverse on ranges' % AndyA has joined #parrot ...how about that one? (The one I removed covered both some tests that passed in Rakudo and some that failed) # #?rakudo skip 'XXX test error -- result should be undef?' those are the ones that are causing issues for fudge Those aren't recognized by fudge, I think It was around the .reverse that I did the changes. Auzon: ...? Yada yada yada hasn't been implemented yet! (unless you run bleadperl) The entire block "# simple .to, .from" before was marked as skip I moved the #?rakudo directive inside the block and tweaked the number. pmichaud: Fudge requires the ? right after the # mark or it's just a comment (since .from and .to work) Auzon: oh. the extra #'s in my pastes were where I commented out the skip lines if I remove those, then fudge hangs on what's left oops, I have to run. I'll follow up on it later. It's something about the range.t test that is causing the problem, though. bbiaw OK I have another update to that file anyway (removing one of the fudge directives, since I've made more tests pass) r29862 | jonathan++ | trunk: : [rakudo] Make range smart-matching accept the same or equivalent range as well as a single value within the range. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29862 % iblechbot has left iblechbot!~iblechbot@ppp-62-216-206-168.dynamic.mnet-online.de % sjansen has left sjansen!~sjansen@169.139.177.61 in ROADMAP, Make junctions in boolean context return a junction of True/False is that actually correct? if you do this, 'if "a" eq any()' and 'if !"a" eq any()' will both be true Doens't !"a" do prefix:! on "a"? I'd expect it to have a low precedence anyway, I meant !("a" eq any() OK Comment was based on comment from pm in RT#56630, but I may have mis-understood I see your point. Hmm. Think is that we should be able to rely on auto-threading to carry us through. if !("a" eq any()) -> if !(any("a" eq "a", "a" eq "b")) -> if !any(True, False) -> if any(False,True) -> True Hmm. :-S % donaldh has joined #parrot "Collapsing to a single true/false value should happen when a Junction is used in a boolean context." Yeah Oh ! enforces boolean context prefix: actually does provide boolean context !any(True, False) -> !True -> False % teknomunk has joined #parrot % paco has left #parrot % paco_ has joined #parrot * jonathan gets at least another 36 spec tests to pass with an implementation of infix:=== YaY % paco_ is now known as paco t\spec\S03-operators\value_equivalence............dubious Test returned status 1 (wstat 256, 0x100) after all the subtests completed successfully moritz: Seen this before? Any ideas? jonathan: yes, in other tests It gave all tests successful with perl t\harness jonathan: usually some GC f*ckup sh*t. r29863 | allison++ | pdd25cx: : [pdd25cx] Bringing the pdd25cx branch up-to-date with trunk r29862. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29863 Oh, no, it does the same with t\harness too; I'd run it with perl6.pbc before is it fudged? particle: Yup all fudged tests return 1 even if all tests pass particle: OK, but normally in spectest_regression you don't then get a warning about it. yes, because of --keep-exit-code or whatever it's called Right. But I'm getting the "dubious" in running spectest_regression ah. :( And it doesn't segfault or anything when run under the debugger. Just says it exited with code 1 Something sets the exit code then. T*::Harness expects that an exit code of 0 means everything's okay. Anything else indicates some form of oopsie. jonathan: did you try to run the .rakudo manually? chromatic: It's meant to be exiting with a code of 1; fudged tests do. moritz: Yes; it all looks fine doing that. It's only when I run it under the harness. Hmm, the harness says "Test returned status 1" too. Oddness. The harness doesn't know that 1 means everything's okay. % rdice has left rdice!~richard_d@CPE0014bfafbbd5-CM0011e6ecf48a.cpe.net.cable.rogers.com chromatic: The harness used in make spectest_regression is modified to know that 1 means that. r29864 | Whiteknight++ | gsoc_pdd09: : [gsoc_pdd09] update to trunk r29862 diff: http://www.parrotvm.org/svn/parrot/revision?rev=29864 Alright then. chromatic: Normally, this works out fine; we have other tests doing this. For some reason, one that I've just added to the spectest_regression list ends up giving the warning. :-( what's the spec that gives rise to r29862? what happens if schwern's patch is reverted? % Debolaz has joined #parrot (equivalence of ranges) (dubious): I get that a lot in the test harness % cjfields_ has left cjfields_!~cjfields@cjfields.igb.uiuc.edu r29865 | jonathan++ | trunk: : [rakudo] Basic implementation of the === and !=== operators, plus WHICH defined one some immutable types. Does enough to pass all non-fudged tests in S03-operators/value_equivalence.t. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29865 % iblechbot has joined #parrot pmichaud: It was in the spec test, and looked familiar; now I go look at the spec, I don't see it. right, that's one of the reasons I hadn't implemented it yet. But I also hadn't had a chance to ask about it on p6l. I was probably thiking of "Array Array arrays are comparable" but Range != Array Oh, sure. I think we have to be a little bit pessimistic about assuming the spectests are correct I wasn't saying that makes it correct, just what I was probably thinking of. can we get a p6l clarification or attach a ticket to get one? I'm writing to p6l now. pmichaud: Written; will update the spectest/implementation if I get a response back saying the spec is right and the test is wrong. pmichaud: On the dubious test - since it's the only one doing that here for me, I'm a bit wary about adding it to spectest_regression.data, even though it is passing all un-fudged. Thoughts? (all un-fudged tests, that is) I've seen "dubious" on other spectest_regression tests -- push.t gives that for me a lot I also get exceptions on the exit code OK (RT#56630): My primary point about boolean context was simply that the comparison operators currently in Junction.pir are wrong. In that they should return a junction? yes Makes sense. but yes, the underlying thought is also that most of the operators and items defined in Junction.pir should be handled via the normal dispatch and not as special-purpose functions That involves writing out own dispatcher. :-) we're going to have to do that, yes. I left a question with TimToady on saturday asking about how we autothread method calls over junctional invocants Junctional invocants = $junc.foo? yes. I think you that's always a call on Junction. that's what i'd expect too Otherwise, $junc.values maybe doesn't work. right but that's not what TimToady answered Oh, damm. :-S because it means we can't do (1|2).exp Hmm so we were speculating about something like $junc.JUNCTION.values, similar to VAR on scalars I guess if you're expecting to be able to use a junction anywhre you'd use a normal value, that kinda hurts... That's ugly, though consistent-ish. I would rather it be consistently not ugly :) (and easy to implement...) autothreading method calls over junctions sounds... interesting, though. With a custom dispatcher, I'm not thinking it'll be too horrible. right... but it means we can't do method calls on junctions through parrot's normal dispatch unless we override find_method somehow or something like that. Yes... anyway, it also means that most of the existing spectests that do $junction.values or $junction.pick are wrong. Actually, it may not be so bad. Because $j.foo will call foo on Junction. And then it can hit the fallback there is no fallback. (because There Is No Foo) method fallbacks are gone now. As in, the Perl 6 equivalent to AUTOLOAD yes, I was thinking it'd have to be autoload-ish. Which sees the name, and gets the parameters. And threads the call through the values in the junction. We don't have a nice way to do AUTOLOAD style thing in Parrot right now. how does one do autoload-ish stuffin Parrot? oh. you answered my question as I was typing it :-) We could either teach Parrot how to do it (by doing Stuff in find_method) surely it's been considered already, though? Or stick it in our custom dispatcher. find_method can return the AUTOLOAD on failing to find anything. right. or dynamically generate a method :-) But they you have the slightly tricky issue of, how does it actually get the name of the thing we originally planned to call... if we dynamically generate the method we can put it in there :-) Mwaha. :-) Dynamically generated bytecode. :-) I wonder if there's a way for a method to determine how it was invoked? (i.e., what name was used?) that would make it easier. No, which goes back to the usual issue of find_method / invoke are split. (The null PMC access in invoke that we used to get, was because we didn't know the name any more of what we find_method or find_name'd) It's also the same reason that find_method currently can't do MMD, and we thus invoke on the multi.. (The args ain't promised to be available, at find_method time) ...but methods are invoked with callmethodcc, not invoke it's not the same subroutine calls are invoked using find_name_not_null + invoke, yes. method calls are invoked using callmethodcc, which has the name as part of the invocation OK, but the callmethodcc op does a find_method, and then an invoke inside. okay. but we could potentially squirrel away the invoke name somewhere. You're right though, we do in callmethodcc emit a good error message rather than the Null PMC in invoke. That was for subroutine calls. btw, allison also said on saturday that we would see about changing things so that foo.$P0(...) would dtrt if $P0 is a String (or does 'string') Does that not do the right thing now? currently it expects $P0 to be an invocable PMC Ah. That could make some code neater. yes, that's why I asked for it. and she said "oh, I was about to ask you about that as well." :-) :-) Will Allison be at YAPC::EU, do you know? same for sub invocation -- i.e., $P0(...) when $P0 is a String yes, she's at YAPC::EU Cool. she's even planning to attend the hackathon, remember? ;-) I'm starting to think I already knew this... ;-) (from email, about dates when we would be there for pre/post-yapc hacking) Oh, yes! :-D that may be a _really_ good time to get all of our dispatch and parameter issues worked out including mmd Yes, agree. I think I'm going to see if I can spend some of my MMD time towards the end of the week, going over the spec closely, writing tests, and coming up with any questions I need answered. that would be excellent. So at least the algorithm is nice and clear. I think that would be extremely wise. I also think it will yield big dividends when we get to implementation Yes, agree. Also, Parrot needs to be able to HLL_map MultiSub. that sounds really.... scary but I don't disagree. Not really - I think in fact the MMD PDD requires it. oh, in that case I'm less scared. "An alternate multiple dispatch matching algorithm may be plugged in by subclassing MultiSub and overriding invoke." So that's exactly what I plan to do. oh yes, of course. that works for me then. But it follows on, that you need to have a way to have your multis of the right PMC type. So if you can get HLL working, it makes my life a little easier. I can do that, yes. If you can't, I can work around this. We also need to think a bit on signatures at some point too. :-S correct Last time we tried that, we got kinda bogged down. I'm beginning to think that PIR will never have sufficient pragma flags for us to do everything we want to do, so that we'll have to make it all part of :init/:load I think, because I was primarily interested in them being introspectable data, because that's what I need for MMD. do you need them more introspectable than simply arity and types of args? No. Well Yes and no. :-) so :multi is sufficient as a first cut? I'm struggling to think of a good way to get enough information into multi. well, that's why I said "first cut" There can be many constraints. however Which may be class or role names, etc. % ruoso has joined #parrot I'm starting to think that for Rakudo we should just have a Junction of constraints, and have the dispatcher smart-match against that The MMD algorithm requires a bit more of us than "is it a match" agreed % iblechbot has left iblechbot!~iblechbot@ppp-62-216-198-181.dynamic.mnet-online.de where's the Perl 6 mmd sort speced? First, we need to consider classes and roles, and we use constraints (subset types) later. S12 okay, I'll need to re-review that Starts at heading "Multisubs and Multimethods" anyway, I agree that signatures will end up as introspectable types. For a variety of reasons I think I'd like to avoid :immediate if we can. (it may be that we cannot, but that's what I'd like to shoot for to begin with) The fact that it is in the way of PBC generation (I *think* that's what you said?) makes me kinda keen to do away with them too. yes going back to the roadmap a bit, I think that PBC generation is my highest priority at the moment I think that depends on .HLL a bit, as well as getting :load/:init fixed The reason I used them was because they provide a sure-fire way to make sure you attach things to the Right Sub. (Because you make it the :outer) yes, "the Right Sub" is also a bit of an issue for me. I think we might need a way to uniquely identify subs outside of just names. :lexid is close, but this goes beyond just lexicals. We already created one of those and called it lexid, but it seems it could be more widely applicable. basically :lexid is almost equivalent to "longname" Also, lexid is not generated until POST-time. I did that as a short-term measure there's nothing to prevent :lexid from being part of the PAST If we're going to attach something to a sub based upon that, we need either POST to be able to help us link the two up or move it up. it's the same approach that gets used now for anonymous subs Yes, to PAST, as you mentioned. PAST doesn't contain a name, but the POST generates one. OK. But Rakudo could feasibly generate the names. correct and :lexids Right, which is what we're interested in here. which is why I think that :lexid might be more correctly thought of as a longname equivalent Then the missing bit of the puzzle, is a lookup by lexid. ....and a way to do that efficiently. :-) Yeah. :-| Thing is, we kinda want a hash of lexid => sub But we only care about having it at startup. I wonder if the Eval PMC could help here since the Eval PMC has an array of Sub PMCs You can likely make it easy (if this ain't already possible) to iterate all of it's subs. We can also trivially expose the lexid. yup Then we can even just build our hash in one iteration in PIR. In the :init :load Do our lookups in it Then let the GC have its way with it after :init :load. yes, that has some possibilities Oh But the Eval PMC ain't available in the :init :load? currently, no, but we might be able to fix that as well. Even in the PBC version? I really have to get the whole :init/:load process mapped out there's been so much "workaround" stuff done to get things to work that I have to go back and decide which parts are "real" and which parts are "workaround" Really we want to walk the constants table attached to the current bytecode segment. This will contain, if we eval'd, the Sub PMCs that we evaluated. And if we're loading a PBC, will contain the Sub PMCs we compiled and had in the PMC. true. For example, I didn't realize until a week or two ago that :immediate subs get replaced in the bytecode by whatever they return Yes. I wasn't using them so much for this purpose, though. but it's very handy for building the signature object we need instead of building it at load time (assuming we can get a reasonable representation.) Yes, that's another reason :immediate is good - we do compile time at, well, compile time. I think in reality, we can do stuff in :init :load now, and move some of it to :immediate as a kind of "optimization" later. yes, we can certainly do that. Once we get issues with :immediate in Parrot straightened out. (Which evidently exist, since they're geting in our way...) Anyway, I hate to rush off but I have to get some other stuff done today. Well, in your way. :-) I _should_ have some Parrot hacking time tomorrow. After that it's spotty until August 9th OK, it's half midnight here so I should maybe call it a night. OK, I'll likely be on IRC a bit tomorrow too. my time tomorrow will be early (before noon localtime) -- after that it's off to the airport Vacation? Vacation is good for the soul, and allows one to learn JDK 1.2 or or GET REAL it's a VACATION or an alien concept to formerly underpaid beleaguered perl hackers whose time is long overdue * jonathan suggests NOT learning JDK 1.2 on vacation. yes, vacation it has been said that vacation is good for the soul, and allows one to learn JDK 1.2 or or GET REAL it's a VACATION or an alien concept to formerly underpaid beleaguered perl hackers whose time is long overdue Nice. Enjoy. :-) % donaldh has left donaldh!~chatzilla@host213-123-171-12.in-addr.btopenworld.com * jonathan rests - report tomorrow 'night % Ivatar has left Ivatar!~graham@tu055.demon.co.uk % cesar has joined #parrot Hi It seems the code for Software Transactional Memory remained almost the same since 2006 I'm a MSc student with interest in parallel computing and I would like to contribute ... is there anyone here who had worked on that? % cesar has left cesar!~pcalcina@kama.ime.usp.br % cesar has joined #parrot cesar, if nobody here can help you right now, you can subscribe to parrot-porters and ask there. cott: ok, I'll try it, thanks the amount of activity on #parrot varies greatly cesar, what suggestions do you have about the STM system? I'm peripherally familiar with it I would like to begin testing another approaches described in literacy I don't know how pluggable the system is. That is, I don't know if you can easily write an alternative without mangling the existing code Although if you wrote up an alternative, you could separate it with an #ifdef I started by reviewing the code, and the paper the implementation is based on, just beginning with it I'm not as familiar with stm as I would like. I'll have to read that paper myself Actually, if you understand that file pretty well, it needs a lot of function-level documentation all the "RT#48260: Not yet documented!!" notes need to be replaced by documentation I may work on that myself, if you don't want to do it I plan to use the VM as bed of the research and I'll like that part of the resulting work be useful for the project very nice. good luck % cesar has left cesar!~pcalcina@kama.ime.usp.br % cesa1 has joined #parrot cesa1, the implementation has some drawbacks. Allison and I have long planned to review it. % bacek has joined #parrot I would like to help cesa1++ cesa2? heh cesar++ there's a lot of variations in literacy ... but we could find the best choice of them that suites the parrot interests % cesa1 has left #parrot % davidfetter has joined #parrot generic planning note: my plan at the moment is to get standalone/precompiled modules working in Rakudo tomorrow while on the plane (long flights, so lots of time to hack) this will involve changes to PCT, P6object, and rakudo pmichaud: if you have anything you would like me to report to sixperl, let me know particle: I expect I may be on the early part of the sixperl call fab sixperl is at 15:00, flight is at 15:40 so I will probably go ahead and call in at 15:00 and give brief report hope mute works well on your mobile :) it does on my headset -- I use that all the time on the call :-) (which means you perhaps haven't noticed it :-) I will likely miss next week's call depends on cell services wherever we happen to be I was thinking I'd miss the week after that too, but given the time differences I'm now thinking I'll likely make it :-) % kid51 has joined #parrot % Schwern has left Schwern!~schwern@069-064-236-003.pdx.net % Theory has left Theory!~Theory@c-67-160-131-113.hsd1.wa.comcast.net % Limbic_Region has joined #parrot % petdance has joined #parrot % s1n has joined #parrot i'm trying to add something to rakudo and i'm getting an error about how get_bool is not implemented, sifted through parrot's Class.pir and didn't see it am i looking in the right place? i'm very new to writing pir stuff This is a good place. It just depends on who's on channel at any given time. Could you paste your error? purl paste? paste is (see: nopaste) or like glue but a little safer to sniff. or http://nopaste.snit.ch:8001/ or http://scsys.co.uk:8001/ anywhere shadowpaste is or mmm, sticky paste or You there! Eating the paste. or 2 girls, 1 paste yeah hang on a sec "s1n" at 75.16.180.101 pasted "get_bool error" (3 lines) at http://nopaste.snit.ch/13700 * kid51 personally can't help you much on that, but there may be others. i don't really know what i'm doing with pir, i just figured i'd dive in head-first and i'm having trouble understand who has what implemented There is a readme file or roadmap file somwehere that details the progress i dont remember the name of it exactly roadmap? roadmap is http://www.xray.mpe.mpg.de/mailing-lists/perl5-porters/2004-11/msg00115.html wrong roadmap rakido roadmap? rakudo roadmap? rakudo roadmap is http://svn.perl.org/parrot/trunk/languages/perl6/ROADMAP oh Whiteknight: this one? i think this one is bugged too now s1n: what you tried to add to get this error? % particle1 has joined #parrot % particle has left particle!~particle@c-98-232-28-49.hsd1.wa.comcast.net bacek: i wanted to see if i could add clone to Object.pir, which is where I assumed it was needed for S12-classes/basic.t bacek: i was just actually trying to add the method before i filled in the implementation s1n: no. rakudo/parrot already has clone(). s1n: and you hide originally implemented one. clone is vtable method from parrot. So, it almost shouldn't be implemented manually in rakudo. what is a vtable method? % Limbic_Region has left Limbic_Region!~Limbic_Re@c-68-49-236-220.hsd1.md.comcast.net "s1n" at 75.16.180.101 pasted "missing clone" (6 lines) at http://nopaste.snit.ch/13701 it's not finding clone, so i'm curious what a vtable method is and why it's not being found bacek: i've more or less have this problem with some other 'vtable methods' that don't seem to be implemented % Whiteknight has left Whiteknight!~nobody@c-71-230-33-251.hsd1.pa.comcast.net s1n: ah. ok. my bad.. Just look ad src/classes/Range.pir. It has clone implemented r29866 | pmichaud++ | trunk: : [rakudo]: spectest-progress update: 113 files, 1902 passing tests diff: http://www.parrotvm.org/svn/parrot/revision?rev=29866 bacek: yeah i tried just copying that .sub, not doing really anything and that's how i got that get_bool error bacek: hmm, range seems to have done something that resembles overriding the vtable get_bool method bacek: okay, i've got the clone method defined properly, can you explain what a vtable method is? % Patterner has left Patterner!~Psyche@e177225207.adsl.alicedsl.de s1n: read docs/pdds/pdd17_pmc.pod % particle1 is now known as particle bacek: wow, that's a huge doc % jhorwitz has left jhorwitz!~chatzilla@96.245.16.64 % daizisheng has joined #parrot r29867 | jkeenan++ | trunk: : [configure] Merging 'parallel' branch into trunk. This: : (a) Reduces the number of configuration step tests (t/steps/*.t) from 227 to : 74 as planned in http://rt.perl.org/rt3/Ticket/Display.html?id=56716. : (b) Provides the first meaningful tests of the gen::* configuration step : classes. : (c) Provides two new functions in Parrot::Configure::Test, : rerun_defaults_for_testing() and test_step_constructor_and_description(), : which are useful in the steps tests. : (d) Provides two new methods in Parrot::Configure, pcfreeze() and replenish(), : which are also useful in the steps tests. They are wrappers around Storable okay, dalek. : functions and are used to test the Parrot::Configure object multiple times : within a file notwithstanding the fact that it is a singleton. : (e) Improves POD and inline commentary within the config step tests. % Patterner has joined #parrot diff: http://www.parrotvm.org/svn/parrot/revision?rev=29867 r29868 | jkeenan++ | parallel: : Branch has been merged with trunk and is no longer needed at HEAD. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29868 r29869 | jkeenan++ | parallel-29266: : Branch to which tag corresponded has been merged with trunk. Tag may be deleted. diff: http://www.parrotvm.org/svn/parrot/revision?rev=29869 * kid51 must sleep $kid51->sleep(8 * 3600); % kid51 has left kid51!~jkeen@68.237.19.130 % grim_fandango has joined #parrot % grim_fandango has left grim_fandango!~matt@bas2-kingston08-1128671702.dsl.bell.ca % Theory has joined #parrot % Theory has left Theory!~Theory@c-67-160-131-113.hsd1.or.comcast.net % Theory has joined #parrot % Ademan has joined #parrot % davidfetter has left davidfetter!~davidfett@start.fetter.org % teknomunk has left teknomunk!~teknomunk@r74-195-239-111.stl1cmta01.stwrok.ok.dh.suddenlink.net % integral has left integral!bsmith@adsl-212-20-244-147.lumison.co.uk % Psyche^ has joined #parrot % Patterner has left Patterner!~Psyche@e177224000.adsl.alicedsl.de % Psyche^ is now known as Patterner % Theory has left Theory!~Theory@c-67-160-131-113.hsd1.or.comcast.net % Theory has joined #parrot % petdance has left petdance!~Andy@uniqua.petdance.com % uniejo has joined #parrot % chromatic has left chromatic!~chromatic@sub17-30.member.dsl-only.net % brettles has joined #parrot % integral has joined #parrot