»ö« 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:02 dataf3l left, pierre__ left, dataf3l joined 00:05 dataf3l left, dataf3l joined 00:07 dataf3l left 00:08 dataf3l joined 00:11 dataf3l left, dataf3l joined 00:14 dataf3l left, dataf3l joined 00:16 dataf3l left 00:17 dataf3l joined 00:19 dataf3l left 00:20 dataf3l joined 00:23 dataf3l left, dataf3l joined 00:25 dataf3l left 00:26 dataf3l joined, cdg left 00:28 xfix left, dataf3l left 00:29 dataf3l joined 00:32 dataf3l left, dataf3l joined 00:34 cdg joined, small-wolf joined 00:36 dataf3l left 00:37 dataf3l joined 00:38 cdg left 00:40 dataf3l left, mawkish_ left, mawkish_ joined 00:41 dataf3l joined, Gasher joined 00:43 dataf3l left 00:44 dataf3l joined 00:47 dataf3l left 00:48 dataf3l joined 00:50 dataf3l left 00:51 dataf3l joined 00:52 mawkish_ left 00:55 mawkish_ joined, dataf3l left 00:56 dataf3l joined 00:58 rburkholder joined 01:00 dataf3l left 01:01 dataf3l joined 01:02 wamba left 01:03 pierre_ joined 01:06 dataf3l left 01:07 dataf3l joined 01:08 pierre_ left 01:11 dataf3l left 01:12 mawkish_ left, dataf3l joined 01:14 dataf3l left 01:15 mawkish_ joined, dataf3l joined 01:18 dataf3l left 01:19 dataf3l joined, mawkish_ left 01:21 dataf3l left 01:22 aborazmeh joined, aborazmeh left, aborazmeh joined, dataf3l joined, mawkish_ joined 01:24 Gasher left, dataf3l left 01:26 dataf3l joined, cibs left 01:28 cibs joined, dataf3l left 01:29 BenGoldberg joined, espadrine left, dataf3l joined 01:32 dataf3l left, dataf3l joined 01:35 dataf3l left, cdg joined, dugword left 01:36 BenGoldberg left, dataf3l joined 01:38 BenGoldberg joined, dataf3l left 01:39 cdg left, dataf3l joined 01:41 dataf3l left 01:42 dataf3l joined 01:44 dataf3l left 01:45 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg, dataf3l joined 01:47 dataf3l left 01:48 dataf3l joined
notviki realizes 2002 In Flame's song "Cloud Connected" all of a sudden is not a nonsensical phrase in 2016 :P 01:48
In Flames
www.youtube.com/watch?v=CAXtDPKkOlA 01:49
01:50 dataf3l left 01:51 kalkin joined
kalkin hi 01:52
01:52 dataf3l joined
lucs How can I here avoid the if/else and have the foo() invocation not repeated?: if $some-condition { foo(:$a, :$b, :$c) } else foo(:$a, :$b, :$c, :$d) } 01:52
kalkin I just notice there is no way in zef to install a specific verson of a module, even if the git managed source code is properly tagged 01:53
lucs (got my brackets wrong there, but there it is) 01:54
01:54 djbkd joined
kalkin I would love to somehow match version managment tags to actual module versions, but there is no way besides adding aditional logic to zef 01:54
(or writing a script which checksout the module with proper tag and then cd $DIR && zef install .) 01:55
lucs I'd like something like foo(:$a, :$b, :$c, 「nothing here if $some-condition, else pass the :$D arg」)
01:57 beatdown left
kalkin May be the module itself can provide the information about different versions in META6.json? 01:57
but I don't think it's a nice solution 01:58
this would make META6.json administration annoying, but it could also be automated with mi6 release or something 01:59
02:02 dataf3l left
geekosaur thought zef was being updated with version support at some point 02:02
(supposedly prior to it replacing panda) 02:03
02:03 dataf3l joined
kalkin geekosaur: but how should this versioning logic work? 02:05
02:05 dataf3l left
mspo feels like a very possible enhancement 02:05
ugexe: ?
kalkin I would patch it in if I would know how perl6 modules should map different versions to version control tags
02:06 dataf3l joined
mspo `zef install "CSV::Parser:auth<tony-o>:ver<0.1.2>"` 02:06
from github.com/ugexe/zef
kalkin mspo: yes but it currently just checks if such a distribution is known, but it doesn't check CSV:Parser git for version tag x.y.
AFAIK zef just gathers it's data from HEAD of each repository containing a META file 02:07
which is kind of suboptimal
mspo how about this version? `zef install github:tony-o:CSV--Parser:0.1.2`
kalkin also people don't have the habbit of versioning their dependencies 02:08
mspo indeed
kalkin git ls-remote -t git://github.com/tony-o/perl6-csv-parser.git returns nothing 02:09
02:09 dataf3l left
kalkin this means zef has no idea how to fetch any other version besides the one in HEAD/META.json version field 02:10
02:11 dataf3l joined
kalkin i think it would be nice if some QA standarts would be defined for modules.perl6.org, i.e: version your dependencies, tag your versions 02:11
02:12 kyan left 02:14 cyphase left
AlexDaniel samcv: are there any unknown issues on that page? docs.perl6.org/routine/$EQUALS_SIG...QUALS_SIGN 02:15
02:15 telex left
AlexDaniel samcv: highlighting I mean 02:16
samcv uhm the highlighting is LTA
oh yeah
was gonna say it seems fine lol
other than the hl
AlexDaniel “proto sub” is wrong and “=:=” is wrong
samcv ah yeah i have a ticket open for proto sub
AlexDaniel what about =:= ?
samcv i will fix the =:= right now though
AlexDaniel ok, thank you very much! 02:17
mspo =:= ? I had to check which channel I was in :)
samcv if i work on protosub it's likely that i could break like multi sub
so less than trivial cause. uh how perl6 allows different things. tho i could duplicate it. but don't realy want to do that
mspo =:= and =/= are erlang-ese
TimToady in our case, =:= is what you get after a := 02:18
samcv m: say " ".uniprop('Line_Break') 02:19
camelia rakudo-moar 9fc616: OUTPUT«SP␤»
02:19 cyphase joined
samcv m: say 0x200D.uniprop('Line_Break' 02:19
camelia rakudo-moar 9fc616: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in argument list; couldn't find final ')' ␤at <tmp>:1␤------> 3say 0x200D.uniprop('Line_Break'7⏏5<EOL>␤»
samcv m: say 0x200D.uniprop('Line_Break') 02:20
camelia rakudo-moar 9fc616: OUTPUT«BK␤»
samcv TimToady, what is your thoughts on having the cmp operation compare alphabetically using proper unicode collation order. so diacritics are not misordered
cause atm Z is less than a
TimToady I just said over in #moarvm :)
samcv oh 02:21
didn't see
02:24 dataf3l left, aindilis joined, dataf3l joined 02:26 dataf3l left
notviki lucs: you ninja-in ( the "|(:)" looks like a ninja sideways) the named arg: foo :$a, :$b, :$c, |(:$d if $d); 02:26
02:27 dataf3l joined
notviki lucs: the :$d if $d ends empty if the :$d is false and if it's true the |() slips into the args for the routine 02:27
s:2nd/':$d'/\$d/ 02:28
02:29 newbie1 left 02:30 telex joined 02:31 kalkin left
SmokeMachine lucs: terrible, but that's what I got: 02:32
m: multi foo(:$a!,:$b!,:$c! --> "without d") {}; multi foo(:$a!,:$b!,:$c!,:$d! --> "with d") {}; my $a=1; my$b=2; my$c=3; my$d; say foo |%(<a b c d> Z=> ($a,$b,$c,$d).grep: *.defined)
camelia rakudo-moar 9fc616: OUTPUT«without d␤»
02:34 mawkish_ left
notviki :/ 02:34
02:34 mawkish_ joined
SmokeMachine notviki: great! 02:35
lucs notviki: Ah, just what I needed. Thanks!
02:35 cdg joined
lucs SmokeMachine: Um, a bit complicated compared to notviki's solution, but thanks anyways :) 02:36
notviki m: my$c=3; dd $c
camelia rakudo-moar 9fc616: OUTPUT«Int $c = 3␤»
02:36 shayan_ joined
shayan_ Why isn’t macperl.com available? 02:36
notviki surprised that even parses
shayan_: it's a secret. Check back in a year for the great reveal of the secret.
SmokeMachine lucs: yes! notviki's much better!
shayan_ @notviki: why can’t you provide the appropriate answer? I am trying to download perl for mac. I’m reading my first programming book, based in perl 02:37
notviki huggable: hug shayan_ 02:38
huggable hugs shayan_
shayan_ Similarly, Mac users can get a copy of MacPerl from the Internet by going to www.macperl.om and following the directions for downloading MacPerl. 02:39
notviki uhuh
02:40 cdg left
notviki shayan_: so what's dsnextgen.com then? 02:40
02:40 cyphase left 02:41 labster left
shayan_ @notviki: your poor mother’s existence. 02:41
@notviki: rot in hell, mother fucker. 02:42
02:42 shayan_ left
notviki Have a nice day! 02:42
02:43 djbkd left
notviki Obviously no one click that URL 02:43
Some fucking malware infested crap.
mspo which url? 02:45
notviki both
02:45 cyphase joined
notviki Heh, he's apparently a 30-minute driving distance away from me. 02:45
I'd email the ISP if I weren't so lazy.... 02:46
02:46 ilbot3 left
mspo looks like it's a parked domain 02:47
notviki .tell moritz may be worth scrubbing this URL and the dsnextgen one below from logs; has an inframe leading to an infested site irclog.perlgeek.de/perl6/2016-12-30#i_13822500
yoleaux notviki: I'll pass your message to moritz.
02:47 ilbot3 joined 02:48 mawkish_ left, cyphase left 02:49 cyphase joined, cyphase left, xtreak joined, cyphase joined, cyphase left 02:50 cyphase joined 02:53 dataf3l left, dataf3l joined 02:56 dataf3l left, dataf3l joined 02:58 labster joined, dataf3l left 02:59 dataf3l joined 03:01 dataf3l left 03:02 dataf3l joined, cyphase left 03:04 mawkish_ joined 03:06 dataf3l left 03:07 dataf3l joined, cyphase joined 03:08 Ben_Goldberg joined, BenGoldberg left, Ben_Goldberg is now known as BenGoldberg 03:09 BenGoldberg left, dataf3l left 03:10 BenGoldberg joined 03:11 dataf3l joined 03:13 dataf3l left
Xliff Hmmm... camelia seems slow. 03:14
m: (2+2).say
BenGoldberg pokes camelia. 03:15
camelia rakudo-moar 9fc616: OUTPUT«4␤»
BenGoldberg wonders what butterflies eat, so he can try bribing her. 03:16
Xliff Over a minute?
Wow.
m: (2+2).say
camelia rakudo-moar 9fc616: OUTPUT«4␤»
Xliff Better!
Xliff pets camelia
BenGoldberg m: 'alive'.say
camelia rakudo-moar 9fc616: OUTPUT«alive␤»
Xliff m: 42.WHAT.say
camelia rakudo-moar 9fc616: OUTPUT«(Int)␤»
Xliff m: 42.WHY.say
camelia rakudo-moar 9fc616: OUTPUT«(Any)␤»
BenGoldberg m: 42.5.HOW.say 03:17
camelia rakudo-moar 9fc616: OUTPUT«Perl6::Metamodel::ClassHOW.new␤»
BenGoldberg m: 42.5.WHERE.say
camelia rakudo-moar 9fc616: OUTPUT«140623898977248␤»
BenGoldberg m: 42.5.WHERE.say
camelia rakudo-moar 9fc616: OUTPUT«140157770388448␤» 03:18
AlexDaniel eval: 2+2 .say 03:19
evalable6 AlexDaniel, rakudo-moar 9fc616f: OUTPUT«WARNINGS for /tmp/5e91x6ZuyH:␤Useless use of "+" in expression "2+2 ." in sink context (line 1)␤2»
AlexDaniel evalable seems fast!
even though it unpacks an archive every run 03:20
03:20 aborazmeh left
AlexDaniel yea, there's some room for speeding things up. Contributions welcome! 03:20
03:24 Vynce joined 03:27 rburkholder left
BenGoldberg m: # testing ␤'success'.say; 03:28
camelia rakudo-moar 9fc616: OUTPUT«success␤»
BenGoldberg m: say <<WHEE;␤This thing all things devours,␤Birds, beasts, trees, and flowers.␤WHEE␤ 03:30
camelia rakudo-moar 9fc616: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Unable to parse expression in shell-quote words; couldn't find final '>>' ␤at <tmp>:5␤------> 3<BOL>7⏏5<EOL>␤ expecting any of:␤ argument list␤ shell-quote words␤ te…»
BenGoldberg m: say q:to/WHEE/;␤This thing all things devours,␤Birds, beasts, trees, and flowers.␤WHEE␤ 03:31
camelia rakudo-moar 9fc616: OUTPUT«This thing all things devours,␤Birds, beasts, trees, and flowers.␤␤»
03:32 cyphase left
BenGoldberg grins. 03:32
03:37 cyphase joined 03:42 bisectable6 joined, ChanServ sets mode: +v bisectable6 03:45 shayan_ joined 03:48 noganex joined, lichtkind__ joined 03:51 noganex_ left, lichtkind_ left 03:55 Vynce left 04:05 pierre_ joined 04:10 pierre_ left 04:30 AlexDaniel left 04:31 regnarg left 04:45 xtreak left 04:47 mawkish_ left, mawkish_ joined, xtreak joined 04:51 mawkish_ left 04:52 mawkish_ joined 04:55 tojo joined 05:09 pyrimidi_ joined, pyrimidine left 05:11 Cabanossi left 05:12 Cabanossi joined 05:20 shayan_ left 05:21 Actualeyes1 joined, Actualeyes left 05:27 mawkish_ left, dugword joined, itcharlie_linux left 05:30 giraffe joined, giraffe is now known as Guest57693
webstrand Is there any way to parse the output of Proc or Proc::Async without waiting for the process to exit? 05:38
05:39 tojo left
webstrand I have a process which is producing formatted output, and I'd like to parse it with a grammar incrementally 05:40
MasterDuke webstrand: you should be able to .tap() the stdout of the proc 05:51
05:54 regnarg joined 05:58 Imme joined 05:59 regnarg left
Imme Join 05:59
06:01 BenGoldberg left 06:07 pierre_ joined 06:08 regnarg joined 06:09 bwisti left 06:10 khw left 06:13 pierre_ left 06:16 bjz joined 06:22 Imme left 06:23 petrutrimbitas joined 06:24 wamba joined 06:26 bjz left 06:33 petrutrimbitas left 06:44 bjz joined 06:48 xtreak left 06:51 xtreak joined, darutoko joined
Woodi hi today :) 06:54
06:57 RabidGravy joined 06:59 telex left
Woodi from backlog:"isn't there an infinitely large family of taylor approximations of functions? it's not so simple" - err... Aleph-0 is for house wifes now ? or mafia, they are rational ppls, needs to count their stuff ;) # <small>warning: backlog rigged<small> :) 06:59
07:00 telex joined 07:06 rburkholder joined
Woodi about functional programming: I think in SICP was chapter about implementing algebra with functions. and replacing assigments with functions :) but it still is academic topic. simple becouse CPUs use registers, assigments, etc :) so, if CPUs will have function calls as cheap as operation on register then we can stop using languages with assignments for performance critical applications 07:07
07:10 thayne joined
Woodi also, if that quantum computers will start to be more popular we will have our free lunch back ! ;) - industry will stop caring about concurency stuff, functional and lazy languages, etc. all that nice thing possibly will be put back on the shelves or even archived somewhere :) but maybe few things from functional world is already assimilated into industry... 07:12
07:22 Tonik joined 07:25 regnarg left 07:33 labster left, pyrimidi_ left, pyrimidine joined 07:34 wamba left 07:35 Tonik left 07:37 dugword left 07:39 Actualeyes1 left 07:53 Actualeyes joined, xtreak left 07:55 xtreak joined
Woodi oo, btw. last months I notice in news used numbers, eg. govs numbers like budget expenses. looks all what we needs in common cases is int64 - govs spends "only" bilions :) 07:55
08:12 regnarg joined 08:16 ths joined
ths Hello, Has anyone managed to get perl6 on raspberry pi using rakudobrew 08:20
08:22 grondilu joined
grondilu is there a quick way to see installed modules without using panda or zef? 08:23
for instance I want to parse a JSON string but I don't know which parser is installed (there are so many on modules.perl6.org)
RabidGravy I have a snippet somwhere, 'ang on 08:25
gist.github.com/jonathanstowe/7028...79d2896fdc 08:29
however that needs, an, er, JSON parser
08:30 wamba joined 08:38 labster joined 08:42 Cabanossi left 08:44 Cabanossi joined
stmuk I'm getting perm errors from the irclog site 08:46
oh fixed now :) 08:47
08:47 xtreak left, xtreak joined 08:49 xtreak left 08:58 pierre_ joined 09:04 domidumont joined 09:06 FROGGS joined
RabidGravy grondilu, fixed to use the approved mechanism gist.github.com/jonathanstowe/7028...79d2896fdc 09:06
09:10 domidumont left, some joined 09:11 domidumont joined 09:12 xfix joined
samcv nice just implemented my bidi bracket matching code ^_^ 09:13
09:22 xtreak joined 09:24 ths left 09:27 regnarg left 09:28 rindolf joined
grondilu m: say <foo bar>.kv 09:32
camelia rakudo-moar acec1e: OUTPUT«(0 foo 1 bar)␤»
grondilu m: say <foo bar>.vk
camelia rakudo-moar acec1e: OUTPUT«No such method 'vk' for invocant of type 'List'␤ in block <unit> at <tmp> line 1␤␤»
grondilu kind of LTA, IMHO 09:33
09:37 dugword joined 09:39 pierre_ left 09:42 dugword left
RabidGravy what that there isn't a vk method on lists? 09:43
m: say ( <foo bar> but role :: { method vk() { self.kv.map( -> $k, $v { $v, $k }) } }).vk 09:49
camelia rakudo-moar acec1e: OUTPUT«((foo 0) (bar 1))␤»
RabidGravy there, fixed it for you :)
actually it should be flatmap to be the same as kv, but hey 09:53
09:59 some left, ced_ left 10:12 bjz_ joined 10:13 bjz left 10:23 iH2O joined 10:29 iH2O left 10:31 wamba left 10:35 woolfy joined 10:40 skids left 10:45 woolfy left 10:49 xtreak left 10:50 xtreak joined
dalek osystem: 1c1af99 | (JJ Merelo)++ | META.list:
Add Math::Constants to ecosystem
10:58
osystem: 4a73a7a | (Zoffix Znet)++ | META.list:
Merge pull request #276 from JJ/master

