»ö« 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:12 BenGoldberg joined 00:13 cdg_ left 00:18 kurahaupo_ left, kurahaupo joined 00:30 AlexDaniel left 00:34 lookatme joined
lookatme morning 00:35
00:49 aborazmeh joined, aborazmeh left, aborazmeh joined, Cabanossi left 00:51 Cabanossi joined 00:52 mr-foobar left 00:56 mr-foobar joined 01:22 mr-foobar left 01:25 mr-foobar joined 01:30 astj_ left 01:31 astj joined 01:52 mr-foobar left 01:56 mr-foobar joined 02:00 pelev left, lucs left 02:05 Cabanossi left, cdg joined 02:06 Cabanossi joined 02:15 llfourn_ left
raiph .tell samcv I suggest you ping rjbs (Pumpking before sawyerx) and novapatch (Unicode focused Perl dev) re ideas about where they think P6 needs to go Unicode wise, then talk about that 02:18
yoleaux raiph: I'll pass your message to samcv.
samcv thanks raiph
yoleaux 02:18Z <raiph> samcv: I suggest you ping rjbs (Pumpking before sawyerx) and novapatch (Unicode focused Perl dev) re ideas about where they think P6 needs to go Unicode wise, then talk about that
raiph yw 02:19
samcv i have a headache. gonna take a nap for a bit
raiph sweet dreams, gnite #perl6 02:20
02:21 raiph left 02:23 mr-foobar left 02:24 mr-foobar joined 02:30 lucs joined, lucs left 02:32 noganex_ joined 02:34 lucs joined, noganex left, Cabanossi left 02:36 Cabanossi joined 03:00 kurahaupo left, kurahaupo joined, ChoHag left 03:04 Sense8 joined 03:06 raschipi joined, mr-foobar left 03:09 aborazmeh left, mr-foobar joined 03:12 kurahaupo_ joined, lizmat left 03:14 kurahaupo left
BenGoldberg m: gist.github.com/BenGoldberg1/d0764...549f4bc359 03:19
camelia 13
15
4
17
5===SORRY!5=== Error while compiling <tmp>
Invalid name
at <tmp>:41
------> 3sub my_sort ( Any, Any --> int ) is7⏏5 :callback {...};
BenGoldberg doesn't comprehend why it's failing there. 03:20
03:22 aborazmeh joined, aborazmeh left, aborazmeh joined
geekosaur shouldn't it be 'is callback'? 03:22
remember that :$callback! in the declaration is shorthand for (callback => $callback!), the first part being the name used when invoking it 03:24
03:25 aborazmeh left
BenGoldberg Without the colon, I get Can't use unknown trait 'is callback' in a sub+{callable[int]} declaration. 03:27
03:30 lizmat joined
geekosaur I wonder if it has to be more specific (Sub instead of Callable) 03:33
iirc the grammar's handling of traits is a bit 'special'
03:34 Cabanossi left
BenGoldberg Nope, even with Sub it's a no go. 03:35
03:36 Cabanossi joined
BenGoldberg wonders where the (lowercase) "callable[int]" comes from in that declaration. 03:42
03:43 llfourn left 03:46 llfourn joined
lookatme BenGoldberg, The sub need signature like this `(Sub \c, :$callback!)` 03:46
I dont' know why 03:47
03:47 Cabanossi left 03:50 Cabanossi joined
BenGoldberg lookatme++ 03:52
Routine also works. I guess Callable is too vague? ;)
geekosaur that was what I tried to tell you earlier 03:53
so I have no idea what you understood me to mean
BenGoldberg Sorry, I was confused 03:58
04:22 kyan left 04:32 khw left 04:35 lucs_ joined 04:36 lucs left 04:37 curan joined
lookatme m: say Sub ~~ Callable; 04:37
camelia True
04:40 |oLa| joined
geekosaur like I said earlier, the grammar's handling of traits is a bit 'special' 04:41
in particular, it is *not* blindly making a call and selecting the right trait by multi candidate 04:42
lookatme geekosaur, em, thanks 04:48
04:54 stmuk joined 04:56 stmuk_ left 04:57 |oLa| left 04:58 stmuk_ joined 05:00 stmuk left 05:02 Cabanossi left 05:05 Cabanossi joined 05:13 Guest67551 left 05:14 anon joined, anon is now known as Guest38463
Geth ecosystem: b2f31fdf10 | (Nick Logan)++ (committed using GitHub Web editor) | META.list
App::ecogen

  github.com/ugexe/Perl6-App--ecogen
05:17
05:24 BenGoldberg left 05:30 xtreak joined 05:32 Guest38463 left 05:33 pilne left 05:34 Cabanossi left 05:35 Cabanossi joined 05:38 anon_ joined, |oLa| joined 05:39 |oLa| left 05:43 domidumont joined 05:44 lowbro joined 05:46 wamba joined 05:50 domidumont left, domidumont joined 05:52 raschipi left, bugbug left 05:59 cdg left 06:14 Sense8 left 06:23 ChoHag joined 06:25 domidumont left 06:32 tipdbmp joined
tipdbmp How can I lookup custom traits on attributes: sprunge.us/HGSB 06:34
06:36 domidumont joined 06:46 salv0 joined
timotimo inspect its .^roles 06:50
tipdbmp Why does the SetHash reports not having any keys: sprunge.us/aJJL
timotimo hm though many traits really just set an attribute on the thing at the right time
tipdbmp m: multi sub trait_mod:<is>(Attribute $a, :$no-serialize) { }; class Foo { has uint32 $.bar is no-serialize }; say Foo.^attributes[0].roles; 06:52
camelia No such method 'roles' for invocant of type 'Attribute'. Did you mean any of these?
does
roll

