Parrot 0.6.0 "P&P" released | Please mentor for SoC | parrotcode.org/ | YAPC::NA talks deadline is Mar 31 | tinyurl.com/2pmnlq
Set by moderator on 18 March 2008.
00:29 daxelrod joined
Coke I wasn't sending an email. 00:57
00:57 grim_fandango joined
Coke So, I'm a bit confused. 00:57
"I'd" => "i would (if I were you)"
Coke tries to figure out what tense that is. 00:58
kid51 Who are you talking to? Yours is the first post in nearly an hour!
01:00 wknight8111 joined
PerlJam kid51: an hour is nothing in the surreal time that IRC provides 01:01
kid51 As Coke would say, "Heh!" 01:02
01:02 rdice joined
PerlJam kid51: FYI, about 3 hours ago bgeron asked if parrotcode.org would be interested in something called "zeroinstall", Coke guided him a little. 01:05
Coke 19:02 <@bgeron> either the mailing list is slow, or Coke hasn't sent his email yet :) 01:06
svnbotl r26530 | jkeenan++ | trunk: 01:59
: Skip all manifest tools tests when not working in a checkout from the repository. All our manifest-generating tools depend on running version control functions. Hence, there's no point in trying to generate a MANIFEST in a release version and no point in testing the MANIFEST-generating tools in a release version.
diff: parrotvm.org/svn/parrot/revision/?rev=26530
02:19 grim_fandango joined 03:00 peepsalot joined 03:23 Andy joined 03:36 Theory joined 03:40 contingencyplan joined, peepsalot joined 04:16 AndyA joined 05:08 contingencyplan joined 07:16 uniejo joined 08:04 kj joined 08:10 marmic joined 08:15 jrt4 joined
svnbotl r26531 | fperrad++ | trunk: 08:16
: [pct]
: update doc
r26532 | fperrad++ | trunk:
: [Lua]
: minor refactor
diff: parrotvm.org/svn/parrot/revision/?rev=26532
08:25 iblechbot joined 09:54 ruoso joined 10:15 wknight8111 joined 10:54 IllvilJa joined 11:25 rdice joined 12:19 marmic joined
bgeron Coke: ah, I thought you were, sorry :) 12:21
I'll mail soon then (at school now)
12:34 skids joined 12:44 particl1 joined 13:09 gryphon joined 13:19 jq joined 13:29 wknight8111 joined, iblechbot joined 13:53 rdice joined 14:00 Andy joined 14:30 davidfetter joined 14:35 avar joined 15:13 lathos joined
Coke lathos: hio. Any feedback on the feedback, or is that in allison's court now? 15:39
lathos Allison is editing it all up. 15:40
Coke ok.
svnbotl r26533 | kjs++ | trunk: 15:46
: [pct] Fix some NQP in the comments, to make it actually work, if needed. So, no changes are made to executable code, only to the NQP in the comments that is implemented in PIR. This as a preparation of a possible bootstrap of NQP.
diff: parrotvm.org/svn/parrot/revision/?rev=26533
pmichaud kjs++ 15:48
kj oh hi patrick. Congrats on your marriage!
pmichaud thanks! 15:49
we're very happy :-) 15:50
15:50 sjansen joined
kj that's good to hear :-) 15:50
and good to see you back on #parrot :-)
I tried to bootstrap NQP this afternoon. I got it working mostly, but I couldn't use this version to compile my tutorial language.
pmichaud glad to be back
kj there are some parts that must be fixed before it can work. 15:51
Coke groups.google.com/group/perl.cpan.t...+-perl.cvs :: fail report on parrot 0.6.0 15:53
shorten Coke's url is at xrl.us/bh8k6
particl1 kj: care to share your attempts in the form of a branch?
pmichaud just make it a subdir of compilers/nqp 15:54
as opposed to a branch
I'm not in a great hurry to have self-hosted nqp as the primary implementation, but it would be very useful to have it in compilers/nqp for testing and comparison
Coke lathos: can you remove the very old version of parrot you have on CPAN? 15:55
(0.0.4)
(I see cpan testers are still dutifully testing it.) 15:56
kj pmichaud: I made languages/nqp; that's easier to set up
pmichaud hmmm
that might confuse people
kj but maybe a subdir of nqp is easier
yea
s/easier/more clear/
pmichaud they should of course continue to use the same grammar -- only the actions implementation is different
kj it's pretty much the same; except for some operators: I implemented them as PIR subs instead of the inline stuff 15:57
pmichaud that won't work though
the operators need to be inline because NQP assumes there's no runtime
kj ah ok 15:58
well, I had trouble getting it to work
pmichaud i.e., when rakudo uses NQP to compile its actions methods, those methods can't assume that NQP runtime operators are available
kj mm right
I see
ok, so that should be fixed then. 15:59
pmichaud anyway, I think a 'selfhost' version of NQP in compilers/nqp would be useful
it could use the same test suite
kj How should I add it?
pmichaud for now, a 'selfhost' subdir of compilers/nqp would seem to be okay 16:00
or even an actions.nqp file instead of actions.pir
kj and within that, a directory structure as generated by tools/dev/mk_language_shell?
or just all files in that selfhost dir
pmichaud no, I wouldn't recreate the directory structure
kj actions.pl right?
pmichaud again, the only difference between a self-hosted nqp and the current version of NQP is the source of the actions 16:01
so I think we'd only need a separate actions file, and perhaps a different nqp.pir
particl1 or make it an option to pass to nqp.pir
pmichaud (that included the compiled form of actions instead of the pir version that is included now)
(option to pass) that sounds tricky
because we'd have to know which set of action methods to load 16:02
could have two action objects, I suspect
one that uses the PIR-generated action methods, one that has the nqp-generated ones
and then the option to nqp simply says which object to use in the HLLCompiler
kj i see 16:03
pmichaud but for now I'd do it as two separate executables
where the only difference is the source of the actions, and possibly a separate nqp.pir
I have to run errands -- bbl
parrotsketch in 85, yes? 16:05
oh, wait. 18:30 UTC, yes? so that would be 145 16:06
okay, that gives me plenty of time
bbiab
16:16 Theory joined
particl1 i'll be missing parrotsketch today 16:18
report posted. 16:28
Infinoid wknight8111: ping 16:29
wknight8111 hello
purl que tal, wknight8111.
wknight8111 que tal, purl
purl bonjour, wknight8111.
Infinoid hi! what do you think we should do about RT #51988? 16:30
wknight8111 ...let me look it up
Infinoid its the _dup thing
I'm not really sure what the motivation is... the patch breaks on linux, but does it fix warnings on win32? if so, we might want to do something conditional there
wknight8111 Win32 warns that "dup" is deprecated and we should use "_dup" instead 16:32
it's a small matter, and just because it's deprecated doesnt mean it's an error, yet
Infinoid but it probably will be, someday
fair enough. what do you think about putting the #define in an #ifdef WIN32, or the like?
svnbotl r26534 | kjs++ | trunk:
: [nqp] add initial actions file for NQP, written in NQP. Update MANIFEST.
diff: parrotvm.org/svn/parrot/revision/?rev=26534
particl1 #define Parrot_dup
wknight8111 we could make a simple macro, #ifdef _WSV_CRT #define DUPLICATE _dup .... 16:33
right, something like that
Infinoid will test with mingw, to see whether the warning is msvc-specific or not
wknight8111 i should have done it with mingw too, before I submitted. I thought the patch was going to be mostly harmless 16:34
Infinoid don't worry about that. it got us thinking about it, which is a very good thing :)
so far, it sounds like... Parrot_dup is defined to dup() on most platforms, and _dup() on MSVC 16:36
that will make everyone happy. right?
wknight8111 makes me happy 16:37
particl1 smoke testing will bear that out
sounds good, though
Infinoid sounds like a good start, then
nopaste "Infinoid" at 75.5.247.241 pasted "rt51988-try1.diff" (49 lines) at nopaste.snit.ch/12570 16:53
Infinoid wknight8111: any chance you can try that on msvc and see if it warns?
(that define probably isn't in the right place, but first things first) 16:55
kj wknight8111: hi, you asked for my squaak implementation, no?
svnbotl r26535 | kjs++ | trunk: 16:57
: [nqp] update the TODO file to add some notes about the bootstrap version, so I don't forget these.
diff: parrotvm.org/svn/parrot/revision/?rev=26535
wknight8111 kj, you sent it to me. thanks 16:58
Sure, i'll try building now
17:07 chromatic joined 17:08 kid51 joined
particl1 /usr/bin/ld: crt1.o: No such file: No such file or directory 17:14
collect2: ld returned 1 exit status
what's that mean i'm missing?
Infinoid either gcc or glibc :)
particl1 i have gcc
what's the debian pkg name for glibc? 17:15
Infinoid probably libc6-dev is what you're after
do other C programs compile successfully?
debian has a nice "build-essential" package that covers all that stuff
particl1 sudo apt-get install build-essential 17:16
Infinoid++
wknight8111 darn, it didn't work. I must have messed up the macro. What should I test for, _MSV_CRT? 17:26
jonathan Parrot Sketch is about 1 hour away, right? 17:27
kid51 Damn, I forgot that it's localtime changed when we went to DST. 17:28
Coke jonathan: believe so, yes. 17:29
so how does one get ops in a discussion where no one has ops? 17:30
kid51 1830 GMT correct? 17:31
chromatic Yes.
kid51 Coke: I think you have to know one of the #perl ops.
Coke Crap. YA week of "didn't really do anything." 17:32
Infinoid wknight8111: no idea. _MSC_VER seems to be used elsewhere
wknight8111 Infinoid, that's what I was thinking about. That's probably it
...building again... 17:33
Coke chromatic: didn't you run some of the SDL stuff recently? 17:34
chromatic I had it working with PDD 15.
Coke rt.perl.org/rt3//Ticket/Display.html?id=48727 :: remove classoffset opcode :: except that SDL is using it. 17:35
chromatic Which file? 17:36
purl well, Which file is that error in
Coke though I think that classoffset already throws an exception, so the examples *can't* work.
cognominal jonathan, thx for reviewing my patch. I am studying STD.pm to steer in the right direction
Coke in examples/sdl/{minesweeper,tetris}
chromatic Those should be easy to fix. 17:37
I'll work on them. 17:38
Coke danke.
(one more deprecation gone.)
17:41 kj joined
jonathan cognominal: Welcome. :-) I'm going to try and sort out some of the remaining colonpair bits. :-) 17:41
cognominal also, :a is :a(0) not :a(Bool::True) 17:43
I don't know if you have corrected
17:43 barney joined
Infinoid wknight8111: *sigh*. my winxp installation is broken, not going to be able to test mingw for a while, sorry 17:44
cognominal I am trying to understand namespaces too cuz HLLCompiler currently compiles in the global namespace
jonathan cognominal: :a is equivalent to :a(1), you mean?
cognominal yes 17:45
jonathan Yup, just saw the bit of S02 that says that, you're completely right.
cognominal you did it equivalent to :a(True) and I followed suit which was wrong
easy mistake 17:46
Coke [18:45:32] t/postconfigure/03-revision....................1/8
has been sitting there for some time on feather (svn checkout)
(local mods)
... ah session died. whoops) 17:47
whoa! no, not dead, ^C started it going again.
jonathan cognominal: Fixing it now. 17:48
But got some other patches locally related to colonpairs that are halfway through too. :_) 17:50
wknight8111 Yes, that fix killed the warning on cl.exe 17:52
i actually don't have mingw here, so I can't test it now
cognominal jonathan, will you be able to make it to Albi may 30 and 31? 17:53
conferences.mongueurs.net/fpw2008/ 17:54
or anyone here who wants to talk anything related to parrot
jonathan cognominal: 'fraid not - I've already had vacation planned for those dates since before FPW was announced. 17:55
Shame, because FPW is a good time.
Infinoid wknight8111: thanks, I'll sort this out and check it in, and test mingw later on when I have the chance
jonathan say (:a).perl
:a
say (:!a).perl
:!a
my $a = 'foo'; say (:$a).perl
Infinoid I don't think this will break mingw, I'm mainly just curious if the warning shows up there too.
jonathan :a<foo>
Woo. :-) 17:56
cognominal cool
jonathan The .perl method is thanks to you. Plus a couple of little tweaks. :-)
cognominal and :a(2) ?
jonathan Not implemented yet.
cognominal I don't think parens are necessary 17:58
in (:a).perl
svnbotl r26536 | chromatic++ | trunk:
: [examples] Rewrote away classoffset indexed attribute access in Mines::Field.
r26537 | coke++ | trunk:
: [deprecated]
: Remove deprecated vtable entry "subtype". No tests fail.
: Resolves RT#48569
r26538 | jonathan++ | trunk:
: [rakudo] Add .perl method for Pair class. Patch courtesy of cognominal++, with some tweaks from moi.
diff: parrotvm.org/svn/parrot/revision/?rev=26538
jonathan cognominal: Yep, it works without too. 17:59
cognominal in fact, I did not realize that test were working in parrot , I bundled them but commented them out in my patch 18:01
btw it seems that in perl6 the left side of a => must be a bareword 18:02
if I trust STD.pm
jonathan, I don't know if that affect your last patch 18:03
svnbotl r26539 | jonathan++ | trunk:
: [rakudo] Add missing desigilname token to the grammar.
diff: parrotvm.org/svn/parrot/revision/?rev=26539
cognominal jonathan, .return is supported as long it is not buried in a block? 18:05
jonathan cognominal: My reading of STD.pm is the same, yes, it's an <ident> there. 18:06
.return in what context?
cognominal it would not work in inner block in code generated by rakudo? 18:08
jonathan Not if you actually want to return from the outer block, no.
We haven't got support for return like that yet.
cognominal the code generated should trhow and catch an appropriate exception? 18:09
Coke yes.
cognominal jonathan, in the .perl, it seems that the fatarrow is not necessarily a naked string? 18:10
I mean the string in the left of => 18:11
jonathan Yeah. That could do with a fix.
Guess in that case you have to instantiate a Pair object.
svnbotl r26540 | jonathan++ | trunk: 18:16
: [rakudo] Fix :a and :!a to meet S02.
diff: parrotvm.org/svn/parrot/revision/?rev=26540
jonathan Oh, fatarrow is already implemented. 18:18
jonathan may have done it, but he sure doesn't remember doing it
(whoeverdidit)++ 18:19
cognominal you did it I think
jonathan oops, self-karma.
:-)
cognominal I think that when heredoc will be implemented, rakudo will be able to compile itself 18:21
kj w.r.t. the returning of subroutines and exceptions: It seems to me that it doesn't work with the current infrastructure, does it?
svnbotl r26541 | jonathan++ | trunk: 18:22
: [rakudo] Implement simple varname case for colonpairs, e.g. :$foo.
diff: parrotvm.org/svn/parrot/revision/?rev=26541
jonathan kj: I believe not, no.
kj I mean the PCC and flags like :flat and :slurpy. Whenver you "throw" something, it is converted into an Exception object
cognominal I forgot that
kj so that should be adjusted
Coke why is Parrot_exit defined in both embed.h and exit.h ? 18:25
pmichaud cognominal: (heredoc) -- do we need full heredocs, or just the limited form that NQP is currently using?
18:26 cotto_work joined
cognominal that depends if you want to aim toward perl6 or toward self-bootstrapping 18:26
18:26 kid51 joined
chromatic Coke, silly duplication I suspect. 18:27
pmichaud well, I've already commented that self-bootstrapping isn't my highest priority at the moment :-)
svnbotl r26542 | chromatic++ | trunk:
: [examples] Removed deprecated classoffset opcode from Tetris example.
diff: parrotvm.org/svn/parrot/revision/?rev=26542
Coke chromatic: so I'm guessing remove it from embed.h and see if anything breaks?
Infinoid won't embedders want to exit cleanly too? 18:28
18:28 purl joined
Coke I'm getting build warnings from it being re-declared, so something is including both embed.h and exit.h 18:28
is the problem with the thing doing the including? 18:29
chromatic embed.h seems right to me.
#ps in one
cognominal pmichaud, can you see a better way to patch the problem described in rt.perl.org/rt3/Public/Bug/Display.html?id=49758 18:39
svnbotl r26543 | rblasch++ | trunk:
: Updated PLATFORMS for GNU/OpenSolaris (NexentaOS).
diff: parrotvm.org/svn/parrot/revision/?rev=26543
pmichaud cognominal: I think the patch avoids the problem but doesn't actually fix the underlying problem 18:41
the underlying problem probably has something to do with the way that subs are being generated or managed 18:42
otoh, Parrot really should never produce a "Bus error"
chromatic I've been slowly removing buses from Parrot over the past year. 18:43
Coke we're going to a complete mass transit system.
cognominal :)
pmichaud I didn't see in the ticket itself, but does the problem persist if parrot is invoked with -G ?
cognominal better than a complete mess 18:44
never tried -G
Coke wolf whistles at pmichaud's honeymoon comment. 18:45
cognominal I think as I said in the thread of the bug report, that the rakudo shell should not wraps a block as part of the eval but that a separate issue even if related 18:46
chromatic If someone can reproduce the problem in simple PIR, I'll fix the seggie.
Coke wolf whistles at pmichaud's pictures comment.
pmichaud right now PCT only knows how to create subs
cognominal the problem is that the interpreter should not do a bus error on a missing outer block 18:47
what I did is to avoid generating the reference to the missing outer block
pmichaud well, PCT should certainly not generate an :outer flag on a block that doesn't have an outer
cognominal so that's very easy to reproduce with simple pir
chromatic Throw a test case my way and that'll be one fewer segfault. 18:48
cognominal pmichaud, I agree but the interpetor should to better than a bus error
pmichaud correct
er, correct if you mean that Parrot should do better than a bus error 18:49
cognominal what is the way to die in pmc code? 18:53
chromatic Throw an exception object. 18:54
Infinoid Andy: ping
Andy sir
Infinoid hi! do you know what the difference between PARROT_HAS_SNPRINTF and PARROT_HAS_C99_SNPRINTF is?
Andy no.
chromatic For a piece of candy would you figure it out? 18:55
pmichaud how about a Scooby Snack?
purl Rank roo, pmichaud!
Infinoid wknight8111 reported RT #51980 to consolidate the two, but I'm not sure whether we want to. (His win32 platform defines the first but not the second; my linux platform defines both.)
wknight8111 never discount the possibility that i'm stupid and sleep-deprived 18:56
Infinoid wknight8111: it would be nice to know what the difference is and whether it's important, your solution might be spot-on :)
18:59 Psyche^ joined
Infinoid ok. since noone admits to having anything to do with snprintf, its fair game to rip it apart and see who complains. :) 19:03
chromatic That's why we have the tests. 19:04
And may I add, you who are about to die, the rest of us salute you.
Infinoid cracks up 19:05
chromatic What, varargs, memory management, and IO all smooshed together don't worry you?
Infinoid if snprintf does any IO, I've really broken it 19:06
chromatic I'm thinking of sfnprintf perhaps. 19:07
Coke kid51: have you tried re-installing the developer tools from apple? 19:08
(on the chance that the custom gcc 4 overwrote some system file somewhere?)
svnbotl r26544 | jonathan++ | trunk:
: [rakudo] Implement pairs of the form :a(...) (postcircumfix:()).
diff: parrotvm.org/svn/parrot/revision/?rev=26544
kid51 Coke: If I get time I will try that. 19:09
Coke I also wonder if that particular config step is ignoring your explicit settings you've passed to configure.
19:10 mire joined
chromatic If it's the shell script I just looked at, the MACOS_INSTALLATION_TARGET environment variable isn't getting set correctly. 19:10
It persists through the Configuration process, but it's not present for the make process (and the linking process). 19:11
kid51 Coke: I'm pretty sure it's not. I can track those with Parrot::Configure::Trace
chromatic: The problem is in the configuration process. I can build and test successfully (though perhaps the resulting parrot executable is different).
wknight8111 what does the warning mean "Null PMC acces in invoke()"? 19:12
chromatic You tried to invoke something that's not a Sub. 19:13
cognominal that it tries to find a routine and fails
kid51 chromatic: Besides: What allison had me set was this:
[trad] 516 $ echo $MACOSX_DEPLOYMENT_TARGET
10.3
chromatic In your .bashrc or .tcshrc or .profile? 19:14
kid51 .bashrc
cognominal ... so you get a null PMC on subsequent invoking
wknight8111 okay thanks. now i need to debug and figure out what i'm doing wrong
davidfetter anybody know when yapc::na's going to announce which talks made it? 19:15
kid51 barney: Does my patch in rt.perl.org/rt3/Ticket/Display.html?id=51860 work for you re manifest tests?
davidfetter: IIRC Josh extended deadline to Mar 31, so decisions should be made soon after. 19:16
davidfetter thanks :)
Coke So far, only kid51 has updated that wiki page (so says my RSS feed) 19:17
davidfetter can most easily make travel plans when he knows he'll be speaking
Coke (regarding talks)
19:17 contingencyplan joined
barney kid51: Yes, I've closed that ticket. Thanks. 19:17
kid51 Yes, and I would like some co-leaders to bring off that session.
barney: Thanks.
Coke kid51: depending on when that session is, I will of course be there. 19:18
PerlJam makes a(nother) mental note to read kjs' PCT tutorial 19:23
kj PerlJam: You're editor for the perl review right? 19:24
PerlJam not I 19:25
that's bdf
kj oh sorry I thought that was you ;-) 19:26
PerlJam kj: Are there no back links to the other episodes (I just glanced at #9) 19:27
?
kj no. that's a good point.
not sure how to do that ...
something with http....#episode8 I think, right?
PerlJam beats me :)
kj oh. I'm not really into html 19:28
19:32 peeps[work] joined 19:34 contingencyplan joined
cotto_work kj, when someone's looking at individual episodes, there are links to the next/prev episodes at the bottom 19:37
cognominal normally imcc trips when compiling a sub with a fake outer: compilers/imcc/pbc.c:969: IMCC_fatal(interp, 1, "Undefined :outer sub '%s'.\\n", 19:38
but apparently that's different within an eval 19:39
kj cotto_work: you mean newer and older post? 19:40
cotto_work eys
kj that works kinda, but it's not ideal
cotto_work s/ey/ye/
kj i mean, it's not clear what those posts are
but it's not a big deal I think
pmichaud imcc gets called differently from within parrot than as parrot 19:42
for example, try compiling a string using the object that comes back from $P0 = compreg 'PIR'
I had a post (perhaps a ticket) that illustrated this -- just a sec
19:43 marmic joined
Coke needs a tagline description of parrotblog.org 19:46
chromatic It's a blog. For parrots.
Coke ... right. committing...
pmichaud rt.perl.org/rt3/Ticket/Display.html?id=47956 19:47
shows an example where invoking imcc as "parrot" and using the internal compreg "PIR" compiler produces different results 19:48
kid51 Coke: apropos parrotblog.org. Couple of weeks ago, I posted on list re difference between that site and planetparrot. Didn't get any replies. 19:49
cognominal pmichaud: interesting
pmichaud difference between planetparrot and parrotblog: 19:52
planetparrot is an aggregation of feeds/blogs that are related to parrot (could come from multiple sources)
parrotblog is a place where people can blog about parrot that isn't use.perl (i.e., some parrot news might not be appropriate for a perl-only forum, or perhaps should have a larger reach) 19:53
jonathan really should get around to writing a Rakudo-related blog post sometime soon. 20:00
Coke kid51: I have that request starred to entice me to reply once my waiting for allison times out. =-) 20:04
planet parrot is an aggregate of any parrot-related blogs. 20:05
parrotblog is, er, for, um, parrot related bloggin?
Coke seems pmichaud has already opined on this.
kid51 It would be good to get that distinction added to the Resources page at parrotcode.org 20:10
Coke <small>A blog dedicated to Parrot news, tutorials, and more</small> 20:18
vs.
<small>An aggregator of select Parrot-related blogs</small>
that ok?
purl NO, it isn't
pmichaud for the second 20:19
"An aggregator of blogs from Parrot-related contributors"
Coke t/postconfigure/03-revision seems to be hanging pretty regularly now on feather.
pmichaud since planetparrot doesn't seem to distinguish non-parrot posts from parrot posts
or better 20:20
"An aggregator of blogs from selected Parrot contributors"
Coke +1
purl 1
cotto_work +1 1 20:21
Coke and 04-revision. 20:22
any other feedback before i commit this version? 20:25
pmichaud's version.
svnbotl r26545 | coke++ | trunk: 20:32
: [icc]
: RT #52028 ([PATCH] Do not split macro invocations that use CONST_STRING into multiple lines)
: Matt Kraai++
diff: parrotvm.org/svn/parrot/revision/?rev=26545
jonathan pmichaud: Got a moment to give me hints on a parsing bug? 20:55
pmichaud sure 20:56
jonathan This works: 20:57
my $x = <-> $a { say $a; }; $x(42);
42
But this doesn't:
my $x = -> $a { say $a; }; $x(42);
Statement not terminated properly at line 1, near "= -> $a { "
I am pretty sure, it's trying to parse that as prefix:- or something. 20:58
But can't confirm that in any way (not sure how).
pmichaud it's undoubtedly seeing that as prefix:- 20:59
kj isn't -> a prefix op too?
pmichaud no, it's part of the <pblock> rule
the best workaround I can come up with for now would be to create a prefix:-> that "fails" 21:00
jonathan Issue with longest token rule and bottom-up parsing is my guess? 21:01
pmichaud yes
jonathan I don't understand PGE anything close to enough to know where to start fixing that.
pmichaud well, PGE is likely going to need some massive redesign for longest token rule, and for that I need to look at TimToady's work on his parser 21:02
jonathan I'm not blocking on it as such, so if you can see it being fixed on the scale of weeks then it's fair enough.
Ah, OK.
pmichaud I can see us being able to create a prefix:-> workaround fairly quickly
jonathan Maybe a workaround is the way to go.
Coke Ugh. So we now have stuff on the web in the wiki, combust, the repository, and the blog.
pmichaud I don't have a good time estimate for longest token rule.
jonathan Sure, it looks to me like a *serious* amount of work. 21:03
pmichaud well, fortunately TimToady has one working (at least to some degree) already, so if I have a template/design to follow I'm hoping it won't be too onerous 21:04
jonathan Here's hoping. :-)
pmichaud if I had to come up with it myself, I'd be a lot more pessimistic about it
jonathan What are you thinking of working on next Rakudo wise, beyond catching up on what @other have been doing? 21:05
pmichaud refactoring classes and protoobjects, with an eye towards .HLL 21:06
other items would be regex/rule/token, and getting 'return' to work
(since 'return' is needed for PCT completion)
jonathan OK, cool. 21:07
They are things I'm less comfortable working on, so I'm happy to not have to worry about them. :-)
pmichaud anything you'd particularly like to see me work on ? ;-)
I do take requests :-) 21:08
jonathan Actually, the above list is pretty much what I would have asked for.
kj i think the control stuff like break/continue/return is interesting, but needs better parrot support
it would be on My Wishlist ;-)
pmichaud I think parrot is pretty close, it's just PCT that needs to support it
simply being able to throw exceptions is all that I need parrot to do
(throw exceptions with a payload, that is) 21:09
jonathan I take requests too, if there's anything in Rakudo you want me to look at.
kj ok. I don't really see how it would work frankly, as you have to wrap stuff in exceptions
not very efficient anyway
pmichaud however, it would be very nice if Parrot had something equivalent to Perl's "Capture" object that can package up positional and named arguments into a single PMC
jonathan My plans for next stuff is to get fatarrow and colonpair passing named parameters.
Hmm, a capture PMC. 21:10
purl it has been said that a capture pmc is quite useful, similar to a DOM tree
pmichaud there's already a Capture pmc in Parrot, but it's broken. It needs to be re-done with the new pdd17 model in mind
and the Capture object that PGE/PCT uses is written entirely in PIR, so it's a bit slow
jonathan Does the one that PAG and PCT use have the correct semantics? 21:11
Coke control-flow-exceptions: we should standardize on how we do this for HLL interop.
jonathan s/PAG/PGE/
pmichaud Coke: that's what I'm intending for PCT, yes
jonathan: there are a few minor changes to be made, but essentially the semantics are correct, yes.
Coke right now tcl is just throwing exceptions and using one of the slots to store the control-flow type.
(corresponding to the values at: www.tcl.tk/man/tcl8.5/TclCmd/return.htm) 21:12
-> 21:13
kj it'd be nice if under the hood, so in PIR, return statements are still return statements, and not exceptions. Even if they're using the exception mechanism
jonathan pmichaud: Where can I find the PIR version?
purl the PIR version is gone i think
pmichaud jonathan: runtime/parrot/library/Parrot/Capture_PIR.pir 21:14
kj: that's my intent
nopaste "cognominal" at 82.67.232.89 pasted "unsucessful fix" (21 lines) at nopaste.snit.ch/12571
pmichaud kj: there will likely be a 'return' op node in PCT
kj right. but what I meant is, that there's also PIR syntax hiding the exception stuff
cognominal I try that but it still fails :( 21:15
jonathan pmichaud: Thanks, will keep that in mind as something to work on soon.
pmichaud oh, I don't think the PIR version of 'return' needs to be exception-based
we already have 'throw' for that :-)
on phone
chromatic Where's the Capture PMC? 21:16
purl the Capture PMC is probably quite useful, similar to a DOM tree
pmichaud src/pmc/capture.pmc, I think 21:17
chromatic Hm, I updated it if it's there. 21:18
pmichaud oh, perhaps I need to re-test it then
chromatic It may still be broken, but it should at least compile correctly. 21:19
pmichaud well, it may work, but I was under the impression that the new PMC implementation would allow us to be more efficient in implementing stuff like this (i.e., a capture needs a separate Hash and Array component) 21:21
previously it was somewhat complex because there was really only one data slot 21:22
chromatic Yeah, that's doable.
22:09 Limbic_Region joined
jonathan Wheee.. 22:15
class Foo { has $.a; }
my $x = Foo.new(a => 42); say $x.a;
42
kj jonathan++ 22:16
seems like rakudo is nearing completion :-P
I have no clue how much more must be implemented...
jonathan You haven't seen the Perl 6 spec, have you? :-P
cognominal :) 22:17
kj I scrolled through it and thought: too much for me
:-)
22:17 cotto_work joined
kj then again, pure size doesn't say anything 22:17
cognominal jonathan, what is the perl6 incantation to ask to use registers for lexical variables? 22:18
cuz lexpads are costly
there must be a way otherwise why native types
jonathan kj: There's still a *lot* to do in Rakudo.
PerlJam cognominal: I doubt any such mechanism is specced. 22:19
jonathan cognominal: my int $x; # should, one day, be a Parrot int register
The lowercase types are the native ones.
kj jonathan: yeah i didn't expect otherwise; but it's very difficult to get any clue about which parts. At least for outsiders like myself
jonathan However, that's not implemented at the moment.
cognominal I know that :)
PerlJam oh. /me was thinking of registers as in the C sense. Silly me.
cognominal but some day someone will want to do fibonacci with radkudo 22:20
svnbotl r26546 | jonathan++ | trunk:
: [rakudo] Treat pairs in parameter lists as named arguments.
r26547 | jonathan++ | trunk:
: [rakudo] Fix new method for Object.
diff: parrotvm.org/svn/parrot/revision/?rev=26547
jonathan kj: At the moment, it'd probably be easier to point out the bits that are implemented, than the bits that aren't. ;-) But a version of the spec that had the bits that Rakudo implements highlighted green or something, or that it partially implements that are buggy in yello, would be cool to have. 22:21
22:21 jrt4 joined
kj jonathan: yeah, that'd be cool. When selecting grammar bits to implement, do you look at the spec? 22:22
I mean, how do you decide what to do
PerlJam jonathan: I've thought it would be cool if you could somehow do that with STD.pm vs. grammar.pm (but that's just parsed, not implemented)
jonathan I'm going for a breadth-first approach at the moment, which basically means I'm trying to get little bits of all sorts implemented.
Part of it is certainly driven, by, which bits of the spec do I look at and have a good idea of how to implement. 22:24
I'm also trying to get a lot of the common cases covered, though.
PerlJam kj: When ever I attempt to hack on rakudo, I look at STD.pm and I try to make grammer.pm look more like STD.pm :)
kj mm I don't even know how to get at the STD.pm
jonathan So when I give Perl 6 talks, I can say "and you can run this in Rakudo today". :-)
PerlJam kj: invariably though, I run into problems hacking the corresponding actions.pm part as I don't do it enough for it to be comfortable.
kj: it's in the pugs repo 22:25
jonathan kj: svn.pugscode.org/pugs/src/perl6/STD.pm
svnbotl r26548 | infinoid++ | trunk:
: [io] Apply patch similar in spirit to RT #51988
: Hopefully this will resolve warnings on win32/msvc. I'm pretty sure it won't
: affect any other platform.
diff: parrotvm.org/svn/parrot/revision/?rev=26548
kj is it me, or is this a very complex spec? :-P
chromatic It's not just you. 22:26
PerlJam kj: This is "perl 6", not "python 3000" :-D
kj ha ha ;-)
chromatic You mean Python 2.7?
PerlJam whatever they're calling it these days
kj i think it's "3" these days...
it seems to me that the spec contains executable code to parse this... Am i right in that? 22:27
PerlJam kj: read the comments
jonathan Happily, someone++ already did named params. So this works now too... 22:30
sub foo (:$bar) { say $bar; }
foo(bar => 42);
42
And foo(:bar(42)) of course. 22:31
kj :bar(42) is same as bar=>42?
jonathan Yes.
kj just as in PIR, kinda
a Perl 6 specification tutorial wouldn't be useless ;-) (hint, hint) 22:34
jonathan kj: What would you want it to cover? 22:36
cognominal jonathan : default_statement should be $<sym>=[default| '*']
kj jonathan: well I guess it's just a bit confusing how this stuff works. It's not just anohter grammar specification, like any other language. This is way more complex. 22:37
and I don't understand why all this complexity... 22:38
pmichaud why should default_statement include '*' ?
cognominal searches the relevant synopsis
jonathan pmichaud: I don't think it should. But when * is equivalent to default 22:39
But that waits until we implement Worreva.
pmichaud jonathan: yes, in which case it's a when_statement :-)
jonathan Right.
And I don't think it's a special case either.
Just that the Whatever type has a very simple ACCEPTS method. :-) 22:40
pmichaud correct
jonathan token whatever { '*' {*} }
Hmm, should that just instantiate the Whatever class?
pmichaud seems reasonable enough for now. Either that or return the Whatever protoobject, or a singleton instance of Whatever 22:41
cognominal oops
it reads default { ... } is exactly equivalent to when * {...} 22:42
jonathan The protoobject makes sense.
pmichaud right... but 'when * { ... }' is an example of a when_statement, not a default statement
cognominal yes, I was wrong
pmichaud well, I don't know what sort of definedness we need for '*' 22:43
jonathan Well, I'll stub it in enough to make when * work... :-)
pmichaud sounds great :-)
cognominal I can't remember every synopsis :(
pmichaud neither can I, which is why I had to look it up also :) 22:44
jonathan cognominal: If you could, I'd be terrified of you.
cognominal I have seen you arenot omniscient either :)
22:44 mire joined
jonathan Oh, hmm. While whatever is defined in STD.pm, it's not mentioned nearly anywhere else in the grammar. 22:45
22:46 skids joined
cognominal * means many different things in many place, that's the ultimate joker 22:46
jonathan Well, I'm not implementing all of it's meanings before I go to bed. :-P 22:47
pmichaud I think the concept of 'whatever' is often more context-sensitive than syntax 22:48
jonathan That's my impression from S02. 22:49
I remember seeing Whatever for the first time at some YAPC::EU in a Larry keynote and thinking "wow, that's nice...but I wouldn't want to be implementing that". Ah well... 22:50
skids jonathan: www.perlfoundation.org/perl6/index....witch_star
cognominal variables with a + twigil are dynamically scoped? 22:51
I see them in many places in STD.pm? 22:52
pmichaud they're contextual variables
which means we look up the call stack to find the scope in which it's defined
cognominal ok, that's what I call dynamical scope
22:52 spez joined
cognominal some lisp did that too 22:53
so we do both lexical and dynamic
pmichaud the variable in the outer caller scope also has to be defined with the 'context' trait
yes, we do both lexical and dynamic 22:54
jonathan I haven't thought much about how to implement those just yet. :-)
pmichaud oh, it's easy -- PCT is going to implement dynamic scope
essentially we just use getinterp and traverse the caller stack looking for a matching lexical
jonathan Oh, wow. It's easy. 22:55
:-)
skids: Thanks. :-)
pmichaud (we'll have to do some trickery to handle the 'context' trait and skip over entries that aren't 'context'... but we can work that out)
jonathan Hmm, getting PCT to do that neatly could be fun.
As in, in a language-independent way. 22:56
pmichaud I'm thinking it's just a PAST::Var of :scope('context')
jonathan Or we could just replace its 'dynamic' with our own by fiddling the namespace. :-)
Or that.
Oh, fiddling the namespace breaks other languages we want to compile. Forget that.
pmichaud and PCT will convert that to call a subroutine that handles the callstack 22:57
note that it's not really namespace related
or, for that matter, I could just leave it up to the HLL to define its own method for grabbing a context var
jonathan I was referring to putting a new Sub into the namespace entry for 'dynamic' in the PCT namespace. ;-)
But it's wrong, wrong wrong. 22:58
pmichaud ohhhh
no, the way to do that is to subclass PAST::Var (or whatever) and add a new method
purl okay, pmichaud.
jonathan :-)
Oh yes, I know how to do OOP.
jonathan shouldn't try and think about anything much when he's this tired 22:59
pmichaud afk for a while 23:01
jonathan say *.WHAT; 23:02
Whatever
woo
wknight8111 in PIR, i would use the 'exit' keyword to exit the program, right? 23:08
because i'm calling exit, and nothing happens
jonathan wknight8111: Try end instead
wknight8111 like "end 0"?
jonathan Just end
wknight8111 ok 23:09
kj wknight8111: it's "exit 1" and "end" 23:10
wknight8111 that works like a charm. Thanks
kj so exit takes an integer arg
wknight8111 i was doing exit, nothing happened
kj exit 1 didnt' work?
wknight8111 no
kj mmm. i don't remember whether i used that.. prob not then 23:11
wknight8111 it doesnt error either, it just ignores the command 23:12
chromatic There's an end op and an exit I op
wknight8111 i'll stick with "end", but the exit thing should probably be fixed
chromatic Okay, I can't find the exit op, just its documentation.
pmichaud there's a test for it 23:13
t/pmc/exception.t
wknight8111 i found the exit command in the perl6 builtins/control.pir, so that might be worth testing 23:14
jonathan remembered to update MANIFEST, for once.
pmichaud looks like it's in core.ops 23:15
chromatic Ah, there it is.
Somehow I couldn't find it.
pmichaud wknight8111: could you nopaste the code you were using to test exit?
or else file a ticket for it?
wknight8111 it's rediculously simple: .sub 'exit' exit 1 .end 23:16
pmichaud so how do you know it's not working?
wknight8111 because when I call that function, it doesnt exit
when i switch the "exit 1" to "end", it exits 23:17
pmichaud oh
jonathan Does exit just set the exit code?
And end actually ends the program?
pmichaud according to core.ops, it throws an exception
jonathan Ah.
pmichaud inline op exit(in INT) { do_exception(interp, EXCEPT_exit, $1);
}
so if there's something catching exceptions, then it would be caught/handled 23:18
in rakudo's case, that means that the interactive mode wouldn't "exit"
(or in anything using PCT's interactive mode) 23:19
svnbotl r26549 | jonathan++ | trunk:
: [rakudo] Add the Whatever class and * syntax for it, and give it an ACCEPTS method so when * { ... } always runs.
diff: parrotvm.org/svn/parrot/revision/?rev=26549
wknight8111 okay, so that must be the problem then. I was testing it interactively 23:20
23:20 rdice joined
pmichaud right. PCT's interactive mode catches exceptions so that a syntax error or floating point error doesn't exit Parrot 23:20
but it's not smart enough yet to distinguish an "exit" exception from others
(although I thought it was smart enough to do that...) 23:21
wknight8111 is there a flag we can test to determine if we are running interactively?
pmichaud not really
wknight8111 fair enough 23:22
Limbic_Region wknight8111 - implement -T
pmichaud I just double-checked -- HLLCompiler just catches all exceptions in interactive mode, but doesn't check the type of exception to decide if it should be rethrown
Limbic_Region er, -t
cognominal hum, how STD.pm does hash composers? 23:27
pmichaud block
{ a => 3, b => 4 } is just a block 23:28
jonathan OK, now Whatever's stubbed in, I'll get some sleep. :-)
cognominal jonathan++
but, it is executed immediately 23:29
jonathan night all
cognominal g'night jonathan
pmichaud it's not executed immediately when used as an rvalue
my %a = { a => 3, b => 4 }
information about hash composers is in S04, starting with "Anywhere a term is expected, a block is taken ... " 23:32
cognominal but it seems that it is a hash composer only if the first expression is pair or hash like
pmichaud correct. If the closure contains only a comma-separated list starting with a pair or hash, the closure is treated as a hash composer
(or if the closure is empty)
either way, it parses as a closure (which is what STD.pm is all about) 23:33
cognominal immediatly meaning at affection time
affectation!
pmichaud it's up to something outside of STD.pm to decide if the closure is a hash composer or a closure 23:34
(in rakudo, this will be the action methods of noun or term, probably)
cognominal hum what is the english word for affectation?
assignment! 23:35
purl well, assignment is different in scalar contexts than in array context
cognominal I suppose that actions.pm should look into the block content 23:36
currently > my %a = { a => b }; gives Statement not terminated properly at line 1, near "=> b };\\n" 23:37
hum that the fat comma 23:38
pmichaud actions.pm will look into the block content when the block is being used as a term/noun, probably 23:40
cognominal btw STD.pm says an ident at the left of a => but the example in S04 contain "a" => 1 23:41
pmichaud it should allow ident or term. but fatcomma in std.pm might be handling only barewords on the lhs, leaving infix:=> to handle the other cases
(I haven't looked)
cognominal I think it can be legitimate to assign a block to a scalar 23:42
ha, ok. I get it. this business of expressions handled outside the "main grammar trick me 23:43
I just figured out how the assignment gets a different precedence according to the list or scalar context 23:44
23:45 kid51 joined
cognominal should follow jonathan's example and go to bed... 23:45
wknight8111 bed is for the weak
I wish some of the PCT error messages were a little more descriptive. This debugging is an uphill battle 23:47
cognominal I am past the age when I feel I have to prove somehow my manhood.
wknight8111 I agree, i'm headed to bed before too long myself
:)
kid51 muses, "Let me see; where is my manhood? I think I left it around here somewhere." 23:48