»ö« Welcome to Perl 6! | perl6.org/ | evalbot usage: 'p6: say 3;' or rakudo:, or /msg camelia p6: ... | irclog: irc.perl6.org or colabti.org/irclogger/irclogger_logs/perl6 | UTF-8 is our friend!
Set by moritz on 22 December 2015.
00:01 canopus joined 00:03 ggoebel left 00:05 rpburkholder joined 00:07 rurban left 00:10 pierre_ joined, vytas left, vytas joined 00:14 Actualeyes joined 00:15 ggoebel joined 00:19 canopus left 00:26 nadim left 00:27 canopus joined 00:29 girafe left 00:34 BenGoldberg joined
viki kyclark++ TEACHING Perl 6 to a class! 00:39
( blogs.perl.org/users/ken_youens-cla...-mers.html )
lizmat++ good weekly 00:40
00:43 baest left 00:44 cdg left
Xliff Are there any web articles on Perl6 IPC? 00:48
I guess it's time to learn the Supply classes. 00:49
00:50 canopus left 00:51 araujo left 00:53 araujo joined 00:54 baest joined 00:58 canopus joined 01:03 canopus left 01:10 canopus joined 01:14 canopus left
samcv there are Xliff i have two if you wanna check them out cry.nu/perl6/multithreading-in-perl6/ 01:15
not very long cry.nu/perl6/multithreading-in-perl6-part2/
should be a good intro, and then supplement with other things, but i think it lays a good foundation 01:16
i thought a lot of the things about supplies and stuff were not that easy to understand when you'd never worked with them before 01:17
01:19 matiaslina joined
samcv Xliff, after that i'd probably look at this page docs.perl6.org/language/concurrency.html 01:21
01:22 canopus joined 01:48 labster left 01:49 labster joined 01:51 pierre_ left
Xliff Thanks, samcv++ 01:59
01:59 pierre_ joined 02:02 pierre_ left 02:03 pierre_ joined 02:12 labster left 02:13 labster joined 02:19 matiaslina left 02:20 pierre_ left 02:21 pierre_ joined 02:23 sftp left, sftp joined 02:26 perlawhirl joined 02:39 Yeeb joined 02:45 ilbot3 left 02:48 ilbot3 joined 02:53 Xliff left 02:54 rpburkholder left 02:56 cdg joined 02:59 cdg left 03:00 cdg joined 03:10 TEttinger joined 03:41 pierre_ left, noganex_ joined 03:44 noganex left 03:48 pierre_ joined 03:52 pierre_ left 04:01 pierre_ joined 04:06 cyphase left 04:11 cyphase joined 04:22 seatek joined 04:30 skids left 04:33 cdg left 04:34 cyphase left 04:44 Xliff joined 05:02 ggoebel left 05:03 pierre_ left 05:09 Xliff left 05:10 Yeeb left, pierre_ joined 05:15 pierre_ left 05:16 Actualeyes left 05:18 Xliff joined 05:19 Actualeyes joined 05:20 Cabanossi left 05:23 Cabanossi joined 05:24 cyphase joined 05:25 AlexDaniel left 05:39 mr-foobar left 05:52 cyphase left 05:54 wamba joined, mayathecat joined 05:56 cyphase joined 06:00 rurban joined, rurban left 06:01 mayathecat left 06:03 ugjka left, pierre_ joined, ugjka joined, ugjka left 06:04 ugjka joined
samcv trying to figure out why the hell this is happening: 06:10
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban ' (\S+) ' '? (\S)+ /; say $1;
camelia rakudo-moar 26e351: OUTPUT«[「1」 「0」 「m」 「i」 「n」 「u」 「t」 「e」 「s」]␤»
samcv never had this happen before
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban ' (\S+) ' '? (\S)+ /; say $1.Str;
camelia rakudo-moar 26e351: OUTPUT«1 0 m i n u t e s␤»
samcv oh i think the + is in the wrong spot?. hmm interesting 06:12
perlawhirl my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) /; say ~$1 06:15
m: my $str = '!ban nick 10minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) /; say ~$1
camelia rakudo-moar 26e351: OUTPUT«10minutes␤»
06:19 cyphase left
Xliff m: my $str = '!ban nick 10 minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) \s* (\S+) /; say ~$1 06:22
camelia rakudo-moar 26e351: OUTPUT«10␤»
Xliff m: my $str = '!ban nick 10 minutes'; $str ~~ / ^ '!ban' \s+ (\S+) \s* (\S+) \s* (\S+) /; say $0, $1, $2
camelia rakudo-moar 26e351: OUTPUT«「nick」「10」「minutes」␤»
perlawhirl bisectable6: my @a[4] = ^4; @a = @a.rotate(1); say @a; 06:23
bisectable6 perlawhirl, Bisecting by output (old=2015.12 new=26e3516) because on both starting points the exit code is 0
perlawhirl, bisect log: gist.github.com/abc547a754f4a2cde0...6c1a3fdbbc
perlawhirl, (2016-11-01) github.com/rakudo/rakudo/commit/e2...8c0ca7d8c3
06:25 cyphase joined
perlawhirl .tell lizmat found a regression: gist.github.com/Whateverable/abc54...6c1a3fdbbc 06:28
yoleaux perlawhirl: I'll pass your message to lizmat.
06:28 perlawhirl left 06:32 darutoko joined 06:33 cyphase left, BenGoldberg left 06:38 cyphase joined, Tonik joined, rpburkholder joined 06:40 rurban joined 06:48 wamba left, cyphase left 06:49 domidumont joined 06:50 RabidGravy joined 06:53 cyphase joined 06:54 rpburkholder left 06:59 nadim joined 07:03 bjz joined, stigo left 07:05 abraxxa joined 07:11 neuraload joined 07:15 cyphase left, kurahaupo__ joined 07:16 bjz left 07:19 cyphase joined 07:22 RabidGravy left 07:23 rurban left 07:24 pierre_ left, uvb left 07:26 rurban joined 07:28 wamba joined
Xliff Is there any way of breaking execution of an instance of HTTP::Server::Simple 07:30
07:31 kurahaupo__ left 07:32 pierre_ joined, bjz joined 07:33 bjz left 07:35 cpage_ joined 07:36 vendethiel left, pierre_ left 07:39 pierre_ joined 07:41 bjz joined 07:44 cyphase left, Tonik left 07:48 wamba left, cyphase joined 07:53 domidumont left 08:00 wamba joined 08:02 domidumont joined 08:10 ufobat joined 08:12 domidumont left 08:14 domidumont joined 08:16 domidumont left 08:17 qub left 08:18 domidumont joined 08:22 cpage_ left 08:23 zakharyas joined 08:24 domidumont left 08:25 domidumont joined
Xliff m: ^100.pick(3) 08:27
camelia rakudo-moar 26e351: OUTPUT«Potential difficulties:␤ Precedence of ^ is looser than method call; please parenthesize␤ at <tmp>:1␤ ------> 3^1007⏏5.pick(3)␤WARNINGS for <tmp>:␤Useless use of "^" in expression "^100.pick(3)" in sink context (line 1)␤»
Xliff m: (^100).pick(3).say
camelia rakudo-moar 26e351: OUTPUT«(94 89 5)␤»
Xliff m: (^100).pick(3).say 08:28
camelia rakudo-moar 26e351: OUTPUT«(71 69 82)␤»
08:33 maybekoo2 joined 08:36 AlexDaniel joined, zacts left 08:44 AlexDaniel left
lizmat . 08:47
yoleaux 06:28Z <perlawhirl> lizmat: found a regression: gist.github.com/Whateverable/abc54...6c1a3fdbbc
lizmat wow, and that wasn't caught by spectest :-(
08:47 wamba left
lizmat and good *, #perl6! :-) 08:48
lizmat clickbaits p6weekly.wordpress.com/2016/11/14/...-cheaters/
08:49 domidumont left 08:50 zacts joined, domidumont joined 08:51 aindilis left, wamba joined 08:53 cpage_ joined
moritz lizmat++ 08:55
speaking of TWEAK
I'm a bit annoyed that even in TWEAK it tells me not use virtual method calls
but I guess it makes sense, sort of
08:57 dakkar joined 09:00 ocbtec joined 09:02 pierre_ left
[ptc] lizmat++ 09:04
09:04 cibs left, jonas2 joined 09:05 nadim_ joined 09:06 cibs joined 09:08 zakharyas left, pierre_ joined 09:10 nadim left, pierre_ left, pierre_ joined 09:11 wamba left
lizmat .tell perlawhirl .reverse on shaped arrays is also borked :-( 09:11
yoleaux lizmat: I'll pass your message to perlawhirl.
lizmat looking at it now
09:15 rindolf joined
lizmat hmmm... actually, it's not the .rotate/.reverse itself, it's in combination with assigning it to itself 09:16
m: my @a = ^4; say (@a = @a.rotate) 09:17
camelia rakudo-moar 26e351: OUTPUT«[1 2 3 0]␤»
lizmat m: my @a[4] = ^4; say (@a = @a.rotate)
camelia rakudo-moar 26e351: OUTPUT«(Mu)␤»
lizmat ^^ another difference
09:20 bjz left 09:21 bjz joined, rindolf left, dogbert17 left 09:25 AlexDaniel joined 09:27 bjz_ joined, bjz left 09:38 pmurias joined
pmurias jnthn: ping 09:38
jnthn: is settypecheckmode with TYPE_CHECK_CACHE_THEN_METHOD actually used/usefull for anything? 09:40
jnthn: when doing nqp::istype(obj, type) that flag is taken from the type while the istype check is called on the obj.HOW and looks up in the obj cache 09:42
09:48 bjz joined 09:50 brillenfux joined, bjz_ left 09:52 TEttinger left
brillenfux hi, I've been on Linux systems the last ten years so.. how useful is Rakudo on Windows systems? how dependent on POSIX is Perl 6? 09:56
Ulti gist.github.com/MattOates/c5879a07b1ef2c013097 compare the numbers at the bottom for this year vs last year 09:57
arnsholt Those are good, right? 09:59
Ulti yup
arnsholt Was a bit disoriented by differences in x-axis =)
Ulti yeah I should redo the parallel ones with whatever promise syntax works now 10:01
10:02 wamba joined
gfldex brillenfux: it does not depend on POSIX at all. There is no fork in Perl 6. You may get problems with file permissions and notifications may not work well (what is a win32 problem). 10:02
10:03 AlexDaniel left 10:05 domidumont left
jnthn pmurias: Don't think we currently have any kinds of type that need it 10:07
pmurias: However, it is available through Metamodel::Primitives
It's potentially useful also, if you have a situation where you can't pre-populate a cache of all possible matches, so the absence of something in there doesn't mean the answer should be "no" 10:08
10:08 domidumont joined
brillenfux gfldex: okay, any idea what to read to expand those insights? 10:15
dalek c: 4088900 | gfldex++ | doc/Language/typesystem.pod6:
explain coersion and hint at Cool
10:19
synopsebot6 Link: doc.perl6.org/language/typesystem
gfldex brillenfux: see github.com/rakudo/rakudo/tree/nom/src/core/IO
brillenfux gfldex: alright, true. thanks :) 10:20
gfldex brillenfux: you start with $*SPEC what points to docs.perl6.org/type/IO$COLON$COLONSpec 10:22
brillenfux: also, expect anything on win32 to be rather untested
pmurias jnthn: btw the docs on the :authoritative for configure_type_checking are incorrect 10:23
brillenfux gfldex: I see
10:24 domidumont left
jnthn Quite a few Windows-specific fixes have gone in during recent times (heck, I did a couple of 'em), so it's certainly actively maintained. But yes, suspect smaller userbase to discover stuff than on Linux/OSX. 10:25
The threading stuff is arguably more stable on Windows. :P 10:26
(Mostly 'cus you get away with more. :))
pmurias: Feel free to tweak 'em if you've time 10:27
pmurias jnthn: TYPE_CHECK_CACHE_THEN_METHOD is currently "objects might be of this type despite what their type caches say" rather then "this type cache is not exhaustive" 10:28
jnthn: is that a really intended or a bug?
jnthn How are those two different? 10:29
If the type cache is not exhaustive, you can't rely on it to say "no, it's not of this type", so have to do the full-blown check
10:29 jsimonet left
pmurias jnthn: when doing nqp::istype($obj, $type) the flag is taken from $type 10:30
10:30 jsimonet joined
pmurias jnthn: re how are those two different, it's "all type caches are not exhaustive, if this type isn't in any one of them call istype" 10:31
brillenfux jnthn: thanks for the insights :) 10:33
10:33 labster left
pmurias s/call istype/call type_check/ 10:33
jnthn: it's like if in the method cache we set the "is not authoritative" flag on the method 10:34
dalek c: 75f4ef3 | gfldex++ | doc/Type/Cool.pod6:
add contains to table
10:35
synopsebot6 Link: doc.perl6.org/type/Cool
pmurias jnthn: should I nopaste a test case illustrating the difference? 10:40
jnthn pmurias: You can, though I see the issue...bit too busy with $dayjob to really have an answer, but a quick grep through NQP/Rakudo sources suggest our own meta-objects don't actually use it 10:41
DrForr For those of you not on FB/Twitter: I've been accepted to OSCON Austin 2017 and Open Source Days in Copenhagen. 10:42
10:45 nadim joined, nadim_ left
pmurias jnthn: ok, I'll refrain from implementing that mode on the js backend 10:46
10:47 domidumont joined 10:50 pierre_ left
dalek c: fd6a2cb | gfldex++ | doc/Language/typesystem.pod6:
add examples for coersion
10:51
synopsebot6 Link: doc.perl6.org/language/typesystem
10:52 bjz left 10:55 bjz joined
dalek c: af5f3ad | gfldex++ | doc/Type/Proc/Async.pod6:
show how to add exception handler while tapping
10:59
synopsebot6 Link: doc.perl6.org/type/Proc/Async
c: 9e8265d | gfldex++ | doc/Type/Supply.pod6:
fix bad copypasta, also the callback doesn't have to be a method
synopsebot6 Link: doc.perl6.org/type/Supply
11:19 rurban left 11:22 rurban joined 11:24 zakharyas joined 11:30 maybekoo2 left 11:32 pierre_ joined 11:39 domidumont left, domidumont joined
Xliff \o 11:55
Has anyone had a chance to look at this bug: rt.perl.org/Ticket/Display.html?id=130095
moritz it seems zoffix has had a chance to look at it 11:57
Xliff Also, does anyone have an idea as to the best way to terminate a class implementing HTTP::Server::Simple?
11:57 ggoebel joined
moritz the class is terminated by the closing curly 11:58
Xliff Even if the run method is invoked? 11:59
That's not the impression I get from the examples. Take a look at this one: github.com/gfldex/http-server-simp...e-base.pl6 12:00
12:00 rurban left
Xliff So if I do: my $s = MyServerClass.new; my $p = start { $s.run } 12:01
If I "await $p" the server will sit there and process requests, right? 12:02
12:02 sufrostico joined
Xliff I'm still trying to pick up Promises, Suppliers and Supplies. 12:02
gfldex yes, there is no way to terminate it from the outside. await will block
moritz then don't await on it 12:05
dalek c: 8fcc090 | coke++ | doc/Language/typesystem.pod6:
remove trailing whitespace
synopsebot6 Link: doc.perl6.org/language/typesystem
c: f643d01 | coke++ | / (2 files):
fix spelling, grammar, ignore new code
moritz you do do a my $exit-promise = Promise.new; await Promise.anyof($p, $exit-promise) 12:06
and when you want the server to stop, you do $exit-promise.keep(True)
gfldex Xliff: you will have to subclass and overload HTTP::Server::Simple.net_server
moritz: is the thread actually terminated? It may be sleeping on $!listener.accept 12:07
timotimo it'd be kinda nice to have HTTP::Server::Simple and others offer a "please stop the server now" thing 12:08
gfldex do signal handlers work inside threads?
lizmat gfldex: afaik, signal handlers have their own thread 12:09
moritz gfldex: I have no idea 12:13
12:13 nadim_ joined
lizmat m: signal(SIGINT).tap: { say $*THREAD; exit }; say $*THREAD; sleep 2; qqx/kill -{+SIGINT} $*PID/ 12:13
camelia rakudo-moar cd765e: OUTPUT«Thread #1 (Initial thread)␤qx, qqx is disallowed in restricted setting␤ in sub restricted at src/RESTRICTED.setting line 1␤ in sub QX at src/RESTRICTED.setting line 11␤ in block <unit> at <tmp> line 1␤␤»
12:13 seatek left
lizmat hmmm 12:13
$ 6 'signal(SIGINT).tap: { say $*THREAD; exit }; say $*THREAD; sleep 2; qqx/kill -{+SIGINT} $*PID/'
Thread #1 (Initial thread)
Thread #3
12:17 nadim left
gfldex we would need a non-blocking IO::Socket::INET (or have a timeout on select). Generally we don't got a mechanism to wake up a thread and let it handle a signal of sorts. 12:17
moritz the non-blocking IO::Socket::INET is called IO::Socket::Async 12:21
gfldex moritz: is it non-blocking both from the outside and the inside? 12:24
Xliff gfldex: Ack! If I can't terminate it, that's a bit of a problem. 12:26
I will try to test moritz's theory when I get a chance.
My back is killing me and I can't sleep. 12:27
gfldex IO::Socket::INET.accept should sport a timeout by exposing the OS ability to have such a timeout (not sure if/how that works in win32)
12:28 rurban joined
Xliff Oh. Missed the bit about net_server. Will look into that, too. Thanks. 12:30
moritz gfldex: I think you can close an IO::Socket::Async
jnthn Yes, if you .close the tap then it'll stop listening. That's tested.
lunch & 12:35
dalek c: 20f95fc | gfldex++ | doc/Type/Blob.pod6:
doc utf8-c8
12:37
synopsebot6 Link: doc.perl6.org/type/Blob
gfldex many new things where learned today :)
12:44 rurban left 12:46 nadim joined 12:47 rindolf joined 12:48 nadim_ left 13:12 bjz_ joined, mr-foobar joined 13:13 bjz left 13:18 canopus left 13:23 canopus joined 13:25 nowan left 13:31 araujo left 13:32 araujo joined 13:35 nowan joined 13:39 rurban joined 13:40 bjz_ left, rurban1 joined 13:42 rurban2 joined
perlpilot idly wonders if there's anything interesting that bdf can say about LP6 that could make as an advent article 13:43
viki huggable: advent
huggable viki, github.com/perl6/mu/blob/master/mi...6/schedule
13:44 rurban left
perlpilot I guess no one cared for topic brain storming this year 13:44
13:44 rurban1 left
DrForr I think he's still mulling the TOC; I gave him a lot to digest when we were talking about it. 13:47
[Coke] dalek source?
timotimo i can imagine it'd be cool to have one or two posts about NativeCall + fortran and/or Rust 13:48
perlpilot indeed
timotimo i personally know zero about fortran, and one about Rust
dalek : bf69367 | (Will Coleda)++ | misc/perl6advent-2016/schedule:
Claim a slot.
viki [Coke]: it's on hack in /home/dalek/dalek
perlpilot That k-mers article would have made a nice advent post too ;)
[Coke] viki: there's a repo somewhere, no?
viki agreed
[Coke]: no idea 13:49
DrForr I've got a mini-book on Rust :)
[Coke] viki: got it (and the repo from the checkout), thanks.
viki .ask kyclark would you be interested in writing a Perl 6 Advent ( perl6advent.wordpress.com/ ) blog post this year? Add yourself to schedule: github.com/perl6/mu/blob/master/mi...6/schedule 13:50
yoleaux viki: I'll pass your message to kyclark.
viki [Coke]: what is it?
[Coke] git://github.com/Infinoid/dalek-plugins.git
viki huggable: dalek source :is: github.com/Infinoid/dalek-plugins
huggable viki, Added dalek source as github.com/Infinoid/dalek-plugins
timotimo wow, that's old :) 13:51
perlpilot huh ... trying to think up something I could do for an advent post, I was looking back at past articles. It's a little bit amazing that we've been doing Perl 6 Advent for 7 years 13:55
13:55 grondilu left
timotimo yes, quite! 13:55
maybe we can find something that's only sensible to try now that we've had the speed improvements we've had 13:56
13:57 grondilu joined
[Coke] takes day one to give everyone else one more day to think about it. 13:58
perlpilot Even just a look back at speed compared with last year might be interesting. Take Zoffix's graph, look at a couple of programs on year-ago rakudo as compared with today, then extrapolate those programs into next year
viki was hoping for TimToady to claim Day #1 and do some sort of State of The Union type of thing...
perlpilot viki: That's my hope every year, but ... you can see how often that's worked out :) 13:59
viki :}
timotimo zoffix has a graph?
viki timotimo: the one I posted about estiting for next year
timotimo State of the Union Types?
oh, that one
viki twitter.com/zoffix/status/796810512986238978 14:00
timotimo only 15 days to go until the advent calendar month starts :o
viki: have you tried what happens when you use more than one year of data? i *think* we've had tux's benchmark before that
it'll probably make the outcome a bit less optimistic :P
perlpilot trend lines are funny that way 14:01
timotimo but as always, there's lies, damned lies, and benchmarks/statistics/plots/...
viki Well, even now R² is .79 :) Not exactly perfect fit
timotimo mhm
timotimo BBIAB
14:01 Ven joined
viki And I don't really want to take older data, because it represents unstable language. 14:02
So it's like comparing apples and... pineapples :)
Ven well met, #perl6! I see it's that time of the year we advent again :).
also TIL pmurias worked on a CL backend for niecza in ~2011.. 14:03
viki Yup. Add yourself to the schedule: github.com/perl6/mu/blob/master/mi...6/schedule
perlpilot Also, if anyone needs a wordpress account, many of us are admins who can give it. 14:06
(it would be neat to get some of the people who joined us within the last year to write some advent articles) 14:07
14:09 cdg joined 14:11 kurahaupo__ joined, rindolf left 14:14 rurban2 left 14:15 rindolf joined 14:17 pierre_ left
Ven viki: I'm not sure what to talk about atm :) 14:21
viki Ven: sign up for a spot anyway. 14:24
Ven it's okay, it's okay :). 14:29
sorry to pdcawley++ as well, who posted a question on one my advent post last year – and to which I never replied (I never got a notification)...
14:29 skids joined
[Coke] viki: I'm happy to switch out for a later day, no worries. 14:32
14:36 danlei joined
[Coke] (will add a note to that effect) 14:38
danlei hi! is there a way to access the REPL object in a running repl?
14:38 cpage_ left
dalek : 8850c3c | (Will Coleda)++ | misc/perl6advent-2016/schedule:
let someone else steal #1 if they want.
14:38
danlei or rather: is the functionality from the Completion role somehow accessible at the repl? doesn't look like it, but I'm not very experienced in perl6. 14:42
timotimo if you get a backtrace from your code, and have --ll-exception on your perl6 commandline, you can see what frames are in dynamic scope, and all dynamic variables (i.e. those with a star in them) will be available to your code 14:44
that could help guide your question
danlei thanks, I'll have a look 14:45
timotimo www.reddit.com/r/gonwild/ - oh jesus. i love you, internet 14:48
"Gonwild is a place for closed, Euclidean Geometric shapes to exchange their nth terms for karma; showing off their edges in a comfortable environment without pressure.
tadzik ahahahahh 14:49
timotimo a community for 7 years ... o_O
this is incredible
my sides! *cough*
14:51 jonas2 left
Ven timotimo: beautiful. 14:54
I wasn't sure I wanted to click on that "I'm 18". I verified the URL... 14:55
timotimo it's obviously part of the joke :)
14:58 neuraload left
timotimo desert bus is currently doing a random four chords sing-along with suggestions from the stream chat 15:01
dalek osystem: b8e7410 | jnthn++ | META.list:
Add File::Ignore.

