»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, std:, or /msg camelia p6: ... | irclog: irc.perl6.org | UTF-8 is our friend!
Set by masak on 12 May 2015.
grondilu m: say ((1 + *) o (2 * *))(1); 00:44
camelia rakudo-moar 058e71: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in block <unit> at /tmp/AaVatGHqN6:1␤␤»
grondilu m: say ((1 + *) o (1 + *))(1); 00:46
camelia rakudo-moar 058e71: OUTPUT«Too few positionals passed; expected 2 arguments but got 1␤ in block <unit> at /tmp/jVxHnY8R4K:1␤␤»
TimToady o needs to be protected from priming
grondilu oh
looks LTA
TimToady it's just a first whack at it
grondilu m: say ({1 + $_} o { 2 * $_ })(1); 00:47
camelia rakudo-moar 058e71: OUTPUT«3␤»
TimToady that works, fo rnow
grondilu ok
dalek kudo/nom: 68eed59 | TimToady++ | src/core/ (2 files):
GLRize the sequence operator

Now defaults to keeping () and [] intact as list elements.
00:48
ast: fd8d2cf | TimToady++ | S02-lexical-conventions/unspace.t:
relax overly specific throws-like
ast: 0e4f1e7 | TimToady++ | S03-sequence/ (3 files):
sequence operators are now slippery