in block <unit> at <tmp> line 1
timotimo im on a smartphone touchscreen keyboard so cant experiment rn
tipdbmp Okay.
timotimo you need .^roles 06:53
tipdbmp m: multi sub trait_mod:<is>(Attribute $a, :$no-serialize) { }; class Foo { has uint32 $.bar is no-serialize }; say Foo.^attributes[0].^roles;
camelia ()
timotimo but that would only help you if you actually mixed something into the attribute obj
tipdbmp I am just storing the attribute's WHICH.Str into a hash, but when using a SetHash it doesn't seem to work? 06:54
The keys seem to disappear or something. 06:55
timotimo m: my SetHash $a .= new; $a{"FooBar"} = True; say $a.keys
camelia (FooBar)
timotimo oh, hah 06:57
traits are compile-time-applied, aren't they
tipdbmp m: multi sub trait_mod:<is>(Attribute $a, :$no-serialize) { $foo{$a.WHICH.Str} = True; }; class Foo { has u64 $.bar is no-serialize; }; say $foo.keys;
camelia 5===SORRY!5=== Error while compiling <tmp>
Variable '$foo' is not declared
at <tmp>:1
------> 3od:<is>(Attribute $a, :$no-serialize) { 7⏏5$foo{$a.WHICH.Str} = True; }; class Foo
tipdbmp m: my SetHash $foo .= new; multi sub trait_mod:<is>(Attribute $a, :$no-serialize) { $foo{$a.WHICH.Str} = True; }; class Foo { has u64 $.bar is no-serialize; }; say $foo.keys; 06:58
camelia 5===SORRY!5===
Type 'u64' is not declared
at <tmp>:1
------> 3HICH.Str} = True; }; class Foo { has u647⏏5 $.bar is no-serialize; }; say $foo.keys
Malformed has
at <tmp>:1
------> 3$a.WHICH.Str} = True; }; class Foo { has7⏏5 u64…
timotimo so you'll be storing stuff into that hash, and at run time you're assigning .= new to it
tipdbmp m: my SetHash $foo .= new; multi sub trait_mod:<is>(Attribute $a, :$no-serialize) { $foo{$a.WHICH.Str} = True; }; class Foo { has uint64 $.bar is no-serialize; }; say $foo.keys;
camelia ()
timotimo it works if you leave out the .= new
tipdbmp Huh but why? =) 06:59
It overwrites the old one...
timotimo simple ordering of execution 07:00
the .= new is one of the first things the code does at run time, but it had been putting values in during compile time, which is earlier
tipdbmp Right. 07:01
Isn't my SetHash $foo; uninitialized though?
timotimo to test you can also BEGIN set $is-no-serialize.keys
yep, but we have autovivification
tipdbmp ;)
timotimo hash access on an undefined variable will initialize the right type for you
observe autovivification of hashes inside a list: 07:02
m: my @the-list; @the-list[0]{"hi"} = "yup"; say @the-list.perl
camelia [{:hi("yup")},]
tipdbmp I think I'll use: my SetHash $is-no-serialize; BEGIN { $is-no-serialize = SetHash.new; }, as a reminder though. 07:03
timotimo bbl 07:05
07:05 abraxxa joined 07:09 nadim_ joined 07:11 wamba left 07:21 astj left, astj joined 07:23 astj left
tipdbmp How would one implement support for reading of/working with older versions (different number of attributes and/or in different order) of Foo?: sprunge.us/gBUO 07:23
07:23 astj joined 07:32 nadim_ left
timotimo m: use NativeCall; say nativecast(uint64, 10e1) 07:51
camelia Native call expected return type with CPointer, CStruct, CArray, or VMArray representation, but got a P6opaque (Num)
in sub nativecast at /home/camelia/rakudo-m-inst-1/share/perl6/sources/24DD121B5B4774C04A7084827BFAD92199756E03 (NativeCall) line 417…
timotimo m: use NativeCall; my $b = CArray[num64].new(10e2); say nativecast(CArray[uint64], $b)[0] 07:52
camelia 4652007308841189376
timotimo m: use NativeCall; my $b = CArray[num64].new(10e2); say nativecast(CArray[uint64], $b)[0].base(16)
camelia 408F400000000000
timotimo ^- very much not optimal, but does work
bbl 07:53
08:04 wamba joined 08:07 kyan joined 08:17 ufobat joined
ufobat when there are multi sub MAIN()'s, is there a way to force priting the "usage" the same as if i would not match the MAIN's prottypes with my invokation parameters 08:20
08:30 |oLa| joined, rindolf joined
sacomo ufobat, what happens when you use sub USAGE {} ? and just manually define the desired usage message? 08:32
ufobat a empty USAGE results in no usage 08:33
but i wanted to avoid having a manual USAGE because i'd could forget to change the USAGE if i modify the MAIN's 08:34
but, i'd like to have binary --help or something
sacomo yeah, the generated MAIN usage is much more convenient. I was having similar issues and ended up just manually defining USAGE. Maybe there is some better solution that I am not yet aware of. 08:35
ufobat okay :) 08:36
sacomo I have tested though,
defining USAGE does solve the problem you are having. 08:37
Also, now that I think of it, there is a way to print the dynamic usage in sub USAGE....
let me see if I can find it...
sub USAGE { say $?USAGE } 08:38
ufobat oh! 08:41
sacomo that might not work..
ufobat it does not 08:42
sacomo sub USAGE { usage } 08:43
but not dynamic 08:44
08:47 nowan_ joined 08:50 nowan left 08:54 rindolf left, parv joined
sacomo not sure how to get $?USAGE to work anywhere 08:59
09:01 rindolf joined
tipdbmp timotimo, how would one implement versioning?: sprunge.us/difE 09:03
09:07 jonas2 joined 09:12 TEttinger left 09:13 astj left, astj joined 09:18 astj left
timotimo tipdbmp: hmm, depends on how you want to access it in code in general 09:21
you definitely can't do it the way you've got there, because you can only declare one class of the same name in the same scope
09:22 xtreak left
timotimo if your versions are strictly linear, you can put a Foo inside Foo and another Foo inside that 09:23
09:23 xtreak joined
timotimo so Foo would be the "current" version, Foo::Foo would be current - 1 and Foo::Foo::Foo would be current - 2 09:23
i.e. peano integers in backwards :D
gotta go again
09:27 xtreak left 09:28 astj joined 09:33 Cabanossi left 09:35 parv left, Cabanossi joined 09:38 lookatme left 09:39 parv joined, xtreak joined 09:41 astj left 09:46 ChoHag left 09:53 espadrine left 09:57 ChoHag joined 09:59 astj joined 10:00 geekosaur left 10:03 astj left 10:04 parv left 10:06 xtreak left, xtreak joined 10:18 geekosaur joined, geekosaur left 10:21 geekosaur joined 10:26 xtreak left, curan left 10:27 astj joined
tipdbmp m: class FooBase {}; class Foo is FooBase {}; my Foo $foo = FooBase.new; 10:28
camelia Type check failed in assignment to $foo; expected Foo but got FooBase (FooBase.new)
in block <unit> at <tmp> line 1
geekosaur aren't you doing that backwards? 10:29
all Foo-s are Foobase-s, not all FooBase-s are Foo-s
tipdbmp Yeah, I don't inheritance...
know*
geekosaur m: class FooBase {}; class Foo is FooBase {}; my FooBase $foo = Foo.new; 10:30
camelia ( no output )
geekosaur so, a Foo is a FooBase plus something else (although in this case, that something is nothing :). So a Foo can be used anywhere a FooBase can be used, but there is no guarantee that an arbitrary FooBase or another class derived from FooBase (but not Foo) can be used like a Foo 10:32
10:33 Cabanossi left 10:35 Cabanossi joined
moritz that's where common sense enters the picture 10:44
sacomo hi all, I am writing a test that uses Proc::Async, but I can't kill the process at the end. .kill(9) isn't working... any suggestions? 10:47
.kill(SIGKILL) not working either 10:49
10:58 eveo joined
eveo sacomo: what's your perl6 version? 10:58
sacomo eveo, 2017.05
eveo sacomo: and you're using multiple .kills or something? 10:59
sacomo no, just a single kill right now
eveo sacomo: re $?USAGE, I don't think it's implemented yet. The var is there but it's not available or something
sacomo: got code you could show?
sacomo it doesn't error, but when the test ends I have a process still running
yeah, let me commit 11:00
eveo, github.com/scmorrison/Bailador/blo...-cli.t#L59 11:07
zengargoyle are there any modules in the ecosystem yet that are same name but different :ver and :auth ? 11:08
eveo buggable: eco Foo
buggable eveo, Foo 'Test for installation of same named dists': github.com/ugexe/Perl6-Foo 6 other matching results: modules.perl6.org/#q=Foo
eveo There should be two of them 11:09
zengargoyle cool, next Q about toast, it doesn't have :auth or :ver fields (even in sqlite db). is that a future thing?
11:10 mls_ joined
eveo Probably 11:10
zengargoyle cool. i was just looking at my modules and wonering about what happens when there are duplicates of the same name. 11:11
eveo sacomo: one sec, I'm just installing all the prereqs to run the test 11:12
sacomo ok, thanks. I am going to test with Proc.new inside of a promise...
11:12 mls left
eveo sacomo: don't think Proc has a .kill 11:13
Which we should probably add now that it's implemented in terms of Proc::Async
sacomo hmm
eveo It's too sync to need it, I think.
sacomo ok 11:14
eveo sacomo: "127.0.0.1:5005 doesn't open in 10 sec." is that supposed to happen? 11:15
sacomo hmm
no, maybe something is blocking that port?
eveo [Coke]: was it you who complained Bailador requires config file for port now? Looks like there's a command line option: --config=host:0.0.0.0,port:5005 11:16
sacomo you can also use a BAILADOR=port:5005 bailador ... 11:17
eveo Weird. If I type the Proc::Async's command in shell, the process starts up just fine :/ 11:19
sacomo ok, I just committed a change to have the test check against 0.0.0.0 11:22
maybe that will work 11:23
eveo nope. still getting "Could not connect socket: Connection refused" in wait_port 11:24
and if I start the command manually, then wait_port succeeds on first try
tipdbmp timotimo, this seems to work but seems kind of hacky and error prone?: sprunge.us/FIdS 11:29
eveo gonna try upgrading my perl6 (I'm on a dev commit) 11:30
11:31 wamba left
sacomo thanks 11:35
11:36 xtreak joined 11:38 cpage left 11:40 xtreak left, cpage joined 11:42 AlexDaniel joined
eveo nope still the same issue... Building 2017.05 now 11:43
11:47 Cabanossi left 11:50 Cabanossi joined 11:52 xtreak joined
eveo Crap 11:55
It works on 2017.05
timotimo tipdbmp: i have a litle tip for you
say 0xff11223344.polymod(0x100 xx *).reverse.fmt("%x") 11:56
evalable6 ff 11 22 33 44
11:56 xtreak left
eveo jnthn: looks like something's gone awry with socks and/or Proc::Async since 2017.05 :/ Proc::Async-started app doesn't wanna accept connections. Gonna try golf it after work today 11:56
timotimo tipdbmp: we also have something for the other direction 12:00
sacomo eveo, I just tested it on 2016.11 and the tests pass
12:00 araraloren joined
timotimo m: say :16[1, 2, 3, 4].base(16) 12:00
camelia 1234
timotimo er, huh?
oh, duh, base 16 %) 12:01
m: say :255[1, 2, 3, 4].base(16)
camelia FF0202
timotimo m: say :256[1, 2, 3, 4].base(16)
camelia 1020304
timotimo this is the one i was trying for
eveo sacomo: they pass on 2017.05 too. I first thought it might've been the .kill bug that got fixed after 2017.05, but nope. It's not that bug and yeah, I see the bailador process still running after the tests finish. 12:02
sacomo hmm 12:03
eveo sacomo: I'm not exactly sure how that works. Because you await $proc.start, so that means by the time you connect, the proc you started already finished and so .kill()ing it is pointless. And it spawns something that actually accepts connections and still lives after tests end.
sacomo on the 2016.11 the process does go away
eveo really
sacomo: well, if you figure it out, let me know how. I have exact same problem in one of my apps. 12:04
sacomo it is a persistant process
eveo leaves to work
sacomo starts a web server
ok, will do, thanks for looking into this
jnthn eveo: I strugle to imagine how those would interact...I mean, it's a completely separate process, and the way we're spawning it boils down to the same libuv functions as before. :S 12:05
MasterDuke timotimo: for coverable, would you want all the possible files+lines reported (e.g., NQP files, Rakudo's NQP files), or just Rakudo's src/* files, or just Rakudo's src/core/* files? 12:09
timotimo MasterDuke: i expect it'd be enough for src/core/*, but maybe we could parse a FILTER=foobar at the beginning to override this? 12:10
MasterDuke sure, default to FILTER='SETTING::' 12:11
12:31 ufobat left 12:32 Cabanossi left 12:35 Cabanossi joined 12:36 wamba joined 12:37 mcmillhj joined 12:42 xtreak joined 12:46 xtreak left
tipdbmp Is there another way to turn a string into a type other tan EVAL? 12:51
12:51 abraxxa left
tipdbmp m: use use MONKEY-SEE-NO-EVAL; say EVAL('Int'); 12:51
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared name:
MONKEY-SEE-NO-EVAL used at line 1
tipdbmp m: use MONKEY-SEE-NO-EVAL; say EVAL('Int');
camelia (Int)
timotimo m: say ::('Int').perl 12:52
camelia Int
timotimo m: say ::('List').new(1, 2, 3).perl
camelia (1, 2, 3)
12:53 wamba left 12:55 kyan left, perlpilot joined
tipdbmp Okay, thanks. 12:55
timotimo you can get at all lexical symbols like this 12:57
tipdbmp Is there a way to declare a class attribute/static field such that class Foo { class-field $foo = 1; }; class Bar is Foo { }; Bar.$foo == 1? 13:01
Right now I'm using our and looking it up from the child class with: Bar.^parents()[0].WHO.{'$foo}; 13:02
lizmat tipdbmp: class A { my $foo = 1; method foo() { $foo } }; class Bar is Foo { $.foo == 1 } 13:05
note: $.foo is just another way of writing self.foo 13:06
13:06 robertle joined
jnthn You can declare it my $.foo = 1 13:08
And that method foo is written for you
lizmat TIL :-)
13:12 mr-fooba_ joined 13:13 mr-foobar left 13:18 Cabanossi left, curan joined 13:20 Cabanossi joined 13:22 kyan joined 13:28 xtreak joined 13:34 cognominal left
[Coke] bailador --config host:10.234.125.244 bin/sample.p6 # dies and gives me the usage statement for bailador. 13:40
ah, found it.
the ole, "let me complain in chat so I can immediate find my problem" tricl.
*trick 13:41
timotimo yes!
[Coke] *immediately 13:42
and then type fast so I scwre pu lal teh wrd0s
timotimo lal 13:43
13:44 tipdbmp left
moritz m: class Parent { our $.x = 1 }; class Child is Parent { }; child.x 13:45
camelia 5===SORRY!5=== Error while compiling <tmp>
Undeclared routine:
child used at line 1. Did you mean 'chmod'?
moritz m: class Parent { our $.x = 1 }; class Child is Parent { }; Child.x
camelia ( no output )
moritz m: class Parent { our $.x = 1 }; class Child is Parent { }; say Child.x
camelia 1
moritz hm, tipdbmp is gone
13:47 xtreak left 13:48 MasterDuke left, Gruber is now known as Grrrr 13:59 khw joined 14:02 cognominal joined 14:05 kurahaupo joined 14:07 kurahaupo left, kurahaupo_ left, kurahaupo joined 14:09 kurahaupo_ joined 14:11 kurahaupo left 14:19 kurahaupo_ left, kurahaupo joined 14:20 kurahaupo left 14:23 kurahaupo joined
tbrowder MasterDuke: i don't see those packages listed on rakudo.org. are they regularly built? sounds like a great resource for noobs. 14:23
14:26 ufobat joined, alimon joined 14:34 lowbro left 14:36 tipdbmp joined
tipdbmp m: class Foo { has uint16 $.bar = 0x8000; }; my $foo = Foo.new; say $foo.bar; 14:36
camelia -32768
tipdbmp Why negative?
timotimo our uint handling isn't very good yet 14:38
tipdbmp Okay.
araraloren m: class Foo { has uint16 $.bar = 0x8000; }; my $foo = Foo.new; say $foo.bar.WHAT; 14:42
camelia (Int)
14:48 curan left
robertle what's the idiomatic way to check that a variable contains something that can be interpreted as a number? 14:48
timotimo try +$thing 14:49
m: with try +"hello" { say "hello is a number" }; with try +"99" { say "99 is a number" }
camelia 99 is a number
eveo m: with +"hello" { say "hello is a number" }; with +"99" { say "99 is a number" } 14:50
camelia 99 is a number
14:50 wamba joined, colomon left
robertle thanks! 14:50
"with try ...." is a nice pattern, usefulk for others stuff! 14:51
eveo m: +"99" andthen "99 is a number".say
camelia 99 is a number
eveo m: +"99" andthen "$_ is a number".say
camelia 99 is a number
eveo m: +"١١" andthen "$_ is a number".say 14:52
camelia 11 is a number
eveo robertle: you don't need `try` in this case. The failed coersion results in Failure
huggable: Failure
huggable eveo, Delayed exception: docs.perl6.org/type/Failure
eveo \o
14:52 eveo left
timotimo oh, nice 14:55
Juerd "try +$thing". Wow. I'd have assumed val($thing) ~~ Numeric 14:56
timtowtdi, I guess. We should now fight over which is "better"! :P 14:57
14:57 aindilis left 14:58 ThomasWall joined
ThomasWall Just here to say that I got my degree in sound engineering, but I'm focusing on a career in IT. I began learning JS last year. I've chosen Perl 6 as my second language. Thanks to Larry Wall & the Perl community for this excellent language! 14:58
timotimo cool \o/ 15:00
[Coke] glad to hear it. 15:02
15:02 eveo joined
eveo Juerd: they're not equivalent. +'42' returns Int, val('42') ~~ Numeric returns Bool, and even val('42') returns an IntStr, not an Int. 15:04
araraloren The val has documentation: docs.perl6.org/routine/val 15:06
Geth perl6.org: 8a38dd2867 | (Tom Browder)++ (committed using GitHub Web editor) | source/downloads/index.html
add link to Linux binary packages
eveo tbrowder: it's a bit confusing to list Rakudo *compiler* packages in the section for Rakudo *Star* 15:07
15:08 domidumont left 15:12 wamba left
tbrowder sorry, i guess i don't understand the purpose of the packages. what is the real difference now? should the debs be in a different category? another place? don't they provide perl6? 15:13
perlpilot tbrowder: I'd make another subsection that mentions compiler packages and how they differ from Rakudo Star 15:14
eveo tbrowder: yeah, subsection would be good. The difference is they include compiler-only. No package managers (though the packages page lists instructions for how to get one) or any of the modules included in Rakudo Star. 15:16
15:16 cdg joined 15:17 araraloren_ joined
tbrowder i know there has been some discussion about star here, but the page in question doesn't say anything about it except it's "a useful and usable production distribution of Perl 6" (sounds like something from Thomas the Tank Engine). 15:17
eveo tbrowder: and such confusion is why we've kinda avoided publicizing the monthly compiler releases on anything but perl6-compiler mailing list.
tbrowder: as far as the end user is concerned, Rakudo Star is the One and Only way to get Perl 6 15:18
perlpilot btw ... do we really want to say "...supports the latest Christmas Perl 6"? Aren't the 6.c, 6.d, etc. the "offical" versions ?
tbrowder ok, but, as a deb 8 user, i think it would be useful for such users who don't want to compile from source.
15:18 ThomasWall left
eveo Don't distros package rakudo star anyway? 15:18
15:19 araraloren left
araraloren_ perlpilot, yeah, like perl6 -v output: implementing Perl 6.c 15:21
15:26 tipdbmp left 15:28 Sabotender left 15:31 Sabotender joined 15:33 Sabotender left, Sabotender joined 15:37 Sabotender left 15:38 Sabotender joined
[Coke] "the c stands for Christmas" 15:38
(seriously)
tbrowder eveo: problem with debian users is old packages, not current enough for rapidly developing perl 6 15:42
15:43 Sabotender left
tbrowder so, given the comments, i shall just remove the entry for now... 15:44
eveo tbrowder: shoving links to a wrong software package isn't a solution.
15:44 cdg_ joined
eveo IMO this ultimately goes into star being non-ideal in its current state 15:44
15:45 jonas2 left
eveo And I plan to make perl6.vip thing as a possibile solution, but ATM my time has been used in improving compiler release quality. 15:45
15:47 cdg left
Geth perl6.org: 4a3a9596f8 | (Tom Browder)++ (committed using GitHub Web editor) | source/downloads/index.html
remove reference to compiler-only packages
15:48
eveo reads description on perl6.vip
Don't think there'd be "camelion" thing any more, but rather a zef plugin 15:49
and instead of adding all these Task:: dummy packages into ecosystem you'd use that plugin to install collections of modules
(including making your own, personalized collections you could install on, say, multiple boxes using a short ID) 15:50
buggable: eco Task::
buggable eveo, Found 3 results: Task::Galaxy, Task::Noise, Task::Popular. See modules.perl6.org/#q=Task%3A%3A
15:50 eveo left 15:53 robertle left 16:07 |oLa| left 16:41 espadrine joined 16:43 kurahaupo left
stmuk_ isn't the current ecosystem use of Task:: more general and better than making it all dependent on a particular plugin for a particular installer? 16:44
16:57 jaush left 17:00 mcmillhj left, mcmillhj joined 17:02 buggable left, roguelazer left, ZofBot left, llfourn left, buggable joined, ChanServ sets mode: +v buggable, Geth left 17:03 NeuralAnomaly left, NeuralAnomaly joined, ChanServ sets mode: +v NeuralAnomaly 17:04 roguelazer joined, adrusi joined 17:08 llfourn joined 17:11 Actualeyes left 17:12 eveo joined
ugexe anyone looking for a fairly cross-platform way to slurp an http request body into a var - github.com/ugexe/Perl6-App--ecogen...pm6#L9-L28 + `return powershell-webrequest($uri) // curl($uri) // wget($uri)` - this works now (would deadlock prior to proc rework) 17:14
eveo stmuk_: it's no different than depending on a zef plugin to get CPAN modules. 17:16
And releasing a whole dist into the ecosystem just to create a collection of modules is like using a rusty bazooka to kill a fly. 17:19
Much better to have a dynamic system where it's easy to create new meta packages 17:21
stmuk_ I think it's more like the right tool for the job (a metafile) rather than hammering a screw in with a plugin
eveo It's not a metafile tho 17:22
It's a distro released to p6c ecosystem that requires a p6c zef plugin
17:22 javan joined
eveo And instead it will be a dynamically generated metadata that requires whatever zef plugin 17:22
Pointless naysaying like this is precisely why I plan to make PVIP my own distro and not under the perl6 umbrella 17:23
mst the Task:: system on CPAN was basically a hack
17:23 eveo left
mst useful hack, but still a hack 17:23
stmuk_ go ahead .. let a thousand flowers bloon
bloom even .. but I really don't see the problem with the current system 17:24
technical problem I mean
ugexe its not a technical problem. but it can be useful to know which packages provide nothing (which can't be done because meta data does not include bin/ files) 17:25
17:26 pilne joined
ugexe and fwiw the plugins being spoke of are all the same plugin - p6c/cpan are essentially a plugin for a json array of hash from some url 17:28
but that also just provides a list of meta data... there is not yet a "install everything from this ecosystem" like command
i'm open to suggestions 17:29
17:29 ChoHag left, robertle joined 17:31 mtj_ left, petercommand left 17:38 AlexDaniel left 17:44 perlpilot left 17:45 perlpilot joined, robertle left 17:46 Geth joined, ChanServ sets mode: +v Geth 17:55 javan left, Actualeyes joined 17:57 SCHAPiE left 18:01 wamba joined 18:02 cdg_ left 18:04 SCHAPiE joined 18:07 user3 joined
user3 m: my Bool $a = 0; 18:07
camelia Type check failed in assignment to $a; expected Bool but got Int (0)
in block <unit> at <tmp> line 1
zengargoyle ugexe: one thing i looked for in zef this morning was some sort of '--skip' option. where it doesn't' just stop on a failure but skips to the next.
user3 why is it that the compiler can't convert automatically 0 to false?
is there a type "bool"? 18:08
18:08 travis-ci joined
travis-ci Doc build errored. Jan-Olof Hendig 'Changed formatting of some code examples' 18:08
travis-ci.org/perl6/doc/builds/243752067 github.com/perl6/doc/compare/b8cf1...c5af972173
18:08 travis-ci left
moritz there is a Bool 18:08
user3 is Bool an object or is it one byte (or one bit)?
moritz user3: and if you want the compiler to automatically coerce stuff for you, you have to tell it to do so 18:09
user3 m: my Bool $a = Bool(0);
camelia ( no output )
moritz (but it only works in signatures right now)
m: sub f(Bool() $x) { say $x }; f 0
camelia False
user3 yes. how do itell it to convert automatically?
moritz also, you can use prefix ? to coerce to bool
m: say ?0, ?1 18:10
camelia FalseTrue
TimToady my Bool() $x = 0; # but Not Yet Implemented
user3 ok
18:11 robertle joined 18:29 travis-ci joined
travis-ci Doc build errored. Jan-Olof Hendig 'More formatting fixes' 18:29
travis-ci.org/perl6/doc/builds/243754286 github.com/perl6/doc/compare/2ec5a...5db60dcd64
18:29 travis-ci left 18:32 cdg joined 18:33 |oLa| joined
ugexe zengargoyle: they exist as `--force-*` flags... --force-test --force-build etc 18:38
--force enables all that aren't explicitly disabled
18:46 setty1 joined 18:49 Cabanossi left 18:50 Cabanossi joined 18:55 tadzik left, user3 left 18:56 uberbaud joined 18:57 javan joined 18:58 mr-foobar joined 18:59 xui_nya[m] left, Matthew[m] left
zengargoyle ugexe: i mean just skip it if it fails, not force it to be installed. 18:59
18:59 unclechu left 19:00 ilmari[m] left, dp[m] left, mr-fooba_ left, CIAvash[m] left, mienaikage left 19:03 incredible left 19:04 incredible joined
zengargoyle so if you do `zef --serial install $(< /tmp/list-o-modules)` it doesn't stop on failure, it just only installs the modules that tested ok. 19:04
ugexe optional dependencies should be handled by authors, not users 19:06
19:07 grondilu left 19:09 hythm left
moritz man, looking for technical publishers is frustrating 19:10
I have some contact at O'Reilly, but they don't answer my emails
then there are publishes that have official email addresses for submitting book ideas, and they don't answer either 19:11
19:11 cdg left 19:12 cdg joined 19:14 hythm joined 19:17 ChoHag joined 19:23 uberbaud left
zengargoyle ugexe: i don't think i'm explaining it right. if i do `zef install A B C D` (all unrelated) and zef decides to install them in that order, and if C fails, skip it and keep on installing D. 19:24
ugexe if C fails at some step it potentially changes the dependency graph 19:26
19:26 Geth left
zengargoyle it currently will not try to install D if C fails, and you have to edit out C from the command line and try again. 19:26
so it can't just skip and modules that needed C and do the rest that don't depend on C? 19:27
*any
ugexe version ranges? 19:28
19:29 Geth joined, ChanServ sets mode: +v Geth
ugexe emulates/excludes/superceded_by (when/if ever they get implemented)? 19:29
zengargoyle 'cause with any large enough list of desired modules, one of them is going to fail (like p6doc or LWP::Simple) 19:30
ugexe a requirement is required. if its optional / can-be-skipped then why is it a requirement? 19:31
zengargoyle but that doesn't mean you can't skip the failures and still install DOM::Tiny and DBIish.
19:31 Geth left
zengargoyle because it's a list of random modules. not a module and it's dependencies. did you ever use p5's cpan-outdated program? 19:32
`cpan-outdated | cpanm` - list all installed modules that have a newer version and install them. 19:33
19:38 Geth joined, ChanServ sets mode: +v Geth
zengargoyle np, i guess i can just do `for mod in $(< list-o-modules); do zef install $mod; done and call it a day. :) 19:39
19:40 Geth left
ugexe the problem i have with declaring this as just `--skip` is it would get to take precedence over --force-* flags and I want to avoid that type of confusing interface 19:44
19:44 AlexDaniel joined, cdg_ joined 19:45 javan left
zengargoyle cool, the for loop will do what i want just a bit slower. :) 19:45
19:46 colomon joined 19:47 cdg left
zengargoyle but it's also going to make Task::Whatever types of collection of modules fail if any single module fails. (or you --force it and get possibly broken module) 19:47
ugexe im open to the option if it can be expressed in a better way
19:47 salv0 left 19:48 Geth joined, ChanServ sets mode: +v Geth 19:51 ZofBot joined, ChanServ sets mode: +v ZofBot 19:56 sQuEE is now known as fsun 19:57 salv0 joined 20:02 AlexDaniel left 20:04 Cabanossi left 20:05 Cabanossi joined 20:14 travis-ci joined
travis-ci Doc build errored. Jan-Olof Hendig 'Make text more explicit. lizmat++' 20:14
travis-ci.org/perl6/doc/builds/243795659 github.com/perl6/doc/compare/cc5db...a0487fece0
20:14 travis-ci left
perlawhirl hi perlers 20:15
perlpilot ugexe: maybe "zef install-each A B C D" ? (just to have zef do the loop that zengargoyle is talking about with independent dependency graphs) at least then it's clear that something different is happening 20:17
geekosaur wonders if a better idea is a global '--transaction' option 20:22
or even a grouped option: zef install foo bar --transaction baz quux --/transaction meef
foo, bar, and meef are independent, but both baz and quuz must install or neither does 20:23
perlawhirl clickbaits www.0racle.info/articles/perl_6_on_rails 20:24
perlpilot geekosaur: oh! I like that 20:26
zengargoyle there's already --serial which installs each module after testing (default --/noserial only installs once everything is done). 20:27
geekosaur right, but that doesn't mean quite the same thing 20:28
zengargoyle but --transaction and install-each don't seem to help with the Task::Whatever module case. 20:29
geekosaur what exactly is that case? 20:31
zengargoyle Task::Star, Task::Popular, etc. just lists of cool useful modules that aren't really interdependent, just collected together in one 'package' 20:32
it is a failure if they don't all install, but it's also a "meh, do your best and let me deal with the fallout" 20:34
geekosaur right, that's what the default mode would be 20:36
--transaction is for when you need stuff to install together or not at all
perlpilot sounds like a failure of Task::Whatever, in general. 20:37
geekosaur Task::Whatever as a concept is somewhat broken
as Task::Star demonstrated
one could argue it's a hackaround for inadequate tooling 20:38
mst perhaps the answer would be for Tasks to provide their stuff as recommends
geekosaur so I'm suggsting mroe adequate tooling instead :)
mst since generally requires failures are a failure, but recommends failures are not
zengargoyle do we have a recommends in META6? 20:40
perlpilot I don't see it in S22 20:41
mst I'm not sure the META6 process ever really paid attention to the version 2 of the perl5 META spec 20:42
but that's presumably fixable
zengargoyle but i think zef would still have to change... it stops on first thing that fails. so it still boils down to keep going after one thing fails.
geekosaur right, that was the proposed install-each 20:43
perlpilot 'recommends' seems to be deprecated according to CPAN::Meta::Spec 20:45
zengargoyle geekosaur: yeah, just applied over the depends/reccomends of a single `zef install-each A` which may be exactly what you meant and i missed it.
geekosaur well, the point was more that a Task::Foo would boil down to zef install-each [each dependency here] so if one fails it continues 20:46
my suggestion was make that the default and provide --transaction to get the current behavior, possibly with some granularity
20:47 ChoHag left
geekosaur (Task modules might even want that granularity sometimes) 20:47
zengargoyle but --static sorta already does that, depending on how the dependencies get sorted. the ones that complete before the first failure get installed. the ones after the fist failure don't (even if they could be).
20:48 TEttinger joined
zengargoyle d'oh --serial 20:48
without --serial, it's already one big transactional. i think it installs to a temp CUR and then moves them all at once. 20:49
20:49 mcmillhj left 20:52 stmuk joined
geekosaur right, it's the each/independent case that is currently missing 20:53
so one proposal is to add it, and mine is to make the independent one the default and optionally add some extra flexibility 20:54
20:54 stmuk_ left
zengargoyle just sorta wants it to work like cpanm :P 20:55
20:55 rindolf left
geekosaur and part of the problem here is that end users want one thing, system integrators/packagers want another, etc. 20:55
satisfy one and piss off the other 20:56
zengargoyle but the transaction bit is really handy so you don't get a lot of cruft in your repo if the thing you actually asked for doesn't build.
i did a lot of installing to a local::lib first and then rsync if it actually worked. 20:57
20:57 sufrostico left 20:59 rumble joined
zengargoyle --pretend-recommended 20:59
20:59 sufrostico joined
zengargoyle but prune things missing dependencies 21:00
21:03 grumble is now known as Guest77353, Guest77353 left, rumble is now known as grumble, Skarsnik joined, Cabanossi left 21:05 Cabanossi joined, mcmillhj joined 21:09 mcmillhj left 21:13 mr-foobar left
ugexe the reason for --/serial being default is because from a concurrency point of view it would be faster since it can group all the dependencies of things together, and so that the next time you run the zef command you'll get the same results (e.g. an optional requirement getting installed now allows some test for a different module) 21:14
timotimo perlawhirl: did you know that you can always return a Nil or Failure regardless of the return type signature? 21:16
21:17 mr-foobar joined, sufrostico left 21:19 sufrostico joined
ugexe but it could be as simple as `zef install Foo Bar Baz,XXX,YYY ZZZ` - or any delimiter that isn't allowed in a module name 21:20
timotimo well, can't be & because shell
21:20 mcmillhj joined
timotimo what even do we forbid in module names? 21:20
are + allowed? 21:21
perlpilot + shouldn't be allowed 21:22
ugexe I doubt it... I think its the same as methods/subs
perlpilot just alphanumeric and "-" and "'"
(I think)
ugexe ::
but *not* : 21:23
perlpilot yes, of course that too :)
ugexe m: package 1a { }; # must start with alpha 21:24
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse package definition
at <tmp>:1
------> 3package7⏏5 1a { }; # must start with alpha
expecting any of:
generic role
perlpilot yeah, same rules as any identifier
timotimo so we put digits in front to signify "groups" :P 21:25
perlpilot m: package foo123-bar;
camelia 5===SORRY!5=== Error while compiling <tmp>
This appears to be Perl 5 code. If you intended it to be Perl 6 code, please use a Perl 6 style declaration like "unit package Foo;" or "unit module Foo;", or use the block form instead of the semicolon fo…
perlpilot m: package foo123-bar { }
camelia ( no output )
perlpilot m: package foo123-123bar { }
camelia 5===SORRY!5=== Error while compiling <tmp>
Unable to parse package definition
at <tmp>:1
------> 3package foo1237⏏5-123bar { }
expecting any of:
generic role
perlpilot yep
21:25 mcmillhj left
timotimo that error message could be better 21:25
perlpilot yeah, that message is quite LTA
ugexe m: package A::1 { }
camelia ===SORRY!===
Name A:: ends with '::' and cannot be used as a package name
Skarsnik this is wrong lol 21:26
Hello there btw ^^
perlpilot m: package I-can't-help::myself { }
camelia ( no output )
jnthn Well, it's correct in so far as 1 isn't a valid part of a package name, so it isn't even considered :)
21:27 hythm left
jnthn But we could always peak ahead a bit 21:27
*peek
ugexe we're trying to figure out delimiters for parsing CLI arguments of module names
jnthn ugexe: Well, you could use numbers :P 21:28
ugexe \0 naturally
21:30 mienaikage joined 21:32 hythm joined
zengargoyle just want like --go and --gogo. `zef --go install A B C` -- basically the for loop, just try to install A, B, and C. `zef --gogo Task::Handy Task::Math` -- same as --go, but also treat the depends of each module as --go (just so you can keep a list of modules in a Task and put it on github or something). 21:35
seems the module modifier should be Foo:optional 21:36
21:36 mcmillhj joined
zengargoyle Foo:ver<*>:auth<github:zengargoyle>:optional 21:36
or some such... 21:37
:depend<build-depends> :depend<test-depends> :depend<recommends> matching whatever is in META6 21:40
21:41 mcmillhj left
zengargoyle then you could invert things and in the META say: "auth" : { "zengargoyle" : [ "Foo", "Bar" ], "ugexe" : [ "zef" ] } :P 21:42
ugexe well whatever you put on the command line should also work in the META6 fields 21:43
zengargoyle and everybody could specify a module in a myriad of ways and chaos ensues. :)
ugexe but you also have urls 21:45
local file paths
zengargoyle ah, never thought of trying to put a url or file path in a META like that. 21:46
ugexe and you probably want local file paths to fulfil dependencies for anything else asked for with it
if you `zef install Foo::Bar ./foo-bar/dependency/Baz/v2` you dont want it to install whatever Baz it finds on the internet you want it to use the one in the path 21:47
21:50 unclechu joined, ilmari[m] joined, dp[m] joined, CIAvash[m] joined, tadzik joined, Matthew[m] joined, xui_nya[m] joined
zengargoyle i'd probably be happy with `zef install ./foo-bar/dependency/Baz/v2 Foo::Bar` and accept that there's an order to installation and Baz will be installed first and found by Foo::Bar. 21:50
ugexe that makes concurrency less appealing 21:51
zengargoyle ah. *nods*
21:52 mcmillhj joined
ugexe a solution will probably manifest itself for the `smoke` command though 21:54
zengargoyle isn't used to expecting concurrency without a lot of effort on myself.
21:56 mcmillhj left 21:58 alimon left 22:01 salv0 left 22:03 Cabanossi left 22:05 Cabanossi joined
perlawhirl timotimo: ahh yes, i did know that. i might edit to make some mention of it 22:08
22:08 mcmillhj joined
timotimo did you also know you can call any method on Nil and get back self? 22:08
these semantics probably don't work with .&foo syntax, because that's not an actual method call 22:09
22:12 mcmillhj left 22:14 konsolebox left
perlawhirl can you give an example. I tried calling a method on a Nil variable and it just tells me no such method 22:15
timotimo oh? 22:17
maybe only for failure, ten
then*
m: Nil.foobar.say
camelia Nil
timotimo no, you probably assigned a Nil to a $foo?
because assigning Nil to a variable resets it to its default value
that'd usually be Any, which doesn't have the "every unknown method gives you Nil back" behaviour 22:18
22:21 konsolebox joined
timotimo heads to bed 22:21
22:22 beginner joined
lizmat good night, timotimo 22:22
beginner is there a suspend statement in perl6...or any equivalents that suspends the current task in execution 22:23
22:24 mcmillhj joined
timotimo do we have sleep() for that? (that'd freeze an operating-system-level thread) 22:24
otherwise if you are using v6.d.PREVIEW, you can "await Promise.in(9999999999999)" or something
or await a promise that nobody will ever resolve/reject 22:26
Skarsnik timotimo.sleep
beginner timotimo : i guess await over the promise will help....and is there any skip statement?
timotimo what does "skip" mean? 22:28
22:28 mcmillhj left
timotimo you can skip to the next iteration of a loop using "next" 22:29
beginner terminating the current loop and resuming execution at next statement 22:30
jnthn last 22:31
Presuming you mean "next statement after the loop" :)
22:31 cdg_ left
beginner will try that 22:32
22:33 mcmillhj joined 22:34 dolmen joined 22:35 robertle left 22:37 mcmillhj left 22:40 setty1 left 22:42 Skarsnik left 22:50 ChoHag joined 23:01 araralonre__ joined 23:03 araraloren_ left 23:16 pochi joined 23:17 araraloren_ joined
Geth doc: f48a1b3198 | (Elizabeth Mattijsen)++ | doc/Language/5to6-perlfunc.pod6
Rewrite the alarm section
23:17
23:18 dolmen left 23:19 esh_ joined 23:20 Praise- joined, Praise- left, Praise- joined 23:21 lucs joined, leedo_ joined, smash_ joined, literal_ joined, sunnavy_ joined, mst_ joined 23:22 BooK_ joined, broquain1 joined 23:25 mniip_ joined, tomaw| joined, eythian_ joined 23:26 musca` joined, araralonre__ left, lucs_ left, esh left, Praise left, jferrero left, pochi_ left, emeric left, jnthn left, mst left, silug left, eythian left, literal left, leedo left, smash left, mniip left, musca left, sunnavy left, tomaw left, BooK left, eythian_ is now known as eythian 23:27 emeric joined 23:28 jnthn joined 23:29 jferrero joined, notbenh left, ranguard joined 23:30 silug joined 23:31 notbenh joined 23:33 javan joined 23:42 javan left 23:43 kurahaupo joined 23:50 javan joined
lucs Heredoc with q:c/foo/ expands "abc {2+2} def \{3+3}" to "abc 4 def \{3+3}" 23:54
How do I get "abc 4 def {3+3}"
Better yet, why can't I specify the closure character? (I'm heredocing LaTeX, I'd have to escape tons of '{')
(and also escape tons of '\') 23:55
23:55 javan left 23:59 dj_goku_ left
lucs ( q:c:to/foo/ actually) 23:59