See github.com/jnthn/p6-file-ignore for details.
15:03
15:03 zakharyas left, zakharyas joined
jnthn Missed that one while working on DayJob::Prototype. :) 15:03
DrForr Birdplane? Take your Canvas Bags 15:04
15:04 sufrostico left
timotimo take your canvas bags is a fantastic song 15:04
15:06 sufrostico joined 15:07 zakharyas left 15:08 brillenfux left, Ven left 15:14 araujo left 15:15 araujo joined
tadzik to the suuupermarket 15:16
DrForr Just thinking of four-chord songs; Axis of Awesome has a good 'un. 15:19
15:22 domidumont left
timotimo correct 15:23
www.youtube.com/watch?v=FtVprVO9Uas - square enix also has one for final fantasy 6 15:24
15:24 domidumont joined 15:27 domidumont left 15:31 sufrostico left, domidumont joined 15:32 sufrostico joined 15:44 sufrostico left, wamba left 15:45 pmurias left 15:46 sufrostico joined 15:54 wamba joined 15:56 kyclark joined
kyclark I’m willing to sign up for the Advent calendar. How do I do that? 15:57
yoleaux 13:50Z <viki> kyclark: would you be interested in writing a Perl 6 Advent ( perl6advent.wordpress.com/ ) blog post this year? Add yourself to schedule: github.com/perl6/mu/blob/master/mi...6/schedule
15:59 domidumont left 16:00 rurban joined 16:04 cdg left 16:07 nicq20 joined
kyclark OK, it’s possible I did that correctly. 16:08
[Coke] you can edit that file in your browser, even to claim a space.
dalek : 6d774a8 | (Ken Youens-Clark)++ | misc/perl6advent-2016/schedule:
Update schedule
16:17
: 1ee3af0 | (Will Coleda)++ | misc/perl6advent-2016/schedule:
Merge pull request #15 from kyclark/patch-1

