»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'perl6: say 3;' or rakudo:, niecza:, std:, or /msg camelia perl6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by sorear on 25 June 2013.
dalek ast: dfed85f | coke++ | S14-roles/stubs.t:
fudge for rakudo.jvm
01:04
labster m: "0".pred.perl.say 01:55
camelia rakudo-moar c793d8: OUTPUT«Failure.new(exception => X::AdHoc.new(payload => "Decrement out of range"))␤»
labster I feel like that maybe should work, but I can understand why it doesn't.
But I do feel like that needs to be a typed exception.
labster X::OutOfRange or something more specific... hm. 01:58
BenGoldberg m: Buf.new("0".encode("utf8")[0].pred).decode("utf8").perl.say 02:09
camelia rakudo-moar c793d8: OUTPUT«"/"␤»
labster well, that too, but I was thinking more along the lines of "-1" 02:12
which is what happens in Perl 5.
geekosaur perl5 automatically changes a string to a number for that. perl6 doesn't do so here since .succ on Str is what used to be magic autoincrement in perl5; perl5 has no corresponding magic autodecrement, nor does perl6 (far too many corner cases) 02:15
so perl5 has inconsistent increment vs. decrement behavior on strings, whereas perl6 is consistent 02:16
labster Or at least consistently inconsistent.
geekosaur anyway if you want numeric increment/decrement on a Str, convert it to a number first 02:18
labster of course 02:20
I'm just documenting the current behavior. It's in S03, but something about it should be in S32::Str so I'm adding it. 02:21
dalek ecs: 193f4b6 | (Brent Laabs)++ | S32-setting-library/Str.pod:
document Str.succ and Str.pred in S32::Str
02:24
BenGoldberg m: "0".encode("utf8")[*].pred; 02:34
camelia rakudo-moar c793d8: OUTPUT«No such method 'pred' for invocant of type 'Parcel'␤ in block <unit> at /tmp/7gXSZl2SH9:1␤␤»
BenGoldberg m: "0".encode("utf8")[0].pred.Buf.decode("utf8").perl.say; 02:35
camelia rakudo-moar c793d8: OUTPUT«No such method 'Buf' for invocant of type 'Int'␤ in block <unit> at /tmp/a1NPiwYlHa:1␤␤»
diakopter m: ::!??YOUR_FACE!! 02:58
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/8_oPDFSyT1␤Cannot negate ??YOUR_FACE!! because it is not iffy enough␤at /tmp/8_oPDFSyT1:1␤------> ::!??YOUR_FACE!!⏏<EOL>␤»
diakopter q.e.d. 02:59
colomon diakopter++ 03:07
hoelzro o/ #perl6 03:31
diakopter .u ∎ 03:56
yoleaux U+220E END OF PROOF [Sm] (∎)
zacts hello 05:38
ecocode_ hi... is there any improvement in the jvm backend for nicier calls of methods when using java libs ? 05:44
zacts I wonder if Perl6 can utilize llvm in some way.. 05:45
TimToady zacts: the problem with llvm is it's very...ll
zacts low level? :-)
TimToady ecocode_: there was some work to at least pay attention to overloading on arity, but we don't have anything that dispatches on type yet 05:46
zacts anyway, I'm wanting to start writing some perl6 modules, maybe I can start by contributing that way.
mainly because Perl6 sounds fun. 05:47
ecocode_ TimToady: ok
TimToady well, it certainly is that
TimToady jnthn had some ideas for how to improve the overload mapping, i think 05:48
FROGGS_ zacts: so if you want to get into it, jnthn would be happy to outline the changes 06:23
ecocode_ btw, I had to increase jvm heap size to allow compilation of perl6-jvm on osx (I raised it from 1000m to 2000m, but probably less would have worked too) 06:39
lizmat ecocode_: you might find this interesting: blog.timbunce.org/2010/07/16/java2p...d-whereto/ 06:44
tadzik computer, messages 06:47
yoleaux 24 Aug 2014 23:32Z <lizmat> tadzik: looking forward to seeing you
tadzik :)
lizmat ecocode: it predates the Rakudo JVM project
zacts FROGGS_: sure, that would be cool. in the meantime can I read the perl5 -> perl6 tutorial?
tadzik lizmat: starts about 13, right? 06:48
lizmat starts any time... we're sort of ready to receive nowish already 06:49
tadzik oh, not quite
I have a rental car to pick up at 12, so I'll show up somtime after that 06:50
lizmat_ errands& 07:01
sergot o/ 07:11
tadzik o/
zacts FROGGS_: bbl.. 07:16
daniel-s_ \o 07:26
FROGGS zacts: you can read/do/try whatever you want :o) 07:32
zacts: I just wanted to state that we are happy to explain things, whenever you feel the urge 07:33
timotimo i don't understand what lizmat was refering to when she said "it predates the rakudo jvm project" 08:09
FROGGS timotimo: the linked blog entry is meant 08:10
timotimo ah! 08:12
somehow i missed that complete line
itz (liz and wendy)++ # hackspace in hotel 08:17
dalek c: 7630c2b | (Steve Mynott)++ | lib/Type/X/ (6 files):
fix minor spelling errors and typos
08:39
zacts cool, thanks! /me is about to pass out. It's almost 3am, and I have class at 11am. laters.. 08:45
timotimo in comparison to the java2perl6api, the BootJavaInterop and JavaInterop in NQP and Rakudo respectively directly introspect the classes loaded in the jvm 08:50
sergot m: say 0.rand 09:02
camelia rakudo-moar c793d8: OUTPUT«0␤»
lismat m: say -1.rand
camelia rakudo-moar c793d8: OUTPUT«-0.135361962391201␤»
sergot $ perl -e 'print rand(0)'
lismat m: say -42.rand
sergot 0.218268494661064
camelia rakudo-moar c793d8: OUTPUT«-11.0446103640848␤»
lismat m: say 0.5.rand 09:03
camelia rakudo-moar c793d8: OUTPUT«0.092024084226117␤»
sergot lismat: p5 works differently
lismat maybe we should fail for 0.rand
not sure what use that would have, apart from not doing the right thing
sergot failing sounds reasonable for me 09:04
moritz just returning 0 sounds reasonable for me 09:05
timotimo can we only fail if the 0 is literal in the code, please?
i can see how $foo.rand could be reasonable to have 0 sometimes
moritz it's supposed to return a random number between 0 and 0, and it does that.
we don't have to catch every possible logic error on behalf of the user 09:06
m: say (-2).rand
camelia rakudo-moar c793d8: OUTPUT«-0.741529731085513␤»
sergot m: say (0.000001).rand
camelia rakudo-moar c793d8: OUTPUT«4.23838962826832e-07␤»
sergot m: say (0.01).rand 09:07
camelia rakudo-moar c793d8: OUTPUT«0.0018702903958634␤»
sergot Actually I would expect returning 0 here, I was disappointed when p5 returned something else 09:08
in the 0.rand case
timotimo did it regard 0 as undef or something? %) 09:14
m: Int.rand
camelia rakudo-moar c793d8: OUTPUT«Invocant requires an instance, but a type object was passed␤ in method Bridge at src/gen/m-CORE.setting:4600␤ in method rand at src/gen/m-CORE.setting:4427␤ in block <unit> at /tmp/7tu6TeiNmo:1␤␤»
timotimo AFK for big chunk of day & 09:20
sergot .seen psch 09:21
yoleaux I saw psch 23 Aug 2014 21:56Z in #perl6: <psch> it's late and there's a talk to watch early tomorrow... :)
sergot .teel psch could you check if HTTP::UserAgents works for you now?
.tell psch could you check if HTTP::UserAgents works for you now?
yoleaux sergot: I'll pass your message to psch.
dalek c: bad8959 | (Steve Mynott)++ | bin/p6doc:
assume index data for p6doc -f is in bin dir for the moment
09:36
lismat wishes she didn't have such a hangover 09:42
lismat blames some of the local slivovitsh varieties 09:43
lizmat blames the hangover :-) 09:46
sergot psch o/ 10:06
psch: iirc, you wanted to write some github stuff in p6, right? 10:07
psch sergot: hey
yoleaux 09:21Z <sergot> psch: could you check if HTTP::UserAgents works for you now?
psch sergot: yeah, i meant to do that. i didn't use HTTP::UserAgent though
although it'd probably worthwhile, not having to fiddle with the socket myself :) 10:08
sergot: panda install complains about 2 planned 1 run test in 09-ua-ssl.t
sergot I fixed some bugs recently, it should work better, so feel free to test :)
are you installing it from local or github? 10:09
could you gist it? 10:10
psch github.com/sergot/http-useragent/b...9-ua-ssl.t 10:10
there's only one test in that file but 2 planned
unless &is does more than i thought it does... :)
sergot there are throws_like and is tests
psch ooh 10:11
right
sergot line 8 and 15
lines
psch yeah, sorry, i haven't been awake long enough yet it seems
tbh, from your changes with OpenSSL i don't see how those could work
as in, not give the same error 10:12
but let me wake up and have a look in a bit
sergot okok :)
sergot psch: I'm eager to help you with those github things. 10:13
sergot would be great to have this : metacpan.org/pod/Net::GitHub in p6 10:16
dalek c: b654fe8 | (Steve Mynott)++ | index.p6:
work through @*INC
10:37
c: 89cfe71 | (Steve Mynott)++ | index.p6:
assume index file is in current bin directory, add some docs
c: 5bffe97 | (Steve Mynott)++ | index.p6:
comments
c: 55913f0 | (Steve Mynott)++ | bin/p6doc-index:
index is now build
c: 06e9a15 | (Steve Mynott)++ | / (2 files):
docs
lizmat m: sub a {...}; sub a { 42 } # feels like a rakudobug 10:38
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/B6nal6_Cd1␤Redeclaration of routine a␤at /tmp/B6nal6_Cd1:1␤------> }; sub a { 42 } # feels like a rakudobug⏏<EOL>␤ expecting any of:␤ postfix␤ state…»
lizmat std: sub a {...}; sub a { 42 }
camelia std ee1ef48: OUTPUT«ok 00:01 123m␤»
itz hmm I should collapse comments via rebase to avoid spamming the channel :-\
lizmat r: sub a {...}; sub a { 42 }
camelia rakudo-{parrot,jvm,moar} c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/tmpfile␤Redeclaration of routine a␤at /tmp/tmpfile:1␤------> sub a {...}; sub a { 42 }⏏<EOL>␤ expecting any of:␤ postfix␤ statement end…»
psch sergot: the &is-test is the one that breaks, with "err code: 1443668770584850713" 10:39
sergot psch: is there any err message?
I cannot reproduce this error
psch running test.pl6 from io-socket-ssl additionally gives me "Segmentation fault" as text error 10:40
*test.p6
well, against github.com instead of your url :)
the numeric error code seems a bit high as well, i still suspect 32bit/nativecall as the culprit 10:41
how did gdb'ing that work again... :) 10:42
sergot are you on 32bit machine? 10:43
psch i'm on a 32bit vm
so, yes 10:44
sergot ok, so it is the point where we should start.
psch: does nativecall work well on 32bit machines? 10:45
psch sergot: github.com/jnthn/zavolaj/issues/37 10:46
you probably remember the stray 2**32 error code check
sergot is creating a 32bit vm to reproduce this problem
I do 10:48
psch fwiw, the spec says that FROGGS++ last suggestion in the NativeCall ticket is correct, but that's not implemented anywhere, mainly because native ints aren't really implemented to limit themselves to bitsizes 10:48
m: my int8 $x = 1024; say $x 10:49
camelia rakudo-moar c793d8: OUTPUT«1024␤»
psch i had had a look at that a few weeks or so back, but c is hard and moar is complicated :) 10:51
sergot Ok, so the first task here is to limit them
yeah.. we need some help :)
tadzik sergot: metacpan.org/pod/Dancer::Request#DESCRIPTION 10:54
perhaps we want to follow that in Bailador
I mean, we definitely do :)
it's supposed to be a Dancer port
sergot tadzik: ok :) 10:55
tadzik sergot: want to do that or should I? 10:55
sergot tadzik: if you want this to be done now then I have some UA work now, but I can do this a little bit later with a pleasure 10:56
oh, too many 'now' there :)) 10:57
itz "p6doc -f say" should now work (assuming you run "p6doc-index build) first 10:58
tadzik sergot: ok, I'll go for it then
sergot tadzik++ 11:00
tadzik now that I read this code I wonder if it even works for GET requests 11:03
sergot why so? 11:04
tadzik I was reading Dancer code, and thought "I don't recall doing that"
well, it's only parsing params from psgi.input
that works if it's POST, but what if it's GET? Aren't they in PATH?
they are 11:05
it's a miracle it was any useful so far :D
sergot :D 11:06
tadzik sergot: is HTTP::Body somewhere in your toolchain? 11:07
sergot sergot: no, I can add this to the TODO list right now :) 11:08
tadzik it's okay, I don't need it that much :)
dalek c: c7be18a | (Steve Mynott)++ | bin/p6doc-index:
docs
11:10
sergot tadzik: we should think about WWW::Mechanize soon-ish :)
tadzik sergot: yes
sergot: that requires parsing HTML though 11:11
or at least "parsing" it
sergot yes :)
tadzik you could probably extract forms and urls correctly without parsing the entire thing
sergot right 11:13
tadzik sergot: have you seen github.com/tony-o/perl6-html-parser-xml/? 11:14
apparently the times when I knew every Perl 6 module in existence are long gone, and that makes me very happy
sergot no I haven't, looking at this now
tadzik segomos++
sergot segomos++ 11:15
nice 11:20
:)
tadzik now someone has to sit down and implement xpath andor css selectors :) 11:21
maybe I can do that, I use them a lot, it'd be nice to know how they work
sergot tadzik++ :) 11:23
tadzik does anyone know what to do when JVM build runs out of memory? 11:28
psch tadzik: increase -Xms and -Xmx, if you still can
the latter might be enough
tadzik psch: thanks, we're trying :) 11:29
Ven OH: We'd need to wait for Python 4 to get a type system 11:31
tadzik is OH for "OH!" or "overheard"? 11:32
ecocode_ today, I did better than sawyerx... I asked a question and received response from 2 gurus : TimToady _and_ lizmat ;) 11:37
tadzik :) 11:38
dalek ast: 8884780 | (Elizabeth Mattijsen)++ | S02-types/ (3 files):
Add todo tests for fragile .WHICH creation

  aristotle++ for making me do this
