»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_log/perl6 | UTF-8 is our friend! 🦋
Set by Zoffix on 25 July 2018.
00:05 aborazmeh joined, aborazmeh left, aborazmeh joined, p6bannerbot sets mode: +v aborazmeh 00:06 p6bannerbot sets mode: +v aborazmeh 00:26 w_richard_w joined 00:27 rindolf left, p6bannerbot sets mode: +v w_richard_w 00:28 pecastro left 00:34 reach_satori joined 00:35 p6bannerbot sets mode: +v reach_satori 00:45 sftp left 00:51 sftp joined, p6bannerbot sets mode: +v sftp 00:52 w_richard_w left 01:25 leont joined 01:26 p6bannerbot sets mode: +v leont 01:30 [particle]1 is now known as [particle] 01:51 abaiste^ joined 01:52 p6bannerbot sets mode: +v abaiste^
timotimo wakelift.de/p/542f3440-7e5e-4371-b2...782e02f09/ - i'd be thankful for some proofreaders :) 01:53
leont tadzik: a blast from the past. Not my happiest past TBH 01:54
MasterDuke timotimo: cool, looks good 02:04
02:06 _isomorphismes joined 02:07 p6bannerbot sets mode: +v _isomorphismes 02:31 nelsonhb joined 02:32 p6bannerbot sets mode: +v nelsonhb 02:44 aborazmeh left 02:45 nelsonhb left 02:46 kurahaupo joined, p6bannerbot sets mode: +v kurahaupo 03:08 _isomorphismes left 03:42 schwa joined, p6bannerbot sets mode: +v schwa 03:43 schwa left 03:50 zachk left 04:08 jme` joined 04:09 p6bannerbot sets mode: +v jme` 04:25 Nick12 joined, p6bannerbot sets mode: +v Nick12
Nick12 hello. I read somewhere that this is *probably* the most active perl6 community space. I'm a complete newbie to perl/perl5/perl6, thinking of maybe learning a bit about it. Is this a wrong place to ask for learning material and/or ask basic questions? 04:26
leont This is the right place 04:52
Nick12 Is there a de-facto book for newcomers? (Something like the rust book) 04:53
04:53 Cabanoss- joined
Nick12 I found a bunch of books referenced in the faq, but is any of them fine 04:54
04:54 p6bannerbot sets mode: +v Cabanoss-
Nick12 I was also wondering if there are any particular use cases for the language (That it's currently used for, or that it's designed to cater to) 04:54
leont There's a graph that is supposed to help you choose at perl6book.com/
04:55 Cabanossi left
Nick12 Thank you, that's super helpful. Are there any benchmarks on how perl6 currently performs? Or guidelines on which scenarios you want to run with the jvm as back end 04:58
05:00 leont left 05:03 sauvin joined, p6bannerbot sets mode: +v sauvin
AlexDaniel Nick12: it is the most active space, but not in that timezone :) 05:05
Nick12: I think this is the greatest way to start: learnxinyminutes.com/docs/perl6/ 05:06
Nick12: I think you're assuming that rakudo on jvm is faster in some cases, but I don't think it is the case 05:08
if you're using the latest version of rakudo, moarvm is pretty fast. Benchmarks are weird, some short snippets are surprisingly fast sometimes (faster than other similar languages)
on average, however, it is noticeably slower than other languages :) 05:09
05:25 _isomorphismes joined, p6bannerbot sets mode: +v _isomorphismes 06:25 squashable6 left, reportable6 left, coverable6 left, quotable6 left, undersightable6 left, shareable6 left, bisectable6 left, benchable6 left, statisfiable6 left, bloatable6 left, nativecallable6 left, evalable6 left, committable6 left, greppable6 left, notable6 left, releasable6 left, unicodable6 left 06:26 bisectable6 joined, benchable6 joined, notable6 joined, p6bannerbot sets mode: +v bisectable6 06:27 releasable6 joined, greppable6 joined, shareable6 joined, p6bannerbot sets mode: +v benchable6, p6bannerbot sets mode: +v notable6, quotable6 joined 06:28 unicodable6 joined, p6bannerbot sets mode: +v releasable6, p6bannerbot sets mode: +v greppable6, p6bannerbot sets mode: +v shareable6, undersightable6 joined, ChanServ sets mode: +v undersightable6, p6bannerbot sets mode: +v quotable6, p6bannerbot sets mode: +v unicodable6, statisfiable6 joined, ChanServ sets mode: +v statisfiable6 06:29 p6bannerbot sets mode: +v undersightable6, evalable6 joined, bloatable6 joined, ChanServ sets mode: +v bloatable6, nativecallable6 joined, ChanServ sets mode: +v nativecallable6, p6bannerbot sets mode: +v statisfiable6, reportable6 joined, ChanServ sets mode: +v reportable6 06:30 squashable6 joined, ChanServ sets mode: +v squashable6, committable6 joined, p6bannerbot sets mode: +v evalable6, p6bannerbot sets mode: +v bloatable6, p6bannerbot sets mode: +v nativecallable6, p6bannerbot sets mode: +v reportable6, coverable6 joined 06:31 p6bannerbot sets mode: +v squashable6, p6bannerbot sets mode: +v committable6, p6bannerbot sets mode: +v coverable6 06:50 Nick12 left 07:31 cpan-p6 left 07:32 cpan-p6 joined
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 07:32
New module released to CPAN! App-Mi6 (0.2.6) by 03SKAJI
07:33 p6bannerbot sets mode: +v cpan-p6 07:37 timotimo left 07:38 jmerelo joined 07:39 p6bannerbot sets mode: +v jmerelo 07:40 smallick joined, p6bannerbot sets mode: +v smallick 07:42 timotimo joined, p6bannerbot sets mode: +v timotimo 07:44 smallick left 07:56 cpan-p6 left 07:57 cpan-p6_ joined
cpan-p6_ 03cpan-p6_ reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 07:57
tyil neat 07:58
07:58 p6bannerbot sets mode: +v cpan-p6_
tyil it's now running on my k8s infra, instead of the desktop at home 08:02
08:13 kurahaupo left 08:34 _isomorphismes left
jmerelo tyil: where did you deploy the k8s infra? 08:45
tyil jmerelo: servers at leaseweb.nl 08:47
got 3 minions, a master, and a server at kimsufi to act as file storage 08:48
the master node also hosts a postgres database
jmerelo tyil: great :-) 08:51
08:52 _isomorphismes joined 08:53 p6bannerbot sets mode: +v _isomorphismes
tyil it should restart the bot automatically when errors happen now ^_^ 08:53
08:58 reach_satori left 08:59 reach_satori joined, p6bannerbot sets mode: +v reach_satori 09:05 MilkmanDan left 09:06 MilkmanDan joined, p6bannerbot sets mode: +v MilkmanDan 09:10 ambs left 09:14 rindolf joined 09:15 p6bannerbot sets mode: +v rindolf
El_Che tyil: we opted for Nomad at work as a orchestrator. I was at DockerCon in Barcelona in december and I must say I wasn't very impressed with the Kubernetes setups I saw, it felt way overengineered almost as it was meant for setups the size of, let's say, Google. :) (I realize Kubernetes is the most popular option.) 09:17
tyil it is overengineered
I set it up because work uses it, so I wanted to learn it
jmerelo I'll check Nomad.
El_Che (and I realize that If I switch jobs, I need to get more into Kubernetes)
jmerelo El_Che: will you?
El_Che tyil: ah, ok, we have a similar stance then
jmerelo: no plans in that direction, no, but you never know when you get bored :) 09:18
so far, I can spend time on our devops infra while not being a Linux admin
so it's fun
jmerelo El_Che: there's a point in which you _wish_ you could get bored
El_Che hehe 09:19
I like to keep learning, once that is gone, I'll be a dull boy 09:20
getting older is something to take into account when changing jobs of course
and when I wanted to swiched jobs last time, there was a lot of consultancy places, I was not thrilled by it 09:21
jmerelo There's always some learning in every job. In university it's mostly things you _do_ want to learn (bar bureaucracy). In other jobs, well... 09:22
El_Che yes, I want to finished the other univeristy thing as well :) 09:23
then have a long think about what I want to do
09:26 rindolf left 09:28 ufobat joined 09:29 p6bannerbot sets mode: +v ufobat 09:32 rindolf joined 09:33 p6bannerbot sets mode: +v rindolf 09:39 _isomorphismes left 09:49 domidumont joined 09:50 p6bannerbot sets mode: +v domidumont 10:00 smallick joined, smallick left
Geth doc: 053715b3fb | (JJ Merelo)++ | doc/Language/objects.pod6
Rephrasing slightly
10:18
synopsebot Link: doc.perl6.org/language/objects
doc: 39575cc79f | (JJ Merelo)++ | 3 files
Adds target destination and some reflow