Update schedule
16:18 wamba left 16:27 Lucas_One left, Lucas_One1 joined
dakkar I'm looking at jnthn's latest module, github.com/jnthn/p6-file-ignore/bl...Ignore.pm6 16:27
I have a few questions… first: is there really no better way than EVAL to turn a string representation of a pattern into a pattern? 16:28
16:28 cpage_ joined
dakkar in p5 I'd do $pattern=qr{$stringified_pattern} 16:28
16:28 dogbert17 joined
dakkar github.com/jnthn/p6-file-ignore/bl...re.pm6#L30 does $pattern = EVAL("/$stringified_pattern/") 16:28
which looks a bit ugly to me
jnthn You can do /<$pattern>/ too 16:31
I just happen to know it performs a good bit worse
And /<$pattern>/ will do some kind of compilation anyway 16:32
(e.g. like EVAL)
geekosaur has concerns other than ugliness there... can't tell from quick look whether it's got code injection potential or not though
jnthn No, it doesn't 16:33
16:34 sufrostico left
jnthn The lit action method compiles it into a quoted string 16:34
And takes care of escapes and embedded quotes
16:36 sufrostico joined
[Coke] viki: any interest in making your ticket aggregator also pull from other ticket queues? 16:36
(nqp, moar, docs, specs, roast...)
16:40 rurban left, itcharlie joined
dakkar jnthn: ok, I bow to your superior knowledge of the performance issues ☺ 16:40
viki [Coke]: nope. Those already have decent issue trackers (GitHub).
dakkar the other question is: filenames are bytes, not characters. .gitignore matches bytes, not characters. how could a p6 grammar/pattern deal with that? 16:41
[Coke] viki: I'm more concerned about the aggregation bit, but ok.
dakkar (also, what does dir() return?)
viki [Coke]: you're talking about perl6.fail, right? It was always an RTLite UI 16:42
[Coke] Wonder if we could make a perl6 dashboard for issues on github.
viki You can likely construct a URL that would show you all issues for repos of interest.
Like there's a way to show all Issues for Perl 6 organization, for example
16:43 cpage_ left
dalek c: be90f27 | (Zoffix Znet)++ | doc/Type/Str.pod6:
Fix typo