The sequence operator used to require itemization to hide lists and arrays from flattening. Now the default is not to flatten arrays or lists, so you must slip in order to put multiple values into the list instead.
TimToady we can take the $ back out of our sequences now
Zoffix I think I've recently read that Perl6 now supports fluent method calls, so this should work: gist.github.com/zoffixznet/25ae046...ent-p6-L19 I'm getting this error though: fpaste.scsys.co.uk/499549 what am I doing wrong? 00:53
Oh. I think I shouldn't copy/paste from Wiki and actually read the code :P 00:54
TimToady .tell jnthn thing is, @dest.push(@src.pop) is just wrong, wrong, wrong, because surprise; we really need to separate out the I-expect-to-push-a-list semantics to a different name, .pushem or some such 00:54
yoleaux TimToady: I'll pass your message to jnthn.
ShimmerFairy TimToady: could pushing a list be considered a multi-dim kind of thing? IIRC you can't push to a multidim array, but it still feels like you would want to lean towards that kind of construct if you're trying to make lists of lists. 00:57
ShimmerFairy So perhaps thinking of it as a vaguely multidim thing can help guide the design of it :) 00:57
TimToady the problem is that it's not an "it", it's a "them" 00:57
grondilu m: say 1 xx * 00:58
camelia rakudo-moar 058e71: OUTPUT«(...)␤»
TimToady people want contradictory things out of "push" currently; there are even routines in core that want it both ways
grondilu m: say (1 xx *).perl
camelia rakudo-moar 058e71: OUTPUT«Cannot .elems a lazy list␤ in block <unit> at /tmp/HYLkfFjdFi:1␤␤Actually thrown at:␤ in block <unit> at /tmp/HYLkfFjdFi:1␤␤»
grondilu ^Not sure that's ok. I suspect it isn't.
m: say (my @ = 1 xx *).perl 00:59
camelia rakudo-moar 058e71: OUTPUT«Cannot .elems a lazy list␤ in block <unit> at /tmp/filbjd2PE6:1␤␤Actually thrown at:␤ in block <unit> at /tmp/filbjd2PE6:1␤␤»
TimToady well, it really is trying a bit too hard to not iterate the sequence
but .gist should perhaps be considered destructive and read down the lazy list a bit
m: say 1 xx 100000000 01:00
camelia rakudo-moar 058e71: OUTPUT«(1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...)␤»
TimToady but it just gives up current when .is-lazy is true 01:01
*ently
grondilu it's not just .perl though. Got this while trying to golf that: 01:02
m: sub CF(@a, @b) { [\o] map { @a[$_] + @b[$_] / * }, 0 .. * }; say CF((1, 2 xx *), (1 xx *))[10](Inf) 01:03
camelia rakudo-moar 058e71: OUTPUT«Cannot reverse a lazy list␤ in sub CF at /tmp/42bQAACNNp:1␤ in block <unit> at /tmp/42bQAACNNp:1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in sub CF at /tmp/42bQAACNNp:1␤ in block <unit> at /tmp/42bQAACNNp:1␤␤»
grondilu which comes from rosettacode.org/wiki/Continued_fraction 01:04
TimToady well 1, 2 xx * looks wrong 01:08
grondilu m: sub CF(@a, @b) { [\o] map { @a[$_] + @b[$_] / * }, 0 .. * }; say CF((1, |(2 xx *)), (1 xx *))[10](Inf) 01:09
camelia rakudo-moar 058e71: OUTPUT«Cannot reverse a lazy list␤ in sub CF at /tmp/qOUFTo1gZP:1␤ in block <unit> at /tmp/qOUFTo1gZP:1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in sub CF at /tmp/qOUFTo1gZP:1␤ in block <unit> at /tmp/qOUFTo1gZP:1␤␤»
TimToady but that's obviously not the problem here
o is now right associative, hence the reverse 01:10
is this a spot where it would make more sense for o to be left associative? 01:11
grondilu I don't think so. It *is* right associative, isn't it?
travis-ci Rakudo build passed. TimToady 'GLRize the sequence operator 01:12
travis-ci.org/rakudo/rakudo/builds/82849158 github.com/rakudo/rakudo/compare/0...eed5936cf5
TimToady that's what I thought 01:12
but you can't reverse an infinite list
grondilu but it should not reverse the infinite version, only the finite one
I mean the reverse should only occur while accessing a [$n] element, shouldn't it? 01:13
m: my @f = [\o] { 2 * * } xx *; 01:14
camelia rakudo-moar 058e71: OUTPUT«5===SORRY!5=== Error while compiling /tmp/g0GkBwD20k␤Malformed double closure; WhateverCode is already a closure without curlies, so either remove the curlies or use valid parameter syntax instead of *␤at /tmp/g0GkBwD20k:1␤------> 3my @f = [\o] …»
grondilu m: my @f = [\o] { 2 * $_ } xx *;
oops
camelia rakudo-moar 058e71: OUTPUT«Cannot reverse a lazy list␤ in block <unit> at /tmp/JHZpQvmr8e:1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/JHZpQvmr8e:1␤␤»
grondilu oh, weird
I'd swear I successfully created an infinite [\o] earlier 01:15
TimToady using the new builtin? 01:16
TimToady it was briefly left associative, I think... 01:17
grondilu yes, but I just checked and it was inside a function.
can't you create an infinite triangular version of a right-associative operator? 01:18
TimToady m: my @f = [\[[&[o]]] { 2 * $_ } xx *; 01:18
camelia rakudo-moar 058e71: OUTPUT«5===SORRY!5=== Error while compiling /tmp/eEMuLuGfqc␤Unable to parse expression in bracketed infix; couldn't find final ']' ␤at /tmp/eEMuLuGfqc:1␤------> 3my @f = [\[[&7⏏5[o]]] { 2 * $_ } xx *;␤»
TimToady m: my @f = [\[&[o]]] { 2 * $_ } xx *; 01:19
camelia rakudo-moar 058e71: OUTPUT«5===SORRY!5=== Error while compiling /tmp/tYQCjSCRtb␤Unable to parse expression in bracketed infix; couldn't find final ']' ␤at /tmp/tYQCjSCRtb:1␤------> 3my @f = [\[&7⏏5[o]]] { 2 * $_ } xx *;␤»
grondilu I mean I see the problem, but I'm not sure it's that big a problem
TimToady but you can't do a right associative op on an infinite list, because you need the last two values for your first operation 01:20
it's a little more obvious with [**] 1..* perhaps
doesn't even matter whether it's a triangle 01:21
maybe we need a re-associate-left metaoperator... 01:22
grondilu but you're not supposed to access the first operation unless you reify at some point or something 01:23
grondilu though I understand the weird ness, as the first terms depend on the length of the list, which is weird 01:24
(if I'm not mistaken)
TimToady it can't know the operands for previous entries until it evaluates the last one
grondilu wait 01:25
TimToady [**] 1,2,3 -> 1 ** 2 ** 3 so 1 doesn't know what it will have for its RHS till you evaluate 2 ** 3
grondilu I think you're right
something still bugs me about it though 01:26
BenGoldberg m: say [**] 2..4
camelia rakudo-moar 68eed5: OUTPUT«2417851639229258349412352␤»
TimToady [**] 2..* is slightly larger
BenGoldberg Only slightly? 01:27
grondilu funnily enought [**] 1..* is 1 01:28
TimToady it's only ℵ₀ or so
BenGoldberg m: 0 ** 0 01:29
camelia rakudo-moar 68eed5: OUTPUT«WARNINGS:␤Useless use of "**" in expression "0 ** 0" in sink context (line 1)␤»
BenGoldberg m: say 0 ** 0
camelia rakudo-moar 68eed5: OUTPUT«1␤»
ShimmerFairy TimToady: I don't think a metaop is quite what you want in this instance, at least not without changing a fair bit about how metaops work. 01:30
BenGoldberg m: gist.github.com/BenGoldberg1/bc39a...aeb733012a
camelia rakudo-moar 68eed5: OUTPUT«Attempt to return outside of any Routine␤ in block <unit> at /tmp/UnjZSOd4Ds:33␤␤»
ShimmerFairy TimToady: this [**] case is calling for an "iterative" application of ** (if I may call it that), rather than reduceop's purpose of interspersing the list with the given operator
(s:1st/metaop/reduceop/ , btw) 01:31
BenGoldberg m: .say for \[**] 1..*
camelia rakudo-moar 68eed5: OUTPUT«Cannot reverse a lazy list␤ in block <unit> at /tmp/qtzNVKanT8:1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/qtzNVKanT8:1␤␤»
BenGoldberg m: .say for [\**] 1..*
camelia rakudo-moar 68eed5: OUTPUT«Cannot reverse a lazy list␤ in block <unit> at /tmp/qRhP39fVPf:1␤␤Actually thrown at:␤ in any at gen/moar/m-Metamodel.nqp:2869␤ in block <unit> at /tmp/qRhP39fVPf:1␤␤»
grondilu yes, that's wht bugged me. This should work. 01:32
TimToady only if it switches to left associative
grondilu [\**] 1..* is supposed to do [**] 1, then [**]1..2, then [**] 1..3 and so on
and never reverse 01:33
well, not *supposed to* but *could*
TimToady m: say [\**] 2..4 01:34
camelia rakudo-moar 68eed5: OUTPUT«(4 81 2417851639229258349412352)␤»
TimToady currently it does 4, 3**4, 2**3**4
ShimmerFairy m: my @a = 2..4; while +@a > 1 { @a.unshift(@a.shift ** @a.shift) }; say @a # this does (2 ** 3) ** 4
camelia rakudo-moar 68eed5: OUTPUT«[4096]␤»
grondilu ah 01:35
BenGoldberg m: my @a = 2..4; while +@a > 1 { @a.unshift(@a.shift ** @a.shift).say };
camelia rakudo-moar 68eed5: OUTPUT«[8 4]␤[4096]␤»
BenGoldberg m: my @a = 2..5; while +@a > 1 { @a.unshift(@a.shift ** @a.shift).say };
camelia rakudo-moar 68eed5: OUTPUT«[8 4 5]␤[4096 5]␤[1152921504606846976]␤»
TimToady m: sub infix:<***>($a,$b) is equiv(&[**]) is assoc('left') { $a ** $b }; say [\***] 2..4 01:37
camelia rakudo-moar 68eed5: OUTPUT«(2 8 4096)␤»
TimToady sure looks like what a metaop would do to me 01:37
grondilu I guess you're right
TimToady s/would/could/
Zoffix jnthn, are you able to update your jnthn.net/papers/2015-spw-perl6-course.pdf ? The last line of the code example should return (Str), not (Int). 01:38
Als, jnthn++ great slideshow
ShimmerFairy TimToady: would we want metaops for all the associativity, or on an as-needed basis?
*tivities 01:39
grondilu notice that the "graphical" meaning of the triangular operator strongly suggests left associativity, which is confusing.
TimToady well, this is the first use case I've seen for wanting to violate the natural order, so maybe we've got the wrong associativity on o 01:40
grondilu
.oO([**/])
TimToady m: say [\R**] 2..4
camelia rakudo-moar 68eed5: OUTPUT«(2 9 262144)␤»
grondilu this hurst my brain 01:41
TimToady m: say [\R**] reverse 2..4
camelia rakudo-moar 68eed5: OUTPUT«(4 81 2417851639229258349412352)␤»
ShimmerFairy
.oO(assoc metaops: AL, AR, AN, AC, AX, the second letters matching the table in S03. [AL**] 2..4 :P)
TimToady [AN**] doesn't make a whole buncha sense 01:43
and AX doesn't make sense for operators that have no listy implementation
I only see a use case for L
ShimmerFairy In that case, it could be spelled L instead of AL; I put the A in front because a couple of those are already metaops without it 01:44
(though I suppose some might think there's a relationship between L and R, I dunno) 01:45
TimToady or [\O**] for opposite associtivity
BenGoldberg . o O ( [**] )
geekosaur ...which then gives you a Oo 01:46
TimToady yes, does it matter for anything except reductions?
ShimmerFairy TimToady: maybe triangle reduce is the only case where we want to work from left-to-right, regardless of associativity? That is, triangle reduce only worries about associativity when it gets the list to apply the op to
ShimmerFairy The theoretical [L**] 2..4 , which is (2 ** 3) ** 4 , might be better handled by having the user just do it manually (see my while loop above) 01:47
TimToady m: say ([1], -> @a { [0, |@a Z+ |@a, 0] } ... *)[^10] 01:50
camelia rakudo-moar 68eed5: OUTPUT«([1] [1 1] [1 2 1] [1 3 3 1] [1 4 6 4 1] [1 5 10 10 5 1] [1 6 15 20 15 6 1] [1 7 21 35 35 21 7 1] [1 8 28 56 70 56 28 8 1] [1 9 36 84 126 126 84 36 9 1])␤»
TimToady yay, pascal is pretty again
grondilu m: say ([1], { [0, |@_ Z+ |@_, 0] } ... *)[^10] 01:54
camelia rakudo-moar 68eed5: OUTPUT«([1] [1 1] [1 3 2] [1 3 5 3] [1 3 5 7 4] [1 3 5 7 9 5] [1 3 5 7 9 11 6] [1 3 5 7 9 11 13 7] [1 3 5 7 9 11 13 15 8] [1 3 5 7 9 11 13 15 17 9])␤»
grondilu (golfed it 4u) 01:55
TimToady um, no 01:55
grondilu oh
not sure what's wrong about it
adu hi all 01:56
Zoffix \o\
grondilu oh I see
@_ really is *@a 01:57
m: say ([1], { [0, |$_ Z+ |$_, 0] } ... *)[^10] 01:59
camelia rakudo-moar 68eed5: OUTPUT«([1] [1 1] [1 2 1] [1 3 3 1] [1 4 6 4 1] [1 5 10 10 5 1] [1 6 15 20 15 6 1] [1 7 21 35 35 21 7 1] [1 8 28 56 70 56 28 8 1] [1 9 36 84 126 126 84 36 9 1])␤»
grondilu you know, I wonder if we could not have two versions of the triangular metaop. [\op] 1..3 would mean 1, 1op2, 1op2op3 and [op/] would mean 3, 2op3, 1op2op3 02:23
it would behave the same regardless of the associatvity of op 02:24
grondilu so that [\o] &f xx * would make some sense 02:25
masak morning, #perl6 06:38
moritz \o masak 06:40
[Tux] test 50000 35.926 35.807 07:04
test-t 50000 36.801 36.682
Ven o/, #perl6! 07:14
DrForr \o
TimToady I now have a version that now distinguishes .push from .pushem, but 'pushem' is a "You think that's cute today", so I've been trying to think up a better "plural push" word 07:16
push-all is taken
nine TimToady: what about append? You're appending an array to the array. 07:17
TimToady thought about that...
but append in FP is usually append non-destructively to a list
nine Python uses append for push and extend for push-list 07:18
@a.push-from(@b)? 07:20
TimToady actually, append isn't so bad, since we might also want prepend on the unshift end 07:21
ShimmerFairy postpend as a mirror to prepend, then :P 07:22
TimToady: to be fair, the (un)shift names never seemed that intuitive to me, but perhaps that's just lacking the historical knowledge.
jdv79 i forgot my passwd on hack. can someone reset it? 07:23
moritz jdv79: yes
jdv79: your new password is oa1kai3Chu 07:24
sorry
that was meant to go via privms
password changed again :-)
DrForr Should probably be removed from the channel log as well :)
moritz DrForr: no, I just changed it again 07:25
there's no harm in having a password in the logs that was valid for all of ten seconds
DrForr Oh, I know, just thinking of privacy and all that. Not really important. 07:26
masak "append" sounds good to me. "non-destructive" isn't what I think when I see that word, even though I know some FP.
jdv79 moritz: mqybe this?: wiki.debian.org/VirtualBox#Debian_...2Jessie.22 07:31
moritz jdv79: trying that now 07:41
azawawi hi #perl6 07:51
brrt \o #perl6 07:59
DrForr o/
azawawi hi
FROGGS o/ 08:00
yoleaux 29 Sep 2015 20:51Z <jnthn> FROGGS: I'm really tired and about to sleep, so I'll look at those two tomorrow
brrt ohai DrForr :-) and azawawi
FROGGS .tell jnthn no hurry :o)
yoleaux FROGGS: I'll pass your message to jnthn.
brrt i figure this is as good a place as any to ask; is there a way to convert from random unicode characters to their equivalent asscii, in java
azawawi any idea why FileChangeEvent::FileRenamed is always fired even though files are deleted in a $folder monitored by IO::Notification.watch-path($folder) ?
brrt e.g. ß to ss 08:01
brrt that probably depends on the underlying implementation 08:02
azawawi starts reading www.w3.org/TR/webdriver/
ShimmerFairy brrt: at first guess you'd probably want NFKC or NKFD normalization; not quite ASCII, but it does do "compatibility" conversions
brrt azawawi: file system monitoring is notably sensitive to superfluouus changes
DrForr Very few Unicode glyphs will convert to ASCII. Normalization will probably get you close though. 08:03
nine azawawi: are those files really deleted or just moved to some .trash?
brrt i know fribidi has an option to match visually 'close' characters
azawawi nine: let me double check :)
nine: used `rm`. same behavior 08:04
DrForr You could also be inspired by Lingua::Unidecode in perl5 that attempts to do just that.
brrt azawwawi: i've noticed this problem before, also on other implementations, and i don't think there is a single good solution 08:05
azawawi brrt: i was surprised to find it in core to be honest :) 08:07
brrt hmm yeah, i have no strong opinion about that 08:08
it's not a traditional core service; but 'traditional' IO is, and i see no reason to distinguish them closesly
azawawi brrt: this is going to be a maintenance headache across platforms
brrt well, moarvm is bound by libuv in that regards
so it is going to be a maintenance headache for joyent before it is a maintenance headache for us ^^ 08:09
(or sun, in case you use jvm)
eh, s/sun/oracle/
Timbus_ int flags - one of UV_RENAME or UV_CHANGE, or a bitwise OR of both. 08:12
Timbus_ uh.. i guess libuv only has two filechanged flags? 08:13
azawawi Timbus_: my bad, it is already in the spec... doc.perl6.org/type/IO::Notification 08:14
Timbus_ but lame, considering inotify has a whole buncha event types
azawawi Timbus_: true
brrt that's the cost of being cross-platform 08:16
or, cross platform cheaply
azawawi brrt: metacpan.org/source/MIYAGAWA/Files.../Simple.pm 08:17
from metacpan.org/pod/Win32::ChangeNotify, "...Unfortunately, the Win32 API which implements this feature does not provide any indication of what triggered the notification (as far as I know)... " 08:18
brrt perl5 is not a good example of trying to achieve cross-platform compatibility on the cheap :-) 08:22
moritz jdv79: virtualbox installed, btw 08:45
Ulti so looks like in the latest Rakudo MAIN not getting params errors with "Invocant requires an instance of type Int, but a type object was passed. Did you forget a .new?" rather than giving usage 08:52
jdv79 moritz: cool. i'll check it out soon. thanks! 08:53
Ulti m: sub MAIN(Int :$thing) { say $thing; } 08:56
camelia rakudo-moar 68eed5: OUTPUT«(Int)␤»
Ulti m: sub MAIN(Int:D :$thing) { say $thing; }
camelia rakudo-moar 68eed5: OUTPUT«Usage:␤ /tmp/eLRJdQhie3 [--thing=<Int>] ␤»
Ulti :/
dalek kudo/nom: 4f70652 | TimToady++ | / (20 files):
distinguish push/unshift from append/prepend

