»ö« 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.
ugexe github.com/ugexe/Perl6-App--OpenAP...6Validator someone should do all the rest of the work and host the service on p6c 00:10
petstore.swagger.io/?url=https://r...enapi.json 00:13
MasterDuke .seen donaldh 01:04
yoleaux I saw donaldh 4 Dec 2018 23:38Z in #perl6: <donaldh> oh
cpan-p6 New module released to CPAN! FindBin::libs (0.1.0) by 03LEMBARK 02:55
cpan-p6 New module released to CPAN! FindBin::libs (0.1.1) by 03LEMBARK 04:11
jmerelo squashable6: status 06:44
yoleaux 8 Jun 2019 09:58Z <Kaiepi> jmerelo: since i made a bunch of issues on undocumented supply and lock::async methods i could look into what they actually do and see if i can write up some docs for them
squashable6 jmerelo, Next SQUASHathon in 25 days and ≈21 hours (2019-07-06 UTC-14⌁UTC+20). See github.com/rakudo/rakudo/wiki/Mont...Squash-Day
jmerelo .tell Kaiepi please do 06:45
yoleaux jmerelo: I'll pass your message to Kaiepi.
jmerelo releasable6: status 06:46
releasable6 jmerelo, Next release in ≈11 days and ≈12 hours. 1 blocker. 140 out of 582 commits logged (⚠ 2 warnings)
jmerelo, Details: gist.github.com/af9a99bc116d10b77c...553f237b05
cpan-p6 New module released to CPAN! Archive::Libarchive (0.0.11) by 03FRITH 06:59
lizmat hmmm... wrt to "from-json": is there a reason why we are currently returning mutable arrays and hashes instead of immutable lists and maps ? 09:22
timotimo not to my knowledge 09:25
jmerelo lizmat: good point. 09:26
lizmat it breaks JSON::Fast tests :-(
jmerelo lizmat: because they will be expecting mutable data structures. 09:27
lizmat so I wonder how wide spread this assumption is
timotimo well, they'll be is-eqv a Hash or Array probably
lizmat the first I found was doing my @a := from-json, easily fixed by s/:=/=/ 09:28
jmerelo I'd like to talk for a bit, if you will, about the next squashathon 09:29
timotimo how performant is assigning a List into an Array?
Xliff m: my (@a, @b) = do gather for <a b c> Z <d e f> -> ($x, $y) { take $x; take $y }; @a.say; @b.say
camelia Cannot invoke this object (REPR: Uninstantiable; Callable)
in block <unit> at <tmp> line 1
lizmat timotimo: I think we squeezed as much out of that as we can
timotimo OK 09:30
Xliff m: my (@a, @b) = do gather for <a b c> Z <d e f> -> ($x, $y) { take $x; }; @a.say; @b.say
camelia Cannot invoke this object (REPR: Uninstantiable; Callable)
in block <unit> at <tmp> line 1
lizmat I mean, I can easily fix my from-json code to make hashes and arrays
but it feels wrong :-)
cpan-p6 New module released to CPAN! Gnome::GObject (0.13.6) by 03MARTIMM 09:32
jmerelo Re: next squashathon. It does not have a topic yet. 09:46
And github.com/perl6/modules.perl6.org has 29 issues. They have been mostly ignored 09:47
It's not received much love lately.
jmerelo And it's an essential part of the infrastructure. 09:48
lizmat jmerelo: sounds like a plan for the next squashathon 09:49
jmerelo lizmat: OK. If no one else suggests an alternate plan, I'll just set it to that. 09:50
lizmat jmerelo: also keep in mind github.com/perl6/problem-solving/issues/26 09:51
jmerelo lizmat: I'll try to see what can be done about that. If I got it correctly, we need to generate some kind of index that it's compatible with MetaCPAN? 09:53
lizmat perhaps... that is one of the questions 09:54
jmerelo lizmat: I'll bear it in mind. If what you mean is to eventually merge modules.perl6.org into MetaCPAN, I'd be all for it. But for the time being, it's got to be maintained. 09:55
lizmat it indeed needs to be maintained... and whether a merge with MetaCPAN is an option, is still to be seen 09:56
jmerelo lizmat: OK. It will not hurt to kind of keep that in the back of the mind, to make migration easier. 09:57
lizmat right
jmerelo lizmat: in general, the problem with that repo, and with most repos under the perl6/ and perl6-community-modules/ orga is that unless someone feels keenly about them, they are abandoned. 09:58
lizmat indeed.. so very true :-(
jmerelo lizmat: I don't know if that should go to the problem solving repo or wherever, but devoting a squashathon from time to time feels like crapshooting 09:59
lizmat maybe a toolchain summit would be more appropriate :-)
jmerelo lizmat: I'm all for that... 10:00
timotimo is reminded to rebuild modules.perl6.org's database
jmerelo timotimo: I already did that today. I have set up a cron job for doing it daily. 10:05
timotimo oh, cool 10:08
well, it's running now so i probably shouldn't kill it
jmerelo .tell AlexDaniel congrats on your Master's defense :-) 10:26
yoleaux jmerelo: I'll pass your message to AlexDaniel.
nadim_ intresting! an instanciated Grammar is a Match. I am wondering what you use to dump grammars. the obvious answer would be a text editor and look at the source but I wonder how the Grammar is kept internally. 10:30
Yes, I came tothe pointwhere I want to dump grammars, and more specifically filter them, how do you do that?
jmerelo nadim_: would there be anything shorter than the grammar itself? 10:32
nadim_ jmerelo: that's what I meant with openingit in a text editor
but I'd like to manipulate it as an object 10:33
timotimo nadim_: how do you dump a class?
that's the same thing :)
like, the regexes, rules, and tokens of a grammar are methods
m: say Grammar.^lookup("ws"); 10:34
camelia ws
timotimo m: say Grammar.^lookup("ws").perl
camelia Died with X::Method::NotFound
in block <unit> at <tmp> line 1
timotimo m: say Grammar.^lookup("ws").WHAT
camelia Cannot look up attributes in a NQPRoutine type object
in any name at gen/moar/stage2/NQPCORE.setting line 386
in any gist at gen/moar/stage2/NQPCORE.setting line 392
in block <unit> at <tmp> line 1
timotimo that's fair i guess
m: grammar T { regex test { <[abc]>+ } }; say T.^lookup("test") 10:35
camelia regex test { <[abc]>+ }
nadim_ Cannot find method 'name': no method cache and no .^find_method 10:36
so I can't dump it as a class 10:37
timotimo that could be the extremely-low-level methods in there
custom matching stuff implemented directly in nqp code
nadim_ I need to readmore about Grammars in P6 I think, and maybe play a bit with them first 10:40
but it would be could to be able to dump them nicely
timotimo every match object is also an instance of the grammar class it belongs to 10:42
so it'll be difficult to figure out if somebody wants to dump a result or an "instance of the grammar"
so the user would have to give that hint i guess 10:43
nadim_ hmm, so far instances are dumped as Match, what I want to dump is a Grammar:U 10:45
Kaiepi m: my Lock::Async $l .= new; await $l.protect-or-queue-on-recursion({ sleep 5; await $l.protect-or-queue-on-recursion({ say 1 }); }) 10:46
yoleaux 06:45Z <jmerelo> Kaiepi: please do
Kaiepi working on it now jmerelo 10:47
nadim_ a related question, sayI have my regx a=/<another_regexp_calling_other_regexps>/; I can't use "a" directly, ddt a; I don't even get an object to dump, P6 fails before tehcall to ddt
Kaiepi m: my Lock::Async $l .= new; await $l.protect-or-queue-on-recursion({ await $l.protect-or-queue-on-recursion({ sleep 5; say 1 }); })
m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ await $l.protect-or-queue-on-recursion({ sleep 5; say 1 }); }) 10:48
m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ await $l.protect-or-queue-on-recursion({ say 1 }); })
m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ sleep 5; say 1; }); await $l.protect-or-queue-on-recursion({ say 2; }); 10:49
this is used... somehow.
Kaiepi m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ sleep 5; say 1; }); $l.protect-or-queue-on-recursion({ say 2; }); 10:50
evalable6 1
2
Kaiepi there we go 10:51
m: my Lock::Async $l .= new; $l.protect({ sleep 5; say 1; }); $l.protect({ say 2; });
evalable6 1
2
Kaiepi m: my Lock::Async $l .= new; $l.protect({ sleep 5; $l.protect({ say 1; }); });
evalable6 (signal SIGHUP) «timed out after 10 seconds» 10:52
Kaiepi m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ sleep 5; $l.protect-or-queue-on-recursion({ say 1; }); })
evalable6
Kaiepi m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ await $l.protect-or-queue-on-recursion({ say 1; }); })
evalable6 (signal SIGHUP) «timed out after 10 seconds» 10:53
Kaiepi m: my Lock::Async $l .= new; $l.protect-or-queue-on-recursion({ $l.protect-or-queue-on-recursion({ say 1; }); })
evalable6
timotimo nadim_: regexes are subs, you have to call it &a
Kaiepi m: my Lock::Async $l .= new; await $l.protect-or-queue-on-recursion({ $l.protect-or-queue-on-recursion({ say 1; }); })
evalable6 (exit code 1) 1
Must specify a defined Awaitable to await (got an undefined Nil)
in block <unit> at /tmp/lXpzFK6jCy line 1
timotimo Kaiepi: protect does an await for you, i'd expect protect-or-queue-on-recursion would also await for you 10:54
Kaiepi protect-or-queue-on-recursion has a case where it may return a Promise 10:55
the comments aren't quite clear on when that's supposed to happen though
for when the lock is locked and it wants to return Promise: # Lock is already held on the stack, so we're recursing. Queue 10:56
for when the lock is locked and it doesn't: # Lock is held but by something else. Await it's availability. 10:57
what is "something else"?
timotimo a different piece of code?
like, the thing that holds the lock isn't on the same call stack
nadim_ timotimo: it works better with &regex but I see that I do a .perl in ddt (yes I am lazy), it will be interesting to see how .perl does the dump
Kaiepi oh
timotimo which i guess corresponds to tasks as they are queued on the threadpoolscheduler and such 10:58
nadim_: i'm not sure what the exact question is
github.com/rakudo/rakudo/blob/mast...x.pm6#L119 10:59
nadim_ timotimo: given a regexp that calls regexps that call regexps, I'd like to dump a structure of that. Not sure it is possible if they are represented as subs
timotimo there is something that can take you a quarter of the way there, which is to inspect the NFAs, but that's only for the "declarative prefix" parts of alternations, not for anything else 11:00
Kaiepi timotimo, looks like it's based on the caller chain
timotimo Kaiepi: that makes sense; it'd probably look for the continuation root point to identify what the actual task is 11:01
nadim_ hmm, writting a grammar to parse the source of regexps to find which sub elements a regexp uses sound tedious, any other way?
timotimo: lol, you answer my questions before I ask them.
timotimo it's a "halting problem" issue :P
nadim_ Any good intro to Perl 6 grammars somewhere, not a reference manual but something to have fun reading? 11:03
timotimo moritz' book is good
nadim_ I'll order it then 11:04
something short in the meantime, you named andrew's video a few week ago I believe 11:05
no, that was in your blog entry
timotimo well, that's a very specific grammar usage example 11:16
and i guess it doesn't go much into grammar's inner workings
Kaiepi m: my Int $i = 0; my Lock::Async $lock .= new; await $lock.protect-or-queue-on-recursion({ cas $int, { .succ }; $lock.protect-or-queue-on-recursion({ cas $int, { .succ } }); }); say $i 11:19
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/LaFBIvuMD9
Variabl…
Kaiepi, Full output: gist.github.com/41ddfb218090efa042...d6633c65be
Kaiepi m: my Int $i = 0; my Lock::Async $lock .= new; await $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i
evalable6 (exit code 1) Must specify a defined Awaitable to await (got an undefined Nil)
in block <unit> at /tmp/DjapNvmCfT line 1
Kaiepi m: my Int $i = 0; my Lock::Async $lock .= new; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i
evalable6 1 11:20
Kaiepi m: my Int $i = 0; my Lock::Async $lock .= new; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; await $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i
evalable6 (signal SIGHUP) «timed out after 10 seconds»
timotimo seems like an odd api to only sometimes return a promise and otherwise nil
but the method is also not even documented, i wonder if it's spectested? 11:21
Kaiepi m: my Int $i = 0; my Lock::Async $lock .= new; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; LEAVE await $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i
evalable6 (signal SIGHUP) «timed out after 10 seconds»
timotimo it's not mentioned anywhere in t/spec/
so you're officially on your own :P
Kaiepi nope
fun
m: my Int $i = 0; my Lock::Async $lock .= new; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; $*AWAITER.await: $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i 11:22
timotimo it's probably not something you actually need?
evalable6 (signal SIGHUP) «timed out after 10 seconds»
Kaiepi i would've used it in my telnet library if i knew it existed because of a deadlock related to calling protect twice in the same caller chain
Kaiepi but it turned out i didn't need the locks in the first place 11:23
timotimo i thought Lock::Async is what you want if you don't want recursion to immediately go through a protect call
so using Lock instead of Lock::Async might be the right thing there? 11:24
Kaiepi i honestly don't remember what the code looked like at all so idk
i *think* i tried Lock and had the same issue but i'm not positive 11:25
ugexe Lock.protect is reentrant 11:46
Kaiepi m: my Lock::Async $lock .= new; my Int $i = 0; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; $lock.with-lock-hidden-from-recursion-check({ cas $i, { .succ } }); }); say $i 11:47
evalable6 2
Kaiepi ok i think i understand how these undocumented methods work now
ugexe ...why use cas inside a critical section? 11:49
that’s already locked 11:50
Would you not just assign directly to $i ?
Kaiepi shrug 11:52
m: my Lock::Async $lock .= new; my Int $i = 0; $lock.protect-or-queue-on-recursion({ cas $i, { .succ }; $lock.protect-or-queue-on-recursion({ cas $i, { .succ } }); }); say $i 11:53
evalable6 1
nadim_ Is there any *existing* command line too that given a grammar (in the tools language of choice) and a text would generate a json of the grammar match and set the exit code in case of failure? 11:55
Kaiepi ok after documenting wtf Lock::Async.protect-or-queue-on-recursion and Lock::Async.with-lock-hidden-from-recursion-check do i understand a lot better how supplies manage to work at all 12:34
mainly because supplies are the only thing that use them 12:35
Geth doc: Kaiepi++ created pull request #2842:
Document missing Lock::Async methods
12:56
dmaestro design.perl6.com is not serving any pages - have the spec documents been moved anywhere temporarily (or otherwise), and can someone point me to them? 13:00
ugexe you can still view them in their repository: github.com/perl6/specs 13:02
Kaiepi is anyone willing to document Lock::ConditionVariable? i know nothing about how condition variables work 13:12
lizmat weekly: perl6.eu/fc-matrix.html 14:47
notable6 lizmat, Noted!
Xliff \o 15:14
How can I force the generated USAGE to show up? 15:15
ugexe say $*USAGE 15:17
Xliff ugexe++ 15:19
Is there a way to emit a carriage return in comments starting with '#='? 15:22
m: my @a = 'a'..'g'; sub sayLetter { $^a.say }; @a.batch(4)»&sayLetter 15:32
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/ssdD7yZEtw
Malform…
Xliff, Full output: gist.github.com/88c798fdf31a6dbba8...b5a0680e11
Xliff ^^ What am I doing wrong, there?
m: my @a = 'a'..'g'; sub sayLetter { $^a.say }; @a.batch(4)».sayLetter() 15:33
evalable6 (exit code 1) No such method 'sayLetter' for invocant of type 'Str'
in block <unit> at /tmp/jxKa9by_9p line 1
Xliff m: my @a = 'a'..'g'; sub sayLetter { $^a.say }; @a.batch(4)».&sayLetter()
evalable6 a
b
c
d
e
f
g
Xliff m: my @a = 'a'..'g'; sub sayLetter { $^a.say }; @a.batch(2)».&sayLetter()
evalable6 a
b
c
d
e
f
g
Xliff Nevermind! ;)
Xliff m: my @a = 'a'..'g'; sub sayLetter ($a) { $a.say }; @a.batch(2)».&sayLetter() 15:43
evalable6 a
b
c
d
e
f
g
Geth doc: c557b5f1d2 | (Ben Davies)++ | doc/Type/Lock/Async.pod6
Document missing Lock::Async methods