Related to #1011
16:45
synopsebot6 Link: doc.perl6.org/type/Str
jnthn dakkar: The utf8-c8 encoding (which can cope with things that don't decode as utf-8, and round-trip them) is used for dir, so reading the .gitignore or whatever file using that encoding also would get the desired effect without having to worry about anything in the grammar. 16:46
Guess the example in the readme could be tweaked to do that :)
dakkar oh, so things went that way! I guess the bad byte sequences get represented as private codepoints outside of unicode range 16:47
jnthn Ended up doing them using the same machinery as NFG synthetics. 16:48
dakkar sensible for things are mostly utf-8
on the other hand… if I were to write a grammar for a network protocol, where things have to actually be treated as octets (even when they look like utf-8 byte sequences), how would I do that? 16:49
16:50 sufrostico left
gfldex dakkar: matching binary and/or streams is not really supported yet 16:52
jnthn Eventually, we'll make that happen by being able to match a Buf agaisnt a grammar, but today you can get the same effect by just "decoding" the thing as latin-1, and use \x90 style things in your grammar.
dakkar
jnthn (Which is how I've dealt with HTTP header parsing, for example)
16:52 sufrostico joined
dakkar jnthn: I don't know if I should laugh or cry at that, but I realise it's a pragmatic work-around 16:52
gfldex: oh right, there's *also* the problem of streams 16:53
jnthn Well, it's basically how matching against a Buf is going to end up working anyway.
dakkar as long as it's encapsulated and people don't get funny ideas about confusing bytes and characters :) 16:54
jnthn The key difference being that your Match object would also give you back Bufs
dakkar yep, encapsulated enough 16:55
16:56 abraxxa left
jnthn will maybe take a look at that some once he's done with his current push on concurrency bugs...or just needs a break from those. :P 16:56
16:56 sufrostico left
viki reads perl6advent.wordpress.com/2014/12/...ong-right/ 16:58
"Self-clocking code produces better syntax error messages.".... What's self-clocking code?
jnthn viki: Pretty sure it's a reference to how we always know whether we expect an infix or a term
16:58 sufrostico joined
viki Ah 16:58
jnthn (A load of error detection hangs off two terms in a row)
It's also why TimToady was so reluctant on $foo .bar .baz (whitespace between methods, so you can chain them over multiple lines) 17:00
iirc, anyway :)
I think eventually the popular demand for that was overwhelming, and the fudge was to consider . as a weird kind of infix in this case :)
viki I'm glad peer pressure won :) 17:01
dakkar is really behind on p6, he still thought unspace was necessary
geekosaur likewise, and tbh that . *feels* infix to me. which is why the old behavior was so annoying
well, part of it 17:02
jnthn Yeah, having to stick \ on the end of lines did somewhat clutter up otherwise neat code 17:03
17:06 sufrostico left, cdg joined 17:08 sufrostico joined
harmil_wk That \ is one of the things I hate most in the Python community. There are lots of people that prefer function\<newline>(parameters) for long lines... I want to murder them so badly. 17:10
17:10 labster joined
harmil_wk object\<newline>.method is at least not misleading, as it looks like a variable... 17:11
17:13 girafe joined 17:20 rurban joined 17:25 nicq20 left
viki L>K<:U SRAYUL<SMDAHJSDF<AKSHYRFASLKRT<ASYURTAES>L<KTRWEYH TGEWTG 17:27
That was my substitute for a vitriolic comment to AlexDanial I was contemplating of writing github.com/perl6/doc/issues/1011#i...-260702621
viki instead hits "unsubscribe" button
17:28 wamba joined
geekosaur actually agrees with Alex there. if it's not in a textual format, it does not have a base 17:29
viki Well, fix the text then? 17:30
geekosaur (or rather, its base is determined by the hardware representation, which on all supported platforms is base 2. unless we added s390 and used BCD for Numeric there for some reason)
viki I see 94 more issues opened in perl6/doc since I unsubbed from that repo a few months ago and they're all needless bikeshedding and a bunch of people "wondering" about stuf. 17:31
I implemented the method and documented how I understand it. If "Does not sound right." just fix it. 17:32
Wasn't forgiveness > permission mantra all about that in the first place? So people do stuff instead of waiting for some mysterious authority's stamp of approval? 17:34
</rant>
17:35 Actualeyes left
mst viki: have you watched my talk "a decade of dubious decisions" ? 17:38
viki mst: nope
What's the URL?
mst sec 17:39
geekosaur is waiting on someone in #xmonad who doesn't know about mod-q /o before trying to work on something else
mst www.youtube.com/watch?v=BaeXXA5UyYg
fairly near the start there's a section about "shouting 'go'"
I suspect right now it will make a lot of sense 17:40
(like, in the first 10 mins, I reckon, if you can't be bothered watching it that far I can try and find the exact moment)
17:41 sufrostico left, dakkar left
Xliff Hrm. Closing $!listener in my HTTP::Server::Simple subclass didn't seem to terminate the loop in net_server() 17:43
Looks like I will have to override it.
17:43 sufrostico joined
mst viki: note also if you can't be arsed entirely I can summarise the point, but I did a better job of it in the talk :) 17:47
18:05 FROGGS joined 18:07 lostinfog joined, gregf_ left 18:08 chris2 left, kyclark left
harmil_wk Maybe I'm brain farting, but is there a way to do the equivalent of Python's "hash.get("foo", "bar") where "foo" is the key to look up and "bar" is the default value to return if "key" does not exist? Given that hashes can have hash-wide defaults, I don't see any way to do this... 18:09
Note that Python calls them dicts, but same-same.
viki harmil_wk: %h<foo>//"bar" ? (checks for definedness tho) 18:10
geekosaur (%h<foo> // 'bar')
heh
harmil_wk But a hash with a default will only be undefined if the value is undefined.
Not if the key does not exist
viki m: my %h is default("meow" 18:11
camelia rakudo-moar c5d33a: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in parenthesized expression; couldn't find final ')' ␤at <tmp>:1␤------> 3my %h is default("meow"7⏏5<EOL>␤ expecting any of:␤ statement end␤ statem…»
viki m: my %h is default("meow"); say %h<foo>
camelia rakudo-moar c5d33a: OUTPUT«meow␤»
viki m: my %h is default("meow") = foo => "bar"; say %h<foo>
camelia rakudo-moar c5d33a: OUTPUT«bar␤»
viki m: my %h is default("meow") = foo => "bar"; say %h<foo meows>
camelia rakudo-moar c5d33a: OUTPUT«(bar meow)␤»
harmil_wk I think %hash{"foo"}:exists ?? %hash{"foo"} !! "bar"
viki :S 18:12
harmil_wk Wait, what is that %h<foo meows> doing?
viki Didn't you just say that default would apply only when the value is undefined, not when the key doesn't exist?
harmil_wk: it's a slice returning values of two keys
harmil_wk Right
viki m: my %h = foo => "bar"; say %h<foo meows>:exists:k 18:13
camelia rakudo-moar c5d33a: OUTPUT«Unsupported combination of adverbs (exists k) passed to slice on %h␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
viki orly
m: my %h = foo => "bar"; say %h<foo meows>:exists:v
camelia rakudo-moar c5d33a: OUTPUT«Unsupported combination of adverbs (exists v) passed to slice on %h␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
viki m: my %h = foo => "bar"; say %h<foo meows>:v
camelia rakudo-moar c5d33a: OUTPUT«(bar)␤»
viki m: my %h = foo => "bar"; say %h<foo meows>:v("fooos")
camelia rakudo-moar c5d33a: OUTPUT«(bar)␤»
viki oh well
harmil_wk Right, so if I have a hash %h and I want to get back the value at key "foo" but if there is no such key, I want "bar"... you set a global default on the hash, which isn't the same operation 18:14
I think %hash{"foo"}:exists ?? %hash{"foo"} !! "bar" is the only way... king of klunky... wish Perl has a Python-like method to get the value at a key with a default.
FROGGS o/ 18:15
harmil_wk Sorrry was typing while you were exampling
FROGGS: hey 18:16
viki harmil_wk: I've actually never used :exists in Perl 6.
harmil_wk If there's a default on the hash, it's the only way to know if a key exists...
viki harmil_wk: so you wanting to this this ternary that checking for existence and doesn't something else if not kinda feels strange. What's your usecase for it?
harmil_wk And if you get a hash as input to a function or method, you must assume it can have a default
viki %hash<foo> // "bar" is a more common paradigm, IMO, since a hash would not have an undefined value that I'm somehow also finding useful at the same time. 18:17
harmil_wk But if %hash has a default, that fails 18:18
viki harmil_wk: what do you mean by "has a default"? The is default() trait? 18:19
harmil_wk In fact, for that reason, I think we should really caution people never to use it. (yes, the default trait)
viki I always use it.
If someone set is default(), that means my %hash<foo> // "bar" still works, since I'm getting teh default value for key "foo" 18:20
harmil_wk Do you use that convention even when you don't know where the hash came from and can't control whether or not it defaults? That sounds fragile...
[Coke] why? so people don't have to use :exists when they mean it?
harmil_wk [Coke]: who were you asking?
[Coke] you. 18:21
why recommend people don't use default?
gfldex viki: it's no wonder that so many unreasonable tickets persist. The reasonable ones are getting closed.
18:21 sufrostico left
harmil_wk So, I was saying that :exists is the only correct way to ask that question... I'm not sure what you're asking 18:22
[Coke] I haven't done a sweep of doc tickets in a while, will try to do so this week.
You said " In fact, for that reason, I think we should really caution
people never to use it. (yes, the default trait)"
harmil_wk [Coke]: sorry, that's ambiguous. I was recommending against the use of the // defaulting operator not the default trait
[Coke] danke.
18:23 chris2 joined
harmil_wk Oh, I think the default trait is fine. But it means you can't use the defaulting operator if you don't own the hash in question. 18:23
gfldex viki: the only problem I have with that is that I found myself starting to ignore certain users and I can't predict if that will turn out to be a shame.
harmil_wk (at least not without being very clear about what you mean)
18:23 sufrostico joined
viki harmil_wk: I use whatever semantics work for my code. The // is not "a lazy way to write :exists" in my mind, but that an undefined value is meaningless to my current code. I don't care if it's getting satisfied through a key's existence or through it having a default value 18:24
18:26 rurban left
harmil_wk viki: sure, in some use cases, but that wasn't what I asked. What I asked was how I get the value at key "foo" or the value "bar" if key "foo" doesn't exist... I think the only way to do that is with a multiple-expression test and return, which is kind of odd, but okay. 18:26
viki gfldex: as I stated my unpopular minority opinion before: there are tickets that should be closed simply because there's no one bothered enough to do anything about it. The fact that it's still open after X amount of time is an indication that a ticket is not imporant. 18:27
Mojolicious's team applies this well. Their Issue/PR is nearly always empty. 18:28
Having 200 open tickets for "unreasonable" issues doesn't serve much of a benefit IMO. 18:29
mst right, while I've occasionally been annoyed by one of my tickets being closed because of that, once I got over my annoyance it was clear that, on balance, they'd made the right call
just generally takes me 24h to stop going "grr" and realise they're right ;)
18:29 sufrostico left
viki It actually made me pay more attention to comments on my PRs because I knew if I took a break and leave it off, it'd get closed due to lack of decision. 18:30
mst heh, neat
[Coke] It's ok to close tickets that are unreasonable/unimplemented/go against the project goals. It's not ok to close them because they've been open and no one has touched them.
(so, going through the tickets to mark the ones that are unreasonable and closing them out is a good thing.) 18:31
viki [Coke]: yeah hence my "unpopular minority" qualifier :)
[Coke] viki: I just closed one! ... it was yours. and reasonable, but was kind of done. :|
18:31 sufrostico joined, iH2O joined
viki Cool :) [Coke]++ 18:31
masak 007's queue of open issues keeps non-decreasing monotonically. haven't considered it a problem so far. 18:32
it kind of reflects that the language is becoming more capable, and I have more plans for it.
iH2O perl6 is already the Swiss knife of languages 18:33
masak iH2O: it's a Swiss butter knife
18:33 troys joined
[Coke] #778 - for windows compatibility, going to suggest .p6 for runnable perl6 code. 18:35
github.com/perl6/doc/issues/778
18:36 kyclark joined
masak [Coke]: +1 18:36
viki harmil_wk: it's almost like the :v adverb could take a value. But I don't know if it's too magical 18:37
18:37 sufrostico left
viki harmil_wk: like %h<foo>:v("meow"), where it gives you "meow" for keys that don't exist. 18:37
Though, now that I think of it... how would that work one slices? :) Too complex
dalek c: cf8bf43 | coke++ | doc/Language/modules.pod6:
Fix #778
18:38
synopsebot6 Link: doc.perl6.org/language/modules
18:38 sufrostico joined 18:39 domidumont joined
viki m: sub postcircumfix:<❰ ❱> ($h, *@keys) { dd [$h, @keys]; return @keys.map: {$h{$_}:exists ?? $h{$_} !! "bars"} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱ 18:42
camelia rakudo-moar ee8ae9: OUTPUT«[{:foo(42)}, ["foo", "meow"]]␤(42 bars)␤»
viki harmil_wk: ^ :)
18:42 iH2O left
viki m: sub postcircumfix:<❰ ❱> ($h, *@keys) { @keys.map: {$h{$_}:exists ?? $h{$_} !! "bars"} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱ 18:42
camelia rakudo-moar ee8ae9: OUTPUT«(42 bars)␤»
viki m: sub postcircumfix:<❰ ❱> ($h, *@keys, :$default) { @keys.map: {$h{$_}:exists ?? $h{$_} !! $default} }; my %h is default("meows") = foo => 42; say %h❰<foo meow>❱:default("FOOS!") 18:43
camelia rakudo-moar ee8ae9: OUTPUT«(42 FOOS!)␤» 18:44
harmil_wk viki: nice. I think that makes the case that regular hash subscripting should take :default 18:45
But very nice implementation
viki m: use MONKEY-TYPING; augment class Hash { multi method AT-KEY (*@keys, :$default!) { @keys.map: {self{$_}:exists ?? self{$_} !! $default} } }; my %h is default("meows") = foo => 42; say %h<foo meow>:default("FOOS!")
camelia rakudo-moar ee8ae9: OUTPUT«Unexpected named argument 'default' passed␤ in block <unit> at <tmp> line 1␤␤»
timotimo why default when there's //?
viki shrugs
timotimo: becuause that checks for definedness, not existence :)
timotimo fair enough 18:46
harmil_wk timotimo: // doesn't work in the face of a hash with a default trait.
and what viki said...
viki timotimo: Yeah, I said earlier that // works for many cases
timotimo ok
need to go grocery shopping now
even though the cat just lied down next to me :( 18:47
harmil_wk timotimo: Just Google Express it ;-)
timotimo the what now?
harmil_wk Google Express is their bulk delivery service. My company uses it to stock the kitchens.
timotimo available outside the US? 18:48
harmil_wk Not sure.
timotimo also, bulk may not be what i need :)
harmil_wk You need all the Ramen! ;)
timotimo what do i do with 500kg of mixed pickles?
dalek c: c18f617 | coke++ | doc/Language/faq.pod6:
Re-word spec faq