For one-arg semantics, we now use prepend and append. The push and unshift methods/subs are now designed to primarily support pushing or unshifting a single item (without you having to explicitly itemize, which would defeat slippage for things like the sequence operator). So now you can say @dest.push(@src.pop) without worrying about accidental flattening of a single element that happens to be iterable. Plus it will save wear and tear on your $ key when you want to push a single array or list.
ast: 9970b63 | TimToady++ | / (10 files):
catch up with push/unshift -> append/prepend
TimToady heads for bed 08:59
dalek osystem: f9741f0 | moznion++ | META.list:
Add IO::Blob
09:24
osystem: 063421f | RabidGravy++ | META.list:
Merge pull request #61 from moznion/io-blob

Add IO::Blob
Ven wonders why gcc -O2 -S sometimes generates -4(%rbp), sometimes -1(%rbp) in the program, for what seemed to be equivalent 09:47
brrt well, they most certainly aren't 09:50
abraxxa i tried to compile 2015.09 on my raspberry pi model B yesterday, failed because it ran out of memory 10:01
anything I can do to lower the memory requirements at the parsing stage?
lizmat abraxxa: short of removing features from the core setting, I wouldn't know of any 10:09
dalek kudo/nom: 649dae1 | lizmat++ | src/core/Process.pm:
Include change in setting as well
abraxxa lizmat: i guess I have to get a model B+ for compiling then... 10:10
lizmat if that has more RAM, yes :-)
abraxxa 256MB vs 128MB 10:20
lizmat that feels still like way too low, hope you have a lot of swap 10:21
_itz abraxxa: try adding more swap 10:25
abraxxa _itz: it already killed the performance to have 128MB swap 10:26
_itz you probably need 1-2GB of swap I'd guess
DrForr No way to crosscompile from another machine? 10:27
_itz I keep meaning to try a qemu arm image 10:29
I can't build panda on 'brew as of now 10:30
Type check failed in binding $p; expected Panda::Project but got Seq 10:31
_itz 4f706 10:55
dalek kudo/curli: 7598a62 | lizmat++ | src/core/ (2 files):
Introduce VM.precomp-dir

This will be the compilation-id dependent directory where rakudo will store its precompiled files by default.
11:07
kudo/curli: ff8e04d | lizmat++ | CURLI:
The text version of the CURLI discussion gist

Also lives at gist.github.com/lizmat/f3807956c354c14902a3
kudo/curli: bedd43a | lizmat++ | src/core/CompUnit.pm:
Introduce CompUnit.precomp-path