11:40
tadzik sergot: github.com/sergot/http-useragent/b...nt.pm6#L32 I think that's a security risk 11:46
someone could put cookies.dat in tmp with 777 permissions and then steal them from you, no?
perhaps using File::Temp would be a better idea 11:47
krunen r: multi sub a() {42}; multi sub a() {43}; a()
camelia rakudo-jvm c793d8: OUTPUT«Ambiguous call to 'a'; these signatures all match:␤:()␤:()␤ in any at gen/jvm/BOOTSTRAP.nqp:1212␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-moar c793d8: OUTPUT«Ambiguous call to 'a'; these signatures all match:␤:()␤:()␤ in sub a at /tmp/tmpfile:1␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot c793d8: OUTPUT«Ambiguous call to 'a'; these signatures all match:␤:()␤:()␤ in any at gen/parrot/BOOTSTRAP.nqp:1220␤ in sub a at /tmp/tmpfile:1␤ in block <unit> at /tmp/tmpfile:1␤␤»
krunen hmm
sergot tadzik: sounds reasonable, thanks! :) 11:48
tadzik what was your expectation? :)
lizmat sub redefined warning
because 2 subs with the same signature
wherease:
m: sub a {...}; sub a {42} # redefinition of stub??? 11:49
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/1099u1DYh5␤Redeclaration of routine a␤at /tmp/1099u1DYh5:1␤------> }; sub a {42} # redefinition of stub???⏏<EOL>␤ expecting any of:␤ postfix␤ state…»
lizmat that *shouldn't* fail, I would think
tadzik sergot: yay, seems like I learned something on the YAPC then :)
psch m: sub a {...}; { sub a { 42 }; say a }
camelia rakudo-moar c793d8: OUTPUT«42␤»
psch that doesn't really prove anything i guess 11:50
or rather, it doesn't change that lizmat++ has a legitimit concern
tadzik sergot: not sure if you've seen the security talk, it was on friday morning I think 11:50
awwaiid well the ... would typically be either edited directly or overridden in an objecty way (class method), right? I'm guessing that method override doesn't complain 11:51
sergot tadzik: I haven't :( 11:52
tadzik: they will be somewhere online soon, right?
sergot m: sub a { 1,2,3 }; say a[0]; 11:55
camelia rakudo-moar c793d8: OUTPUT«1␤»
lizmat m: say (1,2,3)[0] 11:58
camelia rakudo-moar c793d8: OUTPUT«1␤»
lizmat
.oO( not much different )
tadzik sergot: I think they said something about "few weeks" 11:59
sergot ok :) 12:02
hoelzro morning #perl6 12:08
tadzik hello hoelzro
hoelzro o/ tadzik
sergot tadzik: returning to cookies: we should provide a functionality to pass our cookie jar :) 12:13
tadzik that too :) 12:14
sergot and use File::Temp when when we don't pass it
m: class A { has $.a; has $.b = $.a }
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/d9zAtApT3w␤Virtual call $.a may not be used on partially constructed objects␤at /tmp/d9zAtApT3w:1␤------> class A { has $.a; has $.b = $.a⏏ }␤ expecting any of:␤ …»
sergot :) 12:15
tadzik well, it's correct :)
sergot yes, just trying :) 12:15
tadzik m: class A { has $.a; has $.b = sub { $.a } }
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/OdG8VURyD6␤Virtual call $.a may not be used on partially constructed objects␤at /tmp/OdG8VURyD6:1␤------> class A { has $.a; has $.b = sub { $.a⏏ } }␤ expecting any o…»
tadzik :(
Ven tadzik: why'd you do that? 12:16
dalek nda: 5b7a352 | tadzik++ | README.md:
Make README more correct, fixes #88
12:22
tadzik Ven: do what, the sub?
Ven tadzik: yes
what's wrong with a method?
tadzik Ven: I was thinking about something along moose's 'is lazy' or however that's written
Ven tadzik: I don't know moose :(. But not sure we can't `is lazy`? 12:23
tadzik Ven: I don't know :)
if not, maybe someone should write it
hint hint
sergot: can HTTP::UA do HTTP auth? 12:25
Ven erm, we can't really do waht I want without macros I'm afraid, mmh 12:27
I thought about a trait_mod:<is> + proxy to only compute it on the first run, but that's just a basic `is cached 12:28
tadzik hm 12:28
psch m: class A { has $.foo; method $.bar { $!foo // "dunno" } }; my $a = A.new; say $a.bar; $a.foo = "foo"; say $a.bar 12:29
camelia rakudo-moar c793d8: OUTPUT«===SORRY!=== Error while compiling /tmp/YHZuNuJCyN␤Missing block␤at /tmp/YHZuNuJCyN:1␤------> class A { has $.foo; method ⏏$.bar { $!foo // "dunno" } }; my $a = A.␤ expecting any of:␤ scoped declar…»
psch m: class A { has $.foo; method bar { $!foo // "dunno" } }; my $a = A.new; say $a.bar; $a.foo = "foo"; say $a.bar
camelia rakudo-moar c793d8: OUTPUT«dunno␤Cannot modify an immutable Any␤ in block <unit> at /tmp/EpRpAnu5HU:1␤␤»
psch oh rw
m: class A { has $.foo is rw; method bar { $!foo // "dunno" } }; my $a = A.new; say $a.bar; $a.foo = "foo"; say $a.bar
camelia rakudo-moar c793d8: OUTPUT«dunno␤foo␤»
sergot tadzik: not yet
if you mean those popup set by .htaccess file 12:30
popups
tadzik well, I mean github.com/tadzik/panda/issues/89
I was thinking about loading HTTP:UA if it's available, and then that'd work 12:31
hoelzro my notes on merging S26: gist.github.com/hoelzro/eb40043ce135ae7382cf
if no one objects (and enough people approve), I would like to do this today
tadzik hoelzro: "If multiple objects share a WHY (for example, clones)" 12:32
sergot tadzik: we can do this
tadzik hoelzro: I'm not sure that's correct, or properly understood by me :)
sergot I mean implement HTTP Auth
tadzik: could you create an issue on http-useragent repo? 12:33
in/on.
in
:)
hoelzro tadzik: I'm not sure if cloning would automatically deep copy WHYs
is that what you're wondering?
tadzik hmm
hoelzro: I mean, cloning clones objects, not their type objects
and .WHY is for types 12:34
well, usually
hm
hoelzro tadzik: a WHY can be on a method
tadzik troo
hoelzro but that's a good point
tadzik hoelzro: I'm reading diff now, but imho if it doesn't break old tests and does make new tests pass it should go in :) 12:37
hoelzro tadzik: spectest passes 12:37
at least, it does on mokudo =)
tadzik :
:)
close enough :P
hoelzro I'll try on pakudo and jakudo 12:38
sergot m: class A { has $.a; method new(*%args) { self.bless(|%args) } }; A.new(:a<b>).a; 12:42
camelia ( no output )
sergot m: class A { has $.a; method new(*%args) { self.bless(|%args) } }; A.new(:a<b>).a.say;
camelia rakudo-moar c793d8: OUTPUT«b␤»
sergot m: class A { has $.a; method new(*%args) { %args<a> = 'c'; self.bless(|%args) } }; A.new(:a<b>).a.say;
camelia rakudo-moar c793d8: OUTPUT«Cannot modify an immutable Str␤ in method assign_key at src/gen/m-CORE.setting:9589␤ in sub postcircumfix:<{ }> at src/gen/m-CORE.setting:2740␤ in method new at /tmp/XsyvKa_kLj:1␤ in block <unit> at /tmp/XsyvKa_kLj:1␤␤»
sergot m: class A { has $.a; method new(*%args) { %args<a> = 'c'; self.bless(|%args) } }; A.new().a.say; 12:43
camelia rakudo-moar c793d8: OUTPUT«c␤»
dalek kudo-star-daily: 7b5cb99 | coke++ | log/ (14 files):
today (automated commit)
12:45
sergot m: class B { has $.b;}; class A { has B $.a; method new(*%args) { %args<a> = B.new(:b<a>); self.bless(|%args) } }; A.new.a.say;
camelia rakudo-moar c793d8: OUTPUT«B.new(b => "a")␤»
dalek nda: 74fd87f | (Andrew Egeler)++ | lib/Panda/App.pm:
Add our current destdir to @*INC

This fixes the issue with LibraryMake and OpenSSL/Auth::PAM::Simple/etc
  (if LibraryMake was installed as a dependency of the above, the build
would fail the first time, but not the second)
12:46
nda: eb66dcf | tadzik++ | lib/Panda/App.pm:
Merge pull request #90 from retupmoca/master

Add our current destdir to @*INC
tadzik colomon: can I have your insight on github.com/tadzik/rakudobrew/issues/8? 12:48
lizmat can someone git krunen a commit bit for roast, please ? 12:50
*give
sergot m: class B { has $.b;}; class A { has B $.a; method new(*%args) { %args<a> = B.new(:b<a>); self.bless(|%args) } }; A.new.a.b.say; 12:58
camelia rakudo-moar c793d8: OUTPUT«a␤»
tadzik gist.github.com/tadzik/b536d67bcd0869dd5b44 -- this is nice, but it doesn't work if you downloaded a tarball from github, and it just bit a customer on the hackathon :) Maybe the star repo should have a biiig warning sign in the readme or the description? 13:29
[Coke] tadzik: adding a warning to README.star 13:33
tadzik [Coke]++
dalek ar: 66a6a39 | coke++ | README.star:
Warn users about github tarballs

  tadzik++
13:35
PerlJam hopes the hackathon is well-attended. 13:51
lizmat++ woolfy++ 13:52
timotimo oh 14:00
there's a "delete" button for the tagged release
i'll try and see what it does
timotimo i've deleted the release corresponding to the 2012.04 tag, but a git clone will still hand out the tag correctly 14:01
so maybe i should just go through the list and delete all those tags? 14:02
PerlJam btw, for RT #122604, my guess is that is has something to do with github.com/rakudo/rakudo/blob/nom/...ter.pm#L48 if any of that hackathoners are paying attention and has time to look deeper. 14:04
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...?id=122604
PerlJam has a meeting to attend now
s/that/the/
PerlJam *poof* 14:05
timotimo it will probably create new "releases" for every tag we push in the future
[Coke] timotimo: add it to the release guide, I guess. 14:51
brrt \o 15:26
quick question
does perl6 have a standard interface to it's own compiler?
moritz no 15:28
but speccing and implementing such an interface would be highly appreciated
brrt hmm 15:29
brrt is not really much of a spec-master
moritz: you weren't at YAPC::EU were you?
moritz brrt: nope :( 15:30
brrt basically, i'm asking the question since we might want to do stuff like disabling spesh for some frames if bugs are found
brrt moritz: shame, it was quite fun 15:32
|newbie| what would be the standard interface? 15:39
user interface?
TimToady pragmas are kind of a natural for hints to the compiler; that's what they were invented for in the first place (we got them from Ada) 15:40
though in Ada it was defined such that an unrecognized pragma is simply ignored, which we don't do in Perl 15:41
so maybe we need some way to distinguish ignorable pragmas 15:42
we've only got away with in in Perl 5 because there's only one implementation, and in Perl 6 because all the implementations coordinate
brrt why not warn on an unrecognized pragma
TimToady but if this branches out into non-coordinated implementations, we need ignorables 15:43
warnings are irritating when you already know it :)
brrt anyway, [newbie]: in python you can ask for the ast as well as for a compiler-as-an-object
yeah true
TimToady and the point is to give implementation specifics that are known not to apply elsewhere
brrt then we'd need an option
:-) 15:44
TimToady options are irritating too, when the optionality shoudl be expressed by the orinator, not the user
eye doc & 15:45
(just a checkup)
brrt good luck :-) 15:46
TimToady we'll see :)
brrt :-)
brrt maybe we can say 'use no-spesh if $*VM = 'moar'; 15:47
that how i'd like to use it anyway 15:48
use no-spesh if $*VM ~~ /^moar/;
dalek rl6-roast-data: 632b979 | coke++ | / (6 files):
today (automated commit)
15:52
[Coke] down to only flapping tests for the JVM. 15:52
panda question - any way to easily change the github submodule urls so they use another protocol? 15:55
[6~[6~
(or do I have to do it by hand?)
moritz [Coke]: I think you have to edit .gitmodules 15:56
[Coke] I did that. it still has that info cached somewhere. 15:57
hoelzro you have to do git submodule sync, iirc
[Coke]: ^ 15:58
[Coke] Thanks, that was it.
... farglebargle. 16:01
getting past that, I then cannot install anything with panda because of the protocols.
opening panda ticket.
[Coke] (er, it's not even getting to the protocol for the individual modules, it can't downlaod the module list) 16:08
hoelzro I think I got around that a while ago by downloading the module list by hand 16:09
[Coke] I can work around it by not being at work. :) 16:10
hoelzro heh 16:11
moritz [Coke]: ah, .git/config *also* has the submodule URLs 16:12
tadzik wow! 16:36
(whoever did design for doc.perl6.org)
++
dalek href="https://perl6.org:">perl6.org: 60d75f4 | tadzik++ | source/documentation/index.html:
Add "Learn Perl 6 in Y minutes"

I took a liberty to put it on top, as it was cited as a top resource in lizmat++'s YAPC talk
16:37
tadzik I wonder what the project goal of MuEvent should be, now that we have all the fancy Async stuff 16:40
hoelzro tadzik: maybe a sort of "adapter" layer for modules being ported from using AnyEvent in Perl 5? 16:41
nine_ I get the impression that quite a lot is missing on doc.perl6.org like doc.perl6.org/type/IO::Path 17:05
moritz nine_: to the best of my knowledge, nobody ever claimed that it was feature complete 17:15
nine_ moritz: I guess what I was trying to say was: where do I find documentation for example about IO::Path? 17:17
moritz nine_: currently in S32/IO.pod 17:18
TimToady thinks maybe we should set lexically scoped hints with "use :spesh" and such, and the pair indicates we just save the hint in a varible like %?HINTS or some such 17:22
so it can't fail even if the entry is unrecognized or never used
*variable 17:28
moritz m: say IO::Path.basename
camelia rakudo-moar c793d8: OUTPUT«Cannot look up attributes in a type object␤ in method parts at src/gen/m-CORE.setting:14538␤ in method basename at src/gen/m-CORE.setting:14541␤ in block <unit> at /tmp/g0KqilpTrM:1␤␤»
TimToady they only use them varibles down in Texas...
tadzik hoelzro: question is, will it be useful to anybody :) 17:34
hoelzro tadzik: maybe, maybe not =/ 17:34
tadzik it may rest in peace right next to Coroutines :D 17:35
tadzik sergot: ༼ つ ◕_◕ ༽つ PLS HTTPAUTH 17:44
hoelzro tadzik: for HTTP::UserAgent? 17:45
tadzik hoelzro: yeah
hoelzro I was thinking about user agents on my drive home yesterday 17:46
moritz m: say IO::Path::Win32.new("C:\\Windows\\registry.ini").parts.perl
camelia rakudo-moar c793d8: OUTPUT«("directory" => "\\Windows", "basename" => "registry.ini", "volume" => "C:").hash␤»
hoelzro it would be cool to have a middleware-like approach
moritz m: say IO::Path::Win32.new("C:\\").parts.perl
camelia rakudo-moar c793d8: OUTPUT«("directory" => "\\", "volume" => "C:", "basename" => "\\").hash␤»
moritz m: say IO::Path.new(".").parts.perl
TimToady moritz: did you ever find nqp::splice for your "flattening unshift"?
hoelzro so you could have a layer that just handles adding auth data to the request
camelia rakudo-moar c793d8: OUTPUT«("volume" => "", "directory" => ".", "basename" => ".").hash␤»
moritz TimToady: no; I cheated :-)
colomon jnthn++ # interesting stuff coming from the profiler 17:47
TimToady nqp::splice is what I taught push to use
hoelzro on a separate note, has anyone (other than tadzik) looked at my gist wrt S26?
PerlJam hoelzro: which gist? 17:48
hoelzro my notes on merging S26: gist.github.com/hoelzro/eb40043ce135ae7382cf
PerlJam looks 17:49
flussence std: sub MAIN;
camelia std ee1ef48: OUTPUT«===SORRY!===␤Malformed block at /tmp/IY8mRCLLYW line 1:␤------> sub MAIN⏏;␤ expecting any of:␤ new name to be defined␤ routine_def␤Parse failed␤FAILED 00:01 120m␤»
moritz hoelzro: please test perl6/doc HTML generation after a test merge 17:50
hoelzro: afaict it's the biggest pod user right now
hoelzro moritz: I'll be sure to try that
tadzik huh, does the debugger not cross the module boundary? 17:51
it just didn't step into unmarshal() that I imported
PerlJam hoelzro: none of those issues are anything that I would consider a show-stopper.
hoelzro cool 17:52
sergot: what do you think about that HTTP UA middleware idea? 17:53
Ven tadzik: thanks, I should've added it some time ago ... 17:55
tgt r: sub a(:$a, :$b) { say $a + $b }; &a.assuming(:a(5))(:a(2), :b(2)) 17:56
camelia rakudo-moar c793d8: OUTPUT«7␤» 17:57
..rakudo-{parrot,jvm} c793d8: OUTPUT«4␤»
tgt Based on my expectations moar's result is correct, but based on the implementation parrot/jvm is, so maybe this is a moar bug?
(Implementation is at github.com/rakudo/rakudo/blob/nom/...ne.pm#L27) 17:58
PerlJam &a.assuming(:a(5)) shouldn't accept an :a parameter IMHO as it's fixed. 17:59
psch assuming needs work, in my opinion
PerlJam (IOW, I'd say moar is more right)
tgt I agree, but I don't see why it does so atm. The implementation looks like it should just uses slurpies, so surely the later named args should overwrite earlier ones atm? 18:00
psch RT #77744 is one thing i came across recently
synopsebot Link: rt.perl.org/rt3//Public/Bug/Displa...l?id=77744
Ven wow, topaz is almost as fast as jruby 9k with truffle
tgt (ignore "looks like it should" in the second sentence.) 18:01
psch: Yeah, the commit message says that's the case github.com/rakudo/rakudo/commit/1c...10674d7a19 18:02
mberends At DebConf14 the Debian Perl Group annual meeting has just begun summit.debconf.org/debconf14/meeti...erl-group/
psch tgt: right, i hadn't looked for the commit, thanks 18:02
colomon just got a huge speed-up for his $work code by replacing one line of beautiful Set operations with 10+ lines of mucking about with Hashes. 18:03
psch i did have a go at trying to build a signature, but ran into pair quoting troubles
tgt I don't see how, given that implementation, moar would do what it did above.
nwc10 jnthn++ # --profile
dalek c: dcc0a7e | moritz++ | lib/Type/IO/Path.pod:
WIP: IO::Path docs, for nine_++
18:04
moritz tgt: it seems moar simply takes the first version of a named param 18:05
r: sub a(:$x) { say $x }; a(x => 42, x => 1);
camelia rakudo-{parrot,jvm,moar} c793d8: OUTPUT«1␤»
moritz huh. 18:06
tgt :) Yeah...
xfix .u ␁
yoleaux U+2401 SYMBOL FOR START OF HEADING [So] (␁)
moritz r: sub a(:$x) { say $x }; a(|{x =>'first'}, |{x => 'last'})
camelia rakudo-moar c793d8: OUTPUT«first␤»
..rakudo-{parrot,jvm} c793d8: OUTPUT«last␤»
moritz tgt: ... unless it's from interpolation, it seems
xfix r: say "\x01ACTION(.*)\x01" 18:07
camelia rakudo-{parrot,jvm,moar} c793d8: OUTPUT«ƬTION(.*)␤»
xfix Hm...
I was programming in AWK, and wrote code like if (match(previous, /\x01ACTION(.*)\x01/, action_storage)) {. 18:08
tgt It's a moar bug then?
xfix (and was surprised when I got a warning - "gawk: commands.awk:85: warning: hex escape \x01AC of 4 characters probably not interpreted the way you expect")
moritz tgt: no idea
psch xfix: delimit with brackets, e.g. \x[01]
xfix I know, I just find it interesting that gawk makes a warning. 18:09
psch oh
yeah i was about to add a "if i guess what you mean correctly"
xfix Perhaps Perl 6 could do a warning too in case when the character after it is literal.
psch a bit too type-happy right now it seems
xfix (but I honestly didn't expect AWK to actually consider it to be Unicode) 18:10
xfix ... actually, it's not Unicode, now that I look into it. 18:10
It's the most crazy interpretation. It just removes useless bytes. \x2122 is quotation mark. 18:11
psch n: sub a(:$x) { say $x }; a(|{x =>'first'}, |{x => 'last'}) 18:14
camelia niecza v24-109-g48a8de3: OUTPUT«last␤»
psch tgt, moritz: that might be another check for "moar bug", although i don't know if it's specced anywhere 18:15
moritz probably in S06 18:16
Ven m: say ({x => 'first'}, {x => 'last'}).flat
camelia rakudo-moar c793d8: OUTPUT«{"x" => "first"} {"x" => "last"}␤»
Ven I guess :<
psch S06:891
synopsebot Link: perlcabal.org/syn/S06.html#line_891
PerlJam r: sub a(:$x) { say $x }; a(|{x =>'first'},x => 'last'); 18:18
camelia rakudo-moar c793d8: OUTPUT«Unexpected named parameter 'x' passed␤ in sub a at /tmp/tmpfile:1␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-parrot c793d8: OUTPUT«duplicate named argument in call␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-jvm c793d8: OUTPUT«last␤»
moritz "Other sigils bind only to the I<last> argument with that name:
PerlJam huh
moritz sub fun (Int :$x) { ... }
fun( x => 1, x => 2 ); # $x := 2
"
S06:882-901 18:19
synopsebot Link: perlcabal.org/syn/S06.html#line_882
moritz r: sub f(:@x) { say @x.perl }; f x => 1, x => 42; 18:20
camelia rakudo-moar c793d8: OUTPUT«cannot stringify this␤ in sub f at /tmp/tmpfile:1␤ in block <unit> at /tmp/tmpfile:1␤␤»
..rakudo-{parrot,jvm} c793d8: OUTPUT«Type check failed in binding @x; expected 'Positional' but got 'Int'␤ in sub f at /tmp/tmpfile:1␤ in block <unit> at /tmp/tmpfile:1␤␤»
PerlJam bugs all around
moritz according to S06:882, that should work, and produce [1, 42] or some such
synopsebot Link: perlcabal.org/syn/S06.html#line_882
moritz though I guess that kind of goes against the binder logic 18:21
[Coke] m: my @array = ({:a<1>}, {:b<1>}, {:a<1>}); my $with = &[eqv]; use Test; is_deeply @array .= uniq(:$with), [{:a<1>}, {:b<1>}], "dies on os x" 18:22
camelia rakudo-moar c793d8: OUTPUT«ok 1 - dies on os x␤»
[Coke] Ugh. *occasionally* segfaults on osx. :P 18:23
sergot tadzik: I will try to figure out something tomorrow, ok? :) 18:26
hoelzro: what do you mean? :)
hoelzro sergot: I was thinking of breaking out all but the most basic HTTP agent logic into middleware 18:28
ex. cookie processing, redirect following, etc
lizmat moritz: could you give krunen a commit bit for roast ? 18:31
tadzik sergot: sure :) 18:37
TimToady I sent an invitation, dunno if that's sufficient 18:45
lizmat TimToady++ krunen should be arriving back in Norway soonish 18:46
TimToady interface has changed considerably since the last time I gave someone a commit bit...
hoelzro I'm seeing this unfamiliar syntax in jnthn's slides (what else is new?): .<done> 18:47
hoelzro what does .<...> mean? 18:48
FROGGS hash access on $_ 18:48
hoelzro oh, duh
thanks FROGGS
FROGGS m: $_ = { a => 42 }; say .<a>
camelia rakudo-moar c793d8: OUTPUT«42␤»
sergot hoelzro: sounds interesting 18:49
hoelzro sergot: I think there's a Ruby library that does the same 18:50
faraday
sergot hoelzro: can we talk about it more tomorrow? :) will be awesome 18:51
hoelzro sergot: sure 18:51
sergot hoelzro++ thanks! :) 18:51
hoelzro np =) 18:52
tadzik does debugger have a "remind me where I am again" option? :P 18:53
PerlJam 19:44
lizmat 19:46
PerlJam Looking at jnthn's async slides for yapc::eu 2014 ... does Proc::Async for Perl 6 actually exist somewhere? 20:14
tgt It was added to rakudo a couple of weeks ago: github.com/rakudo/rakudo/commits/0...c/Async.pm 20:16
PerlJam ah 20:17
thanks
moritz perlpunks.de/paste/show/53fb99b1.3629.37b # rakudo-m is a factor 1428 slower than 'find' for recursive directory traversal
PerlJam: Proc::Async is MoarVM-only 20:18
PerlJam moritz: aye, that's pretty much all I use these days :) 20:19
moritz m: say $*CWD.^name 20:20
camelia rakudo-moar c793d8: OUTPUT«IO::Path␤»
moritz m: say $*CWD.chmod(0o775) 20:21
camelia rakudo-moar c793d8: OUTPUT«True␤»
dalek c: f585083 | moritz++ | lib/Type/IO/Path.pod:
[IO::Path]: document chmod, contents
20:23
moritz m: say '.'.path.absolute 20:28
camelia rakudo-moar c793d8: OUTPUT«IO::Path</home/p6eval>␤»
moritz m: say '.'.path.is-absolute
camelia rakudo-moar c793d8: OUTPUT«False␤»
dalek c: a8c6e4b | moritz++ | lib/Type/IO/Path.pod:
[IO::Path] document {,is-}{absolute,relative}; update TODOs
20:33
PerlJam m: say "/foo/bar/../..".path.absolute; 20:33
camelia rakudo-moar c793d8: OUTPUT«IO::Path</foo/bar/../..>␤»
PerlJam not quite right there. 20:34
FROGGS PerlJam: what do you expect?
moritz it's already an absolute path
PerlJam oh, I guess that's true.
moritz m: say "/foo/bar/../..".path.cleanup
camelia rakudo-moar c793d8: OUTPUT«IO::Path</foo/bar/../..>␤»
FROGGS and normalizing ../ isnt safe
PerlJam FROGGS: it's "safe" as long as it doesn't rely on FS manipulation 20:35
FROGGS there was something about bar being a symlink, but I forgot the details 20:36
moritz speaking of symlinks
does MoarVM support readlink?
FROGGS from P5's File::Spec "Note that this does *not* collapse x/../y sections into y. This is by design. If /foo on your system is a symlink to /bar/baz, then /foo/../quux is actually /bar/quux, not /quux as a naive ../-removal would give you. If you want to do this kind of processing, you probably want Cwd's realpath() function to actually traverse the filesystem cleaning up paths like this." 20:37
moritz src/io/fileops.c uses uv_fs_readlink, but it seems it doesn't expose it as a readlink op
m: say '/home/p6eval/../../'.relative('/') 20:38
camelia rakudo-moar c793d8: OUTPUT«No such method 'relative' for invocant of type 'Str'␤ in block <unit> at /tmp/N2PXRqzwwL:1␤␤»
moritz m: say '/home/p6eval/../../'.path.relative('/')
camelia rakudo-moar c793d8: OUTPUT«IO::Path<home/p6eval/../..>␤»
brrt afk 20:55
moritz does anybody here know Aliaksandr Zahatski? 20:58
FROGGS moritz: no, but does that help? irclog.perlgeek.de/perl6/search/?ni...q=Zahatski 21:01
moritz FROGGS: maybe :-) 21:02
hoelzro let's say I have a parameterized role, and a curried role derived from it: role R[::T} {} ; my $curry = R[Num]; 21:07
hoelzro if R has attached docs, should $curry inherit those? 21:07
hoelzro (more specifically, R[::T] has docs) 21:07
PerlJam hoelzro: sounds like "yes" for me :) 21:09
hoelzro I would expect that as well
PerlJam Though, if the docs mention ::T, it would be nice if the curried version actually mentioned Num instead.
hoelzro bwah
that would be cool 21:10
PerlJam yeah, I think it would require more smarts than the docs have right now though.
hoelzro well 21:11
thinking of how it's currently impl'd
we'd have to defer Pod -> string translation until the WHY is accessed
and probably cache it
I don't know if the facility to translate constants exists, though
as spec'd in S26
PerlJam sure, but how would you link "::T" with "Num"? 21:12
hoelzro PerlJam: you'd have to put it in a Pod directive
dalek kudo/nom: ef54ae9 | moritz++ | src/core/IO.pm:
[IO::Path] be more consistent with IO::Path:D markers for the invocant
21:14
PerlJam It would be nice if we could somehow make R<> (replaceable item) actually *be* replaceable instead of just indicating as such in the text. 21:15
hoelzro PerlJam: what do you mean? 21:17
moritz PerlJam: do it! 21:18
hoelzro you mean in like a form, if the HTML output is used?
PerlJam moritz: tell me how! :)
moritz PerlJam: 1) formulate a plan 2) follow it 3) profit! 21:18
no "..." step involved 21:19
PerlJam hoelzro: like everywhere the docs said R<::T>, for the curried thing, it would notice that ::T was Num and actually output Num instead
hoelzro PerlJam: I think R<...> is used for something else 21:20
and there's a separate code for what you want
something like A<...> 21:21
PerlJam nah, A<> is something else too 21:22
hoelzro I just realized that myself =)
oh, A<...> is spec'd to replace both Pod objects as well as compile-time known values in the Perl 6 program 21:23
PerlJam R<> is for when you type something like: git checkout R<COMMITISH> and you mean for the user to actually put a SHA1 or branch or tag or whatever instead of "COMMITISH". That's really close to what I want except I don't just want the typographical convention, I want an actual replacement.
hoelzro see line 2274 of S26
PerlJam looks 21:24
hoelzro PerlJam: where would COMMITISH come from, though?
the value for it, I mean
PerlJam The really smart perl6 compiler :)
hoelzro so the perl6 implementation would know about special symbols like COMMITISH? 21:25
PerlJam Maybe it only applies for parameterized types and we only need to worry about things that look like ::T 21:26
hoelzro seems like A<$?VM> would do
A<...> will sub in an compile-time values, as long as they begin with a sigil 21:27
...which makes ::T more difficult
I guess you could consider :: as a type of sigil, though
if it were up to me, I would consider :: as sigil-like at least for the rules of A<...> 21:28
PerlJam Then we might haveto quibble on "compile time" a little bit :)
hoelzro hmm
well, for ::T, definitely 21:29
that's not compile time
but a curried role's WHY shouldn't ever appear in $=pod
and $=pod is what concerns me at compile time
if I'm inspecting a program, and I come across a curried role, having A<...> sub in the type params would be cool 21:30
but I'm curious on what others think
PerlJam If there's enough information available, we could spec that bare ::T (things that look like that) would transform into the actual type name or otherwise render as if it had been written as R<::T> 21:37
Though, again, "rendering" of WHY would have to be deferred ALAP 21:38
hoelzro I'd rather that the documenter explicitly use A<::T>
but yes, it would have to be deferred 21:39
PerlJam boggles that ALAP, FIFO and LIFO aren't in S99 21:41
TimToady bets 'boggles' isn't in there either
hoelzro I had to look that one up =)
does yoleaux support looking things up from S99?
dalek ecs: 201b167 | duff++ | S99-glossary.pod:
Add LIFO, FIFO, and ALAP
21:42
TimToady no, no, no, you have to add ALAP ALAP! 21:43
PerlJam :-P
PerlJam suddenly wonders about the etymology of the word "boggles" 21:46
dalek ecs: 1555a80 | (Elizabeth Mattijsen)++ | S02-bits.pod:
.WHICH should not be dependent on location

Some implementations may want to relocate objects during the lifetime of the object, causing the identity to change of it were based on location.
23:05
lizmat *if it were based :-(
en wonders if dalek bites (or, rather, shoots) 23:13
lizmat dalek is booted from the channel sometimes
lizmat but always comes back friendly as ever 23:13
grondilu Hello 23:30
There was an entry lately in HN about Geometric Algebra. Fascinating stuff. Now I can't help thinking of a module for that in P6 23:31
lizmat ++grondilu :-) 23:35
grondilu
.oO( sub infix:<∧>(*@multivector) {...} )
23:39
considering there is pretty much nothing for linear algebra now, it would be cool to start with something new and cutting edge 23:40
hoelzro anyone else want to have a look at the S26 stuff before I merge? 23:48
the spectests passed, so I think the time is now 23:49
TimToady PerlJam: I think it's much more likely to have something to do with line 14 in src/core/ListIter.pm 23:50
lizmat hoelzro: I'm trying to stay awake until our departure from the hotel in ~2 hours 23:52
in no shape to really look at that now :-(
hoelzro lizmat: oh, alright
dalek Heuristic branch merge: pushed 87 commits to roast/S26-WHY by hoelzro 23:57