Fixes #772
synopsebot6 Link: doc.perl6.org/language/faq
harmil_wk They're mixed. The only right solution is to sort them.
timotimo clearly
18:51 zakharyas joined
[Coke] m: my $a = 3; $a min=5; say $a; $a min=2; say $a; 18:56
camelia rakudo-moar ee8ae9: OUTPUT«3␤2␤»
dalek c: b28c487 | coke++ | doc/Language/operators.pod6:
Remove reference to old RT

The example works, the RT is closed, the note does nothing.
Fixes #623
synopsebot6 Link: doc.perl6.org/language/operators
18:57 sufrostico left
viki [Coke]++ doing stuff with tickets. 18:57
18:58 itcharlie left 18:59 domidumont left, setty1 joined
[Coke] viki: I'm afraid it's going to be worse when I'm done, I'm closing the easy ones! :) 19:00
19:01 maybekoo2 joined
viki mst++ well, that was a very entertaining talk :) 19:04
mst :D 19:07
viki: the "sometimes somebody has to shout go" phenomenom is important to remember when cat herding stuff
viki I'm definitely making a mental note.
dalek ecs: a9f8526 | (Stéphane Payrard)++ | S19-commandline.pod:
suppress mention of dormant or defunct projects

Update for the current state of rakudo
19:11
c: 58c4b20 | (Athos Ribeiro)++ | doc/Language/unicode_entry.pod6:
Mention smartquotes