Since the precomped files will no longer live side-by-side with their associated source files, we need to keep the path separately.
lizmat yes, this breaks some of the build at the moment, so I put it in a branch
[Tux] panda is broken again 11:13
Rakudo has been built and installed.
Updating panda as well
X11 forwarding request failed on channel 0
Failed to get the directory contents of '/pro/3gl/CPAN/rakudobrew/moar-nom/install/share/perl6/site/panda': chdir failed: no such file or directory
in any at /pro/3gl/CPAN/rakudobrew/moar-nom/install/share/perl6/runtime/CORE.setting.moarvm:1
_itz [Tux]: yes I can't build with the 4f706 change try rakudobrew build moar 68eed5 11:14
[Tux] ==> panda depends on File::Find, Shell::Command, JSON::Fast 11:19
==> Shell::Command depends on File::Find
I'll just wait for the next update :)
brrt well, that doesn't look like my bug [Tux] :-) 11:25
(yes, i'm lousy for not having fixed it yet)
hahainternet is there a timezone implementation for p6 yet? i guess i should get googling 11:33
hahainternet aha well that was easy 11:33
i really like the docs site
masak :)
moritz++ # most likely; also, others++ 11:34
hahainternet i think the aesthetics probably need a bit of improvement, but honestly i'm aesthetically challenged
but the fact i can find what i'm looking for easily and they're well structured is a godsend after trying to deal with python docs
masak yes, we can tweak the styles some more 11:35
moritz aesthetics patches welcome :-)
brrt often finds python docs to be decent... enough, i guess?
moritz just hates docs that let you chase in superclasses' docs on your own 11:36
hahainternet brrt: i find there's a lot of waffle and beginner tutorials, rather than straightforward implementation descriptions
brrt well, that's a point
hahainternet also moritz i've mentioned that to a designer i work with
brrt that is pythons lament, i guess.
python is designed to be easy to learn and use. 11:37
hence beginners learn python
hence beginners use python, a lot
hence a lot of python is beginners' code
hahainternet yeah i don't disagree with any of that
i want to say it was 'yield' that i was having the most trouble finding a succinct authoritative source on, but i might look stupid now as you pull it out of google instantly ;) 11:38
brrt well, i recall struggling with the same, actually
so as far as i'm concerned, you're not looking stupid :-) 11:39
hahainternet the conceptual model for it seems really confused, but i just went to golang instead
i would have used perl6 to be perfectly honest, but performance is a big motivator there
brrt the thing about yield is that it secretly converts a function-or-method-call into a generator constructor
and i dislike the 'secretly' part about that 11:40
moritz afaict "yield" is a bit like "take" in Perl 6, except that it's implicitly scoped to the current routine, not to a "gather" block
hahainternet right, i was using it to batch up a very large gzipped file, as none of the typical patterns for that in python worked with non iterable instances
brrt moritz: gather and take are exception-based, aren't they?
hahainternet oh, that reminds me
moritz brrt: yes, because take is dynamically scoped
hahainternet so it was also hard to find the semantics for allocating an array buffer within this loop, passing off its reference and allocating a new one 11:41
hahainternet in the end i just experimented until it made sense, secret pass-by-ref is quite a niggle too 11:41
s/non iterable/non indexable/ ^^ 11:42
brrt hahainternet: you could use the array module, perhaps? 11:43
not sure what you mean actually
hahainternet brrt: i just gave up and used golang, so job done
brrt that's actually quite clever moritz.....
hahainternet brrt: python has some weirdnesses where for example, if you pass a plain 'counter = 0' between functions, each gets a new instance, but if you use an array, the reference is passed 11:44
anyway this is #perl6, not #python, so i'll shut up and write my timezone sub, thanks again @ ++all
brrt that seems like 'ordinary' call-by-ref with value-object syntax
eh semantics, not syntax
m: sub foo(Int $x) { $x++; say $x; }; my Int $y = 4; foo($y); say $y; 11:45
camelia rakudo-moar 649dae: OUTPUT«Parameter '$a' expected a writable container, but got Int value␤ in sub foo at /tmp/GQvlA0xDcO:1␤ in block <unit> at /tmp/GQvlA0xDcO:1␤␤»
brrt hmm, that's right
perl6 is more complex still :-) 11:46
hahainternet indeed, but can you do 'is rw' to make that mutable?
but it's just the lack of any clear distinction i know of in python
ilmari m: sub foo(Int $x is rw) { $x++; say $x; }; my Int $y = 4; foo($y); say $y;
camelia rakudo-moar 649dae: OUTPUT«5␤5␤»
brrt yes, but that is actually not what i want
ilmari m: sub foo(Int $x is copy) { $x++; say $x; }; my Int $y = 4; foo($y); say $y;
camelia rakudo-moar 649dae: OUTPUT«5␤4␤»
ilmari brrt: did you want "is copy"?
hahainternet ^^ is actually what i'd expect in a quality language
which is why every time i read perl6 i go a little gooey inside
brrt yes, that is what i want
masak moritz: one difference: since some version, Python's `yield` is *two-way* -- that is, it has a return value which is an (optional) value sent by the caller as it steps forward with iter.next(val) 11:47
brrt that's a pretty recent addition iirc
masak moritz: which (I think) is needed for it to be actual co-routines
moritz masak: aye. Though when I want a value from my caller, I use map 11:48
masak moritz: if I understand you correctly, that still requires that the map closure and the caller share some resource to communicate through 11:50
(even if that's just a shared scope)
in Python, they are talking through the iterator object itself 11:51
not saying one model is better than the other, just that they are differently factored
moritz masak: I agree with your analysis 11:51
def some_func(a): C1; b = yield x; C2 basically translates to sub some_sub($a, \input_iter) { C1; return input_iter { my $b = $_; C2; $x } } 11:53
masak yes; you just did a CPS transform there 11:55
they keep rocking my world
in the general case, you need a $state variable, a bunch of numbered states, a loop and a given statement 11:56
moritz you mix them all into a big bowl, knead them for a while, and then let them rest in the fridge. 11:58
masak aye
there's a nice example culminating on page 238 of www.lirmm.fr/~ducour/Doc-objets/ECO...op/233.pdf showing this 11:59
brrt actually, that's not really true moritz; because just calling the iterator doesn't yet cause it to be executed 12:02
moritz brrt: which part? 12:06
brrt about the transform from the python function with yield to a perl6 sub 12:11
brrt it's more like 12:11
hmmm
not sure how to translate it, in fact
moritz you mean that the python function can return its first value without an input iterator being available 12:14
maybe? 12:15
in that case, easy enough to work around by prepending a value to the return iterator
brrt class some_func_iter { my $!a; my $!after-yield; sub BUILD($a) { $!a = $a; $!after-yield = false; }; submethod next($?input-arg) { if ($!after-yield) { C2; } else { C1; $!after-yield = true; return $yield-value; }}} 12:16
hmm, /me wonders about that
it's really an function-to-object transform, is what i mean
it also supports a loop and stuff 12:17
the whole function scope becomes the object scope
for example: 12:18
def foo(x): print(x); yield x*2; print(x*4); foo(); # will not print 12:19
whereas next(foo()) will
dalek kudo/curli: d5583c6 | lizmat++ | src/core/CompUnit.pm:
Unbreak build

To my surprise, creating precomp files already used CompUnit objects. For now, it will first see if a precomp file exists next to the original source file. If so, then it will assume that for now.
brrt randomly interesting paper: people.csail.mit.edu/brooks/papers/...-cheap.pdf is fascinating, particularly if you consider that the method they describe for autonomic control is pretty much precisely the strategy of biological systems 12:24
masak brrt: wow, 1989. I wonder what's changed since then. 12:33
dalek kudo/curli: 20954d7 | lizmat++ | src/core/CompUnit.pm:
Don't need the extension twice
12:38
brrt microprocessors are faster and use less power ^^
brrt the description of how they make ghenghis (a 6 legged robot) walk is utterly brilliant 12:50
cognominal_ I have not closely followed things lately. In a signature, what is the diff between +values and *@values ? 13:04
moritz cognominal_: *@values flattens
timotimo oof, such unrestful sleep ...
moritz cognominal_: whereas +values implements (non-flattening) according to the "single argument" rule
see doc.perl6.org/type/List#Items%2C_Fl...and_Sigils 13:05
cognominal_ thx, moritz++ 13:06
lizmat moritz FROGGS is there a reason why we have all the rakudo install logic in a Makefile 13:11
moritz FROGGS instead of in a Perl 6 script that runs after the core settings have been compiled ?
moritz lizmat: well, it's just traditional and convenient to have a 'make install' step 13:12
lizmat ah, yes, don't disagree with that
but is there a reason why that should not just run a Perl 6 script ?
moritz no
_itz building the rakudo star tarball does have a dependency on gnu make I noticed 13:13
FROGGS o/ 13:15
brrt lizmat: the Makefile has knowledge of the build state, a script does not
in fact, you can - if you'd so desire - have a Makefile that installs only the changed files 13:16
FROGGS that's what my v5 did btw
brrt has much love for make
FROGGS especially at the time where it was only usable *after* installation
lizmat argh... we want ./perl6 to work *before* installing anything, right ? 13:18
FROGGS aye 13:19
dalek c: cbd9403 | (Steve Mynott)++ | bin/p6doc:
fix p6doc -f postGLR github issue #138
c: ffd9d49 | (Steve Mynott)++ | lib/Language/nativecall.pod:
Merge branch 'master' of github.com:perl6/doc
timotimo masak, brrt, moritz: don't forget about take-rw, which also allows you to communicate between the gathering routine and the consumer :) 13:21
Woodi hallo #perl6 :) 13:22
anyone can tell me how to precompile a script ? on Moar
timotimo precompiling scripts doesn't work terribly well 13:23
moritz --target=mbc --output=script.moarvm
Woodi thanx
moritz except that I don't think you can execute the result
but you didn't ask for that, right? :-)
FROGGS moritz: you kinda can
Woodi err... hmm
FROGGS perl6 -I. -Mscript -e""
moritz except that you're now subject to module loading semantics 13:25
FROGGS aye
well, -I. gives you a CURLF, which should be okay for this task 13:26
moritz but still it must be called script.pm{6,}
masak timotimo: that is true, about `take-rw`. in that case, the caller->callee communication kind of happens *after* the `take-rw` (and the callee doesn't await it) 13:27
timotimo mhm 13:28
Woodi --output part not work for me or is putting not in . 13:29
moritz define "not work", please
are blue flames coming out of your computer?
Woodi just output=script not create file 'script' in . 13:31
moritz do you get an error message?
did you add -- before "output"?
did you put it where all the options should go? (that is, before the first non-option argument)? 13:32
Woodi moritz: no error, all looks correct on my side :) 13:33
ok, it's need .pm :) 13:34
timotimo huh, is that so? 13:36
FROGGS the output must be *.pm(6).moarvm 13:38
lizmat timotimo: yes, because the only way to currently load a precomp, is as a module with -M
or -use- :-)
Woodi no, I put options in wrong place too :)
timotimo ah, fair enough
jdv79 hack seems sluggish 13:41
[Coke]: what are you java'ing? 13:42
Woodi I was just thinking: hey, Perl5 do not have precompilation (standard) but Perl6 have ! do you run C programs *without* compilation ??
jdv79 my vm can't wake up
Woodi but anyway I kip getting Malformed UTF-8 13:43
timotimo is some process eating up cpu endlessly again?
Woodi and possibly 'perl6 -I ....' is a bug 13:44
AlexDaniel m: 25 . WHAT
camelia rakudo-moar 649dae: OUTPUT«===SORRY!===␤Method call must either supply a name or have a child node that evaluates to the name␤»
AlexDaniel the output is not colored, there is no line number… 13:45
AlexDaniel
.oO( and again I'm stupid enough not to understand this error )
13:45
lizmat AlexDaniel: I think you stumbled on a side-effect of the recent infix:<.> addition 13:46
that was not anticipated by TimToady, please rakudobug 13:47
AlexDaniel lizmat: well, that's what I was testing, so…
timotimo moritz: kindly help me with accessing hack? what's my user name again? the stored password i have doesn't work for either timo or timotimo :|
AlexDaniel lizmat: sure :)
moritz timotimo: there's a "timo" user
timotimo: shall I reset your password? 13:48
timotimo that'd help, thanks
moritz btw I highly recommend ssh-key based authentication :-) 13:49
jdv79 [Coke]: around?
timotimo i thought i had already set that up, but it didn't trigger
jdv79 that takes moer effort
timotimo i'm confused about the status of this, tbh
now i get in via ssh id 13:50
moritz fwiw ssh-copy-id is a very handy tool :-)
timotimo that's what i used :) 13:51
mr_ron Could somebody please help with merging perl6-community-modules/uri PR 14? If I just sit and wait nobody seems to get to it.
lizmat URL ? 13:52
mr_ron URI
yes thanks.
moritz mr_ron: what's your github ID?
lizmat I meant, URL of the PR
mr_ron moritz: ronaldxs
github.com/perl6-community-modules/uri/pull/14 13:53
moritz mr_ron: I've given you access to the perl6-community-modules org 13:53
lizmat mr_ron: it seems to have conflicts ?
mr_ron I am not familiar with resolving conflicts on github. I suspect it is a small change made by one other person that I will be happy to integrate. 13:55
thank you moritz
lizmat .tell jnthn should a MoarVM upgrade invalidate precomps? Should a NQP upgrade ? 13:59
yoleaux lizmat: I'll pass your message to jnthn.
moritz mr_ron: you can't resolve conflicts on github; you must resolve them on the command line
mr_ron: and then push the resolution to the branch from which you made the pull request
(or directly to master, now that you have direct push access) 14:00
mr_ron moritz: thank you for your help. I am trying to google how to find the conflict but if you can tell me easily I will be happy to read. 14:01
timotimo lizmat: moarvm upgrade should only ever be invalidating if the serialization format used has become unsupported, which happens *very* rarely 14:02
moritz mr_ron: in you git repo, do a git checkout master; git pull; git checkout yourbranch; git merge master
mr_ron: that should show you the conflict, and include instructions on how to resolve it
timotimo lizmat: nqp upgrade on the other hand will force a rakudo upgrade as well, which means the core setting gets regenerated and no module can ever be loaded with a "new" version of rakudo again
mr_ron thank you very much ... working on it now ...
lizmat timotimo: so if we want any SHA indicating precomp compatibility, it would require the serialization format version to be part of it 14:04
timotimo the thing is that moarvm supports multiple versions of the serialization format at the same time 14:05
lizmat is feeling she's getting drawn into a ever deeper rabbit hole :-(
*an
pmurias lizmat: a NQP upgrade should invalidate precomp 14:06
lizmat: I would invalidate precomp on MoarVM upgrade too 14:09
pmurias lizmat: it seems like it's possible to for example change an op number from MoarVM 14:10
jasanj` m: <1 2 3>.WHAT 14:11
camelia ( no output )
lizmat I just realised that the directory layout in gist.github.com/lizmat/f3807956c354c14902a3 won't work :-(
jasanj` m: say <1 2 3>.WHAT
camelia rakudo-moar 649dae: OUTPUT«(List)␤»
lizmat so I need to look at alternatives
pmurias lizmat: re CURLF not supporting precompilation don't we want to use precompilation while developing too? 14:14
lizmat potentially, yes
but it's going to be tricky to get all dependencies right 14:15
pmurias IMHO it's really important when doing something like make test 14:17
lizmat suppose we have Foo::Bar precompiled 14:18
it uses Zippo, but you changed it
moritz then loading Foo::Bar must load all dependencies
lizmat by removing an exported sub
moritz one of them has a modification timestamp newer than the precompiled file 14:19
lizmat and also precomp then
moritz so you have to re-precomp it, and all its reverse dependencies
lizmat but can you tell from the pre-comped file what its dependencies are ?
timotimo pmurias: we don't change op numbers
moritz lizmat: well, that must be added if it's not there already 14:20
timotimo pmurias: we've got a few numbers already in moar that just "die 'deprecated op hit'" or something like that
lizmat I think you very quickly get into a situation where you would need to precomp everything you're working on
timotimo and when you add new ops or change old ones, you have to get a new QASTCompiler anyway
lizmat goes cycling to get some fresh ideas 14:21
moritz lizmat: I don't think there's a way around that
lizmat moritz: so what is the use of precomp in a CURLF then ?
pmurias timotimo: ok, so it seems like it's not necessary unless someone is trying to be evil on purpose
lizmat: re precomp everything you'r working on, I think that's what we should be aiming for
timotimo at least us moar devs wouldn't be evil like that; or letting evil commits through 14:22
and in any case, there's the MOAR_REVISION in between
moritz lizmat: the use is that if you you change some files once, and run 20 test files, you still need only one recompile cascade when running the first test file, and the other 19 don't need one
pmurias moritz: you don't need to recompile the reverse dependencies 14:23
moritz: you can just leave them invalidated and recompile as needed
is there much cost for precompiling vs just compiling and not saving the bytecode? 14:24
moritz pmurias: yes; I meant the reverse dependencies that made us look at the changed file in the first place
timotimo i wouldn't say there's really a difference between "we have to recompile all the revdeps" and "invalidating one will cause a cascade of invalidation that'll recompile everything" 14:25
moritz timotimo: the difference is that if you have A1 and A2 depend on B, B changes, and you only use A1, you don't need to recompile A2 14:27
timotimo ah 14:31
good point
jdv79 moritz: do you know if hack as the "Intel Virtualization" set on in the bios? 14:33
*has 14:34
moritz jdv79: uhm, hack itself is a virtual machine
jdv79 oh i thought it was hw
moritz no, kvm
jdv79 that complicates thingss
ugh
[Coke] jdv79: Daily, I build nqp-j and rakudo-j, and run the full test suite on both. 14:35
(nqp-j actually gets built 2x.)
timotimo jdv79: but we own the machine that hosts hack
jdv79: so if you need a vm for something, you can "hoist it up", so to speak
[Coke] I was going to ask why were running a virtual machine on hack. :) 14:36
moritz though running docker on hack shouldn't be a problem 14:37
(and iirc vagrant also supports containers by now)
[Coke] looks like jdv79 is running virtual box 2x.
jdv79 i only have the vagrant/virtualbox setup
[Coke] er, on 2cpus. 14:38
jdv79 if you guys know how to get that running that'd be nice 14:39
i know very little about such things
i just want a quick and easy way to protoype the metacpan stuff 14:40
moritz jdv79: sorry, I can't invest too much energy/time; loads of other unfinished construction sites :/ 14:48
Skarsnik Hi, I have issue installing panda. It fail on a module check it seems : pastebin.com/zYVt7HdD 14:52
tony-o did you try nuking it? 14:59
colomon do we have a rakudo on Win32 MSI?
colomon needs to get GLR on his ancient Windows VM 15:00
TimToady probably borked panda last night 15:02
there are several instances of push that need to be append now 15:03
colomon …. append?
TimToady push is now primarily for pushing a single thing, and append is for appending lists 15:04
moritz we're going full python without our Array method names :-)
*with
jnthn .tell lizmat MoarVM's backcompat should be strong enough that you don't need to invalidate on a MoarVM update. And from a development/debugging perspective, I'd really like to not cause a Moar update to invalidate also. 15:07
yoleaux 29 Sep 2015 22:45Z <ShimmerFairy> jnthn: I agree with you on the exceptions, I wonder if the introduction of +args would let us roll back some of the exceptions. Needing for @$foo { ... } (or zen slice) for Scalar containers is particularly unfortunate to me :(
00:54Z <TimToady> jnthn: thing is, @dest.push(@src.pop) is just wrong, wrong, wrong, because surprise; we really need to separate out the I-expect-to-push-a-list semantics to a different name, .pushem or some such
08:00Z <FROGGS> jnthn: no hurry :o)
13:59Z <lizmat> jnthn: should a MoarVM upgrade invalidate precomps? Should a NQP upgrade ?
jnthn: I'll pass your message to lizmat.
jnthn .tell lizmat NQP upgrade should, but that you already get for free with the compilation unit ID from in Perl6::Compiler
yoleaux jnthn: I'll pass your message to lizmat.
jnthn TimToady: I see you ended up with separate methods, one of which follows the one-arg rule; I guess push now only accepts a single value? 15:08
jnthn is fine with that, anyways...
TimToady not exactly
it's ** now, but mainly because we need to be able to slip on it
jnthn ah
TimToady seq op depends on it 15:09
jnthn isn't clever enough to understand the seq op implementation :)
TimToady but yeah, the BDLF wasn't very B last night... 15:10
jnthn I'm OK-er with us getting append/prepend that follow the single arg rule than just a .push that doesn't. 15:11
mr_ron moritz and lizmat I fixed the conflicts for the pull request github.com/perl6-community-modules/uri/pull/14
jnthn wonders if unshift also got a **@a version... 15:12
ah, yes 15:15
though it'll want a single arg multi candidate for perf reasons
As will push
mr_ron moritz: sorry I hadn't accepted your invitation yet. Now I did and I just did the merge ... thanks again
mr_ron Sorry - to finish the PR on URI and keep LWP::Simple and rakudo star from breaking I need help with one more small pull request: github.com/cosimo/perl6-lwp-simple/pull/59 15:21
It's not a big pull request - can anyone help? 15:22
In the worst case when the user authentication test for LWP::Simple fails someone may notice my PR and merge it ... 15:26
TimToady is generating a pull request to fix panda 15:29
TimToady pull request generated, now someone with panda access needs to apply it 15:37
jdv79 moritz: can you install and start elastic search? 15:46
TimToady and one patch to rakudobrew, though it might have other deps that need fixing 15:51
lichtkind good morning 16:00
is here an aadmin of the gihub group? 16:01
liztormato TimToady: will merge the panda PR when I'm home again in about 2 hours. Unless someone beats me to it 16:03
jdv79 moritz: hold off - it seems latest is not good:(
TimToady on those pull requests, I did s/push/append/ but if you wish to be backward compatible to older perl6es you can s/push: stuff/push: |stuff/ instead
lichtkind moritz: can you create a new github prject? 16:05
liztormato On a similar note. I wonder whether it would be a good idea to separate map into a map and a filter function. Map guaranteeing always 1 return value. An filter 16:08
And filter could return 0 or more values
moritz lichtkind: yes
timotimo huh, my intuition would be that filter would only ever return 1 or 0 results 16:09
just from the name alone, i mean
lichtkind moritz: i want to do a parallel tutorial to my already existing 9 part perl 5 tut
something like notable tutorial or something like this 16:10
liztormato Well. One function guranteeing 1to1 mapping. The other 1to0+. Mapping
lichtkind i man i can host it on my account but maybe better bundeld here
since i want to complete it till dezember
TimToady liztormato: one could intuit itemish return from --> Type
liztormato Good point. ;-) 16:11
timotimo oh, and depending on the return type fall back to a simpler implementation that may run faster? 16:11
liztormato Yup 16:12
timotimo the first time type hints (apart from native types of course) actually give a performance improvement :P 16:12
TimToady er, nevermind on the rakudobrew PR, since it's P5 code... 16:15
jnthn I suspect we can get the Slip check pretty fast once Moar's inlining and/or tracing is better
As in, probably get it removed in a lot of cases. 16:16
timotimo: Putting a Str type hint on something you interpolate into a regex also has quite drastic impact :)
liztormato Slip check?
timotimo oh! of course
jnthn liztormato: The only case a map isn't n-to-1 is when it returns a Slip 16:17
liztormato Ok. But a block could be returning a Slip in on iteration. Amd 16:18
And something else in another
jnthn liztormato: Not if it has a return type decl saying otherwise ;) 16:18
liztormato: Or if we can dynamically figure out that can't happen 16:19
(At spesh time)
TimToady that's part of why I wanted to make sure -> --> worked right
jnthn :)
TimToady m: say map -> $x --> True { say $x }, 1..5 16:20
camelia rakudo-moar 649dae: OUTPUT«1␤2␤3␤4␤5␤(True True True True True)␤»
TimToady when last I checked, -> --> didn't work, but either it fixed itself in the last month or two, or my definite return changes fixed it somehow 16:22
liztormato 1m: say map -> $x --> True { say $x; 42 }, 1..5
tony-o
TimToady doesn't really matter, but it works now anyway
TimToady hopes push -> append is the last major breaking change 16:24
jnthn also
jnthn was a little surprised to see the o operator sneak in too 16:25
TimToady that's just more for FP cred, and wasn't breaking anything
jnthn :)
liztormato 1Fluent or Functional cred? 16:26
TimToady liztormato: your comments aren't coming through
Skarsnik hum, it there a way to tell rakudobrew to put everything it install on another dir? 16:27
liztormato ... 16:28
Skarsnik I mean, without having to cp -r manually after
TimToady oh wow, it's raining, maybe we're finally getting a bit of the promised El Niño deluge 16:31
I'd better go wash the Yellowstone dirt off my car, which is, like 3 months old (the dirt, not the car) 16:32
liztormato Don't you have geysers for that? 16:34
jdv79 could someone install curl-config on hack? 16:35
moritz jdv79: done 16:37
jdv79 thanks 16:38
[Coke]_ lizmat: your comments were black on black here. 17:24
jdv79 successs. i think. i *believe* i have a workable metacpan instance on hack. 17:37
of course since the wifi on my end is a bit < a 14.4 modem i can't see it so i'll set it up when i can. 17:38
thanks moritz
[Coke] jdv79++ 17:45
[Coke] tries TEST_JOBS=400 make spectest. 18:04
yay, that's a bad idea. :) 18:05
[Coke] (surprisingly, only bad, not horrible) 18:08
vendethiel hopes he'll be able to persuade TimToady++ to remove every kind of implicit flattening/one-arg-rule-thing in Perl7 :P 18:11
moritz jdv79: fwiw hack had a bit of trouble with its uplink
[Coke] S06-operator-overloading/sub.t seems slow for what it's doing. adding unicode operators slow, maybe? 18:14
[Coke] m: END { say "hi"}; exit; 18:16
camelia rakudo-moar 649dae: OUTPUT«hi␤»
jnthn [Coke]: Adding operators in general is, 'cus it has to derive a new parser, and so compute a new set of LTM tables, and we're not clever enough to re-use the unaffected ones yet
[Coke] jnthn: fair enough. 18:17
jnthn: OOC, did you see the ticket about ./perl6 --profile -e "exit" ? 18:18
jnthn [Coke]: yeah; didn't work out what's going on yet 18:20
lizmat jnthn: if there is an nqp:: op that needs to be done for the profiler 18:33
yoleaux 15:07Z <jnthn> lizmat: MoarVM's backcompat should be strong enough that you don't need to invalidate on a MoarVM update. And from a development/debugging perspective, I'd really like to not cause a Moar update to invalidate also.
15:07Z <jnthn> lizmat: NQP upgrade should, but that you already get for free with the compilation unit ID from in Perl6::Compiler
lizmat we could add it to sub exit ?
or maybe nqp::exit should be made smarter ? 18:34
nine++ # beating me to merging TimToady's panda PR
timotimo hm 18:36
timotimo from nqp code, what's the easiest way to get a stack trace without causing an exception to fly? 18:37
supernovus Was there a bot that takes code snippets or error messages and creates a pastebin of them? 18:38
yoleaux 27 Oct 2014 04:37Z <tony-o> supernovus: i'm trying to use xml::query and when i do .new(xml => $xml) i'm getting 'Cannot create an instance of that type', any clues? Tests are now failing when I install from panda as well
28 Oct 2014 04:36Z <tony-o> supernovus: im getting install errors only with panda . the way it suggests testing passes if i clone your repo (just fyi)
20 Mar 2015 08:18Z <moritz> supernovus: in HTTP::Easy and XML::Query, please replace at_pos by AT-POS
14 Apr 2015 04:46Z <tony-o> supernovus: is supernovus
jdv79 moritz: ah 18:40
FROGGS[tab] o/
lizmat FROGGS[tab] \o 18:41
[Coke] lizmat: if I read the code right, the profiler is creating an END block to get invoked. in general, exit calls END blocks. 18:42
lizmat yup, it does...
m: END say "goodbye"; exit
camelia rakudo-moar 649dae: OUTPUT«goodbye␤»
supernovus Anyway, I just tried bootstrapping panda, and got the following message: pastebin.com/RepEgnNL
Skarsnik hm, I still can't build panda. does copy an already rakudo install work? or do I need to edit some path? 18:42
moritz Skarsnik: rakudo isn't relocatable 18:43
Skarsnik: currently you have to recompile if you want it to run in a different location
Skarsnik ok. I get this error when trying to build panda with rakudobrew pastebin.com/zYVt7HdD 18:45
supernovus Skarsnik: looks like we both are having problems installing panda, but weirdly, they are different problems! (I'm installing with my own script which may need some updates, as it's been a while since I've been active in the Perl 6 world.) 18:46
supernovus I need to run. Be back later. 18:47
dalek kudo/curli: 1c4fc58 | lizmat++ | CURLI:
Some directory layout changes (work in progress)
18:50
dalek rl6-most-wanted: 427d731 | (Zoffix Znet)++ | most-wanted/modules.md:
Pastebin::Shadowcat for App::Nopaste

Mentioned Pastebin::Shadowcat for App::Nopaste entry
18:55
rindolf Zoffix: nice! 18:58
rindolf Zoffix++ 18:58
TimToady Skarsnik: your panda needs the latest panda patch that nine++ just merged 18:59
dunno what's wrong with the other one 19:00
Skarsnik how I do that? x)
TimToady git clone?
git clone github.com/tadzik/panda.git 19:01
PerlJam Skarsnik: rakudobrew nuke moar; before you rakudobrew build moar 19:02
TimToady will that reclone panda?
PerlJam rakudobrew build-panda should, but I've found the only way to get everything reliably up to date is to nuke first 19:03
Skarsnik I rm the panda directory and relaunch rakudobrew build-panda 19:04
ok, thx, it works now :) 19:07
TimToady whew!
PerlJam cool
TimToady now we just have to fix Everything Else I Broke Last Night
[Coke] TimToady: Or, as well call that here, Wednesdays. 19:16
geekosaur heh 19:17
TimToady Trouble is, I'm getting into the habit of believing six possible things after dinner... 19:21
which reminds me, lunch & 19:22
PerlJam notes that "after dinner" is still "before breakfast" 19:23
so all you need to do is twiddle the possibility knob and you're set!
colomon Is there any difficulty in believing six *possible* things? 19:27
PerlJam difficulty? no. utility? probably not. 19:28
Skarsnik ah yes LWP::Simple fail it tests like someone ention earlier x) 19:30
jnthn lizmat: My first guess is that the exit op in Moar needs to get smarter 19:33
lizmat m: say (-> --> Int { }).returns # shouldn't that need to say "(Int)" ? 20:00
camelia rakudo-moar 649dae: OUTPUT«(Mu)␤»
lizmat Ah, it seems Blocik.returns gets its .returns from Callable 20:01
dalek ast: 4f47646 | usev6++ | S32-array/pop.t:
Fudge test ('todo') for code which doesn't die, actually
ast: de0e1f1 | usev6++ | S (11 files):
Replace more eval-dies-ok with throws-like
lizmat m: say (-> --> Int { }).signature.returns 20:03
camelia rakudo-moar 649dae: OUTPUT«(Int)␤»
lizmat seems we need to move Routine.returns up to Block.returns
or maybe even to Callable ?
jnthn Block 20:06
Code.returns doesn't really make sense, I don't think
lizmat jnthn: but Code has an $!signature attribute ? 20:10
jnthn lizmat: For now, but not sure it will forever :) 20:13
lizmat: Would rather keep the option to slim thunks down a little in the future, if we can.
lizmat well, if it gets moved, the methods can move as well? Seems more logical to keep them close to the place where we can say $!signature
but if you rather I put them in b 20:14
jnthn lizmat: Not sure we'll be able to easily "just move methods" after 6.christmas :)
lizmat Block and use nqp::getattr, that would be fine by me as well
but why *is* $!signature now an attribute of Code and not of Block ?
jnthn Not sure, possibly mostly historical reasons.
lizmat want me to try moving it to Block and see what breaks ? 20:15
jnthn You can if you're curious enough ;)
ZoffixWork Hey. What's the idiomatic way in Perl 6 to handle errors? In Perl 5, for example, it common to "return undef or an empty list". 20:16
timotimo you can throw an exception
jnthn Exceptions of failures.
s/of/or/
ZoffixWork Thanks. I'll look that up.
TimToady fail lets the caller decide how to handle things
jnthn Failures are "lazy" exceptions that can be defused by testing them for definedness or truth 20:17
TimToady or fatalized by 'use fatal'
ZoffixWork :O Perl 6 sounds so awesome!
jnthn *nod*
heh, that was to TimToady, but works for ZoffixWork's comment too :D
TimToady *nod*
ZoffixWork :D
Skarsnik hm, how you can deference? a cpointer pointing to a struct to get its member with zavolaj? I found a self.bless : $surface on Cairo. is that the way? 20:23
dalek ast: c3e76c4 | usev6++ | S06-operator-overloading/imported-subs.t:
Remove test for behavior of eval-dies-ok
20:25
ast: c549562 | usev6++ | S32-str/substr.t:
Remove fudged test, substr works with Any as argument