Added back /syntax/role, which disappeared due to obscure indexing rules (see #2575). Either when indexing for `does` was added (apparently, adding an index term behind or before a header suppresses the creation of a new page), or simply when the X<|declarator,role> was changed, it disappeared. It's added back, refs #2568
jmerelo releasable6: status 10:19
releasable6 jmerelo, Next release in ≈8 hours. 4 blockers. 112 out of 238 commits logged (⚠ 41 warnings)
jmerelo, Details: gist.github.com/0b6041517690058417...66105a3ad6
Geth doc: 804e4b01ca | (JJ Merelo)++ | doc/Type/Cool.pod6
Reflow and some rephrasing
10:25
synopsebot Link: doc.perl6.org/type/Cool
10:28 Kaiepi left, Kaypie joined 10:29 p6bannerbot sets mode: +v Kaypie 10:34 Merfont joined, Kaypie left 10:35 p6bannerbot sets mode: +v Merfont
cpan-p6_ New module released to CPAN! Test-Util-ServerPort (0.0.2) by 03JSTOWE 10:41
10:44 pecastro joined 10:45 p6bannerbot sets mode: +v pecastro
Xliff m: class A { has Hash $.b is rw; method c() { %!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a 10:52
camelia 5===SORRY!5=== Error while compiling <tmp>
Attribute %!b not declared in class A
at <tmp>:1
------> 3 rw; method c() { %!b = %( a => 42 ) } }7⏏5; my $a = A.new; $a.c; dd $a
expecting any of:
horizontal whitespace
Xliff m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a 10:53
camelia A $a = A.new(b => ${:a(42)})
Xliff m: class A { has Hash $.b is rw; method c() { $.b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a
camelia Cannot assign to a readonly variable or a value
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
Xliff m: class A { has Hash $.b is rw; method c() { self.foo = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a
camelia No such method 'foo' for invocant of type 'A'
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
Xliff m: class A { has Hash $.b is rw; method c() { self.b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a
camelia A $a = A.new(b => ${:a(42)})
Xliff Hmmm! 10:54
Do we really want people to be able to set an attribute using the $. form?
.tell timotimo Do we really want people to be able to set an attribute using the $. form? 10:55
yoleaux Xliff: I'll pass your message to timotimo.
11:12 rindolf left
jmerelo Xliff: why not? 11:12
11:15 rindolf joined 11:16 kensanata left, p6bannerbot sets mode: +v rindolf
Xliff jmerelo: $.a is for accessing only, if you want to write, you use $!a. That's what I've always known and it is in the docs. 11:17
IIRC, there used to be an error message to that effect in rakudo. 11:18
Note that self.foo works, becuase "method foo is rw"... 11:19
jmerelo Xliff: maybe you can check if there's been a regression...
Xliff jmerelo: lizmat ran a bisectable, earlier and didn't find one.
jmerelo Xliff: I'll check the docs anyway. Maybe the error is just there.
Xliff So I must be mistaken. I am also dead on my feet, so It's bedtime. 11:20
jmerelo: Thanks!
o7
jmerelo Xliff: my pleasure. Have a good rest.
.tell Xliff I have looked up the documentation, here docs.perl6.org/language/classtut#i..._accessors and it does not seem to discourage that kind of thing. However, self is not actually documented 11:27
yoleaux jmerelo: I'll pass your message to Xliff.
jmerelo m: class A { has Hash $.b is rw; method c() { $.b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a
camelia Cannot assign to a readonly variable or a value
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a 11:28
camelia A $a = A.new(b => ${:a(42)})
jmerelo .tell Xliff self.b is actually the same as $!b
yoleaux jmerelo: I'll pass your message to Xliff.
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a; $a.b( þ => 33 ); dd $a 11:29
camelia A $a = A.new(b => ${:a(42)})
A $a = A.new(b => ${:a(42)})
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a; $a.b = þ => 33 ; dd $a
camelia A $a = A.new(b => ${:a(42)})
Type check failed in assignment to $!b; expected Hash but got Pair (:þ(33))
in block <unit> at <tmp> line 1
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ) } }; my $a = A.new; $a.c; dd $a; $a.b = {þ => 33} ; dd $a 11:30
camelia A $a = A.new(b => ${:a(42)})
A $a = A.new(b => ${:þ(33)})
11:30 abraxxa joined 11:31 p6bannerbot sets mode: +v abraxxa
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ); say $.b } }; my $a = A.new; $a.c; dd $a; $a.b = {þ => 33} ; dd $a 11:37
camelia {a => 42}
A $a = A.new(b => ${:a(42)})
A $a = A.new(b => ${:þ(33)})
jmerelo m: class A { has Hash $.b is rw; method c() { $!b = %( a => 42 ); say $!b } }; my $a = A.new; $a.c; dd $a; $a.b = {þ => 33} ; dd $a
camelia {a => 42}
A $a = A.new(b => ${:a(42)})
A $a = A.new(b => ${:þ(33)})
jmerelo m: class A { has $.þ is rw; method c() { $!þ = 42; say $!þ; $.þ=42; say $þ } }; my $a = A.new; $a.c; 11:43
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$þ' is not declared. Did you mean '$!þ'?
at <tmp>:1
------> 3od c() { $!þ = 42; say $!þ; $.þ=42; say 7⏏5$þ } }; my $a = A.new; $a.c;
jmerelo m: class A { has $.þ is rw; method c() { $!þ = 42; say $!þ; $.þ=42; say $.þ } }; my $a = A.new; $a.c;
camelia 42
42
jmerelo m: class A { has $.þ; method c() { $!þ = 42; say $!þ; $.þ=42; say $.þ } }; my $a = A.new; $a.c; 11:44
camelia 42
Cannot modify an immutable Int (42)
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class A { has $!þ is rw; method c() { $!þ = 42; say $!þ; $.þ=42; say $.þ } }; my $a = A.new; $a.c;
camelia Potential difficulties:
useless use of 'is rw' on $!þ
at <tmp>:1
------> 3class A { has $!þ 7⏏5is rw; method c() { $!þ = 42; say $!þ; $
42
No such method 'þ' for invocant of type 'A'. Did you mean 'c'?
in method c …
jmerelo m: class A { has $!þ; method c() { $!þ = 42; say $!þ; $.þ=42; say $.þ } }; my $a = A.new; $a.c; 11:46
camelia 42
No such method 'þ' for invocant of type 'A'. Did you mean 'c'?
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class A { has $!þ; method c() { $!þ = 42; say $!þ; } }; my $a = A.new; $a.c;
camelia 42
11:46 llfourn left
jmerelo m: class A { has $.þ; method c() { $!þ = 42; say $!þ; say $.þ } }; my $a = A.new; $a.c; 11:46
camelia 42
42
Geth doc: e18c537e1e | (JJ Merelo)++ | 2 files
Minor rephrasing and reflow
11:53
doc: 10b329f951 | (JJ Merelo)++ | doc/Language/objects.pod6
Adds self to index, and rephrases, closes #2581
synopsebot Link: doc.perl6.org/language/objects
12:01 ufobat left 12:08 nick__ joined, p6bannerbot sets mode: +v nick__ 12:09 cono_ left 12:14 ambs joined, p6bannerbot sets mode: +v ambs 12:20 nick__ left 12:22 |oLa| joined, |oLa| left 12:25 Manifest0 left, Manifest0 joined 12:26 p6bannerbot sets mode: +v Manifest0 12:31 reach_satori_ joined 12:32 p6bannerbot sets mode: +v reach_satori_ 12:34 reach_satori left 12:35 lucasb joined, p6bannerbot sets mode: +v lucasb 12:49 leont joined, p6bannerbot sets mode: +v leont 12:52 aborazmeh joined, aborazmeh left, aborazmeh joined, p6bannerbot sets mode: +v aborazmeh 12:53 p6bannerbot sets mode: +v aborazmeh, smallick joined
jmerelo New wiki page in the documentation repo, just in case someone wants to have a look: github.com/perl6/doc/wiki/Document...cification 12:54
12:54 p6bannerbot sets mode: +v smallick, smallick left 13:00 smallick joined 13:01 marmor joined, p6bannerbot sets mode: +v smallick 13:02 p6bannerbot sets mode: +v marmor
smallick a very little typo on that wiki page link, looks like *topic" 13:02
13:05 aborazmeh left
smallick what is the smallest quine in perl6? 13:06
13:08 aborazmeh joined, aborazmeh left, aborazmeh joined, p6bannerbot sets mode: +v aborazmeh, marmor left, p6bannerbot sets mode: +v aborazmeh
jmerelo smallick: right. Thankis. 13:10
smallick :)
lucasb m: say $*PROGRAM.slurp 13:11
camelia say $*PROGRAM.slurp
smallick it looks like "echo $(cat $0)" 13:12
but, well
sjn funny. running that with -e fails :)
perl6 -e 'say $*PROGRAM.slurp'
jmerelo ditto in REPL 13:13
smallick m: say $*PROGRAM
camelia "<tmp>".IO
sjn echo "haxx0rd!" > -e ; perl -e 'say $*PROGRAM.slurp' # :-D 13:14
smallick sjn: s/perl(?=\ -e)/perl6/ 13:16
sjn ah yes
smallick what are the other ways, as per TIMTOWTDI 13:18
lucasb m: {.fmt($_).say}(<{.fmt($_).say}(<%s>)>) 13:19
camelia {.fmt($_).say}(<{.fmt($_).say}(<%s>)>)
lucasb haha, copied from rosettacode.org/wiki/Quine#Perl_6
jmerelo More complete document file specs: github.com/perl6/doc/wiki/Document...cification 13:20
13:20 dct joined, p6bannerbot sets mode: +v dct 13:21 kurahaupo joined 13:22 molaf joined, p6bannerbot sets mode: +v kurahaupo, p6bannerbot sets mode: +v molaf 13:29 jmerelo left
smallick m: say "$_'$_'" given 'say "$_'$_'" given ' 13:31
camelia 5===SORRY!5=== Error while compiling <tmp>
Two terms in a row
at <tmp>:1
------> 3say "$_'$_'" given 'say "$_'7⏏5$_'" given '
expecting any of:
infix
infix stopper
smallick m: say "$_\\'$_\\'" given 'say "$_\'$_\'" given ' 13:33
camelia say "$_'$_'" given \'say "$_'$_'" given \'
smallick m: EVAL $_ given 'EVAL $_' 13:35
camelia 5===SORRY!5=== Error while compiling <tmp>
EVAL is a very dangerous function!!! (use the MONKEY-SEE-NO-EVAL pragma to override this error,
but only if you're VERY sure your data contains no injection attacks)
at <tmp>:1
------> 3EVAL $_ g…
13:36 aborazmeh left 13:37 marmor joined
smallick every language i have seen that has eval, none of them gives such beautiful warning. 13:37
s/warning/error/
13:37 p6bannerbot sets mode: +v marmor 13:38 |oLa| joined 13:39 p6bannerbot sets mode: +v |oLa| 13:40 dct left
smallick m: $_ = q{$_ = q{h}; say TR/h/$_/}; say TR/h/$_/ 13:41
camelia $_ = q{$}; say TR/$/$_/
smallick m: my $a = q{my $a = q{h}; $a ~~ s/h/$a/; say $a}; $a ~~ s/h/$a/; say $a 13:45
camelia my $a = q{my $a = q{h}; $a ~~ s/h/$a/; say $a}; $a ~~ s/h/$a/; say $a
smallick can you make it more small than this 13:46
13:48 abraxxa left, smallick left, satori__ joined 13:49 p6bannerbot sets mode: +v satori__ 13:50 cpan-p6 joined
cpan-p6 03cpan-p6 reporting for duty! [Perl 6] 02git.tyil.nl/perl6/app-cpan-uploadnotifierbot 13:50
13:50 p6bannerbot sets mode: +v cpan-p6 13:51 reach_satori_ left 13:59 |oLa| left 14:02 abraxxa joined 14:03 sena_kun joined, p6bannerbot sets mode: +v abraxxa, p6bannerbot sets mode: +v sena_kun 14:04 cpan-p6_ left 14:29 abraxxa left 15:05 marmor left 15:06 reach_satori joined 15:07 p6bannerbot sets mode: +v reach_satori 15:08 satori__ left 15:09 reach_satori left, reach_satori joined 15:10 p6bannerbot sets mode: +v reach_satori 15:16 reach_satori left 15:19 reach_satori joined 15:20 p6bannerbot sets mode: +v reach_satori 15:49 Merfont left, Kaypie joined 15:50 p6bannerbot sets mode: +v Kaypie 16:02 Manifest0 left 16:03 Manifest0 joined 16:04 p6bannerbot sets mode: +v Manifest0 16:23 ufobat joined 16:24 p6bannerbot sets mode: +v ufobat
b2gills `$.b` can be thought of as `(my $ := self.b())` 16:53
17:02 jme` left 17:08 molaf left 17:13 marmor joined 17:14 p6bannerbot sets mode: +v marmor 17:28 salva left, jmerelo joined
jmerelo squashable6: status 17:28
squashable6 jmerelo, Next SQUASHathon in 12 days and ≈16 hours (2019-02-02 UTC-12⌁UTC+14). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
jmerelo releasable6: status
releasable6 jmerelo, Next release in ≈1 hour. 4 blockers. 113 out of 239 commits logged (⚠ 41 warnings) 17:29
jmerelo, Details: gist.github.com/aa3607d149919066bb...d9dd778357
17:29 p6bannerbot sets mode: +v jmerelo 17:30 abaiste^ left 17:45 jme` joined, p6bannerbot sets mode: +v jme` 17:53 lucasb left
jmerelo m: constant ⲧ = " " xx 4; say "{ⲧ}Tabbed" 17:57
camelia Tabbed
jmerelo m: say "π is {π}":c 18:03
camelia Unexpected named argument 'c' passed
in block <unit> at <tmp> line 1
jmerelo m: say q:c"π is {π}"
camelia π is 3.141592653589793
jmerelo m: say q"π is {π}" 18:04
camelia π is {π}
jmerelo m: say "π is {π}" 18:05
camelia π is 3.141592653589793
18:09 molaf joined 18:10 p6bannerbot sets mode: +v molaf
Geth doc: c7f7a2fb52 | (JJ Merelo)++ | 2 files
Rewriting and reflow
18:11
doc: ea96840d4c | (JJ Merelo)++ | doc/Language/objects.pod6
Changes example for role closes #2580
synopsebot Link: doc.perl6.org/language/objects
jmerelo releasable6: status 18:19
releasable6 jmerelo, Next release is just a few moments away. 4 blockers. 113 out of 239 commits logged (⚠ 41 warnings)
jmerelo, Details: gist.github.com/4fcfb10ff03c73f5d6...cf8b054e3f
18:20 ufobat left 18:25 zakharyas joined, p6bannerbot sets mode: +v zakharyas 18:28 ufobat joined
Geth doc: 911f6a1183 | (JJ Merelo)++ | doc/Language/objects.pod6
Deletes tabs
18:28
synopsebot Link: doc.perl6.org/language/objects
18:29 p6bannerbot sets mode: +v ufobat
Kaypie if i have a method that calls another method that calls the first method using $*SCHEDULER.cue with a limit on how many times it'll recurse, is there still a possibility of a stack overflow if the limit is too large? 18:40
jmerelo Kaypie: the stack overflow shouldn't be related to the Scheduler. Thread pool and stack are two different things. 18:44
18:45 Khisanth left
Kaypie cool, thanks 18:46
18:46 Kaypie is now known as Kaiepi, zachk joined 18:47 p6bannerbot sets mode: +v zachk
jmerelo m: my @seq= 1,10,100 ... (* / (* + 1)).^name ~~ Rat; say @seq 18:47
camelia MoarVM panic: Memory allocation failed; could not allocate 24 bytes
jmerelo Er
m: my @seq= 1,10,100 ... 1e9; say ($_/($_+1)).^name for @seq 18:48
camelia Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
jmerelo m: my @seq= 1,10,100 ... 1e12; say ($_/($_+1)).^name for @seq
camelia Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
jmerelo m: my @seq= 1,10,100 ... 1e18; say ($_/($_+1)).^name for @seq
camelia Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
jmerelo m: my @seq= 1,10,100 ... 1e50; say ($_/($_+1)).^name for @seq 18:49
camelia Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num
Num…
jmerelo m: my @seq= 1,10,100 ... 1e20; say ($_/($_+1)).^name for @seq
camelia Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Rat
Num
jmerelo m: my @seq= 1,10,100 ... (* / (* + 1)).^name ~~ Num; say @seq 18:50
camelia MoarVM panic: Memory allocation failed; could not allocate 24 bytes
jmerelo m: my @seq= 1,10,100 ... (* / * ).^name ~~ Num; say @seq 18:51
jnthn .^name returns a Str, which'll never match Num
jmerelo m: my @seq= 1,10,100 ... (* / * ).WHAT ~~ Num; say @seq
jnthn Just `* / * ~~ Num` would probably do it 18:52
jmerelo jnthn: thanks. So the error is because it's simply creating an infinite sequence. But shouldn't that be lazy?
jnthn The sequence is, but assignment into an array isn't unless the thing is explicilty marked lazy 18:53
camelia (timeout)
MoarVM panic: Memory allocation failed; could not allocate 24 bytes
jmerelo m: my @seq = lazy 1,10,100 ... * / * ~~ Num; say @seq
camelia [...]
jmerelo m: my @seq = lazy 1,10,100 ... * / * ~~ Num; say @seq[30]
camelia 1000000000000000000000000000000
jmerelo m: my @seq = lazy 1,10,100 ... * / * ~~ Num; say @seq[30] .^name
camelia 5===SORRY!5=== Error while compiling <tmp>
Malformed postfix call (only alphabetic methods may be detached)
at <tmp>:1
------> 030,100 ... * / * ~~ Num; say @seq[30] .7⏏5^name
jmerelo m: my @seq = lazy 1,10,100 ... * / * ~~ Num; say @seq.elems
camelia Cannot .elems a lazy list
in block <unit> at <tmp> line 1
jmerelo m: my @seq = 1,10,100 ... * / * ~~ Num; say @seq
camelia MoarVM panic: Memory allocation failed; could not allocate 24 bytes
Xliff ., 18:55
yoleaux 11:27Z <jmerelo> Xliff: I have looked up the documentation, here docs.perl6.org/language/classtut#i..._accessors and it does not seem to discourage that kind of thing. However, self is not actually documented
11:28Z <jmerelo> Xliff: self.b is actually the same as $!b
jmerelo Hi! 18:56
18:59 Khisanth joined 19:00 p6bannerbot sets mode: +v Khisanth 19:04 zachk left, zachk joined, card.freenode.net sets mode: +v zachk, p6bannerbot sets mode: +v zachk
El_Che jmerelo: is it? Isn't one just reading a container and the other executing a method (slower?) 19:06
bartolin Hi #perl6! 19:09
long time no see
I've heard that 6.d was released \o/ great work!
El_Che \o/ 19:10
jmerelo hi, bartolin 19:11
bartolin hopes he'll have more time for Perl 6 this year ;) 19:12
jmerelo El_Che: hum. The container must be $!
El_Che I suspect that $! is faster than self.
but I may be terrible wrong :)
jmerelo El_Che: I haven't seen any kind of discouragement, anyway.
El_Che: I seem to remember that $! is just syntactic sugar for self 19:13
bartolin: we'll be here to help, should you need it
El_Che en that case, I am wrong
sena_kun if nothing has changed lately, $! is a variable and is(or, at least, was) faster than $.foo, which is a method call. 19:14
there were talks about optimizing $.foo calls to be the same as $! when there is no custom accessor, but this stuff is tricky. I might be wrong if there were some latest changes in this regard though. 19:15
jmerelo sena_kun: and self.foo is equivalent to $.foo
sena_kun jmerelo, yes.
bartolin jmerelo: thanks (also for all the work on the docs!) 19:16
zachk uhhh, I have a perl6 chat service I wrote using cro, it listens on port 8000, I can only reach it via 127.0.0.1 not over the lan, is there a reason for this?
sena_kun jnthn, ping? ^
jmerelo m: class Foo { has $!bar; method c() { self.bar = 33; say $!bar }; my $foo = Foo.new; $foo.c() 19:17
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3ay $!bar }; my $foo = Foo.new; $foo.c()7⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
jmerelo m: class Foo { has $!bar; method c() { self.bar = 33; say $!bar; }; my $foo = Foo.new; $foo.c()
camelia 5===SORRY!5=== Error while compiling <tmp>
Missing block
at <tmp>:1
------> 3y $!bar; }; my $foo = Foo.new; $foo.c()7⏏5<EOL>
expecting any of:
statement end
statement modifier
statement modifier loo…
jmerelo m: class Foo { has $!bar; method c() { self.bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c
camelia No such method 'bar' for invocant of type 'Foo'
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class Foo { has $.bar; method c() { self.bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c 19:18
camelia Cannot modify an immutable 'Any' type object
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class Foo { has $.bar is rw; method c() { self.bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c
camelia 33
zachk I tried shuttinf off my firewall, doesnt seem to help, on port 8000 to the lan ip I get connection refused, on another port I am not hosting on in netcat It just waits to timeout
jmerelo m: class Foo { has $!bar is rw; method c() { self.bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c 19:19
camelia Potential difficulties:
useless use of 'is rw' on $!bar
at <tmp>:1
------> 3class Foo { has $!bar 7⏏5is rw; method c() { self.bar = 33; say $
No such method 'bar' for invocant of type 'Foo'
in method c at <tmp> line 1
jmerelo m: class Foo { has $!bar; method c() { self.bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c
camelia No such method 'bar' for invocant of type 'Foo'
in method c at <tmp> line 1
in block <unit> at <tmp> line 1
jmerelo m: class Foo { has $!bar; method c() { !bar = 33; say $!bar; }}; my $foo = Foo.new; $foo.c
camelia 5===SORRY!5=== Error while compiling <tmp>
Preceding context expects a term, but found infix = instead.
Did you make a mistake in Pod syntax?
at <tmp>:1
------> 3ass Foo { has $!bar; method c() { !bar =7⏏5 33; say $!bar; }}; my $foo …
jnthn zachk: Did you pass a host to the listener? 19:20
19:21 rindolf left
sena_kun m: my $now = now; class A { has $.a = 0; method foo { $!a = $!a + 1 }; }; my $a = A.new; for ^100_000_00 { $a.foo; }; say now - $now; 19:21
camelia 5.1943777
sena_kun m: my $now = now; class A { has $.a = 0; method foo { $!a = $.a + 1 }; }; my $a = A.new; for ^100_000_00 { $a.foo; }; say now - $now
camelia 2.45323231
zachk oh, how would I do that? will it still listen on localhost?
jnthn zachk: `host => '0.0.0.0'` should listen on all interfaces
jmerelo sena_kun: thanks! 19:22
jnthn Just pass it in the same place you're passing the port number
zachk alright thanks, I will try that
when I make the TCP.Listener?
jmerelo m: my $now = now; class A { has $.a = 0; method foo { $!a = self.a + 1 }; }; my $a = A.new; for ^100_000_00 { $a.foo; }; say now - $now
camelia 0.7902556
jmerelo m: my $now = now; class A { has $.a = 0; method foo { $!a = $.a + 1 }; }; my $a = A.new; for ^100_000_00 { $a.foo; }; say now - $now 19:23
camelia 0.8244693
jmerelo m: my $now = now; class A { has $.a = 0; method foo { $!a = $!a + 1 }; }; my $a = A.new; for ^100_000_00 { $a.foo; }; say now - $now
camelia 0.7968864
sena_kun jmerelo, well, this "bench" is crap, so don't trust it in any bit please. :) on my machine I don't see a significant difference between those too, so I think that rule `using $!a is always faster than $.a` is not so important now.
zachk thanks jnthn , works perfectly now! is that documented anywhere? 19:24
jnthn Using $.a instead of $!a mostly means "if I'm subclassed I want to call the method a on the subclass"
jmerelo jnthn: but self.a is always exactly the same as $.a 19:25
jnthn jmerelo: Is it?
jmerelo jnthn: am asking.
jnthn Oh :)
Then use a question mark! ;-)
moritz I think $.a is itemized
jnthn No, it's $(self.a) which is self.a.item 19:26
Though the default item is a no-op
It'll only make a difference on something iterable
moritz m: class A { method x() { 1, 2, 3 }; method b() { .say for self.x; .say for $.x } }; A.b
camelia 1
2
3
(1 2 3)
moritz this demonstrates the difference
jnthn moritz++ # nice example
About performance: accessors will be inlined, and the .item will be too 19:27
19:27 rindolf joined
jnthn And we're getting increasingly aggressive at chopping away instructions rewritten from argument handling after an inline 19:27
19:28 p6bannerbot sets mode: +v rindolf
sena_kun was wrong for years 19:28
jnthn So it's not likely you'll see much of a difference
sena_kun: Actually some years ago there was a more significant performance difference between $!a and self.a
That there isn't now is because our optimization has got smarter
jmerelo moritz, jnthn: I don't think that itemization part is documented anywhere... 19:29
jnthn zachk: The host argument is documented in cro.services/docs/reference/cro-http-server if it's a HTTP service you're doing
Or at least, it's featured in the code example :)
Maybe we could suggest other things to try than localhost though; feel free to open an issue 19:30
sena_kun jnthn, well, I know it from your words from early Cro days, so... :) Yet I thought that $.foo is when you want to call possible accessor implemented instead of just "give me that attribute now".
jnthn sena_kun: Yes, most of the time $!a is actually the *correct* thing to use, just for its behavoir
jmerelo moritz: that's so going to the docs
El_Che so, we all ended to be kind of right :) 19:32
jmerelo m: class A { has $.x = 1, 2, 3; method b() { .say for self.x; .say for $.x } }; A.b
camelia WARNINGS for <tmp>:
Useless use of constant integer 2 in sink context (lines 1, 1)
Useless use of constant integer 3 in sink context (lines 1, 1)
Cannot look up attributes in a A type object
in method x at <tmp> line 1
in method b at <tm…
jmerelo m: class A { has $.x = (1, 2, 3); method b() { .say for self.x; .say for $.x } }; A.b 19:33
camelia Cannot look up attributes in a A type object
in method x at <tmp> line 1
in method b at <tmp> line 1
in block <unit> at <tmp> line 1
jnthn A.new.b
jmerelo m: class A { has $.x = (1, 2, 3); method b() { .say for self.x; .say for $.x } }; A.new.b
camelia 1
2
3
(1 2 3)
jmerelo jnthn++
Geth doc: 6b58e8f2a6 | (JJ Merelo)++ | doc/Language/objects.pod6
Clarifies self.a and $.a

Thanks to moritz, jnthn and El_che for clarifications
19:35
synopsebot Link: doc.perl6.org/language/objects
19:37 marmor left 19:42 rindolf left 19:50 jmerelo left 19:55 rindolf joined 19:56 p6bannerbot sets mode: +v rindolf 20:06 kurahaupo left 20:11 domidumont left 20:19 kurahaupo joined 20:20 p6bannerbot sets mode: +v kurahaupo 20:35 rindolf left 20:36 blork joined, p6bannerbot sets mode: +v blork 20:38 Kaiepi left, Kaiepi joined 20:39 p6bannerbot sets mode: +v Kaiepi 20:50 rindolf joined 20:51 p6bannerbot sets mode: +v rindolf
Kaiepi m: role A { has $!a; submethod TWEAK(:$!a) {} }; role B does A { has $!b; submethod TWEAK(:$!b) {} }; B.new.a 21:06
camelia MoarVM panic: Memory allocation failed; could not allocate 6394501 bytes
Kaiepi m: role A { has $!a; submethod TWEAK(:$!a) {} }; role B is A { has $!b; submethod TWEAK(:$!b) {} }; B.new.a
camelia No such method 'a' for invocant of type 'B'
in block <unit> at <tmp> line 1
Kaiepi m: role A { has $!a; submethod TWEAK(*%args) { callwith %args } }; role B does A { has $!b; submethod TWEAK(:$!b) {} }; B.new.a 21:07
camelia MoarVM panic: Memory allocation failed; could not allocate 6392717 bytes
Kaiepi is this a bug?
if not, how do i do this properly?
21:14 salva joined, rindolf left, p6bannerbot sets mode: +v salva
moritz I don't think callwith can ever work with a submethod 21:15
a submethod is not part of the normal method dispatch
you can expliclty call another method with self.Type::methodname() syntax 21:21
Kaiepi m: role A { has $!a; submethod TWEAK(:$!a) {} }; role B is A { has $!b; submethod TWEAK(:$a, :$!b) { self.A::TWEAK: :$a } }; B.new(:1a, :2b).a 21:39
camelia No concretization found for A
in submethod TWEAK at <tmp> line 1
in block <unit> at <tmp> line 1
b2gills m: role A { has $!a; submethod BUILD(:$!a) {}; method a {$!a<>} }; role B is A { has $!b; submethod BUILD(:$!b) {}; method b {$!b<>} }; $_ = B.new(:a(3),:b(4)); say .a; say .b 21:46
camelia 3
4
b2gills There is a reason they are submethods not methods 21:47
If they were methods then only one would get called, instead one from each part gets called
m: role A { has $!a; method a {$!a<>} }; role B is A { has $!b; method b {$!b<>} }; $_ = B.new(:a(3),:b(4)); say .a; say .b 21:48
camelia (Any)
(Any)
cpan-p6 New module released to CPAN! MessagePack-Class (0.0.2) by 03JSTOWE
21:50 andrzejku joined
b2gills `.new()` → `.bless()` → `.BUILDALL` → (`.*BUILD` & `.*TWEAK`) 21:50
21:50 p6bannerbot sets mode: +v andrzejku
b2gills Kaiepi: There is no need to have a BUILD or TWEAK call another one in another role or class because the other one will also get called anyway 21:53
Kaiepi oh 21:57
thanks
moritz m: role A { submethod TWEAK { say 'TWEAK A' } }; role B does A { submethod TWEAK { say 'TWEAK B' } }; B.new() 22:05
camelia MoarVM panic: Memory allocation failed; could not allocate 6392717 bytes
moritz b2gills: that is certainly true for classes, but doesn't seem to work with roles
b2gills m: role A { submethod BUILD { say 'TWEAK A' } }; role B does A { submethod BUILD { say 'TWEAK B' } }; B.new() 22:14
camelia MoarVM panic: Memory allocation failed; could not allocate 6392717 bytes
leont Yeah, it isn't for roles, and that can be annoying 22:17
b2gills m: role A { has $!a; submethod BUILD(:$!a) { say 'BUILD B' } }; role B is A { has $!b; submethod BUILD(:$!b) { say 'BUILD B'} }; B.new(:a(3),:b(4))
camelia BUILD B
BUILD B
b2gills m: role A { has $!a; submethod BUILD(:$!a) { say 'BUILD A' } }; role B is A { has $!b; submethod BUILD(:$!b) { say 'BUILD B'} }; B.new(:a(3),:b(4)) 22:18
camelia BUILD A
BUILD B
b2gills m: role A { submethod BUILD() { say 'BUILD A' } }; role B is A { submethod BUILD() { say 'BUILD B'} }; B.new() 22:20
camelia BUILD A
BUILD B
b2gills m: role A { submethod BUILD() { say 'BUILD A' }; submethod TWEAK() { say 'TWEAK A' } }; role B is A { submethod BUILD() { say 'BUILD B'}; submethod TWEAK() { say 'TWEAK B' } }; B.new() 22:21
camelia BUILD A
TWEAK A
BUILD B
TWEAK B
b2gills `submethod TWEAK` only seems to fail if there isn't a `submethod BUILD`. Either one you write, or one that is auto-generated. 22:23
22:25 andrzejku left 22:26 rindolf joined 22:27 p6bannerbot sets mode: +v rindolf, kurahaupo left 22:28 llfourn joined 22:29 p6bannerbot sets mode: +v llfourn 22:43 kurahaupo joined, p6bannerbot sets mode: +v kurahaupo
b2gills m: role A { submethod fubar () {} }; role B does A { submethod fubar () {} }; B.new() # This is the problem 22:46
camelia MoarVM panic: Memory allocation failed; could not allocate 6407723 bytes
22:46 zakharyas left
b2gills moritz: It is an instance of this bug: github.com/rakudo/rakudo/issues/2250 22:47
(didn't see the `is` vs `does`) 22:48
22:53 shlomif joined, p6bannerbot sets mode: +v shlomif 22:55 kurahaupo left 23:06 kurahaupo joined, p6bannerbot sets mode: +v kurahaupo 23:12 ufobat left 23:14 rindolf left 23:26 blork left 23:38 nick__ joined 23:39 p6bannerbot sets mode: +v nick__ 23:41 aborazmeh joined, aborazmeh left, aborazmeh joined, p6bannerbot sets mode: +v aborazmeh 23:42 p6bannerbot sets mode: +v aborazmeh 23:55 sena_kun left