Mention unicode quotes. See #332 for reference
19:13
synopsebot6 Link: doc.perl6.org/language/unicode_entry
c: 0494ba3 | (Zoffix Znet)++ | doc/Language/unicode_entry.pod6:
Merge pull request #996 from athos-ribeiro/smartquotes

Mention smartquotes
synopsebot6 Link: doc.perl6.org/language/unicode_entry
c: 8da0704 | (Vynce Montgomery)++ | doc/Language/syntax.pod6:
Clarifications on numeric literals

Belief in negative numeric literals creates false expectations regarding precedence conflicts (see #971)
19:16
synopsebot6 Link: doc.perl6.org/language/syntax
c: d932df6 | (Zoffix Znet)++ | doc/Language/syntax.pod6:
Merge pull request #991 from VynceMontgomery/patch-3

Clarifications on numeric literals
synopsebot6 Link: doc.perl6.org/language/syntax
19:16 RabidGravy joined
dalek c: 9e1d756 | (Sterling Hanenkamp)++ | doc/Type/Array.pod6:
Resolves #977: Correct callable args on splice
19:19
synopsebot6 Link: doc.perl6.org/type/Array
c: 0d4390f | (Zoffix Znet)++ | doc/Type/Array.pod6:
Merge pull request #978 from zostay/splice-callable-args

Resolves #977: Correct callable args on splice
synopsebot6 Link: doc.perl6.org/type/Array
19:19 kyclark left 19:23 darutoko left, kyclark joined
viki Could use more eyes for this PR: github.com/perl6/doc/pull/963 19:24
I don't like it, but maybe it's just me.
19:24 cale2 joined
cale2 hello world 19:24
viki \o 19:25
cale2 I downloaded the 64bit msi installer, but `perl6` and `panda` both don't show up in my command prompt
viki hm
cale2 My PATH was automatically modified as well. I confirmed that the variables are in the PATH
viki And does the modified PATH point to the location where the executables were installed to? 19:26
cale2 I downloaded and ran the 5th file down: rakudo.org/downloads/star/ 19:27
viki Yeah, that looks right.
viki needs to learn the Rakudo Star release process :(
Ignorance hurts :(
cale2 oops 19:28
viki ?
cale2 The MSI installed the path variables in my user path and not the system path
added it to system PATH and it works :)
viki \o/ 19:29
RabidGravy HARR!
cale2 Does Perl6 have a built in JSON module?
RabidGravy no
cale2 I see a lot of JSON modules on the panda list, but where do I find what is already built in?
viki cale2: it technically does have a partial implementation of a JSON encoder, but it's internal and shouldn't be used. 19:30
RabidGravy the Rakudo Star has JSON::Fast
viki Yeah, JSON::Fast is good
cale2 Interesting. Is perl6 trying to stay away from cargo cults or does it not have a standard library?
harmil_wk viki: commented in a general sense about ordering of what I would introduce the user to first (e.g. the example first, then the explanation of the gory details)
19:30 nicq20 joined
harmil_wk cale2: Are those two disjoint 19:31
masak m: say to-json(42)
camelia rakudo-moar ee8ae9: OUTPUT«42␤»
harmil_wk ?
masak (and this gives a deprecation warning locally)
viki cale2: it comes with a couple of modules, like NativeCall and Test, but no "standard library" no.
masak m: say to-json([1, 2, { foo: 42}])
camelia rakudo-moar ee8ae9: OUTPUT«Can't serialize an object of type Block␤ in block <unit> at <tmp> line 1␤␤»
cale2 But Rakudo Star comes packaged with some of the more popular 3rd party modules?
masak m: say to-json([1, 2, { foo => 42 }])
camelia rakudo-moar ee8ae9: OUTPUT«[␤ 1,␤ 2,␤ {␤ "foo" : 42␤ }␤]␤»
viki cale2: correct.
masak argh, too much JavaScript lately ;)
cale2 Is there a list of modules that it comes with?
viki cale2: and ignore what masak is showing right now. That function is the internal one I mentioned and it was made even more internal. The bot just has deprecation warnings disabled. 19:32
harmil_wk cale2: that depends on what you mean by "modules that it comes with"... do you consider "Hash" to be a module it comes with? It's technically a module...
RabidGravy cale2, github.com/tadzik/Task-Star/blob/m.../META.info has the full list
viki harmil_wk: no, it's not a module. 19:33
m: use Hash;
camelia rakudo-moar ee8ae9: OUTPUT«===SORRY!===␤Hash is a builtin type, not an external module␤»
viki RabidGravy: is that still up to date tho?
cale2 I guess Panda won't double install something if you already have it, right?
RabidGravy viki, not sure 19:34
viki cale2: right
harmil_wk viki: Hash.pm is a module... it's just not user-"use"able. github.com/rakudo/rakudo/blob/nom/...re/Hash.pm
That was why I was asking for clarification
RabidGravy it's part of the core
cale2 Cheers to kyclark for his WIP book kyclark.gitbooks.io/metagenomics/c...world.html
viki harmil_wk: no it's not. That file is combined into a single huge setting file when you compile Rakudo
kyclark Thanks! 19:35
harmil_wk viki: I'm well aware how it's compiled, yes.
That module, that is :)
cale2 kyclark: are you not happy with any ports of perl5 web frameworks yet? I thought someone was porting mojo or something... 19:36
harmil_wk It's not really a Module object in the core, if that's what you mean
19:37 ufobat left
viki harmil_wk: I meant that it's not a module. It's a core type. 19:37
kyclark cale2: I still use P5/Mojo for web development. I’m extremely tied to my tools like DBIx::Schema, SQL::Translator, DBI, DBD::mysql, and Mojolicious. I will try to do my part to pull those along.
viki If you're so aware of how it's compiled, maybe you should not confused new users by asking them if they consider Hash.pm a module ~_~
harmil_wk Sigh, nevermind.
19:37 harmil_wk left 19:38 domidumont joined
kyclark blogs.perl.org/users/ken_youens-cla...erl-5.html 19:38
viki Rage quit. nice. 19:39
19:39 sufrostico joined
RabidGravy boom! 19:39
19:39 cdg left
RabidGravy shall I do an advent post? 19:40
viki RabidGravy: Yes!
masak RabidGravy: yes, please
RabidGravy and if so what
masak something you like
viki Anything
RabidGravy stuff 19:41
viki kyclark: FWIW Arrays are Cool and you don't need an explicit .elems on them 19:43
m: my @a = ^10; say 2 < @a < 20;
camelia rakudo-moar ee8ae9: OUTPUT«True␤»
viki m: my @a = ^10; say 2 < @a < 4;
camelia rakudo-moar ee8ae9: OUTPUT«False␤»
viki m: my @a = ^10; say @a+2;
camelia rakudo-moar ee8ae9: OUTPUT«12␤»
kyclark OK! 19:46
nicq20 Is there a way to see what threads/promises are currently running?
viki m: say $*SCHEDULER.queue.^methods 19:48
camelia rakudo-moar ee8ae9: OUTPUT«()␤»
viki :/
nicq20 I've been wandering the documentation for a while and have not found much about this. 19:52
viki .tell harmil_wk Well, I've read S11 and it states modules have "support for Perl 6 standard export semantics". Since you can't `use` Hash.pm, those export semantics are unavailable. If I'm wrong, tell me why—don't rage-quit.
yoleaux viki: I'll pass your message to harmil_wk.
viki nicq20: I see the scheduler has a .queue method onto which threads are pushed, but it doesn't appear to be something explorable from user code: github.com/rakudo/rakudo/blob/nom/...er.pm#L166 19:54
m: use nqp; start { sleep 4 }; say nqp::atpos($*SCHEDULER.queue,0) 19:55
camelia rakudo-moar ee8ae9: OUTPUT«(Mu)␤»
viki shrugs
m: use nqp; start { sleep 4 }; say nqp::elems($*SCHEDULER.queue) 19:56
camelia rakudo-moar ee8ae9: OUTPUT«(signal SEGV)»
viki hehehe
19:59 ufobat joined
viki .u non-breaking 19:59
yoleaux U+00A0 NO-BREAK SPACE [Zs] ( )
U+2011 NON-BREAKING HYPHEN [Pd] (‑)
nicq20 viki: Oh, well. Thank for your help! :) 20:00
viki nicq20: you can write your own scheduler tho
and stick it into $*SCHEDULER 20:01
nicq20 viki: Hmm... That could work. Make a new class and inherit the ThreadPoolScheduler? 20:02
viki m: my $*SCHEDULER = class :: is ThreadPoolScheduler { method cue (|) { say "cuing up stuff!"; nextsame;}}.new; await start { say "hi" };
camelia rakudo-moar ee8ae9: OUTPUT«cuing up stuff!␤hi␤»
viki w00t
20:04 tomaw left 20:05 tomaw joined
dalek c: c4f9a3e | coke++ | doc/Language/unicode_entry.pod6:
smart quotes is 2 words
20:06
synopsebot6 Link: doc.perl6.org/language/unicode_entry
c: 78c44e1 | coke++ | doc/Language/unicode_entry.pod6:
Perl 6 requires non-breaking space
synopsebot6 Link: doc.perl6.org/language/unicode_entry
viki [Coke]++ finishing stuff I keept forgetting to finish :) 20:07
20:08 domidumont left 20:09 Tonik joined
dalek : eb2607a | RabidGravy++ | misc/perl6advent-2016/schedule:
Update schedule

