»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg p6eval perl6: ... | irclog: irc.perl6.org/ | UTF-8 is our friend!
Set by sorear on 4 February 2011.
Coleoid But Parrot won't build, NQP won't build... 00:00
00:01 dukeleto left
Coleoid And I'm not sure how to reconfigure the build to reach for different tools. 00:01
I think the folks who have succeeded on Windows have been building with MSVC, but the build is using GCC. 00:02
Does anyone here build on Windows? Or know the key for how to repoint the build towards MSVC? 00:04
[Coke] yes, I do. that box is at work, however.
I will try to remember to answer your question tomorrow, but have a full day of $dayjob. 00:05
Coleoid [Coke], I recall your offer--I was also full-up at work, but I expect an open lunch tomorrow, so I'll try to ping you in-channel. 00:06
Thanks!
Or if you want to get it out of the way at another time handy to you, feel free to post the info here, and I can backscroll. 00:08
diakopter Coleoid: did you see my reply the other day? 00:20
Coleoid diakopter: thinking... 00:21
diakopter tries to find it
irclog.perlgeek.de/perl6/2012-07-09#i_5797785
Coleoid You were working with GCC and succeeding, weren't you.
diakopter yes; see the link 00:22
how did you get gcc on Windows? cygwin? strawberry? something else?
Coleoid And I've got Strawberry, too...
I think I may have messed myself up by using msysgit... 00:23
Coleoid checks path... 00:24
00:24 atrodo left
diakopter if you use strawberry's cpan to install search.cpan.org/~adamk/File-Which-1.09/ File::Which, you can use pwhich to find files in your %PATH% 00:25
it's very helpful for me.
first you need to find out where it's finding gcc currently. 00:26
then remove it from your path unless it's strawberry already.
yes, it looks like msysgit comes with gcc. 00:28
so, you'll want to put the 3 strawberry paths BEFORE the msysgit path in your %PATH% 00:29
Coleoid cpan is failing trying to make File-Which. 00:30
I've messed up its config, clearly.
diakopter yeah, because msysgit is in your path instead of strawberry's stuff
Coleoid The good news is that the strawberry paths were prior to the msysgit paths.
diakopter oh. ... hmm.
but do the strawberry paths include strawberry\c\bin ? 00:31
Coleoid It's using Strawberry's dmake.
Yes, let me paste up the File-Which failure. Does this channel prefer a gist, or nopaste, or / 00:32
any other service?
diakopter gist or any of the billion nopaste services
geekosaur "whatever works", I think
Coleoid gist.github.com/3087146 00:34
I'm passing it -j3 twice, that seems suspicious... 00:35
diakopter ok. let's try this.
1) uninstall msysgit (don't worry, we'll reinstall it)
Coleoid Sounds good so far... 00:36
diakopter 2) make sure your %PATH% no longer includes msys' stuff. On my system, that's c:\Program Files (x86)\Git\cmd
(but that's for the most recent version of msysgit. I seem to recall older versions being somewhere else) 00:38
3) reinstall the latest version of msysgit from code.google.com/p/msysgit/downloads/list
When it asks whether you want to use its unix tools also in your path, say No 00:39
actually, you could have just removed the Git\bin path from %PATH% instead of uninstalling msysgit; oh well. 00:40
Coleoid :D
pmichaud fwiw, the other night I tried using strawberry+msysgit and didn't have any luck
and I *know* that strawberry was in my path before msysgit
I'll boot up my windows instance again, if someone can help us through it :) 00:41
diakopter I had to add strawberry\c\bin to my path with the other two strawberry ones to get it to work, iirc
Coleoid That's fine, I don't see an uninstall, so I'll just pull it out of the path for now...
diakopter does it still have Git\cmd ?
(that's where the git command is)
Coleoid I've got three strawberry paths, including c\bin--so that's good. 00:42
pmichaud my path has three strawberry paths, then \git\cmd
Coleoid msysgit has three paths, cmd, bin, and libexec\git-core 00:43
diakopter just remove the bin one
pmichaud I'll start with a fresh rakudo checkout 00:44
Coleoid Okay
pmichaud next is "perl Configure.pl --gen-parrot" from the rakudo dir
it's "working", but I get a warning of "The system cannot find the path specified" 00:45
diakopter I got that too
pmichaud followed by "Command failed (status 256): git clone git://github.com/perl6/nqp.git nqp
(this is from a cmd.exe shell, fwiw) 00:46
diakopter pmichaud: how old is your msysgit? I've got the latest
Coleoid genning parrot...
pmichaud I downloaded it from googlecode several nights ago.... so fairly recent 00:47
Coleoid I've got 1.7.11
pmichaud 1.7.11-preview20120704
Coleoid --gen-parrot did a lot of talking, then failed as before.
complaining the failure point was --make-install 00:48
diakopter hm, I wonder which strawberry I have 00:49
Coleoid gist.github.com/3087197 00:50
diakopter I have Strawberry Perl May 2011
00:51 skids joined
diakopter looks at his parrot Makefile 00:52
oh, your error is in building NQP 00:53
00:54 stephenlb left
Coleoid Yeah? 00:54
diakopter pmichaud: one difference is that I built NQP with --gen-parrot then built rakudo with --with-parrot and --with-nqp
or whatever they are
pmichaud it looks to me like part of the problem is that system_or_die (in Configure.pl) is dying when used from the cmd.exe shell 00:56
diakopter Coleoid's got a lot further than that though; it checked out NQP 00:57
pmichaud Coleoid: which shell are you using?
00:57 scott__ joined
Coleoid cmd.exe 00:58
pmichaud windows 7?
Coleoid Yep
pmichaud I'm on NT
sorry
I'm on XP
diakopter Windows 7
pmichaud so maybe it's something to do with the WinXP shell :-(
system_or_die is at github.com/perl6/nqp/blob/master/t...ure.pm#L52
diakopter did it actually check out parrot? 00:59
pmichaud it checked it out, but then didn't like the result code from git
and if I try running again, it attempts to do a 'git fetch', but again doesn't like the result code from git
Coleoid The first time I did this it got both parrot and nqp clones.
diakopter c:\Users\mwilson\src>git --version 01:00
git version 1.7.10.msysgit.1
pmichaud Coleoid: yes, I'm thinking your shell or something about your install is giving better result codes.
I mean, a result code of 256 looks a bit suspicious
Coleoid Well, I just got CPAN unscrambled enough to get File-Which--so, progress! 01:01
diakopter pwhich git should return msysgit's git.cmd 01:02
Coleoid It does.
D:\msysgit\cmd\git.EXE
diakopter what does git --version say 01:03
Coleoid git version 1.7.11
pmichaud mine says git version 1.7.11.msysgit.1 01:04
diakopter Coleoid: weird.
on mine, the sole contents of Git\cmd\ are git.cmd and gitk.cmd 01:05
is that the same as yours?
Coleoid ...
pmichaud I have git.exe and git.cmd 01:06
er
git.exe and gitk.cmd
Coleoid Yep
Same for me.
pmichaud note .exe and not .cmd for git.exe
Coleoid git.exe and gitk.cmd.
diakopter yeah. XP uses following order of precedence: .exe, .com, .bat, and .cmd. 01:07
01:07 Guest62195 left
pmichaud I wonder why my git command is returning a non-zero exit code 01:07
Coleoid If I remove the parrot/ and nqp/ folders, am I back to a blank slate? 01:08
pmichaud fairly close, yes.
01:10 zhutingting left
Coleoid And then --gen-parrot should be the first configure call? 01:10
(I also dumped install/)
diakopter pmichaud: my git.cmd sets the errorlevel
@git.exe %* 01:11
@set ErrorLevel=%ErrorLevel%
there could be some significance there
pmichaud I don't think I have a git.cmd
diakopter hrm. I guess your later version (mine is 1.7.10) changes that 01:12
maybe try downgrading
Coleoid Huh! Having deleted my local parrot and nqp, Configure bombs out early for me now... 01:13
...with a status 256.
diakopter dmake clean? 01:15
pmichaud if Configure.pl isn't successful, there's likely no Makefile 01:16
diakopter oh.. heh.
Coleoid I don't see one.
Do you guys have Cygwin installed? 01:17
diakopter no
Coleoid: delete libparrot.dll ?
Coleoid Nor I, yet.
Where will it live? 01:18
I don't find libparrot.dll within rakudo/
diakopter ok, nm
is there an install\ dir ? 01:19
Coleoid There was, but I deleted it along with parrot\ and nqp\ a few minutes ago.
? 01:20
cd nqp
Access is denied.
diakopter weird. 01:21
Coleoid And now git fails early complaining about a pathspec gone wrong... 01:23
I think it's time to ditch this whole local Rakudo clone and get a clean one. I haven't done that before, though. 01:24
pmichaud oh, great.
github.com/msysgit/git/issues/21
looks like it is indeed a problem with 1.7.11 01:25
Coleoid Good, more progress! 01:26
pmichaud oh, there's a new one, just released 4 hours ago!
code.google.com/p/msysgit/downloads...n=2&q=
maybe it contains the fix
upgrading...
release notes for 20120710 version indicate an error code fix 01:30
and yes, I now get past the nqp clone to the parrot clone. 01:31
diakopter \o/
Coleoid: more progress for you?
Coleoid No, for pmichaud, but I'm probably going to try the new msysgit too. 01:32
Right now I'm trying to figure out the git incantation to get a brand new local rakudo copy. 01:33
diakopter pmichaud: ? isn't it git checkout .
01:33 stephenlb joined
diakopter Coleoid: git clone git://github.com/rakudo/rakudo.git ? 01:34
(without the ?)
pmichaud I'm creating a document for this at the moment: docs.google.com/document/d/1kNED54...edit?pli=1 01:35
01:37 alvis```` left
pmichaud okay, my system is building parrot now. 01:37
01:37 risou joined
Coleoid Yes-- though I tacked another name for the new clone folder on the end 01:37
01:37 alvis```` joined
pmichaud parrot built and installed successfully 01:37
Coleoid: yes, I see the edit -- thanks :-)
diakopter that was I
pmichaud oh 01:38
diakopter++ then
diakopter what does my name appear as there?
Coleoid Swell, I'm going to get the new-new msysgit installed, then, and retry...
pmichaud diakopter: the only other user I see right now is "anonymous 4995" 01:39
okay, the build now fails when trying to link libdyncall
diakopter same as Coleoid
pmichaud: when prompted, I chose not to include the git commands 01:41
pmichaud gist.github.com/3087400
diakopter: I did that before... and then Configure.pl could never find the git commands.
(iirc)
diakopter oh 01:42
diakopter tries following pmichaud's instructions from step 3 01:43
Coleoid Can't install over git, it's got locked somehow, I'm rebooting, back in a while. 01:46
pmichaud oh
it's the dyncall stuff.
I wonder if there's a way to disable that.
01:46 Coleoid left
pmichaud since (afaik) dyncall really isn't needed for basic NQP. 01:47
diakopter pmichaud: which strawberry do you have (check perl -v) 01:48
01:48 Coleoid joined
pmichaud 5.16.0 01:48
diakopter .. building parrot 01:49
..building nqp 01:51
pmichaud: I have perl 5.12 (strawberry May 2011). That could be a difference.
pmichaud if I take the dyncall.ops target out of the Makefile, I get a bit farther. 01:52
diakopter nqp finished building. 01:53
..running gmake install
pmichaud diakopter: you're 64-bit ?
diakopter yes, but perl says it's 32-bit 01:54
pmichaud after removing the dyncall target, nqp built and installed for me
wonder what gcc thinks, though.
i.e., when it's building dyncall
diakopter rakudo built. 01:55
pmichaud okay, that got me so that "perl Configure.pl --gen-parrot" completed from the rakudo dir.... rakudo is building now.
diakopter pmichaud: maybe downgrade strawberry? 01:56
01:56 mucker left
pmichaud yes, the rakudo build failed for me now looking for nqp_dyncall_ops. 01:57
so.... we'll need that somewhere.
I'll downgrade strawberry and see if that helps
diakopter first try May 2011 then if that works try Nov 2011
(because May 2011 works for me)
(in case it's a gcc version thing) 01:58
pmichaud diakopter: 5.12.3 ? 01:59
diakopter yep
pmichaud okay, that leaves my %PATH% with the strawberry perl dirs after the git one 02:02
...but it shouldn't matter
so let's try it :-)
okay, (re)building Parrot 02:03
parrot installed 02:06
now building nqp
failed building dyncall; same place (I think) 02:07
diakopter well, something about my setup differs. hrm.
pmichaud gist.github.com/3087499 02:08
I'm thinking it may be a 32-bit vs 64-bit issue.
Coleoid Possible--I'm on 64 bit. 02:09
pmichaud I might be able to borrow one of the family's 64-bit win machines and see if it works there.
but I have to give the dog a walk now, so I'll be back in 30
diakopter interesting it fails at a different spot from the later perl 02:10
Coleoid And I'll be wrapping up for the night.
diakopter Coleoid: tomorrow we can try msvc; I have that to
too
Coleoid But thanks greatly for the time and effort--it's a relief to know it's Not Just Me. :D
diakopter: That sounds good, thanks! 02:12
[Coke] notes that his successful parrot build is win7 02:16
diakopter they were able to build parrot 02:19
phenny: tell pmichaud other than being on a 64-bit machine, the only difference I can imagine is that I have libicu in my path... 02:20
phenny diakopter: I'll pass that on when pmichaud is around.
pmichaud well, I'm booting my notebook into win xp pro now... I think it's 64-bit 02:32
phenny pmichaud: 02:20Z <diakopter> tell pmichaud other than being on a 64-bit machine, the only difference I can imagine is that I have libicu in my path...
pmichaud sadly, it's 32-bit also :-/ 02:35
[Coke] it was parrot & rakudo, and it was 32bit win7. 02:38
pmichaud [Coke]: how recently? 02:45
okay, now attempting on a 64-bit windows 7 02:49
it failed for me on 64-bit windows 7 also. 02:56
same error
no wait, totally different error
[Coke] pmichaud: retested a month or so ago, I think. 02:57
pmichaud [Coke]: I think some of the dyncall stuff has been added since then. 02:58
[Coke] r: sub neg($a) { "-" ~ $a }; say neg 4
p6eval rakudo d8e7b6: OUTPUT«-4␤»
pmichaud dyncall is nqp's version of NCI, iiuc
[Coke] "works for jnthn"... I'm guessing. Also, pretty sure I'm using the MSVC++ compiler 02:59
pmichaud gist.github.com/3087699 # dyncall build failure under Win 7 64-bit
[Coke] (free one)
pmichaud yes, I can go and try with MSVC and Active Perl or something like that... but iwbni we could get it to work with strawberry
[Coke] thinks "oh, maybe I can get work to send me to oscon, when is that.... Oh." 03:07
[Coke] is not having a good con year.
03:07 JimmyZ_ joined
JimmyZ_ btw, I was using strawberry perl on win32, nqp builds here 03:08
03:14 thou joined
pmichaud JimmyZ_: how recent nqp? 03:14
JimmyZ_ pmichaud: about 2 weeks 03:16
pmichaud hmmmm
I could try the 2012.06 rakudo.
github.com/perl6/nqp/issues/47 # nqp ticket 03:18
JimmyZ_ I can give it a try now 03:19
pmichaud I was building from Rakudo HEAD when I got the errors in the ticket
JimmyZ_ is cloning parrot 03:20
03:23 Su-Shee_ joined
pmichaud I get the same sort of error for 2012.06 03:25
03:27 Su-Shee left
pmichaud however, 2012.05 builds just fine on my system 03:30
so, it's something that changed in nqp since 2012.05 03:31
maybe a bisection is in order :-)
JimmyZ_ hmm, I got bad reloc address 0x0 in section `.data' 03:43
pmichaud JimmyZ_: yeah, that's the error I've been getting. 03:46
Surprisingly, on my daughter's computer it built fine.
so now I'm very confused.
03:50 samlt joined
pmichaud hmmmmmm 03:51
[Coke] ah. glad you finally found /a/ version that worked, anyway.
that makes it much easier to find out when it when pear shaped.
pmichaud ...and it appears that later versions of nqp work as well. I'm guessing that the bump to Parrot 4.5.0 is where we start having problems 03:52
testing, though.
(I think) I got nqp head to build on the original machine where it had failed previously, but using Parrot 4.4.0
03:58 plobsing joined, Entonian joined, Entonian left
pmichaud huh. nqp head just built fine for me, from a fresh checkout. 04:02
trying a fresh rakudo checkout now.
[Coke] thinks he has enough notes for his $DAYJOB git-svn lighting talk tomorrow. 04:08
[Coke] will think about making a coherent demo tomorrow. :P
pmichaud huh. making a fresh checkout of rakudo worked. 04:10
04:10 adu joined
[Coke] old build with crufty dlls? 04:11
pmichaud well, since this is my first time _ever_ building rakudo under windows... I'm thinking no. 04:12
the only thing I can think of that I changed is a reboot
adu i pmichaud 04:20
s/i/hi/
04:27 samlt left 04:29 samlt joined 04:33 kaare__ joined 04:34 telex left 04:36 JimmyZ_ left 04:37 telex joined 04:41 zhutingting joined 04:47 nebuchad` joined 04:48 nebuchadnezzar left 04:51 zhutingting left, zhutingting joined 05:02 brrt joined 05:13 dayangkun joined 05:14 brrt left, dayangkun left 05:20 sirrobert joined 05:22 birdwindupbird joined
sirrobert How do I declare a class method that is an lvalue? 05:22
sorear method foo() is rw { ... } 05:24
sirrobert hmmm that's what I'm trying, but it says, "Cannot assign to a non-container" 05:25
r: class a { method x () is rw { ... } }; my $A = a.new(); $A.x = "foo";
p6eval rakudo d8e7b6: OUTPUT«Stub code executed␤ in method <anon> at src/gen/CORE.setting:9538␤ in <anon> at src/gen/Metamodel.pm:2304␤ in any find_method_fallback at src/gen/Metamodel.pm:2302␤ in any find_method at src/gen/Metamodel.pm:843␤ in block <anon> at /tmp/5q3ROygCZT:1␤␤»…
sirrobert (still learning to read the +p6eval output =) 05:26
r: class a { has $!x; method x () is rw { ... } }; my $A = a.new(); $A.x = "foo"; 05:27
p6eval rakudo d8e7b6: OUTPUT«Stub code executed␤ in method <anon> at src/gen/CORE.setting:9538␤ in <anon> at src/gen/Metamodel.pm:2304␤ in any find_method_fallback at src/gen/Metamodel.pm:2302␤ in any find_method at src/gen/Metamodel.pm:843␤ in block <anon> at /tmp/bxgJp3_5yi:1␤␤»…
05:27 stephenlb left
sirrobert ahh... 05:30
r: class a { has $!x; method x () is rw { return-rw $!x } }; my $A = a.new(); $A.x = "foo";
p6eval rakudo d8e7b6: ( no output )
sirrobert r: class a { has $!x; method x () is rw { return-rw $!x } }; my $A = a.new(); $A.x = "foo"; say $A.x
p6eval rakudo d8e7b6: OUTPUT«foo␤»
sirrobert great =)
I had to "return-rw" the property 05:31
Thanks, sorear =) 05:32
05:33 mucker joined
moritz \o 05:35
sirrobert hi moritz
05:36 am0c joined
adu hi moritz 05:38
adu <3 Perl6
am0c <3 Perl6
05:43 sisar joined
moritz <3 #perl6 05:44
sirrobert cool tip I learned tonight: columnate your text in vim with :<range>!column -t 05:45
e.g.: :.,.10!column -t (to columnate the next 10 lines on whitespace =)
sisar hi #perl6 ! 05:48
sirrobert hallo =)
05:55 Su-Shee_ is now known as Su-Shee 05:56 wtw joined
adu <3 perl6 05:56
crap I already said that
I need to say something new fast 05:57
can't think of anything
Su-Shee good morning everyone.
do I want star or monthly release these days?
bonsaikitten adu: "<4 perl6" ;)
adu hehehe 05:58
Su-Shee: morning! 05:59
I am so fired up about PErl6
we are going to rock this boat
06:01 kaleem joined
dalek c: 0a9ea4c | (Gabor Szabo)++ | lib/Str.pod:
add trim
06:04
06:06 brrt joined
sirrobert ok, time for me to get some sleep. night all. 06:07
exit
06:07 sirrobert left
sisar Su-Shee: well, both Star and compiler are released monthly. 06:21
06:23 nodmonkey joined, sisar left 06:24 sisar joined 06:28 GlitchMr joined 06:31 brrt left 06:34 sudokode left 06:38 nebuchad` is now known as nebuchadnezzar 06:53 mucker left 06:54 szabgab joined
szabgab hi 06:55
r: $_ = "b"; say "qwar" ~~ /$_/ ?? "ok $_" !! 'not'
p6eval rakudo d8e7b6: OUTPUT«ok b␤»
szabgab why does this match? 06:56
r: my $r = "b"; say "qwar" ~~ /$r/ ?? 'ok' !! 'not'
p6eval rakudo d8e7b6: OUTPUT«not␤»
sorear r: $_ = "b"; say "qwar" ~~ / { say $_.perl } / ?? "ok $_" !! 'not' 06:57
p6eval rakudo d8e7b6: OUTPUT«"qwar"␤ok b␤»
sorear because ~~ is a topicalizer 06:58
while the RHS code is running, $_ is temporarily bound to the LHS
szabgab oh, thanks 07:00
moritz we abuse ~~ for two different purposes 07:07
betimes it strikes back at us.
hoelzro masak: nothing really; whenever I've looked at Perl 6 in the past, I just found it kind of ugly 07:08
now I don't really think so
at least, not any uglier than STDOUT =) 07:09
I take it you saw my blog post?
moritz masak and I both pasted the URL here
hoelzro oh, awesome =) 07:10
07:14 brrt joined, adu left 07:26 szabgab left
jnthn morning o/ 07:47
sorear o/ jnthn
moritz nr: say ' abc '.trim-leading.perl 07:50
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«"abc "␤»
07:56 opeeper joined
moritz r: my $x = ({}; {}); say $x.perl 07:57
p6eval rakudo d8e7b6: OUTPUT«{}␤»
moritz nr: my $x = ({}; {}); say $x.perl
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«{}␤»
moritz n: ({} {}) 07:58
p6eval niecza v19-13-g442e075: OUTPUT«===SORRY!===␤␤Unexpected block in infix position (two terms in a row, or previous statement missing semicolon?) at /tmp/RsKPV55U9x line 1:␤------> ({} ⏏{})␤␤Parse failed␤␤»
opeeper I have git clone rakudo from long ago, am on branch nom,, is there branch star i can checkout? 08:01
moritz opeeper: no, star is a separate repo
opeeper: star imports a copy of rakudo 08:02
08:03 kresike joined
kresike hello all you happy perl6 people 08:03
sjn o/ 08:15
08:15 Coleoid left
moritz \o 08:15
08:16 REPLeffect left 08:25 opeeper left 08:30 REPLeffect joined 08:31 xinming left
dalek pan style="color: #395be5">perl6-examples: 9aa2f7b | (Gerhard R)++ | shootout/regex-dna.p6 (2 files):
[shootout/regex-dna] make v2 the default and remove v1

also uses subst() now that Rakudo can handle large regexes again
08:33
08:44 sergot joined
sergot hi o/ 08:44
moritz \o sergot 08:45
08:49 dataship joined 08:54 dakkar joined 08:55 dataship left 09:00 muixirt joined
muixirt good morning 09:01
09:02 xinming joined
sorear good morning 09:03
muixirt with a simple use LWP::Simple I get this lovely message "No STable at index 7" with R* 2012.06 09:06
moritz muixirt: yes, we have some order-of-precompilation problem in R* 2012.06 :( 09:07
muixirt: I hope/believe this is fixed by for the next R* release
star: use URI;
p6eval star 2012.06: OUTPUT«(signal SEGV)»
moritz star: use LWP::Simple;
p6eval star 2012.06: OUTPUT«(signal SEGV)»
muixirt moritz: yes I deleted URI.pir and than URI works but not LWP::Simple 09:08
09:08 daxim joined
moritz muixirt: you might also need to delete LWP/Simple.pir and URI/Escape.pir 09:09
tadzik deleting precompiled modules is always the safest option. It's also always the slowest solution :) 09:11
09:13 drbean joined
muixirt thanks moritz, it worked 09:13
moritz (the problem was that URI.pm includes URI::Escape via 'needs', not 'use', and the module installer in star didn't track that dependency) 09:14
09:16 Coleoid2 joined 09:21 FireFly left, FireFly joined 09:37 birdwindupbird left 09:39 drbean left
moritz www.drdobbs.com/architecture-and-de...442?pgno=4 nice comments about looking back at what other programming languages did, and simply stealing that isn't enough 09:40
09:40 odoacre left 09:42 drbean joined 09:48 bbkr joined 09:52 birdwindupbird joined 09:54 odoacre_ joined 09:55 [particle]1 joined 09:58 [particle] left 10:01 kaleem_ joined 10:04 lumi_ left 10:05 kaleem left 10:06 kaleem joined 10:08 samlt left, scott__ left 10:09 kaleem_ left 10:10 mucker joined, samlt joined
moritz r: regex foo ($x) { abc } # just checking if regexes can have a signature 10:11
p6eval rakudo d8e7b6: OUTPUT«Useless declaration of a has-scoped method in mainline␤»
10:12 sergot left
moritz r: grammar A { token foo($x) { \' ~ \' $x }; token TOP { <foo("bar") } }; say A.parse(q['bar']) 10:12
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤regex assertion not terminated by angle bracket at line 2, near " } }; say "␤»
10:12 sergot joined
moritz r: grammar A { token foo($x) { \' ~ \' $x }; token TOP { <foo("bar")> } }; say A.parse(q['bar']) 10:12
p6eval rakudo d8e7b6: OUTPUT«q['bar']␤ foo => q['bar']␤␤» 10:13
moritz r: grammar A { token foo($x) { \' ~ \' $x }; token TOP { <foo("bar")> } }; say A.parse(q['baz'])
p6eval rakudo d8e7b6: OUTPUT«#<failed match>␤»
moritz PerlJam: are you OK with stealing github.com/perlpilot/perl6-docs/bl...-intro.pod (or parts thereof) for p6doc? 10:17
(I didn't see any license in that repo)
10:19 Coleoid2 left 10:20 broquaint joined, Psyche^ joined 10:24 Patterner left, Psyche^ is now known as Patterner 10:27 Coleoid joined 10:34 brrt left 10:37 GlitchMr left, GlitchMr joined 10:42 kaleem_ joined 10:46 kaleem left 10:55 spider-mario joined 10:57 zhutingting left, birdwindupbird left
arnsholt r: sub (int $n, &callback:(Str, int, int --> int)) is native { * } 11:03
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤invoke() not implemented in class 'Capture'␤»
11:03 harmil left, harmil joined
arnsholt jnthn: I think the syntax isn't implemented after all 11:03
11:04 thelazydeveloper joined
moritz right 11:06
what I did was leave out the colon
that creates a subsignature
not a callable with specific properties
11:08 zhutingting joined, sirrobert joined
jnthn Right. 11:08
11:15 mucker left, mucker joined 11:16 mucker left, mucker joined, mucker left
arnsholt r: sub (int $n, &callback(Str, int, int --> int)) is native { * } 11:16
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤Cannot call 'trait_mod:<is>'; none of these signatures match:␤:(Mu:U $child, Mu:U $parent)␤:(Attribute:D $attr, :rw(:$rw)!)␤:(Attribute:D $attr, :readonly(:$readonly)!)␤:(Attribute:D $attr, :box_target(:$box_target)!)␤:(Routine:D $r, :rw(:$rw)!)␤:(Rout…
arnsholt Spiffy. Thanks! 11:17
moritz I'm not sure that's the right way forward, but it sure seems like an easy way forward :-)
11:18 mucker joined
arnsholt I can live with that =) 11:18
Oh, and I thought I pasted my plan for implementing this stuff last night, but apparently I didn't
It's at gist.github.com/3085270 11:19
jnthn arnsholt: If you get it to work like that, getting the right syntax supported will be the easy bit :)
arnsholt Excellent
11:20 birdwindupbird joined
moritz once the syntax with the colon is implemented, how is it stored in the signature? 11:25
11:26 samlt left 11:28 samlt joined
sirrobert how do you *remove* a mixin from an object? 11:29
moritz you don't
arnsholt r: say Routine ~~ Callable
p6eval rakudo d8e7b6: OUTPUT«True␤»
sirrobert hmmm 11:30
moritz just like you don't remove a superclass
or the memory allocated with an object
let's rephrase: if you want to remove a mixin, you're probably overusing mixins
sirrobert heh
sjn can't imagine a situation when removing a mixin might be desirable 11:31
sirrobert I'm not using them yet... just trying to figure out a good implementation of a problem
moritz just like: if you want to extract values from a junction, you're overusing junctions
sirrobert So, I have an HTTP header object (pretty simple)
it has a name and a value
but the value behaves differently depending on the name 11:32
moritz in what way?
sirrobert (so, for example, in a Cache-Control header, the caching directives have specifications and sub-rules that the Age header's values don't have
For example:
moritz that sounds like a classic use for subclassing 11:33
sirrobert Cache-Control: private, community="UCI"
(there's nothing even close to equivalent to that kind of behavior for Age) 11:34
moritz class HTTP::Header::Field::Cache-Control is HTTP::Header::Field { ... }
sirrobert yeah, but I was *hoping* to load it through the Header object
moritz well, the header object can have logic to create objects of the subclasses
sirrobert as in: my $header = ...::HTTP::Header.new(Cache-Control => '')
yeah, but I wouldn't be able to switch header types easily =) 11:35
$header.name = 'Age'
moritz don't do that then
sirrobert easy for you to say ;)
moritz yes
we use immutable objects everywhere
11:36 fglock joined
moritz every Int, Rat, Num, Str, Parcel etc. is immutable 11:36
I mean, how often do you create a HTTP header and then need to change the name?
and if so, why can't you create a new object with the new name and old value? 11:37
sirrobert There's definitely no reason I couldn't require that 11:38
It depends on how you think about headers
if you think about a header as a single kind of thing with variability, then you'd want to be able to do those things 11:39
moritz for me, a header is a just a glorified string
sirrobert if you think about each header as it's own kind of thing, then you probably wouldn't
yeah =)
I'd like to avoid a lot of heavy string manipulation (it's ugly =) 11:40
moritz ye
s
sirrobert Right now I have it implemented with subclasses for each header type
moritz that's why you wrap it in an object that knows a bit more :-) 11:41
sirrobert lipstick on a pig does make a prettier pig ;)
moritz but a pig with a chess board on its hide still lets you play chess :-)
bbkr I still don't see the need to remove mixin here. If functionality of header is defined by its name then if you change name you get different header. Why modify existing container (header object)? 11:42
moritz bbkr: because sirrobert wants mutable header objects that don't have the notion of a separate container 11:43
sirrobert bbkr: I'm going for a fairly faithful implementation of the W3C http header spec. That goal has some interesting challenges =)
moritz: that's a good way to say it 11:45
moritz -> extended afk
bbkr then maybe do not apply mixin but pretend that it is applied. save Cache-Control role as HTTP::Header attibute and then install ^add_fallback on HTTP::Header that will delegate unknown methods to this role. 11:46
sirrobert hmmm
11:47 skids left
sirrobert I understand the concept you are saying, but not the implementation details. Is there something I can read about ^add_fallback type stuff? 11:47
(and thanks =)
bbkr I used it in github.com/bbkr/jsonrpc/blob/maste...ent.pm#L11
sirrobert ok! that could work for me. What is does the ? mean in $?PACKAGE ? 11:48
bbkr fallback has 2 params - first closure tells you if your fallback is capable of handling requested method (at this point you may want to confirm by ^find_method in role), second param is closure that must return closure (the one you found by role.^find_method) 11:51
perlcabal.org/syn/Differences.html#...s_are_gone - explains $?PACKAGE 11:52
sirrobert makes sense. A quick google search didn't show me any docs on add_fallback. Any tips?
(as to where to find docs, I mean =) 11:53
11:56 tokuhiro_ joined
bbkr I'm not sure it is already documented :( 11:57
if it is already documented*
sirrobert ok, no problemo =)
thanks a lot for your help
bbkr that should do the trick in the same way as JSON::RPC::Client is context-free but still allows $client.somemethod() to be handled 11:58
jnthn So, why not have a
has $.header-specific handles *;
This object contains the special things related to the current header 11:59
And then all you need to do is twiddle that object
handles * means that any unhandled methods will try to delegate to that object.
If you think you want addable/removable mixins, you probably want delegation really.
That said, immutability has a lot to recommend it :) 12:00
12:03 Coleoid left 12:09 jaldhar left 12:11 JimmyZ joined
bbkr jnthn++ I didn't know the trick with "handles *" 12:19
12:30 seldon joined
seldon Merry Christmas, #perl6. 12:31
jnthn bbkr: Well, add_fallback is the plumbing for the handles porcelin, to use a Git analogy... :) 12:32
12:36 mtk left, lumi_ joined 12:42 mtk joined
timotimo is it supposed to be the case that when i have sub MAIN(Bool :$a, Bool :$b, Bool :$c) i can't call my script with -ab, but -a -b is fine? 12:43
it seems --boing and -boing are both valid. is that a good decision? 12:44
well, i guess it really is a question of style
gfldex -ab should mean the same then -a -b 12:45
if -a and -b are exclusive you have to handle that case by hand
timotimo gfldex: well, it seems some time ago someone decided that -ab should mean the same as --ab, rather than the same as -a -b, i was asking if that decision is set in stone and maybe ask to reconsider 12:47
gfldex timotimo: see: www.iam.ubc.ca/guides/javatut99/ess...posix.html
timotimo i already know how posix programs do it :) 12:48
gfldex in doubt do it the same then search.cpan.org/~jv/Getopt-Long-2.3...pt/Long.pm 12:49
or there will be lots of confusion
[Coke] timotimo: there was an attempt to completely redo command parsing. I think we pulled back from that, but I don't know what the current state is. 12:51
12:53 sftp_ joined, sftp left 12:58 PacoAir joined 13:05 adu joined 13:06 GlitchMr42 joined
lumi_ timotimo: ISTR the issue was parsing short options that take a parameter 13:07
timotimo right, those cannot be put before other short options. but they can be put at the end of a list of short operations, can't they?
-abc 3 instead of -ab --long-c 3 should work?
13:08 GlitchMr left, zhutingting left
lumi_ timotimo: But you need to choose the right multi MAIN according to the options 13:08
13:08 zhutingting joined, [particle]1 is now known as [particle]
timotimo oh, you mean that -b might take an argument in another MAIN multi? or something like that? 13:09
lumi_ You might have 'multi MAIN(Bool :$a, Bool :$b)', and also 'multi MAIN(Str :$a)', so -ab can mean either the first overload with both flags, or the other one with $a = 'b' 13:11
timotimo oh, that's tricky indeed 13:12
lumi_ That's my vague recollection anyway, I tried finding it in the irclogs, but I don't remember when it was 13:13
13:13 GlitchMr42 is now known as GlitchMr 13:14 drbean left, drbean joined 13:15 zhutingting left
lumi_ Maybe it's better to only accept --option and not -option, to avoid this confusion? 13:17
timotimo i would say so, yes
pmichaud perhaps multi MAIN(Bool :$a, Bool :$b!)
which runs only if the b option is say 13:18
s/say/present/
good morning, #perl6
jnthn morning, Pm :)
13:18 atrodo joined
PerlJam greetings. 13:20
moritz: feel free to use anything I've written about Perl 6 to seed p6doc. 13:21
adu morning 13:22
pmichaud I wonder where I can get a copy of 64-bit windows to install
adu has no idea about windows 13:23
pmichaud or maybe I should try an ec2 instance
jnthn The Pirate Bay? <grin>
pmichaud: I saw your Strawberry post. I build with ActiveState Perl + the Visual Studio toolchain.
13:23 skids joined
jnthn pmichaud: It'd be nice to have Strawberry work too, of course... 13:23
pmichaud jnthn: yeah, I was more interested in "easy for others to do" for that. 13:24
flussence I wonder if reactOS is usable yet...
pmichaud and I think we need to be able to support Strawberry
13:25 samlt left
jnthn It's desirable. I've tended towards the view of "at lesat make sure it always works well on one compiler on Windows". 13:27
And more are a bonus.
masak good day, #perl6 13:32
adu hey masak 13:34
13:37 samlt joined
JimmyZ I was using Strawberry perl 5.10 .... 13:37
but today I'm using 5.16
pmichaud: ^^ 13:38
pmichaud JimmyZ: yes; I found that 5.16 doesn't work for me on my 32-bit systems
5.14 didn't work either, so I'm now trying 5.12 again just to make sure (and to have something to write up) 13:39
...and I'm wondering what changed between 5.12 and 5.14 that causes dyncall to not work. 13:40
13:48 samlt left 13:51 fridim_ joined 13:54 drbean left 13:55 tokuhiro_ left 13:56 drbean joined, tokuhiro_ joined 14:00 tokuhiro_ left, kaleem_ left
[Coke] hee. pugs passes 2 more tests than it did yesterday, rakudo doesn't. 14:08
[Coke] checks roast logs...
adu heh 14:09
[Coke] ... weird. no changes that'd cause that in roast since the last pugs fudge.
[Coke] wonders how much of pugs running at all is just heisencode at this point.
14:11 cognominal_ left 14:14 cognominal joined, sergot left 14:15 crab2313 joined
seldon I thought pugs was dead. 14:18
PerlJam seldon: it was just hibernating for a while
[Coke] seldon: it's running almost 40% of the spectests that rakudo is. 14:19
... of the *number* of spectests. (not the same ones.)
seldon So it's only 60% dead?
pmichaud Pugs is channeling Kah Mun Rah. ("I have come BACK to life!")
[Coke] it doesn't have an active developer, but au did a great job keeping the last version on life support. 14:20
seldon Pulling a Jesus, as it were.
[Coke] seldon: gist.github.com/1476841#file_perl6_pass_rates 14:21
note that most of those failures don't occur in a fresh checkout of pugs, and I have no idea why they're failing in my automated script.
14:24 drbean left 14:26 drbean joined 14:30 GlitchMr42 joined 14:33 GlitchMr left, GlitchMr42 is now known as GlitchMr 14:42 fglock left
pmichaud my @a = (3, 4, v1.2.3); say @a 14:43
r: my @a = (3, 4, v1.2.3); say @a
p6eval rakudo d8e7b6: OUTPUT«3 4 1 2 3␤»
pmichaud ...is that intentional?
pmichaud checks spectests 14:45
14:46 zhutingting joined, cognominal left 14:48 cognominal joined
masak .oO( we could scrap List and just use Version for all our sequencing needs ) 14:49
jnthn wow :)
pmichaud yeah, I'm thinking Version should has List ... instead of "is List"
sirrobert are there any docs available for ^add_fallback?
jnthn sirrobert: No, and...if you consider add_fallback a first resort rather than a last resort, something's wrong... :) 14:50
pmichaud r: say v3.10 cmp v3.2 # oops
p6eval rakudo d8e7b6: OUTPUT«Increase␤»
pmichaud adds spectest.
sirrobert I'm not sure it's a last resort, but it's at least a third resort at this point =)
jnthn sirrobert: OK, it's just that add_fallback exists at a meta-object level to help implement "handles", which is the user-oriented thing. 14:52
Well, to implement some cases of "handles"
I'm all for meta-programming, but only if you exhausted what the object system offers out of the box ;)
sirrobert I'm pretty comfortable with the metaprogramming involved; but I'd *rather* use the out-of-the-box features as you say =) I'll try to find some docs on "handles" 14:53
kresike bye all
14:53 kresike left
jnthn S12 does a decent job on explaining handles 14:53
sirrobert ok, looking (thanks) 14:54
jnthn Dunno if p6doc has anything on it yet.
sirrobert I used it in moose a fair bit
14:54 drbean left 14:55 kaare__ left
jnthn decommute & 14:55
14:56 drbean joined
moritz p6doc doesn't handle handles yet, no :/ 14:59
dalek ast: 786c685 | pmichaud++ | S02-literals/version.t:
Add version.t cmp test, fudged for rakudo.
15:00
masak & 15:01
15:14 JimmyZ left
pmichaud r: my $range = 4..5; say 3 before $r 15:14
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤Variable $r is not declared␤at /tmp/E3ct9F1H3O:1␤»
pmichaud r: my $range = 4..5; say 3 before $range
p6eval rakudo d8e7b6: OUTPUT«True␤»
pmichaud r: my $range = 4..5; say 4 before $range 15:15
p6eval rakudo d8e7b6: OUTPUT«True␤»
pmichaud r: my $range = 4..5; say 5 before $range
p6eval rakudo d8e7b6: OUTPUT«False␤»
pmichaud r: my $range = 4..5; say 4.5 before $range
p6eval rakudo d8e7b6: OUTPUT«False␤»
pmichaud r: my $range = 4..5; say 4.5 after $range
p6eval rakudo d8e7b6: OUTPUT«True␤»
moritz strange
pmichaud hmmmmm
I wonder if those should work :-)
moritz how would "work" look like? 15:16
pmichaud well, we can already test if a value is *in* a range
seems like we ought to be able to test if it comes before or after :-)
moritz so, before $range.min and after $range.max? 15:17
pmichaud including exclusions, perhaps, yes.
moritz if that's what you mean, why don't you ask for it? :-)
pmichaud because 4 before 4^..5 wouldn't be the same as 4 before $range.min 15:18
it's just idle speculation at the moment; I'm not sure what $real cmp $range would need to look like
moritz and then you have to think about strings and string ranges 15:19
pmichaud oh, string before/after is ordered already as well, so it seems like it should be similar 15:20
moritz but note that string range generation uses a different comparison than before/after 15:21
(it checks .chars first, *then* before/after)
so, things get trickier
pmichaud ....it does? 15:22
checking.
moritz r: say ('aa' .. 'z').list
at least I think it should :-)
p6eval rakudo d8e7b6: OUTPUT«(timeout)»
15:23 wtw left
pmichaud I don't believe it does that any more. 15:23
moritz at least that's what p5 does
15:23 bluescreen10 joined
moritz r: my $x = *; say (+$x) // 3 15:24
p6eval rakudo d8e7b6: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \$v, Mu *%_)␤␤ in method Numeric at src/gen/CORE.setting:686␤ in sub prefix:<+> at src/gen/CORE.setting:2321␤ in block <anon> at /tmp/wRVIP2KAmz:1␤␤»
15:24 drbean left
moritz that should probably just fail in a sensible way, not die 15:25
pmichaud there's not a Whatever.Numeric
moritz maybe there should be 15:26
15:26 drbean joined 15:27 nightlord joined
pmichaud maybe the error message should say "Cannot call Numeric on object of type 'Whatever' ... " 15:27
moritz technically the error message is correct
15:28 birdwindupbird left
moritz because there's a multi available in Whatever (the Mu:U one), just none that matches 15:28
"Don't know how to make a number out of an object of type Whatever"
maybe that should be the default numification in Mu:D:
pmichaud we can certainly try that. 15:29
makes sense, since all objects can .Stringy they should be able to .Numeric too :-) 15:30
seldon r: my $x = *; say (+$x)(3);
p6eval rakudo d8e7b6: OUTPUT«Cannot call 'Numeric'; none of these signatures match:␤:(Mu:U \$v, Mu *%_)␤␤ in method Numeric at src/gen/CORE.setting:686␤ in sub prefix:<+> at src/gen/CORE.setting:2321␤ in block <anon> at /tmp/OO6BoFFAIV:1␤␤»
seldon r: say (+*)(3); 15:31
p6eval rakudo d8e7b6: OUTPUT«3␤»
seldon Also interesting: my &x = *; fails while my &x = +*; works. 15:34
pmichaud +* is a code object (Callable), so the assignment is legal. 15:35
a bare * is a Whatever object, which isn't Callable.
seldon Huh. Indeed *(3) doesn't work.
15:35 samlt joined
pmichaud right, * doesn't mean "closure" except when used with an operator 15:35
15:35 Coleoid joined
pmichaud r: (+*)(3) # works 15:36
p6eval rakudo d8e7b6: ( no output )
pmichaud r: say (+*)(3) # works
p6eval rakudo d8e7b6: OUTPUT«3␤»
seldon It would make a nifty identity function, though.
pmichaud well, only if we gave up the ability to use * for other things in other places 15:37
seldon Perhaps a conversion operator *.Callable? It would mostly be interesting if you wanted to stow away closures for later use. 15:48
And it wouldn't change any parsing. 15:49
pmichaud {^$x} is shorter, though.
er
{$^x}
moritz {$_}
seldon But with the op you could write my &x = *;
moritz well, we could make * invocable, and have it return its argument
r: say (2, 2).list cmp (2, 10).list 15:50
p6eval rakudo d8e7b6: OUTPUT«Decrease␤»
pmichaud moritz: you're clamining that class Whatever does Callable ?
moritz: are you working on Version? I've got an edit going in a window right now 15:51
moritz pmichaud: we could make it that way. Currently it's certainly not specced that way
pmichaud I'm worried that it would cause all sorts of issues with multidispatch
moritz pmichaud: I've tried a Version patch, but it's not working
pmichaud Whatever doesn't mean "Callable", and I think it's a mistake to try to shoehorn it into that
jnthn home
moritz pmichaud: you're probably right
anyway, isn't (2, 2).list cmp (2, 10).list wrong? 15:52
nr: say (2, 2).list cmp (2, 10).list
p6eval niecza v19-13-g442e075: OUTPUT«Increase␤»
..rakudo d8e7b6: OUTPUT«Decrease␤»
pmichaud is &infix:<cmp> defined for lists?
jnthn Whatever almost certainly should not be callable. WhateverCode, however... :)
moritz I think that's the bug behind the failing Version cmp test you added 15:53
pmichaud: I'd expect it do lexicographic cmp on the elements
pmichaud ...is &infix:<cmp> defined for lists?
moritz pmichaud: in spec or in rakudo?
pmichaud I woudld find @a cmp @b to be a bit surprising.
moritz: in spec. 15:54
moritz I wouldn't, not at all
after we also define it for pairs
15:54 mauke joined
moritz and there it's $a.key cmp $b.key || $a.value cmp $b.value 15:54
extending it to lists is obvious
pmichaud not to me... cmp normally works on scalars
I'm not sure of anywhere else that we use cmp on aggregates of any form
15:54 drbean left
pmichaud and I don't consider Pair to be an aggregate 15:55
moritz but it is
pmichaud it acts more like a scalar with a name property than like an aggregate.
Pair isn't an aggregate because it's not Iterable. It doesn't flatten, for instance.
more generally, I think that Version ~~ List is wrong. 15:56
moritz why?
pmichaud r: my @a = (1,2,3, v4.5.6); say @a
p6eval rakudo d8e7b6: OUTPUT«1 2 3 4 5 6␤»
moritz maybe it schould be itemized then
pmichaud maybe it should act more like Match
which also isn't iterable nor interpolative 15:57
15:57 drbean joined
moritz well, that's what an itemized list would do, no? 15:57
pmichaud I think a version should act like a List only when explicitly coerced to one
I don't think that it should be Positional
sub foo(@a) { ... }; foo(v3.4.5) 15:58
moritz good point
mauke perl6: say qq{ {2+3}}
p6eval rakudo d8e7b6: OUTPUT« 5␤»
..niecza v19-13-g442e075: OUTPUT« {2+3}␤»
mauke what do I win? 15:59
PerlJam mauke: nothing? :)
15:59 [particle] left
mauke ruby and perl6 are fundamentally incompatible, and I think perl6 got it wrong :-/ 15:59
moritz got what wrong? 16:00
mauke code interpolation syntax
PerlJam mauke: why?
16:00 cognominal left 16:01 cognominal joined
moritz nr: say " {2+3}" 16:01
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT« 5␤»
mauke { } are too weak for something as powerful as code interpolation
moritz I tend to agree
mauke let's say I want a big string that is CSS 16:02
I also want to interpolate parts of it
pmichaud inside of double-quoted strings, though, you typically don't want something too "heavy", because it gets in the way of the string.
mauke so I use a heredoc
pmichaud (as far as readability goes)
mauke in perl5 I'd get something like <<END / .column { background-color: ${\escape $foo->color}; } / END 16:04
flussence this is why q has flags like rx
PerlJam mauke: There's always "use a template system" too 16:05
spider-mario besides, that makes it easier to translate templates
mauke in perl6 I think it would be: qq:to(END) / .column \{ background-color: {escape $foo.color}; \} / END
16:05 muixirt left
PerlJam flussence: the fine grain control of interpolation doesn't help in this scenario because the string will have lots of {} *and* only some of them should interpolate 16:05
mauke the clear winner: ruby 16:06
pmichaud I can do:
spider-mario how would it look like in Ruby?
what*
pmichaud q:s { .column { background-color: $foo.color.&escape } }
mauke ruby uses #{...} for code in strings 16:07
PerlJam spider-mario: #{code} IIRC
pmichaud the curlies don't interpolate
jnthn r: say "You can also interpolate $('ekil'.flip) this"
p6eval rakudo d8e7b6: OUTPUT«You can also interpolate like this␤»
spider-mario ok, thanks
moritz would think &{...} might fit for Perl 6
16:08 zhutingting left
jnthn r: say "You can also interpolate &('ekil'.flip) this" # I guess :) 16:08
p6eval rakudo d8e7b6: OUTPUT«You can also interpolate &('ekil'.flip) this␤»
jnthn hah, no :)
Becuse there's no & contextualizer ;)
mauke "Unfortunately this suffers from the problem pervasive in Perl 5 of multi-pass parsing, which is masked somewhat because there's no way to hide a newline in Perl 5."
mauke laughs bitterly
Coleoid [Coke]: If you have your $dayjob p6 environment and a few moments available, I'd like to know your toolchain and versions... 16:09
pmichaud r: say q:s / .column { background-color: $(lc 'XYZ') } / 16:10
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤Colons may not be used to delimit quoting constructs at line 2, near ":s / .colu"␤»
pmichaud r: say qs / .column { background-color: $(lc 'XYZ') } /
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤Unable to parse blockoid, couldn't find final '}' at line 2, near "background"␤»
pmichaud hmmm
jnthn pmichaud: Don't think we implement that stuff yet.
PerlJam r: say "foo $( my $x = 3 + 4; "bar" ) baz";
p6eval rakudo d8e7b6: OUTPUT«===SORRY!===␤Redeclaration of symbol $x␤at /tmp/Aa6FKf8hzs:1␤»
PerlJam (where did I first declare it?) 16:11
bug and LTA error message
pmichaud $(...) isn't a closure.
jnthn The bug is that it thinks it's a redeclaration
There shouldn't be an error.
16:11 fridim_ left
jnthn The error is fine when it's triggered legitimately. 16:11
PerlJam pmichaud: that would have been a better error message :)
mauke S02 explicitly says you can declare variables in $( ) 16:12
pmichaud anyway, I wouldn't be surprised if Perl6 ended up with something like a :c(delim) option that allows specifying an alternate closure syntax.
mauke while that is nice for you, it doesn't help me with my problem :-) 16:13
16:13 adu left
mauke why is syntax so hard 16:13
pmichaud is anyone filing PerlJam's bug find? 16:14
moritz I can
PerlJam mauke: what exactly is your problem? What syntax to use for Perl 5? &{} seems like a winner to me. 16:15
mauke PerlJam: I don't like &{} for approximately two reasons
the first one is nobody else uses &{} for this
PerlJam Nobody used #{} before ruby. 16:16
(maybe)
mauke the second one is that &{} already means something else in perl5
spider-mario does it?
mauke basically, a violation of the "similar things should look different" principle
moritz huh?
spider-mario you mean “different things” 16:17
moritz I though similar things should look similar
16:17 bbkr left
moritz and different things should look different :-) 16:17
mauke moritz: no
moritz mauke: no?
Coleoid moritz: That's a different but also useful principle.
spider-mario and I’m not sure that that principle should apply accross different languages
oh. 16:18
PerlJam mauke: But &mumble doesn't currently interpolate in strings anyway, so ...
pmichaud r: say "hello &uc('world')"; # checking
p6eval rakudo d8e7b6: OUTPUT«hello WORLD␤»
pmichaud &mumble interpolates if postcircumfixed. 16:19
PerlJam sorry, I was speaking in a p5 context for mauke's problem
pmichaud oh
I should probably stay out of this discussion. :-)
16:19 [particle] joined
Coleoid Is there a build report collector for Rakudo that keeps latest success/failures with different configurations? 16:21
pmichaud Coleoid: oh, I did more testing last night. I can build Rakudo under Win32 with Strawberry 5.12.3, but not with 5.14.1 or 5.16.0
I haven't been able to build Rakudo at all on Win7-64bit
(with any version of Strawberry) 16:22
diakopter did
pmichaud: did you try building parrot with icu?
pmichaud diakopter: it's almost certainly not an icu thing
mauke spider-mario, moritz, PerlJam: the source of my principle seems to be www.nntp.perl.org/group/perl.perl6....11652.html
(grep for "Umberto")
pmichaud it's entirely to do with the dyncall 3rd-party library
I'm suspecting that dyncall with gcc under windows is a bit fragile; the dyncall developers all seem to use msvc 16:23
diakopter: I can try it with icu, but dyncall is the consistent failure point, and afaik dyncall has almost nothing to do with icu 16:24
of course, all of this would be helped if I had a 64-bit Windows to play with :)
16:24 drbean left
pmichaud (I could nuke my notebook's copy of WinXP and install 64-bit Vista, I suppose.) 16:25
jnthn guesses it's some compilation flags issue.
Oh, though maybe not...
dyncall has its own configuration.
pmichaud well, if dyncall's gcc configuration doesn't match parrot/nqp's gcc configuration, then ....
Coleoid pmichaud: Thanks! So I won't worry about installing a whole basket of strawberries.
pmichaud Coleoid: if I get some time later I'll likely try again with ActivePerl and MSVC 16:26
pmichaud checks to see what version of Windows he has for his notebook
16:26 drbean joined
spider-mario mauke : that’s interesting indeed. 16:27
thanks for sharing.
16:27 nightlord left 16:28 sergot joined
Coleoid pmichaud: I'm thinking that's the way I'll head, too. 16:28
mauke it's surprisingly on-topic for this channel, even :-)
Coleoid pmichaud: Well, I'll try with MSVC, anyhow, first. 16:29
16:29 alester joined
Coleoid diakopter: you're succeeding w/ win7/64, strawberry, msysgit, and not much else? 16:31
Aside from aforementioned icu?
16:32 kaare__ joined 16:33 brrt joined
diakopter Coleoid: yes, as far as I can tell. 16:35
16:35 thou left
diakopter how about I try it with a separate install of the latest version of strawberry, and *only* strawberry, msysgit on my path 16:35
also, I'll upgrade msysgit to the latest 16:36
pmichaud afk # commute
16:44 kaare__ is now known as kaare_
diakopter ok, trying with latest msysgit, latest 64-bit strawberry perl, and set PATH=%SystemRoot%\system32;%SystemRoot%;C:\strawberry2\c\bin;C:\strawberry2\perl\site\bin;C:\strawberry2\perl\bin;c:\Users\mwilson\src\icu\bin;C:\Program Files (x86)\Git\cmd 16:47
if it's broken, I'll add things back in one by one (including the older strawberry) to see what fixes it 16:48
if it's not broken... I dunno.
yay! it's broken! 16:50
16:50 brrt left
diakopter actually I think I'll try latest 32-bit strawberry first 16:51
16:51 cognominal_ joined, brrt1 joined 16:52 zby_home_ joined
diakopter phenny: tell pmichaud I got it to die with "undefined reference to `dcCall_x64_win64'" on my machine trying with latest msysgit, latest 64-bit strawberry perl, and set PATH=%SystemRoot%\system32;%SystemRoot%;C:\strawberry2\c\bin;C:\strawberry2\perl\site\bin;C:\strawberry2\perl\bin;c:\Users\mwilson\src\icu\bin;C:\Program Files (x86)\Git\cmd 16:52
phenny diakopter: I'll pass that on when pmichaud is around.
diakopter phenny: tell pmichaud so it's definitely not icu
phenny diakopter: I'll pass that on when pmichaud is around.
Coleoid diakopter: Yay for broken! 16:54
16:54 cognominal_ left, cognominal left, cognominal_ joined, drbean left 16:55 brrt1 left, brrt joined
Coleoid If you pass build with Strawberry32 I'll be slightly mistifogged. 16:55
16:56 crab2313 left 16:57 drbean joined, dakkar left 16:58 crab2313 joined 17:02 cognominal_ left, cognominal_ joined 17:05 brrt left 17:11 brrt joined, thou joined
diakopter Coleoid: yep, I get the same failure as pmichaud using 32-bit latest perl 17:12
flussence oh hey, I didn't realise I could just do: (cd nqp; git clean -dfx; git checkout origin/master~100; perl Configure.pl; make)...
time to bisect that stupid compile error on my laptop
17:14 brrt left 17:18 MayDaniel joined
diakopter Coleoid: see my comment on github.com/perl6/nqp/issues/47 17:21
Coleoid: basically, the only strawberry that we know works is 32-bit 5.12.3 (May 2011 release).
Coleoid diakopter: Does Strawberry bring in its own dyncall? 17:24
17:24 zby_home_ left, zby_home joined, drbean left
Coleoid diakopter: ...or am I trying too hard to make a connection between the too-few clues I see? 17:24
diakopter no, it must be something about the later versions of gcc, and also something about the 64-bit gcc 17:25
17:26 drbean joined
diakopter Coleoid: ready to try msvc? or do you want to try strawberry 32-bit 5.12.3? 17:27
Coleoid I figured out an incantation to build parrot with SbP & MSVC, but the same incantation (or primitive mods to it) doesn't work to change the NQP build over to MSVC.
It still builds w/GCC.
17:28 cognominal_ left, cognominal_ joined 17:31 cognominal_ left
diakopter Coleoid: trying with VC10, and strawberry perl, but with strawberry\c\bin removed from PATH 17:32
32-bit VC10, I should specify 17:33
Coleoid: I got inter::progs - Determine what C compiler and linker to use...Compilation 17:37
failed with 'gcc'
I wonder why it demands gcc
because perl was compiled with gcc?
ok, I'll try activestate perl instead of strawberry 17:38
17:40 seldon left
pmichaud back again 17:41
phenny pmichaud: 16:52Z <diakopter> tell pmichaud I got it to die with "undefined reference to `dcCall_x64_win64'" on my machine trying with latest msysgit, latest 64-bit strawberry perl, and set PATH=%SystemRoot%\system32;%SystemRoot%;C:\strawberry2\c\bin;C:\strawberry2\perl\site\bin;C:\strawberry2\perl\bin;c:\Users\mwilson\src\icu\bin;C:\Program Files (x86)\Git\cmd
pmichaud: 16:52Z <diakopter> tell pmichaud so it's definitely not icu
diakopter pmichaud: I updated the nqp ticket 17:43
er, commented on it
pmichaud Coleoid: if you get parrot to build with MSVC, then NQP built using that parrot should also be using MSVC. 17:44
diakopter++ # updating ticket, testing
Coleoid pmichaud: I like that theory! 17:45
diakopter Coleoid: which 'make' tool are you using with msvc?
Coleoid nmake 17:46
diakopter where did you get it?
jnthn comes with msvc++, no? :)
Coleoid C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\BIN\nmake.EXE 17:47
afk a few...
jnthn www.microsoft.com/visualstudio/en-u...pp-express # it installs an IDE too, but also should give you the things you need to build NQP and Rakudo. 17:48
(Yes, it's free.) 17:49
dalek ast: 24916aa | pmichaud++ | S02-literals/version.t:
Fix fudge.
17:49 fgomez left 17:54 drbean left 17:57 drbean joined
masak good evening, #perl6 17:59
pmichaud masak! o/
masak r: say "OH HAI" # I have a 14yo lokoing over my shoulder :)
p6eval rakudo d8e7b6: OUTPUT«OH HAI␤»
masak r: .say for 1..10
p6eval rakudo d8e7b6: OUTPUT«1␤2␤3␤4␤5␤6␤7␤8␤9␤10␤»
pmichaud r: say "Hello 14yo looking over masak++'s shoulder!" 18:00
p6eval rakudo d8e7b6: OUTPUT«Hello 14yo looking over masak++'s shoulder!␤»
diakopter Coleoid: did you use vcvarsall to setup your environment?
masak r: .say for "Jokubas", *.chomp ... "" 18:01
p6eval rakudo d8e7b6: OUTPUT«(timeout)»
pmichaud ... .chop?
masak o.O
flussence that should'a worked.
masak r: .say for "Jokubas", *.chop ... ""
pmichaud .chomp only eats newlines, iirc.
p6eval rakudo d8e7b6: OUTPUT«Jokubas␤Jokuba␤Jokub␤Joku␤Jok␤Jo␤J␤␤»
18:01 mucker left
flussence oh, there 18:02
masak \o/
pmichaud ooooh
r: .say for "pmichaud", *.substr(1) ... ""
p6eval rakudo d8e7b6: OUTPUT«pmichaud␤michaud␤ichaud␤chaud␤haud␤aud␤ud␤d␤␤»
pmichaud coooooooooool
masak++
masak :D
18:03 Jokubas joined
masak Jikubas: OH HAI \o/ 18:03
Jokubas*
Jokubas oh hello there :)
18:03 supernovus joined, Jokubas left
masak 14yo was brief here :) 18:03
diakopter checks out rakudo+nqp+parrot for the 15th-ish time in 20 hours.
pmichaud I remember being 14yo.... like it was 32 years ago. :)
I got my first computer at 14. Dad didn't want me to have one... figured it would end up in the closet and be a waste of money. :-P 18:04
flussence r: .say for reverse [\~] 'abcdef'.comb 18:05
p6eval rakudo d8e7b6: OUTPUT«abcdef␤abcde␤abcd␤abc␤ab␤a␤»
flussence
.oO( gee, I like making things difficult... )
supernovus In a comb() regex, is there a way to say I don't want a part of the pattern included in the results? Say for instance, $string.comb(/\".*?\" | \'.*?\' | \S+/); As it currently works, the strings in quotes have the quotes included in the matches, is there a way to exclude them automatically? Or is this best left to trimming them out after the matches? 18:09
diakopter pmichaud: I updated your windows rakudo build doc a lot 18:10
flussence nr: say q{"abc" d}.comb(/ \" <( .*? )> \"); 18:11
p6eval niecza v19-13-g442e075: OUTPUT«===SORRY!===␤␤Unable to parse regex; couldn't find final '/' at /tmp/ak6A1FkTa7 line 1:␤------> say q{"abc" d}.comb(/ \" <( .*? )> \"⏏);␤␤Parse failed␤␤»
..rakudo d8e7b6: OUTPUT«===SORRY!===␤Preceding context expects a term, but found infix / instead␤at /tmp/dY5A8wpx3Q:1␤»
Coleoid diakopter: yep, VCVars via the studio command line shortcut.
flussence whoops
nr: say q{"abc" d}.comb(/ \" <( .*? )> \" /);
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«abc␤»
diakopter parrot *feels* like it's building significantly faster using msvc than using gcc 18:12
18:13 snearch joined
diakopter same with nqp. 18:13
Coleoid: I didn't have to modify anything to get parrot and nqp to build 18:14
Coleoid With SbPerl and MSVC?
diakopter no, activeperl and msvc 18:15
jnthn: do you build with activeperl or strawberry? 18:16
supernovus I just realized my question, while academically interesting, is actually unnecessary, as I want the quotes in the returned strings in my particular application after all. Ah the joys of writing template engines.
diakopter Coleoid: I think with msvc you'll have to use activeperl, because parrot tries to get its compiler info from perl (I think) 18:17
Coleoid diakopter: AsPerl and MSVC is probably my evening config change. 18:18
diakopter Coleoid: see my instructions at docs.google.com/document/d/1kNED54...edit?pli=1
however, on my machine, rakudo built with msvc builds CORE.setting 13% slower than rakudo built with gcc 18:20
there, built successfully on 64-bit Win7 with 64-bit activeperl and 64-bit msvc 18:22
18:24 crab2313 left, drbean left
Coleoid Thanks for the doc! I may try both paths for the practice, but I don't feel I've got the chops to fix Strawberry or dyncall to remove the version sensitivity, so I think my working env will be AsPerl and MSVC. 18:25
18:26 drbean joined
Coleoid Is there a build-on-config success/failure collector for Rakudo? ISTR Perl 5 has one, and I'm not sure which other projects do. 18:27
18:27 crab2313 joined
Coleoid Gone for now, $dayjob calls. 18:28
Thanks for the assistance, diakopter++, pmichaud++ ! 18:30
diakopter yw
jnthn diakopter: Active 18:33
diakopter k
jnthn: see the doc linked above and suggest/make changes if you like 18:34
18:34 Coleoid left
jnthn diakopter: May be worth a note that the bitness of the AS and MSVC should match. Otherwise, there will be trouble. 18:36
diakopter done. 18:38
18:40 sporous joined
pmichaud STD.pm6 still uses the older ** syntax for repetition? 18:41
jnthn pmichaud: ** is still the syntax for repetition a number of times, iirc, just not for separators. 18:42
arnsholt jnthn: I've realized there are two callback cases to be handled BTW
jnthn oh
token charnames { \s* [<charname><.ws>] ** [','\s*] }
Yeah, that's gotta be outdated...
arnsholt C calling back into Perl (which is what I'm handling now) and Perl invoking a function pointer returned from C
pmichaud yes, I meant for separators, thanks
arnsholt I've relegated the latter case to "marginal not gonna bother" for the time being 18:43
jnthn I guess STD was updated to parse the new syntax, but doesn't use it itself yet.
pmichaud I wonder if that's worth of a github issue :)
jnthn arnsholt: +1
pmichaud STD parses the new syntax?
jnthn arnsholt: I think the "calling back to Perl" is the useful case
pmichaud hmmmmm
arnsholt But hopefully we can use the existing NativeCall REPR to do most of the heavy lifting
jnthn std: /a+ % b/
pmichaud maybe I should file a github issue ticket for it :)
p6eval std fd2647b: OUTPUT«ok 00:00 41m␤»
pmichaud std: /a+ %% b/ # checking 18:44
p6eval std fd2647b: OUTPUT«ok 00:00 41m␤»
arnsholt Yeah, definitely. Doing continuation passing between C and Perl smells way, way marginal as far as use cases go
pmichaud well, it could parse the new syntax but not implement it.
I'd better leave it as an issue for now and let someone more familiar with STD.pm6 status make patches.
jnthn +1 18:45
Yeah, see <separator> in the regex chunk of the grammar
I think I may have stolen it pretty much as is into QRegex.
18:45 thou left
pmichaud yes, I looked at that last week and it looked fine. 18:45
(about the same time I was updating for <( and )> and looking at other regexy things. 18:46
18:49 thou joined
jnthn did something right in the regex engine! :) 18:49
[Coke] phenny: tell Coleoid that smolder.parrot.org/app/projects/smoke_reports/5 exists for tracking test failures on different versions/platforms.
phenny [Coke]: I'll pass that on when Coleoid is around.
[Coke] is pretty sure there used to be a "make smolder_test" or similar. 18:50
18:50 vmspb joined 18:52 daxim left
sorear good * #perl6 18:54
flussence [Coke]: `make spectest_smolder`
18:54 telex left, drbean left
mauke niecza: q{ {2+2} } 18:54
p6eval niecza v19-13-g442e075: ( no output )
benabik Or just `make smolder` to run the basic tests, IIRC. 18:55
18:55 drbean joined
[Coke] is reminded that he stalled out on github.com/coke/muddle 19:00
19:01 telex joined
flussence ooh, I think I can bisect this all the way using only battery power... 19:01
19:12 GlitchMr left 19:16 samlt left 19:17 pyrimidine joined 19:22 spider-mario_ joined 19:23 spider-mario left 19:24 drbean left 19:25 [particle]1 joined 19:26 drbean joined 19:28 samlt joined 19:29 [particle] left
tadzik ho, FPW's Lightning Talks are online 19:41
brrr, it's horrible to listen to yourself talking 19:42
jnthn I know!
tadzik <insert rageface>
jnthn I'm always like..."wtf, I sound like THAT"?
19:43 Bucciarati left
sergot tadzik: where are they? :) 19:43
19:43 sudokode joined
tadzik sergot: try "journeesperl" maybe 19:44
mine is at www.youtube.com/watch?v=_qtLHrQXblY
19:44 birdwindupbird joined
PerlJam 1 euro/day is better than $10USD/day at many US hotels (oddly, it's the cheaper hotels that have free internet for guests) 19:47
sergot tadzik++ I like it \o/ 19:48
tadzik \o/
that's good to hear 19:49
shame the Bailador one wasn't recorded
19:50 Bucciarati joined
flussence PerlJam: I've heard it explained as people who stay at expensive hotels and need internet are usually on business trips, so they don't care what the cost is; it all goes on their corporate account anyway. The hotels have figured this out and milk it for all they can :) 19:50
PerlJam heh, I'm watching jnthn's LT on awesome operators and it sounds like mst piped up to ask about anime cats. 19:51
flussence: yeah, that's what I figured too
flussence jnthn! nqp 35db044 broke my laptop's perl6! and it's a 50 thousand line diff! 19:52
jnthn oh f...
What can I say, I code REALLY fast :P
It's hard to take commit breaks. 19:53
tadzik :D
moritz is that the bootsrap update?
jnthn Oh. It was a bootstrap update.
That potentially means that any commit between this bootstrap update and the last bootstrap update before it is guilty :( 19:54
19:54 drbean left
jnthn The one before it was 594b59d 19:55
19:56 snearch left, drbean joined
jnthn 98 commits /o\ 19:56
moritz that was altnfa, no?
jnthn Yeah
moritz and qrpa 19:57
tadzik aaargh
jnthn Well
flussence I did a git bisect over the last 400 commits to get here, if there's a way to do this part myself I can try it again
jnthn The way to find it is to bisect all of those revisions.
Basically, for each commit, do make bootstrap-files; make clean; make
well, Configure first. 19:58
flussence
.oO( time to plug in the laptop charger... )
jnthn BUT...not every commit will be an NQP in a particularly working state.
tadzik panda doesn't like to be compiled while it's running
flussence bad panda! be more re-entrant! :) 19:59
jnthn flussence: If you want to check one revision out by hand with the method I suggested that would give us some idea... d63dec6 is a good one. 20:00
flussence right.
jnthn flussence: That is the last revision before work on altnfa started.
20:00 mauke left, preflex left
jnthn ed6ecff is also maybe interesting in so far as it's a point where altnfa works, but before some optimizations. 20:02
sorear thank you tadzik for inspiring me to finish niecza/non-bootstrap :D
tadzik hehehe
masak tadzik++ sorear++ 20:04
tadzik aaargh I fail at git
dalek nda: b19c383 | tadzik++ | / (4 files):
Remove platform-specific bootstraps in favor (favour?) of pure-Perl6 version
20:05
sorear tadzik: favor and favour are both valid
tadzik oh, not so much
sorear: the latter is british, right?
masak aye.
sorear the former is more common in the US, the latter is more common in the commonwealth, right
20:05 sporous left
tadzik british-ish 20:05
sorear I don't know much about english as written in poland :D 20:06
tadzik :)
masak hey! don't muddle a totally black-and-white issue! :P
tadzik Polish English
masak 'ou' is BE.
tadzik ok, what was I to do with panda again
masak which is why the Brits spell it *loul*
sorear
.oO( Reverse Polish English )
masak .oO( I need to reverse Polish up my English )
20:06 mauke joined 20:07 crab2313 left
tadzik I'd be glad to hear if bootstrap.pl works for anyone else than me :) Volunteers? 20:07
dalek nda/pod-installing: 395943c | tadzik++ | ext/File/Find.pm:
Merge branch 'master' into pod-installing
nda/pod-installing: de5092e | tadzik++ | / (9 files):
Merge branch 'pod-installing' of github.com:tadzik/panda into pod-installing
tadzik oh gosh, what happened :)
arnsholt One of my professors has a standard exam question for his grammar engineering class called Reverse English
It's pretty hard
20:09 mauke left, preflex_ joined, preflex_ is now known as preflex 20:12 mauke joined 20:13 preflex left
pmichaud hmmmm, github fail.... or at least delay 20:14
dalek ast: 37470f3 | pmichaud++ | S02- (2 files):
Some more tests for the Version type.
20:16
tadzik anyone experienced with git submodules?
or should I just stay away from them? :)
masak rn: say "abc".trans(['a' => 'n']) 20:17
p6eval niecza v19-13-g442e075: OUTPUT«Unhandled exception: ["a" => "n"] is not a Pair␤ at /home/p6eval/niecza/lib/CORE.setting line 1403 (die @ 5) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2647 (ANON @ 6) ␤ at /home/p6eval/niecza/lib/CORE.setting line 2678 (Niecza-trans @ 9) ␤ at /hom…
..rakudo d8e7b6: OUTPUT«Only Pair objects are allowed as arguments to Str.trans, got Array␤ in method trans at src/gen/CORE.setting:4232␤ in block <anon> at /tmp/GsYXaNxK_P:1␤␤»
masak rn: say "abc".trans(['a'] => '[n'])
dalek kudo/nom: d66eff4 | pmichaud++ | src/core/Version.pm:
Refactor Version so that it's not ~~ List.
kudo/nom: efc327f | pmichaud++ | src/core/Version.pm:
Add Version.new(Str:d) method.
kudo/nom: a67c130 | pmichaud++ | src/Perl6/ (2 files):
Switch compiler to use Version.new(Str) instead of Version.new(@array).
p6eval niecza v19-13-g442e075: OUTPUT«===SORRY!===␤␤Unable to parse argument list at /tmp/beCmohgT7z line 1:␤------> say "abc".trans(⏏['a'] => '[n'])␤Couldn't find final ')'; gave up at /tmp/beCmohgT7z line 1:␤------> say "abc".trans(['a'] => '[n'…
..rakudo d8e7b6: OUTPUT«===SORRY!===␤Unable to parse postcircumfix:sym<( )>, couldn't find final ')' at line 2, near "])"␤»
kudo/nom: d0963e9 | pmichaud++ | src/core/Version.pm:
Remove Version.new(@args, :plus) form.
kudo/nom: 6282653 | pmichaud++ | / (2 files):
Add &infix:<cmp>(Version, Version);
masak rn: say "abc".trans(['a'] => ['n'])
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«nbc␤»
masak rn: say "abc".trans(['a..c'] => ['n..p'])
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«abc␤»
dalek ast: 15c92c1 | pmichaud++ | S02-literals/version.t:
Unfudge now-passing cmp test in version.t .
masak did I just dream it, or should .trans support .. in strings in arrays in pairs? 20:18
pmichaud masak: I've never been able to keep up with all of the .trans forms :)
.trans reminds me of the many iterations of ... before it was simplified :)
masak well, the calling syntax of .trans always struck me as one level too complicated. 20:19
but I don't remember it changing so much, tbh.
in the spec, that is. 20:20
20:20 Bucciarati left
pmichaud yes, the calling syntax reminds me of that also. It feels like overloading too many options into one method, so that you're never sure which combinations are valid (and if they're valid, what they do) 20:20
masak *nod* 20:21
pmichaud anyway, I don't know the answer to the .trans question, sorry. :)
afk # decommute
masak czechs S05 20:23
flussence btw if anyone's looking for a puzzle to solve, using one .trans(«& < > " '»...) to escape HTML is currently slower than doing five separate .subst calls. :)
PerlJam masak: in any case, it seems weird to me that .trans would allow .trans('a..c' => 'n..p'), but not allow .trans(['a..c] => ['n..p']);
flussence d63dec6 builds fine. trying the other one now...
masak oh! it seems it's either should be with no arrays, or with ranges of chars. 20:24
the combo I did is not in there.
which kinda proves pmichaud's point, I guess.
PerlJam yep
masak rn: say "abc".trans('a..c' => 'n..p')
p6eval rakudo d8e7b6, niecza v19-13-g442e075: OUTPUT«nop␤»
masak there we go.
20:24 drbean left
masak I'd like to file a formal complaint that I'm more than Least Surprised. :) 20:25
20:25 drbean joined 20:29 sftp_ left 20:30 sftp joined 20:31 [particle]1 is now known as [particle] 20:32 adu joined
masak in #postgresql they have a nice atmosphere, too. there's a nick there "RhodiumToad". I'm starting to think there's a positive correlation between channel niceness and amphibian nick density. 20:33
pmichaud github.com/perl6/specs/issues/new # <-- complaint department for masak++ 20:36
or, p6l if you also want extra bikeshedding with your order :)
masak that seems not entirely unapt for this. 20:37
I'll see if I have time to put together either a specbug, or a p6l thread seed, or both, tonight.
if not, I'll get to it tomorrow.
dalek nda/offline-bootstrap: c77524e | tadzik++ | / (38 files):
First shot at offline bootstraping; seems to work
20:38 MayDaniel left
flussence aha. 20:43
ed6ecff is bad.
(still bisecting, but at least I have two endpoints to go from) 20:44
jnthn That narrows it to 33 commits 20:45
masak furthermore, I posit that the "Download" link on perl6.org is lacking for two reasons: (a) too many clicks for no benefit. I count 3 clicks to actually start a download. decisions on the way which don't really matter. 20:49
(b) never once does it mention Niecza.
the (a) one is unfortunate from a "conversion" perspective. the (b) one is unacceptable. 20:50
20:51 Bucciarati joined
flussence have it like mozilla.com... but whichever perl6 has the current highest test score gets the big button :) 20:52
(also, ow. that's a lot of orange on their site.) 20:53
20:53 crab2313 joined, adu left
pmichaud masak: I think having a single download page on perl6.org would be useful for both (a) and (b) 20:54
20:54 drbean left 20:55 drbean joined
PerlJam what about making the download button more into a box with 3ish buttons that read "Download Rakudo", "Download Niecza", "Download Pugs" ? 20:55
dalek nda/offline-bootstrap: c37cd2c | tadzik++ | b (2 files):
Ensure that DESTDIR is respected
pmichaud someone new to perl6 would want to know the difference and how to choose.
tadzik phenny: tell moritz panda on offline-bootstrap is capable of installing itself to a specified directory without an internet connection. That could prove useful for Star 20:56
phenny tadzik: I'll pass that on when moritz is around.
masak pmichaud: +1 for Download page.
pmichaud: if we can make that page very simple and 1-click, then that would be really nice.
pmichaud yes, I agree.
jnthn Also, when we have it, should link directly to MSI for Windows users too. 20:57
dalek nda/offline-bootstrap: ee1aa2b | tadzik++ | projects.json.bootstrap:
Oops, forgot the most important part
pmichaud yes, I agree.
and I expect 2012.07 star to have a MSI for Windows.
masak a good first start would be simply: "There are two Perl 6 compilers that we recommend: * Rakudo: [.tar.gz latest], [Windows latest] * Niecza [latest]"
or maybe s/Rakudo/Rakudo Star/
pmichaud if someone prototypes a page I'll do some updates to it. I'll also make sure that updating that page gets into the appropriate sets of release notes. 20:58
tadzik phenny: tell moritz also, by manipulating projects.json.bootstrap and bootstrap.pl it should be able to install any Star modules required, all offline 20:59
phenny tadzik: I'll pass that on when moritz is around.
masak if no-one gets to it before tomorrow, I'll try to make time for prototyping a page after doing the .trans bits.
dalek d: 3b49ac8 | pmichaud++ | STD.pm6:
The '+' in <?before \d+> is redundant.
21:01
21:05 skids left 21:07 fgomez joined
dalek osystem: 32358db | (Timothy Totten)++ | META.list:
Added Template6 to module list.
21:10
sergot good night! o/ 21:11
21:11 sergot left
masak dobranoc, sergocie. 21:13
tadzik 'noc
21:17 birdwindupbird left 21:19 lue left, Bucciarati left 21:20 dukeleto joined
[Coke] has a nice first experience with SourceTree from atlassian on OS X. 21:22
21:22 kaare_ left
[Coke] (native osx git gui) 21:22
PerlJam [Coke]: excellent. 21:23
I remember trying several svn gui clients on MacOS a few years ago and they invariably corrupted things. Thus I'm a little gun-shy when it comes to source code control guis 21:24
21:24 drbean left 21:25 drbean joined 21:33 supernovus left, lue joined 21:35 zby_home left 21:36 vmspb left
masak lol I managed to produce another July blog post! \o/ strangelyconsistent.org/blog/july-1...her-things 21:38
read it while it's still warm.
jnthn pmichaud: Don't suppose you know off the top of yoru head if peek_exception always gets the same thing an immediately-following .get_result ($Pfoo) does? 21:39
*your
hmm, it looks like it does... 21:40
flussence r: say ('a'..'z')[0 ..^ */3] 21:47
p6eval rakudo 628265: OUTPUT«a b c d e f g h i␤»
flussence
.oO( /me ponders the evil ways which this can be misused... )
turns out not many. nuts :( 21:51
21:54 drbean left
pmichaud jnthn: peek_exception? what's that? 21:55
pmichaud doesn't remember "peek_exception"
what's a good name for a method that decontainerizes all of the elements in a list?
21:56 drbean joined
pmichaud we could potentially bring back .seq for that :) 21:56
21:59 Bucciarati joined
masak sometimes I feel there should be more of an across-the-board solution to decontainerization. not just scattered types everywhere. 22:00
jnthn pmichaud: Something I think I may not need in the end... :) 22:01
pmichaud: It was possibly just a hack on top of the existing pile of exception code-gen hacks... 22:02
diakopter [Coke]: I spend a very large part of my $work time interacting with APIs of very large installations of various Atlassian products. 22:03
oh, and I attended the Atlassian conference in SF last month 22:04
pmichaud masak: well, that's why I'm asking about a method and not a type :-) 22:05
jnthn: I'm also thinking of adding some sort of $!flat flag to Parcel, to signal when all of the elements are already flat. 22:06
diakopter pmichaud: how about decontainerize_all_the_things
jnthn You think it's cute today... :)
pmichaud diakopter: well, yes, I could do something like that; I'm hoping for something that is spec-ish
jnthn pmichaud: Benefit?
pmichaud .values would be another choice.... but we already have .values meaning something else
jnthn pmichaud: Performance? Semantics? 22:07
pmichaud performance, mainly
some help with semantics
diakopter .containeds
jnthn pmichaud: How would be decide when to set it?
pmichaud jnthn: the parcel would detect it and set it at runtime (mre)
$!flat can be True, False, or Mu (don't know yet)
jnthn nqp: pir::die__Ps('lol') 22:08
p6eval nqp: OUTPUT«error:imcc:The opcode 'die_p_sc' (die<2>) was not found. Check the type and number of the arguments␤ in file '(file unknown)' line 172237460␤»
jnthn nqp: pir::die__vs('lol')
p6eval nqp: OUTPUT«lol␤current instr.: '_block1000' pc 24 ((file unknown):36) (/tmp/FpsHtMtc6v:1)␤»
jnthn pmichaud: Can we ever know it at compile time, ooc?
pmichaud when we ask a Parcel for something where flatness would help, it can inspect its elements very quickly (parcels are finite) to decide that and set the flag.
jnthn: we can know it at compile time sometimes, yes.
but more importantly, we can detect it at build time
*and* our Parcel builder is in C
*and* we're already scanning all of the elements of the Parcel 22:09
jnthn Ah
pmichaud so it's just an additional check then to set the flag. If we don't want to incur the runtime cost at build time, we can always wait to incur it at .flat time
jnthn There's the extra memory too, of course...
pmichaud one extra binding, yes. 22:10
jnthn otoh
We currently in build Parcels even full of literals every single time at runtime.
pmichaud well, I expect that to be optimized away someday
jnthn Doing those once at compile time will win us plenty and this seems to increase the value of doing that. 22:11
(e.g. it's even more that we can figure out at compile time)
pmichaud yes
jnthn Sounds like it's an overall win.
pmichaud mainly it bugs me that Parcel.flat constructs a (lazy) list that then has to be iterated in order to do things like .[] on the Parcel
if the Parcel already knows it's flat, it can construct a reified list directly 22:12
22:12 alester left
jnthn *nod* 22:12
pmichaud and that's just a simple clone + create operation
instead of a bunch of reify calls
jnthn wonders how common that case is 22:13
pmichaud well, it's about to be more common.
while working on Version today, I discovered it bugs me that it's holding the components of the version as a List/Array
because it's too easy for someone to accidentally get a hold of the List/Array and then start shifting or pushing on it 22:14
(thus changing the original value in Version)
masak aye.
jnthn eek!
pmichaud so the way to fix that is to have the Version hold a Parcel instead
masak or do preemptive cloning before handing out the List/Array.
pmichaud actually, I was looking for a List that couldn't be shifted or unshifted or pushed or popped or .... and then I said "oh! That's a Parcel!" 22:15
jnthn Aha! :)
pmichaud so, many places where we have @!attr may become stored parcels instead. 22:16
jnthn (Aside: ARGH WTF OMG DIE DIE <STAB> DIE...PIR has .get_result AND .get_results and they mean different things!!1!)
pmichaud and since the most common thing to do on a Parcel is iterate it... as in .map or .values.... well, knowing that it's already flat can be a big win. 22:17
jnthn Makes sense.
+1
pmichaud flattening ListIters can also do some nice shortcircuits if they encounter a Parcel that is already known to be flat. 22:18
i.e., an immediate splice into the results instead of a splice + scan further. 22:19
22:19 fgomez left, sporous joined, fgomez joined
masak has a feeling something in the above discussion will have consequences that will allow him to submit a rakudobug or two in the future :) 22:19
pmichaud masak: I actually suspect we'll end up closing bugs. 22:20
flussence $ git bisect bad 22:21
80306ffca6bedaf1b2755771d2e7a52fa757b3e4 is the first bad commit
pmichaud anyway, if the parcel can be a parcel of decontainerized thingies, then we have a truly immutable object :-)
thus the desire for a method that returns a decontainerized version of a list :-)
jnthn flussence: Wow 22:22
22:22 harmil left
jnthn That...would not have been anywhere near the top of my guess list :S 22:22
flussence I don't know much of this code, but I agree, that looks totally innocuous to me :/ 22:23
jnthn Yeah :S
dalek p/toqast: 08f40a4 | jnthn++ | src/QAST/Operations.nqp:
Implement CATCH and CONTROL cases of nqp::handle.
p/toqast: 1def481 | jnthn++ | src/QAST/Operations.nqp:
Add nqp::die_s.
p/toqast: b38ba4a | jnthn++ | t/qast/qast.t:
A couple of tests for nqp::handle, both of which pass.
22:24 drbean left 22:25 drbean joined
pmichaud ....moving from an alt to an altseq? 22:26
the other way around, I could see being an issue, but that.... :-?
jnthn flussence: 0920483 certainly is OK? 22:27
And 80306ff dies with the same error that HEAD does?
22:27 gfldex left
flussence wait... 80306 *doesn't* 22:28
invoke() not implemented in class 'BUILD_MAGIC'
22:29 bluescreen10 left
flussence the error I had to start with was "not implemented in class ')'" 22:29
jnthn I think those are really the same underlying cause, though. 22:30
pmichaud rakudo.org/2012/06/30/rakudo-star-2...mment-1723 # just arrived on rakudo.org 22:31
should we file an issue ticket; if so, where?
22:31 PacoAir left
flussence I'm trying 0920483 now... IIRC that thing in single quotes was '$' at one point too. 22:31
pmichaud I guess it should go to RT
masak RT?
yes.
22:34 crab2313 left 22:39 fgomez left 22:48 whiteknight joined, whiteknight is now known as Guest9713
masak was I the only one to read yesterday's backlog and think "should Positional[::T] really be covariant on T? it's a read-write thing, it should be invariant" ? 22:50
sorear SOP for object-oriented languages is to make arrays be covariant with the possibility of exceptions from store. 22:52
flussence 0920483 works. hmm
22:53 skids joined, spider-mario_ left 22:54 gfldex joined, fgomez joined, drbean left 22:55 drbean joined
masak sorear: there are some days when I don't like assignment, period. :/ 22:56
'night, #perl6
flussence so... a broken build for approximately two people, with absolutely nothing in common in the OS besides 32-bit linux, and it's from a 4-char diff. BLARGH 22:58
jnthn BLARGH indeed. :S 22:59
dalek p/toqast: 8dfe9bb | jnthn++ | src/QAST/Operations.nqp:
Missing exception handler pops.
23:05
jnthn 'night, #perl6 23:16
23:24 drbean left 23:27 drbean joined
dalek kudo/nom: a7aeeaf | pmichaud++ | src/ (3 files):
Add nqp::p6listitems, which returns $!items RPA for a List, vivifying it if needed.
23:31
kudo/nom: a3b6fa8 | pmichaud++ | src/core/Array.pm:
Update some Array methods to use nqp::p6listitems();
kudo/nom: 8ab5600 | pmichaud++ | src/core/List.pm:
List.values always returns a List that may be mutated separately from the invocant.
kudo/relist: 5126575 | pmichaud++ | src/ (3 files):
Add nqp::p6listitems, which returns $!items RPA for a List, vivifying it if needed.
kudo/relist: 2520130 | pmichaud++ | src/core/Array.pm:
Update some Array methods to use nqp::p6listitems();
kudo/relist: 2164859 | pmichaud++ | src/core/List.pm:
List.values always returns a List that may be mutated separately from the invocant.
pmichaud erg, I only wanted to push the one branch.
oh well.
23:35 cognominal joined 23:49 thou left 23:54 thou joined, drbean left 23:56 drbean joined