Parrot 0.8.2 "Feliz Loro" Released www.parrot.org/news/2008/Parrot-0.8.2
Set by moderator on 14 January 2009.
pmichaud (and sooner rather than later) 00:00
jonathan I'd like it if that place was rakudo.org becuase it's easy to remember.
pmichaud would rakudoperl.org be an okay substitute if rakudo.org doesn't work out?
jonathan Yes.
cognominal pmichaid, can you twit on rakudoperl with the url of an new entry on parrot planet? 00:01
pmichaud!
purl pmichaud is www.pmichaud.com/ or "Patrick R. Michaud" <mailto:pmichaud@pobox.com> or in charge of toaster experiments
pmichaud cognominal: sure
jonathan But I'd be disappointed if we can't co-operate with whoever owns rakudo.org to make that what we want it to be.
pmichaud whoever owns rakudo.org == Andy
Casan while I do not feel my say is to weigh anything on this, on behalf of users like me I can say ++ to the same sentiments of jonathan, they are in par with my wish list
cognominal twit is my new RSS :)
lathos Worst case you can have *.rakudo.org
jonathan OK, I knew Andy managed it, wasn't sure on ownership. 00:02
pmichaud Andy owns it.
lathos www can be just the blog, other subdomains can be other stuff.
pmichaud it would be better if www is the site, though.
jonathan lathos: No.
pmichaud i.e., not the blog.
jonathan lathos: See comment above.
lathos Sure would, that's why I said worst case.
Casan hummm, but still www.rakudo.org should be the main place, with intro, not blog at first
pmichaud worst case would be no site at all :-) 00:03
Casan think of an official marketing/business site to support customers.
jonathan worst case is that we give up on Rakudo on decide to dedicate our lives to the advancement of LOLCODE instead.
s/on/and/
pmichaud actually, worst case would be that www.rakudo.org goes somewhere promoting the anthesis of Perl.
antithesis, that is.
(can't type.)
Casan jonathan: if you do that I buy you one more beer! :)
pmichaud I should pivovat.
jonathan Anyway, Andy has IIRC suggested rakudo.org may become Drupal-based. 00:04
Which would seem to let us put content there.
pmichaud if Drupal is fine with you, I think it would be okay with me. 00:05
jonathan And I guess that will give us what we want.
pmichaud I'd like it to be easy to give out the ability to edit/update content.
lathos I've been using Drupal for all our sites recently. It's spectacularly flexible.
pmichaud I don't like Drupal's "wiki", though. However, github seems to provide a wiki, so if we host rakudo through github then that could provide us a wiki for a while. 00:06
jonathan Drupal seems fine with me.
pmichaud: We don't massively *need* a wiki on rakudo.org.
IMO.
We need a place where people can come, find what's up with Rakudo, find out how to get hold of it, etc.
pmichaud I think a wiki, or some good way to enable user-contributed content without lots of pre-registration / clearance, is useful.
for example, keeping the "what doesn't work in Rakudo" list up to date. 00:07
jonathan Good point.
What are your thoughts on bug tracing?
er, tracking
;-)
pmichaud we're likely to stay with rt.perl.org, I think.
jonathan Why? (I'm not disagreeing, just curious why.) 00:08
pmichaud it's frustrating at times, but Robert is very responsive in general and hopefully some of those will go away.
jonathan OK.
pmichaud *those frustrations
jonathan The Parrot Trac is...slooooow.
But Trac can be unslow.
pmichaud RT is often slower than trac for me.
jonathan And it's got a decent wiki.
pmichaud I do like Trac's ability to create custom reports and associate everything with milestones.
And the wiki.
purl the wiki is dev.catalyst.perl.org/wiki/
lathos Is it running on mod_parrot?
00:09 AndyA joined
jonathan I use Trac on a couple of other projects. I do like it. 00:09
But yes, Robert++ *is* responsive.
pmichaud But moritz++ said he prefered to stay with rt.perl.org over trac (for some very valid reasons), so I'm biased towards rt.perl.org at the moment. (For that and other reasons also.)
Casan lathos: wishful thinking
jonathan I'm happy staying with RT too.
lathos Someone was telling me the other day that trac does an awful lot of unnecessary module reloads (with an associated doubly awful number of library-path-search stats) if it's not running on mod_parrot.
I mean mod_python of course. Urgh.
pmichaud I'm being called to dinner. 00:10
later, all.
jonathan lathos: There's a *huge* performance difference between running it without and with mod_python.
Later, pm.
lathos Yep.
jonathan lathos: In my experience, anyway.
lathos What do we have at the moment?
jonathan On parrot.org? No idea. But I fear without mod_python... 00:11
lathos Hmm.
jonathan That or something else is making it a *lot* less snappy that any other installations of Trac I have.
Whiteknight Coke here? 00:12
I guess calling himself "coke_away" is a cluse 00:13
s/cluse/clue/
cognominal pmichaud, you need spectcacular twit photo to about parrot saving the world like twitpic.com/135xa :)
On tr... 00:14
s.s..; 00:15
cognominal or at least of the parrot and rakudo tests graphs
dalek r35608 | Whiteknight++ | branches/morph_pmc_type/src/ops (2 files): 00:17
: [morph_pmc_type] update some files in src/ops/*
review: www.parrotvm.org/svn/parrot/revision?rev=35608
r35609 | simon++ | branches/strings/pseudocode: 00:18
: Ironically, I need to get the length of a string.
review: www.parrotvm.org/svn/parrot/revision?rev=35609
coke_away (why move the repository) I am deep in review, but I assume this was covered at the PDS. no? 00:23
dalek r35610 | simon++ | branches (144 files): 00:36
: Merge from trunk
review: www.parrotvm.org/svn/parrot/revision?rev=35610
Whiteknight how are the read-only versions of PMCs named? 00:41
Infinoid well, from the pmc2c output, it looks like Classname => Classname_ro 00:47
but I don't see corresponding enum_class_* definitions to support that. 00:48
Whiteknight yeah, they're defined as "enum_class_X - 1" 00:50
thanks Infinoid++
Infinoid ... really? they don't look spaced out like that in include/parrot/core_pmcs.h 00:51
but if you say "yes", I'll believe you :) 00:52
00:57 ask_ joined 00:58 tetragon joined
Whiteknight I was able to get around having to use the string name, but it's a hackish solution 01:03
I'll have to fix it later
I'm using interp->vtable[enum_class_X - 1]->whoami to get the string name of the mc 01:04
pmc
dalek r35611 | Whiteknight++ | branches/morph_pmc_type/src/pmc (6 files): 01:10
: [morph_pmc_type] convert files in src/pmc/* to use VTABLE_morph_string instead of VTABLE_morph
review: www.parrotvm.org/svn/parrot/revision?rev=35611
01:10 tjh joined
particle3 string, not pmc? 01:12
01:19 TiMBuS joined 01:20 tjh left
dalek r35612 | Whiteknight++ | branches/morph_pmc_type/src (2 files): 01:21
: [morph_pmc_type] one last fix from bigint.pmc and update src/dynpmc/rational.pmc
review: www.parrotvm.org/svn/parrot/revision?rev=35612
r35613 | Whiteknight++ | branches/morph_pmc_type/languages (2 files): 01:35
: [morph_pmc_type] a few stragglers
review: www.parrotvm.org/svn/parrot/revision?rev=35613
Whiteknight particle3, it's just a temp name. I'm going to delete the current morph and rename "morph_string" to "morph" in a minute 01:46
there's method to my madness
although there isn't always a lot of creativity to my method names
01:53 particle1 joined 01:54 LimbicRegion joined 01:55 particle3 joined, particle3 left
dalek r35614 | Whiteknight++ | branches/morph_pmc_type/src (7 files): 01:55
: [morph_pmc_type] remove the old morph VTABLE, everything is now replaced by my dummy morph_string method
review: www.parrotvm.org/svn/parrot/revision?rev=35614
01:57 Limbic_Region joined 02:04 kid51 joined
Coke_away jonathan: ping 02:10
02:18 jimmy joined 02:51 TimToady joined, confound joined, rhr joined, jhorwitz joined 02:58 dngor joined, Limbic_Region joined, bacek joined, TiMBuS joined 03:00 ask_ joined
kid51 must sleep 03:18
purl $kid51->sleep(8 * 3600);
03:35 cognominal joined 03:58 Eevee joined 04:04 samlh joined 04:10 purl joined 04:13 Fayland joined, particle joined 04:26 tetragon joined 04:27 mib_vm25pu joined 04:30 petdance joined 04:33 jhorwitz_ joined
dalek r35615 | pmichaud++ | trunk/languages/perl6/src/parser: 04:56
: [rakudo]: Fix degenerate space before postfix ops. (RT #60148)
review: www.parrotvm.org/svn/parrot/revision?rev=35615
Infinoid so, does trac have a commit rss? 05:08
pmichaud trac.parrot.org/parrot/wiki/TracRss 05:17
05:30 MariachiElf joined
Infinoid hmm, cool. I could probably log ticket events to the channel too, if people consider it useful 05:47
hmm. one problem is, trac rss doesn't include the list of modified files, which means the nifty branch/focus/whatever detecting stuff will no longer work. 05:52
maybe I could do some additional screenscraping to get that info
06:03 GeJ joined 06:16 Tene joined 06:23 shorten joined 06:58 ewilhelm joined
ewilhelm hi all. anyone have input regarding what to tell students about parrot and perl 6 regarding summer of code? 06:59
specifically, what sort of language experience is required or useful (besides perl and C - and how requisite is either of these?)?
07:04 Fayland_ joined
mib_vm25pu ewilhelm: I think verybody is sleeping now. 07:09
ewilhelm perhaps they should move west ;-) 07:10
thanks, I have a fairly good idea of what to say I was just hoping to get some specific advice
07:11 clunker3 joined
mib_vm25pu It's 07:10 07:11
maybe ask it this afternoon. 07:12
ewilhelm so you think eastward would work better then?
07:13 Fayland joined
mib_vm25pu I don't know. 07:14
ewilhelm ah, it must be too early for jokes there 07:15
mib_vm25pu C is required 07:16
actually, I can't understand the jokes.
ewilhelm C is required for parrot, but I thought rakudo was more pir 07:18
mib_vm25pu yes, and Compiler Principles 07:19
ewilhelm ah, good point. thanks 07:21
07:22 masak joined
mib_vm25pu good morning masak 07:22
masak good morning mib_vm25pu
...jimmy. 07:23
moritz ewilhelm: for parrot you need C, and learn PIR; for Rakudo, you need Perl 6 and PIR and a bit of C
ewilhelm: and for Perl 6 hacking you need Perl 6, and patience ;-)
07:23 ChrisDavaz joined
ewilhelm students with perl 6 experience might be slim pickings ;-) 07:24
moritz I know
but they can learn it, provided that they have some perl 5 knowledge
masak I think Perl 6 is easier than Perl 5 in many ways. 07:25
moritz ewilhelm: do you know of a wiki page where we share Perl 6/parrot SOC project ideas? 07:26
ewilhelm moritz, ATM we only have what's left from last year on the perlfoundation.org/perl5 wiki 07:32
jonathan leto is running the TPF effort, but if you want to start a page just send him a link 07:33
jerry (particle) should be in touch with him and I think will be driving the Parrot Foundation bus 07:34
lu_zero there are easy tutorials for perl6 already or everything has to be learnt the usual way?
moritz ewilhelm: did I ever say "thank you" for your effort last year? if not, now would be a very good time ;-)
lu_zero: there are a few tutorials, but most of them don't go very deep
cotto lu_zero, jonathan has several useful presentation slides at www.jnthn.net/articles.shtml 07:36
you can also look at November and a few scripts that people have hacked up (but maybe that's "the usual way") 07:37
ewilhelm has anyone tried to do the qotw in perl 6? 07:39
moritz, I think you did say, and thank you
perl.plover.com/qotw/ 07:40
masak lu_zero: the other day I started a documentation effort for Perl 6. but it doesn't help you yet. use.perl.org/~masak/journal/38279
Tene ewilhelm: looks like that's been abandoned since Oct 2004 07:46
cotto masak++ #more perl6 documentation 07:47
masak I have high hopes for that project. 07:48
cotto "psi"? 07:51
purl "psi" is some pseudo-scientific term for "paranormal studies"
cotto Is that because it's supposed to guess what you're trying to figure out?
masak cotto: among other things, yes.
cotto I'm sure there's a terrible pun in there too. 07:52
masak cotto: no, not really. but Ruby has 'ri' for this, so it's natural that Perl Six should have 'psi'. 07:53
ewilhelm Tene, yes, but none of the quizzes have been done in perl 6. I'm told that the ruby community went through them at some point. 07:56
masak sounds like something that could be done over at perl6-examples, then. 07:59
Tene masak: so you'd be in favor of me spending my Parrot tuits on getting "evaluate using the given lexical environment" working (for repl and eval)? 08:01
I'm pretty sure I know how to do it. 08:02
masak Tene: oh yes.
Tene masak: also, btw, a nice trick in the current rakudo repl is using global vars.
masak Tene: yes, that's a good _short term_ solution, I know.
but don't count on selling the GP on that. 08:03
Tene I don't.
I've been working on lexical invoke in the background for quite a while. I can start trying to implement it RSN. 08:04
08:04 iblechbot joined
masak \\o/ 08:04
moritz www.perlfoundation.org/perl6/index....code_ideas please add ideas for Parrot SOC projects 08:06
shorten moritz's url is at xrl.us/becqk3
Tene I also have a vague idea about getting line continuation and such working.
masak Tene++ 08:07
Tene Involves hacking PGE to emit the right kind of resumable exceptions under the right circumstances, and that's a lot of stuff I'm handwaving over.
And if I pursue it, the likely outcome is me badgering pmichaud into doing at least half of it. ;) 08:08
08:08 mberends joined
moritz sounds really simple *cough* 08:09
cotto ++ to whomever had the idea to get started on gsoc early this year
Tene moritz: you hack on any parrot guts at all? 08:10
moritz Tene: no.
Tene: I hope you heard my irony ;-)
Tene Oh, the really simple. 08:11
I get it now.
That wasn't related to your simple comment. I was just going to show you where I was looking.
moritz ah ok 08:12
08:13 jimmy joined
Tene moritz: if you can harass me about it this weekend, I'll give it a show. 08:14
shot.
moritz Tene: I'm not online this weekend :( 08:37
09:22 wolverian joined 09:24 barney joined 09:28 alvar joined 09:38 Ademan joined 09:40 namenlos joined 10:04 tomyan joined 10:05 braceta joined
dalek r35616 | bernhard++ | trunk/t/oo: 10:22
: [codingstd] file_metadata.t
review: www.parrotvm.org/svn/parrot/revision?rev=35616
r35617 | bernhard++ | trunk/src/pmc: 10:23
: [codingstd] tabs.t
review: www.parrotvm.org/svn/parrot/revision?rev=35617
10:34 bacek joined
jonathan Coke: pong 10:35
10:37 rdice joined 10:38 jimmy left 10:43 gaz joined
dalek r35618 | bernhard++ | trunk/languages/pipp/t/php: 11:15
: [Pipp] Add simple namespace tests.
review: www.parrotvm.org/svn/parrot/revision?rev=35618
r35619 | bernhard++ | trunk (2 files): 11:19
: let SVN ignore *.o in sr/atomic
review: www.parrotvm.org/svn/parrot/revision?rev=35619
r35620 | simon++ | branches/strings/pseudocode: 11:33
: Abstract fixed-width encodings into a base class.
review: www.parrotvm.org/svn/parrot/revision?rev=35620
r35621 | simon++ | branches/strings/pseudocode (2 files): 11:42
: Variable string encodings can have their own base class too.
review: www.parrotvm.org/svn/parrot/revision?rev=35621
r35622 | jonathan++ | trunk/languages/perl6/src/classes (2 files): 11:46
: [rakudo] Implement .does method (Any delegates to the metaclass, and we have the implementation there).
review: www.parrotvm.org/svn/parrot/revision?rev=35622
r35623 | jonathan++ | trunk/languages/perl6/src/builtins: 11:47
: [rakudo] infix:<but> needs to be aware of ObjectRef, otherwise we end up affecting the original object.
review: www.parrotvm.org/svn/parrot/revision?rev=35623
r35624 | jonathan++ | trunk/languages/perl6/config/makefiles:
: [rakudo] Oops, should have checked updated makefile in a couple of commits ago.
review: www.parrotvm.org/svn/parrot/revision?rev=35624
r35625 | jonathan++ | trunk/languages/perl6/t: 11:48
: [rakudo] Add the (now substantially passing) S12-role/basic.t to the spectests. It tests .does in the non-parametric case as well as covering the infix:<but> with ObjectRef bug recently fixed. 11:49
review: www.parrotvm.org/svn/parrot/revision?rev=35625
12:00 rdice joined, pjcj joined
dalek r35626 | bernhard++ | trunk/languages/pipp/src/pct: 12:10
: [Pipp] Rename NAMESPACED_IDENT to name and define it line in Rakudo
review: www.parrotvm.org/svn/parrot/revision?rev=35626
12:24 ruoso joined
sjn wonders if there exists a webpage or tutorial or something that describes all the features available in the bots and such that we can use in the different Perl-related IRC channels 12:25
masak Tene: ping 12:30
12:32 ruoso joined 12:35 lathos joined 12:38 barney joined
moritz sjn: I'm quite sure that such a thing does not exist ;) 12:44
12:46 ruoso joined
Coke jonathan: I should have just asked you the question. =-) 12:49
using the bytecode annotations, they're tied to the context chain, n eh?
jonathan Coke: In what senes? 12:53
Coke: You can look up annotations down the context chain if you wish, via ParrotInterprter.
But the annotations themselves are tied to the bytecode.
*sense
dalek r35627 | bernhard++ | trunk/languages/pipp/docs: 12:56
: [Pipp] note a divergence
review: www.parrotvm.org/svn/parrot/revision?rev=35627
13:01 contingencyplan joined, ruoso joined
sjn moritz: d'oh! 13:05
Coke jonathan: the annotations are... I hate to say lexical... sticky?
so I set (file,a.tcl), and then invoke a sub, and check annotations, (file,a.tcl) is still set.
dalek r35628 | simon++ | branches/strings/docs/pdds: 13:06
: Typo
review: www.parrotvm.org/svn/parrot/revision?rev=35628
Coke and if I set (line,30), and then return from a sub, (line) is ... no longer set? set to whatever it was in the original sub?
jonathan Coke: Not in the sub you invoked, no, but you can look one level down the call stack to get those annotations.
Oh, it's what it was in the original sub then.
Coke jonathan: when I look at the 'backtrace', it seems to be folded in.
Coke checks something. 13:07
jonathan Coke: Beware that annotations have no idea about sub boundaries though.
lathos OK, I don't know when characters are graphemes and when they aren't. Argh. 13:08
13:10 kj joined
Coke jonathan: ... so if I say .sub joe\\n.annottate 'bar,'baz'.end .sub fred .... .end , the annotation is in fred too, even if I dont' call one from teh other? 13:10
jonathan Yes
It's nothing to do with calling.
It's entirely to do with bytecdoe.
*bytecode 13:11
It's possible to introduce a directive that says "clear all active annotations" *if* it's needed. 13:12
Coke um. 13:13
jonathan But I kinda figured that compilers are going to be emitting .line directives pretty much at the start of every sub.
13:14 rurban joined
Coke you mean .annotate 'line', ... ? 13:14
jonathan Oops
Yes.
Coke I am very surprised by this behavior.
jonathan Why?
They are *bytecode* annotations. 13:15
Coke reads the pdd.
kj it's similar to a .namespace directive, which stays in place until you specify a new .namespace
jonathan Right. 13:16
Coke: .annotate is described in PDD19, but there's some lower-level details in PDD13.
13:16 ruoso joined
Coke jonathan: I'm interested in the "user facing" aspect, so pdd19 is better for me. 13:18
jonathan Aye.
Coke: If there's something that could be added to pdd19 that woulda made the behaviour clearer to you, please do add it. 13:19
It's the usual case of "obvious to the implementor" :-)
Coke jonathan: let's say I processing foo.tcl, and then I source bar.tcl; I can add a file annotation at the point where I read in each item.
when I'm done processing bar.tcl, do I have to then explicitly re-annotate with the original file name? 13:20
jonathan What does "source" do?
nopaste "barney" at 84.154.3.98 pasted "--target=parse broken in Rakudo" (30 lines) at nopaste.snit.ch/15324
jonathan (Sorry, I don't know tcl at all)
Coke like .include 13:21
jonathan Ah.
In that case, yes.
Coke ew.
jonathan Do you compile it down to .include?
Coke no. 13:22
jonathan Ah.
Then maybe not.
Coke everything is interpreted. =-)
jonathan Ah. :-)
Coke well, compiled/then/executed.
so source slurps in the source, compiles the tcl to PIR and invokes it, and then returns.
hurm. will every invocation of the PIR compiler have its own annotations?
or does it share annotations with the pbc that invoked the compiler? 13:23
jonathan In that case, you are doing compreg and getting back an Eval PMC and then invoking it, right?
Coke yes.
I do that /a lot/
jonathan So then those annotations will (should!) be in a segment attachted to the bytecode segment in that Eval PMC
And should not have any effect on those of the PBC that invoked the compiler.
So suppose you do source foo.tcl 13:24
Coke ok. then this might just happen to work.
jonathan I'd imagine that when you compile foo.tcl you will insert .annotate directives in the PIR that you are going to compile.
Coke jonathan: [source] is: code.google.com/p/partcl/source/bro...source.pir
shorten Coke's url is at xrl.us/becq22
Coke (compileTcl is defined elsewhere, but basically invokes the PGE/TGE/PIR/PBC chain) 13:25
jonathan Coke: where can I find the source for compileTcl?
Coke: Ah, found what I'm looking for. 13:26
Coke oooh, found a bug. =-)
jonathan Coke: OK, so in the transforms that produce PIR, that's where you'd want to spit out .annotate directives into the PIR you are generating. 13:27
nopaste "coke" at 72.228.52.192 pasted "this code assert fails" (29 lines) at nopaste.snit.ch/15325
jonathan IIUC what is going on.
Coke: Which assert? 13:28
Coke if I comment out the .annotates, that completes with a throw exception.
src/packfile.c:1575: failed assertion 'dir'
jonathan Shit. 13:29
*sigh*
Please file Parrot ticket, I'll look into it.
Coke Sorry. want a t.... k.
jonathan is currently patching up the "fun" that sees Parrot doing PMC_sub all over the place without checking it's actually a sub PMC.
$P0 = new 'Integer'\\ncapture_lex $P0\\n # BOOM 13:30
13:30 tetragon joined
jonathan Coke: It may be something that just shows up in eval... 13:31
That's my first guess.
Coke trac.parrot.org/parrot/ticket/180 13:32
jonathan Thanks. :-)
At lesat it's a nice small example.
Coke if that works as we expect, then I don't have to worry about keeping track of everything, I just have to setup each compilation unit sanely.
jonathan++ 13:33
In advance of it working, I can probably work on a helper method to reformat the backtrace into something more tcl-like.
jonathan I *think* that we have the same expectations of what the backtrace should look like here. 13:34
Just need to fix whatever segvs.
13:36 ruoso joined, Whiteknight joined
nopaste "coke" at 12.111.36.194 pasted "sample tcl backtrace." (29 lines) at nopaste.snit.ch/15327 13:37
Coke jonathan: I'd expect the original backtrace to show a file directive only for the first chunk, and then a file/line for the next chunk.
if I just put the 'joe' sub declaration at the bottom of the file, the line directive is still in effect. 13:38
ah, I also need a 'command' directive.
Coke should put in comment annotations there and follow the logic. 13:39
jonathan Coke: That's what I'd expect, yes.
nopaste "coke" at 12.111.36.194 pasted "faux annotations." (36 lines) at nopaste.snit.ch/15328 13:41
Coke whoops. missed "# command " annotations for the procs.
guess I my PBC is going to get much bigger. =-) 13:42
s/I //
jonathan Coke: Annotations are stored reasonably compactly, so it shouldn't be too bad. 13:43
lathos Can someone look at PDD28 and tell me how Parrot_string_grapheme_copy differs from Parrot_string_append? 13:44
Coke lathos: perhaps string_append is ignoring the charset? 13:46
(or encoding. or something other unicodey thing.)
I dislike all the (was foo) references in that doc. 13:47
lathos That gets you into trouble fast, though.
Coke lathos: oh, I'm not saying it's a /good/ idea.
lathos The (was foo) references are annoying but will be helpful when I start trampling on the old code. 13:48
Coke I was merely pointing out some selections of crack you might which to peruse.
lathos Or I could just get rid of it. 13:50
13:51 ruoso joined
lathos OK, and *this* no longer makes sense: bufused is the amount of the buffer used in bytes, strlen is the length of the string in bytes. Why would they ever be different? 13:52
pmichaud one might chop a string but not want to reallocate the buffer?
(just guessing)
lathos At which point you're not using that bit of the buffer. 13:53
Perhaps it should be bufallocated or something.
Particularly since we don't have anything which actually tells us how big the buffer is. 13:54
dalek r35629 | pmichaud++ | trunk/languages/perl6/docs: 13:55
: [rakudo]: spectest-progress.csv update: 285 files, 6263 passing, 0 failing
review: www.parrotvm.org/svn/parrot/revision?rev=35629
Whiteknight lathos: maybe whoever wrote the documentation (possibly me) didn't fully understand the function
dalek r35630 | simon++ | branches/strings/pseudocode (3 files):
: Get chopn_inplace working, and puzzle over strlen/bufused differences.
review: www.parrotvm.org/svn/parrot/revision?rev=35630
lathos Whiteknight: Actually I wrote the documentation. o_O 13:56
Whiteknight oh, I was only guessing. I've written a lot of documentation around here
the quality's not always great, but my enthusiasm is unbeatable 13:57
lathos I guess the problem was I started with reality (pobj.h), and reality is often nonsensical. 13:58
Oh no, it's worse than that. 13:59
pmichaud jonathan: (r35623) in builtins/guts.pir there's a !DEREF sub that will deref a PMC if it's an ObjectRef
lathos I think strings.c expects strlen to be in characters.
pmichaud it will even handle chains of ObjectRefs
jonathan Should we be able to *get* chains of ObjectRefs?
pmichaud I'm afraid it will happen, yes.
jonathan But feel free to change, or I will.
But currently deep in this subclassable subs "fun" 14:00
pmichaud no need to change immediately, just wanted you to be aware of it.
jonathan Thanks - it should use !DEREF though for sure if chains can happen. 14:01
pmichaud we might get chains, but I'm thinking they'll never be more than two deep. 14:02
jonathan *nod*
Hopefully not. We do try and avoid 'em generally.
pmichaud and we might be able to fix things to avoid them, but I see that as an optimization for now.
a lot of it will depend on how we end up handling cumulative constraint properties
14:05 ruoso joined, namenlos joined
Whiteknight anybody here against changing VTABLE_morph to take a string instead of an intval? 14:08
Coke no. 14:12
kj +1
purl 1
Coke sees the magic partcl fairy didn't commit anything again last night. 14:13
dalek r35631 | bernhard++ | trunk/languages/pipp (2 files): 14:17
: [Pipp] Start to treat constants as package vars.
review: www.parrotvm.org/svn/parrot/revision?rev=35631
PerlJam Coke: that's because you didn't leave snacks out for him 14:18
14:19 ruoso joined 14:22 Lorn joined
pmichaud I'm against it. 14:29
(VTABLE_morph)
I'm not arguing in favor of having VTABLE_morph take an intval, but we should not be using strings to identify classes. 14:30
VTABLE_morph should take whatever arguments are accepted by get_class.
wait, this is the VTABLE. I'll rephrase then.
VTABLE_morph should take a class PMC.
jonathan Hmm. Only 3 spectest fails as a result of the reblessing. That isn't so awful as I feared... 14:31
pmichaud jonathan: and I would carefully check the tests. They may be faux passes.
jonathan pmichaud: I know that I removed one hack where we epicly lied in .WHAT. :-) 14:32
pmichaud heh.
jonathan But I really want to map Sub to Block not Code.
pmichaud our lies are catching up to us?
jonathan That doesn't quite work out though. 14:33
Well, I removed the code that was telling it. :-)
So far I'm only reblessing Sub and Method.
pmichaud yes, Parrot doesn't give us a way to represent code that isn't a Sub.
jonathan Don't know if we should re-bless everything else into Block.
Whiteknight pmichaud, that might be a better solution, yes. I can do that instead if people like it more
jonathan Or just map Sub to Block.
Somehow that didn't quite work out...hmm. 14:34
pmichaud why isn't Sub mapped to Code?
I think it needs to be mapped to Code.
14:34 ruoso joined
jonathan Why though? 14:34
{ 42 }.WHAT # Code or Block?
pmichaud that's a Block. But we should rebless it into Block, I think.
phrased differently, "Block" implies a lexical scope. Not every (Parrot) Sub we encounter has a lexical scope. 14:35
jonathan OK, so we should rebless everything.
Can do.
Actually 5 fails I think. 14:36
pmichaud I don't like the "rebless everything" approach either, but it seems the cleanest overall.
jonathan But still, not awful.
pmichaud in terms of what is really happening.
jonathan It means giving *every* block a loadinit...
But we'll cope. :-)
pmichaud agreed, let me think about it a second more.
every block is getting a loadinit anyway, isn't it?
jonathan Is it? 14:37
purl it's it!
pmichaud can you think of any that don't?
jonathan { 42 } # does that get a loadinit?
pmichaud immediate blocks might be the only exception.
my $sub = { 42 }; # gets a loadinit
jonathan Since you can't reference an immediate block, do we care about reblessing them? 14:38
Is that an immediate or a declaration?
pmichaud that's a declaration.
jonathan Right.
pmichaud good point (reference immediate block)
so no, I don't care about reblessing them for now.
I think all of the others already have loadinit 14:39
(because they have signatures)
jonathan Gah. I fail some Parrot tests anyway.
Whiteknight pmichaud, so you are saying that we should have morph_p_s and morph_p_p opcodes, to create from either a string or a class PMC?
14:40 jhorwitz joined
pmichaud Whiteknight: if the IN argument to morph is intended to represent a type (class), then we need a way to specify the class by its class object 14:40
strings are insufficiently precise.
Whiteknight okay, we can do both
jonathan Or perhaps precisely insufficient. ;-) 14:41
pmichaud I'll accept both. Whatever get_class ultimately ends up with.
but the VTABLE_morph should use a class PMC as its argument, I think.
Whiteknight should I maybe be waiting for get_class to solidify before doing this work then?
pmichaud you could solidify get_class :-)
that would make me very happy. :-)
Whiteknight is there a ticket for that work? I'll get right on it if I have some direction 14:42
pmichaud I'll get you the references.
just a sec
Whiteknight thanks
Coke agreed. resolve get_class first, and then use the /same/ mechanism for VTABLE_morph. 14:43
(where the opcodes may present slightly more variants that map to something sane internally.)
pmichaud my latest post on the subject: lists.parrot.org/pipermail/parrot-d...00872.html 14:44
shorten pmichaud's url is at xrl.us/becq86
Whiteknight oh right, I remember this thread
pmichaud allison says that get_class should accept a Key, String, ResizableStringArray
or NameSpace
purl well, NameSpace is the internal namespace for things like $c->forward and template paths, anyway
pmichaud currently this is not the case.
there's a related trac ticket at TT #8.
Whiteknight do we want it to be able to support any array pmc type as well, or just RSA? 14:45
pmichaud allison has not yet responded positively or negatively to my message, but I'm guessing that since she claims that the opcodes already do certain things it won't hurt for us to make them do what she says they should :-)
I'd like it to support any array type. But that's really allison's call.
Whiteknight I'll write it up to be the most general, but comment out the conversial stuff 14:46
pmichaud works for me.
Whiteknight smells another branch cookin'
pmichaud then morph_p_p can simply do the equivalent get_class operation before passing things to VTABLE_morph
(or VTABLE_morph can do the operation... but I think it's cleaner to say that VTABLE_morph always expects a class PMC) 14:47
14:48 ruoso joined
Whiteknight okay sounds good to me 14:49
jonathan Woo, Parrot passes core tests. 14:54
15:03 ruoso joined 15:12 Casan joined 15:13 Casan left, Casan joined 15:16 particle joined 15:18 ruoso joined 15:34 ruoso joined 15:35 Andy joined 15:47 ruoso joined 15:50 riffraff joined, davidfetter joined 15:53 Casan joined 15:56 gryphon joined 15:57 jan joined
riffraff in my tiny language I implemented lexical scope and anonymous functions, but it seems that if I pass a function to another function then at call time it fails to lookup correctly 16:05
I assume it makes sense because the node I generate is :pasttype('call') :name($name), but I'm not sure how should I invoke the current passed object 16:06
meaning: I tried Op.new($var,:pasttype('call'),:name('invoke')) and it did not work
pmichaud it's just call. 16:07
Whiteknight if you're treating subroutines as first-class objects, you probably don't want :pasttype('Call')
pmichaud no :name('invoke')
Op.new($var, :pasttype('call'))
assuming that $var is the function you want called.
riffraff ok, I'll try thanks 16:08
pmichaud if you say Op.new($var, :pasttype('call'), :name('invoke')) then it will try to call the function "invoke" passing $var as a parameter.
riffraff yes, which is what I assumed shall happen, having $var has a kind of self
this, because I tried a=1; a() and I got "no 'invoke' in Integer" :) 16:09
Whiteknight, well, using :pasttype('call') was the path of least resistance up to now 16:12
now I guess I shall switch my calling action to use what pmichaud said, although I'm slightly worried by what may happen later on this road :) 16:13
Whiteknight ok
16:14 leto joined 16:15 Tene_ joined 16:16 ruoso joined 16:20 hercynium joined
dalek r35632 | Whiteknight++ | trunk (2 files): 16:32
: [morph] Update the morph vtable override to take a class PMC instead. This is how it will be in the final version, so make the API match the intended behavior and cleanup the internals later. Also, update the test for this.
review: www.parrotvm.org/svn/parrot/revision?rev=35632
jonathan pmichaud: Down to just one last Rakudo spectest fail, and a full set of Parrot passes, before I can commit this stuff. :-)
pmichaud jonathan: I'm about to commit a small change to Signature.pir 16:33
(basically testing &foo params for Callable role)
jonathan pmichaud: That's fine, shouldn't get in my way. :-)
pmichaud (actually, it just tests that the argument isa Parrot Sub.)
jonathan Oh, you maybe shouldn't need to do that after my patch. ;-)
(As in, look at it at a Parrot level.)
OTOH, language interop...
pmichaud oh, we'll still end up with subs t... right 16:34
jonathan stares at tspecS12-methodscalling_sets.t and wonders, huh...
16:35 barney joined
Tene_ I realized last night that you can pass data back from an exception handler to the code that threw the exception by stuffing it in the payload. 16:36
pmichaud yes. :-)
jonathan pmichaud: Does capture_lex do something smart with multisubs? 16:37
pmichaud yes. 16:38
Tene_ pmichaud: any idea on the feasability of persuading PGE to match as much of a string as it can, but throw an exception if it gets an unexpected EOF, and let the exception handler pass back more text to continue matching?
jonathan pmichaud: Ah, I see it doing it now, yes...
pmichaud Tene_: if this is in regards to the REPL loop -- the grammar takes care of that.
(as in, STD.pm already says how to handle that.) 16:39
Tene_ Okay.
pmichaud We just haven't done anything with it yet (more)
Tene_ purl: tell masak pong 16:40
purl Tene_: what?
Tene_ purl: msg masak pong
purl Message for masak stored.
pmichaud the line in STD.pm is
| $ { $Ā¢.moreinput }
which says that if we read the end of the string, we call the .moreinput method to go get more input :-)
Tene_ Ah, nice.
Okay. :)
pmichaud granted, we don't have an easy way to do this yet, and PGE does need a few changes to support it, but that's the approach I'm likely to take. 16:41
and that HLLCompiler and PCT will want to use.
Tene_ Can you describe what changes PGE would need for that? I think I could implement it with what's there now. 16:43
pmichaud biggest thing I can think of is that every call to a subrule or closure has to reset the current match's idea of the length of the target string, as it might have changed.
Tene_ Ah. 16:44
pmichaud that might be all that is needed, but there could be other stuff as well. 16:45
Tene_ Hmm. Sounds workable. I feel confident about debugging through that.
pmichaud well, in STD.pm there's also the case that various constructs have to set a contextual variable to indicate when they expect "more input" 16:46
and we don't really have that in place yet.
(nor does STD.pm appear to be setting that contextual variable yet) 16:47
jonathan pmichaud: Ah, found the bug - capture_lex tries to treat multisub as if it's a non-multi a bit too early.
pmichaud jonathan: feel free to fix.
jonathan Doing so.
It was completely fine before.
I've now made it so we blow up with an exception if you PMC_sub something that you can't, and if it can't find an inherited Sub PMC to get one from. 16:48
Tene_ My plan for invoking a sub in the current context is to add a method to the Sub pmc that approximates invoke, but uses the context of its caller instead of creating a new context.
jonathan Rather than blowing up with a segfault further down the line.
dalek r35633 | pmichaud++ | trunk/languages/perl6/src/classes:
: [rakudo]: Require arguments to &foo to be callable.
review: www.parrotvm.org/svn/parrot/revision?rev=35633
pmichaud Tene_: how will you get new lexicals into that context?
jonathan (The fact it tries to find the inherited one means subclassing sub now works.)
Tene_ pmichaud: hm? 16:49
pmichaud Tene_: lexicals in Parrot are intimately tied to the subroutine being invoked
Tene_ Ah, right.
pmichaud it's not just a hash that you can add entries to.
i.e., store_lex if there's no outer lexical already defined produces an error
.lex always creates a lexical in the current sub.
Tene_ Hmm. I had a solution for that last night... 16:50
Bah, should have taken notes. 16:51
16:52 Theory joined
Tene_ No, I think I did create a new context, and then I did something funny with the lexpads... 16:52
pmichaud ...create a new context?
oh, you mean in C. 16:53
Tene_ Right.
pmichaud from your method in the Sub pmc.
Tene_ Eh, we'll see what actually works.
pmichaud wait, let me think a second more.
here's a question: What do we want to happen with 16:54
> my $a = 5;
> my $a = 6; # redeclaration error?
or does the new $a simply hide the previous one?
Tene_ I'd expect a redecl error which becomes just a warning in interactive repl. 16:55
pmichaud okay. That makes things very difficult.
jonathan for (i = 0; i < count; i++)
VTABLE_set_pmc_keyed_int(interp, unsorted, i, VTABLE_clone(interp,
uh, sorry
pmichaud my $a = 5;
Tene_ I wouldn't be disappointed by hiding, though. 16:56
pmichaud { my $a = 6; } # redecl error?
lathos Hopefully not.
Tene_ No.
pmichaud agreed. Detecting the difference is the hard part.
doable, but it makes the problem much more complex.
lathos How so? We're in a different lexical scospe.
pmichaud assuming that each input line is its own lexical scope, that's true for the first case as well. 16:57
> my $a = 5;
> my $a = 6; # different lexical scope
anyway, if we treat it as "hiding" instead of a redecl error, then we might be able to get away with saying that each input line is a nested scope within all of the previous input lines. 17:00
Tene_ ... interesting.
pmichaud i.e., we do a "set_outer" of each eval line.
prior to executing it.
jonathan 10,000 lines of REPL use later we have quite some memory usage, but it sounds quite workable. :-) 17:01
pmichaud the other piece that is needed then is a way to inform the compiler of the current lexicals.
jonathan (Plus anyone doing 10,000 lines in the REPL has bigger issues. ;-))
pmichaud and iirc, it's not possible to currently iterate over a lexpad.
Tene_ pmichaud: why can't we use set_outer for eval? 17:02
pmichaud Tene_: we can.
that's not the problem.
the compiler needs to know which symbols are already defined lexicals. 17:03
either that or we turn off strict/warnings when doing REPL.
Tene_ Ah.
pmichaud but even then we have to have some way of knowing if $a is lexical or package scoped.
so we can generate the correct code.
Tene_ Isn't 'no strict' already specced for -e?
pmichaud (or, we turn all variables in to lexicals, which I've also toyed with.)
*into
It's specced for -e, yes. I don't know what people would expect from the REPL. 17:04
regardless, -e is a somewhat different issue than eval in this respect.
(i.e., knowing which variables have been declared already and which have not) 17:05
17:06 Casan joined
Coke ponders again what it would take to switch from pge/tge to pct. 17:07
Coke has to have written this down at one point. =-) 17:08
Andy Anyone talked to chromatic today? 17:12
pmichaud still only 9am on west coast :-) 17:13
17:15 pdcawley joined
Andy pdcawley++ 17:15
pdcawley Hmm? 17:16
Andy I didn't have any place to use your article and didn't have anything to say about it for a Perlbuzz link
pdcawley What'd'I do?
Ah.
Andy but then the SD Times crank came out with that turd pile
so it was great to have. Thanks.
pdcawley has missed the SD times turd pile.
Andy Oh? 17:19
Perlbuzz.com!
purl somebody said perlbuzz.com was fine
dalek r35634 | bernhard++ | trunk/languages/perl6/src/classes: 17:23
: [codingstd] trailing_space.t
review: www.parrotvm.org/svn/parrot/revision?rev=35634
r35635 | bernhard++ | trunk/languages/pipp/src/common (9 files):
: [Pipp] Eliminate usage of macro GET_CONSTANTS
review: www.parrotvm.org/svn/parrot/revision?rev=35635
17:28 particle1 joined 17:33 tomyan left
dalek r35636 | jonathan++ | trunk (4 files): 17:34
: [core] PMC_sub could not check that we actually had something that was a sub underneath, nor did it handle the case where the Sub PMC had been subclassed by a high level class. Lots of code wanted a Parrot_Sub to be handed back by this, and not getting one could lead to segfaults. So this patch plugs those, and also makes it OK to subclass Sub in a high level class and use those subclasses with, e.g. capture_lex and elsewhere. The couple of other seemingly
review: www.parrotvm.org/svn/parrot/revision?rev=35636
r35637 | jonathan++ | trunk/languages/perl6/src (4 files): 17:35
: [rakudo] Re-bless Parrot subs into Block, (Perl6)Sub or Method, so .WHAT answers correctly on them.
review: www.parrotvm.org/svn/parrot/revision?rev=35637
jonathan Those two were some...fun. 17:36
17:50 ask_ joined 17:57 chromatic joined
dalek r35638 | jonathan++ | trunk/languages/perl6 (3 files): 17:58
: [rakudo] Parse submethods and bless them into the Submethod class (also added here). Don't do the correct dispatch on them yet.
review: www.parrotvm.org/svn/parrot/revision?rev=35638
18:08 slavorgn joined
dalek r35639 | bernhard++ | trunk/languages/pipp/t/php: 18:19
: [Pipp] Add TODO test, const in class not named Foo.
review: www.parrotvm.org/svn/parrot/revision?rev=35639
r35640 | bernhard++ | trunk/languages/pipp/src/common (4 files):
: [Pipp] Use package vars for constants
review: www.parrotvm.org/svn/parrot/revision?rev=35640
18:22 alvar joined 18:23 ewilhelm left 18:24 Lorn joined 18:26 davidfetter joined 18:33 Casan joined 18:46 register joined
dalek r35641 | bernhard++ | trunk/languages/pipp/src/pct (2 files): 18:47
: [Pipp] namespace_statement is now namespace_definition
review: www.parrotvm.org/svn/parrot/revision?rev=35641
r35642 | bernhard++ | trunk/languages/pipp (2 files): 18:48
: [Pipp] track the current class in $?CLASS
review: www.parrotvm.org/svn/parrot/revision?rev=35642
pmichaud works on blessing regexes into Regex
jonathan Woo 18:53
davidfetter john woo? 18:54
Whiteknight pmichaud, before I start to do any serious digging, what happens when you try to pass an RSA to get_class? 18:57
pmichaud right now? 18:58
purl puts on her wizard robe and hat
Whiteknight yeah, right now
pmichaud I don't remember. I think it complains that 'xyz' class isn't found.
Whiteknight I don't have time to look at it really until I get home from work, but I want to know what to expect
pmichaud just a sec.
chromatic I think it works. 18:59
It eventually looks up the namespace per the array.
pmichaud "get_string() not implemented in ResizablePMCArray"
see the example in TT #8
chromatic That's an RPA, but he asked about an RSA. 19:00
pmichaud sorry, ResizableStringARray
TT #8 has an RSA.
I just mistyped it here instead of copy+paste as I should have.
chromatic Okay. There's code to handle that case, but it must not work properly. 19:01
NameSpaces are on My List of Hateful Code.
pmichaud currently it tries to stringify the RSA (Bzzt!) and then look up the name of the class using that string (Bzzt!)
that's part of my "we should not be using strings to look up classes" ongoing tirade. 19:02
chromatic Right.
pmichaud it's bad enough that we allow it from PIR, it's worse that Parrot does it internally.
and that Parrot takes things that aren't strings and turns them into strings so that it can do the wrong thing with them.
19:02 MariachiElf joined
Whiteknight thanks 19:03
19:07 ask_ joined 19:08 ask- joined 19:09 braceta left
pmichaud okay, Regex isn't a one line change. Gotta make a PAST::Compiler fix. 19:10
:loadinit doesn't currently work on :compiler(...) blocks. 19:11
pmichaud imagines a good hacky cheat.
dalek r35643 | pmichaud++ | trunk: 19:18
: [DEPRECATED]: Rakudo is leaving the nest after 0.9.0.
review: www.parrotvm.org/svn/parrot/revision?rev=35643
19:19 ask_ joined, cognominal joined
pmichaud hacky cheat didn't work. 19:19
okay, I'll work on Regex a bit later. 19:20
not hard, but not trivial.
jonathan pmichaud: Nor's the dispatcher, but I'm getting there on having *something* working. :-) 19:21
Not dared to run make test yet. ;-) 19:22
pmichaud ;-)
jonathan Screw it, I'll make test..
huh, it all passed...
pmichaud EPIC FA... oh.
jonathan Wow.
pmichaud maybe "make test" doesn't dispatch anything interesting. :-) 19:23
jonathan Indeed.
make spectest has some fails, but that's because I'm not handling PMC inheritance stuff properly yet.
I think that's the primary reason anyway 19:24
jonathan wonders when he's going to run into the evil problem on this task...
Whiteknight hmm. Parrot_oo_get_class calls Parrot_get_namespace_keyed, which calls internal_ns_keyed (src/global.c:125+) which appears to do The Right Thing 19:25
it doesn't appear to stringify the RSA at all
pmichaud Whiteknight: look what happens if the class doesn't exist, though. 19:29
line 222
I'll grant that Parrot_oo_get_class might be working if the class already exists, as would (presumably) be the case for VTABLE_morph 19:30
Whiteknight ah, I see it now
pmichaud so if you wanted to wait on TT #8 and resume VTABLE_morph, I could accept that.
dalek r35644 | fperrad++ | trunk/src/io:
: [win32] warning gcc 3.4.5
: src\\io\\win32.c:230: warning: passing arg 1 of `string_cstring_free' discards qualifiers from pointer target type
review: www.parrotvm.org/svn/parrot/revision?rev=35644
Whiteknight no, if what's happening is what I think is happening, it should be a relatively quick fix
pmichaud I can add some more tickets for other things that fail with arrays and class identification 19:31
jonathan I/someone so needs to fix Inf/NaN on Win32.
I panic everytime I see those fails thinking "oh no, what'd I break" 19:32
pmichaud jonathan: it's okay with me if you mark them as skip/todo.
yes, it lowers our test count -- otoh, we aren't really passing them.
jonathan pmichaud: It ain't bothering me that much.
pmichaud (at least not for Win32)
jonathan pmichaud: And if they don't bother me at all, I'll just never reach the point of being bothered enough to dig in and fix it.
pmichaud we can fix them when we create our own Num PMCs :-| 19:33
jonathan pmichaud: It'd make sense to fix it at the Parrot level.
19:34 riffraff joined
chromatic We need to fix them at the Parrot level. 19:35
pmichaud jonathan: I don't disagree -- otoh, I don't know which will happen first, Rakudo getting its own PMCs or Parrot fixing the ones it has :-| 19:36
in some sense I think Parrot's design is predicated around each language building its own PMC types.
jonathan pmichaud: Even if we write our own, we'll still need to handle that NaN and Inf work differently on Win32. 19:37
pmichaud jonathan: agreed.
although we do have the luxury of declaring that we only work with certain C compilers. 19:38
which Parrot doesn't have.
(I'm not saying we should head down that route, but it's a possibility.)
jonathan I'd really rather not, but yes, it is a possibility.
Coke you could just fix it rakudo and let parrot know they can steal it. 19:39
jonathan OH YES I DIDN'T BREAK CALLING_SETS.T
jonathan has broken that test on a daily basis this week
pmichaud increases the probability factor on the "randomly break this test for jonathan" code. 19:40
jonathan Wow. My dispatcher on the first full spectest run broke only two of 'em. 19:41
pmichaud yay 19:42
jonathan Ah, and they are cases where we inherit a method from a PMC.
pmichaud yummy.
jonathan: (submethods) btw, I've been wondering if Parrot should support submethods.
as in, directly. 19:43
jonathan Perhaps, but it's a case of how to distinguish them. 19:44
pmichaud I was thinking a flag.
jonathan And, do any other languages need them?
pmichaud if there are any flag bits left.
Whiteknight what type of PMC is interp->class_hash?
pmichaud it wouldn't surprise me if we end up coming up with languages that need them.
it's just something I've been wondering. 19:45
chromatic Whiteknight, a NameSpace.
src/global_setup.c:214
Whiteknight okay, thanks
chromatic ack '>class_hash ' src/ 19:46
Whiteknight okay, I think I have a fix for get_class! testing now... 19:47
or, at least a partial fix
for varying definitions of "fix"
jonathan pmichaud: It wouldn't be too hard to do when we get there.
*if we decide we want it
19:50 particle joined, silug joined
Whiteknight no, I fixed the RSA case, but broke the NameSpace case 19:51
19:51 slu joined
Coke wonders if jonathan's recent hacking fixed TT#132 20:00
jonathan Coke: It *may* have. 20:02
But I wouldn't bargin on it.
Whiteknight okay, this issue really isn't as difficult as I was envisioning it to be 20:03
get_class should be mostly fixed by this evening, if I can keep my mind on it
pmichaud, in TT#8, what outputs should each of your two examples have? 20:11
the first one should be "1\\n1", right? What about the second?
Coke jonathan: sadly, no. 20:13
jonathan Ah. 20:19
Same problem space, different problem.
20:19 ruoso joined
Coke ponders, not for the first time, setting ticket bounties. 20:22
Whiteknight ticket boundaries? 20:23
jonathan No, bounties. 20:24
Coke you mean I won't rust?
Whiteknight AH! bounties
Coke </phil a delphia>
Whiteknight yes, I like bounties
and what would we get for completing important tickets?
Coke (esp for those listed here: code.google.com/p/partcl/wiki/ParrotIssues)
Whiteknight: Iunno. a gift card? =-)
some bucks via paypal? 20:25
something purchased off your amazon wish list?
chromatic Contributions to my 401(k)? 20:26
Whiteknight chromatic: I'm interested in that book you blogged about 20:28
Coke chromatic: that's harder for me to arrange.
chromatic Thanks!
Coke, you're telling me.
Coke but I'll give you a ten spot if you fix trac.parrot.org/parrot/ticket/66 20:30
Whiteknight chromatic: if you need a proof-reader or reviewer or something, I'd be happy to do that too
chromatic Coke, did you ever find a PIR version of that? 20:31
Coke chromatic: nope.
dalek r35645 | jonathan++ | trunk/languages/perl6/src (2 files):
: [rakudo] Refactor dispatch. This now calls .HOW.dispatch, where we have a custom dispatcher, which will be filled out with more functionality in the future. Contains support for submethods, which appears to work (need to find/enable/write some spectests).
review: www.parrotvm.org/svn/parrot/revision?rev=35645
Coke chromatic: I may go through those tickets this weekend (the partcl blockers) and see if I can reproduce them.
chromatic That would be lovely. 20:32
Coke git folks: if I want to use git to manage a local repository, how do I set that up?
I only care if I can get to it from my machine. 20:33
chromatic That should be git init.
Beyond that, git doesn't make sense to me.
Coke wonders which of the N git ports is actually git. =-) 20:35
20:38 nnunley joined
Coke chromatic++ # git help 20:39
macport git is git-core 20:42
Tene_ Coke: chromatic is right. 20:48
Coke has created a local git repository 20:50
jonathan Has anyone had any problems building on x86_64 linux? 20:51
(Someone on #perl6 trying to build Rakudo gets a segv in miniparrot.exe)
Coke there's a ticket about that, neh?
trac.parrot.org/parrot/search?q=x86+64 20:52
chromatic jonathan, Allison ran into that yesterday. 20:53
Something in scheduler initialization.
jonathan Ah. :-S
Whiteknight Infinoid mentioned that issue yesterday, but I couldn't duplicate it on my x86_64 Ubuntu box 20:55
PerlJam Coke: How much do you know about git? 20:56
Coke PerlJam: I was given init, and now have status, add, commit, show, and log. 20:57
Coke just wanted something local so he could track work on some scripts and documents.
Coke figures if he has a .git, he can eventually publish them if that matters.
PerlJam okie. Just be aware that "git add" is not the same as "svn add" at all
Coke: do you grok the index?
Coke nope. 20:58
I presume if I do an add and a commit, it's saved.
am i wrong?
Tene_ That's right. 20:59
Coke if so, how is git add not like svn add. 21:00
?
pmichaud because it's "git"? ;-)
PerlJam Coke: you have to "git add" each change
Coke PerlJam: I can't just 'git commit' changes? 21:01
PerlJam sure .. after you've added them :)
Coke .. so add isn't for /files/ ?
chromatic It's for commits you can believe in.
Coke ... ok, then what's commit? 21:02
chromatic: I also don't git it.
PerlJam you can add files just fine. It's just that people get confused when they've just don't "git add file; git commit" and then make changes to file again and have to "git add file" again too.
s/don't/done/ 21:03
(weird typo that)
Coke ... yes, i'm confused.
Tene_ "git commit -a" is the same as "svn commit"
21:03 masak joined
Infinoid I like stg. it acts a little more like you'd expect svn to act. 21:03
Tene_ If you want to use it like svn, that's all you need to know.
Coke Infinoid: unless you expect it to act like svn.
Tene_: thanks.
PerlJam Coke: the "index" is a staging area for commits. "git add" adds content changes to the staging area. "git commit" commits those changes in the staging area to the repo. 21:04
Tene_ "git commit" on its own will only add changes in files that you've run "git add" on since your last commit.
If you want to use it like that, you can run "git diff --cached" to see what's been added and what will be added to the commit when you run 'git commit'
21:05 Lorn joined
PerlJam svn people are also confused when they do "git add file; git diff" and the diff is empty too 21:05
chromatic Darn tootin'. 21:06
pmichaud jonathan: all method calls now go through dispatch?
Coke svn people?
Coke smacks purl.
purl Hit me again, Ike! And next time put some STANK on it!
jonathan pmichaud: Ish. 21:08
$foo.bar(...) will
pmichaud somehow I really feel bad about that.
jonathan $foo.*bar won't because I'm not sure how to make it do so.
pmichaud: It's spec.
pmichaud what's "spec"? 21:09
purl "spec" is the number of tests in the spectest suite
jonathan That methods go through .^dispatch
pmichaud it's spec that every method call has to go through a ....
is that simply the spec on the perl6 wiki or is that actually in a synopsis somewhere?
jonathan See www.perlfoundation.org/perl6/index....mop_oo_api but as far as I can gather, what's under the HOW API is to be spec. 21:10
It's amongst the bunch of "knowhow" stuff that hasn't made it into S12 yet.
pmichaud it's not part of the "as if" rule?
jonathan has badgered a little bit on that but not too much
The what?
purl The is a few features i love in firefox, i will totally love you so. or an article
pmichaud i.e., an implementation is to behave "as if" that's the spec without necessarily doing exactly that 21:11
chromatic purl, forget The
purl chromatic: I forgot the
jonathan Maybe we can cheat somehow. I don't think of a good way off hand.
But, why cheat?
pmichaud because going through an extra level of dispatch this way is slow? 21:12
(note: I haven't measured it)
dalek r35646 | bernhard++ | trunk/languages/pipp (3 files):
: [Pipp] Put class constants into a namespace.
review: www.parrotvm.org/svn/parrot/revision?rev=35646
r35647 | bernhard++ | trunk/languages/pipp/src/pct:
: [Pipp] get rid of special case in the 'constant' action
review: www.parrotvm.org/svn/parrot/revision?rev=35647
r35648 | bernhard++ | trunk/languages/pipp/src/pct (2 files): 21:13
: [Pipp] standardize on lowercase token names
review: www.parrotvm.org/svn/parrot/revision?rev=35648
r35649 | bernhard++ | trunk/languages/pipp/src/pct (2 files):
: [Pipp] remove trailing spaces
review: www.parrotvm.org/svn/parrot/revision?rev=35649
pmichaud because I don't necessarily buy that what appears on the perl6 wiki is spec, absent a declaration from someone that it's so. 21:14
s/someone/someone like TimToady/
jonathan knowhow is in STD.pm and not S12. 21:15
pmichaud I buy that what is in STD.pm is spec, though.
but I don't see 'knowhow' in the wiki 21:16
(at least, not in that page)
jonathan Yes. As I understood it, what is in the HOW API is what you implement, in a metaclass. 21:17
(e.g. inside the knowhow)
pmichaud okay, so the class has to follow the API, does that automatically imply the objects must do so as well? 21:18
jonathan I don't understand what you mean by that?
pmichaud sorry, the HOW has to follow the API
but do the objects always have to go through the HOW?
jonathan So far as dispatch goes, I believe that's through the HOW. 21:19
pmichaud I already know that parts of the oo API are wrong -- for example, it shows BUILD and DESTROY as being submethod in Object when they're really method.
I just don't want to blindly accept smop's view of how OO should work.
If that is indeed the Perl 6 view, then great, but I'd like to see that specced somewhere (more) 21:20
granted, you're doing that particular part of the spec, so you have some latitude to say "this is how it will work".
I just feel like it _really_ disadvantages Rakudo and Parrot. 21:21
jonathan (smop) I don't either - I've already pointed out at least one buy in the HOW API myself (which has been fixed)
pmichaud I would feel better if dispatch were an opcode or otherwise implemented in C, however.
jonathan Oh, I expected that we could do a chunk of what I'm doing now in PIR in C.
pmichaud or if Parrot gave us a way to override method dispatch.
chromatic <aol>me too</aol> 21:22
<pmichaud> or if Parrot gave us a way to override method dispatch.
(Sorry, just had to get the top posting in there)
pmichaud okay.
if we go from the understanding that this approach to dispatch is going to be heavily optimized at some point, I feel better about leaving it there.
I recognize we're likely to have to override Parrot's dispatch mechanism at some point anyway. 21:23
jonathan I know exactly how well the way I'm doing it now isn't going to perform.
I'd like to get the semantics right _first_ and optimize _later_. 21:24
pmichaud let me summarize it this way: I want to make sure that the spec isn't being unduly influenced by any particular implementation (including Rakudo/Parrot) (more)
however, you (and ruoso) are the people primarily working on this part of the spec, and if you think this is indeed the best way to go from a Perl 6 perspective, that's good enough for me. 21:25
I just want to make sure we don't pessimize ourselves out of a usable implementation.
jonathan Sure, I see where you're coming from. 21:26
pmichaud good enough for me. :-) 21:27
jonathan I'm not coding at the moment with a view to performance.
pmichaud I don't care about performance too much now, as long as we can eventually get it back.
that's what I want to make sure of.
(on another topic) -- that's part of what bugs me about some of the mmd changes that went in -- it's lost performance that I'm not sure we'll ever get back, and as such I wish I had known what was being contemplated before it went in. 21:28
at least to be able to comment on it.
chromatic I think we can get them back. 21:29
We just have to stop treating registers as if they were stacks.
... also stop converting to and from C calling conventions via varargs.... 21:30
PerlJam chromatic: when's that going to happen exactly? :)
chromatic I'm waiting for the calling_conventions branch to land.
jonathan Our calling conventions are, currently, _slow_.
pmichaud from a Rakudo perspective, I haven't seen how the opcode mmd is much help.
jonathan ERm
Our current implementation of the calling conventions...
pmichaud maybe it helps with other HLLs, but for rakudo, it's just unnecessary overhead.
jonathan Aye 21:31
dinner is cooked - back soon
dalek r35650 | bernhard++ | trunk/languages/pipp/src/pct: 21:34
: [Pipp] some reformating
review: www.parrotvm.org/svn/parrot/revision?rev=35650
pmichaud jonathan: thanks for the info and discussion, btw :-)
21:35 On_office joined
jonathan pmichaud: Back :-) 21:46
pmichaud: I do think there will be plenty of room for improvement in performance. 21:48
And on the "as if" thing - yes, we can probably skip actually going to .dispatch 21:49
But I really don't want to such trickery, until we have a pretty complete S12 implementation and tests covering it.
*to do
pmichaud well, as I said earlier, I feel much better about .dispatch if it's not PIR that's doing the dispatch.
I'd feel *really* better if we were also fixing our arguments at the time :-)
jonathan *nod* 21:50
cotto trac.parrot.org/parrot/attachment/...cking.diff
shorten cotto's url is at xrl.us/becsvz
jonathan Yes, but if I go write this in C now it's going to be a lot harder to get a first cut of what we actually need.
pmichaud agreed.
in other words, we're fine, I just needed to work it through in my head.
I do wonder how much we've slowed down Rakudo, though. Probably much less than I fear. 21:51
jonathan My thoughts on this are
pmichaud bravely performs a commit without spectesting after jonathan++'s changes.
PerlJam Was there a "optimize" target on the parrot roadmap?
pmichaud waits for RT to come up so he can report the correct ticket number in the commit. (sigh) 21:52
jonathan 1) The dispatch to .dispatch is not so bad - HOW has it right there without walking the MRO.
2) We were walking the MRO anyway in C. We're not re-doing that work again. 21:53
pmichaud oh, that's another question. Why ClassHOW? Shouldn't dispatch simply be a method on P6metaobject ?
never mind, they are.
I see that now.
jonathan They are.
But I ponder we may or may not want to subclass P6Object.
pmichaud I think I would've picked a name other than ClassHOW. Like Metaobject :-) 21:54
we may want to subclass P6Object at some point, yes.
jonathan I followed a smop precedent on the name, but yes. :-)
I think the thinking was <name of package declarator>HOW
pmichaud it will be interesting to balance between having things in Rakudo and P6object -- I expect us to migrate things back-and-forth there for a bit.
jonathan Yeah.
21:54 Whiteknight joined
jonathan We need to not get in the way of other folks using P6Object. 21:55
pmichaud at any rate, I have no problem with Rakudo adding its methods to P6Object.
jonathan But equally keep it functional enough.
Aye, well, it's not a problem while we don't have a bunch of other languages heavily using and wanting to also customize P6Object.
pmichaud Since P6Object's purpose is to provide a Perl 6 like OO interface, it's okay if Rakudo customizes it with Perl 6 features :-)
jonathan True. I don't know how widely applicable you intend it to be. 21:56
pmichaud I'm waiting to see how widely applicable it becomes.
jonathan e.g. is it in runtime/library for the benefit just of PGE and PCT, or are other languages potential customers for it too?
OK.
pmichaud other languages are potential customers.
jonathan In that case, let's just poke our stuff in as I have here for now.
And if we see it's going to cause issues, we can subclass it. 21:57
pmichaud In many ways P6object is what I would've like to seen Parrot's object system be based on :-)
i.e., prototype-based OO
jonathan see or have seen? 21:58
pmichaud have seen
I doubt it will happen.
which is why P6object exists, so that I can have the object system I prefer :-)
jonathan Doesn't mean we can't PMC-ify P6object if we can see it's going to give us wins. 21:59
pmichaud it's more to do with the interface, actually
but yes.
i.e., things like .isa instead of isa $P0, ...
and being able to call ".new" on a protoobject to get a new instance -- stuff like that.
chromatic That *does* help give a nice metaclass feel to a language. 22:00
pmichaud with the exception of .dispatch, I don't see the methods in P6object as having to be heavily optimized for performance, as they're (1) pretty short and (2) not called too frequently.
jonathan *nod*
pmichaud so, PMC-ifying it doesn't feel like it would be that big a win on its own, unless it evolved to replace the existing Class and Object PMCs 22:01
RT slow again.
jonathan Well, there's an vtable interface to implement. 22:02
The theory goes that if you wrote PMCs that also implement such an interface, then it should all work out.
And you should be able to have interop between different class systems based upon that. 22:03
dalek r35651 | pmichaud++ | trunk/languages/perl6/src/classes:
: [rakudo]: Change Grammar.ACCEPTS to Grammar.parse.
review: www.parrotvm.org/svn/parrot/revision?rev=35651
pmichaud sure, but if someone tries to do $P0 = new ['Something'] then it doesn't make it through our shiny .new interface.
(yes, we could fix it to redispatch to that.)
jonathan Does that not go through VTABLE_instantiate? 22:04
pmichaud sends a message to perlbug-admin@perl.org
22:09 particle1 joined
jonathan procrastinates his journal writing until tomorrow 22:15
Infinoid considers procrastinating, but puts it off 22:18
dalek r35652 | cotto++ | trunk/src/pmc: 22:29
: [pmc] convert unionval to ATTR in the Capture PMC
review: www.parrotvm.org/svn/parrot/revision?rev=35652
22:41 register joined 22:43 Limbic_Region joined 22:45 braceta joined 22:55 iblechbot_ joined
dalek r35653 | cotto++ | trunk/src/pmc: 23:00
: [pmc] convert unionval to ATTRs in TQueue
review: www.parrotvm.org/svn/parrot/revision?rev=35653
Tene_ Hmm. I need to look up that patch Jonathan gave me for examining the loadlib/load_bytecode issues. 23:06
23:18 ruoso joined
dalek r35654 | Whiteknight++ | trunk/src (2 files): 23:19
: [Core] Some quick-hack fixes for TT#8. ResizableStringArray should now be more usable with get_class.
review: www.parrotvm.org/svn/parrot/revision?rev=35654
Whiteknight pmichaud, when you get a chance check out r35654. It might fix your RSA get_class problem 23:21
need to clean it up under the hood, but should be functionally what you need
pmichaud I'll look at it, yes. Thanks! 23:26
dalek r35655 | cotto++ | trunk/src/pmc: 23:27
: [pmc] undoing Capture ATTR conversion, since CallSignature extends it
review: www.parrotvm.org/svn/parrot/revision?rev=35655
23:29 TiMBuS joined 23:44 Whiteknight joined 23:53 kid51 joined