Add Math::Constants to ecosystem
11:04 thayne left 11:06 xtreak left
grondilu m: say qq{""} 11:12
camelia rakudo-moar acec1e: OUTPUT«""␤»
grondilu m: say qq{"{"foo!"}"}
camelia rakudo-moar acec1e: OUTPUT«"{"foo!"}"␤»
11:12 rburkholder left
grondilu ^this surprised me 11:12
grondilu was expecting C<"foo!">
notviki Sorry, we've not implemented clayvorance yet. 11:14
It's interesting that you expected it to view first set of quotes and second set of brackets as delimiters, but not the second set of quotes too? 11:15
Aj 11:16
grondilu to me inside a qq construct, double quotes should lose any special meaning and thus should not prevent curlies to interpolate
11:17 wamba joined
notviki grondilu: it's likely due to this bug: rt.perl.org/Ticket/Display.html?id=130205 11:17
m: say qq|"{"foo!"}"| 11:18
camelia rakudo-moar acec1e: OUTPUT«"foo!"␤»
11:18 kalkin joined, kalkin is now known as kalkin-
moritz this looks correct to me 11:19
yoleaux 02:47Z <notviki> moritz: may be worth scrubbing this URL and the dsnextgen one below from logs; has an inframe leading to an infested site irclog.perlgeek.de/perl6/2016-12-30#i_13822500
notviki moritz: why is it correct?
and which "this" 11:20
grondilu m: say qq{{"{"foo!"}"}}
camelia rakudo-moar acec1e: OUTPUT«"foo!"␤»
notviki grondilu: seems some interaction when the delimiter is reused inside
grondilu yeah
moritz notviki: qq|"{"foo!"}"| is parsed as a string "..." which contains a closure, which returns foo! 11:21
notviki moritz: ah, that sure.
m: say qq{"{"foo!"}"}
camelia rakudo-moar acec1e: OUTPUT«"{"foo!"}"␤»
notviki this isn't
moritz right 11:22
notviki grondilu: sorry for lashing out on you. I'm just really pissed right now :(
11:22 kalkin- left, kalkin- joined
grondilu no worries, I've spent most of my times in much harsher internet places lately. 11:22
11:23 rashc joined 11:25 small-wolf left 11:30 labster left 11:31 rburkholder joined, lukaramu joined 11:32 kalkin- left 11:47 TEttinger left 11:50 wamba left 11:56 darutoko left, darutoko- joined 11:59 darutoko joined 12:01 darutoko- left 12:04 bjz_ left 12:05 bjz joined 12:18 FROGGS left, FROGGS joined 12:23 FROGGS left 12:24 dalek joined, ChanServ sets mode: +v dalek 12:31 ths joined 12:35 rightfold joined
rightfold Does Perl 6 have Perl 5's goto? 12:36
For proper tail calls.
12:37 dalek left 12:38 dalek joined, ChanServ sets mode: +v dalek
notviki rightfold, not yet 12:40
rightfold ok
notviki Well, we ain't got a goto at all, whether it's planned to work like Perl 5's I've no idea
lizmat we've been able to get by so far 12:41
rightfold well it doesn't matter if it's called goto
notviki sure
rightfold as long as it does a proper tail call :P
notviki :)
lizmat also, goto in perl 5 is not really a tail call either
afaik it's really messing with the stack reporting really
notviki oh 12:42
12:42 FROGGS joined
lizmat from what I remember (and this is now close to 5 years ago), doing a call at the end of a sub is cheaper gotoing 12:42
*than
RabidGravy I think the only place in P5 I have used "goto &sub" is in an AUTOLOAD 12:45
12:58 Rawriful joined 12:59 kaare_ left
rashc The docs don't say what's in $*PROGRAM-NAME when the interpreter is reading from $*IN. It only talks about -e. 13:03
notviki rashc: feel free to correct them: github.com/perl6/doc/ 13:06
it's in doc/Language/Variables.pod6
13:07 Rawriful_ joined
RabidGravy it is "interactive" BTW 13:07
13:07 lucasb joined 13:08 Axord left
RabidGravy though it would be cooler if it realised what was happening and had "stdin" or something (and suppressed the "To exit type 'exit' or '^D'") 13:09
13:09 Rawriful left 13:10 darutoko left
lucasb perl6 - <<< 'say $*PROGRAM-NAME' #=> "-" 13:10
this REPL behaviour needs to be fixed 13:11
before starting the REPL, check that stdin is an tty 13:12
notviki Well volunteered!
lucasb I think pmurias added code for this
samcv spectest done. and pass. time for bed :)
13:13 FROGGS left
notviki lucasb: I don't see any indication that that invokation starts the REPL 13:13
Or is that what you mean by fixing?
samcv night @all
notviki night
samcv o/
rashc night
RabidGravy [jonathan@coriolanus squirrel]$ echo 'say $*PROGRAM-NAME' | perl6
To exit type 'exit' or '^D'
interactive
lucasb perl6 <<< 'say $*ERR: $*PROGRAM-NAME' 1>/dev/null #=> 'interactive' :)
rashc It hink that, because of the REPl, the filename will have to be '-' for P6 to know it's supposed to read from $*IN 13:15
13:15 ChoHag left
rashc Checking it's a TTY isn't enough. 13:16
stmuk and make it all work on Windows too!
notviki Hilarious: en.wikipedia.org/wiki/USS_Yorktown...ip_testbed
US battlecruiser dead in the water due to div-by-zero error 13:17
13:17 pierre_ joined, pierre_ left, pierre_ joined
rashc Reuiring the '-' avoids a conflict where one might want to use the REPL to process data from $*IN. Just being a TTY doesn't mean it's a program and not data. 13:21
13:23 petrutrimbitas joined
ggoebel perl 6 made it onto a list of hottest up and coming programming languages for 2017... opensource.com/article/16/12/yearb...rends-2016 13:24
rashc Oh, now I understood, it has to check if $*In is a TTY to launch the REPL, not the other way around. 13:25
notviki ggoebel: neat 13:26
kinda puts the pressure on tho.... 13:27
How come we use === Inf in the setting in many places? 13:33
Is it for performance or is the goal to not blow up Failures/div-by-zeros? 13:34
ggoebel I suppose. As a regular long time lurker... it makes me uncomfortable with my level of involvement. I need to do a little self-introspection, change some habits, and deal with some time management and organization issues so I lurk less and contribute more.
13:34 timo joined, timo is now known as Guest29939 13:36 Guest29939 is now known as timotimo 13:44 wamba joined 13:51 nebuchadnezzar left 13:52 nebuchadnezzar joined 13:54 Rawriful_ left 13:58 ths left 14:04 khw joined
tbrowder notviki: i see in the article a few jabs at MS, too 14:07
notviki Not surprising. Multiple sclerosis is a serious condition.... 14:14
tbrowder i've been browsing our sites and don't see any mention of the books we know are in print or in prep, did i miss something?
14:16 rashc left, Axord joined, rasch joined, rasch is now known as raschp 14:19 raschip joined, Khisanth left 14:21 raschp left 14:24 FROGGS joined 14:32 bjz left, Khisanth joined, bjz_ joined 14:41 nebuchadnezzar left 14:42 pierre_ left 14:49 nebuchadnezzar joined 14:59 kalkin- joined
ugexe kalkin-: zef can install specific versions of modules. your actual problem is the ecosystem is not used in a way that allows versioning 15:09
kalkin-: tbrowder has actually used the ecosystem with versioned distributions
kalkin-: see: github.com/perl6/ecosystem/commit/...93fa1aa4b4 Just note zef is entirely able to handle versions, but its still up to the ecosystem to handle what is visible 15:10
15:11 bwisti joined
raschip CPAN support can't come soon enough. 15:11
ugexe CPAN support already exists 15:12
raschip But have to start sending their modules to PAUSE, then. 15:13
ugexe kalkin-: also zef doesn't just check the HEAD of a repository because it doesn't only handle git repositories. realistically people should not be linking to their git repo as their source-url
15:14 kalkin- left 15:15 cdg joined
raschip It's time to leave this kludge behind. 15:16
ugexe if you use --metacpan (when the p6 version is up - it goes down sometimes) or --cpan (which doesn't have many distributions yet) there is no git involved
raschip Should be the deafult and fallback to git. 15:17
ugexe or if you want to use the current ecosystem you put your .tar.gz links as your source-url and link *each version* of your meta file to the ecosystem META.list (by commit id)
raschip Does version support works when using CPAN?
15:17 finanalyst joined, finanalyst left
ugexe version support works for everything 15:18
notviki raschip: the was (and maybe still is) a script running that automatically pushes new versions in our ecosystem to CPAN
huggable: cpan
huggable notviki, nothing found
ugexe the reason it doesnt default to CPAN is because that would be wasted time for almost all queries since it doesn't have a full listing
raschip i.e. CPAN is still broken for perl6 modules. 15:19
ugexe the main thing with CPAN is working out how to handle the `auth` field
raschip Can't wait for it to get fixed.
ugexe perl6 -Ilib bin/zef --/metacpan --/p6c --cpan search CSV 15:20
===> Found 2 results
1 |Zef::ContentStorage::Ecosystems<cpan>|Text::CSV:ver('0.002'):auth('github:Tux')
2 |Zef::ContentStorage::Ecosystems<cpan>|CSV::Parser:ver('0.1.2'):auth('auth:tony-o')
notviki raschip: what's broken exactly?
raschip it doesn't have a full listing 15:21
ugexe it may never have a full listing
notviki ranguard and mst are leading that effort. May wanna talk to them
ugexe the idea of perl6 recommendation engines is that they should work together
other than that it has to be determined how to map an existing `auth` from a p6 ecosystem module to whatever is copied to CPAN 15:23
because you can't just change the auth from say :auth<me@foo.com> to :auth<me:cpan> as this changes the identity of the module, and the identity is meant to be immutable
and CPAN isn't built for sharing namespaces (which the above is meant to allow) 15:25
raschip This should be fixed.
ugexe i'm sure they will welcome any help :)
raschip The maaping from module name to module should be one to one, not one to many, pulling a random module from there. 15:26
15:26 jantore left
ugexe it IS one to one unless you are fuzzy about what you want 15:26
Foo::Bar is exactly the same as Foo::ver<*>
Foo::Bar:ver<*>
raschip "fuzzy" as in specifing the name of the module?
ugexe Foo::Bar:auth<xyz> is not the same as Foo::Bar:auth<abc> 15:27
but either one would fulfill a request for just "Foo::Bar"
15:27 jantore joined
ugexe if you are explicit you will get the one you explicitly requested 15:27
raschip Should work the same as traditional package managers, tbh. 15:28
ugexe we're solving problems that traditional package managers have ignored
look at the dbix::class namespace drama
raschip You're shifting the burden to the user, I tough it should be the other way around. 15:30
15:30 AlexDaniel joined
ugexe the burden of choosing explicit versions to avoid dependency hell is up to the user, but they are welcome to ignore it like the majority currently do 15:31
15:31 domidumont left
ugexe i.e. everyone does `use Foo::Bar;` but if they were writing production code it should be `use Foo::Bar:ver<...>` (and realistically :auth<whatever>) 15:31
how else are you supposed to do `{ use Foo::Bar:ver<1>; } { use Foo::Bar:ver<2> }`? 15:32
AlexDaniel morning \o/ 15:34
notviki \o
AlexDaniel looks at the clock… 17:34…
ugexe raschip: right now if you install Foo::Bar:ver<1> and then Foo::Bar:ver<2> and then `use Foo::Bar;`, what do you think will happen? 15:35
notviki It'd use :ver<2>
ugexe I think it will use whatever is installed first 15:36
notviki :S
That's awful.
I'd expect it to use latest and greatest. Same as omiting `use v6.whatever` would.
15:37 hankache joined
ugexe well technically it resolves to :ver<*> which is literally "whatever" version 15:37
notviki And it kinda makes sense, considering it's perfectly reasonable run the installer and get a fresher version without ensuring you uninstall everything first.
ugexe so whatever it encounters first
notviki would argue that's a bug
ugexe i brought this up in perl6-toolchain though with the same expectation
notviki forgot we even had a #perl6-toolchain 15:38
ugexe: and what was the outcome when you brought it up
ugexe originally they wanted to leave those decisions up to policy and out of rakudo, but i argued it doesn't make sense that different versions would get used based on the order of CUR used (such as with -Ilib)
let me find the discussion...
hankache hello #perl6
notviki \o 15:39
raschip That is most certainly a bug, it completely breaks user expectations. 15:40
ugexe irclog.perlgeek.de/perl6-toolchain...i_13727142 (also goes into the next day)
and its because when it caches what is loaded it does like %!loaded{$module.short-name} instead of %!loaded{$module.short-name, $module.ver, $module.auth} 15:41
15:42 Axord left
ugexe another point was that the *first* choice should always be in the current distribution if it exists 15:42
15:42 pierre_ joined
ugexe if you already have Foo::Bar installed, and are working on a local copy that does `use Foo::Bar;` it should imply using the copy from the local distribution not from CURI 15:43
raschip ugexe: "the *first* choice should always be in the current distribution if it exists". Why?
ugexe well how else do you know if changes you've made are taking affect? 15:44
raschip If I have a distribution with some version and install a new minor version of the module, I would expect the code to start using that. Anything else is a bug.
15:45 zakharyas joined
raschip It has to use new installed versions to facilitate security updates. 15:45
ugexe im talking about if you have Foo::Bar installed, then decide to `git clone github/foo-bar` and `perl6 -Ilib whatever`
raschip Modules should be forced to do it, in fact.
Use the newest version unless told otherwise. Anything else is a security bug. 15:46
ugexe there are other not-yet-implemented strategies for that (emulates, supercedes, superceded-by, etc) 15:47
raschip Debian forbids more than one version of something to ensure this, in fact.
15:47 pierre_ left
raschip Should follow user expectations. This isn't even about Perl6 programmers, but sysadmins giving support and users. 15:48
If they need to be aware things work differently in Perl6, they aren't going to like it.
ugexe well we certainly *are* supported multiple versions
thats not something that will go away
raschip Sure, supporting multiple versions isn't a problem.
ugexe Consider two installed distributions Foo:ver<1> and Foo:ver<2>, both of which provide Foo::Bar and `use Foo::Bar` inside Foo.pm - if I `use Foo:ver<1>` it would be expected that `use Foo::Bar` inside of Foo.pm (for v1) loads Foo::Bar from the same distribution and not from a possibly newer or older distribution 15:49
raschip But things should use the newest compatible version, otherwise users and sysadmins will have serious problems.
It wouldn't. If a version isn't especified, it should be the newer version. 15:50
RabidGravy it would be
ugexe then it breaks when the newer version isn't compatible with the older
RabidGravy I'm with ugexe here
raschip The behavior you suggest would be completely unexpected.
It has to follow Semver, sure. 15:51
I'm talking about minor upgrades.
RabidGravy I think you aren't getting the idea of "Distribution"
raschip It's like a package from CPAn, isn't it?
ugexe how will users have such expectations when it seems like multiple versions is not a common thing 15:52
raschip Say, there's a Foo:ver<1.1> and a Foo:ver<1.2>, I would expect the second to be loaded if someone asks for Foo::*. 15:53
ugexe thats not what im talking about though
RabidGravy right and it will do that
notviki ugexe: what happens if I have Foo installed and run zef install Foo (given a newer version has been released since previous installation)?
ugexe: I'd end up with two versions of Foo, no?
raschip The user expectation is that just installing Foo:ver<1.2> will solve a problem present on Foo:ver<1.1> 15:54
RabidGravy yes
ugexe notviki: if you explicitly declare the version it will install it (or if you use zef upgrade ...)
notviki And if you say leaving off the :ver<> will give me the first installed, then I'd end up with unupgraded module...
ugexe: and if I don't?
ugexe otherwise if you just do `zef instll Foo::Bar` it will tell you Foo::Bar:ver<*> is already installed
notviki :S
raschip That should upgrade it. 15:55
notviki Seems very uintutive
Especially if you compare with things like `cpanm` and `cpan` that upgrade if there's a new version available.
ugexe right, but its also not very intuitive for the meaning of :ver<*> to switch
hence zef upgrade
raschip Yep, prepare for angry bug reports, there will be a lot of angry sysadmins looking for you. 15:56
ugexe there will always be lots of angry sysadmins looking for you
notviki ugexe: and what syntax to "install latest"?
for ver
or :ver<latest-and-greatest> I mean 15:57
ugexe notviki: if its not already installed (any version of it) then just `zef install Foo::Bar`. if it *is* installed then `zef upgrade Foo::Bar` (i think)
notviki ugexe: but why is that condition exists?
raschip "zef install Foo::Bar" should upgrade the module if it installed.
notviki ugexe: I basically have to run zef upgrade, see it fail because the module is not installed, and then run zef install
ugexe because CUR.is-installed.grep(* ~~ Foo::Bar:ver<*>) == True
notviki ugexe: but I'm talking in more general terms. If I'm `use`ing a module, how to tell it to use latest and greatest version? 15:58
ugexe there is no way to `use` like that (and zef just followed suit with how that acts). im not saying that right or wrong, but thats why zef treats it the way it does (so no discrepency in the meaning of *) 15:59
notviki :o
ugexe if perl6 treated :ver<*> as latest-and-greatest then zef would be changed as well
notviki That's what I intuitively expect it to mean. So it's predictable. 16:00
I don't what point is there in asking for "whatever you happen to find first"
ugexe to be fair a lot of this stuff is only just now accessible due to lexical module loading now working
raschip notviki++
16:02 lukaramu left
ugexe as mst pointed out maybe there should be a way to declare like `use Foo::Bar:from<THIS DISTRIBUTION ONLY>` such that they dont have to use `use Foo::Bar:ver<this version>:auth<this auth>` and edit it every time they release a new version 16:04
raschip And the module ecosystem should make sure published modules don't make use of the feature that allows specifing specific versions of another module. 16:05
ugexe i couldn't disagree with that more
16:05 Ven joined
raschip (For minor versions) 16:05
ugexe best practice should be to *always* declare the version of what you are using
perl6 doesn't enforce semvar
raschip Far major versions, yes. 16:06
ugexe you can have poop emoji as your version if you want
notviki lol
ugexe if you want to do the semver thing then you do `use Foo::Bar:ver<1.*>` 16:07
raschip It's a good idea to declare a major version, otherwise it shouldn't declare any version at all.
notviki m: say Ver.new: "💩"
camelia rakudo-moar 338336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Undeclared name:␤ Ver used at line 1␤␤»
notviki m: say Version.new: "💩"
camelia rakudo-moar 338336: OUTPUT«v␤»
raschip Camelia ate the poop.
notviki m: dd Version.new: "💩" 16:08
camelia rakudo-moar 338336: OUTPUT«Version.new␤»
notviki s: Version, 'new', \("x")
SourceBaby notviki, Sauce is at github.com/rakudo/rakudo/blob/3383...ion.pm#L24
ugexe i only increment my versions by adding an additional poop emoji each iteration (so it still passes a version compare)
notviki m: dd Version.new: ["💩"], "💩", 42 16:09
camelia rakudo-moar 338336: OUTPUT«Version.new('💩')␤»
notviki m: Version.new(["💩"], "💩", 42).perl.EVAL.perl.say
camelia rakudo-moar 338336: OUTPUT«Version.new␤»
notviki m: Version.new(["💩"], "💩", 42).perl.say 16:10
camelia rakudo-moar 338336: OUTPUT«Version.new('💩')␤»
notviki heh, bug
ugexe m: say Version.new("💩") cmp Version.new("💩💩") # ok maybe not 16:11
camelia rakudo-moar 338336: OUTPUT«Same␤»
ugexe but theoretically! 16:12
notviki m: say Version.new(" ") cmp Version.new(" . ") 16:13
camelia rakudo-moar 338336: OUTPUT«Same␤»
notviki m: say Version.new(" . ").Stringy
camelia rakudo-moar 338336: OUTPUT«␤»
notviki it's also a bug
at the very list because it silently goes for Version.new() 16:14
raschip New versions have security fixes and should be used. Using outdated versions is a security bug.
It's better to break software otright than silently keeping security bugs.
outright* 16:15
ugexe m: say v1.💩 cmp v1.💩💩 # boo
camelia rakudo-moar 338336: OUTPUT«5===SORRY!5=== Error while compiling <tmp>␤Malformed postfix call␤at <tmp>:1␤------> 3say v1.7⏏5💩 cmp v1.💩💩 # boo␤»
ugexe m: say v1.1 cmp v1.2
camelia rakudo-moar 338336: OUTPUT«Less␤»
notviki .u poop
yoleaux No characters found
raschip She just eats it.
If users or admins want to keep old versions around, they should be able to, but the software deciding that on it's own is very bad. 16:18
ugexe tbf its not entirely difficult to implement your own CompUnit::Repository that resolves things its own way
16:18 regnarg joined
raschip It's should be easy. And predictable. 16:19
It*
16:19 cdg left, shayan_ joined, lucasb left 16:20 cdg joined
ugexe consider something that has a depends on "Foo::Bar:ver<1.*>" and you already have Foo::Bar:ver<1.0> installed but a Foo::Bar:ver<1.9> exists in the ecosystem (but is not installed). Not everyone expects that it should have to download the newer version of Foo::Bar since its already fulfilled 16:21
raschip No new downloads, you're right on that.
And I agree with you zef and panda should do the same ar P6 itself. It's P6 that should be fixed. 16:22
ugexe so the meaning of * now changes with context. that is not predictable. so the problem is it cant be so simple and also be predictable
raschip Do the multiple versions are in the same place on @*INC? 16:23
16:23 kaare_ joined
ugexe they are placed in whatever CompUnit::Repository you install them to 16:23
raschip I see. 16:24
16:24 cdg left
raschip Can't it be solved by an option of the Comp::Unit::Repository? To return the right versions? 16:25
ugexe CUR (CompUnit::repository) must implement a .resolve method that serves that purpose yes
raschip It's possible to implement a CUR that returns the latest version unless told otherwise, or that understands SemVer? It's an important feature. 16:27
Should be the default. 16:28
16:29 Ven left
ugexe they all understand semver already 16:31
16:32 Ven joined, zakharyas left
raschip They do something with it? 16:33
ugexe in some parts yes 16:34
github.com/rakudo/rakudo/blob/nom/...on.pm#L512 16:35
thats the real problem (caching)
raschip When is the cache invalidated?
ugexe caching on the short-name (the Foo::Bar of Foo::Bar:ver<...>:auth<...>)
never - it shouldn't have to be 16:36
raschip This cache is saved to the disk?
ugexe its just mapping a loaded CompUnit to something its searching for
16:36 BenGoldberg joined 16:38 dugword joined
raschip What is the scope of the cache? If it ends up there, all P6 invocations will use it? 16:39
16:40 ChoHag joined
ugexe its just a way to memoize the loading code for a specific request for a module 16:41
raschip When P6 starts, this cache is empty? 16:42
16:42 dugword left 16:44 petrutrimbitas left
ugexe you're over thinking this. it just means `return %!loaded{$spec.short-name} if %!loaded{$spec.short-name}:exists;` needs to s/$spec.short-name/~$spec/ 16:44
(slightly simplified, as that doesn't cover version ranges, but works other than that) 16:45
raschip I wouldn't say I'm overthinking it too much, I was just asking.
16:45 BenGoldberg left, Ven left
raschip So, you say the problem with using a newer version is that it's cached in the way above? 16:46
16:46 small-wolf joined
ugexe yes, but using a "different" version period 16:47
16:47 pyrimidine left
raschip Ok, but it's not a problem to keep using the same version in the sameinvocation of the program. Users and admins already are used to restart services to make them load newer versions. 16:48
Even in Unix-like systems that overwrite libraries when upgrading that is necessary.
16:48 small-wolf left, pyrimidine joined
ugexe but in perl6 you can do `{use Foo::Bar:ver<1>} {use Foo::Bar:ver<2>}` 16:49
raschip Yes, if it is specified, use whatever was specified. The case in question is when there's no version specified. 16:50
It should use new versions after the program is restarted.
ugexe the example I showed ignores the version
raschip Uses the first one it sees? 16:51
ugexe first one that was loaded
the "first one it sees" problem is separate 16:52
raschip ok
16:52 Ven joined
raschip It's not the problem I'm concerned with. It's only when there's no version specified. 16:53
16:54 hankache left 16:57 shayan_ left 16:59 Ven left, dugword joined, dugword left 17:00 dugword joined 17:07 pmurias joined
pmurias in Backtrace.pm there is a comment "note that backtraces are nqp::list()s, marshalled to us as a List" 17:08
what does the marshalling
?
arnsholt The HLL interface in NQP presumably, as configured by nqp::sethllconfig or whatever the op is? 17:12
17:16 xinming_ joined 17:20 xinming left, cdg joined
webstrand I'm trying to incrementally parse $*IN with a grammar. In exegesis 5, a mechanism for binding a scalar to a stream, but that doesn't seem to exist. Is this currently possible? 17:22
17:25 cdg left
notviki is that the Cat type? It's NIY 17:25
webstrand Not sure, google doesn't turn up anything for Cat. The proposed syntax was: my $text is from($*ARGS); 17:28
17:30 cdg joined 17:32 Ven joined 17:35 cdg left, PapaChub joined
pmurias webstrand: AFAIK it NIY 17:37
17:39 small-wolf joined
AlexDaniel webstrand: that's interesting, at some point I've wondered about this too. What are you trying to do, by the way? 17:39
pmurias arnsholt: thanks, forgot to set the hllRole 17:40
17:41 cdg joined
webstrand AlexDaniel: I' 17:41
AlexDaniel oops, seems like this answer is a Cat… :)
webstrand Do you know where I can find documentation on cat? 17:42
AlexDaniel webstrand: it's not yet implemented
notviki How can I simulate `is default` on a routine without actually usign the trait? The trait just `does role { method default() { True } }`; I tried multi foo {...} does role {...] but that doesn't do it. Any idea?
webstrand But somewhere, someone has specified what Cat is, right? 17:43
notviki webstrand: try looking on design.perl6.org/
AlexDaniel webstrand: vaguely, yea
17:44 pierre_ joined
notviki m: multi foo (Rational, Rational) {say "got it"}.^mixin(role { method default() { True } }); multi foo (Real, Real) {say "fail"}; foo 1.1, 1.1 17:44
camelia rakudo-moar 338336: OUTPUT«Ambiguous call to 'foo'; these signatures all match:␤:(Rational $, Rational $)␤:(Real $, Real $)␤ in block <unit> at <tmp> line 1␤␤»
17:45 Ven left
pmurias 65 17:47
sorry
17:48 pierre_ left
notviki BINGO! 17:50
17:52 Ven joined
webstrand I don't suppose there's a low-level interface to grammars, so that I could manually feed in data? 17:55
17:56 shayan_ joined 18:00 zakharyas joined
raschip I think we hava an XY problem here. 18:00
What's the problem you're finding on the standard interface?
18:01 Ven left
webstrand In my limited experience with PEG parsers, there's often a way to take action when a subrule matches 18:01
18:01 shayan_ left
webstrand If you're parsing a large file, or the data is from a slow source, it's nice not to have to load the whole thing into memory 18:02
From what I can tell, grammars currently require all of the data to be in a string before parsing. 18:03
lizmat that is correct
PapaChub Stupid question: What's the idiomatic way to "die" from a script without printing a backtrace? Short of redefining my own "sub die { note ~@_; exit 1 }"
18:04 shayan_ joined
lizmat exit 18:04
PapaChub: ^^^
notviki But how to print the message?
ugexe m: for 1..5 { exit note "Error" }
camelia rakudo-moar 338336: OUTPUT«Error␤»
PapaChub lizmat Does that take a message?
notviki oh
PapaChub Neat 18:05
webstrand Since there's no mechanism to create 'lazy' strings, I was hoping I could drive the parser myself by supplying individual characters
raschip Is there a field separator in what you're trying to parse?
18:06 zakharyas left
notviki wonders what exit note ... would do if note fails.. 18:06
lizmat well, then note would return False, and exit would return 0 ? 18:07
notviki Yeah
m: say +note 0/0
camelia rakudo-moar 338336: OUTPUT«Attempt to divide by zero using div␤ in block <unit> at <tmp> line 1␤␤Actually thrown at:␤ in block <unit> at <tmp> line 1␤␤»
notviki
.oO( bad example )
m: exit 1+note "Error" 18:08
camelia rakudo-moar 338336: OUTPUT«Error␤»
webstrand raschip: Yeah, newlines. I was hoping for a more general solution, so that I could parse more complicated formats, like VDF
AlexDaniel b: say ‘test’
c: say ‘test’
Undercover AlexDaniel, Something's wrong: test␤␤ERR: Cannot resolve caller sourcery(Bool); none of these signatures match:␤ ($thing, Str:D $method, Capture $c)␤ ($thing, Str:D $method)␤ (&code)␤ (&code, Capture $c)␤ in block <unit> at -e line 6␤␤
lizmat webstrand: could you do it with .split ?
AlexDaniel Undercover: get out of here!
notviki AlexDaniel: I can change its trigger if you want to use that for something more useful. 18:09
webstrand lizmat: yep, or .lines
lizmat well, .split on IO::Handle is supposed to be lazyish
AlexDaniel notviki: I'm just thinking that “c: 2015.12” is easier to type than “commit: 2015.12”, but I'm going to add “mc:” anyway
mc: say 42
notviki ok 18:10
AlexDaniel e: say 42 18:11
raschip If there is a filed separator, it's possible to define IFS to that and P6 will pull it piece by piece for you.
notviki goes to hack Undercover
raschip The grammar engine doesn't work byte by byte, I think.
18:12 Ven joined
PapaChub m: CATCH { note .payload; exit 1 }; die "Error" 18:12
camelia rakudo-moar 338336: OUTPUT«Error␤»
AlexDaniel notviki: do you want it to be 2015.12 or 2015.12,HEAD ?
lizmat m: say 2017.is-prime # USP of 2017 so far
camelia rakudo-moar 338336: OUTPUT«True␤»
18:12 Undercover joined, ChanServ sets mode: +v Undercover
moritz wants to publish at least one book in 2017 18:13
notviki AlexDaniel: juse 2015.12
*just
18:13 Ven left
notviki c: dsadasdas 18:13
Undercover: help
Undercover notviki, Use s: trigger with args to give to sourcery sub. e.g. cover: Int, 'base'. See modules.perl6.org/dist/CoreHackers::Sourcery
notviki heh
lizmat (courtesy of xkcd.com/1779/ )
18:13 teksteiner joined 18:14 Undercover left, Undercover joined, ChanServ sets mode: +v Undercover
notviki Undercover: help 18:15
Undercover notviki, Use cover: trigger with args to give to sourcery sub. e.g. cover: Int, 'base'. See modules.perl6.org/dist/CoreHackers::Sourcery
notviki cover: Int, 'base'
Undercover notviki, The code is hit during stresstest [WARNING: this line is a proto! Check individual multies] See perl6.WTF/src_core_Int.pm.coverage.html#L64 for details
notviki Oh hilarious. Old coverage is actually still on the site because the broken coverage used different filenames. 18:16
18:16 shayan_ left
notviki Yey? :) 18:16
18:18 evalable6 joined 18:19 evalable6 left, committable6 left, bisectable6 left, petrutrimbitas joined, evalable6 joined, committable6 joined, ChanServ sets mode: +v committable6, bisectable6 joined, ChanServ sets mode: +v bisectable6
raschip Welcome back, bots. 18:20
18:20 bisectable6 left 18:21 committable6 left
raschip What did I do? 18:21
moritz nobody will ever know for sure. 18:22
18:23 bisectable6 joined, ChanServ sets mode: +v bisectable6 18:24 committable6 joined, ChanServ sets mode: +v committable6 18:25 committable6 left
arnsholt <3 git commit --amend 18:28
(And git in general)
18:30 committable6 joined, ChanServ sets mode: +v committable6
jonadab arnsholt: Indeed. 18:30
18:32 Ven joined 18:33 petrutrimbitas left
PapaChub m: &note.wrap: { callsame; False }; exit note "exit zero" 18:34
camelia rakudo-moar 338336: OUTPUT«exit zero␤»
notviki m: note "exit zero", exit 18:35
camelia ( no output )
notviki riiight
18:35 committable6 left
notviki m: note("exit zero"), exit 18:35
camelia rakudo-moar 338336: OUTPUT«exit zero␤»
notviki m: "exit zero".note, exit
camelia rakudo-moar 338336: OUTPUT«exit zero␤»
18:35 committable6 joined, ChanServ sets mode: +v committable6
PapaChub m: note "exit zero" => exit 18:36
camelia ( no output )
rightfold say &note.WHY 18:37
m: say &note.WHY
camelia rakudo-moar 338336: OUTPUT«Nil␤»
rightfold I don't understand WHY 18:38
notviki m: say WHY 'Life, the Universe and Everything': 18:41
camelia rakudo-moar 338336: OUTPUT«42␤»
ugexe m: for 1..5 { exit() R, note("exit 0") }
camelia rakudo-moar 338336: OUTPUT«Potential difficulties:␤ Useless use of R, in sink context␤ at <tmp>:1␤ ------> 3for 1..5 { exit() 7⏏5R, note("exit 0") }␤exit 0␤»
ugexe m: for 1..5 { exit() R, note("exit 0") if 1 } 18:42
camelia rakudo-moar 338336: OUTPUT«exit 0␤»
ugexe weird
ugexe refers to R, as the "right-after" operator in my head 18:43
18:44 Vynce joined 18:45 Ven left
PapaChub m: my $dir = "."; $dir = $dir.IO.resolve.Str; dd $dir 18:45
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/home/camelia"␤»
PapaChub m: my $dir = "."; $dir .= IO.resolve.Str; dd $dir
camelia rakudo-moar 338336: OUTPUT«IO::Path $dir = ".".IO(:SPEC(IO::Spec::Unix),:CWD("/home/camelia"))␤»
PapaChub Is there a shortcut for ".="-ing a longer method chain? 18:46
18:47 committable6 left, committable6 joined, ChanServ sets mode: +v committable6
PapaChub m: my Str $dir = "."; $dir .= IO.resolve.Str; dd $dir 18:48
camelia rakudo-moar 338336: OUTPUT«Type check failed in assignment to $dir; expected Str but got IO::Path (".".IO(:SPEC(IO::Spec...)␤ in block <unit> at <tmp> line 1␤␤»
ugexe m: my $a = 1 andthen {$_++}; say $a
camelia rakudo-moar 338336: OUTPUT«2␤»
18:48 committable6 left, committable6 joined, ChanServ sets mode: +v committable6
ugexe but whatever you are trying to do with those IO objects looks wrong 18:49
18:49 shayan_ joined
ugexe mutating a string type into an IO::Path for instance 18:50
18:50 pyrimidine left
PapaChub I was hoping to mutate it back to a Str (i.e., go from "." to "/some/path") 18:50
18:50 pyrimidine joined
ugexe ah right 18:51
18:52 Ven joined
ugexe not ideal but you could do 18:53
m: my Str $dir = "." andthen {$_ = .IO.resolve.Str}; dd $dir 18:54
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/home/camelia"␤»
ugexe not sure why you get that type check error actually 18:55
PapaChub sub MAIN (Str $dir is copy = ".") { $dir = $dir.IO.resolve.Str }
18:55 pierre_ joined
PapaChub I think ".=" only does one method 18:55
18:55 skids joined
PapaChub m: sub MAIN (Str $dir is copy = ".") { $dir = $dir.IO.resolve.Str; dd $dir } 18:56
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/home/camelia"␤»
PapaChub m: sub MAIN (Str $dir is copy = "/tmp") { $dir = $dir.IO.resolve.Str; dd $dir }
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/tmp"␤»
PapaChub Does camelia accept command-line parameters?
ugexe yu can call &MAIN(...) 18:57
PapaChub m: sub MAIN (Str $dir is copy = ".") { $dir = $dir.IO.resolve.Str; dd $dir }; &MAIN("/tmp")
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/tmp"␤Str $dir = "/home/camelia"␤»
PapaChub m: multi sub MAIN (Str $dir is copy = ".") { $dir .= IO.resolve.Str; dd $dir }; &MAIN("/tmp") 18:58
camelia rakudo-moar 338336: OUTPUT«Type check failed in assignment to $dir; expected Str but got IO::Path ("/tmp".IO(:SPEC(IO::S...)␤ in sub MAIN at <tmp> line 1␤ in block <unit> at <tmp> line 1␤␤»
ugexe I often find myself wishing we could do coercing for that ala `sub foo(Str(IO::Path) $dir) { }` 18:59
PapaChub m: multi sub MAIN (Str $dir is copy = ".") { $dir = $dir.IO.resolve.Str; dd $dir }; &MAIN("/tmp")
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/tmp"␤Str $dir = "/home/camelia"␤»
PapaChub m: sub SUB (Str $dir is copy = ".") { $dir = $dir.IO.resolve.Str; dd $dir }; &SUB("/tmp")
camelia rakudo-moar 338336: OUTPUT«Str $dir = "/tmp"␤»
19:01 Ven left 19:03 Ven joined
webstrand The docs list a number of pragmas that are NYI, such as MONKEY-WRENCH. Neither the design nor the roast mention them. Any idea where they're specified? 19:07
notviki webstrand: they're not. They're just reserved. 19:08
19:08 raschip left
webstrand Shouldn't they be TBD then? 19:08
notviki We just wanted to call dibs on all the cool MONKEYs if we come up with something for them in the future
webstrand: where are they listed?
webstrand understandable. Here: docs.perl6.org/language/pragmas
moritz there should be a statement that all upper-case names are reserved 19:09
instead of listing specific ones
notviki webstrand: yeah, that needs some lovin'
moritz: that seems pretty harsh.
I guess that would make my SPEC::Func illegal? 19:10
webstrand I can submit a pull request to change the pragmas. Shall I mark all pragmas marked [NYI] but not listed in either design or the roast as [TBD]? 19:11
notviki webstrand: a more awesome approach would be to add them into roast with just a simple eval-dies-ok 'use MONKEY-WHATEVER'; and then document them as just reserved for possible future use. 19:14
webstrand: because we're basically not supposed to document anything that's not in roast
And there should also be Issues in doc and/or roast for these
pmurias are they specced to die?
* should they be? 19:15
notviki pmurias: they're not specced at all
webstrand I can do that
notviki m: use MONKEY-WRENCH
camelia ( no output )
notviki m: use MONKEY-WRENCH;
camelia ( no output )
notviki Isn't that one of the reserved?
pmurias notviki: you want them to be specced to die
notviki We already had this discussion before. 19:16
ugexe i'd really like a way to access the list of pragmas rakudo/implementation supports
pmurias notviki: when?
19:17 Ven left
ugexe then zef could ignore depends on those items, and Test::META could warn users 19:18
19:19 Tonik joined
moritz ugexe: +1 19:19
notviki webstrand: I'd expect them to die with a message that they're reserved but I see that they currently don't so perhaps those tests don't work
*won't work
webstrand wouldn't that be a good thing? Then the tests will succeed when the pragmas correctly die? 19:20
notviki pmurias: I believe this was a previous discussion: irclog.perlgeek.de/perl6/2016-12-02#i_13669763
webstrand: oh, OK, I see the proposal was to add it as a "does NOT die" test: irclog.perlgeek.de/perl6/2016-12-02#i_13669791 19:21
m: use MONKEY-BRAINS 19:22
camelia ( no output )
notviki m: use MONKEY-BALLS
camelia rakudo-moar 8d3595: OUTPUT«===SORRY!===␤Could not find MONKEY-BALLS at line 1 in:␤ /home/camelia/.perl6␤ /home/camelia/rakudo-m-inst-1/share/perl6/site␤ /home/camelia/rakudo-m-inst-1/share/perl6/vendor␤ /home/camelia/rakudo-m-inst-1/share/perl6␤ CompUnit::…»
ugexe webstrand: a pragma isnt a dependency/module, so while you can query something like $_.is-installed.grep($identity) for the later (module) there is no way to tell if its a pragma that exists
notviki m: use Test; use-ok 'MONKEY-BRAINS'
camelia rakudo-moar 8d3595: OUTPUT«ok 1 - The module can be use-d ok␤»
notviki heh
19:23 Ven joined
ugexe maybe they belong somewhere else, but they dont belong under depends 19:23
pmurias I don't see any value in adding a test for "reserved" pragmas
ugexe warn the user the dependency list contains a pragma and that is not what they should do? 19:24
pmurias ugexe: having zef test for a dependency on a pragama makes sense 19:25
ugexe: I meant having a test in the spec that 'use MONKEY-WRENCH' dies
notviki that it lives 19:26
or dies with "this is reserveed"
ugexe ah sorry, wasn't following the rest :)
notviki The value is pretty obvious if you don't assume Rakudo represents Perl 6
or defines Perl 6, I should say
19:27 Vynce left
notviki We can't claim MONKEY-X is reserved in Perl 6 language just because we typed some letters in Rakudo implementatino. That's what the roast is for. 19:28
pmurias why is MONKEY-X reserved?
notviki docs.perl6.org represents Perl 6 Language, not Rakudo. Hence why it follows the rule that we don't document stuff that's in roast.
I think TimToady is the author of the most MONKEY reservasion commits, ask him vOv 19:29
pmurias Rakudos currently allows MONKEY-WRENCH, it's just a noop
19:30 Ven left
notviki Right, you can't have a module named MONKEY-WRENCH; you won't be able to `use` it 19:31
dalek c: 65172ba | (Tom Browder)++ | doc/Language/faq.pod6:
no need for parens
19:32
synopsebot6 Link: doc.perl6.org/language/faq
geekosaur TinToady reserved the MONKEY* namespace for "dangerous" things, iirc
notviki
.oO( can still `require` it tho)
geekosaur all of which are expected to be pragmas; "dangerous" normal modules are something for the community to work out 19:33
notviki hah
mst geekosaur: <auth:DCONWAY> 19:37
geekosaur not going there kthxbai :p
19:38 petrutrimbitas joined 19:41 petrutrimbitas left 19:42 Predator00100 joined 19:45 cdg left, espadrine joined 19:49 domidumont joined 19:58 cyphase left 19:59 noganex_ joined 20:02 Ven joined 20:03 noganex left, cyphase joined 20:05 Tonik left, Predator00100 left 20:08 regnarg left 20:13 labster joined 20:14 labster left, labster joined 20:15 petrutrimbitas joined 20:16 labster left, Ven left 20:17 petrutrimbitas left 20:21 Ven joined 20:22 labster joined, petrutrimbitas joined 20:25 zakharyas joined 20:27 domidumont left 20:28 pyrimidine left, shayan_ left 20:29 pyrimidine joined 20:46 Ven left, TEttinger joined 20:47 petrutrimbitas left 20:50 Ven joined 21:01 Ven left 21:09 Ven joined 21:11 pierre_ left 21:12 pierre_ joined 21:13 webstrand left 21:16 Ven left 21:17 pierre_ left 21:20 webstrand joined 21:30 Ven joined
samcv o/ 21:37
morning all
21:38 lukaramu joined
teksteiner good evening samcv and everyone o/ 21:42
21:44 cdg joined 21:45 kaare_ left 21:52 xinming_ left 21:54 xinming joined
samcv :) 21:55
tbrowder Hi, samcv and teksteiner! 22:00
samcv <notviki> docs.perl6.org represents Perl 6 Language, not Rakudo. Hence why it follows the rule that we don't document stuff that's in roas 22:01
don't you mean _not_ in roast?
webstrand I'm getting segfaults from Inline::Python's test suite on rakudo-git. Does anyone else have this problem? 22:02
22:02 Ven left
notviki samcv: yes 22:03
notviki rocks out to www.youtube.com/watch?v=yTpOy6ydf_0 22:04
Perfect music to squash bugs to!
webstrand: I'm just getting this: pyhelper.c:1:20: fatal error: Python.h: No such file or directory 22:05
#include "Python.h"
webstrand Your probably missing python-dev or python-devel?
notviki probably 22:06
webstrand: what's rakudo-git BTW? 22:07
webstrand I mean i built rakudo from git HEAD 22:08
notviki OK. You can try a proper release.
japhb was having issues with Native::Blob. Maybe related?
22:09 Ven joined
webstrand Ah. Last time i was hear HEAD was basically the release. I'll rebuild 22:09
notviki irclog.perlgeek.de/perl6-dev/2016-...i_13825883
err, no, HEAD is development
You can just checkout the release tag: 2016.12 22:10
and build that way
Otherwise, compiler releases are at rakudo.org/downloads/rakudo/ and user-facing distro (with docs and modules) is at rakudo.org/downloads/star/
teksteiner Quick question, what would be the easiest way to remove all newlines from a String? 22:12
notviki teksteiner: $string.lines.join
lizmat m: "a\nb\nc\n\nd".trans("\n" => "").say # teksteiner 22:13
camelia rakudo-moar b2332c: OUTPUT«abcd␤»
teksteiner notviki thank you :)
samcv @notviki, on perl6.fail “Search is NIY”
what is this NIY and when it be implemented? 22:14
:P
22:14 pierre_ joined
samcv (the search box default greyed out text) 22:14
notviki samcv: NIY is Not Implemented Yet as for when... I currently have very little desire to add it, but patches welcome: github.com/zoffixznet/R6 22:15
samcv oh thought it was typo to be NYI 22:16
ignore me then
notviki I've no idea why everyone writes it as NYI..
22:17 Ven left
mst Not Yet Implemented 22:17
notviki I've no idea why everyone writes it as Not Yet Implemented
mst because 'Not Yet X' is a common phrasing
notviki :) 22:18
22:18 pierre_ left
samcv and putting the X at the end is clearer i think 22:19
than in the middle of the word
geekosaur "is X ...?" "not yet"
lizmat NYD # not yet documented
samcv is NYA a thing too
NYC, New York not sure what that means 22:20
maybe somebody can think of something witty
notviki *shrug*
I know the other side of the pond people get pissed and bars and cars have boots, so what do I know :P 22:21
s/and/in/;
114M results in google for Not Yet Implemented and only 7M for NIY 22:22
"Yet is normally placed at the end of the clause, particularly in informal English and in questions, but can go immediately after not in negative sentences in a more formal style, such as Cambridge Dictionaries and the British Library have used. Compare also the following:" 22:23
22:26 committable6 left, committable6 joined, ChanServ sets mode: +v committable6 22:28 Ven joined 22:29 Ven left
jdv79 not yet calm,capable,chaos,cheap,classy,clean,cynical 22:32
geekosaur the questions one is roughly akin to the inversion structure of questions: does X Y? X does Y. 22:33
webstrand notviki: moarvm/nqp/rakudo at tag 2016.12: Inline::Python's t/call_back.t segfaults 22:40
notviki webstrand: please report it as a bug by emailing to [email@hidden.address] 22:41
22:49 Ven joined 22:52 newbie1 joined
skids is S01-perl-5-integration/hash.t a well-known failing test right about now? 22:52
notviki Not seen it fail, though I don't know if I have the latest and greatest Inline::Perl5 22:53
skids oh, p5, maybe I need to update the mod.
22:55 rindolf left 22:56 wamba left 22:57 FROGGS left 22:58 RabidGravy left 23:01 Ven left 23:02 Tonik joined 23:03 cpage_ left 23:04 cpage_ joined 23:06 pmurias left 23:08 Ven joined 23:10 Tonik left 23:15 grondilu left 23:16 Ven left 23:17 grondilu joined
notviki skids: did it work? 23:23
23:27 kyan joined 23:28 Ven joined 23:29 Ven left 23:32 zakharyas left
dugword I'm getting this error and I'm not sure why: "Cannot unbox a type object (int) to an int" What does that mean? 23:33
Are ints not ints? Or do the parens mean something 23:34
notviki :S what the... 23:36
dugword: is that actually the error?
or did you type it by hand 23:37
What's the code that reproduces it?
rightfold the type object isn't an integer
it's a type object
notviki m: my int $x = int
camelia rakudo-moar 87fefa: OUTPUT«Cannot unbox a type object (int) to int.␤ in block <unit> at <tmp> line 1␤␤»
notviki Ah, right you can repro it that way
dugword That is a copy paste
geekosaur dugword, a type object is a typed undef
so no, it doesn't fit into a native int 23:38
notviki m: my $x = int; dd $x
camelia rakudo-moar 87fefa: OUTPUT«int $x = int␤»
notviki neat
geekosaur (this is a bit of a corner case for native types)
notviki m: my $x = int; dd $x.new: 42
camelia rakudo-moar 87fefa: OUTPUT«42␤»
notviki anyway
dugword Okay, so my code must be passing in a type object instead of a value... that could be
notviki dugword: right, ints can't take type objects 23:39
well no natives can
dugword That really helps, thanks
23:48 cooper left, Ven joined
notviki skids: weird... t/spec/S01-perl-5-integration/import.t just failed for me, but succeeded when I re-ran it on its own :( 23:52
23:54 Ven left 23:56 Ven joined, clasclin joined