parrot.org/ - clean up those smolders for the release!
Set by moderator on 20 October 2008.
jonathan Here we'd only ever invoke trait_auxiliary:is one time. 00:00
pmichaud just one time?
jonathan Right.
pmichaud isn't it once per activation?
jonathan See discussion I had on #perl6 yesterday with TimToady for more. :-)
But it seems that since traits are a compile time thing, they actually more act upon the thingy at compile time. 00:01
pmichaud my eyes glazed over a bit first time I looked at it.
jonathan At the discussion on #perl6?
pmichaud yes.
I can look again.
jonathan I'm still trying to work out what it really means.
pmichaud I think (naively) that we compile the trait once at compile time but apply it on every @x that gets created. 00:02
in the Parrot sense I think of it like a PMC property.
jonathan What do you mean by "compile the trait"?
pmichaud in this case, the fact that we have a certain type of dimension 00:03
but I _really_ need to read the discussion and traits a bit more
jonathan Or maybe the real question here is, what do we pass to trait_auxiliary:is
pmichaud because I know very little of what I'm saying here :-)
jonathan Obviously, one parameter is the "dim"
pmichaud ...what do we pass, and when do we pass it?
jonathan But the other? On the one hand, it could be the PAST::Var node, which can then tweak the viviself to actually contain the code to set the dimensions. 00:04
pmichaud (I'm glad we're talking about traits here and not food :-)
jonathan ewwww...
purl ewwww is, like, tp's middle name
pmichaud I'm actually planning to do this for parameters.
jonathan looks at his chips and salsa with less hunger now
pmichaud i.e., that trait applications are part of the PAST::Var node.
jonathan OK. I think that is the Right Thing.
pmichaud that's why viviself is created the way it is :-)
jonathan Yes. We dispatch to trait_auxiliary:is during compile.
OK, discussing this is starting to make it feel less scary and more workable. :-) 00:05
pmichaud in particular, the setproperty opcode is going to be set up so that it returns its first argument in the PAST tree
i.e., it's like getting a :scope('register') node for free
so I can do 00:06
PAST::Op.new(:pirop('setproperty'), PAST::Var.new( ... ) )
and the "result" of that is the PAST::Var node with the property set on it.
jonathan Ah.
I'm not sure if that works unless trait_auxiliary:is returns something? 00:07
pmichaud same for other "set" opcodes that don't normally return a value
we'll see how it goes :-)
jonathan I mean, I'm thinking here we want to write something like
00:07 kj joined
jonathan role rw { multi sub 'trait_auxiliary:is'(rw $, PAST::Var $var) { ...something involving $var.viviself... } 00:08
} 00:09
So the dispatch to trait_auxiliary gets the Var node and is able to tweak it somehow to set up the rw semantics.
00:09 AndyA joined
pmichaud I think we can do that. 00:10
00:10 bacek joined
kj has dates confused and missed #ps 00:10
pmichaud or something like that.
jonathan OK.
I think that's what needs to happen.
pmichaud I'd like to leave that for a medium-term goal.
(i.e., as part of your grant)
short term I'd like to get some of the other class/method refactors in place.
jonathan looks terrified 00:11
Sure
pmichaud and clean up parameter handling a bit. it may be that the traits falls out naturally from that, if so we can do it then.
this is all starting to look very good.
jonathan Sure, if we can do it like that, great. If not, let's at least try and do something that doesn't make it harder to do that later.
pmichaud absolutely
I'm sure the refactors will all make this much easier
that's been the general case
jonathan Sure. 00:12
pmichaud oh, for MAIN -- I'm thinking maybe we could do better by introducing a !MAIN subroutine
?
jonathan But sometimes you have to do it the Other Way first to know the refactor.
pmichaud rather than building it into the AST
i.e., the AST simply makes a call to !MAIN (passing args array) and it does the rest?
jonathan That may work.
If smaller AST is a goal. 00:13
pmichaud well, that means less generated code, mainly
jonathan Sure
pmichaud and simplifies actions.pm, which is a goal. 00:14
jonathan Yes, it's compilation time is creeping up...
pmichaud well, not just that, but also trying to keep it somewhat understandable.
anyway, I have to go
jonathan OK, sure, cu 00:15
pmichaud see ya soon
nopaste "japhb" at 76.191.190.8 pasted "Demo of Parrot and Rakudo problems, from crashers to mere annoyances" (132 lines) at nopaste.snit.ch/14542 00:19
dalek r32568 | japhb++ | trunk: 00:23
: [OpenGL] Perl 6 examples fixes
: * Don't exit() from a callback.
: * shapes.p6:
: + Get rid of $now variable
: + Add comment about += failure
: + Enable keyboard callback
: + Fix braino in FPS display
diff: www.parrotvm.org/svn/parrot/revision?rev=32568
jonathan "Everything can go wrong, and usually does 00:30
What a life outlook! ;-) 00:31
Thanks for preparing that file, though. 00:33
jonathan hopes we can get the bugs ironed out in not too long 00:34
chromatic That return bug bothers me. 00:37
Whiteknight what return bug? 00:42
jonathan chromatic: The exit one isn't too wonderful either.
Whiteknight: in the code japhb posted 00:43
00:49 gmansi joined 00:55 bacek joined 01:08 Lorn joined 01:09 hachi left 01:19 MariachiElf joined
japhb jonathan, chromatic: thanks for taking a look at that for me. 01:21
01:41 jimmy joined 02:08 rhr joined
rblackwe Hey any parrot gurus that know anything about www.osgi.org that could help me with me efforts to get parrot on buglabs.net if so please let me know at robert@robertblackwell.com. 02:16
02:17 davidfetter joined 03:06 Andy joined 03:16 stockwellb joined
stockwellb Parrot test question. pir_output_is? Why the output to file? 03:21
One more. I discoverd prove can run the perl tests, is there a cli tool to run the PIR tests? 03:22
03:58 Psyche^ joined 04:02 elmex_ joined
stockwellb Anyone now how to run a single PIR test? 04:05
04:09 Ademan joined
jimmy is pirc implemented by c, and other by pirc self ? 04:25
dalek bruce.stockwell@gmail.com | Parrot: 04:27
link: www.perlfoundation.org/parrot/index.cgi?parrot
bruce.stockwell@gmail.com | Parrot: 04:29
link: www.perlfoundation.org/parrot/index.cgi?parrot
bruce.stockwell@gmail.com | Starting at the bottom: 04:33
link: www.perlfoundation.org/parrot/index...the_bottom
cotto stockwellb, the *_output_* files are useful when testing an aspect of parrot that isn't easy to make part of a pure PIR test suite, i.e. something that might segfault. 05:14
Most tests can be rewritten as pure PIR tests, although there are some exceptions. 05:16
pure PIR tests can be run directly with the parrot executable or with prove. 05:18
stockwellb I'm getting errors when I run PIR tests with prove 05:19
Perl tests work file with prove
cotto example? 05:20
stockwellb hold on.
cotto nopaste?
clunker3 pasta.test-smoke.org/ or paste.husk.org/ or nopaste.snit.ch:8001/ or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/
purl nopaste is, like, at nopaste.snit.ch/ (ask TonyC for new channels) or rafb.net/paste or poundperl.pastebin.com/ or paste.scsys.co.uk/ or App::Nopaste or tools/dev/nopaste.pl or at www.extpaste.com/
05:20 rhr joined
stockwellb No plan found in TAP output 05:21
parrot runs the test just fine. 05:22
cotto can you nopaste what you ran and its output? 05:23
stockwellb yep
nopaste "stockwellb" at 70.160.222.145 pasted "prove pir error" (14 lines) at nopaste.snit.ch/14544 05:24
cotto you need to run prove from the root of the build dir (or have a parrot in your $PATH). 05:26
stockwellb ah yes prove works when run from the build root. Thank you 05:28
cotto np
stockwellb cotto, do you know a lot about the test suite? 05:29
do all of the Perl tests need to be converted to PIR tests?
cotto That depends on who's asking. ;) I know more than nothing.
They don't. It speeds up the test suite if they are and it's a good way to learn your way around parrot, but it's not necessary. 05:30
stockwellb I'm new to parrot and perl. I really want to learn more PIR, I thought I'd start by converting some tests. 05:31
So that won't really help the project, but it should help me. 05:32
cotto Go for it. I'd be glad to review and commit any patches of that nature. 05:33
A faster test suite is always welcome. 05:34
stockwellb I've never done any collaborative development before, so I'll definately have to lean on and learn from you vets.
cotto docs/* is your friend 05:36
There's a surprising amount of useful information there. 05:37
stockwellb there certainly is. 05:38
dalek bruce.stockwell@gmail.com | Starting at the bottom: 05:57
link: www.perlfoundation.org/parrot/index...the_bottom
stockwellb Sleepy time... 06:05
dalek bruce.stockwell@gmail.com | Starting at the bottom:
link: www.perlfoundation.org/parrot/index...the_bottom
06:20 davidfetter joined
jimmy is particle here now? 06:33
davidfetter particle: idle for 9 hours, 21 minutes, 18 seconds (on since Tue, Nov 11, 2008 2:31:52 PM) 06:37
jimmy i just want this patch can be aplied in other place.svn.perl.org/viewvc/parrot/trunk/ru...p;r2=32488 06:40
unification of usage. 06:42
06:54 masak joined
dalek r32569 | allison++ | calling_conventions: 06:59
: [calling_conventions] Standardize parameter processing so the invocant is
: handled while iterating through the paramters, rather than being a special
: case.
diff: www.parrotvm.org/svn/parrot/revision?rev=32569
MariachiElf How do you recover from a failed test? 07:04
t/stm/runtime...............................NOK 4/5# Failed test 'queue adapted for the library' 07:05
masak jonathan++ # $?PACKAGE 07:06
moritz masak: what do you mean by "recover from"? the test harness doesn't die after a failed test
MariachiElf moritz: Mine did 07:07
masak moritz: sorry, need more context. where are we?
MariachiElf Failed 1/394 test programs. 1/11452 subtests failed.
NMAKE : fatal error U1077: 'C:\\Perl\\bin\\perl.exe' : return code '0x1'
Stop.
I'm on Vista
moritz uhm, that's weird.
MariachiElf Just did a fresh SVN checkout a few moments ago
masak moritz: did I say 'recover from'? where?
moritz masak: sorry, I meant MariachiElf :/ 07:08
masak moritz: that explains it.
purl Damn right it does.
moritz masak: my usual ma<tab> mistake :/
masak moritz: don't type with your eyes closed!
MariachiElf nmake went fine 07:09
nmake html seems to have gone well too
masak chromatic: re refcount, continuations/exceptions: sounds reasonable. anything a lower-rung coder like me can do to eliminate any of those errors? I get them often enough to feel antipathy against them. 07:10
moritz ah well, 'make test' returns a non-zero exit value if the test failed
MariachiElf: what else do you want 'make' to do?
MariachiElf moritz: I'm assuming there were more tests to run 07:11
moritz MariachiElf: don't assume. It already printed the summary (Failed 1/394 test programs. 1/11452 subtests failed.), so it's done now.
MariachiElf Ohhhhh 07:12
poundperl.pastebin.com/m9adfffb 07:13
There's the full output of the stop
The output was just scary and not what I'm used to 07:14
my apologies
moritz it happend to be the last test that failed, no worries ;)
MariachiElf nods. 07:15
07:33 uniejo joined, samlh joined
masak rakudo: my @a = (1,2,3); @a.[2] = 5; say @a.perl 07:34
polyglotbot OUTPUT[[1, 2, 5]␤]
masak S09 says this should be a compile-time error.
masak reports
chromatic masak, mostly we just have to understand all of the places we refer to an existing context and make sure that we update its reference count appropriately. 07:35
moritz wtbh?
chromatic With regard to the double-free errors.
masak chromatic: aye. 07:36
moritz masak: it says my @a.[5] should be an error
masak: you didn't confuse that, I hope?
masak moritz: oh, I did.
moritz: thx.
masak doesn't report
moritz was very disturbed, for a second ;) 07:37
masak ah. right now my @a[5] doesn't work either.
moritz: sorry ;)
moritz np :-)
dalek r32570 | allison++ | calling_conventions: 07:38
: [calling_conventions] Bringing the calling_conventions branch up-to-date with trunk r32569.
diff: www.parrotvm.org/svn/parrot/revision?rev=32570
07:53 mj41 joined 08:07 Zaba joined 08:18 allison joined 09:06 iblechbot joined 09:10 tomyan joined 09:12 idemal joined 09:16 cosimo joined 09:53 Zaba joined 10:16 Zaba joined 10:30 masak joined
masak szabgab: weblog.infoworld.com/fatalexception...t_vap.html 10:31
szabgab yeah, I read that already a few days ago, 10:37
lucky that at least you ppl don't get discouraged by such things 10:38
btw is there any plan when can one install parrot ? 10:39
10:39 ruoso joined
szabgab as in not running it from svn workspace 10:39
10:39 konstantin joined
masak szabgab: not discouraged, but sad to see such outside opinions. 10:39
szabgab: you can install parrot already. 10:40
szabgab: it's on CPAN.
moritz szabgab: reini urban was working on a proper 'make install'
szabgab yeah, but I thought it keeps saying, you better not run make install
moritz szabgab: there's a branch for it, but sadly his work as stalled atm
masak szabgab: ah. 10:41
szabgab ah, so the recomenndation for people who want stable (realatively) is to download from CPAN, compile it and run it from there>
? 10:42
masak I suppose.
since I don't have those requirements myself, I don't really know, though.
I always work on bleeding edge Parrot.
cotto That way when you cut yourself, you can give Parrot a bandage. 10:48
masak bandages++ 10:49
moritz and chromatic is master of bandages ;)
masak ...and of de-FUDding, incidentally. 10:50
szabgab what about rakudo? it does not have separate release cycle from parrot right? 10:51
masak no.
szabgab so I should consider the released parrots to be stable rakudos as well?
masak szabgab: depending on what you put into the term, yes. 10:52
szabgab the stabelest we can have now
masak right.
szabgab and btw is there some estimation for parrot 1.0? 10:55
masak esteems Parrot 1.0 10:56
:)
szabgab anything like "more than 6 months for sure" or "might be in 3 month" 10:58
masak szabgab: when you ask about the release of 1.0, what particular feature(s) do you wish for? 10:59
moritz says 6 months
szbalint you know the standard estimate, szabgab
ready by xmas
szabgab I don't care so much about features, more about the marketing bit
thats' for perl 6
parrot is almost independent from perl 6 11:00
Patterner the standard answer is "xmas". the standard omission is the year. 11:01
masak szabgab: well, yes and no. a dep for the release of Parrot is "two stable HLLs" or something like that. Rakudo will be one of them.
11:02 barney joined
masak s/release/1.0 release/ 11:02
moritz masak: but "stable" ne "full"
masak true.
szabgab I know all the Xmas answers and I am not expecting anything like it will be done by that time, I am ok with an answer, at least 6 month
so basically the "two stable HLLs" make it parrot quite dependent on the perl 6 design process, right? 11:03
masak szabgab: um, depends on whether "stable" means "not changing" or "useable" 11:06
moritz szabgab: I don't think that one of them has to be Perl 6. It could be partcl (tcl) and cardinal (ruby), for example 11:08
szabgab I want to be able to run Padre on Parrot at least paritally written in Perl 6, I don't mind using a subset of the language 11:09
and of course I'd like to let people use tcl and/or ruby to add plugins to Padre
but I have to give the user a relatively painless and fearless way to install it 11:11
moritz szabgab: in a comment on perlbuzz.com/2008/10/perl-6-isnt-ex...rware.html I wrote down what I think is needed to actually code in Perl 6, without too many "wtfs per minute" (No. 2 has been fixed since then)
szabgab painless is technical, fearless is more psychological, marketingish issue
moritz that's the "painless" part I was referring to ;) 11:12
szabgab moritz: and do you any kind of time estimate for the other 3 ? 11:16
masak szabgab: I'd rate #1 as "almost fixed now". maybe a week or two. 11:18
szabgab and the other two? even a minimum time would do it for me. see I am begging :-) 11:26
masak szabgab: you'll probably have to beg pmichaud++ and jonathan++ for estimates to #3 and #4. :) 11:28
jonathan #4 is waiting on a refactoring of part of the grammar to get us more in line with STD.pm. 12:08
I don't think it should be so bad to do, and I think we've got enough tests now that I shouldn't break too much. :-)
12:14 ruoso joined 12:29 Lorn joined 12:44 konstantin joined 12:53 DietCoke joined, konstantin joined 13:08 jimmy joined
pmichaud (from perlbuzz.com/2008/10/perl-6-isnt-ex...rware.html comment): "There's no way to turn an array ref into an array" ... example? 13:19
13:21 iblechbot joined
szbalint you need to give an example to disprove that statement 13:27
jonathan @array.values? 13:28
er
$arrayref.values?
pmichaud I don't understand what "turn an array ref into an array" means here.
szbalint me neither, but I didn't make that statement :) 13:31
jonathan pmichaud: I suspect they're trying to do the Perl 5 equivalent of @$array_ref 13:32
pmichaud ah.
jonathan But you really don't need to in Perl 6.
In most circumstances.
pmichaud sometimes you do
actually, often you do
for $arrayref { ... }
jonathan Ah, yes, that won't iterate over the array's values, will it...
pmichaud you really need for @$arrayref { ... } or for $arrayref.values { ... }
jonathan Right 13:33
jonathan needs more coffee
Anyway, the .values way exists now
pmichaud I wonder why .list isn't working.
jonathan It's not? 13:34
pmichaud according to jhorwitz yesterday it wasn't.
building now so I can check.
jonathan kk
Coke ... what does for $arrayref do ?
it just fires once on the ref? 13:35
pmichaud coke: it would loop over the single array element.
it's essentially the same as for ($arrayref, 2, 3) { ... }
except without the 2, 3 part.
13:35 ChrisDavaz joined
Coke Hurm. I am thinking I'd rather that act like an array in that context, and have to specify I wanted the ref instead of the array. 13:36
pmichaud how would one "specify I want the ref" ? 13:37
anyway, that's a language design issue, so I get to pass the question off to p6l. :-)
Coke ayup. (can't be a method, because that'd return a ref... which i already said I wanted to be special.) 13:38
Coke guesses $$
pmichaud in this sense it's really the same as Perl 5, though 13:39
my $a = [1, 2, 3]; 13:40
for ($a) { print "$_\\n"; } # "1 2 3\\n"
for (@{$a}) { print "$_\\n"; } # "1\\n2\\n3\\n"
(perl 5 code above)
oops
in reality
purl in reality is probably that it is generated by on setup_function
pmichaud for ($a) { print "$_\\n"; } # "ARRAY(0x......)" 13:41
ahhh, I see the problem with 'list'. 13:42
jonathan: do we have a way to go from an ObjectRef to the thing it references?
13:44 bacek joined
pmichaud (in PIR) 13:44
jonathan pmichaud: Anything that invokes get_pmc would probably do it... 13:47
But I can't think of an op right away...
hmm
pmichaud is there a get_pmc op?
jonathan maybe
pmichaud I think there's a set_pmc op.
jonathan It's a vtable
pmichaud hrm, guess there isn't. 13:48
ah, setref and deref
how strange that they're actually called by names that indicate what they do. :-P 13:49
jonathan lol! 13:50
pmichaud++
14:14 Zaba joined
nopaste "pmichaud" at 72.181.176.220 pasted "going from arrayref to a list" (12 lines) at nopaste.snit.ch/14547 14:16
14:17 gryphon joined 14:23 Lorn joined
dalek r32571 | pmichaud++ | trunk: 14:23
: [rakudo]: spectest-progress.csv update: 216 files, 4528 passing, 8 failing
: Failure summary: 14:24
: S02-literals/radix.rakudo aborted 8 test(s)
diff: www.parrotvm.org/svn/parrot/revision?rev=32571
r32572 | pmichaud++ | trunk:
: [rakudo]: update test_summary.pl to report failures, output < 80 cols
diff: www.parrotvm.org/svn/parrot/revision?rev=32572
14:26 Zaba joined
jimmy parrotvm is so slow... 14:28
14:29 bacek joined 14:35 dalek joined 14:43 rdice joined
dalek r32573 | pmichaud++ | trunk: 14:51
: [rakudo]: Fix .list method on arrays (and arrayrefs).
diff: www.parrotvm.org/svn/parrot/revision?rev=32573
14:52 Zaba joined 14:58 Zaba joined 15:02 dmknopp joined 15:05 dmknopp left, dmknopp joined 15:06 Lorn joined 15:18 Andy joined, Zaba joined 15:20 NotFound joined
NotFound Hi 15:20
purl hey, NotFound.
Coke jimmy: I am often inclined to agree with that. 15:22
jimmy had parrot implemented array class? 15:30
Coke s/class/PMC/ yes. 15:31
$P1 = new 'Array' # or 'ResizablePMCArray', usually. 15:32
# or any of a lot of other more specific container types.
15:32 AndyA joined
jimmy where is the s dir? 15:32
Coke s// is a perl-ism, it means replace the first part with the second. 15:33
so, to expand that, "if by class, you mean PMC, then yes."
szbalint s// is an error actually
:]
Coke sorry about the confusion.
and about szbalint. 15:34
jimmy find it, thanks coke 15:36
szbalint purl: regexp? 15:37
purl i guess regexp is short for regular expression
szbalint purl: regular expression?
purl regular expression is a predicate on strings
szbalint pfft
jimmy i thought there is a class, because i saw it ever. 15:38
purl: regexp? 15:40
purl regexp is short for regular expression
15:42 Zaba joined 15:44 cosimo joined 15:47 hercynium joined 15:52 ruoso joined
dalek r32574 | pmichaud++ | trunk: 15:53
: [rakudo]: Make log(0) return a Failure (RT #60490, masak++)
diff: www.parrotvm.org/svn/parrot/revision?rev=32574
jonathan particle: ping 15:56
Coke pmichaud: (anon) perhaps: .namespace ['Signature'] 16:31
.sub 'onload' :anon :init :load
that doesn't correspond directly to a user-defined block, does it?
(it's also neither an inner block nor a anonymous sub, of course.)
pmichaud that's correct, those are auto-generated. 16:32
16:40 jhorwitz joined, Zaba joined
jonathan thinks that the bytecode annotations stuff really needs doing so we can generate good errors soon 16:42
But it goes with a whole bunch of bytecode handling refactors which are quite a bit of work, though Infinoid++ has made a good start. 16:43
Coke I wonder if it would be possible to create an artistic-license'd version of cold fusion running on parrot. 16:45
I don't think it would be it, 16:46
pmichaud jonathan: btw, I think I've convinced myself that $?PACKAGE, $?CLASS should indeed be held as lexicals. 16:47
Coke er, be worth the effort, but I wonder if legally it would be doable.
pmichaud in particular, we can replace existing instances of 'def' with $?CLASS :-)
jonathan (implementing it like the spec says)++ 16:50
Yes, that's very true.
pmichaud oh, there was a proposed PCT change that came out during your vacation 16:51
I'm thinking of allowing string/int/num constants directly in the PAST tree 16:52
jonathan Rather than needing PAST::Val nodes?
pmichaud yes.
jonathan Rational, other than less objects to create?
Or is that enough?
pmichaud we still have PAST::Val nodes for things that have special requirements (typing, construction, etc.), but simple string/int/num can go directly in the tree
less objects to create, easier to read and process
jonathan OK 16:53
No immediate objections from me.
pmichaud it just seems cleaner in a lot of ways
jonathan I've at lesat a couple of times mistakenly not created a PAST::Var node when I shoulda done and just stuck a value in, anyway...
pmichaud right. 16:55
for this limited case I think it's worth dwim instead of enforcing a rigid strictness 16:56
16:57 Theory joined
jonathan Yes. 16:57
Makes sense.
Go for it.
16:58 Zaba joined
Coke goes WOOOT for a reason entirely not to do with parrot. 17:03
pmichaud I don't know when it'll occur, but it's in the planning stage.
jonathan Sure, I guess not high priority compared to other things. 17:04
*cough*lexicals*cough*protoregexes*cough*
pmichaud well, there's a fair bit of refactoring to do in actions.pm, which is what makes me think of it.
jonathan *nod*
pmichaud I'll be really glad to give someone else lexicals to do, btw. :-)
jonathan Erm. 17:05
pmichaud the only reason I'm doing it is because nobody else seems to want to take care of it. :-|
jonathan How do the lolcats say...
...DO NOT WANT.
;-)
It's...hard.
How far along is the lex branch?
pmichaud I'll bite the bullet and spend a day on it soon.
jonathan As in, what's missing? What's done? 17:06
pmichaud the basics are in place -- I have the capture_lex and newclosure opcodes done.
The hard part is autoclose semantics.
Coke pmichaud: are you a coffee drinker?
pmichaud I _think_ I have autoclose worked out mostly -- just need to write it down and then implement it.
jonathan If you've got it worked out, then it's probably best you do at lesat one half of that. 17:07
pmichaud part of the problem is that I'm working with code where I understand very few of the design parameters that are involved, so I don't know if I'm breaking anything
Coke: I very rarely drink coffee.
like, usually only in Europe. :-)
Coke pmichaud: heh
so throwing a DD or SB card at you will not help you code faster. Roger. =-)
jonathan pmichaud: If you can write up what you want, I maybe can help on implementing it.
pmichaud jonathan: that's what I'm working on now. :-) 17:08
jonathan I need to refactor variable_decl (I think it's that one) to look more like STD.pm.
Then we can have things like "has $.x = 42"
pmichaud what I have so far is at www.pmichaud.com/perl6/lexical.txt
refactoring variable_declarator really means we should have signature fixed first. 17:09
jonathan Perhaps - I'd rather do the first refactor which is just shuffling around code mostly, rather than changing too much at one go.
But yes, it will want to change with respect to sigs also. 17:10
pmichaud it's all the same pieces
jonathan Autoclose 17:11
erm
17:11 tewk_ joined
jonathan The stuff under that heading doesn't sound that vastly different to what we do today? 17:12
Other than mentioning capture_lex?
pmichaud the big difference is that I won't be chasing up the caller chain.
jonathan Aha.
pmichaud s/is/will be/
so far none of this requires looking up the caller chain
which is where I think the current problems lie. 17:13
jonathan OK
pmichaud (well, we might look at the immediate caller as part of invoke, but that's about it.)
iiuc, what happens today is that autoclose tries to chase up the caller chain looking for contexts that match its criteria 17:14
jonathan Ah, OK.
pmichaud which is bad, especially if an outer lexical scope isn't even *in* the caller chain.
jonathan Yes.
Plus perhaps a source of subtle bugs.
pmichaud anyway, I'll finish the writeup today if I can. 17:15
jonathan OK. 17:16
17:16 ruoso joined
jonathan ponders subtypes 17:22
I think the SubSet class needs to go away.
I suspect since the subset types are just refinements to real types, we can do it as an anonymous subclass of the proto that overrides ACCEPTS 17:23
jonathan JFDI
17:38 rob joined 17:42 PacoLinux_ joined 17:46 konstantin joined 17:47 PerlJam joined
dalek r32575 | Whiteknight++ | trunk: 17:54
: [Book] Fix up the first half of Chapter 2. Fix prose and flow, grammar, and the occasional spelling problem.
diff: www.parrotvm.org/svn/parrot/revision?rev=32575
18:09 cognominal joined
jonathan rakudo: subset Even of Int where { $^n %2 == 0 }; say Even.WHAT; 18:11
polyglotbot OUTPUT[Subset␤]
18:11 rhr joined 18:12 wonko joined 18:15 chromatic joined
pmichaud (anonymous subclass)++ 18:15
jonathan pmichaud: Yeah, the current bug (as shown there) will go away then. 18:16
pmichaud for that matter, does it have to be anonymous? ;-)
looks to me like it has a name ("Even")
jonathan Oh, in that case, yes.
In the general case they can be anonymous.
pmichaud yes. :-) 18:17
jonathan but yeah, may well name the named ones
Just trying to make sure my approach is going to work first.
pmichaud afk, lunch 18:22
18:24 bacek joined
Coke jonathan: what should that have output? Even ? 18:28
jonathan Coke: Yes. 18:30
I think so.
Oh,no
I think maybe Int
Since subtypes are just refinements on real types.
It certainly shouldn't have emitted Subset. 18:31
I can argue it either way on the other one, but I suspect Int is the answer.
jonathan -> dinner
18:31 Zaba joined
pmichaud I suspect Int is the answer, also. 18:37
I'm not even sure that .WHAT works on Even 18:38
(since it's really a macro)
afk, lunch for real this time.
19:07 Zaba joined
dalek r32576 | coke++ | trunk: 19:29
: use of .return as a synonym for .tailcall is [DEPRECATED]
diff: www.parrotvm.org/svn/parrot/revision?rev=32576
particle so, WHAT gives a shortname of "Int", and WHO gives "Even of Int"? 19:35
or can you not get the name of a subclass even after you've named it?
pmichaud note that subset != subclass 19:36
particle oops, i meant subset of course 19:37
my point is that if you name a subset, you should be able to somehow recover that name
pmichaud maybe. I'm not sure that we could do things like my $x = Even; 19:38
19:38 findlay joined
particle no, i'm not sure of that either 19:39
but why bother with having a name if it's declaration-only
19:43 kj joined
pmichaud oh, it's still usable wherever we expect a typename 19:45
i.e., my Even $x = 2;
but the fact that it's visible as a name doesn't necessarily imply it's a value that can be .WHAT
(it doesn't imply that it can't either -- I'm just saying we're not clear on it yet)
particle yes, we're not clear. 19:46
i suspect the fullname (.WHO) will contain the subset name
Coke runs "make TEST_JOBS=3 test" 19:49
dalek r32577 | coke++ | trunk: 19:52
: using .return as a synonym of .tailcall is [DEPRECATED]
diff: www.parrotvm.org/svn/parrot/revision?rev=32577
Coke that's the last test failure regarding .return/.tailcall, I think. 19:54
19:59 johbar joined
TimToady phone 20:00
dalek r32578 | coke++ | trunk:
: RT #58974; remove [DEPRECATED] .return syntax; use .tailcall instead. (all tests pass)
diff: www.parrotvm.org/svn/parrot/revision?rev=32578
Coke TimToady: 1m.
pmichaud be there in 3 20:01
Coke TimToady++ 20:03
particle coke: does r32578 requires realclean? 20:17
Coke I don't think so. 20:25
presuming the deps are correct. 20:26
21:01 AndyA joined 21:16 masak joined
masak have I got a Rakudo bug for you tonight! 21:19
nopaste "masak" at 130.238.45.242 pasted "a bug involving gather, pattern matching and .substr" (15 lines) at nopaste.snit.ch/14553 21:20
bacek masak: good morning :)
masak bacek: y0 Ɩ=
:)
when looking at the above code, keep in mind that it shouldn't produce anything. that's because I've removed all the parts that didn't cause trouble. 21:21
IOW, I'm aware that one would never want a program exactly like this. the point is that the program crashes. 21:22
bacek bacek@icering:~/src/parrot/languages/perl6$ ../../parrot perl6.pbc g.pl 21:23
Cannot take substr outside string
masak bacek: that's it.
it's a reasonable error, in some circumstances. but I think you can look at the code and prove to yourself that it shouldn't do that. 21:24
bacek masak: (crash) same bug with "die in subroutines"
pmichaud that's a Parrot message 21:25
Parrot complains (with that message) if you attempt to take a substring beyond the end of a string.
masak ok.
pmichaud the answer is probably for rakudo's .substr method to check for that and do something reasonable.
masak bacek: I don't understand what you mean with "same bug with 'die in subroutines'" 21:26
pmichaud or, catch the exception and convert it to something reasonable.
masak pmichaud: if you remove the gather block, the program doesn't crash
bacek pmichaud: #56216 :)
masak pmichaud: something is horribly wrong here. 21:27
bacek pmichaud: patch is quite old. It should call '!FAIL' in moder rakudo
masak: it's #57330.
masak bacek: yes, what about it? is this the same thing? 21:28
bacek 57396 & 57398 is actually duplicates.
masak: technically - yes.
masak I'm lost -- how can adding a gather block cause the crash? 21:29
pmichaud I don't believe they are all the same thing.
masak the program works fine without it
bacek masak: try 'sub foo { die }; foo'
pmichaud Let's not assume things are the same until we can prove it.
masak bacek: I know about that one, it's not the same.
trust me.
pmichaud masak: the gather block imposes an exception handler in the mix
masak ok.
bacek masak: NO WAY :)
masak bacek: :) 21:30
pmichaud masak: so it may be the existence (or non-existence) of the exception handler that is affecting things here.
masak would looking at the PIR code make things clearer, perhaps?
pmichaud let me look at the perl 6 snippet a bit closer, first.
bacek afk # $kids->school
masak pmichaud: yes, of course. 21:31
purl Indubitably.
nopaste "Coke" at 65.91.151.195 pasted "small-ish PIR from phone" (11 lines) at nopaste.snit.ch/14554
Coke chromatic, particle, pmichaud: that sample depends on the perl6 code you're trying to eval. if you use a different invalid bit of perl6, it works. 21:32
e.g. if you leave off the trailing }; something about that particular exception is causing trouble.
bacek masak: try to put try around gather. It will fix crash
Coke could probably narrow it down further if necessary.
masak bacek: hokay.
bacek masak: because of "handle all exceptions handler"... 21:33
pmichaud of course, it's not clear why an exception is generated in the first place.
chromatic That's an ASSERT failure.
masak bacek: thing is, I don't want it to crash, try block or no try block.
chromatic I think it's related to the exception handler gyrations. 21:34
Huh.
It's compiling code.
do_sub_pragmas
pmichaud (we now have two exception conversations going... my comments are aimed at the masak/bacek one :-)
chromatic PackFile_fixup_subs
masak pmichaud: aye, it's not clear why. that's what troubles me.
pmichaud masak: it throws an exception only if gather is present? 21:35
masak correct.
chromatic I can't get it to segfault though.
pmichaud masak: I'll need to svn up and rebuild parrot -- need about 5 mins 21:36
Coke pmichaud: when running target=pir, there's an .include file that is included -after- constants from it are used.
masak pmichaud: no problems -- I'm blogging right now, take your time.
Coke chromatic: lemme double check.
pmichaud Coke: is the file included more than once, or just the once? 21:37
Coke: I suspect that may have been from jonathan's MAIN change yesterday.
or the $?PACKAGE one
Coke chromatic: crap. now i can't either.
pmichaud: just once.
pmichaud okay, I'll have to check on the code there.
Coke chromatic: but we can worry about that once the assert failure goes away. 21:38
pmichaud I'm trying to eliminate the use of the constants from the generated code, but someone keeps adding them back in :-)
21:38 davidfetter joined
pmichaud or, I should say: adding new ones in :-) 21:38
PerlJam masak: does #november-wiki actually exist anywhere?
moritz PerlJam: on freenode
masak moritz is faster than I am :) 21:39
PerlJam: did some documentation lead you to believe otherwise?
Coke (hurm. if c. can fix this assert, maybe I'll start throwing some of tcl's spec test explosions at him.)
chromatic++ 21:40
PerlJam no, that I joined #november-wiki and I'm the only one on the channel led be to believe otherwise
(on freenode)
moritz PerlJam: netsplit, I think
22:26 -!- Netsplit kubrick.freenode.net <-> irc.freenode.net quits: @masak, @viklund, @zarah, p6eval
masak PerlJam: looking forward to seeing you there after the netmerge :) 21:41
chromatic I don't know if we can trust the backtrace, thanks to all of the setjmp/longjmp.
pmichaud masak: I think it may be a lexicals issue. 21:44
masak pmichaud: I'm all ears. 21:45
pmichaud I suspect the 'gather' scope isn't getting the correct set of lexicals. 21:46
Coke (netsplits) purl, be Coke. 21:47
masak pmichaud: is there any sense in me reporting the code snippet to rakudobug?
moritz masak: put it as a test under t/spec/integration/ 21:48
pmichaud works for me.
masak moritz: aye.
pmichaud (putting it as a test works for me)
masak moritz: how should I test it, according to you?
put a try block around it and check $! ?
moritz masak: yes, or lives_ok 21:49
pmichaud ouch.
masak moritz: will do.
pmichaud: note also that looping over only one of the strings doesn't crash. 21:50
pmichaud yes
it happens on the second iteration
masak aye.
pmichaud what appears to be happening is that we retrieve the $c from the previous execution
but retain the $/ from the current execution 21:51
masak not good.
pmichaud so when it tries to do a .substr($/.from) that becomes .substr(3) on an empty string and we get the exception.
more precisely, the $c .= substr($/.from); uses the $c from the previous execution.
masak pmichaud++ 21:52
that makes perfect sense.
(except that it's wrong, of course)
pmichaud yes.
and if I remove the explicitly 'newclosure' op that is being run on gather nodes, I get even stranger output. 21:53
*explicit
masak uh huh.
pmichaud there are times that I think the only thing more broken than imcc is Parrot's lexicals. 21:54
masak I know the feeling.
nopaste "pmichaud" at 72.181.176.220 pasted "the diagnostic I ran (for masak)" (34 lines) at nopaste.snit.ch/14555 21:56
pmichaud it's actually doing .substr(3) on '1', not the empty string. But it's still the string left over from the previous execution.
masak aye. 21:57
I was wondering where the heck that "1" came from.
now I understand.
pmichaud checks with family members to see if he can devote the evening to trying to fix lexicals. 21:58
PerlJam pm: heh! 21:59
pm: Wednesdays are supposed to be "mine" for hacking or whatever. So far it hasn't worked out that way. 22:00
4 kids + wife + other relatives are too demanding of my time.
22:01 MariachiElf joined
dalek r32579 | coke++ | trunk: 22:02
: remove [DEPRECATED] warning - this is gone now.
diff: www.parrotvm.org/svn/parrot/revision?rev=32579
22:15 gmansi joined 22:16 sjansen joined
masak test added in r22996 22:20
it fails in Rakudo.
moritz masak++
22:24 hercynium joined 22:31 Zaba joined
dalek r32580 | moritz++ | trunk: 22:45
: [rakudo] more test files for spectest, and restored alphabetical order.
diff: www.parrotvm.org/svn/parrot/revision?rev=32580
jonathan OK folks, I'm off for my pre-flight sleeps - be seeing some of you in California soonish. :-) 23:08
pmichaud sounds good
see you in 48 hrs
oh, more like 50
(forgot the timezone difference) 23:09
jonathan Yes 23:10
Looking forward to it. :-)
pmichaud same here. Any particulars on how we should meet up? 23:11
just on IRC, perhaps?
jonathan I will be arriving with particle, on the van he will be brining from SJC.
I'm taking the first night in San Francisco, then coming to the airport and meeting particle and others there.
pmichaud oh, then I'll see you there.
jonathan I think you're arriving about then.
Yes.
pmichaud I arrive an hour before particle.
jonathan Ah, OK. 23:12
pmichaud (unless he's changed his travel arrangements ... /me checks)
jonathan He gets in at 4:10pm I think.
pmichaud I arrive 2:30p
jonathan Ah, OK, a bit before. 23:13
To SJC?
pmichaud I'm arriving American 1865
yes, to SJC
should we designate a meeting point at SJC?
jonathan I don't know SJC at all. 23:15
pmichaud me neither. I guess we can just wing it.
jonathan OK, I will come to the airport a bit earlier so we can mee.
*meet
Well, I am armed with a cell phone. ;-)
pmichaud me too... 214-682-9420
jonathan OK. That allows lazy evaluation of the problem. ;-)
pmichaud works for me.
before departing you might also grab the latest copy of lexical.txt -- I'm adding some updates now (and plan to work on it much of the evening) 23:16
jonathan aha, OK
I'm getting my half-done subset patch shoved over to the laptop too
OK 23:19
Will take an earlier trian than I'd planned.
pmichaud see you in 48.
jonathan Yes
Safe journey - see you there :-) 23:20
dalek r32581 | coke++ | trunk: 23:22
: Add a failing TODO test for RT#45859
diff: www.parrotvm.org/svn/parrot/revision?rev=32581
23:23 bacek_ joined
Coke hurm. anyone know enough lex/yacc to figure out where methods calls are processed in IMCC? I am prettysure that .tailcall <blah> allows them, so I think I'm looking for sub_call, but I can't see where sub_call is processed. 23:27
chromatic Processed how? 23:29
pmichaud .tailcall <blah> does allow method calls -- in fact, they're used quite heavily in much of PGE, PCT, Rakudo, etc. 23:30
Coke aha. found it.
23:35 Zaba joined
Coke chromatic: if you make an imcc patch to remove bareword method names (45859), I'll fixup everything in 'make test' to comply. 23:47
(I thought I had it, but am failing to pass the new test I just added)
pmichaud (fixup everything) that sounds like a big job. Worth doing, but big nonetheless. :-) 23:48
nopaste "coke" at 72.228.52.192 pasted "thought this was it." (16 lines) at nopaste.snit.ch/14557 23:49
Coke but that also breaks foo.'foo'() 23:50
chromatic Coke, will do. 23:51
Coke it's gotta be in that section, damnit. 23:52
... hurm. 23:53
ooh, idea.
aha! 23:54
chromatic I think there's a trick to it. 23:55
Check to see if there's a symreg defined with that name (so you already have a PMC or a String register of that name). If not, check that it has quotes.
Coke ah.
chromatic If it doesn't, throw a parse exception. 23:56
Coke I was thinking just replacing STRINGC with STRINGCONSTANT might do it.
ok. I leave the tricky bits to you. I can do all the grunt work after. =-)