#parrot Parrot 0.6.4 "St. Vincent Amazon" Released | parrotcode.org/ | 15 new, 648 open, 80 stalled tix | logged in irclog.perlgeek.de/parrot/today
Set by moderator on 28 July 2008.
Tene DietCoke: looks like no parrot work today. I've been distracted by a personal project for a while. 00:10
00:30 bacek joined 00:43 ruoso joined, Theory joined 01:16 ruoso joined, duckyd joined
DietCoke kid51: pong. didn't have a chance to run that test yet. You still need it? 01:18
(ugh. getting late) 01:19
if I want something in C that respects the PCC, creating it as a PMC method is the easiest (only?) way to do so, neh? 01:31
well, not only, since I could just take whatever the pmc2c generated and used that, but that's guly. 01:32
"ugly"
kid51 DietCoke: Yes, though it's not a must for today. However, please see my remarks in rt.perl.org/rt3/Ticket/Display.html?id=57358, which has thrown a spanner in the works. 01:34
DietCoke kid51: there's no spanner. 01:35
that's an orthagonal issue.
(I had a followup comment.)
s/had/made/
The combination you're doing should still be done; his parallel stuff is another potential speedup we can (should) do, but you can resolve the parallel branch independantly of making things ||-safe. 01:36
kid51 k
DietCoke that's more of a nice to have. Just nice to have the option to run it that way now, perhaps it will encourage someone else to supply a patch. =-) 01:37
but anyone running 'make test' out of the box won't see it.
kid51 svn.perl.org/parrot/ is slooooow. 01:40
I had to kill (from my end) a long running 'svn diff'. I hope that didn't cause problems on the server end. 01:41
DietCoke I can't imagine it would.
summon robrt! 01:42
kid51 purl seen robrt?
purl robrt was last seen on #perl 22 hours, 58 minutes and 20 seconds ago, saying: bed is for the weak
01:43 davidfetter joined 01:57 Schwern joined
Whiteknight seen purl? 01:58
purl purl was last seen on #poot 31 days, 10 hours, 54 minutes and 19 seconds ago, saying: _Fud was last seen on #poot 2 days and 22 minutes ago, saying: heyo [Jun 25 07:42:25 2008] [Jun 27 15:03:59 2008]
Whiteknight viva la recursion!
Auzon seen purl? 02:03
purl purl was last seen on #poot 31 days, 10 hours, 59 minutes and 8 seconds ago, saying: _Fud was last seen on #poot 2 days and 22 minutes ago, saying: heyo [Jun 25 07:42:25 2008] [Jun 27 15:03:59 2008]
Tene seen purl_? 02:04
purl purl_ was last seen on #poe 1 years, 192 days, 3 hours, 37 minutes and 33 seconds ago, saying: hides behind purl [Jan 18 22:27:16 2007]
kid51 must sleep 02:11
purl $kid51->sleep(8 * 3600);
02:53 Andy joined 03:02 cotto joined 03:27 rhr joined
dalek r29835 | coke++ | trunk: 03:37
: [tcl] make 'get_list' METHOD more universal on the Tcl PMCs.
diff: www.parrotvm.org/svn/parrot/revision?rev=29835
r29836 | coke++ | trunk: 03:38
: [tcl] TODO more spec tests
diff: www.parrotvm.org/svn/parrot/revision?rev=29836
03:40 verve joined
dalek r29837 | coke++ | trunk: 04:06
: [tcl] Have our special constant class inherit from our string PMC.
diff: www.parrotvm.org/svn/parrot/revision?rev=29837
04:41 rurban_ joined 05:32 Tene joined, Psyche^ joined 06:23 TiMBuS joined 06:28 uniejo joined
dalek r29838 | cotto++ | trunk: 06:54
: [pdd] typo fix
diff: www.parrotvm.org/svn/parrot/revision?rev=29838
06:55 iblechbot joined 06:59 tuxdna joined 07:40 barney joined 07:43 masak joined 08:01 leo joined
dalek r29839 | bernhard++ | trunk: 08:26
: [codingstd] Fix POD.
diff: www.parrotvm.org/svn/parrot/revision?rev=29839
09:12 donaldh joined
jonathan morning all 09:16
purl afternoon, jonathan
jonathan Rakudo day! :-)
moritz YaY 09:17
jonathan Just gotta re-bandage my leg, then I'll get down to work. :-) 09:18
moritz rakudo approaches the 2000 passing test mark
Casan morning jonathan, keep fighting there.
moritz and with working IO we might hit the 2000 today if Auzon++ manages to get the regex tests running ;) 09:19
donaldh oooh, working IO
masak jonathan++ # rakudo day! 09:20
jonathan (hitting 2000)++ 09:27
09:49 Ademan joined 10:02 kj joined
jonathan Hmm. Fixing IO iterator is trickier than it first appears. :-| 10:07
moritz jonathan: it would already help to have $handle.eof working
jonathan 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. 10:08
moritz: my $fh = open "README"; while !$fh.eof { say =$fh }; $fh.close(); # now works 10:23
If the changes for that haven't broken any tests (shouldn't have), I'll ci. 10:24
moritz jonathan++
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 } 10:25
To iterate through both of them.
Does that fit with your understanding?
moritz yes 10:26
=$fh2 returns a lazy list in list context
so you're just iterating over lists 10:27
jonathan Yeah
We don't really have lazy lists at the moment, though.
moritz the iterator cludge is just a premature optimization in the absence of lazy lists
jonathan 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. 10:28
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. 10:31
But in some senses, I guess that'd make for a big chunk of lazy lists. :-)
moritz why not just let =$fh return a list of all items, and do the optimizations once we have lazy lists? 10:35
jonathan The problem is that =$fh is context sensitive
moritz and we have no contexts yet
jonathan If I make it return a list of all items, then I break =$fh
We do.
dalek r29840 | jonathan++ | trunk: 10:36
: [rakudo] Implement .eof on file handles, and make IOIterator do something closer to the write thing in item/string contexts.
moritz do we? can a sub determine its context? how?
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=29840
jonathan OK, we don't have *this* piece, but we do have .item, .list and .hash. 10:37
And $(...), @(...)... 10:38
moritz but as long as a sub can't determine its context it feels a bit like fake ;-)
10:41 Whiteknight joined 10:56 lurker joined
nopaste "moritz" at 89.13.199.231 pasted "IO.eof - wtf?" (19 lines) at nopaste.snit.ch/13684 11:01
moritz jonathan: is that "works as designed"? 11:02
jonathan moritz: Works as Parrot is designed, perhaps... ;-) 11:03
I'd have expected it to not have the final line either. 11:04
dalek r29841 | jonathan++ | trunk: 11:08
: [rakudo] Make self work in nested lexical scopes in a method.
diff: www.parrotvm.org/svn/parrot/revision?rev=29841
11:20 ruoso joined 11:41 timbunce joined
jonathan 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. 11:50
12:06 pancake joined
pancake io 12:06
i have generated a callgrind graph of parrot running a perl6 hello world 12:10
this can maybe help to find the bottlenecks 12:11
news.nopcode.org/callgrind.out.7299.gz 12:13
gunzip + kcachegrind <file>
moritz pancake: ERROR 403: Forbidden. 12:15
pancake ^R
moritz works now 12:17
12:24 donaldh_ joined 12:41 rurban_ joined
dalek r29842 | coke++ | trunk: 12:46
: [tcl] revert patch, use 'String' as our object's base class once more to avoid problems. Leave a note.
diff: www.parrotvm.org/svn/parrot/revision?rev=29842
r29843 | coke++ | trunk: 12:47
: [tcl] use our list PMC preferentially, even internally.
diff: www.parrotvm.org/svn/parrot/revision?rev=29843
13:09 gryphon__ joined
dalek r29844 | coke++ | trunk: 13:14
: [tcl] Convert internal usage of String, Integer to tcl PMC variants.
diff: www.parrotvm.org/svn/parrot/revision?rev=29844
13:33 paco joined
jonathan returns 13:58
pmichaud: Awake/around yet? 13:59
14:10 iblechbot joined
masak are heredocs in STD.pm? 14:13
moritz masak: yes, think so 14:15
masak ok
moritz token ws { ... | <.vws> <.heredoc> }
masak the need for them in rakudo isn't pressing (since multiline strings work fine) but would be a nice addition 14:16
so heredocs are parsed as whitespace?
moritz I think it's best to wait for the Big Grammar Refactor
14:20 Andy joined 14:32 gmansi joined
masak moritz: so, tell me more about this Big Grammar Refactor? :) 14:39
does it hurt?
moritz yes ;-) 14:40
masak: the following is 80% speculation...
masak: TimToady refactored STD.pm to handle DSLs by copying the grammar, and modifying the copy 14:41
masak: and since rakudo's grammar follows STD, it might do the same thing
masak aha
moritz masak: also, STD.pm is based on proto regexes, rakudo on simple alternation
pmichaud already announce that he *will* change that 14:42
masak I've heard the term "proto regexes" before, but I don't know what they are
14:42 gmansi joined
moritz it's a bunch of regexes with the same name, but parameterized by a symbol 14:42
and they match as an alternation
so multi foo:sym<a> { <sym> }; multi foo:sym<b> { <sym> }; makes '<foo>' match a|b 14:43
with the small difference that you can add alternatives simply by subclassing, and adding more methods /tokens / whatever 14:44
dalek 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: www.parrotvm.org/svn/parrot/revision?rev=29845
moritz 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<a> { 'c' } # it looks the same in the parse tree, because foo:sym<a> matched, but it actually matched c and not a 14:45
pmichaud pong 14:53
jonathan pmichaud: hi! :-) 14:54
pmichaud: I'm ready to discuss/work on refactoring variable declaration or type registry, if you're free to discuss that first. 14:55
particle 76/142 14:56
purl 0.535211267605634
jonathan pmichaud: Also, got a couple of smaller questions/issues.
particle wow. parallel branch runs configure tests in half the time
jonathan particle: On Win32?
particle ayep
jonathan Nice! 14:57
donaldh schweet.
particle i'm formulating a mail for the list
pmichaud smaller questions/issues might be better first
jonathan 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. 14:58
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. 14:59
I'm not seeing an especially neat way to deal with this.
15:00 cjfields joined
pmichaud try needs refactoring anyway 15:03
I'm kinda waiting for the new exceptions stuff before going too far with that. But we might be able to fix it earlier. 15:04
but actually { something that dies } should probably return a Failure object
jonathan Well, it never gets chance, is the real issue.
pmichaud -or-
15:04 jhorwitz joined
pmichaud try should detect that it didn't get something back from the block, and generate a failure object 15:04
nopaste "donaldh" at 144.254.89.228 pasted "patch for t/doc/pod.t on Cygwin" (23 lines) at nopaste.snit.ch/13689 15:05
donaldh Does anyone want to give ^ a try on another platform? 15:06
jonathan pmichaud: I'm trying the second of those...and failing to find the correct incantation. :-Z 15:07
donaldh The test was complaining on Cygwin because -e pbc_to_exe returns true when pbc_to_exe.exe exists
pmichaud jonathan: where does the null PMC arise, exactly? The argument to prefix:! ? 15:08
jonathan Yes
Ah
Infinoid donaldh: trying on linux/amd64
pmichaud well, if an exception occurs, then we know we get into the catch portion of the 'try' PAST node
donaldh Infinoid++
moritz tries on linux/i368 (32 bit) 15:09
pmichaud try should then wrap the exception into a Failure object and return it.
moritz but the byte lenght shouldn'T make a difference
jonathan Yes, but assigning something back to the register that the result of the block woulda been assigned to, is the tricky bit.
pmichaud ....? 15:10
purl dot dot dot *yawn* dot
pmichaud you lost me there
donaldh Infinoid: I have simplified the test to use -T instead of -e & -B & an additional check for $file . $PConfig{exe}
jonathan $P23 = "_block16"()
We have no way, that I can see, to refer to $P23 inside the catch PIR.
Infinoid donaldh: doesn't seem to break the test here 15:11
pmichaud oh, I think you're just saying that PAST's 'try' block needs better return value handling
Infinoid passes without the patch, passes with the patch.
pmichaud which is entirely possible.
jonathan That would probably be the easiest solution.
donaldh Infinoid: I'd expect that ;-)
moritz donaldh: second test fails with 568 files without DESCRIPTION - is that intended?
donaldh Always did I think.
pmichaud I wasn't dealing with try blocks as rvalues when I wrote the original 'try' code, I don't think.
jonathan Aha, OK.
donaldh I'm not really up for posting a patch to 568 files ;-) 15:12
pmichaud but the entire fail/try/exception system needs a bit of a rework
moritz uhm, why not? ;-)
donaldh s/posting/pasting/
jonathan Would you rather we just leave this until the re-work post-pdd25cx?
Infinoid if you can't paste, post :)
pmichaud I might be able to get that later today
jonathan OK.
pmichaud it's not a hard fix
moritz donaldh: ah, it's marked as TODO, I haven't seen that
donaldh phew. 15:13
jonathan 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. 15:14
cjfields how far off are lazy lists?
jonathan 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.
pmichaud no, .list would be wrong. 15:15
jonathan But then for [1,2,3] { } fails.
Yes.
I found that out. :-)
pmichaud short-term fix would be to update flatten to recognize IOIterator, the way it currently does Ranges (which are also lazy)
jonathan 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...) 15:16
(read everything from it)
pmichaud 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) 15:17
so, if flatten encountered an IOIterator, then it would call .list on it
jonathan The .list method on Range does.
moritz we just need freakin' lazy lists for it, and we need the pdd25cx branch for that
jonathan (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. 15:18
OTOH, it doesn't work at all at the moment...
particle PLEASE TEST THE PDD25CX BRANCH. submit results to the ticket allison posted.
pmichaud ..."hang for $*IN"
?
jonathan pmichaud: for =$*IN { .say }
particle also test hlls with that branch. it'll help it get merged faster.
pmichaud oh, I see. okay. 15:19
dalek 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: www.parrotvm.org/svn/parrot/revision?rev=29846
jonathan 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. 15:20
moritz donaldh++
jonathan s/an/any/
pmichaud jonathan: I think that's just a lazy list. :-)
donaldh What's on the pdd25cx branch?
jonathan pmichaud: Yeah, we'd have done a good part of lazy lists by then, I guess. ;-) 15:21
pmichaud does lazy lists require pdd25cx ?
jonathan Though of course, not for indexing into them.
I didn't know of any lazy list dependency on pdd25cx.
pmichaud me either.
jonathan gather/take may require pdd25cx
moritz donaldh: reworked dependency branch
pmichaud yes, gather/take requires pdd25cx
jonathan But lazy lists more generally don't.
Hmm. I'm tempted to JFII. 15:22
pmichaud so lazy implementations of some functions will require gather/take
moritz then I was wrong - if I had to implement lazy lists, I'd do most if it with gather /take
jonathan 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. 15:23
dalek r29847 | moritz++ | trunk: 15:24
: [rakudo] add more IO tests to spectest_regression
: most of them are TODO right now
diff: www.parrotvm.org/svn/parrot/revision?rev=29847
jonathan Ooh, moritz++
moritz: S16-io/basic-open. 15:25
Missing a t?
moritz jonathan: yes, will fix
dalek r29848 | moritz++ | trunk: 15:27
: [rakudo] fixed typo in spectest_regression.data, moritz--, jonathan++
diff: www.parrotvm.org/svn/parrot/revision?rev=29848
pmichaud I'm thinking about how lazy lists will end up working with ResizablePMCArray 15:30
jonathan In the sense of, is it an "isa" or a "has a"?
pmichaud in the sense of -- how do we make sure everything works correctly when Parrot hands us an RPA instead of a List 15:31
(e.g., :slurpy)
jonathan Could we have a case where that happens and we have an iterator in the list that we should be iterating? 15:32
particle pmichaud: how is that lazy?
RPAs aren't lazy, i mean
jonathan If not, get_iter on ResizablePMCArray can just return its iterator, we iterate it, and it works out, I think.
pmichaud 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 15:33
jonathan True - will that conceivably happen?
particle oh, yeah, you'll probably have to override get_iter
pmichaud jonathan: sure, anytime we use :slurpy
particle mixin a role for that 15:34
jonathan Ah, like we get something like sub foo (*@foo) { ... }; foo(1..10, 20..Inf) 15:35
pmichaud 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
jonathan Yes, but that's blocking on various things, IIRC. 15:36
pmichaud 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.
jonathan .sub 'iterator' :vtable('get_iter') 15:37
That'd probably work.
pmichaud we have to be *very* careful about trying to override get_iter in RPA
15:37 sjansen joined
pmichaud because we'd be doing that for all of Parrot, not just Rakudo. 15:37
jonathan Ah, yes. :-| 15:38
rt.perl.org/rt3/Ticket/Display.html?id=49812 only has rt.perl.org/rt3/Ticket/Display.html?id=56650 as a dependency. 15:39
pmichaud it's the same problem we have with overriding get_string in Object
jonathan Does that mean that the second of those is the only blocker to being able to use .HLL?
pmichaud no
p6object still needs its refactor.
jonathan OK, but I meant Parrot guts issue.
pmichaud I'm not sure if HLL type mapping is working yet for :slurpy 15:40
Coke had a ticket about that recently.
jonathan HLL map of :slurpy's ResizablePMCArrayresolved
It's marked resolved as of 13 days ago.
pmichaud ticket number?
jonathan 56958 15:41
pmichaud looks like there might
be other issues with non-PMC classes, but that's a different test and a
different RT.
(quote from ticket)
jonathan Ugh. 15:42
If we can't use non-PMC classes in the HLL_map, it's a tad useless to us.
pmichaud so, we could at least use a test for that for now. :-) 15:43
just a sec, I'm distracted going over itinerary details for tomorrow's travels
jonathan ok 15:44
particle jonathan: we don't need to do much to get a semantic analysis phase in rakudo (re: 57336) 15:49
heck, we're doing some semantic analysis inside the parse->past code now 15:50
15:50 rdice joined
pmichaud parse->past is the semantic analysis, isn't it? ;-) 15:50
particle hi ho richard!
how's life with baby? 15:51
jonathan I suspect it'd be useful, to have a second "CHECK" phase, rather than tyring to clump it all into one. :-) 15:52
particle yeah
very easy to do 15:53
moritz TGE for PAST-nodes?
particle we can use nqp
jonathan OK, great.
particle see perl6.pir:44 15:54
pmichaud wait, I'm confused. 15:56
okay, I de-confused myself.
I'm not convinced I like the second "CHECK" phase, though. 15:58
but I haven't thought about it that much yet.
but "second CHECK phase" sounds wrong to me.
particle i want a phase for tree-ssa, but that might be after past
pmichaud ...tree-ssa?
particle tree based static single assignment 15:59
gcc does it
pmichaud ...what is that?
particle their tree language is called 'gimple' i think
ssa tracks assignments of variables
it's an optimization strategy 16:00
lemme get you a link
pmichaud does it work in a dynamic language?
jonathan 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. 16:01
particle gcc.releasenotes.org/summit/2003/Tr...ucture.pdf
yes, it's good for dynamic languages
jonathan 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.
pmichaud why does this sound premature to me? ;-)
particle i want to add it as an optimization step to pct
pmichaud particle: this week, this month, this year, ...? 16:02
particle before 1.0
it's not blocking on anything
it can happen anytime
pmichaud no, but spending tuits on it causes other things to block
particle so anybody with tuits can help, if they're not working on anything else
pmichaud 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. 16:03
I thought you were referring to rakudo specifically.
particle no
particle has his parrot hat on
jonathan pmichaud: Got a fix for 56650 16:04
Smoking it now to make sure, there's no collateral damage.
pmichaud okay, great. We were going to fix it by fixing class creation. 16:05
jonathan (that is, don't get exicted yet)
I fixed it in init_pmc insdie the class PMC.
pmichaud 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
jonathan Yeah
I fixed that. 16:06
particle should it always include the hll name, including 'parrot' ? 16:08
pmichaud for now it should never include the hll name 16:09
otherwise we have a lot of stuff to deprecate and repair
particle so how do you tell rakudo's Integer from parrot's Integer? 16:10
pmichaud there's not currently a way to do that. That's a different bug
(looking up ticket number)
particle maybe we should have a special marker to signify that namespace keys should be relative to current hll rather than root 16:11
pmichaud #43419
I think that what is more likely to happen is 16:12
(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 16:13
so what we really end up doing is using mangled names for the HLL-specific classes
such as Perl6Object, Perl6String, etc.
jonathan pmichaud: It passed all tests. 16:14
pmichaud but at least as PCT/rakudo are currently designed, the HLL never really sees a Parrot class name.
particle (sorry, phone)
pmichaud jonathan++
jonathan finally does something successful today. 16:15
pmichaud yay!
jonathan So far I've failed to fix try and failed to fix for =$fh { ... } 16:16
Did implement .eof on file handles, though.
pmichaud well, let's at least make tickets for those that explain the blockers.
dalek r29849 | jonathan++ | trunk:
: [core] Fix RT #56650 (class created from namespace fails MMD).
diff: www.parrotvm.org/svn/parrot/revision?rev=29849
pmichaud or add the blocker information to the tickets.
or make tickets for the blockers, and then link the tickets.
16:16 iblechbot joined
jonathan Do you want me to try and get some custom iterator set up for lists, to try and handle file handles better? 16:17
pmichaud I think I'd rather just implement lazy lists.
masak will 'multi' in a grammar mean 'multi regex' or something, eventually?
jonathan OK, I kinda saw doing that as a step towards lazy lists.
pmichaud I don't think lazy lists need custom iterators 16:18
jonathan They need some kind of iterator.
pmichaud a list can just clone itself.
jonathan OK, in that case the list just is the iterator.
pmichaud correct. 16:19
jonathan senses this will be a big refactor.
pmichaud 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
jonathan Now the MMD bug is fixed, how far do you think .HLL is? 16:20
pmichaud not far. I'll have to re-try my p6object conversion
jonathan OK.
So best to wait on lazy lists until .HLL is done, and we're not getting RPAs? 16:21
pmichaud 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. 16:22
jonathan Hmm. 16:23
When we can't reply on an RPA being fully evaluated, that's really tricky. 16:25
*rely
pmichaud I think the answer is to convert RPAs to Lists when we find them, or at least keep track of when they occur 16:27
jonathan *nod* 16:28
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)
pmichaud the other source of RPAs will be arrays from matches 16:29
although those probably won't be lazy for a while yet
we need to update the roadmap, and make it a little more detailed 16:30
and identify some of these dependencies
jonathan Yes, and probably break down some of the big items too.
* class, role, objects 16:31
* regex, token, rule, grammar
Those two are pretty wide-ranging. We have progress on all of them.
pmichaud 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 16:32
jonathan As in, work out why they skip and list the features we need to get them to pass? 16:33
pmichaud 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.
jonathan Hmm. Did we get rid of #pure? 16:34
pmichaud Schwern submitted a patch that eliminated #pure, yes.
We couldn't find the reason for it.
moritz that slows down autounfudge a bit :/ 16:35
jonathan There goes my easy way of looking through, in one file, which spectests have skips. ;-)
pmichaud 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 16:36
but a good first approximation is ack '/\\#\\?rakudo/' t/spec 16:37
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 16:38
jonathan That's rather useful. :-) 16:39
moritz but it takes quite some time 16:40
pmichaud jonathan: your fix to #56650 isn't the approach I was planning to take.
16:40 Andy joined
jonathan pmichaud: In a, "re-do it another way" kidna way? 16:41
pmichaud I'm just looking to see if I see any difficulties
jonathan OK
What were you planning?
pmichaud to fix lines 191-212 16:42
which is where the bug _really_ is.
jonathan Hmm 16:43
That would work to, I think.
pmichaud the problem is when init_class_from_hash gets called with a namespace argumnent
jonathan Yes, I see...
OK, done, smoking 16:48
pmichaud #parrotsketch in 98? 16:52
jonathan 'twas a vintage year. 16:54
pmichaud: Working on making list of features used in spectests to go in the roadmap. 16:55
pmichaud excellent.
I'm going to have to run errands in a bit.
jonathan OK
I noticed STD.pm has some type registry stuff in it.
pmichaud 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)
jonathan I figure doing something very similar is a good approach. 16:56
Plenty of noise-emitters!
pmichaud STD.pm has type lookups, does it have anything else?
jonathan 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
jonathan Which is called from a few places.
pmichaud I hadn't noticed that. what sub?
jonathan add_type 16:57
particle i'm disappointed to see #pure go away without discussion that involved me
(or moritz)
jonathan Oh, actually it's a method.
Though it never touches the invocant, or any attributes, so it may as well have been a sub.
pmichaud particle: it's an easy revert. 16:58
I didn't feel like arguing the point much with schwern.
especially since I wasn't sure why they were needed either
particle well, for example, to run a test as pure even though it has #?rakudo markers in it 16:59
pmichaud as part of spectest_regression? 17:00
particle sure, or localtest
pmichaud I can't imagine ever wanting to do that in spectest_regression 17:01
afaik we didn't take out the capability to have #pure in localtest
particle ok, i haven't reviewed the patch, so i don't know the extent of the changes
or whether they're right or wrong
pmichaud the main point of the patch was to enable "make t/spec/S29-num/foo.t" 17:02
which runs a single test
(fudging as needed)
particle what does that have to do with #pure?
pmichaud why do we need #pure in the first place? 17:03
particle the idea:
dalek r29850 | jonathan++ | trunk:
: [rakudo] A different fix for the class created from namespace and MMD bug.
particle tests may optionally be marked as #fudge or #pure...
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=29850
particle the default (for now) is #fudge...
pmichaud 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 17:04
jonathan: we might need to ask TimToady about that
particle but the user can override the behavior of fudge by specifying #fudge or #pure in the .data file.
pmichaud 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. 17:05
particle if it's in one data file, why not all?
jonathan pmichaud: You mean add_type?
particle i'd like to be very specific in spectest_regression. once they're all pure, we don't need fudge
pmichaud 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"? 17:06
particle we don't *need* no specify the flag in spectest_regression
pmichaud jonathan: yes, add_type
particle oh, wait. did the patch simply remove the flags from the data file?
pmichaud 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. 17:07
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 17:08
particle fudge is a preprocessor. i don't trust it.
i want the ability to override
pmichaud I don't think we need the ability to override in spectest_regression 17:09
particle fine with me
pmichaud especially if "fudge" is the default
in localtest.data, I think overriding makes sense
particle well, that can be easily changed
(fudge as default)
pmichaud I don't think we'll ever switch spectest_regression from having fudge as its default 17:10
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'. 17:11
particle depends on the percentage of files that run pure in spectest_regression, i think 17:12
if more run pure, that should be default 17:13
17:14 cjfields_ joined
pmichaud but fudge already leaves files as 'pure' if there isn't any fudging taking place 17:15
moritz I liked the pure marking, but I can live without them 17:16
particle if there aren't any '#?rakudo' markers, it leaves it as pure, yes
no matter.
spectest_regression can live without the markers. 17:17
17:17 DietCoke joined
moritz then we might just as well delete tools/fudge_purity_inspector.pl 17:17
particle unless we use it for other localtest 17:18
17:18 cjfields joined
particle s/other// 17:18
pmichaud we could certainly modify test_summary.pl to report the fudged/pure tests
particle svn diff -c 29782
it does remove #fudge/pure mark detection entirely 17:19
pmichaud feel free to add it back in... but I do like schwern's overall option handling better 17:20
the decision to have global fudge/pure should come from the --fudge option 17:21
if --fudge, then default all tests to being fudged
if no --fudge, then default all tests to being pure
particle there's no way to run a single test without fudge, as schwern has it 17:22
moritz ../../parrot perl6.pbc path/to/test.t # ;-/ 17:23
pmichaud 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 17:26
if ($do_fudge) { @tfiles = fudge(@tfiles);
}
17:31 chromatic joined
jonathan pmichaud: I'm thinking this test is not right: 17:31
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?)
pmichaud correct, method fallback to sub is gone 17:32
(per TimToady at OSCON)
particle yep
pmichaud actually, it was pre-OSCON, because I even committed a Synopsis patch to eliminate it.
jonathan OK
Will eliminate the test.
pmichaud there are a lot of those.
okay, lunchtime for me. 17:34
bb in 56 for #ps
jonathan kk
Tene ocrap #ps. 17:36
QUICK I NEED SOME COMMITS 17:37
svn rm languages/tcl
moritz lol
cotto you can misspell something and then fix it
that'd give you two
moritz it would "solve" some of the pdd25cx problems (svn rm languages/tcl)
DietCoke_afk wonder why everyone always hates on tcl. 17:40
chromatic It was a slow Lisp with weirder syntax for a long time.
DietCoke ... fine, "partcl" 17:41
Tene DietCoke: I wasn't picking on tcl, I was picking on you. 17:42
DietCoke as penance, where's my patch?
Tene Um... hey, look, cardinal has a failing test! 17:43
I should go fix that!
particle thinks tene owes dietcoke a dinner
Tene Well, I will be in NYC in a couple of weeks. 17:44
Infinoid gives DietCoke a free patch 17:46
dalek r29851 | infinoid++ | trunk: 17:47
: [tcl] Fix trailing whitespace.
diff: www.parrotvm.org/svn/parrot/revision?rev=29851
DietCoke NYC is a bit of a haul for dinner. =-) 17:50
dalek r29852 | tene++ | trunk:
: [cardinal]
: * Track a change in P6Object for calling methods on the metaclass.
diff: www.parrotvm.org/svn/parrot/revision?rev=29852
Tene DietCoke: but it would be *free* dinner! 17:51
DietCoke You probably don't have anything I can eat. :| 17:54
Infinoid++
purl, 236.5-205 17:57
purl 31.5
DietCoke purl, 31.5/77
purl 0.409090909090909
moritz pmichaud, jonathan, particle: anybody motivated to review RT #56700 ? 17:58
Tene We really need to persuade one of the bots to provide links for ticket numbers. 18:01
Infinoid I could write a dalek script for that 18:02
DietCoke someone did that and it was booted as being too spammy, as I recall.
jonathan moritz: I think that one has been discussed some, and some PCT changes for namespaces are forthcoming to make this possible.
DietCoke (perhaps because it failed spammily)
Infinoid was that Whiteknight's bot?
moritz jonathan: ok, thanks
cotto I thought it was booted for being too spammy for other output
moritz another one I'm looking at: RT #57068 18:03
it seems to duplicate effort, and use '!EXPORT' instead
nopaste "Infinoid" at 96.238.213.50 pasted "[PATCH] silence some "switch missing default case" warnings" (88 lines) at nopaste.snit.ch/13690 18:04
Infinoid DietCoke: any objection to that nopaste? I doubt it adds any value, but it silences some warnings.
particle the ticket links exist on the irc log moritz runs, right moritz?
moritz particle: yes 18:05
jonathan 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.
Infinoid DietCoke: hmm, and causes some test failures. Guess you're relying on silent passthrough for those switch statements 18:06
DietCoke Infinoid: where are the failures, t/cmd_binary ? 18:10
Infinoid lots of places. far more failures than there were without the patch
moritz 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 :)
dalek 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: www.parrotvm.org/svn/parrot/revision?rev=29853 18:11
DietCoke ah, many places. (gentler) hokay.
jonathan 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. ;-)
DietCoke anyone looking to play with PCT, a tcl conversion would not be unwelcome. =-)
(well, a patch. I don't want to lose .HLL yet.) 18:12
bah. nevermind. if you're bored, check the the TODO file. ^_-
Infinoid there are a few failing tests here in partcl, even without my patches. are those known failures? 18:13
or is everything expected to work?
DietCoke everything is expected to work. 18:14
What's failing for you?
dalek r29854 | coke++ | trunk: 18:15
: [tcl] use more truth.
Infinoid I'll paste that in a moment
dalek diff: www.parrotvm.org/svn/parrot/revision?rev=29854
nopaste "Infinoid" at 96.238.213.50 pasted "[PATCH] silence some "switch missing default case" warnings (gentle version)" (82 lines) at nopaste.snit.ch/13691
moritz jonathan: has method fallback been oficially removed yet? 18:16
nopaste "Infinoid" at 96.238.213.50 pasted "partcl test results (3 failed scripts)" (103 lines) at nopaste.snit.ch/13692
DietCoke ok. note that the lsort failure is a non-failure. 18:18
the other two, looks like runtime/builtins/join is not compiling for some reason.
Infinoid I am doing a fresh build after svn update
jonathan moritz: Yes. 18:19
19:32 <@pmichaud> correct, method fallback to sub is gone
19:32 <@pmichaud> (per TimToady at OSCON)
DietCoke 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.
moritz so not in the specs yet :/
jonathan 19:32 <@pmichaud> actually, it was pre-OSCON, because I even committed a Synopsis patch to eliminate it. 18:20
So if there is any remaining references in the synopses, they should be reported.
moritz jonathan: I get a test failure in S02-builtin_data_types/range :( 18:21
DietCoke Infinoid: try now. 18:22
dalek r29855 | coke++ | trunk: 18:23
: [tcl] add in missing namespace/HLL directives ; depending on how runtime/builtins.pir gets generated, these could have broken the runtime. (infinoid++)
diff: 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: www.parrotvm.org/svn/parrot/revision?rev=29856
moritz I commited it wihtout change because the duplicate code isn'T really much 18:24
dalek r29857 | moritz++ | trunk: 18:25
: [rakudo] implement sprintf. Patch courtesy of Carl Mļæ½sak <cmasak at gmail.com>
: masak++
diff: www.parrotvm.org/svn/parrot/revision?rev=29857
jonathan moritz: Oh? That's odd... 18:26
C:\\Consulting\\parrot\\trunk\\languages\\perl6>perl t\\harness t\\spec\\S02-builtin_dat 18:27
a_types\\range.rakudo
t\\spec\\S02-builtin_data_types\\range....ok
chromatic #ps in 3
moritz 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)
jonathan Hmm
moritz let me try again 18:28
particle moritz: perhaps remove t/spec and regen?
Infinoid DietCoke: looks like cmd_join.t worked, waiting for the rest of it...
jonathan moritz: Even doing a clean run of spectest_regression, t\\spec\\S02-builtin_data_types\\range...............ok
moritz now cleaning and trying again 18:29
jonathan And no local patches.
moritz perhaps it was a local fuckup
jonathan OMFG SWEARING
;-)
pmichaud back
jonathan pmichaud: Checked in a bunch of stuff to ROADMAP. 18:30
Tene OY?G
Infinoid DietCoke: all passed, except for the cmd_lsort continuation weirdness.
DietCoke ok. that is expected.
chromatic #ps time
DietCoke (and sadly, not fixed by pdd25cx)
pmichaud #56700: the patch doesn't really follow STD.pm
Infinoid assuming they don't break anything, any objection to the (gentler) default cases patch?
DietCoke Infinoid: no, removing warnings good. 18:31
Infinoid great, retesting now.
pmichaud I thought we already had sprintf in Rakudo?
(r29857) 18:32
paco seems that make spectest_regression stopped to work (at least for me) 18:33
En la revisión 21616.
/usr/bin/perl t/harness --fudge --keep-exit-code --tests-from-file=t/spectest_regression.data <--- sleeps here ..
dalek r29858 | infinoid++ | trunk: 18:35
: [tcl] Fix some "switch missing default case" warnings.
diff: www.parrotvm.org/svn/parrot/revision?rev=29858
chromatic "enlightening conversation" means "why version numbers are stupid" 18:36
moritz lol
18:37 cjfields_ joined
DietCoke sees that particle has already taken over. 18:38
DietCoke wanders away, then.
paco NotFound: #ps 18:40
18:42 purl joined
cotto paco: #parrotsketch 18:44
18:48 Ivatar joined 18:49 confound joined 18:52 purl joined
cotto patch monster? 18:53
Infinoid reviewer and committer of other people's patches 18:59
pmichaud I think that #44471 can be rejected. 19:04
DietCoke I think the only reason to use :anon with a :vtable was so you could also use :method, neh? 19:07
(and now that you don't need to do that, I don't see a point to :vtable :anon)
chromatic Right.
pmichaud I think the original post was expecting to use the sub name
with the changes discussed on saturday, though, it'll be a non issue 19:08
(because :vtable implies :anon)
DietCoke ... there were changes discussed ?
pmichaud yes.
particle they'll be in allison's coming commit of pdd19
pmichaud I thought it was already committed
I know I reviewed something.
maybe it was just a m/l message 19:09
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
pmichaud RT #53302 19:13
jonathan afk for 15 mins or so - dinner 19:14
pmichaud anyway, I suspect the current way to create an anonymous vtable entry is .sub "" :anon :vtable('get_integer') 19:16
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. =-) 19:17
moritz 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 19:22
it seems to expect input from STDIN
pmichaud as in "stops running?"
it doesn't process any tests?
moritz as in "last output that I see untild I press Ctrl+D" 19:23
pmichaud this is from the 'make spectest_regression' target?
moritz yes
pmichaud but it happens only sometimes?
odd.
moritz it happens the first time after a clean checkout or other serious changes 19:24
when I hit Ctrl+D once, it runs fine on the next invocation
pmichaud sounds like it's missing a file or directory or something 19:25
moritz yes, but they all exist 19:26
try 'rm t/spec/S02-builtin_data_types/range.rakudo; make spectest_regression' - does that work for you? 19:27
pmichaud I'm not at a point where I can easily test :-( 19:28
moritz :/
pmichaud I can get there in about 15 mins though
moritz I'll test a few more things here locally 19:29
jonathan moritz: Trying deleting that file, and giving it another run 19:30
Will let you know what I see 19:31
moritz 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? 19:32
jonathan t\\spec\\S02-builtin_data_types\\range...............ok 22/79 skipped: various reasons 19:34
Hmm
I need to grab something quickly from the supermarket before it closes - back soon...
dalek r29859 | allison++ | trunk: 19:36
: [pdd] Architectural review of PIR PDD.
diff: www.parrotvm.org/svn/parrot/revision?rev=29859
DietCoke someone please open a ticket for this new deprecation note: 19:41
{{DEPRECATION NOTE: PIR will no longer support the old PASM-style syntax
for registers without dollar signs: C<In>, C<Sn>, C<Nn>, C<Pn>.}}
(and add the ticket # back into the PDD)
dalek r29860 | allison++ | trunk: 19:42
: [pdd] Resolving a few more TODOs in the PIR PDD.
diff: www.parrotvm.org/svn/parrot/revision?rev=29860
DietCoke and this: 19:43
=item .HLL <hll_name>, <hll_lib> [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.)
dalek r29861 | allison++ | trunk: 19:47
: [pdd] Launching the PIR PDD out of draft.
diff: 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. 19:48
and outstanding questions.
particle take a look at the io pdd
DietCoke ... doesn't mean we should -keep- doing that. =-) 19:49
chromatic Some questions we can't answer until we have some implementation. 19:57
pmichaud moritz: I get the hang on spectest_regression also (on fresh checkout)
jonathan back 19:59
Do you know where it's hanging?
pmichaud at the do_fudge step in the harness (still probing) 20:00
jonathan OK 20:01
I'd help, but I can't reproduce it here.
pmichaud it's hanging in fudgeall 20:02
oh wait 20:04
it might not even be getting there 20:05
okay, it's getting there, and hanging when fudging range.t 20:06
particle if only we could skip it with #pure or something ;)
see what make t/.../range.t does
moritz just calling ./fudge rakudo S02-builtin_data_types/range.t doesn't hang, though 20:07
pmichaud it's actually calling fudge --keep-exit-code rakudo t/spec/.../range.t 20:08
jonathan Hmm. 20:09
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?
moritz jonathan: but whatever you did to that poor file, why on earth should fudge start to hang? 20:10
20:10 paco joined
moritz valid directive, but not true 20:10
pmichaud fudge _does_ do while (<>)
moritz it *is* in the spec, and defined to be the empty range
jonathan 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. 20:11
moritz jonathan: oh, I thought you meant 4..1
jonathan No, it means .reverse method
My comment maybe shoulda had a "." in there to make things clearer.
pmichaud I've been trying to use "Range.reverse" 20:12
moritz I see that TimToady used quite some <> magic :/ 20:13
jonathan moritz: Where? 20:14
Oh, in fudge?
moritz jonathan: in fudge
@ARGV = ($IN);
so all should be well if $IN is what we think it is 20:15
pmichaud for some reason the while (<>) isn't seeing @ARGV
if I print @ARGV just before the while (<>) ... it's correct.
moritz I don't even get to the first debugging print statement I made :( 20:16
pmichaud moritz: are you printing to STDERR ?
moritz no, that's the problem 20:17
pmichaud 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 20:18
moritz uhm, should reading from <> empty @ARGV? 20:19
pmichaud @ARGV isn't empty, when I run it.
i.e., I'm actually getting lines from range.t
moritz I added a few 'warn Dumper \\@ARGV' lines, and it's empty sometimes
jonathan This isn't because you #? has to be in the leftmost column? 20:20
*the
pmichaud it shouldn't matter
jonathan I thought not.
pmichaud but there's something about the #?rakudo skip lines that fudge doesn't like 20:21
commenting out the first causes me to hang on the second
moritz is $ARGS tied to @ARGV somehow? 20:23
no, that was $ARG
pmichaud it's something to do with the skip lines jonathan added.
if I take them out, processing works fine.
jonathan I removed one and added one, I believe. 20:24
pmichaud # #?rakudo 2 skip '.reverse on ranges'
20:24 AndyA joined
pmichaud ...how about that one? 20:24
jonathan (The one I removed covered both some tests that passed in Rakudo and some that failed)
pmichaud # #?rakudo skip 'XXX test error -- result should be undef?'
those are the ones that are causing issues for fudge
Auzon Those aren't recognized by fudge, I think 20:25
jonathan It was around the .reverse that I did the changes.
pmichaud Auzon: ...?
purl Yada yada yada hasn't been implemented yet! (unless you run bleadperl)
jonathan The entire block "# simple .to, .from" before was marked as skip
I moved the #?rakudo directive inside the block and tweaked the number. 20:26
Auzon pmichaud: Fudge requires the ? right after the # mark or it's just a comment
jonathan (since .from and .to work)
pmichaud 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. 20:32
bbiaw
jonathan OK
I have another update to that file anyway (removing one of the fudge directives, since I've made more tests pass) 20:34
dalek r29862 | jonathan++ | trunk: 20:49
: [rakudo] Make range smart-matching accept the same or equivalent range as well as a single value within the range.
diff: www.parrotvm.org/svn/parrot/revision?rev=29862
moritz in ROADMAP, Make junctions in boolean context return a junction of True/False 20:52
is that actually correct?
if you do this, 'if "a" eq any(<a b>)' and 'if !"a" eq any(<a b>)' will both be true 20:53
jonathan Doens't !"a" do prefix:! on "a"? 20:55
moritz I'd expect it to have a low precedence
anyway, I meant !("a" eq any(<a b>) 20:56
jonathan OK
Comment was based on comment from pm in RT#56630, but I may have mis-understood
I see your point. Hmm. 21:00
Think is that we should be able to rely on auto-threading to carry us through.
if !("a" eq any(<a b>)) -> if !(any("a" eq "a", "a" eq "b")) -> if !any(True, False) -> if any(False,True) 21:01
-> True 21:02
Hmm. :-S
21:03 donaldh joined
moritz "Collapsing to a single 21:04
true/false value should happen when a Junction is used in a boolean context."
jonathan Yeah
Oh
! enforces boolean context
moritz prefix:<!> actually does provide boolean context 21:05
jonathan !any(True, False) -> !True -> False
21:06 teknomunk joined 21:13 paco left 21:17 paco_ joined
jonathan gets at least another 36 spec tests to pass with an implementation of infix:=== 21:18
moritz YaY
jonathan t\\spec\\S03-operators\\value_equivalence............dubious Test returned status 1 (wstat 256, 0x100) after all the subtests completed successfully 21:22
moritz: Seen this before? Any ideas?
moritz jonathan: yes, in other tests
jonathan It gave all tests successful with perl t\\harness 21:23
moritz jonathan: usually some GC f*ckup
jonathan sh*t.
dalek r29863 | allison++ | pdd25cx: 21:24
: [pdd25cx] Bringing the pdd25cx branch up-to-date with trunk r29862.
diff: www.parrotvm.org/svn/parrot/revision?rev=29863
jonathan Oh, no, it does the same with t\\harness too; I'd run it with perl6.pbc before
particle is it fudged? 21:25
jonathan particle: Yup
particle all fudged tests return 1
even if all tests pass
jonathan particle: OK, but normally in spectest_regression you don't then get a warning about it. 21:26
particle yes, because of --keep-exit-code
or whatever it's called
jonathan Right. But I'm getting the "dubious" in running spectest_regression
particle ah.
:(
jonathan And it doesn't segfault or anything when run under the debugger. 21:28
Just says it exited with code 1
chromatic Something sets the exit code then.
T*::Harness expects that an exit code of 0 means everything's okay. 21:29
Anything else indicates some form of oopsie.
moritz jonathan: did you try to run the .rakudo manually?
jonathan 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. 21:30
chromatic The harness doesn't know that 1 means everything's okay. 21:31
jonathan chromatic: The harness used in make spectest_regression is modified to know that 1 means that. 21:32
dalek r29864 | Whiteknight++ | gsoc_pdd09:
: [gsoc_pdd09] update to trunk r29862
diff: www.parrotvm.org/svn/parrot/revision?rev=29864
chromatic Alright then.
jonathan 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. :-(
pmichaud what's the spec that gives rise to r29862? 21:34
particle what happens if schwern's patch is reverted?
21:34 Debolaz joined
pmichaud (equivalence of ranges) 21:34
(dubious): I get that a lot in the test harness 21:35
dalek r29865 | jonathan++ | trunk: 21:36
: [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: www.parrotvm.org/svn/parrot/revision?rev=29865
21:37 iblechbot joined
jonathan pmichaud: It was in the spec test, and looked familiar; now I go look at the spec, I don't see it. 21:38
pmichaud 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.
jonathan I was probably thiking of "Array Array arrays are comparable"
pmichaud but Range != Array
jonathan Oh, sure.
pmichaud I think we have to be a little bit pessimistic about assuming the spectests are correct
jonathan I wasn't saying that makes it correct, just what I was probably thinking of. 21:39
pmichaud can we get a p6l clarification or attach a ticket to get one?
jonathan 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. 21:43
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? 21:44
(all un-fudged tests, that is)
pmichaud 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 21:45
jonathan OK
pmichaud (RT#56630): My primary point about boolean context was simply that the comparison operators currently in Junction.pir are wrong. 21:46
jonathan In that they should return a junction? 21:47
pmichaud yes
jonathan Makes sense.
pmichaud 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
jonathan That involves writing out own dispatcher. :-) 21:48
pmichaud 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
jonathan Junctional invocants = $junc.foo? 21:49
pmichaud yes.
jonathan I think you that's always a call on Junction.
moritz that's what i'd expect too
jonathan Otherwise, $junc.values maybe doesn't work.
pmichaud right
but that's not what TimToady answered
jonathan Oh, damm.
:-S
pmichaud because it means we can't do (1|2).exp 21:50
jonathan Hmm
pmichaud so we were speculating about something like $junc.JUNCTION.values, similar to VAR on scalars 21:51
jonathan 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.
Whiteknight I would rather it be consistently not ugly :) 21:52
jonathan (and easy to implement...)
pmichaud autothreading method calls over junctions sounds... interesting, though.
jonathan With a custom dispatcher, I'm not thinking it'll be too horrible. 21:53
pmichaud 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.
jonathan Yes...
pmichaud anyway, it also means that most of the existing spectests that do $junction.values or $junction.pick are wrong. 21:54
jonathan Actually, it may not be so bad. Because $j.foo will call foo on Junction.
And then it can hit the fallback
pmichaud there is no fallback.
jonathan (because There Is No Foo)
pmichaud method fallbacks are gone now.
jonathan As in, the Perl 6 equivalent to AUTOLOAD
pmichaud yes, I was thinking it'd have to be autoload-ish.
jonathan Which sees the name, and gets the parameters.
And threads the call through the values in the junction. 21:55
We don't have a nice way to do AUTOLOAD style thing in Parrot right now.
pmichaud how does one do autoload-ish stuffin Parrot?
oh.
you answered my question as I was typing it :-)
jonathan We could either teach Parrot how to do it (by doing Stuff in find_method)
pmichaud surely it's been considered already, though?
jonathan Or stick it in our custom dispatcher.
find_method can return the AUTOLOAD on failing to find anything. 21:56
pmichaud right.
or dynamically generate a method :-)
jonathan But they you have the slightly tricky issue of, how does it actually get the name of the thing we originally planned to call...
pmichaud if we dynamically generate the method we can put it in there :-) 21:57
jonathan Mwaha. :-)
Dynamically generated bytecode. :-)
pmichaud I wonder if there's a way for a method to determine how it was invoked? (i.e., what name was used?) 21:58
that would make it easier.
jonathan 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) 21:59
It's also the same reason that find_method currently can't do MMD, and we thus invoke on the multi.. 22:00
(The args ain't promised to be available, at find_method time)
pmichaud ...but methods are invoked with callmethodcc, not invoke
it's not the same
subroutine calls are invoked using find_name_not_null + invoke, yes. 22:01
method calls are invoked using callmethodcc, which has the name as part of the invocation
jonathan OK, but the callmethodcc op does a find_method, and then an invoke inside.
pmichaud okay. but we could potentially squirrel away the invoke name somewhere.
jonathan 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. 22:02
pmichaud 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')
jonathan Does that not do the right thing now? 22:03
pmichaud currently it expects $P0 to be an invocable PMC
jonathan Ah.
That could make some code neater.
pmichaud yes, that's why I asked for it.
and she said "oh, I was about to ask you about that as well." :-)
jonathan :-) 22:04
Will Allison be at YAPC::EU, do you know?
pmichaud same for sub invocation -- i.e., $P0(...) when $P0 is a String
yes, she's at YAPC::EU
jonathan Cool.
pmichaud she's even planning to attend the hackathon, remember? ;-)
jonathan I'm starting to think I already knew this... ;-) 22:05
pmichaud (from email, about dates when we would be there for pre/post-yapc hacking)
jonathan Oh, yes!
pmichaud :-D
that may be a _really_ good time to get all of our dispatch and parameter issues worked out 22:06
including mmd
jonathan 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.
pmichaud that would be excellent. 22:07
jonathan So at least the algorithm is nice and clear.
pmichaud I think that would be extremely wise.
I also think it will yield big dividends when we get to implementation
jonathan Yes, agree. 22:08
Also, Parrot needs to be able to HLL_map MultiSub.
pmichaud that sounds really.... scary
but I don't disagree. 22:09
jonathan Not really - I think in fact the MMD PDD requires it.
pmichaud oh, in that case I'm less scared.
jonathan "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. 22:10
pmichaud oh yes, of course.
that works for me then.
jonathan 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.
pmichaud I can do that, yes.
jonathan If you can't, I can work around this.
We also need to think a bit on signatures at some point too. :-S 22:11
pmichaud correct
jonathan Last time we tried that, we got kinda bogged down.
pmichaud 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 22:12
jonathan I think, because I was primarily interested in them being introspectable data, because that's what I need for MMD.
pmichaud do you need them more introspectable than simply arity and types of args?
jonathan No.
Well 22:13
Yes and no. :-)
pmichaud so :multi is sufficient as a first cut?
jonathan I'm struggling to think of a good way to get enough information into multi.
pmichaud well, that's why I said "first cut"
jonathan There can be many constraints.
pmichaud however
jonathan Which may be class or role names, etc.
22:14 ruoso joined
pmichaud I'm starting to think that for Rakudo we should just have a Junction of constraints, and have the dispatcher smart-match against that 22:14
jonathan The MMD algorithm requires a bit more of us than "is it a match"
pmichaud agreed 22:15
where's the Perl 6 mmd sort speced?
jonathan First, we need to consider classes and roles, and we use constraints (subset types) later.
S12
pmichaud okay, I'll need to re-review that
jonathan Starts at heading "Multisubs and Multimethods"
pmichaud 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. 22:16
(it may be that we cannot, but that's what I'd like to shoot for to begin with)
jonathan 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. 22:17
pmichaud 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 22:18
jonathan 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)
pmichaud 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.
jonathan We already created one of those and called it lexid, but it seems it could be more widely applicable. 22:19
pmichaud basically :lexid is almost equivalent to "longname"
jonathan Also, lexid is not generated until POST-time.
pmichaud I did that as a short-term measure 22:20
there's nothing to prevent :lexid from being part of the PAST
jonathan 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.
pmichaud it's the same approach that gets used now for anonymous subs
jonathan Yes, to PAST, as you mentioned.
pmichaud PAST doesn't contain a name, but the POST generates one.
jonathan OK. 22:21
But Rakudo could feasibly generate the names.
pmichaud correct
and :lexids
jonathan Right, which is what we're interested in here.
pmichaud which is why I think that :lexid might be more correctly thought of as a longname equivalent
jonathan Then the missing bit of the puzzle, is a lookup by lexid.
pmichaud ....and a way to do that efficiently. :-) 22:22
jonathan Yeah. :-|
Thing is, we kinda want a hash of lexid => sub
But we only care about having it at startup.
pmichaud I wonder if the Eval PMC could help here 22:23
since the Eval PMC has an array of Sub PMCs
jonathan 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.
pmichaud yup 22:24
jonathan 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.
pmichaud yes, that has some possibilities 22:25
jonathan Oh
But the Eval PMC ain't available in the :init :load?
pmichaud currently, no, but we might be able to fix that as well.
jonathan Even in the PBC version?
pmichaud I really have to get the whole :init/:load process mapped out 22:26
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"
jonathan 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. 22:27
And if we're loading a PBC, will contain the Sub PMCs we compiled and had in the PMC.
pmichaud 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
jonathan Yes. I wasn't using them so much for this purpose, though.
pmichaud but it's very handy for building the signature object we need
instead of building it at load time 22:28
(assuming we can get a reasonable representation.)
jonathan 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.
pmichaud yes, we can certainly do that. 22:29
jonathan Once we get issues with :immediate in Parrot straightened out.
(Which evidently exist, since they're geting in our way...)
pmichaud Anyway, I hate to rush off but I have to get some other stuff done today.
jonathan Well, in your way. :-)
pmichaud I _should_ have some Parrot hacking time tomorrow. After that it's spotty until August 9th
jonathan 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. 22:30
pmichaud my time tomorrow will be early (before noon localtime) -- after that it's off to the airport
jonathan Vacation?
purl 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.
pmichaud yes, vacation 22:33
purl 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
jonathan Nice. Enjoy. :-)
jonathan rests - report tomorrow 22:37
Tene 'night 22:39
23:34 cesar joined
cesar Hi 23:36
It seems the code for Software Transactional Memory remained almost the same since 2006 23:37
I'm a MSc student with interest in parallel computing
and I would like to contribute ... 23:38
is there anyone here who had worked on that?
23:39 cesar joined
cotto cesar, if nobody here can help you right now, you can subscribe to parrot-porters and ask there. 23:41
cesar cott: ok, I'll try it, thanks 23:42
cotto the amount of activity on #parrot varies greatly 23:43
Whiteknight cesar, what suggestions do you have about the STM system? 23:45
I'm peripherally familiar with it 23:46
cesar I would like to begin testing another approaches described in literacy 23:50
Whiteknight 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 23:51
Although if you wrote up an alternative, you could separate it with an #ifdef
cesar I started by reviewing the code, and the paper the implementation is based on, just beginning with it 23:55
Whiteknight I'm not as familiar with stm as I would like. I'll have to read that paper myself 23:56
Actually, if you understand that file pretty well, it needs a lot of function-level documentation 23:57
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 23:58
cesar 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 23:59