This documents Lock::Async.protect-or-queue-on-recursion and Lock::Async.with-lock-hidden-from-recursion-check.
Fixes #2785
16:34
synopsebot Link: doc.perl6.org/type/Lock::Async
doc: d17da25331 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/Lock/Async.pod6
Merge pull request #2842 from Kaiepi/lock-async

Document missing Lock::Async methods Thanks!
sena_kun Kaiepi++ 16:36
Xliff '»' does guarantee starting on a new processor, does it? 16:38
Xliff Is there any way I can force the issue? 16:38
ugexe no it doesn't guarentee that at all 17:06
mst what's an idiomatic way to do 'optional whitespace' in a grammar? 17:09
say to be able to parse (<expr>, <expr> , <expr>)
jmerelo mst: <ws>* or more likely <.ws>* without capturing 17:11
mst given something like token list { '(' <expr> + % ',' ')' } 17:13
can I (<expr><.ws>?) + % ',' ?
MasterDuke mst: i think someone asked a similar question a couple days ago and jnthn or moritz had a good example
mst sorry. I'm not really sure where to read up on this
jmerelo Something like this? stackoverflow.com/questions/565070...l6-grammar 17:13
ugexe token Trailer { [[<.OWS> <field-name>]*] *%% ',' } 17:14
OWS = optional white space
Geth doc: Kaiepi++ created pull request #2843:
Document Kernel.free-memory and Kernel.total-memory
17:15
mst ugexe: ooooh
ugexe OWS is whatever the http equiv of <ws> is though, not some built-in token 17:16
mst so .. '(' [<expr><.ws>?]+ % ',' ')' ?
also, uh, *%% ? where do I read about that
sorry. re-read half of moritz' book and now having a good flail 17:17
ugexe its been awhile since i wrote that, but i believe it allows trailing commas, which http spec allows
where % only allows the thing between items, and %% allows the after each item 17:18
mst ah, presumably %% is its own op there and the * is actually part of the preceding pattern?
ugexe yeah, its a quantifier on the preceding pattern
mst so it's morally ([[<.OWS> <field-name>]*] *) %% ','
ugexe possibly redundant. hell if i know anymore :) 17:19
mst heh
leont jmerelo: AFAIK <ws> also zero-matches, so <ws>* would not DWIM
Geth doc: 278a1800bb | (JJ Merelo)++ | doc/Type/Backtrace.pod6
Adds nice to Backtrace refs #2809
doc: 307a1863c7 | (JJ Merelo)++ | doc/Type/Backtrace.pod6
Moves example to right place, refs #2809
synopsebot Link: doc.perl6.org/type/Backtrace
doc: 560bfa0e2a | (JJ Merelo)++ | doc/Type/Backtrace.pod6
Adds last method, closes #2809
jmerelo leont: does it?
Xliff ugexe: This reads better as -- token Trailer { [[<.OWS> <field-name>]*]* %% ',' }
<token><quantifier> %% <delimeter>
MUST have a quantifier 17:20
tobs m: say "42, 23 , 10" ~~ /(\d+)* % [ <.ws> ',' <.ws> ]/ # jmerelo
evalable6 「42, 23 , 10」
0 => 「42」
0 => 「23」
0 => 「10」
tobs m: say "42, 23 , 10" ~~ /(\d+)* % [ <.ws> ',' <.ws>* ]/ # jmerelo
evalable6 (signal SIGHUP) «timed out after 10 seconds»
jmerelo leont, tobs: right, zero or more whitespace characters. Thanks!
mst I'm now confused where you get required ws and where you get optional
ugexe token OWS { [<.SP> || <.HTAB>]* } 17:22
token RWS { [<.SP> || <.HTAB>]+ }
mst that part I get, it's ... 'rule' makes a space implicitly <.rws> ?
ugexe github.com/ugexe/Perl6-Grammar--HT...FC7230.pm6 is where im pulling this from
ah
im not sure i've ever used rule 17:23
mst it appears to be 'token, but with :sigspace on'
I'll keep playing 17:24
Geth doc: 755b28b730 | (Ben Davies)++ | doc/Type/Kernel.pod6
Document Kernel.free-memory and Kernel.total-memory
17:33
doc: 61af23c728 | (Juan Julián Merelo Guervós)++ (committed using GitHub Web editor) | doc/Type/Kernel.pod6
Merge pull request #2843 from Kaiepi/kernel