The removed test was based on RT #76412. Nowadays substr is implemented in src/core/Str.pm and coerces its argument to Str.
synbot6 Link: rt.perl.org/rt3/Public/Bug/Display...l?id=76412
[Coke] is zavolaj still a separate thing, or is that all Nativecall now? 20:26
Skarsnik from github.com/jnthn/zavolaj Starting from 2015.02, the NativeCall module ships with the Rakudo Perl 6 compiler, so there is no need to install it separately. 20:27
[Coke] That's what I thought. 20:29
jnthn The repo is only there to point people at the fact they don't need to be looking at it any more :) 20:30
And yeah, I guess I have to say goodbye to a cute project name :)
Skarsnik so where is the updated document if it exists? x) still here? 20:32
jnthn doc.perl6.org/language/nativecall 20:33
If you mean the docs for how to use it :)
Skarsnik too sad, searching NativeCall does not point to it x) 20:34
dalek kudo/nom: dd46c30 | TimToady++ | src/core/Junction.pm:
Junction ops can be pure again
Skarsnik TBD? To be done? 20:36
[Coke] Skarsnik: good find, will open that as a bug. 20:37
to be determined, usually
S99:TBD
synbot6 Link: design.perl6.org/S99.html#TBD
[Coke] ... ah well.
Skarsnik: search for "native" 20:38
dalek ast: 3c166d9 | usev6++ | S12-methods/trusts.t:
Fix test for trust relation, passed for the wrong reason
[Coke] but yes, we should still find nativecall
dalek ast: f9a512e | usev6++ | S12-enums/thorough.t:
Fudge test ('todo') which passed for the wrong reason
20:49
ZoffixWork BTW, what's GLR? I keep seeing it mentioned all over the place. 20:50
PerlJam Great List Refactor 20:51
ZoffixWork Thanks.
PerlJam The G and R words a a little fluid, but the L is always List
jnthn ZoffixWork: It was a bunch of work to improve list/iterator handling in Perl 6 that's now completed. :)
PerlJam s/a a/are a/ 20:52
lizmat jnthn: I was curious and got this far: gist.github.com/lizmat/bc4111d25b34e52c5489
then it became too meta for me... :-)
Skarsnik jnthn, so there is no way to access member of a struct given with a cpointer? 20:53
jnthn lizmat: Some of the places changing Code to Block in Actions/World look a tad suspect to me also :)
Skarsnik: NativeCall has evolved a good bit since I last worked on it, but I think you would cast the CPointer to the CStruct. 20:54
Skarsnik cast? like my Struct $s = $pointer; ? 20:59
masak 'night, #perl6 21:01
ZoffixWork \o 21:03
dalek ast: 0a36554 | usev6++ | S06-signature/closure-parameters.t:
Fudge test which passed for the wrong reason
21:05
ast: 10a849d | usev6++ | S06-signature/definite-return.t:
Replace another two eval-dies-ok with throws-like
lizmat bartolin++ # finding tests that passed for the wrong reason
supernovus I changed my build script so instead of using bootstrap.pl it uses rebootstrap.pl and it appears to work properly now. 21:08
bartolin lizmat: speaking of those tests: there are some more in S04-statements/return.t. I made a PR for roast the other day: github.com/perl6/roast/pull/70 21:11
bartolin wonders if there is a better way to test for that error (Attempt to return outside of any Routine) than resorting to 'run' 21:12
bartolin m: use Test; throws-like q[return 1], X::ControlFlow::Return # does not die 21:13
camelia rakudo-moar dd46c3: OUTPUT« 1..2␤ not ok 1 - 'return 1' died␤ ␤# Failed test ''return 1' died'␤# at /tmp/jFh3ELhGuL line 1␤ ok 2 - # SKIP Code did not die, can not check exception␤ # Looks like you failed 1 test of 2␤not ok 1 - did we throws-like X::Cont…»
bartolin m: return 1 21:14
camelia ( no output )
bartolin $ perl6-m -e 'return 1'
Attempt to return outside of any Routine
jnthn m: return 1; CATCH { defualt { say "caught $_" } } 21:16
camelia rakudo-moar dd46c3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/1A715f3XfY␤Undeclared routine:␤ defualt used at line 1␤␤»
jnthn m: return 1; CATCH { default { say "caught $_" } }
camelia ( no output )
jnthn hm, not like that :)
bartolin yeah, I think i tried that :-)
bartolin I couldn't even catch them with 'is_run' ... 21:17
lizmat even a return inside an EVAL works
m: sub a { EVAL "return; say q/bar/" }; a; say "foo" # not sure if that's ok 21:18
camelia rakudo-moar dd46c3: OUTPUT«foo␤»
lizmat m: sub a { EVAL "return"; say q/bar/ }; a; say "foo" # better
camelia rakudo-moar dd46c3: OUTPUT«foo␤»
jnthn Bumper catch-up progress report: 6guts.wordpress.com/2015/09/30/tho...-progress/ 21:26
dalek c: cc4d77c | (Zoffix Znet)++ | lib/Language/regexes.pod:
Fix typo
21:27
bartolin jnthn++ # very interesting progress reports (and all those other good things) 21:33
dalek kudo/nom: 83e9013 | lizmat++ | src/core/ (2 files):
Move Routine.of/returns to Block
21:34
ast: e3494e2 | usev6++ | S13-overloading/typecasting-long.t:
Replace another eval-dies-ok with throws-like
21:36
jnthn 'night, #perl6 21:38
bartolin o/ 21:39
lizmat gnight jnthn
ZoffixWork I'm having trouble finding how to do regex replacement in Perl 6. In Perl 5 it's the s/// operator, and in p5-to-6 docs, I see it's mentioned as "still exists in Perl 6", with a link to regex Adverbs, but I'm not seeing anything relevant in adverbs: docs.perl6.org/language/5to6-perlfunc#s%2F%2F%2F 21:45
m: say 'a' ~~ s/a/A/; # and this doesn't seem to do what I think it would do
camelia rakudo-moar dd46c3: OUTPUT«Parameter '$self' expected a writable container, but got Str value␤ in block <unit> at /tmp/Z2uO0hcBBa:1␤␤»
geekosaur m: my $s = 'a'; $s ~~ s/a/A/; 21:46
camelia ( no output )
geekosaur whoops
m: my $s = 'a'; $s ~~ s/a/A/; say $s;
camelia rakudo-moar dd46c3: OUTPUT«A␤»
geekosaur were you really expecting it to work on a literal/constant?
ZoffixWork Is there a s///r version? Something that returns the replaced version, while keeping the original intact? 21:47
hoelzro m: my $s = '
camelia rakudo-moar dd46c3: OUTPUT«5===SORRY!5=== Error while compiling /tmp/TTQ8oNzYj7␤Unable to parse expression in single quotes; couldn't find final "'" ␤at /tmp/TTQ8oNzYj7:1␤------> 3my $s = '7⏏5<EOL>␤ expecting any of:␤ single quotes␤ term␤»
hoelzro m: my $s = 'foo'; my $t = $s.subst(/foo/, 'bar'); say($s, $t)
camelia rakudo-moar dd46c3: OUTPUT«foobar␤»
hoelzro ZoffixWork: the subst method will do that 21:48
ZoffixWork Thanks. geekosaur++ hoelzro++
geekosaur yeh, I think smartmatch is not the right tool for that operation; you want to use the actual methods (.match or .subst) in that case 21:49
you could think of perl 5's =~ as binding $_ locally; perl 6's ~~ is an actual match operator 21:51
ZoffixWork Ah
[Coke] I'm having trouble githubbing from hack. 22:00
leont Did 􏿽xABmy/has TYPE @array􏿽xBB change behavior recently? 22:01
_itz hmm p6doc is broken by the changes of the last day or so 22:01
leont Or am I observing fallout from the GLR change?
timotimo probably the latter 22:02
what's it about? 22:03
leont Method 'method-from-role' must by implemented by Role because it is required by a role 22:04
timotimo oh?
i wonder how you got that now, but didn't get it before
leont Only element in that list is certainly having that method 22:05
I really don't get it
timotimo that error happens when you compose a role into a class 22:06
oh, wait
timotimo m: role TestRole { method Foo { ... } }; my TestRole @foo; 22:07
camelia ( no output )
timotimo m: role TestRole { method Foo { ... } }; my TestRole @foo; @foo[0] = 1 but TestRole
camelia rakudo-moar 83e901: OUTPUT«Method 'Foo' must be implemented by Int+{TestRole} because it is required by a role␤ in any compose_method_table at gen/moar/m-Metamodel.nqp:2666␤ in any apply at gen/moar/m-Metamodel.nqp:2676␤ in any compose at gen/moar/m-Metamodel.nqp:2812␤ i…»
timotimo hm.
leont Smells like a bug to me
timotimo what does? 22:08
leont Oh wait, that's a tripple dot
timotimo yeah
leont Interesting fact: in my case it's triggered by 􏿽xABdie @array􏿽xBB
leont Or actually, die @array.perl 22:09
timotimo m: role TestRole { method Foo { ... } }; my TestRole @foo; say @foo.perl
camelia rakudo-moar 83e901: OUTPUT«Method 'Foo' must be implemented by TestRole because it is required by a role␤ in any compose_method_table at gen/moar/m-Metamodel.nqp:2666␤ in any apply at gen/moar/m-Metamodel.nqp:2676␤ in any compose at gen/moar/m-Metamodel.nqp:2812␤ in any …»
timotimo like that?
leont Something like that 22:12
Actualy code is more like: 22:13
m: role TestRole { method Foo { ... } }; class TestClass does TestRole { method Foo { say "Awesome" } }; my TestRole @foo = TestClass.new,; say @foo.perl
camelia rakudo-moar 83e901: OUTPUT«Method 'Foo' must be implemented by TestRole because it is required by a role␤ in any compose_method_table at gen/moar/m-Metamodel.nqp:2666␤ in any apply at gen/moar/m-Metamodel.nqp:2676␤ in any compose at gen/moar/m-Metamodel.nqp:2812␤ in any …»
timotimo right
leont but I think yours already shows the bug
timotimo for some reason, the .perl is trying to pun the role
_itz bdfl?
timotimo benevolent dictator for life
lizmat is it not the my TestRole @foo?
_itz hahahaha 22:14
timotimo it is not, lizmat
lizmat m: my role Foo { method a { ... } }; my Foo $a
camelia ( no output )
timotimo the same code without the say won't blow up
lizmat indeed, I would say rakudobug
dalek c: c6bc991 | (Steve Mynott)++ | lib/Perl6/TypeGraph.pm:
push to append
22:16
kudo/nom: 329f9ec | lizmat++ | src/core/Any-iterable-methods.pm:
Change whitespace in sequential-map

For better readability / understandability for optimizations to come.
leont I would help too if those errors gave useful line numbers :-s 23:14