Add an advent post
20:10
20:11 espadrine joined 20:12 bjz joined 20:21 kyclark left 20:23 AlexDaniel joined
[Coke] viki: what now? 20:28
viki [Coke]: ?
[Coke] what stuff did I do? 20:29
(that you were going to finish?)
viki [Coke]: oh, I was running make xtest a couple of times and fixing those issues you fixed and kept forgetting about that terminal window
[Coke] ah. :) 20:31
AlexDaniel as for closing things just because nobody cared for them enough – I disagree. Having lots of issues open gives enough room for contributors. And I also don't see how it could be different from rakudo ticket queue (you're not going to say that we should close our eyes on bugs that are hard to solve, right?) 20:34
though I do agree that we can start being slighly more aggressive when closing tickets, just a little bit 20:35
viki Having lots of issues open burns out contributors reading through hundreds of tickets that all end with indecision. 20:36
At least that's the case for me.
I think I went through ~400 tickets before I got fed up.
And it's not about "hard to fix" bugs. It's about tickets that don't really describe a bug or have a bunch of people "wondering" what would the right behaviour be. 20:37
Even to point to a ticket that I think describes a buggy behaviour: rt.perl.org/Public/Bug/Display.htm...et-history 20:39
20:39 cpage_ joined
viki Well, it's marked with @LARRY and from what I understand TimToday himself claimed that was not a bug. So what's the goal of the ticket? 20:39
Is it to solicit more feedback? At which point will it be closed? 20:40
AlexDaniel to find another LARRY, I guess? It has been open for three days, leave it alone
viki What do you mean "you guess"? You opened it! What goal did you wish to achieve by opening the ticket?
20:41 chris2 left
masak I agree it's surprising behavior 20:42
but I also see where TimToady is coming from
viki masak: I don't. Why is the current behaviour not a bug? 20:43
masak basically, if you think grammars and backtracking are going to be best buddies, then you are very confused and need to look into that confusion
AlexDaniel Well, my goal is to get the thing fixed in some way. Now I see two ways: either fix it in rakudo, or document it as a trap. To fix it in rakudo we would need a some sort of a decision, which is kinda there given that there's a comment by Larry, so I'm kinda hoping somewhere deep in my heart that somebody is going to come and save the world
masak TimToady knows this very well
AlexDaniel or, as mentioned already, perhaps there will be some peer pressure ;)
masak I'm only slowly discovering it, the hard way
your (implied) proposed fix seems to be "well, make the grammar backtrack more!" 20:44
which seems misguided
viki Ah
masak good grammars don't backtrack all that much
[Coke] viki: I think part of the issue on that particular ticket (130081) is that larry's decision was linked to, not quoted. makes it harder to find. If larry said it's not a bug, it's not a bug, we can close it out. 20:45
masak doesn't look like a bug to me
basically, you managed to construct a grammar that does not manage its backtracking well. it's a kind of "doctor, it hurts when I do this", although I realize that's not fun to hear :) 20:46
[Coke] leaves it to masak to close out. *tag*
AlexDaniel m: grammar G { regex TOP { ‘a’ || ‘abc’ } }; say G.parse(‘abc’)
camelia rakudo-moar ee8ae9: OUTPUT«Nil␤»
masak hah
AlexDaniel m: grammar G { rule TOP { ‘a’ || ‘abc’ } }; say G.parse(‘abc’)
camelia rakudo-moar ee8ae9: OUTPUT«「abc」␤»
AlexDaniel hmhm
viki :S
masak m: grammar G { regex TOP { <foo> }; regex foo { ‘a’ || ‘abc’ } }; say G.parse(‘abc’) 20:47
camelia rakudo-moar ee8ae9: OUTPUT«Nil␤»
viki Oh, .ws token
20:50 sufrostico left 20:52 sufrostico joined
AlexDaniel masak: I think you've got a point, but I still don't understand this: 20:54
m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] ‘z’ } }; say G.parse(‘abc’)
camelia rakudo-moar ee8ae9: OUTPUT«Nil␤»
AlexDaniel oops
m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] } }; say G.parse(‘abc’)
camelia rakudo-moar ee8ae9: OUTPUT«Nil␤»
AlexDaniel m: grammar G { regex TOP { [ ‘a’ || ‘abc’ ] ‘z’ } }; say G.parse(‘abcz’)
camelia rakudo-moar ee8ae9: OUTPUT«「abcz」␤»
AlexDaniel so why is it ok to try another alternative in one case and not in another?
20:56 chris2 joined
masak I guess the difference is what happens strictly on the inside of the grammar, and what happens at its boundaries, like the extra ^ $ assertions added to the TOP rule from the outside 20:58
nicq20 AlexDaniel: Seems to work if you use a Junction instead of an OR.
arnsholt I thought .parse only anchored to the start?
AlexDaniel nicq20: because ‘abc’ will match first 20:59
nicq20 AlexDaniel: Oh, nm. Right.
masak nicq20: they're not exactly junctions in the regex slang, but you're right. that's because `|` doesn't work by backtracking
arnsholt: nope.
m: grammar G { regex TOP { ab } }; say G.parse("abc")
camelia rakudo-moar ee8ae9: OUTPUT«Nil␤»
20:59 kyclark joined
arnsholt Oh. Never mind me then =) 21:00
nicq20 masak: They are not Junctions?
21:00 FROGGS left, cdg joined, cdg left 21:01 cdg joined 21:02 danlei left
masak nicq20: they are finite automata, shrewdly dressed up with the same syntax as (dis)junctions in the main language. 21:04
nicq20: I've always liked swtch.com/~rsc/regexp/regexp1.html for its clarity and simplicity. if you're curious for more details, I recommend it. 21:05
nicq20 masak: Well, I know what I'm doing for the next half-hour! :)
masak :)
fun fact: the person who wrote that also implemented big parts of the golang compiler infrastructure. 21:06
21:06 bjz left
viki Aside from surprise, there's also an action-at-a-distance thing going on that I don't like. If I subclass a grammar and add a token with || in it, whether it works or not depends on what follows it. As a user, I was told `regex` backtracks and .parse() has an implied $ for a successful match. Do we lose anything by making it implied for all cases? I'm not buying the "you suck at grammars" as an excuse to have 21:06
this special exception
masak not saying anyone sucks. but grammars and backtracking are traditionally not a great combo. 21:08
nicq20 masak: Why not? 21:09
masak I wish I could explain why a bit better. to a first approximation, you want your parse time to be O(n) on the length of the parsed text, not O(2**n)
the latter is what you'll get with enough backtracking 21:10
AlexDaniel by the way
arnsholt Also, when you have many backtracking units interacting, they combine in non-trivial ways
Which makes your grammar hard to reason about
21:11 Tonik left
masak imagine if your compiler slowed down by some factor of `k` for every character you added to your program. you'd call it a bad compiler. 21:11
AlexDaniel in case of [ ‘a’ || ‘abc’ ] ‘z’, how can I prevent it from trying ‘abc’ if ‘a’ matched?
masak this is why automata are great. because they "try all the alternatives at once".
arnsholt AlexDaniel: Wat? 'abc' can't match, unless 'a' matches 21:12
DrForr INTERCAL had something like that; you needed to have a certain preportion of 'DO'/'PLEASE DO' or it would randomly introduce slowdowns.
And if you've got enough cores it can search all the alternatives in constant time :) 21:13
AlexDaniel arnsholt: not sure what you mean
masak DrForr: no, it will simply fail to compile.
nicq20 The slow down makes sense. But why not have the "automata" be the way backtracking works anyway?
masak DrForr: you may be thinking of the dialects of INTERCAL that allow several `COME FROM` on the same label, though. a way to achieve threading.
nicq20 Err... I worded that wrong.
DrForr Oh, right. Still a slowdown in a certain sense :)
arnsholt AlexDaniel: 'a' is a prefix of 'abc'; so if 'abc' matches at a position 'a' will necessarily also match in that position 21:14
masak nicq20: there are two models at play here. one is the sequential/deterministic one, the other is the parallel/non-deterministic one.
nicq20: essentially, that's the difference between `|` and `||`
er, but the other way around :) 21:15
viki Which one is which?
Xliff Does rakudo have modules for HTTPS? HTTP::Client only supports HTTP.
DrForr You can also see it as 'a' followed by \lambda | 'bc' :)
RabidGravy yes
viki Xliff, I know LWP::Simple does HTTPS
AlexDaniel OK, now if that's OK and doesn't count as backtracking, why would .parse not do that as well?
Xliff viki: Thanks! 21:16
RabidGravy both LWP::Simple and HTTP::UserAgent will if IO::Socket::SSL is installed
AlexDaniel masak: that's the question to you I think, because you seem to understand it better
masak <masak> I guess the difference is what happens strictly on the inside of the grammar, and what happens at its boundaries, like the extra ^ $ assertions added to the TOP rule from the outside 21:17
AlexDaniel: ^
AlexDaniel to be honest I didn't understand it 21:18
masak let me rephrase it, then
to you, it seems like an unsightly exception to a rule
to me, it seems that you're expecting grammars to backtrack more than they actually can
AlexDaniel what do you mean by can? In case of [ ‘a’ || ‘abc’ ] ‘z’ it does without any issue 21:19
masak I mean "what are grammars for?" (not backtracking) 21:20
sorry, I'm not explaining this too well
but also, so far I notice (a) complaining that things are not consistent (b) no actual proposed solution :) 21:21
viki masak, I have proposed one. An implicit anchor to end of string 21:22
AlexDaniel ok, so instead of saying that it is not a bug we now admit that it is not consistent but say that we don't have a solution for it, that's an interesting step
so yes, the solution is to have implicit $ on the TOP rule
(or whatever the top rule is)
masak also also, for the record, I'm not defending the inconsistency as such -- more like explaining why it's not in the best interest of grammars to encourage more backtracking
viki And my question was: does that create a problem? 21:23
masak I think we used to have an implicit `$` on the TOP rule at some point.
might be mistaken, though.
the one to have this discussion with is actually pmichaud :)
AlexDaniel ah ok, there's an easy way to see
masak but pmichaud sightings are rare these days
AlexDaniel commit: all grammar G { regex TOP { 'a' || 'abc' }; }; say G.parse('abc')
committable6 AlexDaniel, gist.github.com/73a90f7f1264ba8e13...c14c0d8e02 21:24
viki :)
2 years ago it seems 21:25
3 even
AlexDaniel I have no idea what is going on in 2014.01,2014.02, but I guess we didn't
ah
it did partial match
viki ahhhh, right
masak did you end up finding a pmichaud commit at the other end? :)
AlexDaniel commit: all grammar G { regex TOP { 'a' || 'abc' }; }; say G.subparse('abc') 21:26
21:26 sufrostico left
committable6 AlexDaniel, gist.github.com/d7ad814da6933b8602...9e132e7d1b 21:26
viki haha
AlexDaniel okay, I see
so .parse was changed and its previous behavior was kept in .subparse 21:27
21:28 sufrostico joined 21:30 AlexDaniel left 21:33 rurban joined
nicq20 Well looks like I'm going to use | instead of || in grammars. 21:34
masak correct. 21:36
21:37 seatek joined 21:38 zakharyas left 21:39 AlexDaniel joined 21:40 ocbtec left
AlexDaniel omg, laptop fell from my lap and turned off. While it was at it, it tipped over a full cup of tea 21:40
/o\
RabidGravy :( 21:41
AlexDaniel now let's try to find this commit…
DrForr Its next step will obviously be to try to commit suicide by cop. 21:42
AlexDaniel okay
github.com/rakudo/rakudo/commit/4d...092c27c0ff
21:44 nicq20 left 21:46 bjz joined, kyclark left 21:47 bjz left 21:48 bjz joined 21:53 cpage_ left, sufrostico left 21:58 TEttinger joined 22:00 bjz left, skids left 22:10 sufrostico joined
cale2 I hope grammars get a whole chapter in the new Learning Perl 6 book that was announced 22:10
22:10 sufrostico left, sufrostico joined 22:13 firstdayonthejob joined 22:14 RabidGravy left, rindolf left
masak they definitely deserve to :) 22:15
AlexDaniel cale2: do you know about docs.perl6.org/language/grammar_tutorial ? 22:18
DrForr cale2: Yes, they will. 22:19
AlexDaniel I mean, what we have in our docs right now is perhaps less than awesome, but feel free to contribute
DrForr I still mean to write one, I just need to get the current projects straightened out. 22:20
cale2: There's also a sequence at theperlfisher.blogspot.ro.
22:21 cpage_ joined 22:25 kyclark joined
cale2 thanks for the tutorial links! 22:28
22:29 kurahaupo__ left
kyclark I’m going to introduce modules and OOP to my students on Thursday. I’m a bit fuzzy myself on some of the details. I would love feedback on this chapter: kyclark.gitbooks.io/metagenomics/c...d_oop.html 22:33
AlexDaniel kyclark: do you provide these files (e.g. DNA.pm6) separately in an archive or something? 22:38
kyclark Yes, in my Github repo github.com/kyclark/metagenomics-book
22:39 sufrostico left
kyclark E.g. github.com/kyclark/metagenomics-bo.../perl6/oop 22:39
AlexDaniel kyclark: because it does not seem to be possible to copy the examples without the line numbers. Not an issue for me, I know how to delete that quickly, but for students it may be
kyclark: so perhaps link it from the text or something
kyclark Right, I’m still not sure it’s the best way to have the line numbers. I like to be able to comment on particular lines, but it’s much busier with them.
22:41 sufrostico joined
kyclark So I have to run do carpool, but I’ll leave my window open. Or email [email@hidden.address] witih comments. Much appreciated! 22:41
AlexDaniel kyclark: “Perl does automatically include” – “does not” ? 22:42
ah alright I'll write an email 22:43
MasterDuke kyclark: "Here's an example a simple module" is missing an "of" 22:48
22:52 kyclark left
AlexDaniel MasterDuke: I'll include your message in my email 22:53
22:54 espadrine left, eivindgl joined 22:55 eivindgl left 22:56 sufrostico left 22:58 sufrostico joined 23:03 wamba left
masak kyclark: my feedback is that I'd advice against doing `is Str` :) 23:07
(I'd go with composition instead of inheritance. not just in this case, but in many, many cases.) 23:08
though to your credit, you describe OO as "perhaps the most popular programming paradigm of the 90s" -- and inheritance was a big part of that hype ;) 23:10
23:10 maybekoo2 left
masak but I claim that there's a more useful, responsible kind of OO that has grown since the 90s, and that prefers to do `has Str` rather than `is Str` 23:13
23:14 Actualeyes joined
cale2 masak: in kyclark's exact scenario here, isn't `is Str` the better data description? What is DNA? Well, it's a string of characters 23:30
timotimo but does DNA fit everywhere a Str does? 23:31
23:32 cdg left
cale2 someone needs to write a comparison gist using composition with his code 23:32
I need to see the composition one side by side haha 23:33
23:34 rurban left 23:35 rpburkholder joined
dj_goku what is the easiest way to print eof? thinking for IO::Socket::Async. 23:36
masak cale2: what timotimo said. generally, I find it safer to start from a "clean slate" the way composition does, and only gradually take on capabilities of Str when I see they make sense for DNA.
cale2: this is a heuristic, but... inheritance makes the most sense within a framework. but Str belongs to Perl 6 and DNA belongs to user code. 23:37
'night, #perl6
23:37 cale2 left 23:40 stevieb joined 23:43 ufobat left 23:46 kyclark joined 23:48 lostinfog left
kyclark Thanks for the comments. 23:50