Document Kernel.free-memory and Kernel.total-memory
synopsebot Link: doc.perl6.org/type/Kernel
Xliff ugexe: How do you force a task to run on a different proc? 17:34
MasterDuke start
jmerelo Xliff: different from what?
Xliff Because when I use '»' I use batch. No matter what I set the batch size to, the code is still runs at the same speed.
jmerelo: I want to parallelize some code.
MasterDuke well, i'm not sure it's possible to force a difference physical processor, but start puts it on a new thread
Xliff: >> is allowed by the spec to parallelize if/when it wants, but rakudo currently doesn't ever do it 17:35
jmerelo MasterDuke: right. If there are threads available, of course. If there are no physical threads left, it might just run wherever it can 17:36
Xliff: you might try and use hyper/race. You'll notice some speedup only with big sizes, though.
ugexe start doesnt always start a new thread
Xliff So should I use .batch or not? 17:37
ugexe .batch?
Xliff @hrefs.batch($batch)».&processClass();
jmerelo Xliff: you mean hyper/race? You might give it a try, and see what it buys you.
Xliff Where $batch is the number of jobs I want to run in parallel. 17:38
Or should I just do....
@hrefs».&processClass();
ugexe you might want to look at the docs for hyper/race
jmerelo Xliff: again, give it a try. As MasterDuke said above, autothreading is not implemented yet
ugexe autothreading is not automatically starting threads 17:39
jmerelo Xliff: hyper/race use 4 threads by default. You might use different batch/processor size, but again you'll need to experiment to get it right.
Xliff OK. Will give it a try.
So would that convert to...
@hrefs.race(degree => $threads).&processClass(); 17:40
ugexe it sounds like you want batch => 1, degree => $threads
Xliff OK. Trying.
jmerelo Xliff: you need to use map or grep in the middle, and processClass within it
Xliff Oh.... fiddlestix. jmerelo++ 17:41
SEGV'd 17:43
I think Inline::Perl5 is giving race() some indigestion. 17:44
Setting threads to anything but 1 will SEGV
ugexe sounds like your code isn't thread safe 17:45
Xliff Probably not, but my guess is it might have something to do with Inline::Perl5
Backtrace incoming...
paste.fedoraproject.org/paste/IR4J...mw-N3jfPpw 17:46
I use Inline::Perl5 for Mojo::DOM
Nothing I am doing should be thread unsafe.
ugexe you are sure Mojo::DOM is thread safe? 17:47
Xliff No. I am not. ;)
ugexe i sure as hell dont think or care about thread safety when writing perl 5
so you can't say Nothing you are doing is thread unsafe 17:48
Xliff Nothing on google.
mst I would imagine you'd need a perl5 VM per thread for that to work?
Xliff ugexe: OK, fine. Split hairs. :)
Fair enough. One thread it is.
clarkema evenign 17:52
moritz hi there 18:00
hythm Lets say I want to add (append, pop, shift, unshift) methods to IO::Path, so I can run ('/tmp/delme'.IO.pop; # /tmp), Do I need to use `augment`? although docs discourage using augment. Also I don't want to create a separate class for it may be "Path::Util" for instance, I'd prefer If I would be able to call these methods directly on IO 18:19
ugexe then use augment 18:21
hythm ok
ugexe what you are doing would be discouraged in general, nothing specific to augment
hythm ah I see
clarkema I've just uploaded my first module to CPAN. I can see it in my homedir on PAUSE... do I need to do anything else from there to have it 'zef install'able?
ugexe for instance -- what if some code/library expects an exception to be thrown if .pop is called on it? it is not aware of your change of behavior 18:22
hythm right, so I think it's better to create anseparate class for it 18:23
ugexe yes, or use a mixin role on IO::Path 18:23
tobs clarkema++: no, just wait a bit 18:23
ugexe role PathThing { method pop { ... } }; my $foo = "foo".IO but PathThing; 18:23
hythm makes sense, abnd sounds a better idea 18:24
clarkema tobs: great, thanks
tobs but I can't quantify "a bit"
moritz hythm: the other option is to use multi subs instead of methods
multi sub pop(IO::Path:D $p) { ... } 18:25
and then call pop($thing.IO)
clarkema tobs: I can't stand the suspense! 18:26
jmerelo clarkema: did you upload it to the Perl6 directory?
clarkema jmerelo: yes
jmerelo clarkema: it will take a while to show up here and in Twitter. And ugexe's bots scan every two hours, so it will take a while more to appear in zef search
clarkema: modules.perl6.org should kick in at midnight, so tomorrow should be there too. 18:27
clarkema jmerelo: ok, i'll let it percolate for a while 18:29
cpan-p6 New module released to CPAN! Pod::To::Man (0.1.0) by 03CLARKEMA
clarkema ah, speak of the devil
clarkema ah, speak of the devil 18:29
hythm thanks ugexe and moritz for the suggestions, I like the multi sub pop(IO::Path:D $p) { ... } , will use that.
tobs m: multi sub tail (Str:D $_) { .comb.tail }; say "hallo".&tail; # hythm: additionally there is .& to make sub calls look like method calls. 18:35
evalable6 o
hythm tobs: noted. 18:36
AlexDaniel . 19:08
yoleaux 10:26Z <jmerelo> AlexDaniel: congrats on your Master's defense :-)
AlexDaniel thank you :)
Xliff \o/ 19:09
jmerelo AlexDaniel: will you be publishing it? Did you get any trouble from the Jury?
AlexDaniel everyone is so supportive, I hope you all don't hate for not doing enough perl6 wörk for the last few months
Xliff M. S. AlexDaniel
AlexDaniel don't hate me*
Xliff LOL
Don't worry. I am making up for you.
jmerelo AlexDaniel: I've missed you re-opening doc issues I had closed alright 19:10
:-)
AlexDaniel jmerelo: no, I did get some trouble from libreoffice though
Xliff bitbucket.org/perl_amazon_ec2/p6-a...n-aws-ec2/
AlexDaniel jmerelo: one slide showed up with broken images, and it crashed at least 2 times during the presentation
jmerelo AlexDaniel: it's private. Anyway, why not LaTeX? 19:11
AlexDaniel jmerelo: how do you include a video in a latex presentation? I don't know
jmerelo AlexDaniel: ah. Reveal.js then.
AlexDaniel shrugs
jmerelo AlexDaniel: yep, what's done is done.
AlexDaniel libreoffice doesn't like videos too, that's why it was crashing…
but it was alright! I handled it well, I think 19:12
jmerelo Congrats!
Will you be continuing in academia or off to industry? 19:13
AlexDaniel I'll continue… doing military or alternative service, because in this country I have no other choice 19:14
unless a miracle happens, which I highly doubt
jmerelo: as for publishing, no related paper will be published, but you'll find a pdf of the thesis itself here: github.com/RGVID-EU/RoboRG-Docs/releases 19:15
jmerelo Good luck with that. 19:15
AlexDaniel: you should definitely try and publish, even if it's in ArXiV only. 19:16
jmerelo goes AFK to dinner... 19:18
AlexDaniel jmerelo: personally I don't think academia is for me… not anymore. I don't see a point. People write a paper, submit it, and then drop that topic on the floor and move to the next paper. Oh and no sources published, of course
AlexDaniel maybe in other fields this makes sense 19:19
Xliff AlexDaniel: I still haven't forgotten your graph for GtkPlus. I've just been soo busy. 19:20
AlexDaniel I don't think I want to fight that by going against the lfow…
Xliff github.com/Xliff
AlexDaniel flow*
so I'll just do something else, probably, but we will se in a year
Xliff Working on the Amazon AWS Query API, now.
AlexDaniel see* gah :)
Xliff: what gtk graph? I don't remember…
Xliff: compilation time across revisions? Or something? 19:21
Xliff Horizontal. Perl 6 version vs total compile time
AlexDaniel mmmm that'd be interesting
Xliff Yeah. Noticed a real serious slow-down with the later compilers.
Went from 2300 seconds to compile to like 4000 on the VM. 19:22
sena_kun AlexDaniel, very sad to know you are likely to spend a year of life doing something LTA. I hope you will be able to think of something to make this time more interesting for yourself. :) Of course, nobody hates you(I hope), there is _a lot_ of your work contributed and it is valued, so be more proud of yourself. :) 19:24
AlexDaniel sena_kun: I'll know in a week if it's going to be alternative service or not 19:25
sena_kun: and if so, I'll just have a 1 year job with minimum wage
sena_kun AlexDaniel, I'll hope for this option.
it is just so damn inefficient from various points of view when people don't do something they are clearly better at. :/ 19:28
clarkema is it possible to provide a default for a named argument in a sub's arglist, or do you just have to do ||= later on in the body? 19:50
ugexe m: sub foo(:$var = "default") { $var }; say foo()' 19:57
evalable6 (exit code 1) 04===SORRY!04=== Error while compiling /tmp/hH338Z_fL9
Two ter…
ugexe, Full output: gist.github.com/625ba9bce4dffd61d0...7cb4e577f4
ugexe m: sub foo(:$var = "default") { $var }; say foo() 19:58
evalable6 default
clarkema thanks
Geth doc/p6doc-support-different-formats: 7796e0ff6e | (Mike Clarke)++ | bin/p6doc
Teach p6doc to handle --format
20:17
clarkema hmm, that was supposted to be to my own remote 20:18
oh wel
mst it's a branch so ... meh? :) 20:20
Geth doc: clarkema++ created pull request #2844:
Teach p6doc to handle --format
20:23
clarkema yeah, I was only going to PR it from there anyway, so it doesn't matter 20:24
nadim_ evening, wha are you using for file extension for scripts and modules. I am still using pl and pm and wonder what the consensus is 20:50
ugexe use .pm6 for modules 21:02
leont Some do .pm others do .pm6. I think the latter is winning
ugexe and use .p6 or .pl6 for scripts
leont More recently people have started doing .t6 for tests
ugexe if we can get to *only* allow .pm6 then we can have distributions that contain perl 5 and 6 modules side by side
nadim_ thanks for the answers, I'll align to those. 21:12
Geth doc: lukasvalle++ created pull request #2845:
Adapt documentaion for pairup
21:29
doc: 9c1d2058fc | lukasvalle++ | doc/Type/Any.pod6
Adapt documentaion for github.com/rakudo/rakudo/commit/d7...e64f48fc44 (Consistify :U.pairup with :D one by returning a Seq )
21:33
doc: 263f435847 | (Elizabeth Mattijsen)++ (committed using GitHub Web editor) | doc/Type/Any.pod6
Merge pull request #2845 from lukasvalle/master

Adapt documentation for pairup
synopsebot Link: doc.perl6.org/type/Any
leont Personally, I wouldn't use any extension for scripts, and I see no reason why anyone else would want to do so 22:12
ugexe the only reason i can think of, now that you mention it, is to give windows people some help 22:15